Merge pull request #2974 from MediaBrowser/beta

Beta
This commit is contained in:
Luke 2017-10-24 01:20:09 -04:00 committed by GitHub
commit 0aac8045fb
251 changed files with 5483 additions and 12900 deletions

View File

@ -33,7 +33,7 @@ namespace Emby.Dlna.ContentDirectory
{ {
CancellationToken = cancellationToken, CancellationToken = cancellationToken,
UserAgent = "Emby", UserAgent = "Emby",
RequestContentType = "text/xml; charset=\"utf-8\"", RequestContentType = "text/xml",
LogErrorResponseBody = true, LogErrorResponseBody = true,
Url = request.ContentDirectoryUrl, Url = request.ContentDirectoryUrl,
BufferContent = false BufferContent = false
@ -43,37 +43,38 @@ namespace Emby.Dlna.ContentDirectory
options.RequestContent = GetRequestBody(request); options.RequestContent = GetRequestBody(request);
var response = await _httpClient.SendAsync(options, "POST"); using (var response = await _httpClient.SendAsync(options, "POST"))
using (var reader = new StreamReader(response.Content))
{ {
var doc = XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace); using (var reader = new StreamReader(response.Content))
var queryResult = new QueryResult<ChannelItemInfo>();
if (doc.Document == null)
return queryResult;
var responseElement = doc.Document.Descendants(UNamespace + "BrowseResponse").ToList();
var countElement = responseElement.Select(i => i.Element("TotalMatches")).FirstOrDefault(i => i != null);
var countValue = countElement == null ? null : countElement.Value;
int count;
if (!string.IsNullOrWhiteSpace(countValue) && int.TryParse(countValue, NumberStyles.Integer, CultureInfo.InvariantCulture, out count))
{ {
queryResult.TotalRecordCount = count; var doc = XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace);
var resultElement = responseElement.Select(i => i.Element("Result")).FirstOrDefault(i => i != null); var queryResult = new QueryResult<ChannelItemInfo>();
var resultString = (string)resultElement;
if (resultElement != null) if (doc.Document == null)
return queryResult;
var responseElement = doc.Document.Descendants(UNamespace + "BrowseResponse").ToList();
var countElement = responseElement.Select(i => i.Element("TotalMatches")).FirstOrDefault(i => i != null);
var countValue = countElement == null ? null : countElement.Value;
int count;
if (!string.IsNullOrWhiteSpace(countValue) && int.TryParse(countValue, NumberStyles.Integer, CultureInfo.InvariantCulture, out count))
{ {
var xElement = XElement.Parse(resultString); queryResult.TotalRecordCount = count;
}
}
return queryResult; var resultElement = responseElement.Select(i => i.Element("Result")).FirstOrDefault(i => i != null);
var resultString = (string)resultElement;
if (resultElement != null)
{
var xElement = XElement.Parse(resultString);
}
}
return queryResult;
}
} }
} }

View File

@ -393,75 +393,75 @@ namespace Emby.Dlna.Didl
{ {
if (itemStubType.HasValue && itemStubType.Value == StubType.Latest) if (itemStubType.HasValue && itemStubType.Value == StubType.Latest)
{ {
return _localization.GetLocalizedString("ViewTypeMusicLatest"); return _localization.GetLocalizedString("Latest");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.Playlists) if (itemStubType.HasValue && itemStubType.Value == StubType.Playlists)
{ {
return _localization.GetLocalizedString("ViewTypeMusicPlaylists"); return _localization.GetLocalizedString("Playlists");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.AlbumArtists) if (itemStubType.HasValue && itemStubType.Value == StubType.AlbumArtists)
{ {
return _localization.GetLocalizedString("ViewTypeMusicAlbumArtists"); return _localization.GetLocalizedString("HeaderAlbumArtists");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.Albums) if (itemStubType.HasValue && itemStubType.Value == StubType.Albums)
{ {
return _localization.GetLocalizedString("ViewTypeMusicAlbums"); return _localization.GetLocalizedString("Albums");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.Artists) if (itemStubType.HasValue && itemStubType.Value == StubType.Artists)
{ {
return _localization.GetLocalizedString("ViewTypeMusicArtists"); return _localization.GetLocalizedString("Artists");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.Songs) if (itemStubType.HasValue && itemStubType.Value == StubType.Songs)
{ {
return _localization.GetLocalizedString("ViewTypeMusicSongs"); return _localization.GetLocalizedString("Songs");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.Genres) if (itemStubType.HasValue && itemStubType.Value == StubType.Genres)
{ {
return _localization.GetLocalizedString("ViewTypeTvGenres"); return _localization.GetLocalizedString("Genres");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteAlbums) if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteAlbums)
{ {
return _localization.GetLocalizedString("ViewTypeMusicFavoriteAlbums"); return _localization.GetLocalizedString("HeaderFavoriteAlbums");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteArtists) if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteArtists)
{ {
return _localization.GetLocalizedString("ViewTypeMusicFavoriteArtists"); return _localization.GetLocalizedString("HeaderFavoriteArtists");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteSongs) if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteSongs)
{ {
return _localization.GetLocalizedString("ViewTypeMusicFavoriteSongs"); return _localization.GetLocalizedString("HeaderFavoriteSongs");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.ContinueWatching) if (itemStubType.HasValue && itemStubType.Value == StubType.ContinueWatching)
{ {
return _localization.GetLocalizedString("ViewTypeMovieResume"); return _localization.GetLocalizedString("HeaderContinueWatching");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.Movies) if (itemStubType.HasValue && itemStubType.Value == StubType.Movies)
{ {
return _localization.GetLocalizedString("ViewTypeMovieMovies"); return _localization.GetLocalizedString("Movies");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.Collections) if (itemStubType.HasValue && itemStubType.Value == StubType.Collections)
{ {
return _localization.GetLocalizedString("ViewTypeMovieCollections"); return _localization.GetLocalizedString("Collections");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.Favorites) if (itemStubType.HasValue && itemStubType.Value == StubType.Favorites)
{ {
return _localization.GetLocalizedString("ViewTypeMovieFavorites"); return _localization.GetLocalizedString("Favorites");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.NextUp) if (itemStubType.HasValue && itemStubType.Value == StubType.NextUp)
{ {
return _localization.GetLocalizedString("ViewTypeTvNextUp"); return _localization.GetLocalizedString("HeaderNextUp");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteSeries) if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteSeries)
{ {
return _localization.GetLocalizedString("ViewTypeTvFavoriteSeries"); return _localization.GetLocalizedString("HeaderFavoriteShows");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteEpisodes) if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteEpisodes)
{ {
return _localization.GetLocalizedString("ViewTypeTvFavoriteEpisodes"); return _localization.GetLocalizedString("HeaderFavoriteEpisodes");
} }
if (itemStubType.HasValue && itemStubType.Value == StubType.Series) if (itemStubType.HasValue && itemStubType.Value == StubType.Series)
{ {
return _localization.GetLocalizedString("ViewTypeTvShowSeries"); return _localization.GetLocalizedString("Shows");
} }
var episode = item as Episode; var episode = item as Episode;
@ -1071,8 +1071,10 @@ namespace Emby.Dlna.Didl
writer.WriteStartElement(string.Empty, "res", NS_DIDL); writer.WriteStartElement(string.Empty, "res", NS_DIDL);
var width = albumartUrlInfo.Width; // Images must have a reported size or many clients (Bubble upnp), will only use the first thumbnail
var height = albumartUrlInfo.Height; // rather than using a larger one when available
var width = albumartUrlInfo.Width ?? maxWidth;
var height = albumartUrlInfo.Height ?? maxHeight;
var contentFeatures = new ContentFeatureBuilder(_profile) var contentFeatures = new ContentFeatureBuilder(_profile)
.BuildImageHeader(format, width, height, imageInfo.IsDirectStream, org_Pn); .BuildImageHeader(format, width, height, imageInfo.IsDirectStream, org_Pn);
@ -1083,10 +1085,7 @@ namespace Emby.Dlna.Didl
contentFeatures contentFeatures
)); ));
if (width.HasValue && height.HasValue) writer.WriteAttributeString("resolution", string.Format("{0}x{1}", width, height));
{
writer.WriteAttributeString("resolution", string.Format("{0}x{1}", width.Value, height.Value));
}
writer.WriteString(albumartUrlInfo.Url); writer.WriteString(albumartUrlInfo.Url);
@ -1138,8 +1137,21 @@ namespace Emby.Dlna.Didl
} }
int? width = null; int? width = imageInfo.Width;
int? height = null; int? height = imageInfo.Height;
if (width == 0 || height == 0)
{
//_imageProcessor.GetImageSize(item, imageInfo);
width = null;
height = null;
}
else if (width == -1 || height == -1)
{
width = null;
height = null;
}
//try //try
//{ //{

View File

@ -26,9 +26,11 @@ namespace Emby.Dlna.Eventing
_logger = logger; _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 // Remove logging for now because some devices are sending this very frequently
// TODO re-enable with dlna debug logging setting // TODO re-enable with dlna debug logging setting
@ -37,10 +39,18 @@ namespace Emby.Dlna.Eventing
// timeout, // timeout,
// subscription.CallbackUrl); // subscription.CallbackUrl);
subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300; if (subscription != null)
subscription.SubscriptionTime = DateTime.UtcNow; {
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) public EventSubscriptionResponse CreateEventSubscription(string notificationType, string requestedTimeoutString, string callbackUrl)
@ -172,7 +182,10 @@ namespace Emby.Dlna.Eventing
try try
{ {
await _httpClient.SendAsync(options, "NOTIFY").ConfigureAwait(false); using (await _httpClient.SendAsync(options, "NOTIFY").ConfigureAwait(false))
{
}
} }
catch (OperationCanceledException) catch (OperationCanceledException)
{ {

View File

@ -31,14 +31,15 @@ namespace Emby.Dlna.PlayTo
bool logRequest = true, bool logRequest = true,
string header = null) string header = null)
{ {
var response = await PostSoapDataAsync(NormalizeServiceUrl(baseUrl, service.ControlUrl), "\"" + service.ServiceType + "#" + command + "\"", postData, header, logRequest) using (var response = await PostSoapDataAsync(NormalizeServiceUrl(baseUrl, service.ControlUrl), "\"" + service.ServiceType + "#" + command + "\"", postData, header, logRequest)
.ConfigureAwait(false); .ConfigureAwait(false))
using (var stream = response.Content)
{ {
using (var reader = new StreamReader(stream, Encoding.UTF8)) using (var stream = response.Content)
{ {
return XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace); using (var reader = new StreamReader(stream, Encoding.UTF8))
{
return XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace);
}
} }
} }
} }
@ -71,7 +72,10 @@ namespace Emby.Dlna.PlayTo
Url = url, Url = url,
UserAgent = USERAGENT, UserAgent = USERAGENT,
LogErrorResponseBody = true, LogErrorResponseBody = true,
BufferContent = false BufferContent = false,
// The periodic requests may keep some devices awake
LogRequestAsDebug = true
}; };
options.RequestHeaders["HOST"] = ip + ":" + port.ToString(_usCulture); options.RequestHeaders["HOST"] = ip + ":" + port.ToString(_usCulture);
@ -79,7 +83,10 @@ namespace Emby.Dlna.PlayTo
options.RequestHeaders["NT"] = "upnp:event"; options.RequestHeaders["NT"] = "upnp:event";
options.RequestHeaders["TIMEOUT"] = "Second-" + timeOut.ToString(_usCulture); options.RequestHeaders["TIMEOUT"] = "Second-" + timeOut.ToString(_usCulture);
await _httpClient.SendAsync(options, "SUBSCRIBE").ConfigureAwait(false); using (await _httpClient.SendAsync(options, "SUBSCRIBE").ConfigureAwait(false))
{
}
} }
public async Task<XDocument> GetDataAsync(string url) public async Task<XDocument> GetDataAsync(string url)
@ -89,16 +96,22 @@ namespace Emby.Dlna.PlayTo
Url = url, Url = url,
UserAgent = USERAGENT, UserAgent = USERAGENT,
LogErrorResponseBody = true, LogErrorResponseBody = true,
BufferContent = false BufferContent = false,
// The periodic requests may keep some devices awake
LogRequestAsDebug = true
}; };
options.RequestHeaders["FriendlyName.DLNA.ORG"] = FriendlyName; options.RequestHeaders["FriendlyName.DLNA.ORG"] = FriendlyName;
using (var stream = await _httpClient.Get(options).ConfigureAwait(false)) using (var response = await _httpClient.SendAsync(options, "GET").ConfigureAwait(false))
{ {
using (var reader = new StreamReader(stream, Encoding.UTF8)) using (var stream = response.Content)
{ {
return XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace); using (var reader = new StreamReader(stream, Encoding.UTF8))
{
return XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace);
}
} }
} }
} }
@ -118,7 +131,10 @@ namespace Emby.Dlna.PlayTo
UserAgent = USERAGENT, UserAgent = USERAGENT,
LogRequest = logRequest || _config.GetDlnaConfiguration().EnableDebugLog, LogRequest = logRequest || _config.GetDlnaConfiguration().EnableDebugLog,
LogErrorResponseBody = true, LogErrorResponseBody = true,
BufferContent = false BufferContent = false,
// The periodic requests may keep some devices awake
LogRequestAsDebug = true
}; };
options.RequestHeaders["SOAPAction"] = soapAction; options.RequestHeaders["SOAPAction"] = soapAction;
@ -130,7 +146,8 @@ namespace Emby.Dlna.PlayTo
options.RequestHeaders["contentFeatures.dlna.org"] = header; options.RequestHeaders["contentFeatures.dlna.org"] = header;
} }
options.RequestContentType = "text/xml; charset=\"utf-8\""; options.RequestContentType = "text/xml";
options.AppendCharsetToMimeType = true;
options.RequestContent = postData; options.RequestContent = postData;
return _httpClient.Post(options); return _httpClient.Post(options);

View File

@ -24,9 +24,9 @@ namespace Emby.Dlna.Service
return EventManager.CancelEventSubscription(subscriptionId); 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) public EventSubscriptionResponse CreateEventSubscription(string notificationType, string timeoutString, string callbackUrl)

View File

@ -149,7 +149,7 @@ namespace Emby.Drawing.ImageMagick
var originalImageSize = new ImageSize(originalImage.CurrentImage.Width, originalImage.CurrentImage.Height); 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 // Just spit out the original file if all the options are default
return inputPath; return inputPath;

View File

@ -442,19 +442,44 @@ namespace Emby.Drawing
return GetCachePath(ResizedImageCachePath, filename, "." + format.ToString().ToLower()); return GetCachePath(ResizedImageCachePath, filename, "." + format.ToString().ToLower());
} }
public ImageSize GetImageSize(ItemImageInfo info, bool allowSlowMethods) public ImageSize GetImageSize(BaseItem item, ItemImageInfo info)
{ {
return GetImageSize(info.Path, allowSlowMethods); return GetImageSize(item, info, false, true);
} }
public ImageSize GetImageSize(ItemImageInfo info) public ImageSize GetImageSize(BaseItem item, ItemImageInfo info, bool allowSlowMethods, bool updateItem)
{ {
return GetImageSize(info.Path, false); var width = info.Width;
var height = info.Height;
if (height > 0 && width > 0)
{
return new ImageSize
{
Width = width,
Height = height
};
}
var path = info.Path;
_logger.Info("Getting image size for item {0} {1}", item.GetType().Name, path);
var size = GetImageSize(path, allowSlowMethods);
info.Height = Convert.ToInt32(size.Height);
info.Width = Convert.ToInt32(size.Width);
if (updateItem)
{
_libraryManager().UpdateImages(item);
}
return size;
} }
public ImageSize GetImageSize(string path) public ImageSize GetImageSize(string path)
{ {
return GetImageSize(path, false); return GetImageSize(path, true);
} }
/// <summary> /// <summary>

View File

@ -17,7 +17,7 @@ using TagLib.IFD.Tags;
namespace Emby.Photos namespace Emby.Photos
{ {
public class PhotoProvider : ICustomMetadataProvider<Photo>, IHasItemChangeMonitor, IForcedProvider public class PhotoProvider : ICustomMetadataProvider<Photo>, IForcedProvider
{ {
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IFileSystem _fileSystem; private readonly IFileSystem _fileSystem;
@ -31,14 +31,14 @@ namespace Emby.Photos
} }
// These are causing taglib to hang // These are causing taglib to hang
private string[] _excludeExtensions = new string[] { ".dng" }; private string[] _includextensions = new string[] { ".jpg", ".jpeg", ".png", ".tiff" };
public Task<ItemUpdateType> FetchAsync(Photo item, MetadataRefreshOptions options, CancellationToken cancellationToken) public Task<ItemUpdateType> FetchAsync(Photo item, MetadataRefreshOptions options, CancellationToken cancellationToken)
{ {
item.SetImagePath(ImageType.Primary, item.Path); item.SetImagePath(ImageType.Primary, item.Path);
// Examples: https://github.com/mono/taglib-sharp/blob/a5f6949a53d09ce63ee7495580d6802921a21f14/tests/fixtures/TagLib.Tests.Images/NullOrientationTest.cs // 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 try
{ {
@ -163,10 +163,14 @@ namespace Emby.Photos
if (!item.Width.HasValue || !item.Height.HasValue) if (!item.Width.HasValue || !item.Height.HasValue)
{ {
var size = _imageProcessor.GetImageSize(item.Path); var img = item.GetImageInfo(ImageType.Primary, 0);
var size = _imageProcessor.GetImageSize(item, img, false, false);
item.Width = Convert.ToInt32(size.Width); if (size.Width > 0 && size.Height > 0)
item.Height = Convert.ToInt32(size.Height); {
item.Width = Convert.ToInt32(size.Width);
item.Height = Convert.ToInt32(size.Height);
}
} }
const ItemUpdateType result = ItemUpdateType.ImageUpdate | ItemUpdateType.MetadataImport; const ItemUpdateType result = ItemUpdateType.ImageUpdate | ItemUpdateType.MetadataImport;
@ -177,19 +181,5 @@ namespace Emby.Photos
{ {
get { return "Embedded Information"; } 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;
}
} }
} }

View File

@ -49,7 +49,7 @@ namespace Emby.Server.Implementations.Activity
RunDefaultInitialization(connection); RunDefaultInitialization(connection);
string[] queries = { string[] queries = {
"create table if not exists ActivityLogEntries (Id GUID PRIMARY KEY, Name TEXT, Overview TEXT, ShortOverview TEXT, Type TEXT, ItemId TEXT, UserId TEXT, DateCreated DATETIME, LogSeverity TEXT)", "create table if not exists ActivityLogEntries (Id GUID PRIMARY KEY NOT NULL, Name TEXT NOT NULL, Overview TEXT, ShortOverview TEXT, Type TEXT NOT NULL, ItemId TEXT, UserId TEXT, DateCreated DATETIME NOT NULL, LogSeverity TEXT NOT NULL)",
"create index if not exists idx_ActivityLogEntries on ActivityLogEntries(Id)" "create index if not exists idx_ActivityLogEntries on ActivityLogEntries(Id)"
}; };

View File

@ -775,7 +775,14 @@ namespace Emby.Server.Implementations
} }
// Put the app config in the log for troubleshooting purposes // Put the app config in the log for troubleshooting purposes
Logger.LogMultiline("Application configuration:", LogSeverity.Info, new StringBuilder(JsonSerializer.SerializeToString(ConfigurationManager.CommonConfiguration))); var configJson = new StringBuilder(JsonSerializer.SerializeToString(ConfigurationManager.CommonConfiguration));
if (!string.IsNullOrWhiteSpace(ServerConfigurationManager.Configuration.CertificatePassword))
{
configJson = configJson.Replace(ServerConfigurationManager.Configuration.CertificatePassword, "####");
}
Logger.LogMultiline("Application configuration:", LogSeverity.Info, configJson);
if (Plugins != null) if (Plugins != null)
{ {
@ -792,6 +799,11 @@ namespace Emby.Server.Implementations
protected abstract IConnectManager CreateConnectManager(); protected abstract IConnectManager CreateConnectManager();
protected abstract ISyncManager CreateSyncManager(); protected abstract ISyncManager CreateSyncManager();
protected virtual IHttpClient CreateHttpClient()
{
return new HttpClientManager.HttpClientManager(ApplicationPaths, LogManager.GetLogger("HttpClient"), FileSystemManager, MemoryStreamFactory, GetDefaultUserAgent);
}
/// <summary> /// <summary>
/// Registers resources that classes will depend on /// Registers resources that classes will depend on
@ -814,7 +826,7 @@ namespace Emby.Server.Implementations
RegisterSingleInstance(FileSystemManager); RegisterSingleInstance(FileSystemManager);
HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, LogManager.GetLogger("HttpClient"), FileSystemManager, MemoryStreamFactory, GetDefaultUserAgent); HttpClient = CreateHttpClient();
RegisterSingleInstance(HttpClient); RegisterSingleInstance(HttpClient);
RegisterSingleInstance(NetworkManager); RegisterSingleInstance(NetworkManager);
@ -938,7 +950,9 @@ namespace Emby.Server.Implementations
ConnectManager = CreateConnectManager(); ConnectManager = CreateConnectManager();
RegisterSingleInstance(ConnectManager); 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); RegisterSingleInstance(DeviceManager);
var newsService = new Emby.Server.Implementations.News.NewsService(ApplicationPaths, JsonSerializer); var newsService = new Emby.Server.Implementations.News.NewsService(ApplicationPaths, JsonSerializer);
@ -1116,7 +1130,7 @@ namespace Emby.Server.Implementations
IsoManager.AddParts(list); IsoManager.AddParts(list);
} }
private string GetDefaultUserAgent() protected string GetDefaultUserAgent()
{ {
var name = FormatAttribute(Name); var name = FormatAttribute(Name);

View File

@ -373,7 +373,7 @@ namespace Emby.Server.Implementations.Channels
private async Task<Channel> GetChannel(IChannel channelInfo, CancellationToken cancellationToken) private async Task<Channel> GetChannel(IChannel channelInfo, CancellationToken cancellationToken)
{ {
var parentFolder = await GetInternalChannelFolder(cancellationToken).ConfigureAwait(false); var parentFolder = GetInternalChannelFolder(cancellationToken);
var parentFolderId = parentFolder.Id; var parentFolderId = parentFolder.Id;
var id = GetInternalChannelId(channelInfo.Name); var id = GetInternalChannelId(channelInfo.Name);
@ -434,7 +434,7 @@ namespace Emby.Server.Implementations.Channels
} }
else if (forceUpdate) else if (forceUpdate)
{ {
await item.UpdateToRepository(ItemUpdateType.None, cancellationToken).ConfigureAwait(false); item.UpdateToRepository(ItemUpdateType.None, cancellationToken);
} }
await item.RefreshMetadata(new MetadataRefreshOptions(_fileSystem), cancellationToken); await item.RefreshMetadata(new MetadataRefreshOptions(_fileSystem), cancellationToken);
@ -655,14 +655,12 @@ namespace Emby.Server.Implementations.Channels
// Avoid implicitly captured closure // Avoid implicitly captured closure
var token = cancellationToken; var token = cancellationToken;
var itemTasks = items.Select(i => var internalItems = items.Select(i =>
{ {
var channelProvider = i.Item1; var channelProvider = i.Item1;
var internalChannelId = GetInternalChannelId(channelProvider.Name); var internalChannelId = GetInternalChannelId(channelProvider.Name);
return GetChannelItemEntity(i.Item2, channelProvider, internalChannelId, token); return GetChannelItemEntity(i.Item2, channelProvider, internalChannelId, token);
}); }).ToArray();
var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false);
internalItems = ApplyFilters(internalItems, query.Filters, user).ToArray(); internalItems = ApplyFilters(internalItems, query.Filters, user).ToArray();
RefreshIfNeeded(internalItems); RefreshIfNeeded(internalItems);
@ -802,14 +800,12 @@ namespace Emby.Server.Implementations.Channels
// Avoid implicitly captured closure // Avoid implicitly captured closure
var token = cancellationToken; var token = cancellationToken;
var itemTasks = items.Select(i => var internalItems = items.Select(i =>
{ {
var channelProvider = i.Item1; var channelProvider = i.Item1;
var internalChannelId = GetInternalChannelId(channelProvider.Name); var internalChannelId = GetInternalChannelId(channelProvider.Name);
return GetChannelItemEntity(i.Item2, channelProvider, internalChannelId, token); return GetChannelItemEntity(i.Item2, channelProvider, internalChannelId, token);
}); }).ToArray();
var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false);
return new QueryResult<BaseItem> return new QueryResult<BaseItem>
{ {
@ -955,9 +951,7 @@ namespace Emby.Server.Implementations.Channels
var providerTotalRecordCount = providerLimit.HasValue ? itemsResult.TotalRecordCount : null; var providerTotalRecordCount = providerLimit.HasValue ? itemsResult.TotalRecordCount : null;
var tasks = itemsResult.Items.Select(i => GetChannelItemEntity(i, channelProvider, channel.Id, cancellationToken)); var internalItems = itemsResult.Items.Select(i => GetChannelItemEntity(i, channelProvider, channel.Id, cancellationToken)).ToArray();
var internalItems = await Task.WhenAll(tasks).ConfigureAwait(false);
if (user != null) if (user != null)
{ {
@ -1234,7 +1228,7 @@ namespace Emby.Server.Implementations.Channels
return item; return item;
} }
private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Guid internalChannelId, CancellationToken cancellationToken) private BaseItem GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Guid internalChannelId, CancellationToken cancellationToken)
{ {
BaseItem item; BaseItem item;
bool isNew; bool isNew;
@ -1399,7 +1393,7 @@ namespace Emby.Server.Implementations.Channels
} }
else if (forceUpdate) else if (forceUpdate)
{ {
await item.UpdateToRepository(ItemUpdateType.None, cancellationToken).ConfigureAwait(false); item.UpdateToRepository(ItemUpdateType.None, cancellationToken);
} }
SaveMediaSources(item, info.MediaSources); SaveMediaSources(item, info.MediaSources);
@ -1542,20 +1536,20 @@ namespace Emby.Server.Implementations.Channels
return items; return items;
} }
public async Task<BaseItemDto> GetChannelFolder(string userId, CancellationToken cancellationToken) public BaseItemDto GetChannelFolder(string userId, CancellationToken cancellationToken)
{ {
var user = string.IsNullOrEmpty(userId) ? null : _userManager.GetUserById(userId); 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); return _dtoService.GetBaseItemDto(folder, new DtoOptions(), user);
} }
public async Task<Folder> GetInternalChannelFolder(CancellationToken cancellationToken) public Folder GetInternalChannelFolder(CancellationToken cancellationToken)
{ {
var name = _localization.GetLocalizedString("ViewTypeChannels"); var name = _localization.GetLocalizedString("Channels");
return await _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken).ConfigureAwait(false); return _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken);
} }
} }

View File

@ -203,7 +203,7 @@ namespace Emby.Server.Implementations.Collections
collection.UpdateRatingToContent(); collection.UpdateRatingToContent();
await collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None);
_providerManager.QueueRefresh(collection.Id, refreshOptions, RefreshPriority.High); _providerManager.QueueRefresh(collection.Id, refreshOptions, RefreshPriority.High);
@ -262,7 +262,7 @@ namespace Emby.Server.Implementations.Collections
collection.UpdateRatingToContent(); 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); _providerManager.QueueRefresh(collection.Id, new MetadataRefreshOptions(_fileSystem), RefreshPriority.High);
EventHelper.FireEventIfNotNull(ItemsRemovedFromCollection, this, new CollectionModifiedEventArgs EventHelper.FireEventIfNotNull(ItemsRemovedFromCollection, this, new CollectionModifiedEventArgs

View File

@ -75,7 +75,7 @@ namespace Emby.Server.Implementations.Data
string[] queries = { string[] queries = {
"create table if not exists userdisplaypreferences (id GUID, userId GUID, client text, data BLOB)", "create table if not exists userdisplaypreferences (id GUID NOT NULL, userId GUID NOT NULL, client text NOT NULL, data BLOB NOT NULL)",
"create unique index if not exists userdisplaypreferencesindex on userdisplaypreferences (id, userId, client)" "create unique index if not exists userdisplaypreferencesindex on userdisplaypreferences (id, userId, client)"
}; };

View File

@ -146,11 +146,11 @@ namespace Emby.Server.Implementations.Data
"create table if not exists TypedBaseItems (guid GUID primary key NOT NULL, type TEXT NOT NULL, data BLOB NULL, ParentId GUID NULL, Path TEXT NULL)", "create table if not exists TypedBaseItems (guid GUID primary key NOT NULL, type TEXT NOT NULL, data BLOB NULL, ParentId GUID NULL, Path TEXT NULL)",
"create table if not exists AncestorIds (ItemId GUID, AncestorId GUID, AncestorIdText TEXT, PRIMARY KEY (ItemId, AncestorId))", "create table if not exists AncestorIds (ItemId GUID NOT NULL, AncestorId GUID NOT NULL, AncestorIdText TEXT NOT NULL, PRIMARY KEY (ItemId, AncestorId))",
"create index if not exists idx_AncestorIds1 on AncestorIds(AncestorId)", "create index if not exists idx_AncestorIds1 on AncestorIds(AncestorId)",
"create index if not exists idx_AncestorIds5 on AncestorIds(AncestorIdText,ItemId)", "create index if not exists idx_AncestorIds5 on AncestorIds(AncestorIdText,ItemId)",
"create table if not exists ItemValues (ItemId GUID, Type INT, Value TEXT, CleanValue TEXT)", "create table if not exists ItemValues (ItemId GUID NOT NULL, Type INT NOT NULL, Value TEXT NOT NULL, CleanValue TEXT NOT NULL)",
"create table if not exists People (ItemId GUID, Name TEXT NOT NULL, Role TEXT, PersonType TEXT, SortOrder int, ListOrder int)", "create table if not exists People (ItemId GUID, Name TEXT NOT NULL, Role TEXT, PersonType TEXT, SortOrder int, ListOrder int)",
@ -158,7 +158,7 @@ namespace Emby.Server.Implementations.Data
"create index if not exists idxPeopleItemId1 on People(ItemId,ListOrder)", "create index if not exists idxPeopleItemId1 on People(ItemId,ListOrder)",
"create index if not exists idxPeopleName on People(Name)", "create index if not exists idxPeopleName on People(Name)",
"create table if not exists "+ChaptersTableName+" (ItemId GUID, ChapterIndex INT, StartPositionTicks BIGINT, Name TEXT, ImagePath TEXT, PRIMARY KEY (ItemId, ChapterIndex))", "create table if not exists "+ChaptersTableName+" (ItemId GUID, ChapterIndex INT NOT NULL, StartPositionTicks BIGINT NOT NULL, Name TEXT, ImagePath TEXT, PRIMARY KEY (ItemId, ChapterIndex))",
createMediaStreamsTableCommand, createMediaStreamsTableCommand,
@ -616,6 +616,33 @@ namespace Emby.Server.Implementations.Data
SaveItems(new List<BaseItem> { item }, cancellationToken); SaveItems(new List<BaseItem> { item }, cancellationToken);
} }
public void SaveImages(BaseItem item)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
CheckDisposed();
using (WriteLock.Write())
{
using (var connection = CreateConnection())
{
connection.RunInTransaction(db =>
{
using (var saveImagesStatement = PrepareStatement(db, "Update TypedBaseItems set Images=@Images where guid=@Id"))
{
saveImagesStatement.TryBind("@Id", item.Id.ToGuidBlob());
saveImagesStatement.TryBind("@Images", SerializeImages(item));
saveImagesStatement.MoveNext();
}
}, TransactionMode);
}
}
}
/// <summary> /// <summary>
/// Saves the items. /// Saves the items.
/// </summary> /// </summary>
@ -1170,7 +1197,11 @@ namespace Emby.Server.Implementations.Data
delimeter + delimeter +
image.DateModified.Ticks.ToString(CultureInfo.InvariantCulture) + image.DateModified.Ticks.ToString(CultureInfo.InvariantCulture) +
delimeter + delimeter +
image.Type; image.Type +
delimeter +
image.Width.ToString(CultureInfo.InvariantCulture) +
delimeter +
image.Height.ToString(CultureInfo.InvariantCulture);
} }
public ItemImageInfo ItemImageInfoFromValueString(string value) public ItemImageInfo ItemImageInfoFromValueString(string value)
@ -1198,6 +1229,20 @@ namespace Emby.Server.Implementations.Data
image.Type = type; image.Type = type;
} }
if (parts.Length >= 5)
{
int width;
int height;
if (int.TryParse(parts[3], NumberStyles.Integer, CultureInfo.InvariantCulture, out width))
{
if (int.TryParse(parts[4], NumberStyles.Integer, CultureInfo.InvariantCulture, out height))
{
image.Width = width;
image.Height = height;
}
}
}
return image; return image;
} }
@ -3038,8 +3083,8 @@ namespace Emby.Server.Implementations.Data
{ {
if (orderBy.Count == 0) if (orderBy.Count == 0)
{ {
orderBy.Add(new Tuple<string, SortOrder>(ItemSortBy.Random, SortOrder.Ascending));
orderBy.Add(new Tuple<string, SortOrder>("SimilarityScore", SortOrder.Descending)); orderBy.Add(new Tuple<string, SortOrder>("SimilarityScore", SortOrder.Descending));
orderBy.Add(new Tuple<string, SortOrder>(ItemSortBy.Random, SortOrder.Ascending));
//orderBy.Add(new Tuple<string, SortOrder>(ItemSortBy.Random, SortOrder.Ascending)); //orderBy.Add(new Tuple<string, SortOrder>(ItemSortBy.Random, SortOrder.Ascending));
} }
} }

View File

@ -52,7 +52,7 @@ namespace Emby.Server.Implementations.Data
{ {
string[] queries = { string[] queries = {
"create table if not exists userdata (key nvarchar, userId GUID, rating float null, played bit, playCount int, isFavorite bit, playbackPositionTicks bigint, lastPlayedDate datetime null)", "create table if not exists userdata (key nvarchar not null, userId GUID not null, rating float null, played bit not null, playCount int not null, isFavorite bit not null, playbackPositionTicks bigint not null, lastPlayedDate datetime null)",
"create table if not exists DataSettings (IsUserDataImported bit)", "create table if not exists DataSettings (IsUserDataImported bit)",

View File

@ -53,9 +53,8 @@ namespace Emby.Server.Implementations.Data
string[] queries = { string[] queries = {
"create table if not exists users (guid GUID primary key, data BLOB)", "create table if not exists users (guid GUID primary key NOT NULL, data BLOB NOT NULL)",
"create index if not exists idx_users on users(guid)", "create index if not exists idx_users on users(guid)",
"create table if not exists schema_version (table_name primary key, version)",
"pragma shrink_memory" "pragma shrink_memory"
}; };

View File

@ -28,7 +28,7 @@ namespace Emby.Server.Implementations.Devices
[IgnoreDataMember] [IgnoreDataMember]
public override string CollectionType public override string CollectionType
{ {
get { return MediaBrowser.Model.Entities.CollectionType.Photos; } get { return MediaBrowser.Model.Entities.CollectionType.HomeVideos; }
} }
[IgnoreDataMember] [IgnoreDataMember]

View File

@ -50,7 +50,7 @@ namespace Emby.Server.Implementations.Devices
_network = network; _network = network;
} }
public async Task<DeviceInfo> 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)) if (string.IsNullOrWhiteSpace(reportedId))
{ {
@ -76,14 +76,16 @@ namespace Emby.Server.Implementations.Devices
device.DateLastModified = DateTime.UtcNow; 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; 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) public ClientCapabilities GetCapabilities(string reportedId)
@ -98,13 +100,13 @@ namespace Emby.Server.Implementations.Devices
public QueryResult<DeviceInfo> GetDevices(DeviceQuery query) public QueryResult<DeviceInfo> GetDevices(DeviceQuery query)
{ {
IEnumerable<DeviceInfo> devices = _repo.GetDevices().OrderByDescending(i => i.DateLastModified); IEnumerable<DeviceInfo> devices = _repo.GetDevices();
if (query.SupportsSync.HasValue) if (query.SupportsSync.HasValue)
{ {
var val = query.SupportsSync.Value; 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) if (query.SupportsPersistentIdentifier.HasValue)
@ -113,8 +115,7 @@ namespace Emby.Server.Implementations.Devices
devices = devices.Where(i => devices = devices.Where(i =>
{ {
var caps = GetCapabilities(i.Id); var deviceVal = i.Capabilities.SupportsPersistentIdentifier;
var deviceVal = caps.SupportsPersistentIdentifier;
return deviceVal == val; 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) public ContentUploadHistory GetCameraUploadHistory(string deviceId)
@ -213,14 +214,16 @@ namespace Emby.Server.Implementations.Devices
get { return Path.Combine(_config.CommonApplicationPaths.DataPath, "camerauploads"); } 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); var device = GetDevice(id);
device.CustomName = options.CustomName; device.CustomName = options.CustomName;
device.CameraUploadPath = options.CameraUploadPath; 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<DeviceInfo>(device), _logger); EventHelper.FireEventIfNotNull(DeviceOptionsUpdated, this, new GenericEventArgs<DeviceInfo>(device), _logger);
} }

View File

@ -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<string, DeviceInfo> _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<DeviceInfo> GetDevices()
{
lock (_syncLock)
{
if (_devices == null)
{
_devices = new Dictionary<string, DeviceInfo>(StringComparer.OrdinalIgnoreCase);
var devices = LoadDevices().ToList();
foreach (var device in devices)
{
_devices[device.Id] = device;
}
}
return _devices.Values.ToList();
}
}
private IEnumerable<DeviceInfo> 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<DeviceInfo>(i);
}
catch (Exception ex)
{
_logger.ErrorException("Error reading {0}", ex, i);
return null;
}
})
.Where(i => i != null);
}
catch (IOException)
{
return new List<DeviceInfo>();
}
}
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<ContentUploadHistory>(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<ContentUploadHistory>(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);
}
}
}
}

View File

@ -0,0 +1,451 @@
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 NOT NULL, ReportedName TEXT NOT NULL, CustomName TEXT, CameraUploadPath TEXT, LastUserName TEXT, AppName TEXT NOT NULL, AppVersion TEXT NOT NULL, LastUserId TEXT, DateLastModified DATETIME NOT NULL, Capabilities TEXT NOT NULL)",
"create index if not exists idx_id on Devices(Id)"
};
connection.RunQueries(queries);
MigrateDevices();
}
}
private void MigrateDevices()
{
List<string> files;
try
{
files = FileSystem
.GetFilePaths(GetDevicesPath(), true)
.Where(i => string.Equals(Path.GetFileName(i), "device.json", StringComparison.OrdinalIgnoreCase))
.ToList();
}
catch (IOException)
{
return;
}
foreach (var file in files)
{
try
{
var device = _json.DeserializeFromFile<DeviceInfo>(file);
device.Name = string.IsNullOrWhiteSpace(device.CustomName) ? device.ReportedName : device.CustomName;
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<string>();
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<DeviceInfo> GetDevices()
{
using (WriteLock.Read())
{
using (var connection = CreateConnection(true))
{
var statementTexts = new List<string>();
statementTexts.Add(BaseSelectText + " order by DateLastModified desc");
return connection.RunInTransaction(db =>
{
var list = new List<DeviceInfo>();
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<string>();
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<ClientCapabilities>(row.GetString(0));
}
}
}
return null;
}, ReadTransactionMode);
}
}
}
private DeviceInfo GetEntry(IReadOnlyList<IResultSetValue> 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<ClientCapabilities>(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<ContentUploadHistory>(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<ContentUploadHistory>(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)
{
}
}
}
}
}

View File

@ -116,9 +116,11 @@ namespace Emby.Server.Implementations.Dto
var channelTuples = new List<Tuple<BaseItemDto, LiveTvChannel>>(); var channelTuples = new List<Tuple<BaseItemDto, LiveTvChannel>>();
var index = 0; var index = 0;
var allCollectionFolders = _libraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList();
foreach (var item in items) foreach (var item in items)
{ {
var dto = GetBaseItemDtoInternal(item, options, user, owner); var dto = GetBaseItemDtoInternal(item, options, allCollectionFolders, user, owner);
var tvChannel = item as LiveTvChannel; var tvChannel = item as LiveTvChannel;
if (tvChannel != null) if (tvChannel != null)
@ -173,7 +175,8 @@ namespace Emby.Server.Implementations.Dto
{ {
var syncDictionary = GetSyncedItemProgress(options); var syncDictionary = GetSyncedItemProgress(options);
var dto = GetBaseItemDtoInternal(item, options, user, owner); var allCollectionFolders = _libraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList();
var dto = GetBaseItemDtoInternal(item, options, allCollectionFolders, user, owner);
var tvChannel = item as LiveTvChannel; var tvChannel = item as LiveTvChannel;
if (tvChannel != null) if (tvChannel != null)
{ {
@ -303,7 +306,7 @@ namespace Emby.Server.Implementations.Dto
} }
} }
private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, User user = null, BaseItem owner = null) private BaseItemDto GetBaseItemDtoInternal(BaseItem item, DtoOptions options, List<Folder> allCollectionFolders, User user = null, BaseItem owner = null)
{ {
var fields = options.Fields; var fields = options.Fields;
@ -472,7 +475,8 @@ namespace Emby.Server.Implementations.Dto
public BaseItemDto GetItemByNameDto(BaseItem item, DtoOptions options, List<BaseItem> taggedItems, Dictionary<string, SyncedItemProgress> syncProgress, User user = null) public BaseItemDto GetItemByNameDto(BaseItem item, DtoOptions options, List<BaseItem> taggedItems, Dictionary<string, SyncedItemProgress> syncProgress, User user = null)
{ {
var dto = GetBaseItemDtoInternal(item, options, user); var allCollectionFolders = _libraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList();
var dto = GetBaseItemDtoInternal(item, options, allCollectionFolders, user);
if (taggedItems != null && options.Fields.Contains(ItemFields.ItemCounts)) if (taggedItems != null && options.Fields.Contains(ItemFields.ItemCounts))
{ {
@ -1604,12 +1608,12 @@ namespace Emby.Server.Implementations.Dto
/// <param name="dto">The dto.</param> /// <param name="dto">The dto.</param>
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
public void AttachPrimaryImageAspectRatio(IItemDto dto, IHasMetadata item) public void AttachPrimaryImageAspectRatio(IItemDto dto, BaseItem item)
{ {
dto.PrimaryImageAspectRatio = GetPrimaryImageAspectRatio(item); dto.PrimaryImageAspectRatio = GetPrimaryImageAspectRatio(item);
} }
public double? GetPrimaryImageAspectRatio(IHasMetadata item) public double? GetPrimaryImageAspectRatio(BaseItem item)
{ {
var imageInfo = item.GetImageInfo(ImageType.Primary, 0); var imageInfo = item.GetImageInfo(ImageType.Primary, 0);
@ -1642,16 +1646,18 @@ namespace Emby.Server.Implementations.Dto
return null; return null;
} }
return null;
_logger.Info("Getting image size for item type {0}", item.GetType().Name);
try try
{ {
size = _imageProcessor.GetImageSize(imageInfo); size = _imageProcessor.GetImageSize(item, imageInfo);
if (size.Width <= 0 || size.Height <= 0)
{
return null;
}
} }
catch catch (Exception ex)
{ {
//_logger.ErrorException("Failed to determine primary image aspect ratio for {0}", ex, path); //_logger.ErrorException("Failed to determine primary image aspect ratio for {0}", ex, imageInfo.Path);
return null; return null;
} }
} }

View File

@ -67,7 +67,7 @@
<Compile Include="Devices\CameraUploadsFolder.cs" /> <Compile Include="Devices\CameraUploadsFolder.cs" />
<Compile Include="Devices\DeviceId.cs" /> <Compile Include="Devices\DeviceId.cs" />
<Compile Include="Devices\DeviceManager.cs" /> <Compile Include="Devices\DeviceManager.cs" />
<Compile Include="Devices\DeviceRepository.cs" /> <Compile Include="Devices\SqliteDeviceRepository.cs" />
<Compile Include="Diagnostics\CommonProcess.cs" /> <Compile Include="Diagnostics\CommonProcess.cs" />
<Compile Include="Diagnostics\ProcessFactory.cs" /> <Compile Include="Diagnostics\ProcessFactory.cs" />
<Compile Include="Dto\DtoService.cs" /> <Compile Include="Dto\DtoService.cs" />
@ -435,7 +435,6 @@
<Compile Include="Data\BaseSqliteRepository.cs" /> <Compile Include="Data\BaseSqliteRepository.cs" />
<Compile Include="Data\CleanDatabaseScheduledTask.cs" /> <Compile Include="Data\CleanDatabaseScheduledTask.cs" />
<Compile Include="Data\SqliteExtensions.cs" /> <Compile Include="Data\SqliteExtensions.cs" />
<Compile Include="Photos\PhotoAlbumImageProvider.cs" />
<Compile Include="Playlists\ManualPlaylistsFolder.cs" /> <Compile Include="Playlists\ManualPlaylistsFolder.cs" />
<Compile Include="Playlists\PlaylistImageProvider.cs" /> <Compile Include="Playlists\PlaylistImageProvider.cs" />
<Compile Include="Playlists\PlaylistManager.cs" /> <Compile Include="Playlists\PlaylistManager.cs" />
@ -573,6 +572,7 @@
<Compile Include="Updates\InstallationManager.cs" /> <Compile Include="Updates\InstallationManager.cs" />
<Compile Include="UserViews\CollectionFolderImageProvider.cs" /> <Compile Include="UserViews\CollectionFolderImageProvider.cs" />
<Compile Include="UserViews\DynamicImageProvider.cs" /> <Compile Include="UserViews\DynamicImageProvider.cs" />
<Compile Include="UserViews\FolderImageProvider.cs" />
<Compile Include="Xml\XmlReaderSettingsFactory.cs" /> <Compile Include="Xml\XmlReaderSettingsFactory.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -675,46 +675,40 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Localization\countries.json" />
<EmbeddedResource Include="Localization\Core\ar.json" /> <EmbeddedResource Include="Localization\Core\ar.json" />
<EmbeddedResource Include="Localization\Core\bg-BG.json" /> <EmbeddedResource Include="Localization\Core\bg-BG.json" />
<EmbeddedResource Include="Localization\Core\ca.json" /> <EmbeddedResource Include="Localization\Core\ca.json" />
<EmbeddedResource Include="Localization\Core\cs.json" /> <EmbeddedResource Include="Localization\Core\cs.json" />
<EmbeddedResource Include="Localization\Core\da.json" /> <EmbeddedResource Include="Localization\Core\da.json" />
<EmbeddedResource Include="Localization\Core\de.json" /> <EmbeddedResource Include="Localization\Core\de.json" />
<EmbeddedResource Include="Localization\Core\el.json" />
<EmbeddedResource Include="Localization\Core\en-GB.json" /> <EmbeddedResource Include="Localization\Core\en-GB.json" />
<EmbeddedResource Include="Localization\Core\en-US.json" />
<EmbeddedResource Include="Localization\Core\es-AR.json" /> <EmbeddedResource Include="Localization\Core\es-AR.json" />
<EmbeddedResource Include="Localization\Core\es-MX.json" /> <EmbeddedResource Include="Localization\Core\es-MX.json" />
<EmbeddedResource Include="Localization\Core\es.json" /> <EmbeddedResource Include="Localization\Core\es.json" />
<EmbeddedResource Include="Localization\Core\fi.json" />
<EmbeddedResource Include="Localization\Core\fr-CA.json" /> <EmbeddedResource Include="Localization\Core\fr-CA.json" />
<EmbeddedResource Include="Localization\Core\fr.json" /> <EmbeddedResource Include="Localization\Core\fr.json" />
<EmbeddedResource Include="Localization\Core\gsw.json" />
<EmbeddedResource Include="Localization\Core\he.json" /> <EmbeddedResource Include="Localization\Core\he.json" />
<EmbeddedResource Include="Localization\Core\hr.json" /> <EmbeddedResource Include="Localization\Core\hr.json" />
<EmbeddedResource Include="Localization\Core\hu.json" /> <EmbeddedResource Include="Localization\Core\hu.json" />
<EmbeddedResource Include="Localization\Core\id.json" />
<EmbeddedResource Include="Localization\Core\it.json" /> <EmbeddedResource Include="Localization\Core\it.json" />
<EmbeddedResource Include="Localization\Core\kk.json" /> <EmbeddedResource Include="Localization\Core\kk.json" />
<EmbeddedResource Include="Localization\Core\ko.json" /> <EmbeddedResource Include="Localization\Core\ko.json" />
<EmbeddedResource Include="Localization\Core\lt-LT.json" />
<EmbeddedResource Include="Localization\Core\ms.json" /> <EmbeddedResource Include="Localization\Core\ms.json" />
<EmbeddedResource Include="Localization\Core\nb.json" /> <EmbeddedResource Include="Localization\Core\nb.json" />
<EmbeddedResource Include="Localization\Core\nl.json" /> <EmbeddedResource Include="Localization\Core\nl.json" />
<EmbeddedResource Include="Localization\Core\pl.json" /> <EmbeddedResource Include="Localization\Core\pl.json" />
<EmbeddedResource Include="Localization\Core\pt-BR.json" /> <EmbeddedResource Include="Localization\Core\pt-BR.json" />
<EmbeddedResource Include="Localization\Core\pt-PT.json" /> <EmbeddedResource Include="Localization\Core\pt-PT.json" />
<EmbeddedResource Include="Localization\Core\ro.json" />
<EmbeddedResource Include="Localization\Core\ru.json" /> <EmbeddedResource Include="Localization\Core\ru.json" />
<EmbeddedResource Include="Localization\Core\sk.json" />
<EmbeddedResource Include="Localization\Core\sl-SI.json" /> <EmbeddedResource Include="Localization\Core\sl-SI.json" />
<EmbeddedResource Include="Localization\Core\sv.json" /> <EmbeddedResource Include="Localization\Core\sv.json" />
<EmbeddedResource Include="Localization\Core\tr.json" /> <EmbeddedResource Include="Localization\Core\tr.json" />
<EmbeddedResource Include="Localization\Core\uk.json" />
<EmbeddedResource Include="Localization\Core\vi.json" />
<EmbeddedResource Include="Localization\Core\zh-CN.json" /> <EmbeddedResource Include="Localization\Core\zh-CN.json" />
<EmbeddedResource Include="Localization\Core\zh-HK.json" /> <EmbeddedResource Include="Localization\Core\zh-HK.json" />
<EmbeddedResource Include="Localization\Core\zh-TW.json" /> <EmbeddedResource Include="Localization\Core\en-US.json" />
<EmbeddedResource Include="Localization\countries.json" />
<None Include="packages.config" /> <None Include="packages.config" />
<None Include="TextEncoding\NLangDetect\Profiles\afr" /> <None Include="TextEncoding\NLangDetect\Profiles\afr" />
<None Include="TextEncoding\NLangDetect\Profiles\ara" /> <None Include="TextEncoding\NLangDetect\Profiles\ara" />

View File

@ -49,18 +49,20 @@ namespace Emby.Server.Implementations.FFMpeg
var downloadInfo = _ffmpegInstallInfo; var downloadInfo = _ffmpegInstallInfo;
var version = downloadInfo.Version; var prebuiltffmpeg = Path.Combine(_appPaths.ProgramSystemPath, downloadInfo.FFMpegFilename);
var prebuiltffprobe = Path.Combine(_appPaths.ProgramSystemPath, downloadInfo.FFProbeFilename);
if (string.Equals(version, "path", StringComparison.OrdinalIgnoreCase)) if (_fileSystem.FileExists(prebuiltffmpeg) && _fileSystem.FileExists(prebuiltffprobe))
{ {
return new FFMpegInfo return new FFMpegInfo
{ {
ProbePath = downloadInfo.FFProbeFilename, ProbePath = prebuiltffprobe,
EncoderPath = downloadInfo.FFMpegFilename, EncoderPath = prebuiltffmpeg,
Version = version Version = "external"
}; };
} }
var version = downloadInfo.Version;
if (string.Equals(version, "0", StringComparison.OrdinalIgnoreCase)) if (string.Equals(version, "0", StringComparison.OrdinalIgnoreCase))
{ {
return new FFMpegInfo(); return new FFMpegInfo();

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Net.Http;
namespace Emby.Server.Implementations.HttpClientManager namespace Emby.Server.Implementations.HttpClientManager
{ {
@ -12,5 +13,6 @@ namespace Emby.Server.Implementations.HttpClientManager
/// </summary> /// </summary>
/// <value>The last timeout.</value> /// <value>The last timeout.</value>
public DateTime LastTimeout { get; set; } public DateTime LastTimeout { get; set; }
public HttpClient HttpClient { get; set; }
} }
} }

View File

@ -279,39 +279,9 @@ namespace Emby.Server.Implementations.HttpClientManager
public async Task<Stream> Get(HttpRequestOptions options) public async Task<Stream> Get(HttpRequestOptions options)
{ {
var response = await GetResponse(options).ConfigureAwait(false); var response = await GetResponse(options).ConfigureAwait(false);
return response.Content; return response.Content;
} }
/// <summary>
/// Performs a GET request and returns the resulting stream
/// </summary>
/// <param name="url">The URL.</param>
/// <param name="resourcePool">The resource pool.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{Stream}.</returns>
public Task<Stream> Get(string url, SemaphoreSlim resourcePool, CancellationToken cancellationToken)
{
return Get(new HttpRequestOptions
{
Url = url,
ResourcePool = resourcePool,
CancellationToken = cancellationToken,
BufferContent = resourcePool != null
});
}
/// <summary>
/// Gets the specified URL.
/// </summary>
/// <param name="url">The URL.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{Stream}.</returns>
public Task<Stream> Get(string url, CancellationToken cancellationToken)
{
return Get(url, null, cancellationToken);
}
/// <summary> /// <summary>
/// send as an asynchronous operation. /// send as an asynchronous operation.
/// </summary> /// </summary>
@ -350,8 +320,6 @@ namespace Emby.Server.Implementations.HttpClientManager
private async Task<HttpResponseInfo> GetCachedResponse(string responseCachePath, TimeSpan cacheLength, string url) private async Task<HttpResponseInfo> GetCachedResponse(string responseCachePath, TimeSpan cacheLength, string url)
{ {
_logger.Info("Checking for cache file {0}", responseCachePath);
try try
{ {
if (_fileSystem.GetLastWriteTimeUtc(responseCachePath).Add(cacheLength) > DateTime.UtcNow) if (_fileSystem.GetLastWriteTimeUtc(responseCachePath).Add(cacheLength) > DateTime.UtcNow)
@ -429,10 +397,19 @@ namespace Emby.Server.Implementations.HttpClientManager
{ {
try try
{ {
var bytes = options.RequestContentBytes ?? // TODO: We can always put this in the options object if needed
Encoding.UTF8.GetBytes(options.RequestContent ?? string.Empty); var requestEncoding = Encoding.UTF8;
httpWebRequest.ContentType = options.RequestContentType ?? "application/x-www-form-urlencoded"; var bytes = options.RequestContentBytes ?? requestEncoding.GetBytes(options.RequestContent ?? string.Empty);
var contentType = options.RequestContentType ?? "application/x-www-form-urlencoded";
if (options.AppendCharsetToMimeType)
{
contentType = contentType.TrimEnd(';') + "; charset=\"utf-8\"";
}
httpWebRequest.ContentType = contentType;
httpWebRequest.ContentLength = bytes.Length; httpWebRequest.ContentLength = bytes.Length;
(await httpWebRequest.GetRequestStreamAsync().ConfigureAwait(false)).Write(bytes, 0, bytes.Length); (await httpWebRequest.GetRequestStreamAsync().ConfigureAwait(false)).Write(bytes, 0, bytes.Length);
@ -460,7 +437,14 @@ namespace Emby.Server.Implementations.HttpClientManager
if (options.LogRequest) if (options.LogRequest)
{ {
_logger.Info("HttpClientManager {0}: {1}", httpMethod.ToUpper(), options.Url); if (options.LogRequestAsDebug)
{
_logger.Debug("HttpClientManager {0}: {1}", httpMethod.ToUpper(), options.Url);
}
else
{
_logger.Info("HttpClientManager {0}: {1}", httpMethod.ToUpper(), options.Url);
}
} }
try try
@ -589,26 +573,6 @@ namespace Emby.Server.Implementations.HttpClientManager
return response.Content; return response.Content;
} }
/// <summary>
/// Performs a POST request
/// </summary>
/// <param name="url">The URL.</param>
/// <param name="postData">Params to add to the POST data.</param>
/// <param name="resourcePool">The resource pool.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>stream on success, null on failure</returns>
public Task<Stream> Post(string url, Dictionary<string, string> postData, SemaphoreSlim resourcePool, CancellationToken cancellationToken)
{
return Post(new HttpRequestOptions
{
Url = url,
ResourcePool = resourcePool,
CancellationToken = cancellationToken,
BufferContent = resourcePool != null
}, postData);
}
/// <summary> /// <summary>
/// Downloads the contents of a given url into a temporary location /// Downloads the contents of a given url into a temporary location
/// </summary> /// </summary>
@ -647,7 +611,14 @@ namespace Emby.Server.Implementations.HttpClientManager
if (options.LogRequest) if (options.LogRequest)
{ {
_logger.Info("HttpClientManager.GetTempFileResponse url: {0}", options.Url); if (options.LogRequestAsDebug)
{
_logger.Debug("HttpClientManager.GetTempFileResponse url: {0}", options.Url);
}
else
{
_logger.Info("HttpClientManager.GetTempFileResponse url: {0}", options.Url);
}
} }
var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression); var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression);
@ -891,18 +862,6 @@ namespace Emby.Server.Implementations.HttpClientManager
} }
} }
/// <summary>
/// Posts the specified URL.
/// </summary>
/// <param name="url">The URL.</param>
/// <param name="postData">The post data.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{Stream}.</returns>
public Task<Stream> Post(string url, Dictionary<string, string> postData, CancellationToken cancellationToken)
{
return Post(url, postData, null, cancellationToken);
}
private Task<WebResponse> GetResponseAsync(WebRequest request, TimeSpan timeout) private Task<WebResponse> GetResponseAsync(WebRequest request, TimeSpan timeout)
{ {
var taskCompletion = new TaskCompletionSource<WebResponse>(); var taskCompletion = new TaskCompletionSource<WebResponse>();

View File

@ -411,8 +411,6 @@ namespace Emby.Server.Implementations.HttpServer
host = host ?? string.Empty; host = host ?? string.Empty;
_logger.Debug("Validating host {0}", host);
if (_networkManager.IsInPrivateAddressSpace(host)) if (_networkManager.IsInPrivateAddressSpace(host))
{ {
hosts.Add("localhost"); hosts.Add("localhost");
@ -725,12 +723,13 @@ namespace Emby.Server.Implementations.HttpServer
Summary = route.Summary Summary = route.Summary
}); });
//routes.Add(new RouteAttribute(DoubleNormalizeEmbyRoutePath(route.Path), route.Verbs) // 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, Notes = route.Notes,
// Summary = route.Summary Priority = route.Priority,
//}); Summary = route.Summary
});
} }
return routes.ToArray(routes.Count); return routes.ToArray(routes.Count);

View File

@ -5,6 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using MediaBrowser.Model.Services; using MediaBrowser.Model.Services;
using System.Linq; using System.Linq;
using System.Threading;
namespace Emby.Server.Implementations.HttpServer.Security namespace Emby.Server.Implementations.HttpServer.Security
{ {
@ -95,23 +96,44 @@ namespace Emby.Server.Implementations.HttpServer.Security
{ {
info.UserId = tokenInfo.UserId; info.UserId = tokenInfo.UserId;
var updateToken = false;
// TODO: Remove these checks for IsNullOrWhiteSpace // TODO: Remove these checks for IsNullOrWhiteSpace
if (string.IsNullOrWhiteSpace(info.Client)) if (string.IsNullOrWhiteSpace(info.Client))
{ {
info.Client = tokenInfo.AppName; info.Client = tokenInfo.AppName;
} }
if (string.IsNullOrWhiteSpace(info.Device))
{
info.Device = tokenInfo.DeviceName;
}
if (string.IsNullOrWhiteSpace(info.DeviceId)) if (string.IsNullOrWhiteSpace(info.DeviceId))
{ {
info.DeviceId = tokenInfo.DeviceId; info.DeviceId = tokenInfo.DeviceId;
} }
if (string.IsNullOrWhiteSpace(info.Device))
{
info.Device = tokenInfo.DeviceName;
}
else if (!string.Equals(info.Device, tokenInfo.DeviceName, StringComparison.OrdinalIgnoreCase))
{
updateToken = true;
tokenInfo.DeviceName = info.Device;
}
if (string.IsNullOrWhiteSpace(info.Version)) if (string.IsNullOrWhiteSpace(info.Version))
{ {
info.Version = tokenInfo.AppVersion; info.Version = tokenInfo.AppVersion;
} }
else if (!string.Equals(info.Version, tokenInfo.AppVersion, StringComparison.OrdinalIgnoreCase))
{
updateToken = true;
tokenInfo.AppVersion = info.Version;
}
if (updateToken)
{
_authRepo.Update(tokenInfo, CancellationToken.None);
}
} }
else else
{ {

View File

@ -25,15 +25,6 @@ namespace Emby.Server.Implementations.HttpServer.Security
{ {
var authorization = _authContext.GetAuthorizationInfo(requestContext); var authorization = _authContext.GetAuthorizationInfo(requestContext);
//if (!string.IsNullOrWhiteSpace(authorization.Token))
//{
// var auth = GetTokenInfo(requestContext);
// if (auth != null)
// {
// return _sessionManager.GetSessionByAuthenticationToken(auth, authorization.DeviceId, requestContext.RemoteIp, authorization.Version);
// }
//}
var user = string.IsNullOrWhiteSpace(authorization.UserId) ? null : _userManager.GetUserById(authorization.UserId); var user = string.IsNullOrWhiteSpace(authorization.UserId) ? null : _userManager.GetUserById(authorization.UserId);
return _sessionManager.LogSessionActivity(authorization.Client, authorization.Version, authorization.DeviceId, authorization.Device, requestContext.RemoteIp, user); return _sessionManager.LogSessionActivity(authorization.Client, authorization.Version, authorization.DeviceId, authorization.Device, requestContext.RemoteIp, user);
} }

View File

@ -154,20 +154,13 @@ namespace Emby.Server.Implementations.IO
.DistinctBy(i => i.Id) .DistinctBy(i => i.Id)
.ToList(); .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<double>(), CancellationToken.None);
return;
}
foreach (var item in itemsToRefresh) foreach (var item in itemsToRefresh)
{ {
if (item is AggregateFolder)
{
continue;
}
Logger.Info(item.Name + " (" + item.Path + ") will be refreshed."); Logger.Info(item.Name + " (" + item.Path + ") will be refreshed.");
try try

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -24,12 +25,14 @@ namespace Emby.Server.Implementations.IO
private string _tempPath; private string _tempPath;
private SharpCifsFileSystem _sharpCifsFileSystem; private SharpCifsFileSystem _sharpCifsFileSystem;
private IEnvironmentInfo _environmentInfo;
public ManagedFileSystem(ILogger logger, IEnvironmentInfo environmentInfo, string tempPath) public ManagedFileSystem(ILogger logger, IEnvironmentInfo environmentInfo, string tempPath)
{ {
Logger = logger; Logger = logger;
_supportsAsyncFileStreams = true; _supportsAsyncFileStreams = true;
_tempPath = tempPath; _tempPath = tempPath;
_environmentInfo = environmentInfo;
// On Linux, this needs to be true or symbolic links are ignored // On Linux, this needs to be true or symbolic links are ignored
EnableFileSystemRequestConcat = environmentInfo.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows && EnableFileSystemRequestConcat = environmentInfo.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows &&
@ -1051,7 +1054,25 @@ namespace Emby.Server.Implementations.IO
public virtual void SetExecutable(string path) 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();
}
} }
} }
} }

View File

@ -42,23 +42,14 @@ namespace Emby.Server.Implementations.Images
return true; return true;
} }
public virtual IEnumerable<ImageType> GetSupportedImages(IHasMetadata item) public virtual ImageType[] GetSupportedImages(IHasMetadata item)
{ {
return new List<ImageType> return new ImageType[]
{ {
ImageType.Primary, ImageType.Primary
ImageType.Thumb
}; };
} }
private IEnumerable<ImageType> GetEnabledImages(IHasMetadata item)
{
//var options = ProviderManager.GetMetadataOptions(item);
return GetSupportedImages(item);
//return GetSupportedImages(item).Where(i => IsEnabled(options, i, item)).ToList();
}
public async Task<ItemUpdateType> FetchAsync(T item, MetadataRefreshOptions options, CancellationToken cancellationToken) public async Task<ItemUpdateType> FetchAsync(T item, MetadataRefreshOptions options, CancellationToken cancellationToken)
{ {
if (!Supports(item)) if (!Supports(item))
@ -67,7 +58,7 @@ namespace Emby.Server.Implementations.Images
} }
var updateType = ItemUpdateType.None; var updateType = ItemUpdateType.None;
var supportedImages = GetEnabledImages(item).ToList(); var supportedImages = GetSupportedImages(item);
if (supportedImages.Contains(ImageType.Primary)) if (supportedImages.Contains(ImageType.Primary))
{ {
@ -253,7 +244,7 @@ namespace Emby.Server.Implementations.Images
return false; return false;
} }
var supportedImages = GetEnabledImages(item).ToList(); var supportedImages = GetSupportedImages(item);
if (supportedImages.Contains(ImageType.Primary) && HasChanged(item, ImageType.Primary)) if (supportedImages.Contains(ImageType.Primary) && HasChanged(item, ImageType.Primary))
{ {
@ -283,8 +274,7 @@ namespace Emby.Server.Implementations.Images
return false; return false;
} }
var age = DateTime.UtcNow - image.DateModified; if (!HasChangedByDate(item, image))
if (age.TotalDays <= MaxImageAgeDays)
{ {
return false; return false;
} }
@ -293,6 +283,16 @@ namespace Emby.Server.Implementations.Images
return true; return true;
} }
protected virtual bool HasChangedByDate(IHasMetadata item, ItemImageInfo image)
{
var age = DateTime.UtcNow - image.DateModified;
if (age.TotalDays <= MaxImageAgeDays)
{
return false;
}
return true;
}
protected List<BaseItem> GetFinalItems(IEnumerable<BaseItem> items) protected List<BaseItem> GetFinalItems(IEnumerable<BaseItem> items)
{ {
return GetFinalItems(items, 4); return GetFinalItems(items, 4);

View File

@ -738,8 +738,7 @@ namespace Emby.Server.Implementations.Library
if (folder.ParentId != rootFolder.Id) if (folder.ParentId != rootFolder.Id)
{ {
folder.ParentId = rootFolder.Id; folder.ParentId = rootFolder.Id;
var task = folder.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None); folder.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None);
Task.WaitAll(task);
} }
rootFolder.AddVirtualChild(folder); rootFolder.AddVirtualChild(folder);
@ -1827,6 +1826,13 @@ namespace Emby.Server.Implementations.Library
} }
} }
public void UpdateImages(BaseItem item)
{
ItemRepository.SaveImages(item);
RegisterItem(item);
}
/// <summary> /// <summary>
/// Updates the item. /// Updates the item.
/// </summary> /// </summary>
@ -1834,12 +1840,12 @@ namespace Emby.Server.Implementations.Library
/// <param name="updateReason">The update reason.</param> /// <param name="updateReason">The update reason.</param>
/// <param name="cancellationToken">The cancellation token.</param> /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
public async Task UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken) public void UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken)
{ {
var locationType = item.LocationType; var locationType = item.LocationType;
if (locationType != LocationType.Remote && locationType != LocationType.Virtual) if (locationType != LocationType.Remote && locationType != LocationType.Virtual)
{ {
await _providerManagerFactory().SaveMetadata(item, updateReason).ConfigureAwait(false); _providerManagerFactory().SaveMetadata(item, updateReason);
} }
item.DateLastSaved = DateTime.UtcNow; item.DateLastSaved = DateTime.UtcNow;
@ -2053,7 +2059,7 @@ namespace Emby.Server.Implementations.Library
return GetNamedView(user, name, null, viewType, sortName, cancellationToken); return GetNamedView(user, name, null, viewType, sortName, cancellationToken);
} }
public async Task<UserView> GetNamedView(string name, public UserView GetNamedView(string name,
string viewType, string viewType,
string sortName, string sortName,
CancellationToken cancellationToken) CancellationToken cancellationToken)
@ -2100,7 +2106,7 @@ namespace Emby.Server.Implementations.Library
if (refresh) if (refresh)
{ {
await item.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None).ConfigureAwait(false); item.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None);
_providerManagerFactory().QueueRefresh(item.Id, new MetadataRefreshOptions(_fileSystem) _providerManagerFactory().QueueRefresh(item.Id, new MetadataRefreshOptions(_fileSystem)
{ {
// Not sure why this is necessary but need to figure it out // Not sure why this is necessary but need to figure it out
@ -2241,7 +2247,7 @@ namespace Emby.Server.Implementations.Library
return item; return item;
} }
public async Task<UserView> GetNamedView(string name, public UserView GetNamedView(string name,
string parentId, string parentId,
string viewType, string viewType,
string sortName, string sortName,
@ -2294,7 +2300,7 @@ namespace Emby.Server.Implementations.Library
if (!string.Equals(viewType, item.ViewType, StringComparison.OrdinalIgnoreCase)) if (!string.Equals(viewType, item.ViewType, StringComparison.OrdinalIgnoreCase))
{ {
item.ViewType = viewType; item.ViewType = viewType;
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false); item.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken);
} }
var refresh = isNew || DateTime.UtcNow - item.DateLastRefreshed >= _viewRefreshInterval; var refresh = isNew || DateTime.UtcNow - item.DateLastRefreshed >= _viewRefreshInterval;
@ -2822,7 +2828,7 @@ namespace Emby.Server.Implementations.Library
await _providerManagerFactory().SaveImage(item, url, image.Type, imageIndex, CancellationToken.None).ConfigureAwait(false); 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); return item.GetImageInfo(image.Type, imageIndex);
} }
@ -2838,7 +2844,7 @@ namespace Emby.Server.Implementations.Library
// Remove this image to prevent it from retrying over and over // Remove this image to prevent it from retrying over and over
item.RemoveImage(image); item.RemoveImage(image);
await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false); item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
throw new InvalidOperationException(); throw new InvalidOperationException();
} }

View File

@ -54,7 +54,7 @@ namespace Emby.Server.Implementations.Library
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
await AssignTrailers(item, trailers).ConfigureAwait(false); AssignTrailers(item, trailers);
numComplete++; numComplete++;
double percent = numComplete; double percent = numComplete;
@ -65,7 +65,7 @@ namespace Emby.Server.Implementations.Library
progress.Report(100); progress.Report(100);
} }
private async Task AssignTrailers(IHasTrailers item, IEnumerable<BaseItem> channelTrailers) private void AssignTrailers(IHasTrailers item, IEnumerable<BaseItem> channelTrailers)
{ {
if (item is Game) if (item is Game)
{ {
@ -98,8 +98,7 @@ namespace Emby.Server.Implementations.Library
item.RemoteTrailerIds = trailerIds; item.RemoteTrailerIds = trailerIds;
var baseItem = (BaseItem)item; var baseItem = (BaseItem)item;
await baseItem.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None) baseItem.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None);
.ConfigureAwait(false);
} }
} }
} }

View File

@ -96,23 +96,17 @@ namespace Emby.Server.Implementations.Library
return GetMediaStreamsForItem(list); return GetMediaStreamsForItem(list);
} }
private List<MediaStream> GetMediaStreamsForItem(IEnumerable<MediaStream> streams) private List<MediaStream> GetMediaStreamsForItem(List<MediaStream> streams)
{ {
var list = streams.ToList(); foreach (var stream in streams)
var subtitleStreams = list
.Where(i => i.Type == MediaStreamType.Subtitle)
.ToList();
if (subtitleStreams.Count > 0)
{ {
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<IEnumerable<MediaSourceInfo>> GetPlayackMediaSources(string id, string userId, bool enablePathSubstitution, string[] supportedLiveMediaTypes, CancellationToken cancellationToken) public async Task<IEnumerable<MediaSourceInfo>> GetPlayackMediaSources(string id, string userId, bool enablePathSubstitution, string[] supportedLiveMediaTypes, CancellationToken cancellationToken)

View File

@ -12,7 +12,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Books
/// </summary> /// </summary>
public class BookResolver : MediaBrowser.Controller.Resolvers.ItemResolver<Book> public class BookResolver : MediaBrowser.Controller.Resolvers.ItemResolver<Book>
{ {
private readonly string[] _validExtensions = {".pdf", ".epub", ".mobi", ".cbr", ".cbz"}; private readonly string[] _validExtensions = { ".pdf", ".epub", ".mobi", ".cbr", ".cbz", ".azw3" };
/// <summary> /// <summary>
/// ///
@ -26,7 +26,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Books
// Only process items that are in a collection folder containing books // Only process items that are in a collection folder containing books
if (!string.Equals(collectionType, CollectionType.Books, StringComparison.OrdinalIgnoreCase)) if (!string.Equals(collectionType, CollectionType.Books, StringComparison.OrdinalIgnoreCase))
return null; return null;
if (args.IsDirectory) if (args.IsDirectory)
{ {
return GetBook(args); return GetBook(args);
@ -69,9 +69,9 @@ namespace Emby.Server.Implementations.Library.Resolvers.Books
return null; return null;
return new Book return new Book
{ {
Path = bookFiles[0].FullName Path = bookFiles[0].FullName
}; };
} }
} }
} }

View File

@ -11,7 +11,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.IO; using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO; using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
@ -69,13 +69,13 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
if (string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase)) if (string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase))
{ {
return ResolveVideos<MusicVideo>(parent, files, directoryService, true, collectionType); return ResolveVideos<MusicVideo>(parent, files, directoryService, true, collectionType, false);
} }
if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase) || if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase) ||
string.Equals(collectionType, CollectionType.Photos, StringComparison.OrdinalIgnoreCase)) string.Equals(collectionType, CollectionType.Photos, StringComparison.OrdinalIgnoreCase))
{ {
return ResolveVideos<Video>(parent, files, directoryService, false, collectionType); return ResolveVideos<Video>(parent, files, directoryService, false, collectionType, false);
} }
if (string.IsNullOrWhiteSpace(collectionType)) if (string.IsNullOrWhiteSpace(collectionType))
@ -83,7 +83,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
// Owned items should just use the plain video type // Owned items should just use the plain video type
if (parent == null) if (parent == null)
{ {
return ResolveVideos<Video>(parent, files, directoryService, false, collectionType); return ResolveVideos<Video>(parent, files, directoryService, false, collectionType, false);
} }
if (parent is Series || parent.GetParents().OfType<Series>().Any()) if (parent is Series || parent.GetParents().OfType<Series>().Any())
@ -91,18 +91,18 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
return null; return null;
} }
return ResolveVideos<Movie>(parent, files, directoryService, false, collectionType); return ResolveVideos<Movie>(parent, files, directoryService, false, collectionType, true);
} }
if (string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase)) if (string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase))
{ {
return ResolveVideos<Movie>(parent, files, directoryService, true, collectionType); return ResolveVideos<Movie>(parent, files, directoryService, true, collectionType, true);
} }
return null; return null;
} }
private MultiItemResolverResult ResolveVideos<T>(Folder parent, IEnumerable<FileSystemMetadata> fileSystemEntries, IDirectoryService directoryService, bool suppportMultiEditions, string collectionType) private MultiItemResolverResult ResolveVideos<T>(Folder parent, IEnumerable<FileSystemMetadata> fileSystemEntries, IDirectoryService directoryService, bool suppportMultiEditions, string collectionType, bool parseName)
where T : Video, new() where T : Video, new()
{ {
var files = new List<FileSystemMetadata>(); var files = new List<FileSystemMetadata>();
@ -147,7 +147,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
Items = videos Items = videos
}; };
var isInMixedFolder = resolverResult.Count > 1; var isInMixedFolder = resolverResult.Count > 1 || (parent != null && parent.IsTopParent);
foreach (var video in resolverResult) foreach (var video in resolverResult)
{ {
@ -158,7 +158,9 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
Path = video.Files[0].Path, Path = video.Files[0].Path,
IsInMixedFolder = isInMixedFolder, IsInMixedFolder = isInMixedFolder,
ProductionYear = video.Year, ProductionYear = video.Year,
Name = video.Name, Name = parseName ?
video.Name :
Path.GetFileName(video.Files[0].Path),
AdditionalParts = video.Files.Skip(1).Select(i => i.Path).ToArray(), AdditionalParts = video.Files.Skip(1).Select(i => i.Path).ToArray(),
LocalAlternateVersions = video.AlternateVersions.Select(i => i.Path).ToArray() LocalAlternateVersions = video.AlternateVersions.Select(i => i.Path).ToArray()
}; };
@ -214,12 +216,12 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
if (string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase)) if (string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase))
{ {
return FindMovie<MusicVideo>(args.Path, args.Parent, files, args.DirectoryService, collectionType, true); return FindMovie<MusicVideo>(args, args.Path, args.Parent, files, args.DirectoryService, collectionType, false);
} }
if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase)) if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase))
{ {
return FindMovie<Video>(args.Path, args.Parent, files, args.DirectoryService, collectionType, false); return FindMovie<Video>(args, args.Path, args.Parent, files, args.DirectoryService, collectionType, false);
} }
if (string.IsNullOrEmpty(collectionType)) if (string.IsNullOrEmpty(collectionType))
@ -237,13 +239,13 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
} }
{ {
return FindMovie<Movie>(args.Path, args.Parent, files, args.DirectoryService, collectionType, true); return FindMovie<Movie>(args, args.Path, args.Parent, files, args.DirectoryService, collectionType, true);
} }
} }
if (string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase)) if (string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase))
{ {
return FindMovie<Movie>(args.Path, args.Parent, files, args.DirectoryService, collectionType, true); return FindMovie<Movie>(args, args.Path, args.Parent, files, args.DirectoryService, collectionType, true);
} }
return null; return null;
@ -359,11 +361,15 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
/// </summary> /// </summary>
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
/// <returns>Movie.</returns> /// <returns>Movie.</returns>
private T FindMovie<T>(string path, Folder parent, List<FileSystemMetadata> fileSystemEntries, IDirectoryService directoryService, string collectionType, bool allowFilesAsFolders) private T FindMovie<T>(ItemResolveArgs args, string path, Folder parent, List<FileSystemMetadata> fileSystemEntries, IDirectoryService directoryService, string collectionType, bool parseName)
where T : Video, new() where T : Video, new()
{ {
var multiDiscFolders = new List<FileSystemMetadata>(); var multiDiscFolders = new List<FileSystemMetadata>();
var libraryOptions = args.GetLibraryOptions();
var supportPhotos = string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase) && libraryOptions.EnablePhotos;
var photos = new List<FileSystemMetadata>();
// Search for a folder rip // Search for a folder rip
foreach (var child in fileSystemEntries) foreach (var child in fileSystemEntries)
{ {
@ -404,30 +410,37 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
Set3DFormat(movie); Set3DFormat(movie);
return movie; return movie;
} }
else if (supportPhotos && !child.IsHidden && PhotoResolver.IsImageFile(child.FullName, _imageProcessor))
{
photos.Add(child);
}
} }
if (allowFilesAsFolders) // TODO: Allow GetMultiDiscMovie in here
var supportsMultiVersion = !string.Equals(collectionType, CollectionType.HomeVideos) &&
!string.Equals(collectionType, CollectionType.Photos) &&
!string.Equals(collectionType, CollectionType.MusicVideos);
var result = ResolveVideos<T>(parent, fileSystemEntries, directoryService, supportsMultiVersion, collectionType, parseName) ??
new MultiItemResolverResult();
if (result.Items.Count == 1)
{ {
// TODO: Allow GetMultiDiscMovie in here var videoPath = result.Items[0].Path;
var supportsMultiVersion = !string.Equals(collectionType, CollectionType.HomeVideos) && var hasPhotos = photos.Any(i => !PhotoResolver.IsOwnedByResolvedMedia(LibraryManager, libraryOptions, videoPath, i.Name));
!string.Equals(collectionType, CollectionType.Photos) &&
!string.Equals(collectionType, CollectionType.MusicVideos);
var result = ResolveVideos<T>(parent, fileSystemEntries, directoryService, supportsMultiVersion, collectionType) ?? if (!hasPhotos)
new MultiItemResolverResult();
if (result.Items.Count == 1)
{ {
var movie = (T)result.Items[0]; var movie = (T)result.Items[0];
movie.IsInMixedFolder = false; movie.IsInMixedFolder = false;
movie.Name = Path.GetFileName(movie.ContainingFolderPath); movie.Name = Path.GetFileName(movie.ContainingFolderPath);
return movie; return movie;
} }
}
if (result.Items.Count == 0 && multiDiscFolders.Count > 0) if (result.Items.Count == 0 && multiDiscFolders.Count > 0)
{ {
return GetMultiDiscMovie<T>(multiDiscFolders, directoryService); return GetMultiDiscMovie<T>(multiDiscFolders, directoryService);
}
} }
return null; return null;
@ -542,8 +555,11 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
return !validCollectionTypes.Contains(collectionType, StringComparer.OrdinalIgnoreCase); return !validCollectionTypes.Contains(collectionType, StringComparer.OrdinalIgnoreCase);
} }
public MovieResolver(ILibraryManager libraryManager, IFileSystem fileSystem) : base(libraryManager, fileSystem) private IImageProcessor _imageProcessor;
public MovieResolver(ILibraryManager libraryManager, IFileSystem fileSystem, IImageProcessor imageProcessor) : base(libraryManager, fileSystem)
{ {
_imageProcessor = imageProcessor;
} }
} }
} }

View File

@ -12,9 +12,12 @@ namespace Emby.Server.Implementations.Library.Resolvers
public class PhotoAlbumResolver : FolderResolver<PhotoAlbum> public class PhotoAlbumResolver : FolderResolver<PhotoAlbum>
{ {
private readonly IImageProcessor _imageProcessor; private readonly IImageProcessor _imageProcessor;
public PhotoAlbumResolver(IImageProcessor imageProcessor) private ILibraryManager _libraryManager;
public PhotoAlbumResolver(IImageProcessor imageProcessor, ILibraryManager libraryManager)
{ {
_imageProcessor = imageProcessor; _imageProcessor = imageProcessor;
_libraryManager = libraryManager;
} }
/// <summary> /// <summary>
@ -25,14 +28,21 @@ namespace Emby.Server.Implementations.Library.Resolvers
protected override PhotoAlbum Resolve(ItemResolveArgs args) protected override PhotoAlbum Resolve(ItemResolveArgs args)
{ {
// Must be an image file within a photo collection // Must be an image file within a photo collection
if (args.IsDirectory && string.Equals(args.GetCollectionType(), CollectionType.Photos, StringComparison.OrdinalIgnoreCase)) if (args.IsDirectory)
{ {
if (HasPhotos(args)) // Must be an image file within a photo collection
var collectionType = args.GetCollectionType();
if (string.Equals(collectionType, CollectionType.Photos, StringComparison.OrdinalIgnoreCase) ||
(string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase) && args.GetLibraryOptions().EnablePhotos))
{ {
return new PhotoAlbum if (HasPhotos(args))
{ {
Path = args.Path return new PhotoAlbum
}; {
Path = args.Path
};
}
} }
} }
@ -41,7 +51,32 @@ namespace Emby.Server.Implementations.Library.Resolvers
private bool HasPhotos(ItemResolveArgs args) private bool HasPhotos(ItemResolveArgs args)
{ {
return args.FileSystemChildren.Any(i => (!i.IsDirectory) && PhotoResolver.IsImageFile(i.FullName, _imageProcessor)); var files = args.FileSystemChildren;
foreach (var file in files)
{
if (!file.IsDirectory && PhotoResolver.IsImageFile(file.FullName, _imageProcessor))
{
var libraryOptions = args.GetLibraryOptions();
var filename = file.Name;
var ownedByMedia = false;
foreach (var siblingFile in files)
{
if (PhotoResolver.IsOwnedByMedia(_libraryManager, libraryOptions, siblingFile.FullName, filename))
{
ownedByMedia = true;
break;
}
}
if (!ownedByMedia)
{
return true;
}
}
}
return false;
} }
public override ResolverPriority Priority public override ResolverPriority Priority

View File

@ -35,7 +35,6 @@ namespace Emby.Server.Implementations.Library.Resolvers
// Must be an image file within a photo collection // Must be an image file within a photo collection
var collectionType = args.GetCollectionType(); var collectionType = args.GetCollectionType();
if (string.Equals(collectionType, CollectionType.Photos, StringComparison.OrdinalIgnoreCase) || if (string.Equals(collectionType, CollectionType.Photos, StringComparison.OrdinalIgnoreCase) ||
(string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase) && args.GetLibraryOptions().EnablePhotos)) (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase) && args.GetLibraryOptions().EnablePhotos))
{ {
@ -44,9 +43,15 @@ namespace Emby.Server.Implementations.Library.Resolvers
var filename = Path.GetFileNameWithoutExtension(args.Path); var filename = Path.GetFileNameWithoutExtension(args.Path);
// Make sure the image doesn't belong to a video file // Make sure the image doesn't belong to a video file
if (_fileSystem.GetFilePaths(_fileSystem.GetDirectoryName(args.Path)).Any(i => IsOwnedByMedia(args.GetLibraryOptions(), i, filename))) var files = args.DirectoryService.GetFiles(_fileSystem.GetDirectoryName(args.Path));
var libraryOptions = args.GetLibraryOptions();
foreach (var file in files)
{ {
return null; if (IsOwnedByMedia(_libraryManager, libraryOptions, file.FullName, filename))
{
return null;
}
} }
return new Photo return new Photo
@ -60,14 +65,21 @@ namespace Emby.Server.Implementations.Library.Resolvers
return null; return null;
} }
private bool IsOwnedByMedia(LibraryOptions libraryOptions, string file, string imageFilename) internal static bool IsOwnedByMedia(ILibraryManager libraryManager, LibraryOptions libraryOptions, string file, string imageFilename)
{ {
if (_libraryManager.IsVideoFile(file, libraryOptions)) if (libraryManager.IsVideoFile(file, libraryOptions))
{ {
if (imageFilename.StartsWith(Path.GetFileNameWithoutExtension(file), StringComparison.OrdinalIgnoreCase)) return IsOwnedByResolvedMedia(libraryManager, libraryOptions, file, imageFilename);
{ }
return true;
} return false;
}
internal static bool IsOwnedByResolvedMedia(ILibraryManager libraryManager, LibraryOptions libraryOptions, string file, string imageFilename)
{
if (imageFilename.StartsWith(Path.GetFileNameWithoutExtension(file), StringComparison.OrdinalIgnoreCase))
{
return true;
} }
return false; return false;
@ -81,7 +93,8 @@ namespace Emby.Server.Implementations.Library.Resolvers
"fanart", "fanart",
"backdrop", "backdrop",
"poster", "poster",
"cover" "cover",
"logo"
}; };
internal static bool IsImageFile(string path, IImageProcessor imageProcessor) internal static bool IsImageFile(string path, IImageProcessor imageProcessor)

View File

@ -55,10 +55,10 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
if (season.IndexNumber.HasValue) if (season.IndexNumber.HasValue)
{ {
var seasonNumber = season.IndexNumber.Value; var seasonNumber = season.IndexNumber.Value;
season.Name = seasonNumber == 0 ? season.Name = seasonNumber == 0 ?
args.LibraryOptions.SeasonZeroDisplayName : args.LibraryOptions.SeasonZeroDisplayName :
string.Format(_localization.GetLocalizedString("NameSeasonNumber"), seasonNumber.ToString(UsCulture)); string.Format(_localization.GetLocalizedString("NameSeasonNumber"), seasonNumber.ToString(UsCulture), args.GetLibraryOptions().PreferredMetadataLanguage);
} }
return season; return season;

View File

@ -95,14 +95,18 @@ namespace Emby.Server.Implementations.Library
if (parents.Count > 0) if (parents.Count > 0)
{ {
list.Add(GetUserView(parents, viewType, string.Empty, user, query.PresetViews, cancellationToken)); var localizationKey = string.Equals(viewType, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase) ?
"TvShows" :
"Movies";
list.Add(GetUserView(parents, viewType, localizationKey, string.Empty, user, query.PresetViews, cancellationToken));
} }
} }
if (_config.Configuration.EnableFolderView) if (_config.Configuration.EnableFolderView)
{ {
var name = _localizationManager.GetLocalizedString("ViewType" + CollectionType.Folders); var name = _localizationManager.GetLocalizedString("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) if (query.IncludeExternalContent)
@ -117,7 +121,7 @@ namespace Emby.Server.Implementations.Library
if (_config.Configuration.EnableChannelView && channels.Length > 0) if (_config.Configuration.EnableChannelView && channels.Length > 0)
{ {
list.Add(await _channelManager.GetInternalChannelFolder(cancellationToken).ConfigureAwait(false)); list.Add(_channelManager.GetInternalChannelFolder(cancellationToken));
} }
else else
{ {
@ -126,7 +130,7 @@ namespace Emby.Server.Implementations.Library
if (_liveTvManager.GetEnabledUsers().Select(i => i.Id.ToString("N")).Contains(query.UserId)) 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,21 +162,21 @@ namespace Emby.Server.Implementations.Library
.ToArray(); .ToArray();
} }
public Task<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; var uniqueId = parentId + "subview" + type;
return _libraryManager.GetNamedView(name, parentId, type, sortName, uniqueId, cancellationToken); return _libraryManager.GetNamedView(name, parentId, type, sortName, uniqueId, cancellationToken);
} }
public Task<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<ICollectionFolder> parents, string viewType, string sortName, User user, string[] presetViews, CancellationToken cancellationToken) private Folder GetUserView(List<ICollectionFolder> 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))) if (parents.Count == 1 && parents.All(i => string.Equals(i.CollectionType, viewType, StringComparison.OrdinalIgnoreCase)))
{ {
@ -184,7 +188,7 @@ namespace Emby.Server.Implementations.Library
return GetUserView((Folder)parents[0], viewType, string.Empty, cancellationToken); 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); return _libraryManager.GetNamedView(user, name, viewType, sortName, cancellationToken);
} }

View File

@ -1222,7 +1222,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
_logger.Info("Closing live stream {0}", id); _logger.Info("Closing live stream {0}", id);
await stream.Close().ConfigureAwait(false); stream.Close();
_logger.Info("Live stream {0} closed successfully", id); _logger.Info("Live stream {0} closed successfully", id);
} }
} }
@ -1286,9 +1286,9 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
Id = timer.Id Id = timer.Id
}; };
if (_activeRecordings.TryAdd(timer.Id, activeRecordingInfo)) if (!_activeRecordings.ContainsKey(timer.Id))
{ {
await RecordStream(timer, recordingEndDate, activeRecordingInfo, activeRecordingInfo.CancellationTokenSource.Token).ConfigureAwait(false); await RecordStream(timer, recordingEndDate, activeRecordingInfo).ConfigureAwait(false);
} }
else else
{ {
@ -1397,8 +1397,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
return Path.Combine(recordPath, recordingFileName); return Path.Combine(recordPath, recordingFileName);
} }
private async Task RecordStream(TimerInfo timer, DateTime recordingEndDate, private async Task RecordStream(TimerInfo timer, DateTime recordingEndDate, ActiveRecordingInfo activeRecordingInfo)
ActiveRecordingInfo activeRecordingInfo, CancellationToken cancellationToken)
{ {
if (timer == null) if (timer == null)
{ {
@ -1420,19 +1419,18 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
if (programInfo != null) if (programInfo != null)
{ {
CopyProgramInfoToTimerInfo(programInfo, timer); CopyProgramInfoToTimerInfo(programInfo, timer);
//activeRecordingInfo.Program = programInfo;
} }
string seriesPath = null; string seriesPath = null;
var recordPath = GetRecordingPath(timer, out seriesPath); var recordPath = GetRecordingPath(timer, out seriesPath);
var recordingStatus = RecordingStatus.New; var recordingStatus = RecordingStatus.New;
var recorder = await GetRecorder().ConfigureAwait(false);
string liveStreamId = null; string liveStreamId = null;
try try
{ {
var recorder = await GetRecorder().ConfigureAwait(false);
var allMediaSources = await GetChannelStreamMediaSources(timer.ChannelId, CancellationToken.None).ConfigureAwait(false); var allMediaSources = await GetChannelStreamMediaSources(timer.ChannelId, CancellationToken.None).ConfigureAwait(false);
_logger.Info("Opening recording stream from tuner provider"); _logger.Info("Opening recording stream from tuner provider");
@ -1442,14 +1440,10 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var mediaStreamInfo = liveStreamInfo.Item2; var mediaStreamInfo = liveStreamInfo.Item2;
liveStreamId = mediaStreamInfo.Id; liveStreamId = mediaStreamInfo.Id;
// HDHR doesn't seem to release the tuner right away after first probing with ffmpeg
//await Task.Delay(3000, cancellationToken).ConfigureAwait(false);
recordPath = recorder.GetOutputPath(mediaStreamInfo, recordPath); recordPath = recorder.GetOutputPath(mediaStreamInfo, recordPath);
recordPath = EnsureFileUnique(recordPath, timer.Id); recordPath = EnsureFileUnique(recordPath, timer.Id);
_libraryMonitor.ReportFileSystemChangeBeginning(recordPath); _libraryMonitor.ReportFileSystemChangeBeginning(recordPath);
activeRecordingInfo.Path = recordPath;
var duration = recordingEndDate - DateTime.UtcNow; var duration = recordingEndDate - DateTime.UtcNow;
@ -1459,15 +1453,22 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
Action onStarted = async () => Action onStarted = async () =>
{ {
activeRecordingInfo.Path = recordPath;
_activeRecordings.TryAdd(timer.Id, activeRecordingInfo);
timer.Status = RecordingStatus.InProgress; timer.Status = RecordingStatus.InProgress;
_timerProvider.AddOrUpdate(timer, false); _timerProvider.AddOrUpdate(timer, false);
await SaveRecordingMetadata(timer, recordPath, seriesPath).ConfigureAwait(false); await SaveRecordingMetadata(timer, recordPath, seriesPath).ConfigureAwait(false);
CreateRecordingFolders();
TriggerRefresh(recordPath); TriggerRefresh(recordPath);
EnforceKeepUpTo(timer, seriesPath); EnforceKeepUpTo(timer, seriesPath);
}; };
await recorder.Record(liveStreamInfo.Item1 as IDirectStreamProvider, mediaStreamInfo, recordPath, duration, onStarted, cancellationToken).ConfigureAwait(false); await recorder.Record(liveStreamInfo.Item1 as IDirectStreamProvider, mediaStreamInfo, recordPath, duration, onStarted, activeRecordingInfo.CancellationTokenSource.Token).ConfigureAwait(false);
recordingStatus = RecordingStatus.Completed; recordingStatus = RecordingStatus.Completed;
_logger.Info("Recording completed: {0}", recordPath); _logger.Info("Recording completed: {0}", recordPath);
@ -1507,6 +1508,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
_logger.Info("Retrying recording in {0} seconds.", retryIntervalSeconds); _logger.Info("Retrying recording in {0} seconds.", retryIntervalSeconds);
timer.Status = RecordingStatus.New; timer.Status = RecordingStatus.New;
timer.PrePaddingSeconds = 0;
timer.StartDate = DateTime.UtcNow.AddSeconds(retryIntervalSeconds); timer.StartDate = DateTime.UtcNow.AddSeconds(retryIntervalSeconds);
timer.RetryCount++; timer.RetryCount++;
_timerProvider.AddOrUpdate(timer); _timerProvider.AddOrUpdate(timer);
@ -1526,13 +1528,13 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
private void TriggerRefresh(string path) private void TriggerRefresh(string path)
{ {
_logger.Debug("Triggering refresh on {0}", path); _logger.Info("Triggering refresh on {0}", path);
var item = GetAffectedBaseItem(_fileSystem.GetDirectoryName(path)); var item = GetAffectedBaseItem(_fileSystem.GetDirectoryName(path));
if (item != null) if (item != null)
{ {
_logger.Debug("Refreshing recording parent {0}", item.Path); _logger.Info("Refreshing recording parent {0}", item.Path);
_providerManager.QueueRefresh(item.Id, new MetadataRefreshOptions(_fileSystem) _providerManager.QueueRefresh(item.Id, new MetadataRefreshOptions(_fileSystem)
{ {

View File

@ -272,11 +272,6 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
private bool EncodeVideo(MediaSourceInfo mediaSource) private bool EncodeVideo(MediaSourceInfo mediaSource)
{ {
if (string.Equals(_liveTvOptions.RecordedVideoCodec, "copy", StringComparison.OrdinalIgnoreCase))
{
return false;
}
var mediaStreams = mediaSource.MediaStreams ?? new List<MediaStream>(); var mediaStreams = mediaSource.MediaStreams ?? new List<MediaStream>();
return !mediaStreams.Any(i => i.Type == MediaStreamType.Video && string.Equals(i.Codec, "h264", StringComparison.OrdinalIgnoreCase) && !i.IsInterlaced); return !mediaStreams.Any(i => i.Type == MediaStreamType.Video && string.Equals(i.Codec, "h264", StringComparison.OrdinalIgnoreCase) && !i.IsInterlaced);
} }

View File

@ -541,27 +541,30 @@ namespace Emby.Server.Implementations.LiveTv.Listings
try try
{ {
using (Stream responce = await Get(options, false, info).ConfigureAwait(false)) using (var httpResponse = await Get(options, false, info).ConfigureAwait(false))
{ {
var root = _jsonSerializer.DeserializeFromStream<List<ScheduleDirect.Headends>>(responce); using (Stream responce = httpResponse.Content)
if (root != null)
{ {
foreach (ScheduleDirect.Headends headend in root) var root = _jsonSerializer.DeserializeFromStream<List<ScheduleDirect.Headends>>(responce);
if (root != null)
{ {
foreach (ScheduleDirect.Lineup lineup in headend.lineups) foreach (ScheduleDirect.Headends headend in root)
{ {
lineups.Add(new NameIdPair foreach (ScheduleDirect.Lineup lineup in headend.lineups)
{ {
Name = string.IsNullOrWhiteSpace(lineup.name) ? lineup.lineup : lineup.name, lineups.Add(new NameIdPair
Id = lineup.uri.Substring(18) {
}); Name = string.IsNullOrWhiteSpace(lineup.name) ? lineup.lineup : lineup.name,
Id = lineup.uri.Substring(18)
});
}
} }
} }
} else
else {
{ _logger.Info("No lineups available");
_logger.Info("No lineups available"); }
} }
} }
} }
@ -647,6 +650,9 @@ namespace Emby.Server.Implementations.LiveTv.Listings
bool enableRetry, bool enableRetry,
ListingsProviderInfo providerInfo) ListingsProviderInfo providerInfo)
{ {
// Schedules direct requires that the client support compression and will return a 400 response without it
options.EnableHttpCompression = true;
try try
{ {
return await _httpClient.Post(options).ConfigureAwait(false); return await _httpClient.Post(options).ConfigureAwait(false);
@ -671,13 +677,16 @@ namespace Emby.Server.Implementations.LiveTv.Listings
return await Post(options, false, providerInfo).ConfigureAwait(false); return await Post(options, false, providerInfo).ConfigureAwait(false);
} }
private async Task<Stream> Get(HttpRequestOptions options, private async Task<HttpResponseInfo> Get(HttpRequestOptions options,
bool enableRetry, bool enableRetry,
ListingsProviderInfo providerInfo) ListingsProviderInfo providerInfo)
{ {
// Schedules direct requires that the client support compression and will return a 400 response without it
options.EnableHttpCompression = true;
try try
{ {
return await _httpClient.Get(options).ConfigureAwait(false); return await _httpClient.SendAsync(options, "GET").ConfigureAwait(false);
} }
catch (HttpException ex) catch (HttpException ex)
{ {
@ -797,11 +806,14 @@ namespace Emby.Server.Implementations.LiveTv.Listings
try try
{ {
using (var response = await Get(options, false, null).ConfigureAwait(false)) using (var httpResponse = await Get(options, false, null).ConfigureAwait(false))
{ {
var root = _jsonSerializer.DeserializeFromStream<ScheduleDirect.Lineups>(response); using (var response = httpResponse.Content)
{
var root = _jsonSerializer.DeserializeFromStream<ScheduleDirect.Lineups>(response);
return root.lineups.Any(i => string.Equals(info.ListingsId, i.lineup, StringComparison.OrdinalIgnoreCase)); return root.lineups.Any(i => string.Equals(info.ListingsId, i.lineup, StringComparison.OrdinalIgnoreCase));
}
} }
} }
catch (HttpException ex) catch (HttpException ex)
@ -879,53 +891,56 @@ namespace Emby.Server.Implementations.LiveTv.Listings
var list = new List<ChannelInfo>(); var list = new List<ChannelInfo>();
using (var response = await Get(httpOptions, true, info).ConfigureAwait(false)) using (var httpResponse = await Get(httpOptions, true, info).ConfigureAwait(false))
{ {
var root = _jsonSerializer.DeserializeFromStream<ScheduleDirect.Channel>(response); using (var response = httpResponse.Content)
_logger.Info("Found " + root.map.Count + " channels on the lineup on ScheduleDirect");
_logger.Info("Mapping Stations to Channel");
var allStations = root.stations ?? new List<ScheduleDirect.Station>();
foreach (ScheduleDirect.Map map in root.map)
{ {
var channelNumber = GetChannelNumber(map); var root = _jsonSerializer.DeserializeFromStream<ScheduleDirect.Channel>(response);
_logger.Info("Found " + root.map.Count + " channels on the lineup on ScheduleDirect");
_logger.Info("Mapping Stations to Channel");
var station = allStations.FirstOrDefault(item => string.Equals(item.stationID, map.stationID, StringComparison.OrdinalIgnoreCase)); var allStations = root.stations ?? new List<ScheduleDirect.Station>();
if (station == null)
foreach (ScheduleDirect.Map map in root.map)
{ {
station = new ScheduleDirect.Station var channelNumber = GetChannelNumber(map);
var station = allStations.FirstOrDefault(item => string.Equals(item.stationID, map.stationID, StringComparison.OrdinalIgnoreCase));
if (station == null)
{ {
stationID = map.stationID station = new ScheduleDirect.Station
{
stationID = map.stationID
};
}
var name = channelNumber;
var channelInfo = new ChannelInfo
{
Number = channelNumber,
Name = name
}; };
}
var name = channelNumber; if (station != null)
var channelInfo = new ChannelInfo
{
Number = channelNumber,
Name = name
};
if (station != null)
{
if (!string.IsNullOrWhiteSpace(station.name))
{ {
channelInfo.Name = station.name; if (!string.IsNullOrWhiteSpace(station.name))
{
channelInfo.Name = station.name;
}
channelInfo.Id = station.stationID;
channelInfo.CallSign = station.callsign;
if (station.logo != null)
{
channelInfo.ImageUrl = station.logo.URL;
channelInfo.HasImage = true;
}
} }
channelInfo.Id = station.stationID; list.Add(channelInfo);
channelInfo.CallSign = station.callsign;
if (station.logo != null)
{
channelInfo.ImageUrl = station.logo.URL;
channelInfo.HasImage = true;
}
} }
list.Add(channelInfo);
} }
} }

View File

@ -110,7 +110,15 @@ namespace Emby.Server.Implementations.LiveTv.Listings
var tempFolder = Path.Combine(_config.ApplicationPaths.TempDirectory, Guid.NewGuid().ToString()); var tempFolder = Path.Combine(_config.ApplicationPaths.TempDirectory, Guid.NewGuid().ToString());
_fileSystem.CreateDirectory(tempFolder); _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) return _fileSystem.GetFiles(tempFolder, true)
.Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase)) .Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase))

View File

@ -89,6 +89,11 @@ namespace Emby.Server.Implementations.LiveTv
if (channel != null) if (channel != null)
{ {
dto.ChannelName = channel.Name; dto.ChannelName = channel.Name;
if (channel.HasImage(ImageType.Primary))
{
dto.ChannelPrimaryImageTag = GetImageTag(channel);
}
} }
return dto; return dto;

View File

@ -173,11 +173,11 @@ namespace Emby.Server.Implementations.LiveTv
} }
} }
public async Task<QueryResult<BaseItem>> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken) public QueryResult<BaseItem> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken)
{ {
var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); 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) var internalQuery = new InternalItemsQuery(user)
{ {
@ -527,18 +527,18 @@ namespace Emby.Server.Implementations.LiveTv
item.ChannelType = channelInfo.ChannelType; item.ChannelType = channelInfo.ChannelType;
item.ServiceName = serviceName; item.ServiceName = serviceName;
if (!string.Equals(channelInfo.Number, item.Number, StringComparison.Ordinal))
{
forceUpdate = true;
}
item.Number = channelInfo.Number; item.Number = channelInfo.Number;
//if (!string.Equals(item.ProviderImageUrl, channelInfo.ImageUrl, StringComparison.OrdinalIgnoreCase)) if (!string.Equals(channelInfo.Name, item.Name, StringComparison.Ordinal))
//{ {
// isNew = true; forceUpdate = true;
// replaceImages.Add(ImageType.Primary); }
//} item.Name = channelInfo.Name;
//if (!string.Equals(item.ProviderImagePath, channelInfo.ImagePath, StringComparison.OrdinalIgnoreCase))
//{
// isNew = true;
// replaceImages.Add(ImageType.Primary);
//}
if (!item.HasImage(ImageType.Primary)) if (!item.HasImage(ImageType.Primary))
{ {
@ -554,18 +554,13 @@ namespace Emby.Server.Implementations.LiveTv
} }
} }
if (string.IsNullOrEmpty(item.Name))
{
item.Name = channelInfo.Name;
}
if (isNew) if (isNew)
{ {
_libraryManager.CreateItem(item, cancellationToken); _libraryManager.CreateItem(item, cancellationToken);
} }
else if (forceUpdate) else if (forceUpdate)
{ {
await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken);
} }
await item.RefreshMetadata(new MetadataRefreshOptions(_fileSystem) await item.RefreshMetadata(new MetadataRefreshOptions(_fileSystem)
@ -760,7 +755,7 @@ namespace Emby.Server.Implementations.LiveTv
return new Tuple<LiveTvProgram, bool, bool>(item, isNew, isUpdated); return new Tuple<LiveTvProgram, bool, bool>(item, isNew, isUpdated);
} }
private async Task<Guid> CreateRecordingRecord(RecordingInfo info, string serviceName, Guid parentFolderId, CancellationToken cancellationToken) private Guid CreateRecordingRecord(RecordingInfo info, string serviceName, Guid parentFolderId, CancellationToken cancellationToken)
{ {
var isNew = false; var isNew = false;
@ -892,7 +887,7 @@ namespace Emby.Server.Implementations.LiveTv
else if (dataChanged || info.DateLastUpdated > recording.DateLastSaved || statusChanged) else if (dataChanged || info.DateLastUpdated > recording.DateLastSaved || statusChanged)
{ {
metadataRefreshMode = MetadataRefreshMode.FullRefresh; metadataRefreshMode = MetadataRefreshMode.FullRefresh;
await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken);
} }
if (info.Status != RecordingStatus.InProgress) if (info.Status != RecordingStatus.InProgress)
@ -928,7 +923,7 @@ namespace Emby.Server.Implementations.LiveTv
{ {
var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); 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) if (query.OrderBy.Length == 0)
{ {
@ -1007,11 +1002,11 @@ namespace Emby.Server.Implementations.LiveTv
return result; return result;
} }
public async Task<QueryResult<BaseItem>> GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken) public QueryResult<BaseItem> GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken)
{ {
var user = _userManager.GetUserById(query.UserId); var user = _userManager.GetUserById(query.UserId);
var topFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false); var topFolder = GetInternalLiveTvFolder(cancellationToken);
var internalQuery = new InternalItemsQuery(user) var internalQuery = new InternalItemsQuery(user)
{ {
@ -1072,11 +1067,11 @@ namespace Emby.Server.Implementations.LiveTv
return result; return result;
} }
public async Task<QueryResult<BaseItemDto>> GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken) public QueryResult<BaseItemDto> GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken)
{ {
RemoveFields(options); RemoveFields(options);
var internalResult = await GetRecommendedProgramsInternal(query, options, cancellationToken).ConfigureAwait(false); var internalResult = GetRecommendedProgramsInternal(query, options, cancellationToken);
var user = _userManager.GetUserById(query.UserId); var user = _userManager.GetUserById(query.UserId);
@ -1302,7 +1297,7 @@ namespace Emby.Server.Implementations.LiveTv
var list = new List<LiveTvChannel>(); var list = new List<LiveTvChannel>();
var numComplete = 0; var numComplete = 0;
var parentFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false); var parentFolder = GetInternalLiveTvFolder(cancellationToken);
var parentFolderId = parentFolder.Id; var parentFolderId = parentFolder.Id;
foreach (var channelInfo in allChannelsList) foreach (var channelInfo in allChannelsList)
@ -1425,7 +1420,7 @@ namespace Emby.Server.Implementations.LiveTv
// TODO: Do this in bulk // TODO: Do this in bulk
foreach (var program in updatedPrograms) foreach (var program in updatedPrograms)
{ {
await _libraryManager.UpdateItem(program, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); _libraryManager.UpdateItem(program, ItemUpdateType.MetadataImport, cancellationToken);
} }
currentChannel.IsMovie = isMovie; currentChannel.IsMovie = isMovie;
@ -1434,7 +1429,7 @@ namespace Emby.Server.Implementations.LiveTv
currentChannel.IsKids = isKids; currentChannel.IsKids = isKids;
currentChannel.IsSeries = iSSeries; currentChannel.IsSeries = iSSeries;
await currentChannel.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); currentChannel.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken);
} }
catch (OperationCanceledException) catch (OperationCanceledException)
{ {
@ -1549,9 +1544,8 @@ namespace Emby.Server.Implementations.LiveTv
var results = await Task.WhenAll(tasks).ConfigureAwait(false); 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 = results.SelectMany(i => i.ToList()).Select(i => CreateRecordingRecord(i.Item1, i.Item2.Name, internalLiveTvFolderId, cancellationToken))
.ToArray();
var idList = await Task.WhenAll(recordingTasks).ConfigureAwait(false);
await CleanDatabaseInternal(idList, new[] { typeof(LiveTvVideoRecording).Name, typeof(LiveTvAudioRecording).Name }, new SimpleProgress<double>(), cancellationToken).ConfigureAwait(false); await CleanDatabaseInternal(idList, new[] { typeof(LiveTvVideoRecording).Name, typeof(LiveTvAudioRecording).Name }, new SimpleProgress<double>(), cancellationToken).ConfigureAwait(false);
@ -1726,7 +1720,7 @@ namespace Emby.Server.Implementations.LiveTv
return new QueryResult<BaseItem>(); return new QueryResult<BaseItem>();
} }
var folder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false); var folder = GetInternalLiveTvFolder(cancellationToken);
// TODO: Figure out how to merge emby recordings + service recordings // TODO: Figure out how to merge emby recordings + service recordings
if (_services.Length == 1) if (_services.Length == 1)
@ -2143,18 +2137,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) public async Task DeleteRecording(string recordingId)
{ {
var recording = await GetInternalRecording(recordingId, CancellationToken.None).ConfigureAwait(false); var recording = await GetInternalRecording(recordingId, CancellationToken.None).ConfigureAwait(false);
@ -2171,13 +2153,17 @@ namespace Emby.Server.Implementations.LiveTv
{ {
var service = GetService(recording.ServiceName); var service = GetService(recording.ServiceName);
try if (service != null)
{
await service.DeleteRecordingAsync(GetItemExternalId(recording), CancellationToken.None).ConfigureAwait(false);
}
catch (ResourceNotFoundException)
{ {
// 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; _lastRecordingRefreshTime = DateTime.MinValue;
@ -2387,7 +2373,7 @@ namespace Emby.Server.Implementations.LiveTv
MinEndDate = now, MinEndDate = now,
Limit = channelIds.Length, Limit = channelIds.Length,
OrderBy = new[] { new Tuple<string, SortOrder>(ItemSortBy.StartDate, SortOrder.Ascending) }, OrderBy = new[] { new Tuple<string, SortOrder>(ItemSortBy.StartDate, SortOrder.Ascending) },
TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Result.Id.ToString("N") }, TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Id.ToString("N") },
DtoOptions = options DtoOptions = options
}) : new List<BaseItem>(); }) : new List<BaseItem>();
@ -2910,11 +2896,11 @@ namespace Emby.Server.Implementations.LiveTv
return service.ResetTuner(parts[1], cancellationToken); return service.ResetTuner(parts[1], cancellationToken);
} }
public async Task<BaseItemDto> GetLiveTvFolder(string userId, CancellationToken cancellationToken) public BaseItemDto GetLiveTvFolder(string userId, CancellationToken cancellationToken)
{ {
var user = string.IsNullOrEmpty(userId) ? null : _userManager.GetUserById(userId); 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); return _dtoService.GetBaseItemDto(folder, new DtoOptions(), user);
} }
@ -2930,10 +2916,10 @@ namespace Emby.Server.Implementations.LiveTv
options.Fields = fields.ToArray(fields.Count); options.Fields = fields.ToArray(fields.Count);
} }
public async Task<Folder> GetInternalLiveTvFolder(CancellationToken cancellationToken) public Folder GetInternalLiveTvFolder(CancellationToken cancellationToken)
{ {
var name = _localization.GetLocalizedString("ViewTypeLiveTV"); var name = _localization.GetLocalizedString("HeaderLiveTV");
return await _libraryManager.GetNamedView(name, CollectionType.LiveTv, name, cancellationToken).ConfigureAwait(false); return _libraryManager.GetNamedView(name, CollectionType.LiveTv, name, cancellationToken);
} }
public async Task<TunerHostInfo> SaveTunerHost(TunerHostInfo info, bool dataSourceChanged = true) public async Task<TunerHostInfo> SaveTunerHost(TunerHostInfo info, bool dataSourceChanged = true)

View File

@ -86,16 +86,19 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
CancellationToken = cancellationToken, CancellationToken = cancellationToken,
BufferContent = false BufferContent = false
}; };
using (var stream = await _httpClient.Get(options).ConfigureAwait(false)) using (var response = await _httpClient.SendAsync(options, "GET").ConfigureAwait(false))
{ {
var lineup = JsonSerializer.DeserializeFromStream<List<Channels>>(stream) ?? new List<Channels>(); using (var stream = response.Content)
if (info.ImportFavoritesOnly)
{ {
lineup = lineup.Where(i => i.Favorite).ToList(); var lineup = JsonSerializer.DeserializeFromStream<List<Channels>>(stream) ?? new List<Channels>();
}
return lineup.Where(i => !i.DRM).ToList(); if (info.ImportFavoritesOnly)
{
lineup = lineup.Where(i => i.Favorite).ToList();
}
return lineup.Where(i => !i.DRM).ToList();
}
} }
} }
@ -143,26 +146,29 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
try try
{ {
using (var stream = await _httpClient.Get(new HttpRequestOptions() using (var response = await _httpClient.SendAsync(new HttpRequestOptions()
{ {
Url = string.Format("{0}/discover.json", GetApiUrl(info, false)), Url = string.Format("{0}/discover.json", GetApiUrl(info, false)),
CancellationToken = cancellationToken, CancellationToken = cancellationToken,
TimeoutMs = Convert.ToInt32(TimeSpan.FromSeconds(5).TotalMilliseconds), TimeoutMs = Convert.ToInt32(TimeSpan.FromSeconds(5).TotalMilliseconds),
BufferContent = false BufferContent = false
}).ConfigureAwait(false)) }, "GET").ConfigureAwait(false))
{ {
var response = JsonSerializer.DeserializeFromStream<DiscoverResponse>(stream); using (var stream = response.Content)
if (!string.IsNullOrWhiteSpace(info.Id))
{ {
lock (_modelCache) var discoverResponse = JsonSerializer.DeserializeFromStream<DiscoverResponse>(stream);
{
_modelCache[info.Id] = response;
}
}
return response; if (!string.IsNullOrWhiteSpace(info.Id))
{
lock (_modelCache)
{
_modelCache[info.Id] = discoverResponse;
}
}
return discoverResponse;
}
} }
} }
catch (HttpException ex) catch (HttpException ex)
@ -197,7 +203,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
var uri = new Uri(GetApiUrl(info, false)); var uri = new Uri(GetApiUrl(info, false));
using (var manager = new HdHomerunManager(_socketFactory)) using (var manager = new HdHomerunManager(_socketFactory, Logger))
{ {
// Legacy HdHomeruns are IPv4 only // Legacy HdHomeruns are IPv4 only
var ipInfo = _networkManager.ParseIpAddress(uri.Host); var ipInfo = _networkManager.ParseIpAddress(uri.Host);
@ -299,6 +305,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
int? videoBitrate = null; int? videoBitrate = null;
int? audioBitrate = null; int? audioBitrate = null;
var isHd = channelInfo.IsHD ?? true;
if (string.Equals(profile, "mobile", StringComparison.OrdinalIgnoreCase)) if (string.Equals(profile, "mobile", StringComparison.OrdinalIgnoreCase))
{ {
width = 1280; width = 1280;
@ -350,7 +358,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
else 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 // 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; width = 1920;
height = 1080; height = 1080;
@ -367,9 +375,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
if (!videoBitrate.HasValue) if (!videoBitrate.HasValue)
{ {
videoBitrate = (channelInfo.IsHD ?? true) ? 15000000 : 2000000; videoBitrate = isHd ? 15000000 : 2000000;
} }
audioBitrate = (channelInfo.IsHD ?? true) ? 448000 : 192000; audioBitrate = isHd ? 448000 : 192000;
} }
// normalize // normalize

View File

@ -22,9 +22,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
private readonly IHttpClient _httpClient; private readonly IHttpClient _httpClient;
private readonly IServerApplicationHost _appHost; private readonly IServerApplicationHost _appHost;
private readonly CancellationTokenSource _liveStreamCancellationTokenSource = new CancellationTokenSource();
private readonly TaskCompletionSource<bool> _liveStreamTaskCompletionSource = new TaskCompletionSource<bool>();
public HdHomerunHttpStream(MediaSourceInfo mediaSource, string originalStreamId, IFileSystem fileSystem, IHttpClient httpClient, ILogger logger, IServerApplicationPaths appPaths, IServerApplicationHost appHost, IEnvironmentInfo environment) public HdHomerunHttpStream(MediaSourceInfo mediaSource, string originalStreamId, IFileSystem fileSystem, IHttpClient httpClient, ILogger logger, IServerApplicationPaths appPaths, IServerApplicationHost appHost, IEnvironmentInfo environment)
: base(mediaSource, environment, fileSystem, logger, appPaths) : base(mediaSource, environment, fileSystem, logger, appPaths)
{ {
@ -33,19 +30,34 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
OriginalStreamId = originalStreamId; OriginalStreamId = originalStreamId;
} }
protected override Task OpenInternal(CancellationToken openCancellationToken) public override async Task Open(CancellationToken openCancellationToken)
{ {
_liveStreamCancellationTokenSource.Token.ThrowIfCancellationRequested(); LiveStreamCancellationTokenSource.Token.ThrowIfCancellationRequested();
var mediaSource = OriginalMediaSource; var mediaSource = OriginalMediaSource;
var url = mediaSource.Path; var url = mediaSource.Path;
FileSystem.CreateDirectory(FileSystem.GetDirectoryName(TempFilePath));
Logger.Info("Opening HDHR Live stream from {0}", url); Logger.Info("Opening HDHR Live stream from {0}", url);
var taskCompletionSource = new TaskCompletionSource<bool>(); var response = await _httpClient.SendAsync(new HttpRequestOptions
{
Url = url,
CancellationToken = CancellationToken.None,
BufferContent = false,
StartStreaming(url, taskCompletionSource, _liveStreamCancellationTokenSource.Token); // Increase a little bit
TimeoutMs = 30000,
EnableHttpCompression = false
}, "GET").ConfigureAwait(false);
Logger.Info("Opened HDHR stream from {0}", url);
StartStreaming(response, LiveStreamCancellationTokenSource.Token);
//OpenedMediaSource.Protocol = MediaProtocol.File; //OpenedMediaSource.Protocol = MediaProtocol.File;
//OpenedMediaSource.Path = tempFile; //OpenedMediaSource.Path = tempFile;
@ -59,77 +71,42 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
//OpenedMediaSource.SupportsDirectPlay = false; //OpenedMediaSource.SupportsDirectPlay = false;
//OpenedMediaSource.SupportsDirectStream = true; //OpenedMediaSource.SupportsDirectStream = true;
//OpenedMediaSource.SupportsTranscoding = true; //OpenedMediaSource.SupportsTranscoding = true;
return taskCompletionSource.Task;
//await Task.Delay(5000).ConfigureAwait(false);
} }
public override Task Close() public override void Close()
{ {
Logger.Info("Closing HDHR live stream"); Logger.Info("Closing HDHR live stream");
_liveStreamCancellationTokenSource.Cancel(); LiveStreamCancellationTokenSource.Cancel();
return _liveStreamTaskCompletionSource.Task;
} }
private Task StartStreaming(string url, TaskCompletionSource<bool> openTaskCompletionSource, CancellationToken cancellationToken) private Task StartStreaming(HttpResponseInfo response, CancellationToken cancellationToken)
{ {
return Task.Run(async () => return Task.Run(async () =>
{ {
var isFirstAttempt = true; try
while (!cancellationToken.IsCancellationRequested)
{ {
try using (response)
{ {
using (var response = await _httpClient.SendAsync(new HttpRequestOptions using (var stream = response.Content)
{ {
Url = url, Logger.Info("Beginning HdHomerunHttpStream stream to file");
CancellationToken = cancellationToken,
BufferContent = false,
// Increase a little bit FileSystem.CreateDirectory(FileSystem.GetDirectoryName(TempFilePath));
TimeoutMs = 30000, using (var fileStream = FileSystem.GetFileStream(TempFilePath, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read, FileOpenOptions.None))
EnableHttpCompression = false
}, "GET").ConfigureAwait(false))
{
Logger.Info("Opened HDHR stream from {0}", url);
if (!cancellationToken.IsCancellationRequested)
{ {
Logger.Info("Beginning multicastStream.CopyUntilCancelled"); StreamHelper.CopyTo(stream, fileStream, 81920, null, cancellationToken);
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);
}
} }
} }
} }
catch (OperationCanceledException) }
{ catch (OperationCanceledException)
break; {
} }
catch (Exception ex) catch (Exception ex)
{ {
if (isFirstAttempt) Logger.ErrorException("Error copying live stream.", ex);
{
Logger.ErrorException("Error opening live stream:", ex);
openTaskCompletionSource.TrySetException(ex);
break;
}
Logger.ErrorException("Error copying live stream, will reopen", ex);
}
isFirstAttempt = false;
} }
_liveStreamTaskCompletionSource.TrySetResult(true);
await DeleteTempFile(TempFilePath).ConfigureAwait(false); await DeleteTempFile(TempFilePath).ConfigureAwait(false);
}); });
} }

View File

@ -6,6 +6,7 @@ using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using MediaBrowser.Model.Net; using MediaBrowser.Model.Net;
using MediaBrowser.Model.Logging;
namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{ {
@ -89,9 +90,12 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
private readonly ISocketFactory _socketFactory; private readonly ISocketFactory _socketFactory;
private IpAddressInfo _remoteIp; private IpAddressInfo _remoteIp;
public HdHomerunManager(ISocketFactory socketFactory) private ILogger _logger;
public HdHomerunManager(ISocketFactory socketFactory, ILogger logger)
{ {
_socketFactory = socketFactory; _socketFactory = socketFactory;
_logger = logger;
} }
public void Dispose() public void Dispose()
@ -140,6 +144,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
_lockkey = (uint)rand.Next(); _lockkey = (uint)rand.Next();
} }
var lockKeyValue = _lockkey.Value;
var ipEndPoint = new IpEndPointInfo(_remoteIp, HdHomeRunPort); var ipEndPoint = new IpEndPointInfo(_remoteIp, HdHomeRunPort);
for (int i = 0; i < numTuners; ++i) for (int i = 0; i < numTuners; ++i)
@ -148,7 +154,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
continue; continue;
_activeTuner = i; _activeTuner = i;
var lockKeyString = String.Format("{0:d}", _lockkey.Value); var lockKeyString = String.Format("{0:d}", lockKeyValue);
var lockkeyMsg = CreateSetMessage(i, "lockkey", lockKeyString, null); var lockkeyMsg = CreateSetMessage(i, "lockkey", lockKeyString, null);
await tcpClient.SendToAsync(lockkeyMsg, 0, lockkeyMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); await tcpClient.SendToAsync(lockkeyMsg, 0, lockkeyMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
@ -160,27 +166,27 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
var commandList = commands.GetCommands(); var commandList = commands.GetCommands();
foreach(Tuple<string,string> command in commandList) foreach(Tuple<string,string> command in commandList)
{ {
var channelMsg = CreateSetMessage(i, command.Item1, command.Item2, _lockkey.Value); var channelMsg = CreateSetMessage(i, command.Item1, command.Item2, lockKeyValue);
await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
// parse response to make sure it worked // parse response to make sure it worked
if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal)) if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal))
{ {
await ReleaseLockkey(tcpClient).ConfigureAwait(false); await ReleaseLockkey(tcpClient, lockKeyValue).ConfigureAwait(false);
continue; continue;
} }
} }
var targetValue = String.Format("rtp://{0}:{1}", localIp, localPort); var targetValue = String.Format("rtp://{0}:{1}", localIp, localPort);
var targetMsg = CreateSetMessage(i, "target", targetValue, _lockkey.Value); var targetMsg = CreateSetMessage(i, "target", targetValue, lockKeyValue);
await tcpClient.SendToAsync(targetMsg, 0, targetMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); await tcpClient.SendToAsync(targetMsg, 0, targetMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
// parse response to make sure it worked // parse response to make sure it worked
if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal)) if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal))
{ {
await ReleaseLockkey(tcpClient).ConfigureAwait(false); await ReleaseLockkey(tcpClient, lockKeyValue).ConfigureAwait(false);
continue; continue;
} }
@ -201,7 +207,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
foreach (Tuple<string, string> command in commandList) foreach (Tuple<string, string> command in commandList)
{ {
var channelMsg = CreateSetMessage(_activeTuner, command.Item1, command.Item2, _lockkey.Value); var channelMsg = CreateSetMessage(_activeTuner, command.Item1, command.Item2, _lockkey);
await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), cancellationToken).ConfigureAwait(false); await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), cancellationToken).ConfigureAwait(false);
var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
// parse response to make sure it worked // parse response to make sure it worked
@ -216,24 +222,28 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
public async Task StopStreaming() public async Task StopStreaming()
{ {
if (!_lockkey.HasValue) var lockKey = _lockkey;
if (!lockKey.HasValue)
return; return;
using (var socket = _socketFactory.CreateTcpSocket(_remoteIp, HdHomeRunPort)) using (var socket = _socketFactory.CreateTcpSocket(_remoteIp, HdHomeRunPort))
{ {
await ReleaseLockkey(socket).ConfigureAwait(false); await ReleaseLockkey(socket, lockKey.Value).ConfigureAwait(false);
} }
} }
private async Task ReleaseLockkey(ISocket tcpClient) private async Task ReleaseLockkey(ISocket tcpClient, uint lockKeyValue)
{ {
var releaseTarget = CreateSetMessage(_activeTuner, "target", "none", _lockkey); _logger.Info("HdHomerunManager.ReleaseLockkey {0}", lockKeyValue);
var releaseTarget = CreateSetMessage(_activeTuner, "target", "none", lockKeyValue);
await tcpClient.SendToAsync(releaseTarget, 0, releaseTarget.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false); await tcpClient.SendToAsync(releaseTarget, 0, releaseTarget.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false);
var receiveBuffer = new byte[8192]; var receiveBuffer = new byte[8192];
await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false); await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false);
var releaseKeyMsg = CreateSetMessage(_activeTuner, "lockkey", "none", _lockkey); var releaseKeyMsg = CreateSetMessage(_activeTuner, "lockkey", "none", lockKeyValue);
_lockkey = null; _lockkey = null;
await tcpClient.SendToAsync(releaseKeyMsg, 0, releaseKeyMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false); await tcpClient.SendToAsync(releaseKeyMsg, 0, releaseKeyMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), CancellationToken.None).ConfigureAwait(false);
await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false); await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, CancellationToken.None).ConfigureAwait(false);

View File

@ -1,23 +1,16 @@
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq;
using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Emby.Server.Implementations.IO;
using MediaBrowser.Common.Net; using MediaBrowser.Common.Net;
using MediaBrowser.Controller; using MediaBrowser.Controller;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.Dto; using MediaBrowser.Model.Dto;
using MediaBrowser.Model.IO; using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Net; using MediaBrowser.Model.Net;
using MediaBrowser.Model.System; using MediaBrowser.Model.System;
using System.Globalization;
using MediaBrowser.Controller.IO;
namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{ {
@ -26,8 +19,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
private readonly IServerApplicationHost _appHost; private readonly IServerApplicationHost _appHost;
private readonly ISocketFactory _socketFactory; private readonly ISocketFactory _socketFactory;
private readonly CancellationTokenSource _liveStreamCancellationTokenSource = new CancellationTokenSource();
private readonly TaskCompletionSource<bool> _liveStreamTaskCompletionSource = new TaskCompletionSource<bool>();
private readonly IHdHomerunChannelCommands _channelCommands; private readonly IHdHomerunChannelCommands _channelCommands;
private readonly int _numTuners; private readonly int _numTuners;
private readonly INetworkManager _networkManager; private readonly INetworkManager _networkManager;
@ -43,20 +34,62 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
_numTuners = numTuners; _numTuners = numTuners;
} }
protected override Task OpenInternal(CancellationToken openCancellationToken) public override async Task Open(CancellationToken openCancellationToken)
{ {
_liveStreamCancellationTokenSource.Token.ThrowIfCancellationRequested(); LiveStreamCancellationTokenSource.Token.ThrowIfCancellationRequested();
var mediaSource = OriginalMediaSource; var mediaSource = OriginalMediaSource;
var uri = new Uri(mediaSource.Path); var uri = new Uri(mediaSource.Path);
var localPort = _networkManager.GetRandomUnusedUdpPort(); var localPort = _networkManager.GetRandomUnusedUdpPort();
FileSystem.CreateDirectory(FileSystem.GetDirectoryName(TempFilePath));
Logger.Info("Opening HDHR UDP Live stream from {0}", uri.Host); Logger.Info("Opening HDHR UDP Live stream from {0}", uri.Host);
var remoteAddress = _networkManager.ParseIpAddress(uri.Host);
IpAddressInfo localAddress = null;
using (var tcpSocket = _socketFactory.CreateSocket(remoteAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp, false))
{
try
{
tcpSocket.Connect(new IpEndPointInfo(remoteAddress, HdHomerunManager.HdHomeRunPort));
localAddress = tcpSocket.LocalEndPoint.IpAddress;
tcpSocket.Close();
}
catch (Exception)
{
Logger.Error("Unable to determine local ip address for Legacy HDHomerun stream.");
return;
}
}
var udpClient = _socketFactory.CreateUdpSocket(localPort);
var hdHomerunManager = new HdHomerunManager(_socketFactory, Logger);
try
{
// send url to start streaming
await hdHomerunManager.StartStreaming(remoteAddress, localAddress, localPort, _channelCommands, _numTuners, openCancellationToken).ConfigureAwait(false);
}
catch (Exception ex)
{
using (udpClient)
{
using (hdHomerunManager)
{
if (!(ex is OperationCanceledException))
{
Logger.ErrorException("Error opening live stream:", ex);
}
throw;
}
}
}
var taskCompletionSource = new TaskCompletionSource<bool>(); var taskCompletionSource = new TaskCompletionSource<bool>();
StartStreaming(uri.Host, localPort, taskCompletionSource, _liveStreamCancellationTokenSource.Token); StartStreaming(udpClient, hdHomerunManager, remoteAddress, localAddress, localPort, taskCompletionSource, LiveStreamCancellationTokenSource.Token);
//OpenedMediaSource.Protocol = MediaProtocol.File; //OpenedMediaSource.Protocol = MediaProtocol.File;
//OpenedMediaSource.Path = tempFile; //OpenedMediaSource.Path = tempFile;
@ -68,86 +101,47 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
//OpenedMediaSource.SupportsDirectStream = true; //OpenedMediaSource.SupportsDirectStream = true;
//OpenedMediaSource.SupportsTranscoding = true; //OpenedMediaSource.SupportsTranscoding = true;
return taskCompletionSource.Task;
//await Task.Delay(5000).ConfigureAwait(false); //await Task.Delay(5000).ConfigureAwait(false);
await taskCompletionSource.Task.ConfigureAwait(false);
} }
public override Task Close() public override void Close()
{ {
Logger.Info("Closing HDHR UDP live stream"); Logger.Info("Closing HDHR UDP live stream");
_liveStreamCancellationTokenSource.Cancel(); LiveStreamCancellationTokenSource.Cancel();
return _liveStreamTaskCompletionSource.Task;
} }
private Task StartStreaming(string remoteIp, int localPort, TaskCompletionSource<bool> openTaskCompletionSource, CancellationToken cancellationToken) private Task StartStreaming(ISocket udpClient, HdHomerunManager hdHomerunManager, IpAddressInfo remoteAddress, IpAddressInfo localAddress, int localPort, TaskCompletionSource<bool> openTaskCompletionSource, CancellationToken cancellationToken)
{ {
return Task.Run(async () => return Task.Run(async () =>
{ {
var isFirstAttempt = true; using (udpClient)
using (var udpClient = _socketFactory.CreateUdpSocket(localPort))
{ {
using (var hdHomerunManager = new HdHomerunManager(_socketFactory)) using (hdHomerunManager)
{ {
var remoteAddress = _networkManager.ParseIpAddress(remoteIp); try
IpAddressInfo localAddress = null;
using (var tcpSocket = _socketFactory.CreateSocket(remoteAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp, false))
{ {
try await CopyTo(udpClient, TempFilePath, openTaskCompletionSource, cancellationToken).ConfigureAwait(false);
{ }
tcpSocket.Connect(new IpEndPointInfo(remoteAddress, HdHomerunManager.HdHomeRunPort)); catch (OperationCanceledException ex)
localAddress = tcpSocket.LocalEndPoint.IpAddress; {
tcpSocket.Close(); Logger.Info("HDHR UDP stream cancelled or timed out from {0}", remoteAddress);
} openTaskCompletionSource.TrySetException(ex);
catch (Exception) }
{ catch (Exception ex)
Logger.Error("Unable to determine local ip address for Legacy HDHomerun stream."); {
return; Logger.ErrorException("Error opening live stream:", ex);
} openTaskCompletionSource.TrySetException(ex);
} }
while (!cancellationToken.IsCancellationRequested) try
{ {
try await hdHomerunManager.StopStreaming().ConfigureAwait(false);
{
// send url to start streaming
await hdHomerunManager.StartStreaming(remoteAddress, localAddress, localPort, _channelCommands, _numTuners, cancellationToken).ConfigureAwait(false);
Logger.Info("Opened HDHR UDP stream from {0}", remoteAddress);
if (!cancellationToken.IsCancellationRequested)
{
FileSystem.CreateDirectory(FileSystem.GetDirectoryName(TempFilePath));
using (var fileStream = FileSystem.GetFileStream(TempFilePath, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read, FileOpenOptions.None))
{
CopyTo(udpClient, fileStream, openTaskCompletionSource, cancellationToken);
}
}
}
catch (OperationCanceledException ex)
{
Logger.Info("HDHR UDP stream cancelled or timed out from {0}", remoteAddress);
openTaskCompletionSource.TrySetException(ex);
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
{
await hdHomerunManager.StopStreaming().ConfigureAwait(false); }
_liveStreamTaskCompletionSource.TrySetResult(true);
} }
} }
@ -158,36 +152,45 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
private void Resolve(TaskCompletionSource<bool> openTaskCompletionSource) private void Resolve(TaskCompletionSource<bool> openTaskCompletionSource)
{ {
Task.Run(() => Task.Run(() =>
{ {
openTaskCompletionSource.TrySetResult(true); openTaskCompletionSource.TrySetResult(true);
}); });
} }
private static int RtpHeaderBytes = 12; private static int RtpHeaderBytes = 12;
private void CopyTo(ISocket udpClient, Stream target, TaskCompletionSource<bool> openTaskCompletionSource, CancellationToken cancellationToken) private async Task CopyTo(ISocket udpClient, string file, TaskCompletionSource<bool> openTaskCompletionSource, CancellationToken cancellationToken)
{ {
var source = _socketFactory.CreateNetworkStream(udpClient, false);
var bufferSize = 81920; var bufferSize = 81920;
byte[] buffer = new byte[bufferSize]; byte[] buffer = new byte[bufferSize];
int read; int read;
var resolved = false; var resolved = false;
while ((read = source.Read(buffer, 0, buffer.Length)) != 0) using (var source = _socketFactory.CreateNetworkStream(udpClient, false))
{ {
cancellationToken.ThrowIfCancellationRequested(); using (var fileStream = FileSystem.GetFileStream(file, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read, FileOpenOptions.None))
read -= RtpHeaderBytes;
if (read > 0)
{ {
target.Write(buffer, RtpHeaderBytes, read); var currentCancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, new CancellationTokenSource(TimeSpan.FromSeconds(30)).Token).Token;
}
if (!resolved) while ((read = await source.ReadAsync(buffer, 0, buffer.Length, currentCancellationToken).ConfigureAwait(false)) != 0)
{ {
resolved = true; cancellationToken.ThrowIfCancellationRequested();
Resolve(openTaskCompletionSource);
currentCancellationToken = cancellationToken;
read -= RtpHeaderBytes;
if (read > 0)
{
fileStream.Write(buffer, RtpHeaderBytes, read);
}
if (!resolved)
{
resolved = true;
Resolve(openTaskCompletionSource);
}
}
} }
} }
} }

View File

@ -32,6 +32,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
protected readonly string TempFilePath; protected readonly string TempFilePath;
protected readonly ILogger Logger; protected readonly ILogger Logger;
protected readonly CancellationTokenSource LiveStreamCancellationTokenSource = new CancellationTokenSource();
public LiveStream(MediaSourceInfo mediaSource, IEnvironmentInfo environment, IFileSystem fileSystem, ILogger logger, IServerApplicationPaths appPaths) public LiveStream(MediaSourceInfo mediaSource, IEnvironmentInfo environment, IFileSystem fileSystem, ILogger logger, IServerApplicationPaths appPaths)
{ {
@ -46,19 +47,13 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
TempFilePath = Path.Combine(appPaths.TranscodingTempPath, UniqueId + ".ts"); TempFilePath = Path.Combine(appPaths.TranscodingTempPath, UniqueId + ".ts");
} }
public Task Open(CancellationToken cancellationToken) public virtual Task Open(CancellationToken openCancellationToken)
{
return OpenInternal(cancellationToken);
}
protected virtual Task OpenInternal(CancellationToken cancellationToken)
{ {
return Task.FromResult(true); return Task.FromResult(true);
} }
public virtual Task Close() public virtual void Close()
{ {
return Task.FromResult(true);
} }
protected Stream GetInputStream(string path, bool allowAsyncFileRead) protected Stream GetInputStream(string path, bool allowAsyncFileRead)
@ -75,11 +70,24 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
protected async Task DeleteTempFile(string path, int retryCount = 0) protected async Task DeleteTempFile(string path, int retryCount = 0)
{ {
if (retryCount == 0)
{
Logger.Info("Deleting temp file {0}", path);
}
try try
{ {
FileSystem.DeleteFile(path); FileSystem.DeleteFile(path);
return; return;
} }
catch (DirectoryNotFoundException)
{
return;
}
catch (FileNotFoundException)
{
return;
}
catch catch
{ {
@ -96,6 +104,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
public async Task CopyToAsync(Stream stream, CancellationToken cancellationToken) public async Task CopyToAsync(Stream stream, CancellationToken cancellationToken)
{ {
cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, LiveStreamCancellationTokenSource.Token).Token;
var allowAsync = false;//Environment.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows; var allowAsync = false;//Environment.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows;
// use non-async filestream along with read due to https://github.com/dotnet/corefx/issues/6039 // use non-async filestream along with read due to https://github.com/dotnet/corefx/issues/6039
@ -110,16 +120,27 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
private static async Task CopyTo(Stream source, Stream destination, int bufferSize, Action onStarted, CancellationToken cancellationToken) private static async Task CopyTo(Stream source, Stream destination, int bufferSize, Action onStarted, CancellationToken cancellationToken)
{ {
byte[] buffer = new byte[bufferSize]; byte[] buffer = new byte[bufferSize];
while (true)
var eofCount = 0;
var emptyReadLimit = 1000;
while (eofCount < emptyReadLimit)
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
var read = source.Read(buffer, 0, buffer.Length); var bytesRead = source.Read(buffer, 0, buffer.Length);
if (read > 0) if (bytesRead == 0)
{ {
eofCount++;
await Task.Delay(10, cancellationToken).ConfigureAwait(false);
}
else
{
eofCount = 0;
//await destination.WriteAsync(buffer, 0, read).ConfigureAwait(false); //await destination.WriteAsync(buffer, 0, read).ConfigureAwait(false);
destination.Write(buffer, 0, read); destination.Write(buffer, 0, bytesRead);
if (onStarted != null) if (onStarted != null)
{ {
@ -127,10 +148,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
onStarted = null; onStarted = null;
} }
} }
else
{
await Task.Delay(10).ConfigureAwait(false);
}
} }
} }
@ -139,6 +156,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
try try
{ {
stream.Seek(offset, SeekOrigin.End); stream.Seek(offset, SeekOrigin.End);
}
catch (IOException)
{
} }
catch (ArgumentException) catch (ArgumentException)
{ {

View File

@ -93,13 +93,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
protected override async Task<List<MediaSourceInfo>> GetChannelStreamMediaSources(TunerHostInfo info, string channelId, CancellationToken cancellationToken) protected override async Task<List<MediaSourceInfo>> 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 channels = await GetChannels(info, true, cancellationToken).ConfigureAwait(false);
var channel = channels.FirstOrDefault(c => string.Equals(c.Id, channelId, StringComparison.OrdinalIgnoreCase)); var channel = channels.FirstOrDefault(c => string.Equals(c.Id, channelId, StringComparison.OrdinalIgnoreCase));
if (channel != null) if (channel != null)
@ -165,7 +158,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
RequiresOpening = true, RequiresOpening = true,
RequiresClosing = true, RequiresClosing = true,
RequiresLooping = info.EnableStreamLooping, RequiresLooping = info.EnableStreamLooping,
EnableMpDecimate = info.EnableMpDecimate,
ReadAtNativeFramerate = false, ReadAtNativeFramerate = false,

View File

@ -1,178 +1,96 @@
{ {
"DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", "Latest": "\u0627\u0644\u0623\u062d\u062f\u062b",
"AppDeviceValues": "App: {0}, Device: {1}", "ValueSpecialEpisodeName": "\u062e\u0627\u0635 - {0}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "Inherit": "\u062a\u0648\u0631\u064a\u062b",
"FolderTypeMixed": "Mixed content", "Books": "\u0627\u0644\u0643\u062a\u0628",
"FolderTypeMovies": "Movies", "Music": "\u0627\u0644\u0645\u0648\u0633\u064a\u0642\u0649",
"FolderTypeMusic": "Music", "Games": "\u0627\u0644\u0623\u0644\u0639\u0627\u0628",
"FolderTypeAdultVideos": "Adult videos", "Photos": "\u0627\u0644\u0635\u0648\u0631",
"FolderTypePhotos": "Photos", "MixedContent": "\u0645\u062d\u062a\u0648\u0649 \u0645\u062e\u0644\u0648\u0637",
"FolderTypeMusicVideos": "Music videos", "MusicVideos": "\u0627\u0644\u0641\u064a\u062f\u064a\u0648\u0647\u0627\u062a \u0627\u0644\u0645\u0648\u0633\u064a\u0642\u064a\u0629",
"FolderTypeHomeVideos": "Home videos", "HomeVideos": "\u0627\u0644\u0641\u064a\u062f\u064a\u0648\u0647\u0627\u062a \u0627\u0644\u0645\u0646\u0632\u0644\u064a\u0629",
"FolderTypeGames": "Games", "Playlists": "\u0642\u0648\u0627\u0626\u0645 \u0627\u0644\u062a\u0634\u063a\u064a\u0644",
"FolderTypeBooks": "Books", "HeaderRecordingGroups": "\u0645\u062c\u0645\u0648\u0639\u0627\u062a \u0627\u0644\u062a\u0633\u062c\u064a\u0644",
"FolderTypeTvShows": "TV", "HeaderContinueWatching": "\u0627\u0633\u062a\u0626\u0646\u0627\u0641 \u0627\u0644\u0645\u0634\u0627\u0647\u062f\u0629",
"FolderTypeInherit": "Inherit", "HeaderFavoriteArtists": "\u0627\u0644\u0641\u0646\u0627\u0646\u0648\u0646 \u0627\u0644\u0645\u0641\u0636\u0644\u0648\u0646",
"HeaderCastCrew": "Cast & Crew", "HeaderFavoriteSongs": "\u0627\u0644\u0623\u063a\u0627\u0646\u064a \u0627\u0644\u0645\u0641\u0636\u0644\u0629",
"HeaderPeople": "People", "HeaderAlbumArtists": "\u0641\u0646\u0627\u0646\u0648 \u0627\u0644\u0623\u0644\u0628\u0648\u0645\u0627\u062a",
"ValueSpecialEpisodeName": "Special - {0}", "HeaderFavoriteAlbums": "\u0627\u0644\u0623\u0644\u0628\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0641\u0636\u0644\u0629",
"LabelChapterName": "Chapter {0}", "HeaderFavoriteEpisodes": "\u0627\u0644\u062d\u0644\u0642\u0627\u062a \u0627\u0644\u0645\u0641\u0636\u0644\u0629",
"NameSeasonNumber": "Season {0}", "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",
"TvShows": "TV Shows",
"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", "LabelExit": "\u062e\u0631\u0648\u062c",
"LabelVisitCommunity": "\u0632\u064a\u0627\u0631\u0629 \u0627\u0644\u0645\u062c\u062a\u0645\u0639", "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", "LabelBrowseLibrary": "\u062a\u0635\u0641\u062d \u0627\u0644\u0645\u0643\u062a\u0628\u0629",
"LabelConfigureServer": "\u0625\u0639\u062f\u0627\u062f \u0625\u0645\u0628\u064a", "LabelConfigureServer": "\u0636\u0628\u0637 \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0623\u0645\u0628\u064a",
"LabelRestartServer": "\u0627\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u0627\u062f\u0645", "LabelRestartServer": "\u0625\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."
} }

View File

@ -1,42 +1,74 @@
{ {
"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",
"TvShows": "TV Shows",
"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}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "\u0421\u043c\u0435\u0441\u0435\u043d\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "\u0424\u0438\u043b\u043c\u0438", "ChapterNameValue": "Chapter {0}",
"FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", "ScheduledTaskFailedWithName": "{0} failed",
"FolderTypeAdultVideos": "\u041a\u043b\u0438\u043f\u043e\u0432\u0435 \u0437\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442\u043d\u0438", "LabelRunningTimeValue": "Running time: {0}",
"FolderTypePhotos": "\u0421\u043d\u0438\u043c\u043a\u0438", "ScheduledTaskStartedWithName": "{0} \u0437\u0430\u043f\u043e\u0447\u043d\u0430",
"FolderTypeMusicVideos": "\u041c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", "VersionNumber": "Version {0}",
"FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", "PluginInstalledWithName": "{0} was installed",
"FolderTypeGames": "\u0418\u0433\u0440\u0438", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", "PluginUpdatedWithName": "{0} was updated",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} \u0435 \u0434\u0435\u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u043e",
"FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0438", "ItemAddedWithName": "{0} was added to the library",
"HeaderCastCrew": "\u0415\u043a\u0438\u043f", "ItemRemovedWithName": "{0} was removed from the library",
"HeaderPeople": "People", "LabelIpAddressValue": "Ip address: {0}",
"ValueSpecialEpisodeName": "Special - {0}", "DeviceOnlineWithName": "{0} is connected",
"LabelChapterName": "Chapter {0}", "UserOnlineFromDevice": "{0} is online from {1}",
"NameSeasonNumber": "Season {0}", "ProviderValue": "Provider: {0}",
"LabelExit": "\u0418\u0437\u0445\u043e\u0434", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0438 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u0442\u043e", "UserCreatedWithName": "User {0} has been created",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"LabelApiDocumentation": "API \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f", "UserDeletedWithName": "User {0} has been deleted",
"LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"LabelBrowseLibrary": "\u0420\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"LabelConfigureServer": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"LabelRestartServer": "\u0420\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439 \u0441\u044a\u0440\u0432\u044a\u0440\u0430", "MessageApplicationUpdated": "Emby Server has been updated",
"CategorySync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437.", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"CategoryUser": "User", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"CategorySystem": "System", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"CategoryApplication": "Application", "DeviceOfflineWithName": "{0} has disconnected",
"CategoryPlugin": "Plugin", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"NotificationOptionPluginError": "Plugin failure", "NotificationOptionPluginError": "Plugin failure",
"NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateAvailable": "Application update available",
"NotificationOptionApplicationUpdateInstalled": "Application update installed", "NotificationOptionApplicationUpdateInstalled": "Application update installed",
"NotificationOptionPluginUpdateInstalled": "Plugin update installed", "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": "Plugin installed", "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": "Plugin uninstalled", "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", "NotificationOptionVideoPlayback": "Video playback started",
"NotificationOptionAudioPlayback": "Audio playback started", "NotificationOptionAudioPlayback": "Audio playback started",
"NotificationOptionGamePlayback": "Game playback started", "NotificationOptionGamePlayback": "Game playback started",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionTaskFailed": "Scheduled task failure",
"NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionInstallationFailed": "Installation failure",
"NotificationOptionNewLibraryContent": "New content added", "NotificationOptionNewLibraryContent": "New content added",
"NotificationOptionNewLibraryContentMultiple": "New content added (multiple)",
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionCameraImageUploaded": "Camera image uploaded",
"NotificationOptionUserLockedOut": "User locked out", "NotificationOptionUserLockedOut": "User locked out",
"NotificationOptionServerRestartRequired": "Server restart required", "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",
"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",
"UserLockedOutWithName": "User {0} has been locked out", "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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0430\u043d\u0435",
"HeaderImagePrimary": "Primary", "User": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b",
"HeaderImageBackdrop": "Backdrop", "System": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0435\u0442\u0435 \u043e\u0431\u0449\u043d\u043e\u0441\u0442\u0442\u0430",
"HeaderType": "Type", "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",
"HeaderSeverity": "Severity", "LabelConfigureServer": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0415\u043c\u0431\u0438",
"HeaderUser": "User", "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"
"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."
} }

View File

@ -1,178 +1,96 @@
{ {
"DbUpgradeMessage": "Si et plau espera mentre la teva base de dades del Servidor Emby \u00e9s actualitzada. {0}% completat.", "Latest": "Darreres",
"AppDeviceValues": "App: {0}, Dispositiu: {1}", "ValueSpecialEpisodeName": "Especial - {0}",
"UserDownloadingItemWithValues": "{0} est\u00e0 descarregant {1}", "Inherit": "Inherit",
"FolderTypeMixed": "Contingut barrejat", "Books": "Books",
"FolderTypeMovies": "Pel\u00b7l\u00edcules", "Music": "Music",
"FolderTypeMusic": "M\u00fasica", "Games": "Games",
"FolderTypeAdultVideos": "V\u00eddeos per adults", "Photos": "Photos",
"FolderTypePhotos": "Fotos", "MixedContent": "Mixed content",
"FolderTypeMusicVideos": "V\u00eddeos musicals", "MusicVideos": "Music videos",
"FolderTypeHomeVideos": "V\u00eddeos dom\u00e8stics", "HomeVideos": "Home videos",
"FolderTypeGames": "Jocs", "Playlists": "Playlists",
"FolderTypeBooks": "Llibres", "HeaderRecordingGroups": "Recording Groups",
"FolderTypeTvShows": "TV", "HeaderContinueWatching": "Continua Veient",
"FolderTypeInherit": "Heretat", "HeaderFavoriteArtists": "Favorite Artists",
"HeaderCastCrew": "Repartiment i Equip", "HeaderFavoriteSongs": "Favorite Songs",
"HeaderPeople": "People", "HeaderAlbumArtists": "Album Artists",
"ValueSpecialEpisodeName": "Special - {0}", "HeaderFavoriteAlbums": "Favorite Albums",
"LabelChapterName": "Cap\u00edtol {0}", "HeaderFavoriteEpisodes": "Favorite Episodes",
"NameSeasonNumber": "Temporada {0}", "HeaderFavoriteShows": "Programes Preferits",
"LabelExit": "Sortir", "HeaderNextUp": "A continuaci\u00f3",
"LabelVisitCommunity": "Visita la Comunitat", "Favorites": "Favorites",
"LabelGithub": "Github", "Collections": "Collections",
"LabelApiDocumentation": "Documentaci\u00f3 de l'API", "Channels": "Channels",
"LabelDeveloperResources": "Recursos per a Desenvolupadors", "Movies": "Movies",
"LabelBrowseLibrary": "Examina la Biblioteca", "Albums": "Albums",
"LabelConfigureServer": "Configura Emby", "Artists": "Artists",
"LabelRestartServer": "Reiniciar Servidor", "Folders": "Folders",
"CategorySync": "Sync", "Songs": "Songs",
"CategoryUser": "Usuari", "TvShows": "TV Shows",
"CategorySystem": "Sistema", "Shows": "Shows",
"CategoryApplication": "Aplicaci\u00f3", "Genres": "G\u00e8neres",
"CategoryPlugin": "Complement", "NameSeasonNumber": "Season {0}",
"NotificationOptionPluginError": "Plugin failure", "AppDeviceValues": "App: {0}, Device: {1}",
"NotificationOptionApplicationUpdateAvailable": "Actualitzaci\u00f3 d'aplicaci\u00f3 disponible", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"NotificationOptionApplicationUpdateInstalled": "Actualitzaci\u00f3 d'aplicaci\u00f3 instal\u00b7lada", "HeaderLiveTV": "Live TV",
"NotificationOptionPluginUpdateInstalled": "Actualitzaci\u00f3 de complement instal\u00b7lada", "ChapterNameValue": "Chapter {0}",
"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",
"ScheduledTaskFailedWithName": "{0} failed", "ScheduledTaskFailedWithName": "{0} failed",
"LabelRunningTimeValue": "Running time: {0}", "LabelRunningTimeValue": "Running time: {0}",
"ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskStartedWithName": "{0} started",
"VersionNumber": "Versi\u00f3 {0}", "VersionNumber": "Version {0}",
"PluginInstalledWithName": "{0} was installed", "PluginInstalledWithName": "{0} was installed",
"StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"PluginUpdatedWithName": "{0} was updated", "PluginUpdatedWithName": "{0} was updated",
"PluginUninstalledWithName": "{0} was uninstalled", "PluginUninstalledWithName": "{0} was uninstalled",
"ItemAddedWithName": "{0} afegit a la biblioteca", "ItemAddedWithName": "{0} was added to the library",
"ItemRemovedWithName": "{0} eliminat de la biblioteca", "ItemRemovedWithName": "{0} was removed from the library",
"LabelIpAddressValue": "Ip address: {0}", "LabelIpAddressValue": "Ip address: {0}",
"DeviceOnlineWithName": "{0} is connected", "DeviceOnlineWithName": "{0} is connected",
"UserOnlineFromDevice": "{0} is online from {1}", "UserOnlineFromDevice": "{0} is online from {1}",
"ProviderValue": "Prove\u00efdor: {0}", "ProviderValue": "Provider: {0}",
"SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"UserCreatedWithName": "User {0} has been created", "UserCreatedWithName": "User {0} has been created",
"UserPasswordChangedWithName": "Password has been changed for user {0}", "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", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"MessageApplicationUpdated": "Emby Server has been updated", "MessageApplicationUpdated": "Emby Server has been updated",
"FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"AuthenticationSucceededWithUserName": "{0} autenticat correctament", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"DeviceOfflineWithName": "{0} has disconnected",
"UserLockedOutWithName": "L'usuari {0} ha estat blocat",
"UserOfflineFromDevice": "{0} has disconnected from {1}", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"UserStartedPlayingItemWithValues": "{0} ha comen\u00e7at a reproduir {1}", "DeviceOfflineWithName": "{0} has disconnected",
"UserStoppedPlayingItemWithValues": "{0} ha parat de reproduir {1}", "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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "Sync",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "Usuari", "LabelRestartServer": "Restart Server"
"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&agrave; carregant. Si et plau, tornau-ho a provar de nou en breu."
} }

View File

@ -1,39 +1,71 @@
{ {
"DbUpgradeMessage": "Po\u010dkejte pros\u00edm, datab\u00e1ze Emby Serveru je aktualizov\u00e1na na novou verzi. Hotovo {0}%.", "Latest": "Nejnov\u011bj\u0161\u00ed",
"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",
"ValueSpecialEpisodeName": "Speci\u00e1l - {0}", "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",
"TvShows": "TV Shows",
"Shows": "Seri\u00e1ly",
"Genres": "\u017d\u00e1nry",
"NameSeasonNumber": "Sez\u00f3na {0}", "NameSeasonNumber": "Sez\u00f3na {0}",
"LabelExit": "Zav\u0159\u00edt", "AppDeviceValues": "Aplikace: {0}, Za\u0159\u00edzen\u00ed: {1}",
"LabelVisitCommunity": "Nav\u0161t\u00edvit komunitu", "UserDownloadingItemWithValues": "{0} stahuje {1}",
"LabelGithub": "Github", "HeaderLiveTV": "\u017div\u00e1 TV",
"LabelApiDocumentation": "Dokumentace API", "ChapterNameValue": "Kapitola {0}",
"LabelDeveloperResources": "Zdroje v\u00fdvoj\u00e1\u0159\u016f", "ScheduledTaskFailedWithName": "{0} selhalo",
"LabelBrowseLibrary": "Proch\u00e1zet knihovnu", "LabelRunningTimeValue": "D\u00e9lka m\u00e9dia: {0}",
"LabelConfigureServer": "Konfigurovat Emby", "ScheduledTaskStartedWithName": "{0} zah\u00e1jeno",
"LabelRestartServer": "Restartovat server", "VersionNumber": "Verze {0}",
"CategorySync": "Synchronizace", "PluginInstalledWithName": "{0} byl nainstalov\u00e1n",
"CategoryUser": "U\u017eivatel:", "StartupEmbyServerIsLoading": "Emby Server je spou\u0161t\u011bn. Zkuste to pros\u00edm v brzk\u00e9 dob\u011b znovu.",
"CategorySystem": "Syst\u00e9m", "PluginUpdatedWithName": "{0} byl aktualizov\u00e1n",
"CategoryApplication": "Aplikace", "PluginUninstalledWithName": "{0} byl odinstalov\u00e1n",
"CategoryPlugin": "Z\u00e1suvn\u00fd modul", "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", "NotificationOptionPluginError": "Chyba z\u00e1suvn\u00e9ho modulu",
"NotificationOptionApplicationUpdateAvailable": "Dostupnost aktualizace aplikace", "NotificationOptionApplicationUpdateAvailable": "Dostupn\u00e1 aktualizace aplikace",
"NotificationOptionApplicationUpdateInstalled": "Instalace aktualizace aplikace", "NotificationOptionApplicationUpdateInstalled": "Aktualizace aplikace instalov\u00e1na",
"NotificationOptionPluginUpdateInstalled": "Aktualizace z\u00e1suvn\u00e9ho modulu instalov\u00e1na", "NotificationOptionPluginUpdateInstalled": "Aktualizace z\u00e1suvn\u00e9ho modulu instalov\u00e1na",
"NotificationOptionPluginInstalled": "Z\u00e1suvn\u00fd modul instalov\u00e1n", "NotificationOptionPluginInstalled": "Z\u00e1suvn\u00fd modul instalov\u00e1n",
"NotificationOptionPluginUninstalled": "Z\u00e1suvn\u00fd modul odstran\u011bn", "NotificationOptionPluginUninstalled": "Z\u00e1suvn\u00fd modul odstran\u011bn",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Chyba napl\u00e1novan\u00e9 \u00falohy", "NotificationOptionTaskFailed": "Chyba napl\u00e1novan\u00e9 \u00falohy",
"NotificationOptionInstallationFailed": "Chyba instalace", "NotificationOptionInstallationFailed": "Chyba instalace",
"NotificationOptionNewLibraryContent": "P\u0159id\u00e1n nov\u00fd obsah", "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", "NotificationOptionCameraImageUploaded": "Kamerov\u00fd z\u00e1znam nahr\u00e1n",
"NotificationOptionUserLockedOut": "U\u017eivatel uzam\u010den", "NotificationOptionUserLockedOut": "U\u017eivatel uzam\u010den",
"NotificationOptionServerRestartRequired": "Je vy\u017eadov\u00e1n restart serveru", "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", "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}", "SubtitleDownloadFailureForItem": "Stahov\u00e1n\u00ed titulk\u016f selhalo pro {0}",
"HeaderUnidentified": "Neidentifikov\u00e1n", "Sync": "Synchronizace",
"HeaderImagePrimary": "Prim\u00e1rn\u00ed", "User": "U\u017eivatel",
"HeaderImageBackdrop": "Pozad\u00ed", "System": "Syst\u00e9m",
"HeaderImageLogo": "Logo", "Application": "Aplikace",
"HeaderUserPrimaryImage": "Avatar u\u017eivatele", "Plugin": "Z\u00e1suvn\u00fd modul",
"HeaderOverview": "P\u0159ehled", "LabelExit": "Uko\u010dit",
"HeaderShortOverview": "Stru\u010dn\u00fd p\u0159ehled", "LabelVisitCommunity": "Nav\u0161t\u00edvit komunitu",
"HeaderType": "Typ", "LabelBrowseLibrary": "Proch\u00e1zet knihovnu",
"HeaderSeverity": "Z\u00e1va\u017enost", "LabelConfigureServer": "Konfigurovat Emby",
"HeaderUser": "U\u017eivatel", "LabelRestartServer": "Restartovat Server"
"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."
} }

View File

@ -1,102 +1,46 @@
{ {
"DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", "Latest": "Seneste",
"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",
"ValueSpecialEpisodeName": "Special - {0}", "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",
"TvShows": "TV Shows",
"Shows": "Shows",
"Genres": "Genre",
"NameSeasonNumber": "S\u00e6son {0}", "NameSeasonNumber": "S\u00e6son {0}",
"LabelExit": "Afslut", "AppDeviceValues": "App: {0}, Enhed: {1}",
"LabelVisitCommunity": "Bes\u00f8g F\u00e6lleskab", "UserDownloadingItemWithValues": "{0} downloader {1}",
"LabelGithub": "Github", "HeaderLiveTV": "Live TV",
"LabelApiDocumentation": "Api dokumentation", "ChapterNameValue": "Kapitel {0}",
"LabelDeveloperResources": "Udviklerressourcer", "ScheduledTaskFailedWithName": "{0} fejlet",
"LabelBrowseLibrary": "Gennemse bibliotek", "LabelRunningTimeValue": "Spilletid: {0}",
"LabelConfigureServer": "Konfigurer Emby", "ScheduledTaskStartedWithName": "{0} p\u00e5begyndt",
"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",
"VersionNumber": "Version {0}", "VersionNumber": "Version {0}",
"PluginInstalledWithName": "{0} blev installeret", "PluginInstalledWithName": "{0} blev installeret",
"StartupEmbyServerIsLoading": "Emby Server indl\u00e6ser. Pr\u00f8v venligst igen om kort tid.",
"PluginUpdatedWithName": "{0} blev opdateret", "PluginUpdatedWithName": "{0} blev opdateret",
"PluginUninstalledWithName": "{0} blev afinstalleret", "PluginUninstalledWithName": "{0} blev afinstalleret",
"ItemAddedWithName": "{0} blev tilf\u00f8jet til biblioteket", "ItemAddedWithName": "{0} blev tilf\u00f8jet til biblioteket",
@ -105,74 +49,48 @@
"DeviceOnlineWithName": "{0} er forbundet", "DeviceOnlineWithName": "{0} er forbundet",
"UserOnlineFromDevice": "{0} er online fra {1}", "UserOnlineFromDevice": "{0} er online fra {1}",
"ProviderValue": "Udbyder: {0}", "ProviderValue": "Udbyder: {0}",
"SubtitlesDownloadedForItem": "Undertekster hentet til {0}", "SubtitlesDownloadedForItem": "Undertekster downloadet for {0}",
"UserConfigurationUpdatedWithName": "Brugerkonfigurationen for {0} er blevet opdateret", "UserCreatedWithName": "Bruger {0} er blevet oprettet",
"UserCreatedWithName": "Bruger {0} er skabt", "UserPasswordChangedWithName": "Adgangskode er \u00e6ndret for bruger {0}",
"UserPasswordChangedWithName": "Adgangskoden for {0} er blevet \u00e6ndret", "UserDeletedWithName": "Brugeren {0} er blevet slettet",
"UserDeletedWithName": "Bruger {0} er slettet", "UserConfigurationUpdatedWithName": "Brugerkonfiguration er blevet opdateret for {0}",
"MessageServerConfigurationUpdated": "Serverkonfigurationen er opdateret", "MessageServerConfigurationUpdated": "Serverkonfiguration er blevet opdateret",
"MessageNamedServerConfigurationUpdatedWithValue": "Serverkonfiguration sektion {0} er opdateret", "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurationssektion {0} er blevet opdateret",
"MessageApplicationUpdated": "Emby er blevet opdateret", "MessageApplicationUpdated": "Emby Server er blevet opdateret",
"FailedLoginAttemptWithUserName": "Fejlslagent loginfors\u00f8g fra {0}", "FailedLoginAttemptWithUserName": "Fejlet loginfors\u00f8g fra {0}",
"AuthenticationSucceededWithUserName": "{0} autentificeret", "AuthenticationSucceededWithUserName": "{0} bekr\u00e6ftet med succes",
"UserOfflineFromDevice": "{0} har afbrudt fra {1}",
"DeviceOfflineWithName": "{0} har afbrudt forbindelsen", "DeviceOfflineWithName": "{0} har afbrudt forbindelsen",
"UserLockedOutWithName": "Bruger {0} er blevet l\u00e5st", "UserStartedPlayingItemWithValues": "{0} har p\u00e5begyndt afspilning af {1}",
"UserOfflineFromDevice": "{0} har afbrudt forbindelsen fra {1}", "UserStoppedPlayingItemWithValues": "{0} har afsluttet afspilning af {1}",
"UserStartedPlayingItemWithValues": "{0} afspiller {1}", "NotificationOptionPluginError": "Pluginfejl",
"UserStoppedPlayingItemWithValues": "{0} har stoppet afpilningen af {1}", "NotificationOptionApplicationUpdateAvailable": "Opdatering til applikation tilg\u00e6ngelig",
"SubtitleDownloadFailureForItem": "Hentning af undertekster til {0} fejlede", "NotificationOptionApplicationUpdateInstalled": "Opdatering til applikation installeret",
"HeaderUnidentified": "Unidentified", "NotificationOptionPluginUpdateInstalled": "Opdatering til plugin installeret",
"HeaderImagePrimary": "Primary", "NotificationOptionPluginInstalled": "Plugin installeret",
"HeaderImageBackdrop": "Backdrop", "NotificationOptionPluginUninstalled": "Plugin afinstalleret",
"HeaderImageLogo": "Logo", "NotificationOptionVideoPlayback": "Videoafspilning p\u00e5begyndt",
"HeaderUserPrimaryImage": "User Image", "NotificationOptionAudioPlayback": "Audioafspilning p\u00e5begyndt",
"HeaderOverview": "Overview", "NotificationOptionGamePlayback": "Afspilning af Spil p\u00e5begyndt",
"HeaderShortOverview": "Short Overview", "NotificationOptionVideoPlaybackStopped": "Videoafspilning stoppet",
"HeaderType": "Type", "NotificationOptionAudioPlaybackStopped": "Audioafspilning stoppet",
"HeaderSeverity": "Severity", "NotificationOptionGamePlaybackStopped": "Afspilning af Spil stoppet",
"HeaderUser": "Bruger", "NotificationOptionTaskFailed": "Planlagt opgave fejlet",
"HeaderName": "Navn", "NotificationOptionInstallationFailed": "Installationsfejl",
"HeaderDate": "Dato", "NotificationOptionNewLibraryContent": "Nyt indhold tilf\u00f8jet",
"HeaderPremiereDate": "Premiere Date", "NotificationOptionCameraImageUploaded": "Kamerabillede uploadet",
"HeaderDateAdded": "Date Added", "NotificationOptionUserLockedOut": "Bruger l\u00e5st ude",
"HeaderReleaseDate": "Udgivelsesdato", "NotificationOptionServerRestartRequired": "Genstart af server p\u00e5kr\u00e6vet",
"HeaderRuntime": "Varighed", "UserLockedOutWithName": "Brugeren {0} er blevet l\u00e5st ude",
"HeaderPlayCount": "Play Count", "SubtitleDownloadFailureForItem": "Fejlet i download af undertekster for {0}",
"HeaderSeason": "S\u00e6son", "Sync": "Synk",
"HeaderSeasonNumber": "S\u00e6sonnummer", "User": "Bruger",
"HeaderSeries": "Series:", "System": "System",
"HeaderNetwork": "Netv\u00e6rk", "Application": "Applikation",
"HeaderYear": "Year:", "Plugin": "Plugin",
"HeaderYears": "Years:", "LabelExit": "Afslut",
"HeaderParentalRating": "Parental Rating", "LabelVisitCommunity": "Bes\u00f8g F\u00e6llesskab",
"HeaderCommunityRating": "F\u00e6llesskabsvurdering", "LabelBrowseLibrary": "Gennemse Bibliotek",
"HeaderTrailers": "Trailere", "LabelConfigureServer": "Konfigurer Emby",
"HeaderSpecials": "S\u00e6rudsendelser", "LabelRestartServer": "Genstart Server"
"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."
} }

View File

@ -1,36 +1,68 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Serien",
"Genres": "Genres",
"NameSeasonNumber": "Staffel {0}",
"AppDeviceValues": "App: {0}, Ger\u00e4t: {1}", "AppDeviceValues": "App: {0}, Ger\u00e4t: {1}",
"UserDownloadingItemWithValues": "{0} l\u00e4dt {1} herunter", "UserDownloadingItemWithValues": "{0} l\u00e4dt {1} herunter",
"FolderTypeMixed": "Gemischte Inhalte", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Filme", "ChapterNameValue": "Kapitel {0}",
"FolderTypeMusic": "Musik", "ScheduledTaskFailedWithName": "{0} fehlgeschlagen",
"FolderTypeAdultVideos": "Videos f\u00fcr Erwachsene", "LabelRunningTimeValue": "Laufzeit: {0}",
"FolderTypePhotos": "Fotos", "ScheduledTaskStartedWithName": "{0} gestartet",
"FolderTypeMusicVideos": "Musikvideos", "VersionNumber": "Version {0}",
"FolderTypeHomeVideos": "Heimvideos", "PluginInstalledWithName": "{0} wurde installiert",
"FolderTypeGames": "Spiele", "StartupEmbyServerIsLoading": "Emby Server startet, bitte versuche es gleich noch einmal.",
"FolderTypeBooks": "B\u00fccher", "PluginUpdatedWithName": "{0} wurde aktualisiert",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} wurde deinstalliert",
"FolderTypeInherit": "\u00dcbernehmen", "ItemAddedWithName": "{0} wurde der Bibliothek hinzugef\u00fcgt",
"HeaderCastCrew": "Besetzung & Crew", "ItemRemovedWithName": "{0} wurde aus der Bibliothek entfernt",
"HeaderPeople": "Personen", "LabelIpAddressValue": "IP Adresse: {0}",
"ValueSpecialEpisodeName": "Special - {0}", "DeviceOnlineWithName": "{0} ist verbunden",
"LabelChapterName": "Kapitel {0}", "UserOnlineFromDevice": "{0} ist online von {1}",
"NameSeasonNumber": "Staffel {0}", "ProviderValue": "Anbieter: {0}",
"LabelExit": "Beenden", "SubtitlesDownloadedForItem": "Untertitel heruntergeladen f\u00fcr {0}",
"LabelVisitCommunity": "Besuche die Community", "UserCreatedWithName": "Benutzer {0} wurde erstellt",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Das Passwort f\u00fcr Benutzer {0} wurde ge\u00e4ndert",
"LabelApiDocumentation": "Api Dokumentation", "UserDeletedWithName": "Benutzer {0} wurde gel\u00f6scht",
"LabelDeveloperResources": "Entwickler Ressourcen", "UserConfigurationUpdatedWithName": "Benutzereinstellungen wurden aktualisiert f\u00fcr {0}",
"LabelBrowseLibrary": "Bibliothek durchsuchen", "MessageServerConfigurationUpdated": "Server Einstellungen wurden aktualisiert",
"LabelConfigureServer": "Konfiguriere Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Der Server Einstellungsbereich {0} wurde aktualisiert",
"LabelRestartServer": "Server neustarten", "MessageApplicationUpdated": "Emby Server wurde auf den neusten Stand gebracht.",
"CategorySync": "Sync", "FailedLoginAttemptWithUserName": "Fehlgeschlagener Anmeldeversuch von {0}",
"CategoryUser": "Benutzer", "AuthenticationSucceededWithUserName": "{0} erfolgreich authentifiziert",
"CategorySystem": "System", "UserOfflineFromDevice": "{0} wurde getrennt von {1}",
"CategoryApplication": "Anwendung", "DeviceOfflineWithName": "{0} wurde getrennt",
"CategoryPlugin": "Plugin", "UserStartedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} gestartet",
"UserStoppedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} beendet",
"NotificationOptionPluginError": "Plugin Fehler", "NotificationOptionPluginError": "Plugin Fehler",
"NotificationOptionApplicationUpdateAvailable": "Anwendungsaktualisierung verf\u00fcgbar", "NotificationOptionApplicationUpdateAvailable": "Anwendungsaktualisierung verf\u00fcgbar",
"NotificationOptionApplicationUpdateInstalled": "Anwendungsaktualisierung installiert", "NotificationOptionApplicationUpdateInstalled": "Anwendungsaktualisierung installiert",
@ -43,136 +75,22 @@
"NotificationOptionVideoPlaybackStopped": "Videowiedergabe gestoppt", "NotificationOptionVideoPlaybackStopped": "Videowiedergabe gestoppt",
"NotificationOptionAudioPlaybackStopped": "Audiowiedergabe gestoppt", "NotificationOptionAudioPlaybackStopped": "Audiowiedergabe gestoppt",
"NotificationOptionGamePlaybackStopped": "Spielwiedergabe gestoppt", "NotificationOptionGamePlaybackStopped": "Spielwiedergabe gestoppt",
"NotificationOptionTaskFailed": "Fehler bei geplanter Aufgabe", "NotificationOptionTaskFailed": "Geplante Aufgaben fehlgeschlagen",
"NotificationOptionInstallationFailed": "Installationsfehler", "NotificationOptionInstallationFailed": "Installationsfehler",
"NotificationOptionNewLibraryContent": "Neuer Inhalt hinzugef\u00fcgt", "NotificationOptionNewLibraryContent": "Neuer Inhalt hinzugef\u00fcgt",
"NotificationOptionNewLibraryContentMultiple": "Neuen Inhalte hinzugef\u00fcgt (mehrere)",
"NotificationOptionCameraImageUploaded": "Kamera Bild hochgeladen", "NotificationOptionCameraImageUploaded": "Kamera Bild hochgeladen",
"NotificationOptionUserLockedOut": "Benutzer ausgeschlossen", "NotificationOptionUserLockedOut": "Benutzer ausgeschlossen",
"NotificationOptionServerRestartRequired": "Serverneustart notwendig", "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", "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}", "SubtitleDownloadFailureForItem": "Download der Untertitel fehlgeschlagen f\u00fcr {0}",
"HeaderUnidentified": "Nicht identifiziert", "Sync": "Synchronisation",
"HeaderImagePrimary": "Bevorzugt", "User": "Benutzer",
"HeaderImageBackdrop": "Hintergrund", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Anwendung",
"HeaderUserPrimaryImage": "Benutzerbild", "Plugin": "Plugin",
"HeaderOverview": "\u00dcbersicht", "LabelExit": "Beenden",
"HeaderShortOverview": "Kurz\u00fcbersicht", "LabelVisitCommunity": "Besuche die Community",
"HeaderType": "Typ", "LabelBrowseLibrary": "Bibliothek durchsuchen",
"HeaderSeverity": "Schwere", "LabelConfigureServer": "Konfiguriere Emby",
"HeaderUser": "Benutzer", "LabelRestartServer": "Server neustarten"
"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."
} }

View File

@ -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."
}

View File

@ -1,36 +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": "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",
"TvShows": "TV Shows",
"Shows": "Shows",
"Genres": "Genres",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "Mixed content", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Movies", "ChapterNameValue": "Chapter {0}",
"FolderTypeMusic": "Music", "ScheduledTaskFailedWithName": "{0} failed",
"FolderTypeAdultVideos": "Adult videos", "LabelRunningTimeValue": "Running time: {0}",
"FolderTypePhotos": "Photos", "ScheduledTaskStartedWithName": "{0} started",
"FolderTypeMusicVideos": "Music videos", "VersionNumber": "Version {0}",
"FolderTypeHomeVideos": "Home videos", "PluginInstalledWithName": "{0} was installed",
"FolderTypeGames": "Games", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"FolderTypeBooks": "Books", "PluginUpdatedWithName": "{0} was updated",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} was uninstalled",
"FolderTypeInherit": "Inherit", "ItemAddedWithName": "{0} was added to the library",
"HeaderCastCrew": "Cast & Crew", "ItemRemovedWithName": "{0} was removed from the library",
"HeaderPeople": "People", "LabelIpAddressValue": "IP address: {0}",
"ValueSpecialEpisodeName": "Special - {0}", "DeviceOnlineWithName": "{0} is connected",
"LabelChapterName": "Chapter {0}", "UserOnlineFromDevice": "{0} is online from {1}",
"NameSeasonNumber": "Series {0}", "ProviderValue": "Provider: {0}",
"LabelExit": "Exit", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"LabelVisitCommunity": "Visit Community", "UserCreatedWithName": "User {0} has been created",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"LabelApiDocumentation": "Api Documentation", "UserDeletedWithName": "User {0} has been deleted",
"LabelDeveloperResources": "Developer Resources", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"LabelBrowseLibrary": "Browse Library", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"LabelConfigureServer": "Configure Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"LabelRestartServer": "Restart Server", "MessageApplicationUpdated": "Emby Server has been updated",
"CategorySync": "Sync", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"CategoryUser": "User", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"CategorySystem": "System", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"CategoryApplication": "Application", "DeviceOfflineWithName": "{0} has disconnected",
"CategoryPlugin": "Plugin", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"NotificationOptionPluginError": "Plugin failure", "NotificationOptionPluginError": "Plugin failure",
"NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateAvailable": "Application update available",
"NotificationOptionApplicationUpdateInstalled": "Application update installed", "NotificationOptionApplicationUpdateInstalled": "Application update installed",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionTaskFailed": "Scheduled task failure",
"NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionInstallationFailed": "Installation failure",
"NotificationOptionNewLibraryContent": "New content added", "NotificationOptionNewLibraryContent": "New content added",
"NotificationOptionNewLibraryContentMultiple": "New (multiple) content added",
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionCameraImageUploaded": "Camera image uploaded",
"NotificationOptionUserLockedOut": "User locked out", "NotificationOptionUserLockedOut": "User locked out",
"NotificationOptionServerRestartRequired": "Server restart required", "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", "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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "Sync",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "User", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -1,33 +1,68 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Shows",
"Genres": "Genres",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "Mixed content", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Movies", "ChapterNameValue": "Chapter {0}",
"FolderTypeMusic": "Music", "ScheduledTaskFailedWithName": "{0} failed",
"FolderTypeAdultVideos": "Adult videos", "LabelRunningTimeValue": "Running time: {0}",
"FolderTypePhotos": "Photos", "ScheduledTaskStartedWithName": "{0} started",
"FolderTypeMusicVideos": "Music videos", "VersionNumber": "Version {0}",
"FolderTypeHomeVideos": "Home videos", "PluginInstalledWithName": "{0} was installed",
"FolderTypeGames": "Games", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"FolderTypeBooks": "Books", "PluginUpdatedWithName": "{0} was updated",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} was uninstalled",
"FolderTypeInherit": "Inherit", "ItemAddedWithName": "{0} was added to the library",
"ValueSpecialEpisodeName": "Special - {0}", "ItemRemovedWithName": "{0} was removed from the library",
"LabelChapterName": "Chapter {0}", "LabelIpAddressValue": "Ip address: {0}",
"NameSeasonUnknown": "Season Unknown", "DeviceOnlineWithName": "{0} is connected",
"NameSeasonNumber": "Season {0}", "UserOnlineFromDevice": "{0} is online from {1}",
"LabelExit": "Exit", "ProviderValue": "Provider: {0}",
"LabelVisitCommunity": "Visit Community", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"LabelApiDocumentation": "Api Documentation", "UserCreatedWithName": "User {0} has been created",
"LabelDeveloperResources": "Developer Resources", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"LabelBrowseLibrary": "Browse Library", "UserDeletedWithName": "User {0} has been deleted",
"LabelConfigureServer": "Configure Emby", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"LabelRestartServer": "Restart Server", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"CategorySync": "Sync", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"CategoryUser": "User", "MessageApplicationUpdated": "Emby Server has been updated",
"CategorySystem": "System", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"CategoryApplication": "Application", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"CategoryPlugin": "Plugin", "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", "NotificationOptionPluginError": "Plugin failure",
"NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateAvailable": "Application update available",
"NotificationOptionApplicationUpdateInstalled": "Application update installed", "NotificationOptionApplicationUpdateInstalled": "Application update installed",
@ -46,119 +81,16 @@
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionCameraImageUploaded": "Camera image uploaded",
"NotificationOptionUserLockedOut": "User locked out", "NotificationOptionUserLockedOut": "User locked out",
"NotificationOptionServerRestartRequired": "Server restart required", "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", "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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "Sync",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "User", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -1,36 +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": "Favorite Shows",
"HeaderNextUp": "Next Up",
"Favorites": "Favorites",
"Collections": "Collections",
"Channels": "Channels",
"Movies": "Movies",
"Albums": "Albums",
"Artists": "Artists",
"Folders": "Folders",
"Songs": "Songs",
"TvShows": "TV Shows",
"Shows": "Series",
"Genres": "Genres",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "Mixed content", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Movies", "ChapterNameValue": "Chapter {0}",
"FolderTypeMusic": "Music", "ScheduledTaskFailedWithName": "{0} failed",
"FolderTypeAdultVideos": "Adult videos", "LabelRunningTimeValue": "Running time: {0}",
"FolderTypePhotos": "Photos", "ScheduledTaskStartedWithName": "{0} started",
"FolderTypeMusicVideos": "Music videos", "VersionNumber": "Version {0}",
"FolderTypeHomeVideos": "Home videos", "PluginInstalledWithName": "{0} was installed",
"FolderTypeGames": "Games", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"FolderTypeBooks": "Books", "PluginUpdatedWithName": "{0} was updated",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} was uninstalled",
"FolderTypeInherit": "Inherit", "ItemAddedWithName": "{0} was added to the library",
"HeaderCastCrew": "Cast & Crew", "ItemRemovedWithName": "{0} was removed from the library",
"HeaderPeople": "People", "LabelIpAddressValue": "Ip address: {0}",
"ValueSpecialEpisodeName": "Special - {0}", "DeviceOnlineWithName": "{0} is connected",
"LabelChapterName": "Chapter {0}", "UserOnlineFromDevice": "{0} is online from {1}",
"NameSeasonNumber": "Season {0}", "ProviderValue": "Provider: {0}",
"LabelExit": "Salir", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"LabelVisitCommunity": "Visit Community", "UserCreatedWithName": "User {0} has been created",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"LabelApiDocumentation": "Documentaci\u00f3n API", "UserDeletedWithName": "User {0} has been deleted",
"LabelDeveloperResources": "Developer Resources", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"LabelBrowseLibrary": "Browse Library", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"LabelConfigureServer": "Configurar Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"LabelRestartServer": "Reiniciar el servidor", "MessageApplicationUpdated": "Emby Server has been updated",
"CategorySync": "Sync", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"CategoryUser": "User", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"CategorySystem": "System", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"CategoryApplication": "Application", "DeviceOfflineWithName": "{0} has disconnected",
"CategoryPlugin": "Plugin", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"NotificationOptionPluginError": "Plugin failure", "NotificationOptionPluginError": "Plugin failure",
"NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateAvailable": "Application update available",
"NotificationOptionApplicationUpdateInstalled": "Application update installed", "NotificationOptionApplicationUpdateInstalled": "Application update installed",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionTaskFailed": "Scheduled task failure",
"NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionInstallationFailed": "Installation failure",
"NotificationOptionNewLibraryContent": "New content added", "NotificationOptionNewLibraryContent": "New content added",
"NotificationOptionNewLibraryContentMultiple": "New content added (multiple)",
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionCameraImageUploaded": "Camera image uploaded",
"NotificationOptionUserLockedOut": "User locked out", "NotificationOptionUserLockedOut": "User locked out",
"NotificationOptionServerRestartRequired": "Server restart required", "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", "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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "Sync",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "User", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -1,36 +1,68 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Programas",
"Genres": "G\u00e9neros",
"NameSeasonNumber": "Temporada {0}",
"AppDeviceValues": "App: {0}, Dispositivo: {1}", "AppDeviceValues": "App: {0}, Dispositivo: {1}",
"UserDownloadingItemWithValues": "{0} esta descargando {1}", "UserDownloadingItemWithValues": "{0} esta descargando {1}",
"FolderTypeMixed": "Contenido mezclado", "HeaderLiveTV": "TV en Vivo",
"FolderTypeMovies": "Pel\u00edculas", "ChapterNameValue": "Cap\u00edtulo {0}",
"FolderTypeMusic": "M\u00fasica", "ScheduledTaskFailedWithName": "{0} fall\u00f3",
"FolderTypeAdultVideos": "Videos para adultos", "LabelRunningTimeValue": "Duraci\u00f3n: {0}",
"FolderTypePhotos": "Fotos", "ScheduledTaskStartedWithName": "{0} Iniciado",
"FolderTypeMusicVideos": "Videos musicales", "VersionNumber": "Versi\u00f3n {0}",
"FolderTypeHomeVideos": "Videos caseros", "PluginInstalledWithName": "{0} fue instalado",
"FolderTypeGames": "Juegos", "StartupEmbyServerIsLoading": "El servidor Emby esta cargando. Por favor intente de nuevo dentro de poco.",
"FolderTypeBooks": "Libros", "PluginUpdatedWithName": "{0} fue actualizado",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} fue desinstalado",
"FolderTypeInherit": "Heredar", "ItemAddedWithName": "{0} fue agregado a la biblioteca",
"HeaderCastCrew": "Reparto y Personal", "ItemRemovedWithName": "{0} fue removido de la biblioteca",
"HeaderPeople": "Personas", "LabelIpAddressValue": "Direcci\u00f3n IP: {0}",
"ValueSpecialEpisodeName": "Especial: {0}", "DeviceOnlineWithName": "{0} est\u00e1 conectado",
"LabelChapterName": "Cap\u00edtulo {0}", "UserOnlineFromDevice": "{0} est\u00e1 en l\u00ednea desde {1}",
"NameSeasonNumber": "Temporada {0}", "ProviderValue": "Proveedor: {0}",
"LabelExit": "Salir", "SubtitlesDownloadedForItem": "Subt\u00edtulos descargados para {0}",
"LabelVisitCommunity": "Visitar la Comunidad", "UserCreatedWithName": "Se ha creado el usuario {0}",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Se ha cambiado la contrase\u00f1a para el usuario {0}",
"LabelApiDocumentation": "Documentaci\u00f3n del API", "UserDeletedWithName": "Se ha eliminado el usuario {0}",
"LabelDeveloperResources": "Recursos para Desarrolladores", "UserConfigurationUpdatedWithName": "Se ha actualizado la configuraci\u00f3n del usuario {0}",
"LabelBrowseLibrary": "Explorar Biblioteca", "MessageServerConfigurationUpdated": "Se ha actualizado la configuraci\u00f3n del servidor",
"LabelConfigureServer": "Configurar Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la secci\u00f3n {0} de la configuraci\u00f3n del servidor",
"LabelRestartServer": "Reiniciar el Servidor", "MessageApplicationUpdated": "El servidor Emby ha sido actualizado",
"CategorySync": "Sinc.", "FailedLoginAttemptWithUserName": "Intento fallido de inicio de sesi\u00f3n de {0}",
"CategoryUser": "Usuario", "AuthenticationSucceededWithUserName": "{0} autenticado con \u00e9xito",
"CategorySystem": "Sistema", "UserOfflineFromDevice": "{0} se ha desconectado desde {1}",
"CategoryApplication": "Aplicaci\u00f3n", "DeviceOfflineWithName": "{0} se ha desconectado",
"CategoryPlugin": "Complemento", "UserStartedPlayingItemWithValues": "{0} ha iniciado la reproducci\u00f3n de {1}",
"UserStoppedPlayingItemWithValues": "{0} ha detenido la reproducci\u00f3n de {1}",
"NotificationOptionPluginError": "Falla de complemento", "NotificationOptionPluginError": "Falla de complemento",
"NotificationOptionApplicationUpdateAvailable": "Actualizaci\u00f3n de aplicaci\u00f3n disponible", "NotificationOptionApplicationUpdateAvailable": "Actualizaci\u00f3n de aplicaci\u00f3n disponible",
"NotificationOptionApplicationUpdateInstalled": "Actualizaci\u00f3n de aplicaci\u00f3n instalada", "NotificationOptionApplicationUpdateInstalled": "Actualizaci\u00f3n de aplicaci\u00f3n instalada",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Falla de tarea programada", "NotificationOptionTaskFailed": "Falla de tarea programada",
"NotificationOptionInstallationFailed": "Falla de instalaci\u00f3n", "NotificationOptionInstallationFailed": "Falla de instalaci\u00f3n",
"NotificationOptionNewLibraryContent": "Nuevo contenido agregado", "NotificationOptionNewLibraryContent": "Nuevo contenido agregado",
"NotificationOptionNewLibraryContentMultiple": "Nuevo contenido agregado (varios)",
"NotificationOptionCameraImageUploaded": "Imagen de la c\u00e1mara subida", "NotificationOptionCameraImageUploaded": "Imagen de la c\u00e1mara subida",
"NotificationOptionUserLockedOut": "Usuario bloqueado", "NotificationOptionUserLockedOut": "Usuario bloqueado",
"NotificationOptionServerRestartRequired": "Reinicio del servidor requerido", "NotificationOptionServerRestartRequired": "Se necesita reiniciar el 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",
"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",
"UserLockedOutWithName": "El usuario {0} ha sido bloqueado", "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}", "SubtitleDownloadFailureForItem": "Fall\u00f3 la descarga de subt\u00edtulos para {0}",
"HeaderUnidentified": "No Identificado", "Sync": "Sinc.",
"HeaderImagePrimary": "Principal", "User": "Usuario",
"HeaderImageBackdrop": "Imagen de Fondo", "System": "Sistema",
"HeaderImageLogo": "Logo", "Application": "Aplicaci\u00f3n",
"HeaderUserPrimaryImage": "Imagen de Usuario", "Plugin": "Complemento",
"HeaderOverview": "Resumen", "LabelExit": "Salir",
"HeaderShortOverview": "Sinopsis corta:", "LabelVisitCommunity": "Visitar la Comunidad",
"HeaderType": "Tipo", "LabelBrowseLibrary": "Explorar Biblioteca",
"HeaderSeverity": "Severidad", "LabelConfigureServer": "Configurar Emby",
"HeaderUser": "Usuario", "LabelRestartServer": "Reiniciar el Servidor"
"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."
} }

View File

@ -1,178 +1,96 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Series",
"Genres": "G\u00e9neros",
"NameSeasonNumber": "Temporada {0}",
"AppDeviceValues": "Aplicaci\u00f3n: {0}, Dispositivo: {1}", "AppDeviceValues": "Aplicaci\u00f3n: {0}, Dispositivo: {1}",
"UserDownloadingItemWithValues": "{0} est\u00e1 descargando {1}", "UserDownloadingItemWithValues": "{0} est\u00e1 descargando {1}",
"FolderTypeMixed": "Contenido mezclado", "HeaderLiveTV": "TV en vivo",
"FolderTypeMovies": "Peliculas", "ChapterNameValue": "Cap\u00edtulo {0}",
"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",
"ScheduledTaskFailedWithName": "{0} fall\u00f3", "ScheduledTaskFailedWithName": "{0} fall\u00f3",
"LabelRunningTimeValue": "Tiempo de ejecuci\u00f3n: {0}", "LabelRunningTimeValue": "Tiempo de funcionamiento: {0}",
"ScheduledTaskStartedWithName": "{0} iniciado", "ScheduledTaskStartedWithName": "{0} iniciada",
"VersionNumber": "Versi\u00f3n {0}", "VersionNumber": "Versi\u00f3n {0}",
"PluginInstalledWithName": "{0} ha sido instalado", "PluginInstalledWithName": "{0} se ha instalado",
"PluginUpdatedWithName": "{0} ha sido actualizado", "StartupEmbyServerIsLoading": "Emby Server se est\u00e1 cargando. Vuelve a intentarlo en breve.",
"PluginUninstalledWithName": "{0} ha sido desinstalado", "PluginUpdatedWithName": "{0} se actualiz\u00f3",
"ItemAddedWithName": "{0} ha sido a\u00f1adido a la biblioteca", "PluginUninstalledWithName": "{0} se ha desinstalado",
"ItemRemovedWithName": "{0} se ha eliminado de la biblioteca", "ItemAddedWithName": "{0} se ha a\u00f1adido a la biblioteca",
"ItemRemovedWithName": "{0} se elimina de la biblioteca",
"LabelIpAddressValue": "Direcci\u00f3n IP: {0}", "LabelIpAddressValue": "Direcci\u00f3n IP: {0}",
"DeviceOnlineWithName": "{0} est\u00e1 conectado", "DeviceOnlineWithName": "{0} est\u00e1 conectado",
"UserOnlineFromDevice": "{0} est\u00e1 conectado desde {1}", "UserOnlineFromDevice": "{0} est\u00e1 en l\u00ednea desde {1}",
"ProviderValue": "Proveedor: {0}", "ProviderValue": "Proveedor: {0}",
"SubtitlesDownloadedForItem": "Subt\u00edtulos descargados para {0}", "SubtitlesDownloadedForItem": "Descargar subt\u00edtulos para {0}",
"UserConfigurationUpdatedWithName": "Se ha actualizado la configuraci\u00f3n de usuario para {0}", "UserCreatedWithName": "El usuario {0} ha sido creado",
"UserCreatedWithName": "Se ha creado el usuario {0}", "UserPasswordChangedWithName": "Se ha cambiado la contrase\u00f1a para el usuario {0}",
"UserPasswordChangedWithName": "Contrase\u00f1a cambiada al usuario {0}", "UserDeletedWithName": "El usuario {0} ha sido borrado",
"UserDeletedWithName": "El usuario {0} ha sido eliminado", "UserConfigurationUpdatedWithName": "Configuraci\u00f3n de usuario se ha actualizado para {0}",
"MessageServerConfigurationUpdated": "Se ha actualizado la configuraci\u00f3n del servidor", "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", "MessageApplicationUpdated": "Se ha actualizado el servidor Emby",
"FailedLoginAttemptWithUserName": "Intento de inicio de sesi\u00f3n fallido desde {0}", "FailedLoginAttemptWithUserName": "Error al intentar iniciar sesi\u00f3n a partir de {0}",
"AuthenticationSucceededWithUserName": "{0} se ha autenticado satisfactoriamente", "AuthenticationSucceededWithUserName": "{0} autenticado correctamente",
"DeviceOfflineWithName": "{0} se ha desconectado",
"UserLockedOutWithName": "El usuario {0} ha sido bloqueado",
"UserOfflineFromDevice": "{0} se ha desconectado de {1}", "UserOfflineFromDevice": "{0} se ha desconectado de {1}",
"UserStartedPlayingItemWithValues": "{0} ha empezado a reproducir {1}", "DeviceOfflineWithName": "{0} se ha desconectado",
"UserStoppedPlayingItemWithValues": "{0} ha parado de reproducir {1}", "UserStartedPlayingItemWithValues": "{0} ha comenzado jugando {1}",
"SubtitleDownloadFailureForItem": "Fallo en la descarga de subt\u00edtulos para {0}", "UserStoppedPlayingItemWithValues": "{0} ha dejado de reproducir {1}",
"HeaderUnidentified": "Unidentified", "NotificationOptionPluginError": "Error en plugin",
"HeaderImagePrimary": "Primary", "NotificationOptionApplicationUpdateAvailable": "Actualizaci\u00f3n de la aplicaci\u00f3n disponible",
"HeaderImageBackdrop": "Backdrop", "NotificationOptionApplicationUpdateInstalled": "Actualizaci\u00f3n de la aplicaci\u00f3n instalada",
"HeaderImageLogo": "Logo", "NotificationOptionPluginUpdateInstalled": "Actualizaci\u00f3n del complemento instalada",
"HeaderUserPrimaryImage": "User Image", "NotificationOptionPluginInstalled": "Plugin instalado",
"HeaderOverview": "Overview", "NotificationOptionPluginUninstalled": "Plugin desinstalado",
"HeaderShortOverview": "Short Overview", "NotificationOptionVideoPlayback": "Se inici\u00f3 la reproducci\u00f3n de v\u00eddeo",
"HeaderType": "Type", "NotificationOptionAudioPlayback": "Se inici\u00f3 la reproducci\u00f3n de audio",
"HeaderSeverity": "Severity", "NotificationOptionGamePlayback": "Se inici\u00f3 la reproducci\u00f3n del juego",
"HeaderUser": "Usuario", "NotificationOptionVideoPlaybackStopped": "Reproducci\u00f3n de v\u00eddeo detenida",
"HeaderName": "Nombre", "NotificationOptionAudioPlaybackStopped": "Se detuvo la reproducci\u00f3n de audio",
"HeaderDate": "Fecha", "NotificationOptionGamePlaybackStopped": "Se detuvo la reproducci\u00f3n del juego",
"HeaderPremiereDate": "Premiere Date", "NotificationOptionTaskFailed": "Error de tarea programada",
"HeaderDateAdded": "Date Added", "NotificationOptionInstallationFailed": "Error de instalaci\u00f3n",
"HeaderReleaseDate": "Release date", "NotificationOptionNewLibraryContent": "Nuevo contenido a\u00f1adido",
"HeaderRuntime": "Runtime", "NotificationOptionCameraImageUploaded": "Imagen de la c\u00e1mara cargada",
"HeaderPlayCount": "Play Count", "NotificationOptionUserLockedOut": "Usuario bloqueado",
"HeaderSeason": "Season", "NotificationOptionServerRestartRequired": "Requiere reinicio del servidor",
"HeaderSeasonNumber": "Season number", "UserLockedOutWithName": "El usuario {0} ha sido bloqueado",
"HeaderSeries": "Series:", "SubtitleDownloadFailureForItem": "Error al descargar subt\u00edtulos para {0}",
"HeaderNetwork": "Network", "Sync": "Sincronizar",
"HeaderYear": "Year:", "User": "Usuario",
"HeaderYears": "Years:", "System": "Sistema",
"HeaderParentalRating": "Parental Rating", "Application": "Aplicaci\u00f3n",
"HeaderCommunityRating": "Community rating", "Plugin": "Plugin",
"HeaderTrailers": "Trailers", "LabelExit": "Salida",
"HeaderSpecials": "Specials", "LabelVisitCommunity": "Visita la Comunidad",
"HeaderGameSystems": "Game Systems", "LabelBrowseLibrary": "Navegar la biblioteca",
"HeaderPlayers": "Players:", "LabelConfigureServer": "Configurar Emby",
"HeaderAlbumArtists": "Album Artists", "LabelRestartServer": "Configurar Emby"
"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."
} }

View File

@ -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."
}

View File

@ -1,36 +1,68 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Series",
"Genres": "Genres",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "Mixed content", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Movies", "ChapterNameValue": "Chapter {0}",
"FolderTypeMusic": "Music", "ScheduledTaskFailedWithName": "{0} failed",
"FolderTypeAdultVideos": "Adult videos", "LabelRunningTimeValue": "Running time: {0}",
"FolderTypePhotos": "Photos", "ScheduledTaskStartedWithName": "{0} started",
"FolderTypeMusicVideos": "Music videos", "VersionNumber": "Version {0}",
"FolderTypeHomeVideos": "Home videos", "PluginInstalledWithName": "{0} was installed",
"FolderTypeGames": "Games", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"FolderTypeBooks": "Books", "PluginUpdatedWithName": "{0} was updated",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} was uninstalled",
"FolderTypeInherit": "Inherit", "ItemAddedWithName": "{0} was added to the library",
"HeaderCastCrew": "Cast & Crew", "ItemRemovedWithName": "{0} was removed from the library",
"HeaderPeople": "People", "LabelIpAddressValue": "Ip address: {0}",
"ValueSpecialEpisodeName": "Special - {0}", "DeviceOnlineWithName": "{0} is connected",
"LabelChapterName": "Chapter {0}", "UserOnlineFromDevice": "{0} is online from {1}",
"NameSeasonNumber": "Season {0}", "ProviderValue": "Provider: {0}",
"LabelExit": "Quitter", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"LabelVisitCommunity": "Visiter la Communaut\u00e9", "UserCreatedWithName": "User {0} has been created",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"LabelApiDocumentation": "Documentation de l'API", "UserDeletedWithName": "User {0} has been deleted",
"LabelDeveloperResources": "Ressources pour d\u00e9veloppeurs", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"LabelBrowseLibrary": "Parcourir la biblioth\u00e8que", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"LabelConfigureServer": "Configurer Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"LabelRestartServer": "Red\u00e9marrer le Serveur", "MessageApplicationUpdated": "Emby Server has been updated",
"CategorySync": "Sync", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"CategoryUser": "User", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"CategorySystem": "System", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"CategoryApplication": "Application", "DeviceOfflineWithName": "{0} has disconnected",
"CategoryPlugin": "Plugin", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"NotificationOptionPluginError": "Plugin failure", "NotificationOptionPluginError": "Plugin failure",
"NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateAvailable": "Application update available",
"NotificationOptionApplicationUpdateInstalled": "Application update installed", "NotificationOptionApplicationUpdateInstalled": "Application update installed",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionTaskFailed": "Scheduled task failure",
"NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionInstallationFailed": "Installation failure",
"NotificationOptionNewLibraryContent": "New content added", "NotificationOptionNewLibraryContent": "New content added",
"NotificationOptionNewLibraryContentMultiple": "New content added (multiple)",
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionCameraImageUploaded": "Camera image uploaded",
"NotificationOptionUserLockedOut": "User locked out", "NotificationOptionUserLockedOut": "User locked out",
"NotificationOptionServerRestartRequired": "Server restart required", "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", "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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "Sync",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "User", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -1,42 +1,74 @@
{ {
"DbUpgradeMessage": "Veuillez patienter pendant que la base de donn\u00e9e de votre Emby Serveur se met \u00e0 jour. Termin\u00e9e \u00e0 {0}%.", "Latest": "R\u00e9cent",
"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",
"ValueSpecialEpisodeName": "Sp\u00e9cial - {0}", "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",
"TvShows": "TV Shows",
"Shows": "\u00c9missions",
"Genres": "Genres",
"NameSeasonNumber": "Saison {0}", "NameSeasonNumber": "Saison {0}",
"LabelExit": "Quitter", "AppDeviceValues": "Application\u00a0: {0}, Appareil\u00a0: {1}",
"LabelVisitCommunity": "Visiter la Communaut\u00e9", "UserDownloadingItemWithValues": "{0} est en train de t\u00e9l\u00e9charger {1}",
"LabelGithub": "Github", "HeaderLiveTV": "TV en direct",
"LabelApiDocumentation": "Documentation de l'API", "ChapterNameValue": "Chapitre {0}",
"LabelDeveloperResources": "Ressources pour d\u00e9veloppeurs", "ScheduledTaskFailedWithName": "{0} a \u00e9chou\u00e9",
"LabelBrowseLibrary": "Parcourir la biblioth\u00e8que", "LabelRunningTimeValue": "Dur\u00e9e\u00a0: {0}",
"LabelConfigureServer": "Configurer Emby", "ScheduledTaskStartedWithName": "{0} a commenc\u00e9",
"LabelRestartServer": "Red\u00e9marrer le Serveur", "VersionNumber": "Version {0}",
"CategorySync": "Sync", "PluginInstalledWithName": "{0} a \u00e9t\u00e9 install\u00e9",
"CategoryUser": "Utilisateur", "StartupEmbyServerIsLoading": "Le serveur Emby est en cours de chargement. Veuillez r\u00e9essayer dans quelques instants.",
"CategorySystem": "Syst\u00e8me", "PluginUpdatedWithName": "{0} a \u00e9t\u00e9 mis \u00e0 jour",
"CategoryApplication": "Application", "PluginUninstalledWithName": "{0} a \u00e9t\u00e9 d\u00e9sinstall\u00e9",
"CategoryPlugin": "Plugin", "ItemAddedWithName": "{0} a \u00e9t\u00e9 ajout\u00e9 \u00e0 la m\u00e9diath\u00e8que",
"NotificationOptionPluginError": "Erreur de plugin", "ItemRemovedWithName": "{0} a \u00e9t\u00e9 supprim\u00e9 de la m\u00e9diath\u00e8que",
"NotificationOptionApplicationUpdateAvailable": "Mise \u00e0 jour d'application disponible", "LabelIpAddressValue": "Adresse IP\u00a0: {0}",
"NotificationOptionApplicationUpdateInstalled": "Mise \u00e0 jour d'application install\u00e9e", "DeviceOnlineWithName": "{0} est connect\u00e9",
"NotificationOptionPluginUpdateInstalled": "Mise \u00e0 jour de plugin install\u00e9e", "UserOnlineFromDevice": "{0} s'est connect\u00e9 depuis {1}",
"NotificationOptionPluginInstalled": "Plugin install\u00e9", "ProviderValue": "Fournisseur\u00a0: {0}",
"NotificationOptionPluginUninstalled": "Plugin d\u00e9sinstall\u00e9", "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", "NotificationOptionVideoPlayback": "Lecture vid\u00e9o d\u00e9marr\u00e9e",
"NotificationOptionAudioPlayback": "Lecture audio d\u00e9marr\u00e9e", "NotificationOptionAudioPlayback": "Lecture audio d\u00e9marr\u00e9e",
"NotificationOptionGamePlayback": "Lecture de jeu d\u00e9marr\u00e9e", "NotificationOptionGamePlayback": "Lecture de jeu d\u00e9marr\u00e9e",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "\u00c9chec de t\u00e2che planifi\u00e9e", "NotificationOptionTaskFailed": "\u00c9chec de t\u00e2che planifi\u00e9e",
"NotificationOptionInstallationFailed": "\u00c9chec d'installation", "NotificationOptionInstallationFailed": "\u00c9chec d'installation",
"NotificationOptionNewLibraryContent": "Nouveau contenu ajout\u00e9", "NotificationOptionNewLibraryContent": "Nouveau contenu ajout\u00e9",
"NotificationOptionNewLibraryContentMultiple": "Nouveau contenu ajout\u00e9 (multiple)", "NotificationOptionCameraImageUploaded": "L'image de l'appareil photo a \u00e9t\u00e9 transf\u00e9r\u00e9e",
"NotificationOptionCameraImageUploaded": "L'image de l'appareil photo a \u00e9t\u00e9 upload\u00e9e",
"NotificationOptionUserLockedOut": "Utilisateur verrouill\u00e9", "NotificationOptionUserLockedOut": "Utilisateur verrouill\u00e9",
"NotificationOptionServerRestartRequired": "Un red\u00e9marrage du serveur est requis", "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", "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.", "SubtitleDownloadFailureForItem": "Le t\u00e9l\u00e9chargement des sous-titres pour {0} a \u00e9chou\u00e9.",
"HeaderUnidentified": "Non identifi\u00e9", "Sync": "Synchroniser",
"HeaderImagePrimary": "Primaire", "User": "Utilisateur",
"HeaderImageBackdrop": "Contexte", "System": "Syst\u00e8me",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "Avatar de l'utilisateur", "Plugin": "Extension",
"HeaderOverview": "Aper\u00e7u", "LabelExit": "Quitter",
"HeaderShortOverview": "Synopsys", "LabelVisitCommunity": "Visiter la communaut\u00e9",
"HeaderType": "Type", "LabelBrowseLibrary": "Parcourir la m\u00e9diath\u00e8que",
"HeaderSeverity": "S\u00e9v\u00e9rit\u00e9", "LabelConfigureServer": "Configurer Emby",
"HeaderUser": "Utilisateur", "LabelRestartServer": "Red\u00e9marrer le serveur"
"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."
} }

View File

@ -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."
}

View File

@ -1,102 +1,46 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Shows",
"Genres": "\u05d6'\u05d0\u05e0\u05e8\u05d9\u05dd",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "\u05ea\u05d5\u05db\u05df \u05de\u05e2\u05d5\u05e8\u05d1", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "\u05e1\u05e8\u05d8\u05d9\u05dd", "ChapterNameValue": "Chapter {0}",
"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",
"ScheduledTaskFailedWithName": "{0} failed", "ScheduledTaskFailedWithName": "{0} failed",
"LabelRunningTimeValue": "Running time: {0}", "LabelRunningTimeValue": "Running time: {0}",
"ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskStartedWithName": "{0} started",
"VersionNumber": "\u05d2\u05d9\u05e8\u05e1\u05d0 {0}", "VersionNumber": "Version {0}",
"PluginInstalledWithName": "{0} was installed", "PluginInstalledWithName": "{0} was installed",
"StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"PluginUpdatedWithName": "{0} was updated", "PluginUpdatedWithName": "{0} was updated",
"PluginUninstalledWithName": "{0} was uninstalled", "PluginUninstalledWithName": "{0} was uninstalled",
"ItemAddedWithName": "{0} was added to the library", "ItemAddedWithName": "{0} was added to the library",
@ -106,73 +50,47 @@
"UserOnlineFromDevice": "{0} is online from {1}", "UserOnlineFromDevice": "{0} is online from {1}",
"ProviderValue": "Provider: {0}", "ProviderValue": "Provider: {0}",
"SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"UserCreatedWithName": "User {0} has been created", "UserCreatedWithName": "User {0} has been created",
"UserPasswordChangedWithName": "Password has been changed for user {0}", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"UserDeletedWithName": "User {0} has been deleted", "UserDeletedWithName": "User {0} has been deleted",
"UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"MessageApplicationUpdated": "Emby Server has been updated", "MessageApplicationUpdated": "Emby Server has been updated",
"FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"AuthenticationSucceededWithUserName": "{0} successfully authenticated", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"DeviceOfflineWithName": "{0} has disconnected",
"UserLockedOutWithName": "User {0} has been locked out",
"UserOfflineFromDevice": "{0} has disconnected from {1}", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"DeviceOfflineWithName": "{0} has disconnected",
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped 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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "\u05e1\u05e0\u05db\u05e8\u05df",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "User", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -1,36 +1,68 @@
{ {
"DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", "Latest": "Najnovije",
"AppDeviceValues": "App: {0}, Device: {1}", "ValueSpecialEpisodeName": "Specijal - {0}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "Inherit": "Naslijedi",
"FolderTypeMixed": "Mixed content", "Books": "Knjige",
"FolderTypeMovies": "Movies", "Music": "Glazba",
"FolderTypeMusic": "Music", "Games": "Igre",
"FolderTypeAdultVideos": "Adult videos", "Photos": "Slike",
"FolderTypePhotos": "Photos", "MixedContent": "Mije\u0161ani sadr\u017eaj",
"FolderTypeMusicVideos": "Music videos", "MusicVideos": "Glazbeni spotovi",
"FolderTypeHomeVideos": "Home videos", "HomeVideos": "Ku\u0107ni videi",
"FolderTypeGames": "Games", "Playlists": "Popisi",
"FolderTypeBooks": "Books", "HeaderRecordingGroups": "Grupa snimka",
"FolderTypeTvShows": "TV", "HeaderContinueWatching": "Continue Watching",
"FolderTypeInherit": "Inherit", "HeaderFavoriteArtists": "Omiljeni izvo\u0111a\u010di",
"HeaderCastCrew": "Glumci i ekipa", "HeaderFavoriteSongs": "Omiljene pjesme",
"HeaderPeople": "People", "HeaderAlbumArtists": "Izvo\u0111a\u010di albuma",
"ValueSpecialEpisodeName": "Special - {0}", "HeaderFavoriteAlbums": "Omiljeni albumi",
"LabelChapterName": "Chapter {0}", "HeaderFavoriteEpisodes": "Omiljene epizode",
"NameSeasonNumber": "Season {0}", "HeaderFavoriteShows": "Omiljene emisije",
"LabelExit": "Izlaz", "HeaderNextUp": "Sljede\u0107e je",
"LabelVisitCommunity": "Posjeti zajednicu", "Favorites": "Omiljeni",
"LabelGithub": "Github", "Collections": "Kolekcije",
"LabelApiDocumentation": "Api Documentation", "Channels": "Kanali",
"LabelDeveloperResources": "Developer Resources", "Movies": "Filmovi",
"LabelBrowseLibrary": "Pregledaj biblioteku", "Albums": "Albumi",
"LabelConfigureServer": "Configure Emby", "Artists": "Izvo\u0111a\u010di",
"LabelRestartServer": "Restartiraj Server", "Folders": "Mape",
"CategorySync": "Sync", "Songs": "Pjesme",
"CategoryUser": "Korisnik", "TvShows": "TV Shows",
"CategorySystem": "Sistem", "Shows": "Shows",
"CategoryApplication": "Aplikacija", "Genres": "\u017danrovi",
"CategoryPlugin": "Dodatak", "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", "NotificationOptionPluginError": "Dodatak otkazao",
"NotificationOptionApplicationUpdateAvailable": "Dostupno a\u017euriranje aplikacije", "NotificationOptionApplicationUpdateAvailable": "Dostupno a\u017euriranje aplikacije",
"NotificationOptionApplicationUpdateInstalled": "Instalirano a\u017euriranje aplikacije", "NotificationOptionApplicationUpdateInstalled": "Instalirano a\u017euriranje aplikacije",
@ -40,139 +72,25 @@
"NotificationOptionVideoPlayback": "Reprodukcija videa zapo\u010deta", "NotificationOptionVideoPlayback": "Reprodukcija videa zapo\u010deta",
"NotificationOptionAudioPlayback": "Reprodukcija glazbe zapo\u010deta", "NotificationOptionAudioPlayback": "Reprodukcija glazbe zapo\u010deta",
"NotificationOptionGamePlayback": "Igrica pokrenuta", "NotificationOptionGamePlayback": "Igrica pokrenuta",
"NotificationOptionVideoPlaybackStopped": "Video playback stopped", "NotificationOptionVideoPlaybackStopped": "Reprodukcija videozapisa je zaustavljena",
"NotificationOptionAudioPlaybackStopped": "Audio playback stopped", "NotificationOptionAudioPlaybackStopped": "Reprodukcija audiozapisa je zaustavljena",
"NotificationOptionGamePlaybackStopped": "Game playback stopped", "NotificationOptionGamePlaybackStopped": "Reprodukcija igre je zaustavljena",
"NotificationOptionTaskFailed": "Zakazan zadatak nije izvr\u0161en", "NotificationOptionTaskFailed": "Zakazan zadatak nije izvr\u0161en",
"NotificationOptionInstallationFailed": "Instalacija nije izvr\u0161ena", "NotificationOptionInstallationFailed": "Instalacija nije izvr\u0161ena",
"NotificationOptionNewLibraryContent": "Novi sadr\u017eaj dodan", "NotificationOptionNewLibraryContent": "Novi sadr\u017eaj je dodan",
"NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", "NotificationOptionCameraImageUploaded": "Slike kamere preuzete",
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "Korisnik zaklju\u010dan",
"NotificationOptionUserLockedOut": "User locked out",
"NotificationOptionServerRestartRequired": "Potrebno ponovo pokretanje servera", "NotificationOptionServerRestartRequired": "Potrebno ponovo pokretanje servera",
"ViewTypePlaylists": "Playlists", "UserLockedOutWithName": "Korisnik {0} je zaklju\u010dan",
"ViewTypeMovies": "Movies", "SubtitleDownloadFailureForItem": "Titlovi prijevoda nisu preuzeti za {0}",
"ViewTypeTvShows": "TV", "Sync": "Sink.",
"ViewTypeGames": "Games", "User": "Korisnik",
"ViewTypeMusic": "Music", "System": "Sistem",
"ViewTypeMusicGenres": "Genres", "Application": "Aplikacija",
"ViewTypeMusicArtists": "Artists", "Plugin": "Dodatak",
"ViewTypeBoxSets": "Collections", "LabelExit": "Izlaz",
"ViewTypeChannels": "Channels", "LabelVisitCommunity": "Posjeti zajednicu",
"ViewTypeLiveTV": "Live TV", "LabelBrowseLibrary": "Pregledaj biblioteku",
"ViewTypeLiveTvNowPlaying": "Now Airing", "LabelConfigureServer": "Podesi Emby",
"ViewTypeLatestGames": "Latest Games", "LabelRestartServer": "Restartiraj Server"
"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."
} }

View File

@ -1,178 +1,96 @@
{ {
"DbUpgradeMessage": "K\u00e9rlek v\u00e1rj, m\u00edg az Emby Szerver adatb\u00e1zis friss\u00fcl. {0}% k\u00e9sz.", "Latest": "Leg\u00fajabb",
"AppDeviceValues": "App: {0}, Device: {1}", "ValueSpecialEpisodeName": "Special - {0}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "Inherit": "Inherit",
"FolderTypeMixed": "Vegyes tartalom", "Books": "Books",
"FolderTypeMovies": "Filmek", "Music": "Music",
"FolderTypeMusic": "Zen\u00e9k", "Games": "Games",
"FolderTypeAdultVideos": "Feln\u0151tt vide\u00f3k", "Photos": "Photos",
"FolderTypePhotos": "F\u00e9nyk\u00e9pek", "MixedContent": "Mixed content",
"FolderTypeMusicVideos": "Zenei vide\u00f3k", "MusicVideos": "Music videos",
"FolderTypeHomeVideos": "H\u00e1zi vide\u00f3k", "HomeVideos": "Home videos",
"FolderTypeGames": "J\u00e1t\u00e9kok", "Playlists": "Playlists",
"FolderTypeBooks": "K\u00f6nyvek", "HeaderRecordingGroups": "Recording Groups",
"FolderTypeTvShows": "TV", "HeaderContinueWatching": "Vet\u00edt\u00e9s(ek) folytat\u00e1sa",
"FolderTypeInherit": "Inherit", "HeaderFavoriteArtists": "Favorite Artists",
"HeaderCastCrew": "Szerepl\u0151k & R\u00e9sztvev\u0151k", "HeaderFavoriteSongs": "Favorite Songs",
"HeaderPeople": "Emberek", "HeaderAlbumArtists": "Album Artists",
"ValueSpecialEpisodeName": "K\u00fcl\u00f6nleges - {0}", "HeaderFavoriteAlbums": "Favorite Albums",
"LabelChapterName": "Fejezet {0}", "HeaderFavoriteEpisodes": "Kedvenc Epiz\u00f3dok",
"NameSeasonNumber": "\u00c9vad {0}", "HeaderFavoriteShows": "Kedvenc M\u0171sorok",
"LabelExit": "Kil\u00e9p\u00e9s", "HeaderNextUp": "K\u00f6vetkezik",
"LabelVisitCommunity": "K\u00f6z\u00f6ss\u00e9g", "Favorites": "Favorites",
"LabelGithub": "Github", "Collections": "Gy\u0171jtem\u00e9nyek",
"LabelApiDocumentation": "Api dokument\u00e1ci\u00f3", "Channels": "Csatorn\u00e1k",
"LabelDeveloperResources": "Fejleszt\u0151i eszk\u00f6z\u00f6k", "Movies": "Movies",
"LabelBrowseLibrary": "M\u00e9diat\u00e1r tall\u00f3z\u00e1sa", "Albums": "Albums",
"LabelConfigureServer": "Emby konfigur\u00e1l\u00e1sa", "Artists": "Artists",
"LabelRestartServer": "Szerver \u00fajraindit\u00e1sa", "Folders": "Folders",
"CategorySync": "Sync", "Songs": "Songs",
"CategoryUser": "Felhaszn\u00e1l\u00f3", "TvShows": "TV Shows",
"CategorySystem": "Rendszer", "Shows": "Shows",
"CategoryApplication": "Alkalmaz\u00e1s", "Genres": "M\u0171fajok",
"CategoryPlugin": "B\u0151v\u00edtm\u00e9ny", "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", "NotificationOptionPluginError": "B\u0151v\u00edtm\u00e9ny hiba",
"NotificationOptionApplicationUpdateAvailable": "Friss\u00edt\u00e9s el\u00e9rhet\u0151", "NotificationOptionApplicationUpdateAvailable": "Friss\u00edt\u00e9s el\u00e9rhet\u0151",
"NotificationOptionApplicationUpdateInstalled": "Program friss\u00edt\u00e9s telep\u00edtve", "NotificationOptionApplicationUpdateInstalled": "Program friss\u00edt\u00e9s telep\u00edtve",
"NotificationOptionPluginUpdateInstalled": "B\u0151v\u00edtm\u00e9ny friss\u00edt\u00e9s telep\u00edtve", "NotificationOptionPluginUpdateInstalled": "B\u0151v\u00edtm\u00e9ny friss\u00edt\u00e9s telep\u00edtve",
"NotificationOptionPluginInstalled": "B\u0151v\u00edtm\u00e9ny telep\u00edtve", "NotificationOptionPluginInstalled": "B\u0151v\u00edtm\u00e9ny telep\u00edtve",
"NotificationOptionPluginUninstalled": "B\u0151v\u00edtm\u00e9ny elt\u00e1vol\u00edtva", "NotificationOptionPluginUninstalled": "B\u0151v\u00edtm\u00e9ny elt\u00e1vol\u00edtva",
"NotificationOptionVideoPlayback": "Vide\u00f3 elind\u00edtva", "NotificationOptionVideoPlayback": "Vide\u00f3 lej\u00e1tsz\u00e1s elkezdve",
"NotificationOptionAudioPlayback": "Zene elind\u00edtva", "NotificationOptionAudioPlayback": "Audi\u00f3 lej\u00e1tsz\u00e1s elkezdve",
"NotificationOptionGamePlayback": "J\u00e1t\u00e9k elind\u00edtva", "NotificationOptionGamePlayback": "Game playback started",
"NotificationOptionVideoPlaybackStopped": "Vide\u00f3 meg\u00e1ll\u00edtva", "NotificationOptionVideoPlaybackStopped": "Vide\u00f3 lej\u00e1tsz\u00e1s befejezve",
"NotificationOptionAudioPlaybackStopped": "Zene meg\u00e1ll\u00edtva", "NotificationOptionAudioPlaybackStopped": "Audi\u00f3 lej\u00e1tsz\u00e1s befejezve",
"NotificationOptionGamePlaybackStopped": "J\u00e1t\u00e9k meg\u00e1ll\u00edtva", "NotificationOptionGamePlaybackStopped": "Game playback stopped",
"NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionTaskFailed": "Scheduled task failure",
"NotificationOptionInstallationFailed": "Telep\u00edt\u00e9si hiba", "NotificationOptionInstallationFailed": "Telep\u00edt\u00e9si hiba",
"NotificationOptionNewLibraryContent": "\u00daj tartalom hozz\u00e1adva", "NotificationOptionNewLibraryContent": "\u00daj tartalom hozz\u00e1adva",
"NotificationOptionNewLibraryContentMultiple": "\u00daj tartalom hozz\u00e1adva (t\u00f6bbsz\u00f6r\u00f6s)",
"NotificationOptionCameraImageUploaded": "Kamera k\u00e9p felt\u00f6ltve", "NotificationOptionCameraImageUploaded": "Kamera k\u00e9p felt\u00f6ltve",
"NotificationOptionUserLockedOut": "Felhaszn\u00e1l\u00f3 tiltva", "NotificationOptionUserLockedOut": "Felhaszn\u00e1l\u00f3 tiltva",
"NotificationOptionServerRestartRequired": "\u00dajraind\u00edt\u00e1s sz\u00fcks\u00e9ges", "NotificationOptionServerRestartRequired": "Szerver \u00fajraind\u00edt\u00e1s sz\u00fcks\u00e9ges",
"ViewTypePlaylists": "Lej\u00e1tsz\u00e1si list\u00e1k", "UserLockedOutWithName": "User {0} has been locked out",
"ViewTypeMovies": "Filmek", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"ViewTypeTvShows": "TV", "Sync": "Szinkroniz\u00e1l",
"ViewTypeGames": "J\u00e1t\u00e9kok", "User": "User",
"ViewTypeMusic": "Zene", "System": "System",
"ViewTypeMusicGenres": "M\u0171fajok", "Application": "Application",
"ViewTypeMusicArtists": "M\u0171v\u00e9szek", "Plugin": "Plugin",
"ViewTypeBoxSets": "Gy\u0171jtem\u00e9nyek", "LabelExit": "Kil\u00e9p\u00e9s",
"ViewTypeChannels": "Csatorn\u00e1k", "LabelVisitCommunity": "K\u00f6z\u00f6ss\u00e9g",
"ViewTypeLiveTV": "\u00c9l\u0151 TV", "LabelBrowseLibrary": "M\u00e9diat\u00e1r tall\u00f3z\u00e1sa",
"ViewTypeLiveTvNowPlaying": "Most J\u00e1tszott", "LabelConfigureServer": "Emby konfigur\u00e1l\u00e1sa",
"ViewTypeLatestGames": "Leg\u00fajabb J\u00e1t\u00e9kok", "LabelRestartServer": "Szerver \u00fajraindit\u00e1sa"
"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."
} }

View File

@ -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."
}

View File

@ -1,178 +1,96 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Programmi",
"Genres": "Generi",
"NameSeasonNumber": "Stagione {0}",
"AppDeviceValues": "App: {0}, Dispositivo: {1}", "AppDeviceValues": "App: {0}, Dispositivo: {1}",
"UserDownloadingItemWithValues": "{0} sta scaricando {1}", "UserDownloadingItemWithValues": "{0} sta scaricando {1}",
"FolderTypeMixed": "contenuto misto", "HeaderLiveTV": "Diretta TV",
"FolderTypeMovies": "Film", "ChapterNameValue": "Capitolo {0}",
"FolderTypeMusic": "Musica", "ScheduledTaskFailedWithName": "{0} fallito",
"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",
"LabelRunningTimeValue": "Durata: {0}", "LabelRunningTimeValue": "Durata: {0}",
"ScheduledTaskStartedWithName": "{0} Avviati", "ScheduledTaskStartedWithName": "{0} avviati",
"VersionNumber": "Versione {0}", "VersionNumber": "Versione {0}",
"PluginInstalledWithName": "{0} sono stati Installati", "PluginInstalledWithName": "{0} \u00e8 stato Installato",
"PluginUpdatedWithName": "{0} sono stati aggiornati", "StartupEmbyServerIsLoading": "Emby server si sta avviando. Per favore riprova pi\u00f9 tardi.",
"PluginUninstalledWithName": "{0} non sono stati installati", "PluginUpdatedWithName": "{0} \u00e8 stato aggiornato",
"ItemAddedWithName": "{0} aggiunti alla libreria", "PluginUninstalledWithName": "{0} \u00e8 stato disinstallato",
"ItemRemovedWithName": "{0} rimossi dalla libreria", "ItemAddedWithName": "{0} \u00e8 stato aggiunto alla libreria",
"ItemRemovedWithName": "{0} \u00e8 stato rimosso dalla libreria",
"LabelIpAddressValue": "Indirizzo IP: {0}", "LabelIpAddressValue": "Indirizzo IP: {0}",
"DeviceOnlineWithName": "{0} \u00e8 connesso", "DeviceOnlineWithName": "{0} \u00e8 connesso",
"UserOnlineFromDevice": "{0} \u00e8 online da {1}", "UserOnlineFromDevice": "{0} \u00e8 online da {1}",
"ProviderValue": "Provider: {0}", "ProviderValue": "Provider: {0}",
"SubtitlesDownloadedForItem": "Sottotitoli scaricati per {0}", "SubtitlesDownloadedForItem": "Sottotitoli scaricati per {0}",
"UserConfigurationUpdatedWithName": "Configurazione utente \u00e8 stata aggiornata per {0}", "UserCreatedWithName": "L'utente {0} \u00e8 stato creato",
"UserCreatedWithName": "Utente {0} \u00e8 stato creato", "UserPasswordChangedWithName": "La password \u00e8 stata cambiata per l'utente {0}",
"UserPasswordChangedWithName": "Password utente cambiata per {0}", "UserDeletedWithName": "L'utente {0} \u00e8 stato rimosso",
"UserDeletedWithName": "Utente {0} \u00e8 stato cancellato", "UserConfigurationUpdatedWithName": "La configurazione utente \u00e8 stata aggiornata per {0}",
"MessageServerConfigurationUpdated": "Configurazione server aggioprnata", "MessageServerConfigurationUpdated": "La configurazione del server \u00e8 stata aggiornata",
"MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} \u00e8 stata aggiornata", "MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} della configurazione server \u00e8 stata aggiornata",
"MessageApplicationUpdated": "Il Server Emby \u00e8 stato aggiornato", "MessageApplicationUpdated": "Il Server Emby \u00e8 stato aggiornato",
"FailedLoginAttemptWithUserName": "Login fallito da {0}", "FailedLoginAttemptWithUserName": "Tentativo di accesso fallito da {0}",
"AuthenticationSucceededWithUserName": "{0} Autenticati con successo", "AuthenticationSucceededWithUserName": "{0} autenticato con successo",
"DeviceOfflineWithName": "{0} \u00e8 stato disconesso", "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", "UserLockedOutWithName": "L'utente {0} \u00e8 stato bloccato",
"UserOfflineFromDevice": "{0} \u00e8 stato disconesso da {1}", "SubtitleDownloadFailureForItem": "Impossibile scaricare i sottotitoli per {0}",
"UserStartedPlayingItemWithValues": "{0} \u00e8 partito da {1}", "Sync": "Sincronizza",
"UserStoppedPlayingItemWithValues": "{0} stoppato {1}", "User": "Utente",
"SubtitleDownloadFailureForItem": "Sottotitoli non scaricati per {0}", "System": "Sistema",
"HeaderUnidentified": "Non identificata", "Application": "Applicazione",
"HeaderImagePrimary": "Primaria", "Plugin": "Plug-in",
"HeaderImageBackdrop": "Sfondo", "LabelExit": "Esci",
"HeaderImageLogo": "Logo", "LabelVisitCommunity": "Visita il forum di discussione",
"HeaderUserPrimaryImage": "Immagine utente", "LabelBrowseLibrary": "Esplora la libreria",
"HeaderOverview": "Panoramica", "LabelConfigureServer": "Configura Emby",
"HeaderShortOverview": "breve panoramica", "LabelRestartServer": "Riavvia Server"
"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"
} }

View File

@ -1,38 +1,70 @@
{ {
"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",
"TvShows": "\u0422\u0414-\u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\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}", "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}", "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", "HeaderLiveTV": "\u042d\u0444\u0438\u0440",
"FolderTypeMovies": "\u041a\u0438\u043d\u043e", "ChapterNameValue": "{0}-\u0441\u0430\u0445\u043d\u0430",
"FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", "ScheduledTaskFailedWithName": "{0} \u0441\u04d9\u0442\u0441\u0456\u0437",
"FolderTypeAdultVideos": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0456\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", "LabelRunningTimeValue": "\u0406\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443 \u0443\u0430\u049b\u044b\u0442\u044b: {0}",
"FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", "ScheduledTaskStartedWithName": "{0} \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0434\u044b",
"FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", "VersionNumber": "\u041d\u04b1\u0441\u049b\u0430\u0441\u044b: {0}",
"FolderTypeHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456", "PluginInstalledWithName": "{0} \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b",
"FolderTypeGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", "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.",
"FolderTypeBooks": "\u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440", "PluginUpdatedWithName": "{0} \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b",
"FolderTypeTvShows": "\u0422\u0414", "PluginUninstalledWithName": "{0} \u0436\u043e\u0439\u044b\u043b\u0434\u044b",
"FolderTypeInherit": "\u041c\u04b1\u0440\u0430\u0493\u0430 \u0438\u0435\u043b\u0435\u043d\u0443", "ItemAddedWithName": "{0} \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0434\u0456",
"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", "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",
"HeaderPeople": "\u0410\u0434\u0430\u043c\u0434\u0430\u0440", "LabelIpAddressValue": "IP-\u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b: {0}",
"ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}", "DeviceOnlineWithName": "{0} \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d",
"LabelChapterName": "{0}-\u0441\u0430\u0445\u043d\u0430", "UserOnlineFromDevice": "{0} - {1} \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d",
"NameSeasonNumber": "{0}-\u0441\u0435\u0437\u043e\u043d", "ProviderValue": "\u0416\u0435\u0442\u043a\u0456\u0437\u0443\u0448\u0456: {0}",
"LabelExit": "\u0428\u044b\u0493\u0443", "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",
"LabelVisitCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", "UserCreatedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u0436\u0430\u0441\u0430\u043b\u0493\u0430\u043d",
"LabelGithub": "GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\u0456", "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",
"LabelApiDocumentation": "API \u049b\u04b1\u0436\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b", "UserDeletedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u0436\u043e\u0439\u044b\u043b\u0493\u0430\u043d",
"LabelDeveloperResources": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u04e9\u0437\u0434\u0435\u0440\u0456", "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",
"LabelBrowseLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443", "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",
"LabelConfigureServer": "Emby \u0442\u0435\u04a3\u0448\u0435\u0443", "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",
"LabelRestartServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443", "MessageApplicationUpdated": "Emby Server \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b.",
"CategorySync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", "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",
"CategoryUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b", "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",
"CategorySystem": "\u0416\u04af\u0439\u0435", "UserOfflineFromDevice": "{0} - {1} \u0442\u0430\u0440\u0430\u043f\u044b\u043d\u0430\u043d \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0493\u0430\u043d",
"CategoryApplication": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430", "DeviceOfflineWithName": "{0} \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0493\u0430\u043d",
"CategoryPlugin": "\u041f\u043b\u0430\u0433\u0438\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", "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", "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", "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", "NotificationOptionPluginInstalled": "\u041f\u043b\u0430\u0433\u0438\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b",
@ -46,133 +78,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", "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", "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", "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", "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", "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", "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", "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", "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", "Sync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443",
"HeaderImagePrimary": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456", "User": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b",
"HeaderImageBackdrop": "\u0410\u0440\u0442\u049b\u044b \u0441\u0443\u0440\u0435\u0442", "System": "\u0416\u04af\u0439\u0435",
"HeaderImageLogo": "\u041b\u043e\u0433\u043e\u0442\u0438\u043f", "Application": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430",
"HeaderUserPrimaryImage": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0441\u0443\u0440\u0435\u0442\u0456", "Plugin": "\u041f\u043b\u0430\u0433\u0438\u043d",
"HeaderOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443", "LabelExit": "\u0428\u044b\u0493\u0443",
"HeaderShortOverview": "\u049a\u044b\u0441\u049b\u0430\u0448\u0430 \u0448\u043e\u043b\u0443", "LabelVisitCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443",
"HeaderType": "\u0422\u04af\u0440\u0456", "LabelBrowseLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443",
"HeaderSeverity": "\u049a\u0438\u044b\u043d\u0434\u044b\u0493\u044b", "LabelConfigureServer": "Emby \u0442\u0435\u04a3\u0448\u0435\u0443",
"HeaderUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b", "LabelRestartServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443"
"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."
} }

View File

@ -1,178 +1,96 @@
{ {
"DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", "Latest": "Latest",
"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",
"ValueSpecialEpisodeName": "Special - {0}", "ValueSpecialEpisodeName": "Special - {0}",
"LabelChapterName": "\ucc55\ud130 {0}", "Inherit": "Inherit",
"NameSeasonNumber": "\uc2dc\uc98c {0}", "Books": "Books",
"LabelExit": "\uc885\ub8cc", "Music": "Music",
"LabelVisitCommunity": "\ucee4\ubba4\ub2c8\ud2f0 \ubc29\ubb38", "Games": "Games",
"LabelGithub": "Github", "Photos": "Photos",
"LabelApiDocumentation": "Api \ubb38\uc11c", "MixedContent": "Mixed content",
"LabelDeveloperResources": "\uac1c\ubc1c\uc790 \ub9ac\uc18c\uc2a4", "MusicVideos": "Music videos",
"LabelBrowseLibrary": "\ub77c\uc774\ube0c\ub7ec\ub9ac \ud0d0\uc0c9", "HomeVideos": "Home videos",
"LabelConfigureServer": "Emby \uc124\uc815", "Playlists": "Playlists",
"LabelRestartServer": "\uc11c\ubc84 \uc7ac\uc2dc\ub3d9", "HeaderRecordingGroups": "Recording Groups",
"CategorySync": "\ub3d9\uae30\ud654", "HeaderContinueWatching": "\uacc4\uc18d \uc2dc\uccad\ud558\uae30",
"CategoryUser": "\uc0ac\uc6a9\uc790", "HeaderFavoriteArtists": "Favorite Artists",
"CategorySystem": "\uc2dc\uc2a4\ud15c", "HeaderFavoriteSongs": "Favorite Songs",
"CategoryApplication": "\uc560\ud50c\ub9ac\ucf00\uc774\uc158", "HeaderAlbumArtists": "\uc568\ubc94 \uc544\ud2f0\uc2a4\ud2b8",
"CategoryPlugin": "\ud50c\ub7ec\uadf8\uc778", "HeaderFavoriteAlbums": "Favorite Albums",
"NotificationOptionPluginError": "\ud50c\ub7ec\uadf8\uc778 \uc2e4\ud328", "HeaderFavoriteEpisodes": "Favorite Episodes",
"NotificationOptionApplicationUpdateAvailable": "\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc5c5\ub370\uc774\ud2b8 \uc0ac\uc6a9 \uac00\ub2a5", "HeaderFavoriteShows": "\uc990\uaca8\ucc3e\ub294 \uc1fc",
"NotificationOptionApplicationUpdateInstalled": "\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc5c5\ub370\uc774\ud2b8 \uc124\uce58\ub428", "HeaderNextUp": "Next Up",
"NotificationOptionPluginUpdateInstalled": "\ud50c\ub7ec\uadf8\uc778 \uc5c5\ub370\uc774\ud2b8 \uc124\uce58\ub428", "Favorites": "Favorites",
"NotificationOptionPluginInstalled": "\ud50c\ub7ec\uadf8\uc778 \uc124\uce58\ub428", "Collections": "Collections",
"NotificationOptionPluginUninstalled": "\ud50c\ub7ec\uadf8\uc778 \uc124\uce58 \uc81c\uac70\ub428", "Channels": "Channels",
"NotificationOptionVideoPlayback": "\ube44\ub514\uc624 \uc7ac\uc0dd \uc2dc\uc791\ub428", "Movies": "Movies",
"NotificationOptionAudioPlayback": "\uc624\ub514\uc624 \uc7ac\uc0dd \uc2dc\uc791\ub428", "Albums": "Albums",
"NotificationOptionGamePlayback": "\uac8c\uc784 \ud50c\ub808\uc774 \uc9c0\uc791\ub428", "Artists": "Artists",
"NotificationOptionVideoPlaybackStopped": "\ube44\ub514\uc624 \uc7ac\uc0dd \uc911\uc9c0\ub428", "Folders": "Folders",
"NotificationOptionAudioPlaybackStopped": "\uc624\ub514\uc624 \uc7ac\uc0dd \uc911\uc9c0\ub428", "Songs": "Songs",
"NotificationOptionGamePlaybackStopped": "\uac8c\uc784 \ud50c\ub808\uc774 \uc911\uc9c0\ub428", "TvShows": "TV Shows",
"NotificationOptionTaskFailed": "\uc608\uc57d \uc791\uc5c5 \uc2e4\ud328", "Shows": "Shows",
"NotificationOptionInstallationFailed": "\uc124\uce58 \uc2e4\ud328", "Genres": "Genres",
"NotificationOptionNewLibraryContent": "\uc0c8 \ucf58\ud150\ud2b8 \ucd94\uac00\ub428", "NameSeasonNumber": "Season {0}",
"NotificationOptionNewLibraryContentMultiple": "\uc0c8 \ucf58\ub374\ud2b8 \ucd94\uac00\ub428 (\ubcf5\uc218)", "AppDeviceValues": "App: {0}, Device: {1}",
"NotificationOptionCameraImageUploaded": "\uce74\uba54\ub77c \uc774\ubbf8\uc9c0 \uc5c5\ub85c\ub4dc\ub428", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"NotificationOptionUserLockedOut": "User locked out", "HeaderLiveTV": "Live TV",
"NotificationOptionServerRestartRequired": "\uc11c\ubc84\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4", "ChapterNameValue": "Chapter {0}",
"ViewTypePlaylists": "\uc7ac\uc0dd\ubaa9\ub85d", "ScheduledTaskFailedWithName": "{0} failed",
"ViewTypeMovies": "\uc601\ud654", "LabelRunningTimeValue": "Running time: {0}",
"ViewTypeTvShows": "TV", "ScheduledTaskStartedWithName": "{0} started",
"ViewTypeGames": "\uac8c\uc784", "VersionNumber": "Version {0}",
"ViewTypeMusic": "\uc74c\uc545", "PluginInstalledWithName": "{0} was installed",
"ViewTypeMusicGenres": "\uc7a5\ub974", "StartupEmbyServerIsLoading": "Emby \uc11c\ubc84\ub97c \ubd88\ub7ec\uc624\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc7a0\uc2dc\ud6c4 \ub2e4\uc2dc\uc2dc\ub3c4 \ud574\uc8fc\uc138\uc694.",
"ViewTypeMusicArtists": "\uc544\ud2f0\uc2a4\ud2b8", "PluginUpdatedWithName": "{0} was updated",
"ViewTypeBoxSets": "\uceec\ub809\uc158", "PluginUninstalledWithName": "{0} was uninstalled",
"ViewTypeChannels": "\ucc44\ub110", "ItemAddedWithName": "{0} was added to the library",
"ViewTypeLiveTV": "TV \ubc29\uc1a1", "ItemRemovedWithName": "{0} was removed from the library",
"ViewTypeLiveTvNowPlaying": "\uc9c0\uae08 \ubc29\uc1a1 \uc911", "LabelIpAddressValue": "Ip address: {0}",
"ViewTypeLatestGames": "\ucd5c\uadfc \uac8c\uc784", "DeviceOnlineWithName": "{0} is connected",
"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",
"UserOnlineFromDevice": "{0} is online from {1}", "UserOnlineFromDevice": "{0} is online from {1}",
"ProviderValue": "\uc81c\uacf5\uc790: {0}", "ProviderValue": "Provider: {0}",
"SubtitlesDownloadedForItem": "{0} \uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc\ub428", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"UserConfigurationUpdatedWithName": "{0} \uc0ac\uc6a9\uc790 \uc124\uc815\uc774 \uc5c5\ub370\uc774\ud2b8\ub428", "UserCreatedWithName": "User {0} has been created",
"UserCreatedWithName": "\uc0ac\uc6a9\uc790 {0} \uc0dd\uc131\ub428", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"UserPasswordChangedWithName": "\uc0ac\uc6a9\uc790 {0} \ube44\ubc00\ubc88\ud638 \ubcc0\uacbd\ub428", "UserDeletedWithName": "User {0} has been deleted",
"UserDeletedWithName": "\uc0ac\uc6a9\uc790 {0} \uc0ad\uc81c\ub428", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"MessageServerConfigurationUpdated": "\uc11c\ubc84 \ud658\uacbd \uc124\uc815 \uc5c5\ub370\uc774\ub4dc\ub428", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"MessageNamedServerConfigurationUpdatedWithValue": "\uc11c\ubc84 \ud658\uacbd \uc124\uc815 {0} \uc139\uc158 \uc5c5\ub370\uc774\ud2b8 \ub428", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"MessageApplicationUpdated": "Emby \uc11c\ubc84 \uc5c5\ub370\uc774\ud2b8\ub428", "MessageApplicationUpdated": "Emby Server has been updated",
"FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"AuthenticationSucceededWithUserName": "{0} successfully authenticated", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"DeviceOfflineWithName": "{0} \uc5f0\uacb0 \ud574\uc81c\ub428", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"UserLockedOutWithName": "User {0} has been locked out", "DeviceOfflineWithName": "{0} has disconnected",
"UserOfflineFromDevice": "{1} \uc5d0\uc11c {0} \uc5f0\uacb0 \ud574\uc81c\ub428",
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"SubtitleDownloadFailureForItem": "{0} \uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc \uc2e4\ud328", "NotificationOptionPluginError": "Plugin failure",
"HeaderUnidentified": "Unidentified", "NotificationOptionApplicationUpdateAvailable": "Application update available",
"HeaderImagePrimary": "Primary", "NotificationOptionApplicationUpdateInstalled": "Application update installed",
"HeaderImageBackdrop": "\ubc30\uacbd", "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
"HeaderImageLogo": "\ub85c\uace0", "NotificationOptionPluginInstalled": "Plugin installed",
"HeaderUserPrimaryImage": "\uc0ac\uc6a9\uc790 \uc774\ubbf8\uc9c0", "NotificationOptionPluginUninstalled": "Plugin uninstalled",
"HeaderOverview": "\uc904\uac70\ub9ac", "NotificationOptionVideoPlayback": "Video playback started",
"HeaderShortOverview": "\uac04\ub7b5 \uc904\uac70\ub9ac", "NotificationOptionAudioPlayback": "Audio playback started",
"HeaderType": "Type", "NotificationOptionGamePlayback": "Game playback started",
"HeaderSeverity": "\uc2ec\uac01\ub3c4", "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
"HeaderUser": "\uc0ac\uc6a9\uc790", "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
"HeaderName": "Name", "NotificationOptionGamePlaybackStopped": "Game playback stopped",
"HeaderDate": "\ub0a0\uc9dc", "NotificationOptionTaskFailed": "Scheduled task failure",
"HeaderPremiereDate": "Premiere Date", "NotificationOptionInstallationFailed": "Installation failure",
"HeaderDateAdded": "Date Added", "NotificationOptionNewLibraryContent": "New content added",
"HeaderReleaseDate": "\uac1c\ubd09\uc77c", "NotificationOptionCameraImageUploaded": "Camera image uploaded",
"HeaderRuntime": "\uc0c1\uc601 \uc2dc\uac04", "NotificationOptionUserLockedOut": "User locked out",
"HeaderPlayCount": "Play Count", "NotificationOptionServerRestartRequired": "Server restart required",
"HeaderSeason": "\uc2dc\uc98c", "UserLockedOutWithName": "User {0} has been locked out",
"HeaderSeasonNumber": "\uc2dc\uc98c \ubc88\ud638", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderSeries": "Series:", "Sync": "Sync",
"HeaderNetwork": "\ub124\ud2b8\uc6cc\ud06c", "User": "User",
"HeaderYear": "Year:", "System": "System",
"HeaderYears": "Years:", "Application": "Application",
"HeaderParentalRating": "Parental Rating", "Plugin": "Plugin",
"HeaderCommunityRating": "\ucee4\ubba4\ub2c8\ud2f0 \ud3c9\uc810", "LabelExit": "Exit",
"HeaderTrailers": "\uc608\uace0\ud3b8", "LabelVisitCommunity": "Visit Community",
"HeaderSpecials": "\uc2a4\ud398\uc15c", "LabelBrowseLibrary": "Browse Library",
"HeaderGameSystems": "Game Systems", "LabelConfigureServer": "Configure Emby",
"HeaderPlayers": "Players:", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -0,0 +1,96 @@
{
"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",
"TvShows": "TV Shows",
"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"
}

View File

@ -1,36 +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": "Favorite Shows",
"HeaderNextUp": "Next Up",
"Favorites": "Favorites",
"Collections": "Collections",
"Channels": "Channels",
"Movies": "Movies",
"Albums": "Albums",
"Artists": "Artists",
"Folders": "Folders",
"Songs": "Songs",
"TvShows": "TV Shows",
"Shows": "Series",
"Genres": "Genres",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "Mixed content", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Movies", "ChapterNameValue": "Chapter {0}",
"FolderTypeMusic": "Music", "ScheduledTaskFailedWithName": "{0} failed",
"FolderTypeAdultVideos": "Adult videos", "LabelRunningTimeValue": "Running time: {0}",
"FolderTypePhotos": "Photos", "ScheduledTaskStartedWithName": "{0} started",
"FolderTypeMusicVideos": "Music videos", "VersionNumber": "Version {0}",
"FolderTypeHomeVideos": "Home videos", "PluginInstalledWithName": "{0} was installed",
"FolderTypeGames": "Games", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"FolderTypeBooks": "Books", "PluginUpdatedWithName": "{0} was updated",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} was uninstalled",
"FolderTypeInherit": "Inherit", "ItemAddedWithName": "{0} was added to the library",
"HeaderCastCrew": "Cast & Crew", "ItemRemovedWithName": "{0} was removed from the library",
"HeaderPeople": "People", "LabelIpAddressValue": "Ip address: {0}",
"ValueSpecialEpisodeName": "Special - {0}", "DeviceOnlineWithName": "{0} is connected",
"LabelChapterName": "Chapter {0}", "UserOnlineFromDevice": "{0} is online from {1}",
"NameSeasonNumber": "Season {0}", "ProviderValue": "Provider: {0}",
"LabelExit": "Tutup", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"LabelVisitCommunity": "Melawat Masyarakat", "UserCreatedWithName": "User {0} has been created",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"LabelApiDocumentation": "Api Documentation", "UserDeletedWithName": "User {0} has been deleted",
"LabelDeveloperResources": "Developer Resources", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"LabelBrowseLibrary": "Imbas Pengumpulan", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"LabelConfigureServer": "Configure Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"LabelRestartServer": "Restart Server", "MessageApplicationUpdated": "Emby Server has been updated",
"CategorySync": "Sync", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"CategoryUser": "User", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"CategorySystem": "System", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"CategoryApplication": "Application", "DeviceOfflineWithName": "{0} has disconnected",
"CategoryPlugin": "Plugin", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"NotificationOptionPluginError": "Plugin failure", "NotificationOptionPluginError": "Plugin failure",
"NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateAvailable": "Application update available",
"NotificationOptionApplicationUpdateInstalled": "Application update installed", "NotificationOptionApplicationUpdateInstalled": "Application update installed",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionTaskFailed": "Scheduled task failure",
"NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionInstallationFailed": "Installation failure",
"NotificationOptionNewLibraryContent": "New content added", "NotificationOptionNewLibraryContent": "New content added",
"NotificationOptionNewLibraryContentMultiple": "New content added (multiple)",
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionCameraImageUploaded": "Camera image uploaded",
"NotificationOptionUserLockedOut": "User locked out", "NotificationOptionUserLockedOut": "User locked out",
"NotificationOptionServerRestartRequired": "Server restart required", "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", "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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "Sync",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "User", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -1,178 +1,96 @@
{ {
"DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", "Latest": "Siste",
"AppDeviceValues": "App: {0} , Device: {1}", "ValueSpecialEpisodeName": "Spesial - {0}",
"UserDownloadingItemWithValues": "{0} laster ned {1}", "Inherit": "Arve",
"FolderTypeMixed": "Forskjellig innhold", "Books": "B\u00f8ker",
"FolderTypeMovies": "Filmer", "Music": "Musikk",
"FolderTypeMusic": "Musikk", "Games": "Spill",
"FolderTypeAdultVideos": "Voksen-videoer", "Photos": "BIlder",
"FolderTypePhotos": "Foto", "MixedContent": "Blandet innhold",
"FolderTypeMusicVideos": "Musikk-videoer", "MusicVideos": "Musikkvideoer",
"FolderTypeHomeVideos": "Hjemme-videoer", "HomeVideos": "Hjemmelaget filmer",
"FolderTypeGames": "Spill", "Playlists": "Spilleliste",
"FolderTypeBooks": "B\u00f8ker", "HeaderRecordingGroups": "Opptak Grupper",
"FolderTypeTvShows": "TV", "HeaderContinueWatching": "Forsett og see p\u00e5",
"FolderTypeInherit": "Arve", "HeaderFavoriteArtists": "Favorittartister",
"HeaderCastCrew": "Mannskap", "HeaderFavoriteSongs": "Favorittsanger",
"HeaderPeople": "Personer", "HeaderAlbumArtists": "Albumartist",
"ValueSpecialEpisodeName": "Spesiell - {0}", "HeaderFavoriteAlbums": "Favoritt albumer",
"LabelChapterName": "Kapittel {0}", "HeaderFavoriteEpisodes": "Favoritt episode",
"HeaderFavoriteShows": "Favorittserier",
"HeaderNextUp": "Neste",
"Favorites": "Favoritter",
"Collections": "Samlinger",
"Channels": "Kanaler",
"Movies": "Filmer",
"Albums": "Album",
"Artists": "Artister",
"Folders": "Mapper",
"Songs": "Sanger",
"TvShows": "TV Shows",
"Shows": "Programmer",
"Genres": "Sjanger",
"NameSeasonNumber": "Sesong {0}", "NameSeasonNumber": "Sesong {0}",
"LabelExit": "Avslutt", "AppDeviceValues": "App:{0}, Enhet {1}",
"LabelVisitCommunity": "Bes\u00f8k oss", "UserDownloadingItemWithValues": "{0} laster ned {1}",
"LabelGithub": "Github", "HeaderLiveTV": "Direkte TV",
"LabelApiDocumentation": "API-dokumentasjon", "ChapterNameValue": "Kapittel {0}",
"LabelDeveloperResources": "Ressurser for Utviklere", "ScheduledTaskFailedWithName": "{0} Mislykkes",
"LabelBrowseLibrary": "Browse biblioteket", "LabelRunningTimeValue": "L\u00f8petid {0}",
"LabelConfigureServer": "Konfigurer Emby", "ScheduledTaskStartedWithName": "{0} Startet",
"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",
"VersionNumber": "Versjon {0}", "VersionNumber": "Versjon {0}",
"PluginInstalledWithName": "{0} ble installert", "PluginInstalledWithName": "{0} ble installert",
"StartupEmbyServerIsLoading": "Emby server laster. Pr\u00f8v igjen snart.",
"PluginUpdatedWithName": "{0} ble oppdatert", "PluginUpdatedWithName": "{0} ble oppdatert",
"PluginUninstalledWithName": "{0} ble avinstallert", "PluginUninstalledWithName": "{0} ble avinstallert",
"ItemAddedWithName": "{0} ble lagt til biblioteket", "ItemAddedWithName": "{0} ble lagt til i biblioteket",
"ItemRemovedWithName": "{0} ble fjernet fra biblioteket", "ItemRemovedWithName": "{0} ble fjernet fra biblioteket",
"LabelIpAddressValue": "Ip adresse: {0}", "LabelIpAddressValue": "IP adresse: {0}",
"DeviceOnlineWithName": "{0} er tilkoblet", "DeviceOnlineWithName": "{0} er tilkoblet",
"UserOnlineFromDevice": "{0} er online fra {1}", "UserOnlineFromDevice": "{0} er tilkoblet fra {1}",
"ProviderValue": "Tilbyder: {0}", "ProviderValue": "Leverand\u00f8rer: {0}",
"SubtitlesDownloadedForItem": "Undertekster lastet ned for {0}", "SubtitlesDownloadedForItem": "Undertekster lastet ned for {0}",
"UserConfigurationUpdatedWithName": "Bruker konfigurasjon har blitt oppdatert for {0}", "UserCreatedWithName": "Bruker {0} er opprettet",
"UserCreatedWithName": "Bruker {0} har blitt opprettet", "UserPasswordChangedWithName": "Passordet for {0} er oppdatert",
"UserPasswordChangedWithName": "Passord har blitt endret for bruker {0}",
"UserDeletedWithName": "Bruker {0} har blitt slettet", "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", "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurasjon seksjon {0} har blitt oppdatert",
"MessageApplicationUpdated": "Emby server har blitt oppdatert", "MessageApplicationUpdated": "Emby server har blitt oppdatert",
"FailedLoginAttemptWithUserName": "P\u00e5loggingsfors\u00f8k feilet fra {0}", "FailedLoginAttemptWithUserName": "Mislykket p\u00e5loggingsfors\u00f8k fra {0}",
"AuthenticationSucceededWithUserName": "{0} autentisert med suksess", "AuthenticationSucceededWithUserName": "{0} vellykkede autentisert",
"DeviceOfflineWithName": "{0} har koblet fra",
"UserLockedOutWithName": "User {0} has been locked out",
"UserOfflineFromDevice": "{0} har koblet fra {1}", "UserOfflineFromDevice": "{0} har koblet fra {1}",
"UserStartedPlayingItemWithValues": "{0} har startet avspilling av {1}", "DeviceOfflineWithName": "{0} har koblet fra",
"UserStoppedPlayingItemWithValues": "{0} har stoppet avspilling av {1}", "UserStartedPlayingItemWithValues": "{0} har startet avspilling {1}",
"SubtitleDownloadFailureForItem": "nedlasting av undertekster feilet for {0}", "UserStoppedPlayingItemWithValues": "{0} har stoppet avspilling {1}",
"HeaderUnidentified": "Unidentified", "NotificationOptionPluginError": "Plugin feil",
"HeaderImagePrimary": "Primary", "NotificationOptionApplicationUpdateAvailable": "Applikasjon oppdatering tilgjengelig",
"HeaderImageBackdrop": "Backdrop", "NotificationOptionApplicationUpdateInstalled": "Applikasjon oppdatering installert.",
"HeaderImageLogo": "Logo", "NotificationOptionPluginUpdateInstalled": "Plugin oppdatering installert",
"HeaderUserPrimaryImage": "User Image", "NotificationOptionPluginInstalled": "Plugin installert",
"HeaderOverview": "Overview", "NotificationOptionPluginUninstalled": "Plugin avinstallert",
"HeaderShortOverview": "Short Overview", "NotificationOptionVideoPlayback": "Video tilbakespilling startet",
"HeaderType": "Type", "NotificationOptionAudioPlayback": "Lyd tilbakespilling startet",
"HeaderSeverity": "Severity", "NotificationOptionGamePlayback": "Spill avspillingen startet",
"HeaderUser": "Bruker", "NotificationOptionVideoPlaybackStopped": "Video avspilling stoppet",
"HeaderName": "Navn", "NotificationOptionAudioPlaybackStopped": "Lyd avspilling stoppet",
"HeaderDate": "Dato", "NotificationOptionGamePlaybackStopped": "Filmer",
"HeaderPremiereDate": "Premiere Date", "NotificationOptionTaskFailed": "Feil under utf\u00f8ring av planlagt oppgaver",
"HeaderDateAdded": "Date Added", "NotificationOptionInstallationFailed": "Installasjon feil",
"HeaderReleaseDate": "Utgivelsesdato", "NotificationOptionNewLibraryContent": "Ny innhold er lagt til",
"HeaderRuntime": "Spilletid", "NotificationOptionCameraImageUploaded": "Kamera bilde lastet opp",
"HeaderPlayCount": "Play Count", "NotificationOptionUserLockedOut": "Bruker er utestengt",
"HeaderSeason": "Sesong", "NotificationOptionServerRestartRequired": "Server omstart er n\u00f8dvendig",
"HeaderSeasonNumber": "Sesong nummer", "UserLockedOutWithName": "Bruker {0} er blitt utestengt",
"HeaderSeries": "Series:", "SubtitleDownloadFailureForItem": "En feil oppst\u00e5 under nedlasting av undertekster for {0}",
"HeaderNetwork": "Nettverk", "Sync": "Synk",
"HeaderYear": "Year:", "User": "Bruker",
"HeaderYears": "Years:", "System": "System",
"HeaderParentalRating": "Parental Rating", "Application": "Applikasjon",
"HeaderCommunityRating": "Fellesskap anmeldelse", "Plugin": "Plugin",
"HeaderTrailers": "Trailere", "LabelExit": "Avslutt",
"HeaderSpecials": "Specials", "LabelVisitCommunity": "Bes\u00f8k Samfunnet",
"HeaderGameSystems": "Game Systems", "LabelBrowseLibrary": "Bla i biblioteket",
"HeaderPlayers": "Players:", "LabelConfigureServer": "Konfigurere Emby",
"HeaderAlbumArtists": "Album Artists", "LabelRestartServer": "Start om serveren"
"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."
} }

View File

@ -1,102 +1,46 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Series",
"Genres": "Genres",
"NameSeasonNumber": "Seizoen {0}",
"AppDeviceValues": "App: {0}, Apparaat: {1}", "AppDeviceValues": "App: {0}, Apparaat: {1}",
"UserDownloadingItemWithValues": "{0} download {1}", "UserDownloadingItemWithValues": "{0} download {1}",
"FolderTypeMixed": "Gemengde inhoud", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Films", "ChapterNameValue": "Hoofdstuk {0}",
"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",
"ScheduledTaskFailedWithName": "{0} is mislukt", "ScheduledTaskFailedWithName": "{0} is mislukt",
"LabelRunningTimeValue": "Looptijd: {0}", "LabelRunningTimeValue": "Looptijd: {0}",
"ScheduledTaskStartedWithName": "{0} is gestart", "ScheduledTaskStartedWithName": "{0} is gestart",
"VersionNumber": "Versie {0}", "VersionNumber": "Versie {0}",
"PluginInstalledWithName": "{0} is ge\u00efnstalleerd", "PluginInstalledWithName": "{0} is ge\u00efnstalleerd",
"StartupEmbyServerIsLoading": "Emby Server is aan het laden, probeer het later opnieuw.",
"PluginUpdatedWithName": "{0} is bijgewerkt", "PluginUpdatedWithName": "{0} is bijgewerkt",
"PluginUninstalledWithName": "{0} is gede\u00efnstalleerd", "PluginUninstalledWithName": "{0} is gede\u00efnstalleerd",
"ItemAddedWithName": "{0} is toegevoegd aan de bibliotheek", "ItemAddedWithName": "{0} is toegevoegd aan de bibliotheek",
@ -106,73 +50,47 @@
"UserOnlineFromDevice": "{0} heeft verbinding met {1}", "UserOnlineFromDevice": "{0} heeft verbinding met {1}",
"ProviderValue": "Aanbieder: {0}", "ProviderValue": "Aanbieder: {0}",
"SubtitlesDownloadedForItem": "Ondertiteling voor {0} is gedownload", "SubtitlesDownloadedForItem": "Ondertiteling voor {0} is gedownload",
"UserConfigurationUpdatedWithName": "Gebruikersinstellingen voor {0} zijn bijgewerkt",
"UserCreatedWithName": "Gebruiker {0} is aangemaakt", "UserCreatedWithName": "Gebruiker {0} is aangemaakt",
"UserPasswordChangedWithName": "Wachtwoord voor {0} is gewijzigd", "UserPasswordChangedWithName": "Wachtwoord voor {0} is gewijzigd",
"UserDeletedWithName": "Gebruiker {0} is verwijderd", "UserDeletedWithName": "Gebruiker {0} is verwijderd",
"UserConfigurationUpdatedWithName": "Gebruikersinstellingen voor {0} zijn bijgewerkt",
"MessageServerConfigurationUpdated": "Server configuratie is bijgewerkt", "MessageServerConfigurationUpdated": "Server configuratie is bijgewerkt",
"MessageNamedServerConfigurationUpdatedWithValue": "Sectie {0} van de server configuratie is bijgewerkt", "MessageNamedServerConfigurationUpdatedWithValue": "Sectie {0} van de server configuratie is bijgewerkt",
"MessageApplicationUpdated": "Emby Server is bijgewerkt", "MessageApplicationUpdated": "Emby Server is bijgewerkt",
"FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}", "FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}",
"AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd", "AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd",
"DeviceOfflineWithName": "{0} is losgekoppeld",
"UserLockedOutWithName": "Gebruikersaccount {0} is vergrendeld",
"UserOfflineFromDevice": "Verbinding van {0} met {1} is verbroken", "UserOfflineFromDevice": "Verbinding van {0} met {1} is verbroken",
"DeviceOfflineWithName": "{0} is losgekoppeld",
"UserStartedPlayingItemWithValues": "{0} heeft afspelen van {1} gestart", "UserStartedPlayingItemWithValues": "{0} heeft afspelen van {1} gestart",
"UserStoppedPlayingItemWithValues": "{0} heeft afspelen van {1} gestopt", "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", "SubtitleDownloadFailureForItem": "Downloaden van ondertiteling voor {0} is mislukt",
"HeaderUnidentified": "One\u00efdentificaard", "Sync": "Synchronisatie",
"HeaderImagePrimary": "Primair", "User": "Gebruiker",
"HeaderImageBackdrop": "Achtergrond", "System": "Systeem",
"HeaderImageLogo": "Logo", "Application": "Toepassing",
"HeaderUserPrimaryImage": "Afbeelding gebruiker", "Plugin": "Plug-in",
"HeaderOverview": "Overzicht", "LabelExit": "Afsluiten",
"HeaderShortOverview": "Kort overzicht", "LabelVisitCommunity": "Bezoek Gemeenschap",
"HeaderType": "Type", "LabelBrowseLibrary": "Bekijk bibliotheek",
"HeaderSeverity": "Ernst", "LabelConfigureServer": "Emby Configureren",
"HeaderUser": "Gebruiker", "LabelRestartServer": "Server herstarten"
"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."
} }

View File

@ -1,178 +1,96 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Seriale",
"Genres": "Gatunki",
"NameSeasonNumber": "Sezon {0}",
"AppDeviceValues": "Aplikacja: {0}, Urz\u0105dzenie: {1}", "AppDeviceValues": "Aplikacja: {0}, Urz\u0105dzenie: {1}",
"UserDownloadingItemWithValues": "{0} pobiera {1}", "UserDownloadingItemWithValues": "{0} pobiera {1}",
"FolderTypeMixed": "Zawarto\u015b\u0107 mieszana", "HeaderLiveTV": "Telewizja",
"FolderTypeMovies": "Filmy", "ChapterNameValue": "Rozdzia\u0142 {0}",
"FolderTypeMusic": "Muzyka", "ScheduledTaskFailedWithName": "Nieudane {0}",
"FolderTypeAdultVideos": "Filmy dla doros\u0142ych", "LabelRunningTimeValue": "Czas trwania: {0}",
"FolderTypePhotos": "Zdj\u0119cia", "ScheduledTaskStartedWithName": "Rozpocz\u0119to {0}",
"FolderTypeMusicVideos": "Teledyski", "VersionNumber": "Wersja {0}",
"FolderTypeHomeVideos": "Filmy domowe", "PluginInstalledWithName": "{0} zosta\u0142o zainstalowane",
"FolderTypeGames": "Gry", "StartupEmbyServerIsLoading": "Twa wczytywanie serwera Emby. Spr\u00f3buj ponownie za chwil\u0119.",
"FolderTypeBooks": "Ksi\u0105\u017cki", "PluginUpdatedWithName": "{0} zaktualizowane",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} odinstalowane",
"FolderTypeInherit": "Dziedzicz", "ItemAddedWithName": "{0} zosta\u0142o dodane do biblioteki",
"HeaderCastCrew": "Obsada & Eikpa", "ItemRemovedWithName": "{0} zosta\u0142o usuni\u0119te z biblioteki",
"HeaderPeople": "Ludzie", "LabelIpAddressValue": "Adres IP: {0}",
"ValueSpecialEpisodeName": "Specjalny - {0}", "DeviceOnlineWithName": "{0} po\u0142\u0105czy\u0142 si\u0119",
"LabelChapterName": "Rozdzia\u0142 {0}", "UserOnlineFromDevice": "{0} po\u0142\u0105czy\u0142 si\u0119 z {1}",
"NameSeasonNumber": "Sezon {0}", "ProviderValue": "Dostawca: {0}",
"LabelExit": "Wyj\u015bcie", "SubtitlesDownloadedForItem": "Pobrano napisy dla {0}",
"LabelVisitCommunity": "Odwied\u017a spo\u0142eczno\u015b\u0107", "UserCreatedWithName": "U\u017cytkownik {0} zosta\u0142 utworzony",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Has\u0142o u\u017cytkownika {0} zosta\u0142o zmienione",
"LabelApiDocumentation": "Dokumantacja API", "UserDeletedWithName": "U\u017cytkownik {0} zosta\u0142 usuni\u0119ty",
"LabelDeveloperResources": "Materia\u0142y dla deweloper\u00f3w", "UserConfigurationUpdatedWithName": "Konfiguracja u\u017cytkownika {0} zosta\u0142a zaktualizowana",
"LabelBrowseLibrary": "Przegl\u0105daj bibliotek\u0119", "MessageServerConfigurationUpdated": "Konfiguracja serwera zosta\u0142a zaktualizowana",
"LabelConfigureServer": "Konfiguracja Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Sekcja {0} konfiguracji serwera zosta\u0142a zaktualizowana",
"LabelRestartServer": "Restart serwera", "MessageApplicationUpdated": "Serwer Emby zosta\u0142 zaktualizowany",
"CategorySync": "Sync", "FailedLoginAttemptWithUserName": "Pr\u00f3ba logowania przez {0} zako\u0144czona niepowodzeniem",
"CategoryUser": "U\u017cytkownik", "AuthenticationSucceededWithUserName": "{0} zosta\u0142 pomy\u015blnie uwierzytelniony",
"CategorySystem": "System", "UserOfflineFromDevice": "{0} z {1} zosta\u0142 roz\u0142\u0105czony",
"CategoryApplication": "Aplikacja", "DeviceOfflineWithName": "{0} zosta\u0142 roz\u0142\u0105czony",
"CategoryPlugin": "Wtyczka", "UserStartedPlayingItemWithValues": "{0} rozpocz\u0105\u0142 odtwarzanie {1}",
"NotificationOptionPluginError": "Niepowodzenie wtyczki", "UserStoppedPlayingItemWithValues": "{0} zatrzyma\u0142 odtwarzanie {1}",
"NotificationOptionPluginError": "Awaria wtyczki",
"NotificationOptionApplicationUpdateAvailable": "Dost\u0119pna aktualizacja aplikacji", "NotificationOptionApplicationUpdateAvailable": "Dost\u0119pna aktualizacja aplikacji",
"NotificationOptionApplicationUpdateInstalled": "Zainstalowano aktualizacj\u0119 aplikacji", "NotificationOptionApplicationUpdateInstalled": "Zainstalowano aktualizacj\u0119 aplikacji",
"NotificationOptionPluginUpdateInstalled": "Zainstalowano aktualizacj\u0119 wtyczki", "NotificationOptionPluginUpdateInstalled": "Zainstalowano aktualizacj\u0119 wtyczki",
"NotificationOptionPluginInstalled": "Zainstalowano wtyczk\u0119", "NotificationOptionPluginInstalled": "Zainstalowano wtyczk\u0119",
"NotificationOptionPluginUninstalled": "Odinstalowano wtyczk\u0119", "NotificationOptionPluginUninstalled": "Odinstalowano wtyczk\u0119",
"NotificationOptionVideoPlayback": "Rozpocz\u0119to odtwarzanie wideo", "NotificationOptionVideoPlayback": "Rozpocz\u0119to odtwarzanie wideo",
"NotificationOptionAudioPlayback": "Rozpocz\u0119to odtwarzanie audio", "NotificationOptionAudioPlayback": "Rozpocz\u0119to odtwarzanie muzyki",
"NotificationOptionGamePlayback": "Odtwarzanie gry rozpocz\u0119te", "NotificationOptionGamePlayback": "Odtwarzanie gry rozpocz\u0119te",
"NotificationOptionVideoPlaybackStopped": "Odtwarzanie wideo zatrzymane", "NotificationOptionVideoPlaybackStopped": "Odtwarzanie wideo zatrzymane",
"NotificationOptionAudioPlaybackStopped": "Odtwarzane audio zatrzymane", "NotificationOptionAudioPlaybackStopped": "Odtwarzane d\u017awi\u0119ku zatrzymane",
"NotificationOptionGamePlaybackStopped": "Odtwarzanie gry zatrzymane", "NotificationOptionGamePlaybackStopped": "Odtwarzanie gry zatrzymane",
"NotificationOptionTaskFailed": "Niepowodzenie zaplanowanego zadania", "NotificationOptionTaskFailed": "Awaria zaplanowanego zadania",
"NotificationOptionInstallationFailed": "Niepowodzenie instalacji", "NotificationOptionInstallationFailed": "Niepowodzenie instalacji",
"NotificationOptionNewLibraryContent": "Nowa zawarto\u015b\u0107 dodana", "NotificationOptionNewLibraryContent": "Dodano now\u0105 zawarto\u015b\u0107",
"NotificationOptionNewLibraryContentMultiple": "Nowa zawarto\u015b\u0107 dodana (wiele)", "NotificationOptionCameraImageUploaded": "Przekazano obraz z urz\u0105dzenia mobilnego",
"NotificationOptionCameraImageUploaded": "Obraz z Kamery dodany",
"NotificationOptionUserLockedOut": "U\u017cytkownik zablokowany", "NotificationOptionUserLockedOut": "U\u017cytkownik zablokowany",
"NotificationOptionServerRestartRequired": "Restart serwera wymagany", "NotificationOptionServerRestartRequired": "Wymagane ponowne uruchomienie serwera",
"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",
"UserLockedOutWithName": "U\u017cytkownik {0} zosta\u0142 zablokowany", "UserLockedOutWithName": "U\u017cytkownik {0} zosta\u0142 zablokowany",
"UserOfflineFromDevice": "{0} zosta\u0142o od\u0142\u0105czonych od {1}", "SubtitleDownloadFailureForItem": "Pobieranie napis\u00f3w dla {0} zako\u0144czone niepowodzeniem",
"UserStartedPlayingItemWithValues": "{0} rozpocz\u0105\u0142 odtwarzanie {1}", "Sync": "Synchronizacja",
"UserStoppedPlayingItemWithValues": "{0} zatrzyma\u0142 odtwarzanie {1}", "User": "U\u017cytkownik",
"SubtitleDownloadFailureForItem": "Napisy niepobrane dla {0}", "System": "System",
"HeaderUnidentified": "Niezidentyfikowane", "Application": "Aplikacja",
"HeaderImagePrimary": "Priorytetowy", "Plugin": "Wtyczka",
"HeaderImageBackdrop": "Obraz t\u0142a", "LabelExit": "Wyj\u015bcie",
"HeaderImageLogo": "Logo", "LabelVisitCommunity": "Odwied\u017a spo\u0142eczno\u015b\u0107",
"HeaderUserPrimaryImage": "Avatar u\u017cytkownika", "LabelBrowseLibrary": "Przegl\u0105daj bibliotek\u0119",
"HeaderOverview": "Opis", "LabelConfigureServer": "Konfiguracja Emby",
"HeaderShortOverview": "Kr\u00f3tki Opis", "LabelRestartServer": "Uruchom serwer ponownie"
"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."
} }

View File

@ -1,40 +1,72 @@
{ {
"DbUpgradeMessage": "Por favor, aguarde enquanto a base de dados do Servidor Emby \u00e9 atualizada. {0}% completo.", "Latest": "Recente",
"AppDeviceValues": "App: {0}, Dispositivo: {1}", "ValueSpecialEpisodeName": "Especial - {0}",
"UserDownloadingItemWithValues": "{0} est\u00e1 fazendo download de {1}", "Inherit": "Herdar",
"FolderTypeMixed": "Conte\u00fado misto", "Books": "Livros",
"FolderTypeMovies": "Filmes", "Music": "M\u00fasica",
"FolderTypeMusic": "M\u00fasica", "Games": "Jogos",
"FolderTypeAdultVideos": "V\u00eddeos adultos", "Photos": "Fotos",
"FolderTypePhotos": "Fotos", "MixedContent": "Conte\u00fado misto",
"FolderTypeMusicVideos": "V\u00eddeos musicais", "MusicVideos": "V\u00eddeos musicais",
"FolderTypeHomeVideos": "V\u00eddeos caseiros", "HomeVideos": "V\u00eddeos caseiros",
"FolderTypeGames": "Jogos", "Playlists": "Listas de Reprodu\u00e7\u00e3o",
"FolderTypeBooks": "Livros", "HeaderRecordingGroups": "Grupos de Grava\u00e7\u00e3o",
"FolderTypeTvShows": "TV", "HeaderContinueWatching": "Continuar Assistindo",
"FolderTypeInherit": "Herdar", "HeaderFavoriteArtists": "Artistas Favoritos",
"HeaderCastCrew": "Elenco & Equipe", "HeaderFavoriteSongs": "M\u00fasicas Favoritas",
"HeaderPeople": "Pessoas", "HeaderAlbumArtists": "Artistas do \u00c1lbum",
"ValueSpecialEpisodeName": "Especial - {0}", "HeaderFavoriteAlbums": "\u00c1lbuns Favoritos",
"LabelChapterName": "Cap\u00edtulo {0}", "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",
"TvShows": "TV Shows",
"Shows": "S\u00e9ries",
"Genres": "G\u00eaneros",
"NameSeasonNumber": "Temporada {0}", "NameSeasonNumber": "Temporada {0}",
"LabelExit": "Sair", "AppDeviceValues": "App: {0}, Dispositivo: {1}",
"LabelVisitCommunity": "Visitar a Comunidade", "UserDownloadingItemWithValues": "{0} est\u00e1 baixando {1}",
"LabelGithub": "Github", "HeaderLiveTV": "TV ao Vivo",
"LabelApiDocumentation": "Documenta\u00e7\u00e3o da Api", "ChapterNameValue": "Cap\u00edtulo {0}",
"LabelDeveloperResources": "Recursos do Desenvolvedor", "ScheduledTaskFailedWithName": "{0} falhou",
"LabelBrowseLibrary": "Explorar Biblioteca", "LabelRunningTimeValue": "Tempo de execu\u00e7\u00e3o: {0}",
"LabelConfigureServer": "Configurar o Emby", "ScheduledTaskStartedWithName": "{0} iniciada",
"LabelRestartServer": "Reiniciar Servidor", "VersionNumber": "Vers\u00e3o {0}",
"CategorySync": "Sincroniza\u00e7\u00e3o", "PluginInstalledWithName": "{0} foi instalado",
"CategoryUser": "Usu\u00e1rio", "StartupEmbyServerIsLoading": "O Servidor Emby est\u00e1 carregando. Por favor tente novamente em breve.",
"CategorySystem": "Sistema", "PluginUpdatedWithName": "{0} foi atualizado",
"CategoryApplication": "Aplica\u00e7\u00e3o", "PluginUninstalledWithName": "{0} foi desinstalado",
"CategoryPlugin": "Plugin", "ItemAddedWithName": "{0} foi adicionado \u00e0 biblioteca",
"NotificationOptionPluginError": "Falha no plugin", "ItemRemovedWithName": "{0} foi removido da biblioteca",
"NotificationOptionApplicationUpdateAvailable": "Atualiza\u00e7\u00e3o da aplica\u00e7\u00e3o disponivel", "LabelIpAddressValue": "Endere\u00e7o ip: {0}",
"NotificationOptionApplicationUpdateInstalled": "Atualiza\u00e7\u00e3o da aplica\u00e7\u00e3o instalada", "DeviceOnlineWithName": "{0} est\u00e1 conectado",
"NotificationOptionPluginUpdateInstalled": "Atualiza\u00e7\u00e3o do plugin instalada", "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", "NotificationOptionPluginInstalled": "Plugin instalado",
"NotificationOptionPluginUninstalled": "Plugin desinstalado", "NotificationOptionPluginUninstalled": "Plugin desinstalado",
"NotificationOptionVideoPlayback": "Reprodu\u00e7\u00e3o de v\u00eddeo iniciada", "NotificationOptionVideoPlayback": "Reprodu\u00e7\u00e3o de v\u00eddeo iniciada",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Falha na tarefa agendada", "NotificationOptionTaskFailed": "Falha na tarefa agendada",
"NotificationOptionInstallationFailed": "Falha na instala\u00e7\u00e3o", "NotificationOptionInstallationFailed": "Falha na instala\u00e7\u00e3o",
"NotificationOptionNewLibraryContent": "Novo conte\u00fado adicionado", "NotificationOptionNewLibraryContent": "Novo conte\u00fado adicionado",
"NotificationOptionNewLibraryContentMultiple": "Novo conte\u00fado adicionado (m\u00faltiplo)", "NotificationOptionCameraImageUploaded": "Imagem de c\u00e2mera enviada",
"NotificationOptionCameraImageUploaded": "Imagem da c\u00e2mera carregada",
"NotificationOptionUserLockedOut": "Usu\u00e1rio bloqueado", "NotificationOptionUserLockedOut": "Usu\u00e1rio bloqueado",
"NotificationOptionServerRestartRequired": "Necessidade de reiniciar servidor", "NotificationOptionServerRestartRequired": "Necess\u00e1rio 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",
"UserLockedOutWithName": "Usu\u00e1rio {0} foi bloqueado", "UserLockedOutWithName": "Usu\u00e1rio {0} foi bloqueado",
"UserOfflineFromDevice": "{0} foi desconectado de {1}", "SubtitleDownloadFailureForItem": "Download de legendas falhou para {0}",
"UserStartedPlayingItemWithValues": "{0} come\u00e7ou a reproduzir {1}", "Sync": "Sincronizar",
"UserStoppedPlayingItemWithValues": "{0} parou de reproduzir {1}", "User": "Usu\u00e1rio",
"SubtitleDownloadFailureForItem": "Falha ao baixar legendas para {0}", "System": "Sistema",
"HeaderUnidentified": "N\u00e3o-identificado", "Application": "Aplicativo",
"HeaderImagePrimary": "Principal", "Plugin": "Plugin",
"HeaderImageBackdrop": "Imagem de Fundo", "LabelExit": "Sair",
"HeaderImageLogo": "Logo", "LabelVisitCommunity": "Visite a Comunidade",
"HeaderUserPrimaryImage": "Imagem do Usu\u00e1rio", "LabelBrowseLibrary": "Explorar Biblioteca",
"HeaderOverview": "Sinopse", "LabelConfigureServer": "Configurar Emby",
"HeaderShortOverview": "Sinopse curta", "LabelRestartServer": "Reiniciar Servidor"
"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."
} }

View File

@ -1,178 +1,96 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Shows",
"Genres": "Genres",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "Mixed content", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Filmes", "ChapterNameValue": "Chapter {0}",
"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",
"ScheduledTaskFailedWithName": "{0} failed", "ScheduledTaskFailedWithName": "{0} failed",
"LabelRunningTimeValue": "Running time: {0}", "LabelRunningTimeValue": "Running time: {0}",
"ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskStartedWithName": "{0} started",
"VersionNumber": "Vers\u00e3o {0}", "VersionNumber": "Version {0}",
"PluginInstalledWithName": "{0} foi instalado", "PluginInstalledWithName": "{0} was installed",
"PluginUpdatedWithName": "{0} foi atualizado", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"PluginUninstalledWithName": "{0} foi desinstalado", "PluginUpdatedWithName": "{0} was updated",
"ItemAddedWithName": "{0} foi adicionado \u00e0 biblioteca", "PluginUninstalledWithName": "{0} was uninstalled",
"ItemRemovedWithName": "{0} foi removido da biblioteca", "ItemAddedWithName": "{0} was added to the library",
"ItemRemovedWithName": "{0} was removed from the library",
"LabelIpAddressValue": "Ip address: {0}", "LabelIpAddressValue": "Ip address: {0}",
"DeviceOnlineWithName": "{0} est\u00e1 conectado", "DeviceOnlineWithName": "{0} is connected",
"UserOnlineFromDevice": "{0} is online from {1}", "UserOnlineFromDevice": "{0} is online from {1}",
"ProviderValue": "Provider: {0}", "ProviderValue": "Provider: {0}",
"SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"UserCreatedWithName": "User {0} has been created", "UserCreatedWithName": "User {0} has been created",
"UserPasswordChangedWithName": "Password has been changed for user {0}", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"UserDeletedWithName": "User {0} has been deleted", "UserDeletedWithName": "User {0} has been deleted",
"UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"MessageApplicationUpdated": "Emby Server has been updated", "MessageApplicationUpdated": "Emby Server has been updated",
"FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"AuthenticationSucceededWithUserName": "{0} successfully authenticated", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"DeviceOfflineWithName": "{0} has disconnected",
"UserLockedOutWithName": "User {0} has been locked out",
"UserOfflineFromDevice": "{0} has disconnected from {1}", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"DeviceOfflineWithName": "{0} has disconnected",
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped 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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "Sync",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Aplica\u00e7\u00e3o",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "User", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -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."
}

View File

@ -1,36 +1,68 @@
{ {
"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": "\u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430",
"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. \u0432\u0438\u0434\u0435\u043e",
"HomeVideos": "\u0414\u043e\u043c. \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": "\u041a\u0438\u043d\u043e",
"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",
"TvShows": "\u0422\u0412",
"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}", "AppDeviceValues": "\u041f\u0440\u0438\u043b.: {0}, \u0423\u0441\u0442\u0440.: {1}",
"UserDownloadingItemWithValues": "{0} \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 {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", "HeaderLiveTV": "\u042d\u0444\u0438\u0440",
"FolderTypeMovies": "\u041a\u0438\u043d\u043e", "ChapterNameValue": "\u0421\u0446\u0435\u043d\u0430 {0}",
"FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", "ScheduledTaskFailedWithName": "{0} - \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430",
"FolderTypeAdultVideos": "\u0414\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445", "LabelRunningTimeValue": "\u0412\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: {0}",
"FolderTypePhotos": "\u0424\u043e\u0442\u043e", "ScheduledTaskStartedWithName": "{0} - \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430",
"FolderTypeMusicVideos": "\u041c\u0443\u0437. \u0432\u0438\u0434\u0435\u043e", "VersionNumber": "\u0412\u0435\u0440\u0441\u0438\u044f {0}",
"FolderTypeHomeVideos": "\u0414\u043e\u043c. \u0432\u0438\u0434\u0435\u043e", "PluginInstalledWithName": "{0} - \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e",
"FolderTypeGames": "\u0418\u0433\u0440\u044b", "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.",
"FolderTypeBooks": "\u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430", "PluginUpdatedWithName": "{0} - \u0431\u044b\u043b\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e",
"FolderTypeTvShows": "\u0422\u0412", "PluginUninstalledWithName": "{0} - \u0431\u044b\u043b\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043e",
"FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u0439", "ItemAddedWithName": "{0} - \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443",
"HeaderCastCrew": "\u0421\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u0438 \u0441\u043d\u0438\u043c\u0430\u043b\u0438", "ItemRemovedWithName": "{0} - \u0438\u0437\u044a\u044f\u0442\u043e \u0438\u0437 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438",
"HeaderPeople": "\u041b\u044e\u0434\u0438", "LabelIpAddressValue": "IP-\u0430\u0434\u0440\u0435\u0441: {0}",
"ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}", "DeviceOnlineWithName": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0443\u0441\u0442-\u043d\u043e",
"LabelChapterName": "\u0421\u0446\u0435\u043d\u0430 {0}", "UserOnlineFromDevice": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0441 {1} \u0443\u0441\u0442-\u043d\u043e",
"NameSeasonNumber": "\u0421\u0435\u0437\u043e\u043d {0}", "ProviderValue": "\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a: {0}",
"LabelExit": "\u0412\u044b\u0445\u043e\u0434", "SubtitlesDownloadedForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u043a {0} \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b",
"LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430", "UserCreatedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d",
"LabelGithub": "GitHub", "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",
"LabelApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API", "UserDeletedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0451\u043d",
"LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", "UserConfigurationUpdatedWithName": "\u041a\u043e\u043d\u0444\u0438\u0433-\u0438\u044f \u043f\u043e\u043b\u044c\u0437-\u043b\u044f {0} \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430",
"LabelBrowseLibrary": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", "MessageServerConfigurationUpdated": "\u041a\u043e\u043d\u0444\u0438\u0433-\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430",
"LabelConfigureServer": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Emby", "MessageNamedServerConfigurationUpdatedWithValue": "\u041a\u043e\u043d\u0444\u0438\u0433-\u0438\u044f \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",
"LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430", "MessageApplicationUpdated": "Emby Server \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d",
"CategorySync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", "FailedLoginAttemptWithUserName": "{0} - \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430",
"CategoryUser": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c", "AuthenticationSucceededWithUserName": "{0} - \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u0430",
"CategorySystem": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430", "UserOfflineFromDevice": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0441 {1} \u0440\u0430\u0437\u044a-\u043d\u043e",
"CategoryApplication": "\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435", "DeviceOfflineWithName": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0440\u0430\u0437\u044a-\u043d\u043e",
"CategoryPlugin": "\u041f\u043b\u0430\u0433\u0438\u043d", "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", "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", "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", "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 +78,19 @@
"NotificationOptionTaskFailed": "\u0421\u0431\u043e\u0439 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438", "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", "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", "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", "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", "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", "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", "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", "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", "Sync": "\u0421\u0438\u043d\u0445\u0440\u043e",
"HeaderImagePrimary": "\u0413\u043e\u043b\u043e\u0432\u043d\u043e\u0439", "User": "\u041f\u043e\u043b\u044c\u0437-\u043b\u044c",
"HeaderImageBackdrop": "\u0417\u0430\u0434\u043d\u0438\u043a", "System": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430",
"HeaderImageLogo": "\u041b\u043e\u0433\u043e\u0442\u0438\u043f", "Application": "\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435",
"HeaderUserPrimaryImage": "\u0420\u0438\u0441\u0443\u043d\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", "Plugin": "\u041f\u043b\u0430\u0433\u0438\u043d",
"HeaderOverview": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435", "LabelExit": "\u0412\u044b\u0445\u043e\u0434",
"HeaderShortOverview": "\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435", "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430",
"HeaderType": "\u0422\u0438\u043f", "LabelBrowseLibrary": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435",
"HeaderSeverity": "\u0412\u0430\u0436\u043d\u043e\u0441\u0442\u044c", "LabelConfigureServer": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Emby",
"HeaderUser": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c", "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430"
"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."
} }

View File

@ -0,0 +1,96 @@
{
"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",
"TvShows": "TV Shows",
"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"
}

View File

@ -1,102 +1,46 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Serije",
"Genres": "Genres",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "Mixed content", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Movies", "ChapterNameValue": "Chapter {0}",
"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",
"ScheduledTaskFailedWithName": "{0} failed", "ScheduledTaskFailedWithName": "{0} failed",
"LabelRunningTimeValue": "Running time: {0}", "LabelRunningTimeValue": "Running time: {0}",
"ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskStartedWithName": "{0} started",
"VersionNumber": "Verzija {0}", "VersionNumber": "Version {0}",
"PluginInstalledWithName": "{0} was installed", "PluginInstalledWithName": "{0} was installed",
"StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"PluginUpdatedWithName": "{0} was updated", "PluginUpdatedWithName": "{0} was updated",
"PluginUninstalledWithName": "{0} was uninstalled", "PluginUninstalledWithName": "{0} was uninstalled",
"ItemAddedWithName": "{0} was added to the library", "ItemAddedWithName": "{0} was added to the library",
@ -106,73 +50,47 @@
"UserOnlineFromDevice": "{0} is online from {1}", "UserOnlineFromDevice": "{0} is online from {1}",
"ProviderValue": "Provider: {0}", "ProviderValue": "Provider: {0}",
"SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"UserCreatedWithName": "User {0} has been created", "UserCreatedWithName": "User {0} has been created",
"UserPasswordChangedWithName": "Password has been changed for user {0}", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"UserDeletedWithName": "User {0} has been deleted", "UserDeletedWithName": "User {0} has been deleted",
"UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"MessageApplicationUpdated": "Emby Server has been updated", "MessageApplicationUpdated": "Emby Server has been updated",
"FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"AuthenticationSucceededWithUserName": "{0} successfully authenticated", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"DeviceOfflineWithName": "{0} has disconnected",
"UserLockedOutWithName": "User {0} has been locked out",
"UserOfflineFromDevice": "{0} has disconnected from {1}", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"DeviceOfflineWithName": "{0} has disconnected",
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped 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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "Sync",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "Uporabnik", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -1,36 +1,68 @@
{ {
"DbUpgradeMessage": "V\u00e4nligen v\u00e4nta medan databasen p\u00e5 din Emby Server uppgraderas. {0}% klar", "Latest": "Senaste",
"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",
"ValueSpecialEpisodeName": "Specialavsnitt - {0}", "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",
"TvShows": "TV Shows",
"Shows": "Serier",
"Genres": "Genrer",
"NameSeasonNumber": "S\u00e4song {0}", "NameSeasonNumber": "S\u00e4song {0}",
"LabelExit": "Avsluta", "AppDeviceValues": "App: {0}, Enhet: {1}",
"LabelVisitCommunity": "Bes\u00f6k v\u00e5rt diskussionsforum", "UserDownloadingItemWithValues": "{0} laddar ner {1}",
"LabelGithub": "Github", "HeaderLiveTV": "Live-TV",
"LabelApiDocumentation": "Api-dokumentation", "ChapterNameValue": "Kapitel {0}",
"LabelDeveloperResources": "Resurser f\u00f6r utvecklare", "ScheduledTaskFailedWithName": "{0} misslyckades",
"LabelBrowseLibrary": "Bl\u00e4ddra i biblioteket", "LabelRunningTimeValue": "Speltid: {0}",
"LabelConfigureServer": "Konfigurera Emby", "ScheduledTaskStartedWithName": "{0} startad",
"LabelRestartServer": "Starta om servern", "VersionNumber": "Version {0}",
"CategorySync": "Synkronisera", "PluginInstalledWithName": "{0} installerades",
"CategoryUser": "Anv\u00e4ndare", "StartupEmbyServerIsLoading": "Emby server arbetar. Pr\u00f6va igen inom kort.",
"CategorySystem": "System", "PluginUpdatedWithName": "{0} uppdaterades",
"CategoryApplication": "App", "PluginUninstalledWithName": "{0} avinstallerades",
"CategoryPlugin": "Till\u00e4gg", "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", "NotificationOptionPluginError": "Fel uppstod med till\u00e4gget",
"NotificationOptionApplicationUpdateAvailable": "Ny programversion tillg\u00e4nglig", "NotificationOptionApplicationUpdateAvailable": "Ny programversion tillg\u00e4nglig",
"NotificationOptionApplicationUpdateInstalled": "Programuppdatering installerad", "NotificationOptionApplicationUpdateInstalled": "Programuppdatering installerad",
@ -45,134 +77,20 @@
"NotificationOptionGamePlaybackStopped": "Spel stoppat", "NotificationOptionGamePlaybackStopped": "Spel stoppat",
"NotificationOptionTaskFailed": "Schemalagd aktivitet har misslyckats", "NotificationOptionTaskFailed": "Schemalagd aktivitet har misslyckats",
"NotificationOptionInstallationFailed": "Fel vid installation", "NotificationOptionInstallationFailed": "Fel vid installation",
"NotificationOptionNewLibraryContent": "Nytt inneh\u00e5ll har tillkommit", "NotificationOptionNewLibraryContent": "Nytt inneh\u00e5ll har lagts till",
"NotificationOptionNewLibraryContentMultiple": "Nytillkommet inneh\u00e5ll finns (flera objekt)", "NotificationOptionCameraImageUploaded": "Kamerabild har laddats upp",
"NotificationOptionCameraImageUploaded": "Kaberabild uppladdad", "NotificationOptionUserLockedOut": "Anv\u00e4ndare har l\u00e5sts ut",
"NotificationOptionUserLockedOut": "Anv\u00e4ndare har l\u00e5sts ute",
"NotificationOptionServerRestartRequired": "Servern m\u00e5ste startas om", "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", "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", "SubtitleDownloadFailureForItem": "Nerladdning av undertexter f\u00f6r {0} misslyckades",
"HeaderUnidentified": "Oidentifierad", "Sync": "Synk",
"HeaderImagePrimary": "Huvudbild", "User": "Anv\u00e4ndare",
"HeaderImageBackdrop": "Bakgrundsbild", "System": "System",
"HeaderImageLogo": "Logotyp", "Application": "App",
"HeaderUserPrimaryImage": "Anv\u00e4ndarbild", "Plugin": "Till\u00e4gg",
"HeaderOverview": "\u00d6versikt", "LabelExit": "Avsluta",
"HeaderShortOverview": "Kort \u00f6versikt", "LabelVisitCommunity": "Bes\u00f6k v\u00e5rt diskussionsforum",
"HeaderType": "Typ", "LabelBrowseLibrary": "Bl\u00e4ddra i biblioteket",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Konfigurera Emby",
"HeaderUser": "Anv\u00e4ndare", "LabelRestartServer": "Starta om servern"
"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."
} }

View File

@ -1,37 +1,69 @@
{ {
"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",
"TvShows": "TV Shows",
"Shows": "Shows",
"Genres": "Genres",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "Mixed content", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "Movies", "ChapterNameValue": "Chapter {0}",
"FolderTypeMusic": "Music", "ScheduledTaskFailedWithName": "{0} failed",
"FolderTypeAdultVideos": "Adult videos", "LabelRunningTimeValue": "Running time: {0}",
"FolderTypePhotos": "Photos", "ScheduledTaskStartedWithName": "{0} started",
"FolderTypeMusicVideos": "Music videos", "VersionNumber": "Version {0}",
"FolderTypeHomeVideos": "Home videos", "PluginInstalledWithName": "{0} was installed",
"FolderTypeGames": "Games", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"FolderTypeBooks": "Books", "PluginUpdatedWithName": "{0} was updated",
"FolderTypeTvShows": "TV", "PluginUninstalledWithName": "{0} was uninstalled",
"FolderTypeInherit": "Inherit", "ItemAddedWithName": "{0} was added to the library",
"HeaderCastCrew": "Cast & Crew", "ItemRemovedWithName": "{0} was removed from the library",
"HeaderPeople": "People", "LabelIpAddressValue": "Ip address: {0}",
"ValueSpecialEpisodeName": "Special - {0}", "DeviceOnlineWithName": "{0} is connected",
"LabelChapterName": "Chapter {0}", "UserOnlineFromDevice": "{0} is online from {1}",
"NameSeasonNumber": "Season {0}", "ProviderValue": "Provider: {0}",
"LabelExit": "Cikis", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"LabelVisitCommunity": "Bizi Ziyaret Edin", "UserCreatedWithName": "User {0} has been created",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"LabelApiDocumentation": "Api Documentation", "UserDeletedWithName": "User {0} has been deleted",
"LabelDeveloperResources": "Developer Resources", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"LabelBrowseLibrary": "K\u00fct\u00fcphane", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"LabelConfigureServer": "Configure Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"LabelRestartServer": "Server Yeniden Baslat", "MessageApplicationUpdated": "Emby Server has been updated",
"CategorySync": "Sync", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"CategoryUser": "User", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"CategorySystem": "System", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"CategoryApplication": "Uygulamalar", "DeviceOfflineWithName": "{0} has disconnected",
"CategoryPlugin": "Eklenti", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"NotificationOptionPluginError": "Eklenti Ba\u015far\u0131s\u0131z", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"NotificationOptionPluginError": "Plugin failure",
"NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateAvailable": "Application update available",
"NotificationOptionApplicationUpdateInstalled": "Application update installed", "NotificationOptionApplicationUpdateInstalled": "Application update installed",
"NotificationOptionPluginUpdateInstalled": "Plugin update installed", "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionTaskFailed": "Scheduled task failure",
"NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionInstallationFailed": "Installation failure",
"NotificationOptionNewLibraryContent": "New content added", "NotificationOptionNewLibraryContent": "New content added",
"NotificationOptionNewLibraryContentMultiple": "New content added (multiple)",
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionCameraImageUploaded": "Camera image uploaded",
"NotificationOptionUserLockedOut": "User locked out", "NotificationOptionUserLockedOut": "User locked out",
"NotificationOptionServerRestartRequired": "Sunucu yeniden ba\u015flat\u0131lmal\u0131", "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": "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",
"UserLockedOutWithName": "User {0} has been locked out", "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}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"HeaderUnidentified": "Unidentified", "Sync": "Sync",
"HeaderImagePrimary": "Primary", "User": "User",
"HeaderImageBackdrop": "Backdrop", "System": "System",
"HeaderImageLogo": "Logo", "Application": "Application",
"HeaderUserPrimaryImage": "User Image", "Plugin": "Plugin",
"HeaderOverview": "Overview", "LabelExit": "Exit",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "Visit Community",
"HeaderType": "Type", "LabelBrowseLibrary": "Browse Library",
"HeaderSeverity": "Severity", "LabelConfigureServer": "Configure Emby",
"HeaderUser": "User", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -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."
}

View File

@ -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."
}

View File

@ -1,36 +1,68 @@
{ {
"DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", "Latest": "\u6700\u65b0",
"AppDeviceValues": "App\uff1a {0}\uff0c\u8bbe\u5907\uff1a {1}", "ValueSpecialEpisodeName": "\u7279\u5178 - {0}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "Inherit": "\u7ee7\u627f",
"FolderTypeMixed": "\u6df7\u5408\u5185\u5bb9", "Books": "\u4e66\u7c4d",
"FolderTypeMovies": "\u7535\u5f71", "Music": "\u97f3\u4e50",
"FolderTypeMusic": "\u97f3\u4e50", "Games": "\u6e38\u620f",
"FolderTypeAdultVideos": "\u6210\u4eba\u89c6\u9891", "Photos": "\u7167\u7247",
"FolderTypePhotos": "\u56fe\u7247", "MixedContent": "\u6df7\u5408\u5185\u5bb9",
"FolderTypeMusicVideos": "\u97f3\u4e50\u89c6\u9891", "MusicVideos": "\u97f3\u4e50\u89c6\u9891",
"FolderTypeHomeVideos": "\u5bb6\u5ead\u89c6\u9891", "HomeVideos": "\u5bb6\u5ead\u89c6\u9891",
"FolderTypeGames": "\u6e38\u620f", "Playlists": "\u64ad\u653e\u5217\u8868",
"FolderTypeBooks": "\u4e66\u7c4d", "HeaderRecordingGroups": "\u5f55\u5236\u7ec4",
"FolderTypeTvShows": "\u7535\u89c6", "HeaderContinueWatching": "\u7ee7\u7eed\u89c2\u770b",
"FolderTypeInherit": "\u7ee7\u627f", "HeaderFavoriteArtists": "\u6700\u7231\u4f5c\u5bb6",
"HeaderCastCrew": "\u6f14\u804c\u4eba\u5458", "HeaderFavoriteSongs": "\u6700\u7231\u7684\u6b4c\u66f2",
"HeaderPeople": "\u4eba\u7269", "HeaderAlbumArtists": "\u4e13\u8f91\u4f5c\u5bb6",
"ValueSpecialEpisodeName": "\u7279\u522b - {0}", "HeaderFavoriteAlbums": "\u6700\u7231\u7684\u4e13\u8f91",
"LabelChapterName": "\u7ae0\u8282 {0}", "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",
"TvShows": "TV Shows",
"Shows": "\u8282\u76ee",
"Genres": "\u98ce\u683c",
"NameSeasonNumber": "\u5b63 {0}", "NameSeasonNumber": "\u5b63 {0}",
"LabelExit": "\u9000\u51fa", "AppDeviceValues": "\u5e94\u7528: {0}, \u8bbe\u5907: {1}",
"LabelVisitCommunity": "\u8bbf\u95ee\u793e\u533a", "UserDownloadingItemWithValues": "{0} \u6b63\u5728\u4e0b\u8f7d {1}",
"LabelGithub": "Github", "HeaderLiveTV": "\u7535\u89c6\u76f4\u64ad",
"LabelApiDocumentation": "API\u6587\u6863", "ChapterNameValue": "\u7ae0\u8282 {0}",
"LabelDeveloperResources": "\u5f00\u53d1\u8005\u8d44\u6e90", "ScheduledTaskFailedWithName": "{0} \u5df2\u5931\u8d25",
"LabelBrowseLibrary": "\u6d4f\u89c8\u5a92\u4f53\u5e93", "LabelRunningTimeValue": "\u8fd0\u884c\u65f6\u95f4\uff1a{0}",
"LabelConfigureServer": "\u914d\u7f6eEmby", "ScheduledTaskStartedWithName": "{0} \u5df2\u5f00\u59cb",
"LabelRestartServer": "\u91cd\u542f\u670d\u52a1\u5668", "VersionNumber": "\u7248\u672c {0}",
"CategorySync": "\u540c\u6b65", "PluginInstalledWithName": "{0} \u5df2\u5b89\u88c5",
"CategoryUser": "\u7528\u6237", "StartupEmbyServerIsLoading": "Emby \u670d\u52a1\u5668\u52a0\u8f7d\u4e2d\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002",
"CategorySystem": "\u7cfb\u7edf", "PluginUpdatedWithName": "{0} \u5df2\u66f4\u65b0",
"CategoryApplication": "\u5e94\u7528\u7a0b\u5e8f", "PluginUninstalledWithName": "{0} \u5df2\u5378\u8f7d",
"CategoryPlugin": "\u63d2\u4ef6", "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", "NotificationOptionPluginError": "\u63d2\u4ef6\u5931\u8d25",
"NotificationOptionApplicationUpdateAvailable": "\u6709\u53ef\u7528\u7684\u5e94\u7528\u7a0b\u5e8f\u66f4\u65b0", "NotificationOptionApplicationUpdateAvailable": "\u6709\u53ef\u7528\u7684\u5e94\u7528\u7a0b\u5e8f\u66f4\u65b0",
"NotificationOptionApplicationUpdateInstalled": "\u5e94\u7528\u7a0b\u5e8f\u66f4\u65b0\u5df2\u5b89\u88c5", "NotificationOptionApplicationUpdateInstalled": "\u5e94\u7528\u7a0b\u5e8f\u66f4\u65b0\u5df2\u5b89\u88c5",
@ -40,139 +72,25 @@
"NotificationOptionVideoPlayback": "\u89c6\u9891\u5f00\u59cb\u64ad\u653e", "NotificationOptionVideoPlayback": "\u89c6\u9891\u5f00\u59cb\u64ad\u653e",
"NotificationOptionAudioPlayback": "\u97f3\u9891\u5f00\u59cb\u64ad\u653e", "NotificationOptionAudioPlayback": "\u97f3\u9891\u5f00\u59cb\u64ad\u653e",
"NotificationOptionGamePlayback": "\u6e38\u620f\u5f00\u59cb", "NotificationOptionGamePlayback": "\u6e38\u620f\u5f00\u59cb",
"NotificationOptionVideoPlaybackStopped": "\u89c6\u9891\u64ad\u653e\u505c\u6b62", "NotificationOptionVideoPlaybackStopped": "\u89c6\u9891\u64ad\u653e\u5df2\u505c\u6b62",
"NotificationOptionAudioPlaybackStopped": "\u97f3\u9891\u64ad\u653e\u505c\u6b62", "NotificationOptionAudioPlaybackStopped": "\u97f3\u9891\u64ad\u653e\u5df2\u505c\u6b62",
"NotificationOptionGamePlaybackStopped": "\u6e38\u620f\u505c\u6b62", "NotificationOptionGamePlaybackStopped": "\u6e38\u620f\u505c\u6b62",
"NotificationOptionTaskFailed": "\u8ba1\u5212\u4efb\u52a1\u5931\u8d25", "NotificationOptionTaskFailed": "\u8ba1\u5212\u4efb\u52a1\u5931\u8d25",
"NotificationOptionInstallationFailed": "\u5b89\u88c5\u5931\u8d25", "NotificationOptionInstallationFailed": "\u5b89\u88c5\u5931\u8d25",
"NotificationOptionNewLibraryContent": "\u6dfb\u52a0\u65b0\u5185\u5bb9", "NotificationOptionNewLibraryContent": "\u5df2\u6dfb\u52a0\u65b0\u5185\u5bb9",
"NotificationOptionNewLibraryContentMultiple": "\u65b0\u7684\u5185\u5bb9\u52a0\u5165\uff08\u591a\u4e2a\uff09", "NotificationOptionCameraImageUploaded": "\u76f8\u673a\u56fe\u7247\u5df2\u4e0a\u4f20",
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "\u7528\u6237\u5df2\u9501\u5b9a",
"NotificationOptionUserLockedOut": "User locked out", "NotificationOptionServerRestartRequired": "\u670d\u52a1\u5668\u9700\u8981\u91cd\u542f",
"NotificationOptionServerRestartRequired": "\u9700\u8981\u91cd\u65b0\u542f\u52a8\u670d\u52a1\u5668", "UserLockedOutWithName": "\u7528\u6237 {0} \u5df2\u88ab\u9501\u5b9a",
"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}",
"SubtitleDownloadFailureForItem": "\u4e3a {0} \u4e0b\u8f7d\u5b57\u5e55\u5931\u8d25", "SubtitleDownloadFailureForItem": "\u4e3a {0} \u4e0b\u8f7d\u5b57\u5e55\u5931\u8d25",
"HeaderUnidentified": "Unidentified", "Sync": "\u540c\u6b65",
"HeaderImagePrimary": "Primary", "User": "\u7528\u6237",
"HeaderImageBackdrop": "Backdrop", "System": "\u7cfb\u7edf",
"HeaderImageLogo": "Logo", "Application": "\u5e94\u7528\u7a0b\u5e8f",
"HeaderUserPrimaryImage": "User Image", "Plugin": "\u63d2\u4ef6",
"HeaderOverview": "Overview", "LabelExit": "\u9000\u51fa",
"HeaderShortOverview": "Short Overview", "LabelVisitCommunity": "\u8bbf\u95ee\u793e\u533a",
"HeaderType": "Type", "LabelBrowseLibrary": "\u6d4f\u89c8\u5a92\u4f53\u5e93",
"HeaderSeverity": "Severity", "LabelConfigureServer": "\u914d\u7f6e Emby",
"HeaderUser": "\u7528\u6237", "LabelRestartServer": "\u91cd\u542f\u670d\u52a1\u5668"
"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."
} }

View File

@ -1,36 +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": "Favorite Shows",
"HeaderNextUp": "Next Up",
"Favorites": "Favorites",
"Collections": "Collections",
"Channels": "Channels",
"Movies": "Movies",
"Albums": "Albums",
"Artists": "Artists",
"Folders": "Folders",
"Songs": "Songs",
"TvShows": "TV Shows",
"Shows": "Shows",
"Genres": "Genres",
"NameSeasonNumber": "Season {0}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Device: {1}",
"UserDownloadingItemWithValues": "{0} is downloading {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}",
"FolderTypeMixed": "\u6df7\u5408\u5167\u5bb9", "HeaderLiveTV": "Live TV",
"FolderTypeMovies": "\u96fb\u5f71", "ChapterNameValue": "Chapter {0}",
"FolderTypeMusic": "\u97f3\u6a02", "ScheduledTaskFailedWithName": "{0} failed",
"FolderTypeAdultVideos": "\u6210\u4eba\u5f71\u7247", "LabelRunningTimeValue": "Running time: {0}",
"FolderTypePhotos": "\u76f8\u7247", "ScheduledTaskStartedWithName": "{0} started",
"FolderTypeMusicVideos": "MV", "VersionNumber": "\u7248\u672c{0}",
"FolderTypeHomeVideos": "\u500b\u4eba\u5f71\u7247", "PluginInstalledWithName": "{0} was installed",
"FolderTypeGames": "\u904a\u6232", "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.",
"FolderTypeBooks": "\u66f8\u85c9", "PluginUpdatedWithName": "{0} was updated",
"FolderTypeTvShows": "\u96fb\u8996\u7bc0\u76ee", "PluginUninstalledWithName": "{0} was uninstalled",
"FolderTypeInherit": "\u7e7c\u627f", "ItemAddedWithName": "{0} was added to the library",
"HeaderCastCrew": "\u6f14\u54e1\u9663\u5bb9", "ItemRemovedWithName": "{0} was removed from the library",
"HeaderPeople": "\u4eba\u7269", "LabelIpAddressValue": "Ip address: {0}",
"ValueSpecialEpisodeName": "Special - {0}", "DeviceOnlineWithName": "{0} is connected",
"LabelChapterName": "Chapter {0}", "UserOnlineFromDevice": "{0} is online from {1}",
"NameSeasonNumber": "\u5287\u96c6\u5b63\u5ea6 {0}", "ProviderValue": "Provider: {0}",
"LabelExit": "\u96e2\u958b", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
"LabelVisitCommunity": "\u8a2a\u554f\u8a0e\u8ad6\u5340", "UserCreatedWithName": "User {0} has been created",
"LabelGithub": "Github", "UserPasswordChangedWithName": "Password has been changed for user {0}",
"LabelApiDocumentation": "Api \u6587\u4ef6", "UserDeletedWithName": "User {0} has been deleted",
"LabelDeveloperResources": "\u958b\u767c\u8005\u8cc7\u6e90", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
"LabelBrowseLibrary": "\u700f\u89bd\u8cc7\u6599\u5eab", "MessageServerConfigurationUpdated": "Server configuration has been updated",
"LabelConfigureServer": "\u8a2d\u7f6e Emby", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
"LabelRestartServer": "\u91cd\u65b0\u555f\u52d5\u4f3a\u670d\u5668", "MessageApplicationUpdated": "Emby Server has been updated",
"CategorySync": "\u540c\u6b65", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
"CategoryUser": "User", "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"CategorySystem": "System", "UserOfflineFromDevice": "{0} has disconnected from {1}",
"CategoryApplication": "Application", "DeviceOfflineWithName": "{0} has disconnected",
"CategoryPlugin": "Plugin", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"NotificationOptionPluginError": "Plugin failure", "NotificationOptionPluginError": "Plugin failure",
"NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateAvailable": "Application update available",
"NotificationOptionApplicationUpdateInstalled": "Application update installed", "NotificationOptionApplicationUpdateInstalled": "Application update installed",
@ -46,133 +78,19 @@
"NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionTaskFailed": "Scheduled task failure",
"NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionInstallationFailed": "Installation failure",
"NotificationOptionNewLibraryContent": "New content added", "NotificationOptionNewLibraryContent": "New content added",
"NotificationOptionNewLibraryContentMultiple": "New content added (multiple)",
"NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionCameraImageUploaded": "Camera image uploaded",
"NotificationOptionUserLockedOut": "User locked out", "NotificationOptionUserLockedOut": "User locked out",
"NotificationOptionServerRestartRequired": "\u9700\u8981\u91cd\u65b0\u555f\u52d5", "NotificationOptionServerRestartRequired": "Server restart required",
"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",
"UserLockedOutWithName": "User {0} has been locked out", "UserLockedOutWithName": "User {0} has been locked out",
"UserOfflineFromDevice": "{0} has disconnected from {1}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "Sync": "Sync",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "User": "User",
"SubtitleDownloadFailureForItem": "\u70ba {0} \u4e0b\u8f09\u5b57\u5e55\u5931\u6557", "System": "System",
"HeaderUnidentified": "Unidentified", "Application": "Application",
"HeaderImagePrimary": "Primary", "Plugin": "Plugin",
"HeaderImageBackdrop": "Backdrop", "LabelExit": "Exit",
"HeaderImageLogo": "Logo", "LabelVisitCommunity": "\u8a2a\u554f\u8a0e\u8ad6\u5340",
"HeaderUserPrimaryImage": "User Image", "LabelBrowseLibrary": "Browse Library",
"HeaderOverview": "Overview", "LabelConfigureServer": "Configure Emby",
"HeaderShortOverview": "Short Overview", "LabelRestartServer": "Restart Server"
"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."
} }

View File

@ -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."
}

View File

@ -315,6 +315,15 @@ namespace Emby.Server.Implementations.Localization
public string GetLocalizedString(string phrase, string culture) public string GetLocalizedString(string phrase, string culture)
{ {
if (string.IsNullOrWhiteSpace(culture))
{
culture = _configurationManager.Configuration.UICulture;
}
if (string.IsNullOrWhiteSpace(culture))
{
culture = DefaultCulture;
}
var dictionary = GetLocalizationDictionary(culture); var dictionary = GetLocalizationDictionary(culture);
string value; string value;
@ -327,19 +336,31 @@ namespace Emby.Server.Implementations.Localization
return phrase; return phrase;
} }
const string DefaultCulture = "en-US";
private readonly ConcurrentDictionary<string, Dictionary<string, string>> _dictionaries = private readonly ConcurrentDictionary<string, Dictionary<string, string>> _dictionaries =
new ConcurrentDictionary<string, Dictionary<string, string>>(StringComparer.OrdinalIgnoreCase); new ConcurrentDictionary<string, Dictionary<string, string>>(StringComparer.OrdinalIgnoreCase);
public Dictionary<string, string> GetLocalizationDictionary(string culture) public Dictionary<string, string> GetLocalizationDictionary(string culture)
{ {
if (string.IsNullOrWhiteSpace(culture))
{
throw new ArgumentNullException("culture");
}
const string prefix = "Core"; const string prefix = "Core";
var key = prefix + culture; var key = prefix + culture;
return _dictionaries.GetOrAdd(key, k => GetDictionary(prefix, culture, "en-US.json")); return _dictionaries.GetOrAdd(key, k => GetDictionary(prefix, culture, DefaultCulture + ".json"));
} }
private Dictionary<string, string> GetDictionary(string prefix, string culture, string baseFilename) private Dictionary<string, string> GetDictionary(string prefix, string culture, string baseFilename)
{ {
if (string.IsNullOrWhiteSpace(culture))
{
throw new ArgumentNullException("culture");
}
var dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); var dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
var namespaceName = GetType().Namespace + "." + prefix; var namespaceName = GetType().Namespace + "." + prefix;
@ -387,36 +408,47 @@ namespace Emby.Server.Implementations.Localization
return new LocalizatonOption[] return new LocalizatonOption[]
{ {
new LocalizatonOption{ Name="Arabic", Value="ar"}, new LocalizatonOption{ Name="Arabic", Value="ar"},
new LocalizatonOption{ Name="Belarusian (Belarus)", Value="be-BY"},
new LocalizatonOption{ Name="Bulgarian (Bulgaria)", Value="bg-BG"}, new LocalizatonOption{ Name="Bulgarian (Bulgaria)", Value="bg-BG"},
new LocalizatonOption{ Name="Catalan", Value="ca"}, new LocalizatonOption{ Name="Catalan", Value="ca"},
new LocalizatonOption{ Name="Chinese Simplified", Value="zh-CN"}, new LocalizatonOption{ Name="Chinese Simplified", Value="zh-CN"},
new LocalizatonOption{ Name="Chinese Traditional", Value="zh-TW"}, new LocalizatonOption{ Name="Chinese Traditional", Value="zh-TW"},
new LocalizatonOption{ Name="Chinese Traditional (Hong Kong)", Value="zh-HK"},
new LocalizatonOption{ Name="Croatian", Value="hr"}, new LocalizatonOption{ Name="Croatian", Value="hr"},
new LocalizatonOption{ Name="Czech", Value="cs"}, new LocalizatonOption{ Name="Czech", Value="cs"},
new LocalizatonOption{ Name="Danish", Value="da"}, new LocalizatonOption{ Name="Danish", Value="da"},
new LocalizatonOption{ Name="Dutch", Value="nl"}, new LocalizatonOption{ Name="Dutch", Value="nl"},
new LocalizatonOption{ Name="English (United Kingdom)", Value="en-GB"}, new LocalizatonOption{ Name="English (United Kingdom)", Value="en-GB"},
new LocalizatonOption{ Name="English (United States)", Value="en-us"}, new LocalizatonOption{ Name="English (United States)", Value="en-US"},
new LocalizatonOption{ Name="Finnish", Value="fi"}, new LocalizatonOption{ Name="Finnish", Value="fi"},
new LocalizatonOption{ Name="French", Value="fr"}, new LocalizatonOption{ Name="French", Value="fr"},
new LocalizatonOption{ Name="French (Canada)", Value="fr-CA"}, new LocalizatonOption{ Name="French (Canada)", Value="fr-CA"},
new LocalizatonOption{ Name="German", Value="de"}, new LocalizatonOption{ Name="German", Value="de"},
new LocalizatonOption{ Name="Greek", Value="el"}, new LocalizatonOption{ Name="Greek", Value="el"},
new LocalizatonOption{ Name="Hebrew", Value="he"}, new LocalizatonOption{ Name="Hebrew", Value="he"},
new LocalizatonOption{ Name="Hindi (India)", Value="hi-IN"},
new LocalizatonOption{ Name="Hungarian", Value="hu"}, new LocalizatonOption{ Name="Hungarian", Value="hu"},
new LocalizatonOption{ Name="Indonesian", Value="id"}, new LocalizatonOption{ Name="Indonesian", Value="id"},
new LocalizatonOption{ Name="Italian", Value="it"}, new LocalizatonOption{ Name="Italian", Value="it"},
new LocalizatonOption{ Name="Japanese", Value="ja"},
new LocalizatonOption{ Name="Kazakh", Value="kk"}, new LocalizatonOption{ Name="Kazakh", Value="kk"},
new LocalizatonOption{ Name="Korean", Value="ko"},
new LocalizatonOption{ Name="Lithuanian", Value="lt-LT"},
new LocalizatonOption{ Name="Malay", Value="ms"},
new LocalizatonOption{ Name="Norwegian Bokmål", Value="nb"}, new LocalizatonOption{ Name="Norwegian Bokmål", Value="nb"},
new LocalizatonOption{ Name="Persian", Value="fa"}, new LocalizatonOption{ Name="Persian", Value="fa"},
new LocalizatonOption{ Name="Polish", Value="pl"}, new LocalizatonOption{ Name="Polish", Value="pl"},
new LocalizatonOption{ Name="Portuguese (Brazil)", Value="pt-BR"}, new LocalizatonOption{ Name="Portuguese (Brazil)", Value="pt-BR"},
new LocalizatonOption{ Name="Portuguese (Portugal)", Value="pt-PT"}, new LocalizatonOption{ Name="Portuguese (Portugal)", Value="pt-PT"},
new LocalizatonOption{ Name="Romanian", Value="ro"},
new LocalizatonOption{ Name="Russian", Value="ru"}, new LocalizatonOption{ Name="Russian", Value="ru"},
new LocalizatonOption{ Name="Slovak", Value="sk"},
new LocalizatonOption{ Name="Slovenian (Slovenia)", Value="sl-SI"}, new LocalizatonOption{ Name="Slovenian (Slovenia)", Value="sl-SI"},
new LocalizatonOption{ Name="Spanish", Value="es-ES"}, new LocalizatonOption{ Name="Spanish", Value="es"},
new LocalizatonOption{ Name="Spanish (Latin America)", Value="es-419"},
new LocalizatonOption{ Name="Spanish (Mexico)", Value="es-MX"}, new LocalizatonOption{ Name="Spanish (Mexico)", Value="es-MX"},
new LocalizatonOption{ Name="Swedish", Value="sv"}, new LocalizatonOption{ Name="Swedish", Value="sv"},
new LocalizatonOption{ Name="Swiss German", Value="gsw"},
new LocalizatonOption{ Name="Turkish", Value="tr"}, new LocalizatonOption{ Name="Turkish", Value="tr"},
new LocalizatonOption{ Name="Ukrainian", Value="uk"}, new LocalizatonOption{ Name="Ukrainian", Value="uk"},
new LocalizatonOption{ Name="Vietnamese", Value="vi"} new LocalizatonOption{ Name="Vietnamese", Value="vi"}

View File

@ -29,7 +29,7 @@ namespace Emby.Server.Implementations.Networking
public List<IpAddressInfo> GetLocalIpAddresses() public List<IpAddressInfo> GetLocalIpAddresses()
{ {
const int cacheMinutes = 5; const int cacheMinutes = 10;
lock (_localIpAddressSyncLock) lock (_localIpAddressSyncLock)
{ {
@ -81,8 +81,18 @@ namespace Emby.Server.Implementations.Networking
return true; return true;
} }
// Handle ipv4 mapped to ipv6 // ipv6
endpoint = endpoint.Replace("::ffff:", string.Empty); 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: // Private address space:
// http://en.wikipedia.org/wiki/Private_network // http://en.wikipedia.org/wiki/Private_network
@ -92,13 +102,74 @@ namespace Emby.Server.Implementations.Networking
return Is172AddressPrivate(endpoint); return Is172AddressPrivate(endpoint);
} }
return return endpoint.StartsWith("localhost", StringComparison.OrdinalIgnoreCase) ||
endpoint.StartsWith("127.0.0.1", StringComparison.OrdinalIgnoreCase) ||
IsInPrivateAddressSpaceAndLocalSubnet(endpoint);
}
endpoint.StartsWith("localhost", StringComparison.OrdinalIgnoreCase) || public bool IsInPrivateAddressSpaceAndLocalSubnet(string endpoint)
{
var endpointFirstPart = endpoint.Split('.')[0];
string subnet_Match = "";
if (
endpoint.StartsWith("127.", StringComparison.OrdinalIgnoreCase) || endpoint.StartsWith("127.", StringComparison.OrdinalIgnoreCase) ||
endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase) || endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase) ||
endpoint.StartsWith("192.168", 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 && 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());
}
}
return endpoint.StartsWith(subnet_Match + ".", StringComparison.OrdinalIgnoreCase);
}
private Dictionary<string, string> _subnetLookup = new Dictionary<string, string>(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) private bool Is172AddressPrivate(string endpoint)
@ -198,12 +269,6 @@ namespace Emby.Server.Implementations.Networking
return Dns.GetHostAddressesAsync(hostName); return Dns.GetHostAddressesAsync(hostName);
} }
private readonly List<NetworkInterfaceType> _validNetworkInterfaceTypes = new List<NetworkInterfaceType>
{
NetworkInterfaceType.Ethernet,
NetworkInterfaceType.Wireless80211
};
private List<IPAddress> GetIPsDefault() private List<IPAddress> GetIPsDefault()
{ {
NetworkInterface[] interfaces; NetworkInterface[] interfaces;
@ -227,7 +292,8 @@ namespace Emby.Server.Implementations.Networking
try 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(); var ipProperties = network.GetIPProperties();

View File

@ -88,15 +88,18 @@ namespace Emby.Server.Implementations.News
BufferContent = false BufferContent = false
}; };
using (var stream = await _httpClient.Get(requestOptions).ConfigureAwait(false)) using (var response = await _httpClient.SendAsync(requestOptions, "GET").ConfigureAwait(false))
{ {
using (var reader = XmlReader.Create(stream)) using (var stream = response.Content)
{ {
var news = ParseRssItems(reader).ToList(); using (var reader = XmlReader.Create(stream))
{
var news = ParseRssItems(reader).ToList();
_json.SerializeToFile(news, path); _json.SerializeToFile(news, path);
await CreateNotifications(news, lastUpdate, CancellationToken.None).ConfigureAwait(false); await CreateNotifications(news, lastUpdate, CancellationToken.None).ConfigureAwait(false);
}
} }
} }
} }

View File

@ -160,7 +160,7 @@ namespace Emby.Server.Implementations.Notifications
Update(type); Update(type);
} }
var systemName = _localization.GetLocalizedString("CategorySystem"); var systemName = _localization.GetLocalizedString("System");
return knownTypes.OrderByDescending(i => string.Equals(i.Category, systemName, StringComparison.OrdinalIgnoreCase)) return knownTypes.OrderByDescending(i => string.Equals(i.Category, systemName, StringComparison.OrdinalIgnoreCase))
.ThenBy(i => i.Category) .ThenBy(i => i.Category)
@ -175,23 +175,23 @@ namespace Emby.Server.Implementations.Notifications
if (note.Type.IndexOf("Playback", StringComparison.OrdinalIgnoreCase) != -1) 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) 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) 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) else if (note.Type.IndexOf("UserLockedOut", StringComparison.OrdinalIgnoreCase) != -1)
{ {
note.Category = _localization.GetLocalizedString("CategoryUser"); note.Category = _localization.GetLocalizedString("User");
} }
else else
{ {
note.Category = _localization.GetLocalizedString("CategorySystem"); note.Category = _localization.GetLocalizedString("System");
} }
} }
} }

View File

@ -37,6 +37,11 @@ namespace Emby.Server.Implementations.Notifications
} }
public Task SendNotification(NotificationRequest request, CancellationToken cancellationToken) public Task SendNotification(NotificationRequest request, CancellationToken cancellationToken)
{
return SendNotification(request, null, cancellationToken);
}
public Task SendNotification(NotificationRequest request, BaseItem relatedItem, CancellationToken cancellationToken)
{ {
var notificationType = request.NotificationType; var notificationType = request.NotificationType;
@ -45,7 +50,9 @@ namespace Emby.Server.Implementations.Notifications
GetConfiguration().GetOptions(notificationType); GetConfiguration().GetOptions(notificationType);
var users = GetUserIds(request, options) var users = GetUserIds(request, options)
.Select(i => _userManager.GetUserById(i)); .Select(i => _userManager.GetUserById(i))
.Where(i => relatedItem == null || relatedItem.IsVisibleStandalone(i))
.ToArray();
var title = GetTitle(request, options); var title = GetTitle(request, options);
var description = GetDescription(request, options); var description = GetDescription(request, options);
@ -69,7 +76,6 @@ namespace Emby.Server.Implementations.Notifications
var tasks = users.Select(i => SendNotification(request, service, title, description, i, cancellationToken)); var tasks = users.Select(i => SendNotification(request, service, title, description, i, cancellationToken));
return Task.WhenAll(tasks); return Task.WhenAll(tasks);
} }
private IEnumerable<string> GetUserIds(NotificationRequest request, NotificationOption options) private IEnumerable<string> GetUserIds(NotificationRequest request, NotificationOption options)

View File

@ -97,7 +97,7 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["UserName"] = e.Argument.Name; notification.Variables["UserName"] = e.Argument.Name;
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
async void _deviceManager_CameraImageUploaded(object sender, GenericEventArgs<CameraImageUploadInfo> e) async void _deviceManager_CameraImageUploaded(object sender, GenericEventArgs<CameraImageUploadInfo> e)
@ -111,7 +111,7 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["DeviceName"] = e.Argument.Device.Name; notification.Variables["DeviceName"] = e.Argument.Device.Name;
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
async void _appHost_ApplicationUpdated(object sender, GenericEventArgs<PackageVersionInfo> e) async void _appHost_ApplicationUpdated(object sender, GenericEventArgs<PackageVersionInfo> e)
@ -127,7 +127,7 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["Version"] = e.Argument.versionStr; notification.Variables["Version"] = e.Argument.versionStr;
notification.Variables["ReleaseNotes"] = e.Argument.description; notification.Variables["ReleaseNotes"] = e.Argument.description;
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
async void _installationManager_PluginUpdated(object sender, GenericEventArgs<Tuple<IPlugin, PackageVersionInfo>> e) async void _installationManager_PluginUpdated(object sender, GenericEventArgs<Tuple<IPlugin, PackageVersionInfo>> e)
@ -146,7 +146,7 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["Version"] = installationInfo.Version.ToString(); notification.Variables["Version"] = installationInfo.Version.ToString();
notification.Variables["ReleaseNotes"] = e.Argument.Item2.description; notification.Variables["ReleaseNotes"] = e.Argument.Item2.description;
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
async void _installationManager_PluginInstalled(object sender, GenericEventArgs<PackageVersionInfo> e) async void _installationManager_PluginInstalled(object sender, GenericEventArgs<PackageVersionInfo> e)
@ -164,7 +164,7 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["Name"] = installationInfo.name; notification.Variables["Name"] = installationInfo.name;
notification.Variables["Version"] = installationInfo.versionStr; notification.Variables["Version"] = installationInfo.versionStr;
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
async void _appHost_HasUpdateAvailableChanged(object sender, EventArgs e) async void _appHost_HasUpdateAvailableChanged(object sender, EventArgs e)
@ -183,7 +183,7 @@ namespace Emby.Server.Implementations.Notifications
NotificationType = type NotificationType = type
}; };
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
async void _appHost_HasPendingRestartChanged(object sender, EventArgs e) async void _appHost_HasPendingRestartChanged(object sender, EventArgs e)
@ -200,7 +200,7 @@ namespace Emby.Server.Implementations.Notifications
NotificationType = type NotificationType = type
}; };
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
private NotificationOptions GetOptions() private NotificationOptions GetOptions()
@ -285,7 +285,7 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["AppName"] = e.ClientName; notification.Variables["AppName"] = e.ClientName;
notification.Variables["DeviceName"] = e.DeviceName; notification.Variables["DeviceName"] = e.DeviceName;
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
private string GetPlaybackNotificationType(string mediaType) private string GetPlaybackNotificationType(string mediaType)
@ -390,7 +390,7 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["Name"] = GetItemName(item); notification.Variables["Name"] = GetItemName(item);
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, item).ConfigureAwait(false);
} }
} }
@ -457,7 +457,7 @@ namespace Emby.Server.Implementations.Notifications
Description = "Check back here for more notifications." Description = "Check back here for more notifications."
}; };
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
async void _taskManager_TaskCompleted(object sender, TaskCompletionEventArgs e) async void _taskManager_TaskCompleted(object sender, TaskCompletionEventArgs e)
@ -478,7 +478,7 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["Name"] = result.Name; notification.Variables["Name"] = result.Name;
notification.Variables["ErrorMessage"] = result.ErrorMessage; notification.Variables["ErrorMessage"] = result.ErrorMessage;
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
} }
@ -496,7 +496,7 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["Name"] = plugin.Name; notification.Variables["Name"] = plugin.Name;
notification.Variables["Version"] = plugin.Version.ToString(); notification.Variables["Version"] = plugin.Version.ToString();
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
async void _installationManager_PackageInstallationFailed(object sender, InstallationFailedEventArgs e) async void _installationManager_PackageInstallationFailed(object sender, InstallationFailedEventArgs e)
@ -515,14 +515,14 @@ namespace Emby.Server.Implementations.Notifications
notification.Variables["Name"] = installationInfo.Name; notification.Variables["Name"] = installationInfo.Name;
notification.Variables["Version"] = installationInfo.Version; notification.Variables["Version"] = installationInfo.Version;
await SendNotification(notification).ConfigureAwait(false); await SendNotification(notification, null).ConfigureAwait(false);
} }
private async Task SendNotification(NotificationRequest notification) private async Task SendNotification(NotificationRequest notification, BaseItem relatedItem)
{ {
try try
{ {
await _notificationManager.SendNotification(notification, CancellationToken.None).ConfigureAwait(false); await _notificationManager.SendNotification(notification, relatedItem, CancellationToken.None).ConfigureAwait(false);
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -1,34 +0,0 @@
using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Emby.Server.Implementations.Images;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Entities;
namespace Emby.Server.Implementations.Photos
{
public class PhotoAlbumImageProvider : BaseDynamicImageProvider<PhotoAlbum>
{
public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor)
: base(fileSystem, providerManager, applicationPaths, imageProcessor)
{
}
protected override List<BaseItem> GetItemsWithImages(IHasMetadata item)
{
var photoAlbum = (PhotoAlbum)item;
var items = GetFinalItems(photoAlbum.Children);
return items;
}
protected override string CreateImage(IHasMetadata item, List<BaseItem> itemsWithImages, string outputPathWithoutExtension, ImageType imageType, int imageIndex)
{
return CreateSingleImage(itemsWithImages, outputPathWithoutExtension, ImageType.Primary);
}
}
}

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