pull/702/head
Tavares André 10 years ago
commit fb59781548

@ -339,14 +339,17 @@ namespace MediaBrowser.Api
return;
}
var timerDuration = job.Type == TranscodingJobType.Progressive ?
1000 :
1800000;
var timerDuration = 1000;
// We can really reduce the timeout for apps that are using the newer api
if (!string.IsNullOrWhiteSpace(job.PlaySessionId) && job.Type != TranscodingJobType.Progressive)
if (job.Type != TranscodingJobType.Progressive)
{
timerDuration = 50000;
timerDuration = 1800000;
// We can really reduce the timeout for apps that are using the newer api
if (!string.IsNullOrWhiteSpace(job.PlaySessionId))
{
timerDuration = 60000;
}
}
job.PingTimeout = timerDuration;
@ -628,6 +631,9 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The live stream identifier.</value>
public string LiveStreamId { get; set; }
public bool IsLiveOutput { get; set; }
/// <summary>
/// Gets or sets the path.
/// </summary>

@ -625,6 +625,8 @@ namespace MediaBrowser.Api.Images
var file = await _imageProcessor.ProcessImage(options).ConfigureAwait(false);
headers["Vary"] = "Accept";
return ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions
{
CacheDuration = cacheDuration,

@ -50,7 +50,7 @@ namespace MediaBrowser.Api.Music
[Route("/MusicGenres/InstantMix", "GET", Summary = "Creates an instant playlist based on a music genre")]
public class GetInstantMixFromMusicGenreId : BaseGetSimilarItems
{
[ApiMember(Name = "Id", Description = "The genre Id", IsRequired = true, DataType = "string", ParameterType = "querypath", Verb = "GET")]
[ApiMember(Name = "Id", Description = "The genre Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
public string Id { get; set; }
}

@ -148,7 +148,6 @@ namespace MediaBrowser.Api.Playback
}
protected readonly CultureInfo UsCulture = new CultureInfo("en-US");
private readonly long _slowSeekTicks = TimeSpan.FromSeconds(0).Ticks;
/// <summary>
/// Gets the fast seek command line parameter.
@ -162,37 +161,12 @@ namespace MediaBrowser.Api.Playback
if (time > 0)
{
if (time > _slowSeekTicks && EnableSlowSeek)
{
time -= _slowSeekTicks;
}
return string.Format("-ss {0}", MediaEncoder.GetTimeParameter(time));
}
return string.Empty;
}
protected string GetSlowSeekCommandLineParameter(StreamRequest request)
{
var time = request.StartTimeTicks ?? 0;
if (time > _slowSeekTicks && _slowSeekTicks > 0)
{
return string.Format("-ss {0}", MediaEncoder.GetTimeParameter(_slowSeekTicks));
}
return string.Empty;
}
protected virtual bool EnableSlowSeek
{
get
{
return false;
}
}
/// <summary>
/// Gets the map args.
/// </summary>
@ -716,7 +690,7 @@ namespace MediaBrowser.Api.Playback
// TODO: Perhaps also use original_size=1920x800 ??
return string.Format("subtitles=filename='{0}'{1},setpts=PTS -{2}/TB",
subtitlePath.Replace('\\', '/').Replace(":/", "\\:/"),
subtitlePath.Replace("'", "\\'").Replace('\\', '/').Replace(":/", "\\:/"),
charsetParam,
seconds.ToString(UsCulture));
}
@ -724,7 +698,7 @@ namespace MediaBrowser.Api.Playback
var mediaPath = state.MediaPath ?? string.Empty;
return string.Format("subtitles='{0}:si={1}',setpts=PTS -{2}/TB",
mediaPath.Replace('\\', '/').Replace(":/", "\\:/"),
mediaPath.Replace("'", "\\'").Replace('\\', '/').Replace(":/", "\\:/"),
state.InternalSubtitleStreamOffset.ToString(UsCulture),
seconds.ToString(UsCulture));
}
@ -1086,7 +1060,7 @@ namespace MediaBrowser.Api.Playback
private void StartThrottler(StreamState state, TranscodingJob transcodingJob)
{
if (EnableThrottling && state.InputProtocol == MediaProtocol.File &&
if (EnableThrottling(state) && state.InputProtocol == MediaProtocol.File &&
state.RunTimeTicks.HasValue &&
state.VideoType == VideoType.VideoFile &&
!string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase))
@ -1099,12 +1073,9 @@ namespace MediaBrowser.Api.Playback
}
}
protected virtual bool EnableThrottling
protected virtual bool EnableThrottling(StreamState state)
{
get
{
return true;
}
return true;
}
private async void StartStreamingLog(TranscodingJob transcodingJob, StreamState state, Stream source, Stream target)

@ -7,13 +7,13 @@ using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Serialization;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Serialization;
namespace MediaBrowser.Api.Playback.Hls
{
@ -100,6 +100,7 @@ namespace MediaBrowser.Api.Playback.Hls
try
{
job = await StartFfMpeg(state, playlist, cancellationTokenSource).ConfigureAwait(false);
job.IsLiveOutput = isLive;
}
catch
{
@ -133,7 +134,7 @@ namespace MediaBrowser.Api.Playback.Hls
var appendBaselineStream = false;
var baselineStreamBitrate = 64000;
var hlsVideoRequest = state.VideoRequest as GetHlsVideoStream;
var hlsVideoRequest = state.VideoRequest as GetHlsVideoStreamLegacy;
if (hlsVideoRequest != null)
{
appendBaselineStream = hlsVideoRequest.AppendBaselineStream;
@ -244,7 +245,7 @@ namespace MediaBrowser.Api.Playback.Hls
protected override string GetCommandLineArguments(string outputPath, StreamState state, bool isEncoding)
{
var hlsVideoRequest = state.VideoRequest as GetHlsVideoStream;
var hlsVideoRequest = state.VideoRequest as GetHlsVideoStreamLegacy;
var itsOffsetMs = hlsVideoRequest == null
? 0

@ -30,27 +30,60 @@ namespace MediaBrowser.Api.Playback.Hls
/// </summary>
[Route("/Videos/{Id}/master.m3u8", "GET", Summary = "Gets a video stream using HTTP live streaming.")]
[Route("/Videos/{Id}/master.m3u8", "HEAD", Summary = "Gets a video stream using HTTP live streaming.")]
public class GetMasterHlsVideoStream : VideoStreamRequest
public class GetMasterHlsVideoPlaylist : VideoStreamRequest, IMasterHlsRequest
{
public bool EnableAdaptiveBitrateStreaming { get; set; }
public GetMasterHlsVideoStream()
public GetMasterHlsVideoPlaylist()
{
EnableAdaptiveBitrateStreaming = true;
}
}
[Route("/Audio/{Id}/master.m3u8", "GET", Summary = "Gets an audio stream using HTTP live streaming.")]
[Route("/Audio/{Id}/master.m3u8", "HEAD", Summary = "Gets an audio stream using HTTP live streaming.")]
public class GetMasterHlsAudioPlaylist : StreamRequest, IMasterHlsRequest
{
public bool EnableAdaptiveBitrateStreaming { get; set; }
public GetMasterHlsAudioPlaylist()
{
EnableAdaptiveBitrateStreaming = true;
}
}
public interface IMasterHlsRequest
{
bool EnableAdaptiveBitrateStreaming { get; set; }
}
[Route("/Videos/{Id}/main.m3u8", "GET", Summary = "Gets a video stream using HTTP live streaming.")]
public class GetMainHlsVideoStream : VideoStreamRequest
public class GetVariantHlsVideoPlaylist : VideoStreamRequest
{
}
[Route("/Audio/{Id}/main.m3u8", "GET", Summary = "Gets an audio stream using HTTP live streaming.")]
public class GetVariantHlsAudioPlaylist : StreamRequest
{
}
/// <summary>
/// Class GetHlsVideoSegment
/// </summary>
[Route("/Videos/{Id}/hlsdynamic/{PlaylistId}/{SegmentId}.ts", "GET")]
[Api(Description = "Gets an Http live streaming segment file. Internal use only.")]
public class GetDynamicHlsVideoSegment : VideoStreamRequest
public class GetHlsVideoSegment : VideoStreamRequest
{
public string PlaylistId { get; set; }
/// <summary>
/// Gets or sets the segment id.
/// </summary>
/// <value>The segment id.</value>
public string SegmentId { get; set; }
}
[Route("/Audio/{Id}/hlsdynamic/{PlaylistId}/{SegmentId}.aac", "GET")]
[Route("/Audio/{Id}/hlsdynamic/{PlaylistId}/{SegmentId}.ts", "GET")]
[Api(Description = "Gets an Http live streaming segment file. Internal use only.")]
public class GetHlsAudioSegment : StreamRequest
{
public string PlaylistId { get; set; }
@ -71,27 +104,47 @@ namespace MediaBrowser.Api.Playback.Hls
protected INetworkManager NetworkManager { get; private set; }
public Task<object> Get(GetMasterHlsVideoStream request)
public Task<object> Get(GetMasterHlsVideoPlaylist request)
{
return GetMasterPlaylistInternal(request, "GET");
}
public Task<object> Head(GetMasterHlsVideoPlaylist request)
{
return GetMasterPlaylistInternal(request, "HEAD");
}
public Task<object> Get(GetMasterHlsAudioPlaylist request)
{
return GetAsync(request, "GET");
return GetMasterPlaylistInternal(request, "GET");
}
public Task<object> Head(GetMasterHlsVideoStream request)
public Task<object> Head(GetMasterHlsAudioPlaylist request)
{
return GetAsync(request, "HEAD");
return GetMasterPlaylistInternal(request, "HEAD");
}
public Task<object> Get(GetMainHlsVideoStream request)
public Task<object> Get(GetVariantHlsVideoPlaylist request)
{
return GetPlaylistAsync(request, "main");
return GetVariantPlaylistInternal(request, true, "main");
}
public Task<object> Get(GetDynamicHlsVideoSegment request)
public Task<object> Get(GetVariantHlsAudioPlaylist request)
{
return GetVariantPlaylistInternal(request, false, "main");
}
public Task<object> Get(GetHlsVideoSegment request)
{
return GetDynamicSegment(request, request.SegmentId);
}
private async Task<object> GetDynamicSegment(VideoStreamRequest request, string segmentId)
public Task<object> Get(GetHlsAudioSegment request)
{
return GetDynamicSegment(request, request.SegmentId);
}
private async Task<object> GetDynamicSegment(StreamRequest request, string segmentId)
{
if ((request.StartTimeTicks ?? 0) > 0)
{
@ -107,7 +160,7 @@ namespace MediaBrowser.Api.Playback.Hls
var playlistPath = Path.ChangeExtension(state.OutputFilePath, ".m3u8");
var segmentPath = GetSegmentPath(playlistPath, requestedIndex);
var segmentPath = GetSegmentPath(state, playlistPath, requestedIndex);
var segmentLength = state.SegmentLength;
var segmentExtension = GetSegmentFileExtension(state);
@ -191,11 +244,11 @@ namespace MediaBrowser.Api.Playback.Hls
ApiEntryPoint.Instance.TranscodingStartLock.Release();
}
Logger.Info("waiting for {0}", segmentPath);
while (!File.Exists(segmentPath))
{
await Task.Delay(50, cancellationToken).ConfigureAwait(false);
}
//Logger.Info("waiting for {0}", segmentPath);
//while (!File.Exists(segmentPath))
//{
// await Task.Delay(50, cancellationToken).ConfigureAwait(false);
//}
Logger.Info("returning {0}", segmentPath);
job = job ?? ApiEntryPoint.Instance.OnTranscodeBeginRequest(playlistPath, TranscodingJobType);
@ -244,7 +297,7 @@ namespace MediaBrowser.Api.Playback.Hls
}
catch (FileNotFoundException)
{
}
}
@ -254,7 +307,7 @@ namespace MediaBrowser.Api.Playback.Hls
for (var i = 0; i < requestedIndex; i++)
{
var segmentPath = GetSegmentPath(playlist, i);
var segmentPath = GetSegmentPath(state, playlist, i);
double length;
if (SegmentLengths.TryGetValue(Path.GetFileName(segmentPath), out length))
@ -360,7 +413,7 @@ namespace MediaBrowser.Api.Playback.Hls
{
var segmentId = "0";
var segmentRequest = request as GetDynamicHlsVideoSegment;
var segmentRequest = request as GetHlsVideoSegment;
if (segmentRequest != null)
{
segmentId = segmentRequest.SegmentId;
@ -369,13 +422,13 @@ namespace MediaBrowser.Api.Playback.Hls
return int.Parse(segmentId, NumberStyles.Integer, UsCulture);
}
private string GetSegmentPath(string playlist, int index)
private string GetSegmentPath(StreamState state, string playlist, int index)
{
var folder = Path.GetDirectoryName(playlist);
var filename = Path.GetFileNameWithoutExtension(playlist);
return Path.Combine(folder, filename + index.ToString(UsCulture) + ".ts");
return Path.Combine(folder, filename + index.ToString(UsCulture) + GetSegmentFileExtension(state));
}
private async Task<object> GetSegmentResult(string playlistPath,
@ -393,21 +446,26 @@ namespace MediaBrowser.Api.Playback.Hls
var segmentFilename = Path.GetFileName(segmentPath);
using (var fileStream = GetPlaylistFileStream(playlistPath))
while (!cancellationToken.IsCancellationRequested)
{
using (var reader = new StreamReader(fileStream))
using (var fileStream = GetPlaylistFileStream(playlistPath))
{
while (!reader.EndOfStream)
using (var reader = new StreamReader(fileStream))
{
var text = await reader.ReadLineAsync().ConfigureAwait(false);
// If it appears in the playlist, it's done
if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
while (!reader.EndOfStream)
{
return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob);
var text = await reader.ReadLineAsync().ConfigureAwait(false);
// If it appears in the playlist, it's done
if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
{
return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob);
}
}
}
}
await Task.Delay(100, cancellationToken).ConfigureAwait(false);
}
// if a different file is encoding, it's done
@ -417,34 +475,35 @@ namespace MediaBrowser.Api.Playback.Hls
//return GetSegmentResult(segmentPath, segmentIndex);
//}
// Wait for the file to stop being written to, then stream it
var length = new FileInfo(segmentPath).Length;
var eofCount = 0;
while (eofCount < 10)
{
var info = new FileInfo(segmentPath);
if (!info.Exists)
{
break;
}
var newLength = info.Length;
if (newLength == length)
{
eofCount++;
}
else
{
eofCount = 0;
}
//// Wait for the file to stop being written to, then stream it
//var length = new FileInfo(segmentPath).Length;
//var eofCount = 0;
length = newLength;
await Task.Delay(100, cancellationToken).ConfigureAwait(false);
}
//while (eofCount < 10)
//{
// var info = new FileInfo(segmentPath);
// if (!info.Exists)
// {
// break;
// }
// var newLength = info.Length;
// if (newLength == length)
// {
// eofCount++;
// }
// else
// {
// eofCount = 0;
// }
// length = newLength;
// await Task.Delay(100, cancellationToken).ConfigureAwait(false);
//}
cancellationToken.ThrowIfCancellationRequested();
return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob);
}
@ -468,7 +527,7 @@ namespace MediaBrowser.Api.Playback.Hls
});
}
private async Task<object> GetAsync(GetMasterHlsVideoStream request, string method)
private async Task<object> GetMasterPlaylistInternal(StreamRequest request, string method)
{
var state = await GetState(request, CancellationToken.None).ConfigureAwait(false);
@ -505,14 +564,16 @@ namespace MediaBrowser.Api.Playback.Hls
var playlistUrl = isLiveStream ? "live.m3u8" : "main.m3u8";
playlistUrl += queryString;
var request = (GetMasterHlsVideoStream)state.Request;
var request = state.Request;
var subtitleStreams = state.MediaSource
.MediaStreams
.Where(i => i.IsTextSubtitleStream)
.ToList();
var subtitleGroup = subtitleStreams.Count > 0 && request.SubtitleMethod == SubtitleDeliveryMethod.Hls ?
var subtitleGroup = subtitleStreams.Count > 0 &&
(request is GetMasterHlsVideoPlaylist) &&
((GetMasterHlsVideoPlaylist)request).SubtitleMethod == SubtitleDeliveryMethod.Hls ?
"subs" :
null;
@ -520,7 +581,7 @@ namespace MediaBrowser.Api.Playback.Hls
if (EnableAdaptiveBitrateStreaming(state, isLiveStream))
{
var requestedVideoBitrate = state.VideoRequest.VideoBitRate.Value;
var requestedVideoBitrate = state.VideoRequest == null ? 0 : state.VideoRequest.VideoBitRate ?? 0;
// By default, vary by just 200k
var variation = GetBitrateVariation(totalBitrate);
@ -590,7 +651,7 @@ namespace MediaBrowser.Api.Playback.Hls
return false;
}
var request = state.Request as GetMasterHlsVideoStream;
var request = state.Request as IMasterHlsRequest;
if (request != null && !request.EnableAdaptiveBitrateStreaming)
{
return false;
@ -612,6 +673,11 @@ namespace MediaBrowser.Api.Playback.Hls
return false;
}
if (!state.IsOutputVideo)
{
return false;
}
// Having problems in android
return false;
//return state.VideoRequest.VideoBitRate.HasValue;
@ -667,7 +733,7 @@ namespace MediaBrowser.Api.Playback.Hls
return variation;
}
private async Task<object> GetPlaylistAsync(VideoStreamRequest request, string name)
private async Task<object> GetVariantPlaylistInternal(StreamRequest request, bool isOutputVideo, string name)
{
var state = await GetState(request, CancellationToken.None).ConfigureAwait(false);
@ -675,7 +741,7 @@ namespace MediaBrowser.Api.Playback.Hls
builder.AppendLine("#EXTM3U");
builder.AppendLine("#EXT-X-VERSION:3");
builder.AppendLine("#EXT-X-TARGETDURATION:" + state.SegmentLength.ToString(UsCulture));
builder.AppendLine("#EXT-X-TARGETDURATION:" + (state.SegmentLength).ToString(UsCulture));
builder.AppendLine("#EXT-X-MEDIA-SEQUENCE:0");
var queryStringIndex = Request.RawUrl.IndexOf('?');
@ -691,10 +757,11 @@ namespace MediaBrowser.Api.Playback.Hls
builder.AppendLine("#EXTINF:" + length.ToString(UsCulture) + ",");
builder.AppendLine(string.Format("hlsdynamic/{0}/{1}.ts{2}",
builder.AppendLine(string.Format("hlsdynamic/{0}/{1}{2}{3}",
name,
index.ToString(UsCulture),
GetSegmentFileExtension(isOutputVideo),
queryString));
seconds -= state.SegmentLength;
@ -710,6 +777,28 @@ namespace MediaBrowser.Api.Playback.Hls
protected override string GetAudioArguments(StreamState state)
{
if (!state.IsOutputVideo)
{
var audioTranscodeParams = new List<string>();
if (state.OutputAudioBitrate.HasValue)
{
audioTranscodeParams.Add("-ab " + state.OutputAudioBitrate.Value.ToString(UsCulture));
}
if (state.OutputAudioChannels.HasValue)
{
audioTranscodeParams.Add("-ac " + state.OutputAudioChannels.Value.ToString(UsCulture));
}
if (state.OutputAudioSampleRate.HasValue)
{
audioTranscodeParams.Add("-ar " + state.OutputAudioSampleRate.Value.ToString(UsCulture));
}
audioTranscodeParams.Add("-vn");
return string.Join(" ", audioTranscodeParams.ToArray());
}
var codec = state.OutputAudioCodec;
if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase))
@ -740,6 +829,11 @@ namespace MediaBrowser.Api.Playback.Hls
protected override string GetVideoArguments(StreamState state)
{
if (!state.IsOutputVideo)
{
return string.Empty;
}
var codec = state.OutputVideoCodec;
var args = "-codec:v:0 " + codec;
@ -752,30 +846,36 @@ namespace MediaBrowser.Api.Playback.Hls
// See if we can save come cpu cycles by avoiding encoding
if (codec.Equals("copy", StringComparison.OrdinalIgnoreCase))
{
return state.VideoStream != null && IsH264(state.VideoStream) ?
args + " -bsf:v h264_mp4toannexb" :
args;
args += state.VideoStream != null && IsH264(state.VideoStream)
? args + " -bsf:v h264_mp4toannexb"
: args;
}
else
{
var keyFrameArg = string.Format(" -force_key_frames expr:gte(t,n_forced*{0})",
state.SegmentLength.ToString(UsCulture));
var keyFrameArg = string.Format(" -force_key_frames expr:gte(t,n_forced*{0})",
1.ToString(UsCulture));
var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream;
var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream;
args += " " + GetVideoQualityParam(state, H264Encoder, true) + keyFrameArg;
args += " " + GetVideoQualityParam(state, H264Encoder, true) + keyFrameArg;
//args += " -mixed-refs 0 -refs 3 -x264opts b_pyramid=0:weightb=0:weightp=0";
// Add resolution params, if specified
if (!hasGraphicalSubs)
{
args += GetOutputSizeParam(state, codec, false);
}
// Add resolution params, if specified
if (!hasGraphicalSubs)
{
args += GetOutputSizeParam(state, codec, false);
}
// This is for internal graphical subs
if (hasGraphicalSubs)
{
args += GetGraphicalSubtitleParam(state, codec);
// This is for internal graphical subs
if (hasGraphicalSubs)
{
args += GetGraphicalSubtitleParam(state, codec);
}
}
args += " -flags +loop-global_header -sc_threshold 0";
return args;
}
@ -783,13 +883,13 @@ namespace MediaBrowser.Api.Playback.Hls
{
var threads = GetNumberOfThreads(state, false);
var inputModifier = GetInputModifier(state);
var inputModifier = GetInputModifier(state, false);
// If isEncoding is true we're actually starting ffmpeg
var startNumberParam = isEncoding ? GetStartNumber(state).ToString(UsCulture) : "0";
var toTimeParam = string.Empty;
if (state.RunTimeTicks.HasValue)
if (EnableSplitTranscoding(state))
{
var startTime = state.Request.StartTimeTicks ?? 0;
var durationSeconds = ApiEntryPoint.Instance.GetEncodingOptions().ThrottleThresholdInSeconds;
@ -799,73 +899,77 @@ namespace MediaBrowser.Api.Playback.Hls
if (endTime < state.RunTimeTicks.Value)
{
toTimeParam = " -to " + MediaEncoder.GetTimeParameter(endTime);
//toTimeParam = " -to " + MediaEncoder.GetTimeParameter(endTime);
toTimeParam = " -t " + MediaEncoder.GetTimeParameter(TimeSpan.FromSeconds(durationSeconds).Ticks);
}
}
var slowSeekParam = GetSlowSeekCommandLineParameter(state.Request);
if (!string.IsNullOrWhiteSpace(slowSeekParam))
var timestampOffsetParam = string.Empty;
if (state.IsOutputVideo)
{
slowSeekParam = " " + slowSeekParam;
timestampOffsetParam = " -output_ts_offset " + MediaEncoder.GetTimeParameter(state.Request.StartTimeTicks ?? 0).ToString(CultureInfo.InvariantCulture);
}
var mapArgs = state.IsOutputVideo ? GetMapArgs(state) : string.Empty;
if (state.EnableGenericHlsSegmenter)
{
var outputTsArg = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath)) + "%d.ts";
//var outputTsArg = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath)) + "%d" + GetSegmentFileExtension(state);
return string.Format("{0} {1}{10}{11} -map_metadata -1 -threads {2} {3} {4} -flags -global_header -sc_threshold 0 {5} -f segment -segment_time {6} -segment_start_number {7} -segment_list \"{8}\" -y \"{9}\"",
inputModifier,
GetInputArgument(state),
threads,
GetMapArgs(state),
GetVideoArguments(state),
GetAudioArguments(state),
state.SegmentLength.ToString(UsCulture),
startNumberParam,
outputPath,
outputTsArg,
slowSeekParam,
toTimeParam
).Trim();
}
//return string.Format("{0} {11} {1}{10} -map_metadata -1 -threads {2} {3} {4} {5} -f segment -segment_time {6} -segment_format mpegts -segment_list_type m3u8 -segment_start_number {7} -segment_list \"{8}\" -y \"{9}\"",
// inputModifier,
// GetInputArgument(state),
// threads,
// mapArgs,
// GetVideoArguments(state),
// GetAudioArguments(state),
// state.SegmentLength.ToString(UsCulture),
// startNumberParam,
// outputPath,
// outputTsArg,
// slowSeekParam,
// toTimeParam
// ).Trim();
return string.Format("{0} {1}{10}{11} -map_metadata -1 -threads {2} {3} {4} -flags -global_header -copyts -sc_threshold 0 {5} -hls_time {6} -start_number {7} -hls_list_size {8} -y \"{9}\"",
return string.Format("{0}{11} {1} -map_metadata -1 -threads {2} {3} {4}{5} {6} -hls_time {7} -start_number {8} -hls_list_size {9} -y \"{10}\"",
inputModifier,
GetInputArgument(state),
threads,
GetMapArgs(state),
mapArgs,
GetVideoArguments(state),
timestampOffsetParam,
GetAudioArguments(state),
state.SegmentLength.ToString(UsCulture),
startNumberParam,
state.HlsListSize.ToString(UsCulture),
outputPath,
slowSeekParam,
toTimeParam
).Trim();
}
protected override bool EnableThrottling
protected override bool EnableThrottling(StreamState state)
{
get
return !EnableSplitTranscoding(state);
}
private bool EnableSplitTranscoding(StreamState state)
{
if (string.Equals(Request.QueryString["EnableSplitTranscoding"], "false", StringComparison.OrdinalIgnoreCase))
{
return false;
}
}
protected override bool EnableStreamCopy
{
get
if (string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase))
{
return false;
}
return state.RunTimeTicks.HasValue && state.IsOutputVideo;
}
protected override bool EnableSlowSeek
protected override bool EnableStreamCopy
{
get
{
return true;
return false;
}
}
@ -876,7 +980,12 @@ namespace MediaBrowser.Api.Playback.Hls
/// <returns>System.String.</returns>
protected override string GetSegmentFileExtension(StreamState state)
{
return ".ts";
return GetSegmentFileExtension(state.IsOutputVideo);
}
protected string GetSegmentFileExtension(bool isOutputVideo)
{
return isOutputVideo ? ".ts" : ".ts";
}
}
}

@ -14,8 +14,10 @@ namespace MediaBrowser.Api.Playback.Hls
[Route("/Audio/{Id}/hls/{SegmentId}/stream.mp3", "GET")]
[Route("/Audio/{Id}/hls/{SegmentId}/stream.aac", "GET")]
[Api(Description = "Gets an Http live streaming segment file. Internal use only.")]
public class GetHlsAudioSegment
public class GetHlsAudioSegmentLegacy
{
// TODO: Deprecate with new iOS app
/// <summary>
/// Gets or sets the id.
/// </summary>
@ -29,12 +31,31 @@ namespace MediaBrowser.Api.Playback.Hls
public string SegmentId { get; set; }
}
/// <summary>
/// Class GetHlsVideoStream
/// </summary>
[Route("/Videos/{Id}/stream.m3u8", "GET")]
[Api(Description = "Gets a video stream using HTTP live streaming.")]
public class GetHlsVideoStreamLegacy : VideoStreamRequest
{
// TODO: Deprecate with new iOS app
[ApiMember(Name = "BaselineStreamAudioBitRate", Description = "Optional. Specify the audio bitrate for the baseline stream.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? BaselineStreamAudioBitRate { get; set; }
[ApiMember(Name = "AppendBaselineStream", Description = "Optional. Whether or not to include a baseline audio-only stream in the master playlist.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool AppendBaselineStream { get; set; }
[ApiMember(Name = "TimeStampOffsetMs", Description = "Optional. Alter the timestamps in the playlist by a given amount, in ms. Default is 1000.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int TimeStampOffsetMs { get; set; }
}
/// <summary>
/// Class GetHlsVideoSegment
/// </summary>
[Route("/Videos/{Id}/hls/{PlaylistId}/stream.m3u8", "GET")]
[Api(Description = "Gets an Http live streaming segment file. Internal use only.")]
public class GetHlsPlaylist
public class GetHlsPlaylistLegacy
{
// TODO: Deprecate with new iOS app
@ -63,8 +84,10 @@ namespace MediaBrowser.Api.Playback.Hls
/// </summary>
[Route("/Videos/{Id}/hls/{PlaylistId}/{SegmentId}.ts", "GET")]
[Api(Description = "Gets an Http live streaming segment file. Internal use only.")]
public class GetHlsVideoSegment : VideoStreamRequest
public class GetHlsVideoSegmentLegacy : VideoStreamRequest
{
// TODO: Deprecate with new iOS app
public string PlaylistId { get; set; }
/// <summary>
@ -85,7 +108,7 @@ namespace MediaBrowser.Api.Playback.Hls
_config = config;
}
public object Get(GetHlsPlaylist request)
public object Get(GetHlsPlaylistLegacy request)
{
var file = request.PlaylistId + Path.GetExtension(Request.PathInfo);
file = Path.Combine(_appPaths.TranscodingTempPath, file);
@ -103,7 +126,7 @@ namespace MediaBrowser.Api.Playback.Hls
/// </summary>
/// <param name="request">The request.</param>
/// <returns>System.Object.</returns>
public object Get(GetHlsVideoSegment request)
public object Get(GetHlsVideoSegmentLegacy request)
{
var file = request.SegmentId + Path.GetExtension(Request.PathInfo);
file = Path.Combine(_config.ApplicationPaths.TranscodingTempPath, file);
@ -121,7 +144,7 @@ namespace MediaBrowser.Api.Playback.Hls
/// </summary>
/// <param name="request">The request.</param>
/// <returns>System.Object.</returns>
public object Get(GetHlsAudioSegment request)
public object Get(GetHlsAudioSegmentLegacy request)
{
// TODO: Deprecate with new iOS app
var file = request.SegmentId + Path.GetExtension(Request.PathInfo);

@ -11,25 +11,6 @@ using System;
namespace MediaBrowser.Api.Playback.Hls
{
/// <summary>
/// Class GetHlsVideoStream
/// </summary>
[Route("/Videos/{Id}/stream.m3u8", "GET")]
[Api(Description = "Gets a video stream using HTTP live streaming.")]
public class GetHlsVideoStream : VideoStreamRequest
{
// TODO: Deprecate with new iOS app
[ApiMember(Name = "BaselineStreamAudioBitRate", Description = "Optional. Specify the audio bitrate for the baseline stream.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? BaselineStreamAudioBitRate { get; set; }
[ApiMember(Name = "AppendBaselineStream", Description = "Optional. Whether or not to include a baseline audio-only stream in the master playlist.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool AppendBaselineStream { get; set; }
[ApiMember(Name = "TimeStampOffsetMs", Description = "Optional. Alter the timestamps in the playlist by a given amount, in ms. Default is 1000.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int TimeStampOffsetMs { get; set; }
}
[Route("/Videos/{Id}/live.m3u8", "GET")]
[Api(Description = "Gets a video stream using HTTP live streaming.")]
public class GetLiveHlsStream : VideoStreamRequest
@ -50,7 +31,7 @@ namespace MediaBrowser.Api.Playback.Hls
/// </summary>
/// <param name="request">The request.</param>
/// <returns>System.Object.</returns>
public object Get(GetHlsVideoStream request)
public object Get(GetHlsVideoStreamLegacy request)
{
return ProcessRequest(request, false);
}

@ -15,7 +15,7 @@ using System.IO;
namespace MediaBrowser.Api.Playback.Progressive
{
/// <summary>
/// Class GetAudioStream
/// Class GetVideoStream
/// </summary>
[Route("/Videos/{Id}/stream.ts", "GET")]
[Route("/Videos/{Id}/stream.webm", "GET")]

@ -41,7 +41,7 @@ namespace MediaBrowser.Api.Playback
public string InputContainer { get; set; }
public MediaSourceInfo MediaSource { get; set; }
public MediaStream AudioStream { get; set; }
public MediaStream VideoStream { get; set; }
public MediaStream SubtitleStream { get; set; }
@ -57,6 +57,10 @@ namespace MediaBrowser.Api.Playback
public MediaProtocol InputProtocol { get; set; }
public bool IsOutputVideo
{
get { return Request is VideoStreamRequest; }
}
public bool IsInputVideo { get; set; }
public bool IsInputArchive { get; set; }
@ -66,7 +70,6 @@ namespace MediaBrowser.Api.Playback
public List<string> PlayableStreamFileNames { get; set; }
public int SegmentLength = 3;
public bool EnableGenericHlsSegmenter = false;
public int HlsListSize
{
get

@ -1,7 +1,9 @@
using MediaBrowser.Common;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Security;
using MediaBrowser.Common.Updates;
using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Plugins;
@ -134,8 +136,10 @@ namespace MediaBrowser.Api
private readonly ISecurityManager _securityManager;
private readonly IInstallationManager _installationManager;
private readonly INetworkManager _network;
private readonly IDeviceManager _deviceManager;
public PluginService(IJsonSerializer jsonSerializer, IApplicationHost appHost, ISecurityManager securityManager, IInstallationManager installationManager)
public PluginService(IJsonSerializer jsonSerializer, IApplicationHost appHost, ISecurityManager securityManager, IInstallationManager installationManager, INetworkManager network, IDeviceManager deviceManager)
: base()
{
if (jsonSerializer == null)
@ -146,6 +150,8 @@ namespace MediaBrowser.Api
_appHost = appHost;
_securityManager = securityManager;
_installationManager = installationManager;
_network = network;
_deviceManager = deviceManager;
_jsonSerializer = jsonSerializer;
}
@ -165,13 +171,15 @@ namespace MediaBrowser.Api
{
var result = await _securityManager.GetRegistrationStatus(request.Name).ConfigureAwait(false);
return ToOptimizedResult(new RegistrationInfo
var info = new RegistrationInfo
{
ExpirationDate = result.ExpirationDate,
IsRegistered = result.IsRegistered,
IsTrial = result.TrialVersion,
Name = request.Name
});
};
return ToOptimizedResult(info);
}
/// <summary>

@ -635,15 +635,25 @@ namespace MediaBrowser.Dlna.PlayTo
}
XElement uPnpResponse;
// Handle different variations sent back by devices
try
{
uPnpResponse = XElement.Parse(trackString);
}
catch (Exception ex)
catch (Exception)
{
_logger.ErrorException("Unable to parse xml {0}", ex, trackString);
return new Tuple<bool, uBaseObject>(true, null);
// first try to add a root node with a dlna namesapce
try
{
uPnpResponse = XElement.Parse("<data xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">" + trackString + "</data>");
uPnpResponse = uPnpResponse.Descendants().First();
}
catch (Exception ex)
{
_logger.ErrorException("Unable to parse xml {0}", ex, trackString);
return new Tuple<bool, uBaseObject>(true, null);
}
}
var e = uPnpResponse.Element(uPnpNamespaces.items);

@ -31,8 +31,8 @@ namespace MediaBrowser.Dlna.Profiles
MaxIconWidth = 48;
MaxIconHeight = 48;
MaxStreamingBitrate = 8000000;
MaxStaticBitrate = 8000000;
MaxStreamingBitrate = 10000000;
MaxStaticBitrate = 10000000;
MusicStreamingTranscodingBitrate = 128000;
MusicSyncBitrate = 128000;

@ -15,7 +15,7 @@ namespace MediaBrowser.Dlna.Profiles
Identification = new DeviceIdentification
{
ModelName = "WD TV HD Live",
ModelName = "WD TV",
Headers = new []
{

@ -22,8 +22,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -34,7 +34,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="avi,mpeg,mkv,ts,mp4,mov,m4v,asf,webm,ogg,ogv,iso" type="Video" />

@ -16,8 +16,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -28,7 +28,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="mp3,wma" type="Audio" />

@ -21,8 +21,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -33,7 +33,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="mp3,flac,m4a,wma" type="Audio" />

@ -22,8 +22,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -34,7 +34,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="mpeg" audioCodec="mp2" videoCodec="mpeg2video" type="Video" />

@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -35,7 +35,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="mp4,mkv,mpeg,ts" audioCodec="mp3,ac3,aac,he-aac,pcm" videoCodec="h264,mpeg2video" type="Video" />

File diff suppressed because one or more lines are too long

@ -22,8 +22,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -34,7 +34,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="ts" audioCodec="aac,ac3,mp3" videoCodec="h264" type="Video" />

@ -20,8 +20,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -32,7 +32,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="mp3,flac,m4a,wma" type="Audio" />

@ -22,8 +22,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -34,7 +34,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="mp3" audioCodec="mp2,mp3" type="Audio" />

@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -35,7 +35,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes>
<XmlAttribute name="xmlns:pv" value="http://www.pv.com/pvns/" />
</XmlRootAttributes>

@ -16,8 +16,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -28,7 +28,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="mp4,mov" audioCodec="aac" videoCodec="h264,mpeg4" type="Video" />

@ -22,8 +22,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -34,7 +34,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes>
<XmlAttribute name="xmlns:sec" value="http://www.sec.co.kr/" />
</XmlRootAttributes>

@ -22,8 +22,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -34,7 +34,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes>
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>

@ -24,8 +24,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -36,7 +36,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes>
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>

@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -36,7 +36,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes>
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>

@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -36,7 +36,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes>
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>

@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -36,7 +36,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes>
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>

@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -36,7 +36,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes>
<XmlAttribute name="xmlns:av" value="urn:schemas-sony-com:av" />
</XmlRootAttributes>

@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -36,7 +36,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="avi" audioCodec="mp2,mp3" videoCodec="mpeg4" type="Video" />

@ -22,8 +22,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -34,7 +34,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="avi,mpeg,mkv,ts,mp4,mov,m4v,asf,webm,ogg,ogv,iso" type="Video" />

@ -2,7 +2,7 @@
<Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>WDTV Live</Name>
<Identification>
<ModelName>WD TV HD Live</ModelName>
<ModelName>WD TV</ModelName>
<Headers>
<HttpHeaderInfo name="User-Agent" value="alphanetworks" match="Substring" />
<HttpHeaderInfo name="User-Agent" value="ALPHA Networks" match="Substring" />
@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -35,7 +35,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>true</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="avi" audioCodec="ac3,dca,mp2,mp3,pcm" videoCodec="mpeg1video,mpeg2video,mpeg4,h264,vc1" type="Video" />

@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -35,7 +35,6 @@
<EnableMSMediaReceiverRegistrar>true</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>false</EnableDlnaProtocol>
<EnableUrlBase>true</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="avi" audioCodec="ac3,mp3" videoCodec="mpeg4" type="Video" />

@ -23,8 +23,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -35,7 +35,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="ts" audioCodec="ac3" videoCodec="h264" type="Video" />

@ -22,8 +22,8 @@
<MaxAlbumArtHeight>480</MaxAlbumArtHeight>
<MaxIconWidth>48</MaxIconWidth>
<MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate>
<MaxStreamingBitrate>10000000</MaxStreamingBitrate>
<MaxStaticBitrate>10000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc>
@ -34,7 +34,6 @@
<EnableMSMediaReceiverRegistrar>false</EnableMSMediaReceiverRegistrar>
<IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
<EnableDlnaProtocol>true</EnableDlnaProtocol>
<EnableUrlBase>false</EnableUrlBase>
<XmlRootAttributes />
<DirectPlayProfiles>
<DirectPlayProfile container="mp3" audioCodec="mp2,mp3" type="Audio" />

@ -483,6 +483,7 @@ namespace MediaBrowser.MediaEncoding.Probing
FetchStudios(audio, tags, "organization");
FetchStudios(audio, tags, "ensemble");
FetchStudios(audio, tags, "publisher");
FetchStudios(audio, tags, "label");
// These support mulitple values, but for now we only store the first.
audio.SetProviderId(MetadataProviders.MusicBrainzAlbumArtist, GetMultipleMusicBrainzId(FFProbeHelpers.GetDictionaryValue(tags, "MusicBrainz Album Artist Id")));

@ -277,7 +277,7 @@ namespace MediaBrowser.Model.Configuration
{
new ImageOption
{
Limit = 3,
Limit = 2,
MinWidth = 1280,
Type = ImageType.Backdrop
},
@ -304,7 +304,7 @@ namespace MediaBrowser.Model.Configuration
new ImageOption
{
Limit = 1,
Limit = 0,
Type = ImageType.Banner
},
@ -374,7 +374,7 @@ namespace MediaBrowser.Model.Configuration
{
new ImageOption
{
Limit = 1,
Limit = 0,
MinWidth = 1280,
Type = ImageType.Backdrop
},
@ -414,6 +414,14 @@ namespace MediaBrowser.Model.Configuration
{
Limit = 0,
Type = ImageType.Art
},
// Don't download this by default
// Generally not used
new ImageOption
{
Limit = 0,
Type = ImageType.Logo
}
}
},

@ -158,6 +158,11 @@ namespace MediaBrowser.Model.Dlna
if (MediaType == DlnaProfileType.Audio)
{
if (StringHelper.EqualsIgnoreCase(SubProtocol, "hls"))
{
return string.Format("{0}/audio/{1}/master.m3u8?{2}", baseUrl, ItemId, queryString);
}
return string.Format("{0}/audio/{1}/stream{2}?{3}", baseUrl, ItemId, extension, queryString);
}

@ -7,6 +7,7 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Providers;
using MediaBrowser.Providers.TV;
using System;
using System.Collections.Generic;
using System.Globalization;
@ -16,7 +17,6 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
using MediaBrowser.Providers.TV;
namespace MediaBrowser.Providers.Music
{

@ -1,6 +1,7 @@
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Events;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Devices;
@ -26,6 +27,7 @@ namespace MediaBrowser.Server.Implementations.Devices
private readonly ILibraryMonitor _libraryMonitor;
private readonly IConfigurationManager _config;
private readonly ILogger _logger;
private readonly INetworkManager _network;
public event EventHandler<GenericEventArgs<CameraImageUploadInfo>> CameraImageUploaded;
@ -34,7 +36,7 @@ namespace MediaBrowser.Server.Implementations.Devices
/// </summary>
public event EventHandler<GenericEventArgs<DeviceInfo>> DeviceOptionsUpdated;
public DeviceManager(IDeviceRepository repo, IUserManager userManager, IFileSystem fileSystem, ILibraryMonitor libraryMonitor, IConfigurationManager config, ILogger logger)
public DeviceManager(IDeviceRepository repo, IUserManager userManager, IFileSystem fileSystem, ILibraryMonitor libraryMonitor, IConfigurationManager config, ILogger logger, INetworkManager network)
{
_repo = repo;
_userManager = userManager;
@ -42,6 +44,7 @@ namespace MediaBrowser.Server.Implementations.Devices
_libraryMonitor = libraryMonitor;
_config = config;
_logger = logger;
_network = network;
}
public async Task<DeviceInfo> RegisterDevice(string reportedId, string name, string appName, string appVersion, string usedByUserId)

@ -45,19 +45,15 @@ namespace MediaBrowser.Server.Implementations.HttpServer
}
}
if (dto is CompressedResult)
{
// Per Google PageSpeed
// This instructs the proxies to cache two versions of the resource: one compressed, and one uncompressed.
// The correct version of the resource is delivered based on the client request header.
// This is a good choice for applications that are singly homed and depend on public proxies for user locality.
res.AddHeader("Vary", "Accept-Encoding");
}
var vary = "Accept-Encoding";
var hasOptions = dto as IHasOptions;
var sharpResponse = res as WebSocketSharpResponse;
if (hasOptions != null)
{
//hasOptions.Options["Server"] = "Mono-HTTPAPI/1.1";
// Content length has to be explicitly set on on HttpListenerResponse or it won't be happy
string contentLength;
@ -79,14 +75,29 @@ namespace MediaBrowser.Server.Implementations.HttpServer
return;
}
var sharpResponse = res as WebSocketSharpResponse;
if (sharpResponse != null)
{
sharpResponse.SendChunked = false;
}
}
}
string hasOptionsVary;
if (hasOptions.Options.TryGetValue("Vary", out hasOptionsVary))
{
vary = hasOptionsVary;
}
hasOptions.Options["Vary"] = vary;
}
//res.KeepAlive = false;
// Per Google PageSpeed
// This instructs the proxies to cache two versions of the resource: one compressed, and one uncompressed.
// The correct version of the resource is delivered based on the client request header.
// This is a good choice for applications that are singly homed and depend on public proxies for user locality.
res.AddHeader("Vary", vary);
}
/// <summary>

@ -34,8 +34,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security
// }
//}
var session = _sessionManager.GetSession(authorization.DeviceId, authorization.Client, authorization.Version);
return Task.FromResult(session);
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);
}
private AuthenticationInfo GetTokenInfo(IServiceRequest request)

@ -82,9 +82,9 @@ namespace MediaBrowser.Server.Implementations.IO
}
// This is an arbitraty amount of time, but delay it because file system writes often trigger events after RemoveTempIgnore has been called.
// Seeing long delays in some situations, especially over the network.
// Seeing delays up to 40 seconds, but not going to ignore changes for that long.
await Task.Delay(5000).ConfigureAwait(false);
// Seeing long delays in some situations, especially over the network, sometimes up to 45 seconds
// But if we make this delay too high, we risk missing legitimate changes
await Task.Delay(10000).ConfigureAwait(false);
string val;
_tempIgnoredPaths.TryRemove(path, out val);

@ -32,6 +32,7 @@ namespace MediaBrowser.Server.Implementations.Library
".wd_tv",
// Synology
"@eaDir",
"eaDir"
};

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "\u0422V \u043d\u0430 \u0436\u0438\u0432\u043e",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "\u017div\u00e1 TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live-TV",
"TitleSync": "Synchronisation",
"ButtonDonate": "Spenden",
"LabelRecurringDonationCanBeCancelledHelp": "Fortlaufende Spenden k\u00f6nnen jederzeit \u00fcber deinen PayPal Account gek\u00fcndigt werden.",
"HeaderMyMedia": "Meine Medien",
"TitleNotifications": "Benachrichtigungen",
"ErrorLaunchingChromecast": "W\u00e4hrend des startens von Chromecast ist ein Fehler aufgetreten. Bitte stelle sicher, dass dein Ger\u00e4te mit dem WLAN verbunden ist.",
@ -97,7 +98,7 @@
"HeaderSupporterBenefit": "Eine Unterst\u00fctzer-Mitgliedschaft bietet weitere Funktionen wie z.B. Zugriff auf die Synchronisation, Premium-Plugins, Internet Kan\u00e4le und mehr. {0}Erfahren Sie mehr{1}.",
"LabelSyncNoTargetsHelp": "Es sieht so aus als w\u00fcrden Sie aktuell keine Apps verwenden, die Synchronisation unterst\u00fctzen.",
"HeaderWelcomeToProjectServerDashboard": "Willkommen zur Emby Server \u00dcbersicht",
"HeaderWelcomeToProjectWebClient": "Welcome to Emby",
"HeaderWelcomeToProjectWebClient": "Willkommen zu Emby",
"ButtonTakeTheTour": "Mache die Tour",
"HeaderWelcomeBack": "Willkommen zur\u00fcck!",
"TitlePlugins": "Plugins",
@ -398,7 +399,7 @@
"TabMetadata": "Metadata",
"TabDLNA": "DLNA",
"TabLiveTV": "Live-TV",
"TabAutoOrganize": "Automatische Organisation",
"TabAutoOrganize": "Autom.Organisation",
"TabPlugins": "Plugins",
"TabAdvanced": "Erweitert",
"TabHelp": "Hilfe",
@ -586,7 +587,7 @@
"TooltipLike": "Like",
"TooltipDislike": "Dislike",
"TooltipPlayed": "Gespielt",
"ValueSeriesYearToPresent": "{0}-vorhanden",
"ValueSeriesYearToPresent": "{0}-heute",
"ValueAwards": "Auszeichnungen: {0}",
"ValueBudget": "Budget: {0}",
"ValueRevenue": "Einnahmen: {0}",
@ -688,7 +689,7 @@
"DashboardTourHelp": "Die In-App-Hilfe Schaltfl\u00e4che bietet eine schnelle M\u00f6glichkeit um eine Wiki-Seite zum aktuellen Inhalt zu \u00f6ffnen.",
"DashboardTourUsers": "Erstelle einfach Benutzeraccounts f\u00fcr Freunde und Familie. Jeder mit seinen individuellen Einstellungen bei Berechtigungen, Blibliothekenzugriff, Kindersicherung und mehr.",
"DashboardTourCinemaMode": "Der Kino-Modus bringt das Kinoerlebnis direkt in dein Wohnzimmer, mit der F\u00e4higkeit Trailer und benutzerdefinierte Intros vor dem Hauptfilm zu spielen.",
"DashboardTourChapters": "Aktiviere die Bildgenerierung f\u00fcr die Kapitel deiner Videos f\u00fcr eine bessere Darstellung w\u00e4hrend des Ansehens.",
"DashboardTourChapters": "Aktiviere Kapitel-Bilder Generierung f\u00fcr Videos f\u00fcr eine bessere Darstellung.",
"DashboardTourSubtitles": "Lade automatisch Untertitel f\u00fcr jede Sprache f\u00fcr deine Videos herunter.",
"DashboardTourPlugins": "Installiere Plugins wie Internet Videoportale, Live-TV, Metadatenscanner und mehr.",
"DashboardTourNotifications": "Sende automatisch Benachrichtigungen von Serverereignissen auf dein mobiles Endger\u00e4t, per E-Mail und mehr.",
@ -764,6 +765,6 @@
"MyDevice": "Mein Ger\u00e4t",
"ButtonRemote": "Fernbedienung",
"TabInfo": "Info",
"TabCast": "Cast",
"TabScenes": "Scenes"
"TabCast": "Darsteller",
"TabScenes": "Szenen"
}

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "\u0395\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "TV en Vivo",
"TitleSync": "Sinc",
"ButtonDonate": "Donar",
"LabelRecurringDonationCanBeCancelledHelp": "Las donaciones recurrentes pueden ser canceladas en cualquier momento desde su cuenta PayPal.",
"HeaderMyMedia": "Mis Medios",
"TitleNotifications": "Notificaciones",
"ErrorLaunchingChromecast": "Hubo un error iniciando chromecast. Por favor aseg\u00farate de que tu dispositivo este conectado a tu red inalambrica",
@ -728,13 +729,13 @@
"HeaderInviteGuest": "Agregar un Invitado",
"ButtonLinkMyEmbyAccount": "Enlazar mi cuenta ahora",
"MessageConnectAccountRequiredToInviteGuest": "Para poder enviar invitaciones necesita primero enlazar su cuenta Emby con este servidor.",
"ButtonSync": "SInc",
"ButtonSync": "Sinc",
"SyncMedia": "Sincronizar Medios",
"HeaderCancelSyncJob": "Cancelar Sinc.",
"CancelSyncJobConfirmation": "Cancelando el trabajo de sincronizaci\u00f3n eliminara los medios sincronizados del dispositivo durante el pr\u00f3ximo proceso de sincronizaci\u00f3n. \u00bfEsta seguro de que desea continuar?",
"TabSync": "Sinc",
"MessagePleaseSelectDeviceToSyncTo": "Por favor seleccione un dispositivo con el que desea sincronizar.",
"MessageSyncJobCreated": "Trabajo de sinc. creado.",
"MessageSyncJobCreated": "Trabajo de sincronizaci\u00f3n creado.",
"LabelSyncTo": "Sincronizar con:",
"LabelSyncJobName": "Nombre del trabajo de sinc:",
"LabelQuality": "Calidad:",
@ -757,11 +758,11 @@
"SyncJobItemStatusCancelled": "Cancelado",
"LabelProfile": "Perf\u00edl:",
"LabelBitrateMbps": "Tasa de bits (Mbps):",
"EmbyIntroDownloadMessage": "Para bajar e instalar el Servidor Emby visite {0}.",
"EmbyIntroDownloadMessage": "Para descargar e instalar el Servidor Emby visite {0}.",
"ButtonNewServer": "Nuevo Servidor",
"ButtonSignInWithConnect": "Inicie con su cuenta de Emby Connect",
"HeaderNewServer": "Nuevo Servidor",
"MyDevice": "Mi Equipo",
"MyDevice": "Mi Dispositivo",
"ButtonRemote": "Remoto",
"TabInfo": "Info",
"TabCast": "Reparto",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Tv en vivo",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notificaciones",
"ErrorLaunchingChromecast": "Ha habido un error al lanzar chromecast. Asegurese que su dispositivo est\u00e1 conectado a su red inal\u00e1mbrica.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "TV en direct",
"TitleSync": "Sync.",
"ButtonDonate": "Faire un don",
"LabelRecurringDonationCanBeCancelledHelp": "Des donations r\u00e9currentes peuvent \u00eatre annul\u00e9es \u00e0 tout moment depuis votre compte PayPal.",
"HeaderMyMedia": "Mes medias",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "Une erreur a \u00e9t\u00e9 rencontr\u00e9e lors du lancement de Chromecast. Veuillez vous assurer que votre appareil est bien connect\u00e9 \u00e0 votre r\u00e9seau sans-fil.",

@ -40,6 +40,7 @@
"TitleLiveTV": "\u05d8\u05dc\u05d5\u05d5\u05d9\u05d6\u05d9\u05d4 \u05d7\u05d9\u05d9\u05d4",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Tv in diretta",
"TitleSync": "Sincronizza",
"ButtonDonate": "Donazione",
"LabelRecurringDonationCanBeCancelledHelp": "Donazioni ricorrenti possono essere cancellati in qualsiasi momento dal tuo conto PayPal.",
"HeaderMyMedia": "I mei media",
"TitleNotifications": "Notifiche",
"ErrorLaunchingChromecast": "Si \u00e8 verificato un errore all'avvio di chromecast. Assicurati che il tuo dispositivo sia connesso alla rete wireless.",

@ -40,6 +40,7 @@
"TitleLiveTV": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414",
"TitleSync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443",
"ButtonDonate": "\u049a\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0430\u0443",
"LabelRecurringDonationCanBeCancelledHelp": "\u049a\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b\u0442\u0430\u0440 PayPal \u0435\u0441\u0435\u043f \u0448\u043e\u0442\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u04d9\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0434\u0430 \u0431\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.",
"HeaderMyMedia": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043c",
"TitleNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440",
"ErrorLaunchingChromecast": "Chromecast \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. \u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u04a3\u044b\u0437 \u0441\u044b\u043c\u0441\u044b\u0437 \u0436\u0435\u043b\u0456\u0433\u0435 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u044b\u043d\u0430 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -6,8 +6,8 @@
"Administrator": "Administrator",
"Password": "Passord",
"DeleteImage": "Slett bilde",
"MessageThankYouForSupporting": "Thank you for supporting Emby.",
"MessagePleaseSupportProject": "Please support Emby.",
"MessageThankYouForSupporting": "Takk for at du st\u00f8tter Emby.",
"MessagePleaseSupportProject": "Vennligst st\u00f8tt Emby.",
"DeleteImageConfirmation": "Er du sikker p\u00e5 at du vil slette bildet?",
"FileReadCancelled": "Lesing av filen kansellert.",
"FileNotFound": "Fil ikke funnet",
@ -40,24 +40,25 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Synk",
"ButtonDonate": "Don\u00e9r",
"HeaderMyMedia": "My Media",
"LabelRecurringDonationCanBeCancelledHelp": "Gjentakende donasjoner kan avbrytes n\u00e5r som helst fra din PayPal-konto.",
"HeaderMyMedia": "Mine media",
"TitleNotifications": "Beskjeder",
"ErrorLaunchingChromecast": "Det var en feil ved start av Chromecast. Vennligst forsikre deg om at enheten har korrekt forbindelse til ditt tr\u00e5dl\u00f8se nettverk.",
"MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.",
"MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:",
"HeaderConfirmRemoveUser": "Remove User",
"HeaderConfirmRemoveUser": "Fjern bruker",
"MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.",
"MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?",
"ValueTimeLimitSingleHour": "Time limit: 1 hour",
"ValueTimeLimitMultiHour": "Time limit: {0} hours",
"HeaderUsers": "Brukere",
"PluginCategoryGeneral": "General",
"PluginCategoryContentProvider": "Content Providers",
"PluginCategoryScreenSaver": "Screen Savers",
"PluginCategoryTheme": "Themes",
"PluginCategorySync": "Sync",
"PluginCategorySocialIntegration": "Social Networks",
"PluginCategoryNotifications": "Notifications",
"PluginCategoryGeneral": "Generelt",
"PluginCategoryContentProvider": "Innholdstilbydere",
"PluginCategoryScreenSaver": "Skjermspar",
"PluginCategoryTheme": "Temaer",
"PluginCategorySync": "Synk",
"PluginCategorySocialIntegration": "Sosiale nettverk",
"PluginCategoryNotifications": "Varslinger",
"PluginCategoryMetadata": "Metadata",
"PluginCategoryLiveTV": "Live TV",
"PluginCategoryChannel": "Channels",
@ -97,10 +98,10 @@
"HeaderSupporterBenefit": "St\u00f8ttemedlemskap gir ytterligere fordeler som for eksempel tilgang til synkronisering, premium plugins, internett-kanaler og mer. {0}L\u00e6r mer{1}.",
"LabelSyncNoTargetsHelp": "Det ser ikke ut til at du har noen applikasjoner som st\u00f8tter synkronisering.",
"HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard",
"HeaderWelcomeToProjectWebClient": "Welcome to Emby",
"HeaderWelcomeToProjectWebClient": "Velkommen til Emby",
"ButtonTakeTheTour": "Bli med p\u00e5 omvisning",
"HeaderWelcomeBack": "Velkommen tilbake!",
"TitlePlugins": "Plugins",
"TitlePlugins": "Programtillegg",
"ButtonTakeTheTourToSeeWhatsNew": "Ta en titt p\u00e5 hva som er nytt",
"MessageNoSyncJobsFound": "Ingen synkroniseringsjobber funnet. Opprett en synkroniseringsjobb ved hjelp av Synkroniseringsknappene i biblioteket",
"HeaderLibraryAccess": "Bibliotek tilgang",
@ -180,8 +181,8 @@
"OptionFriday": "Fredag",
"OptionSaturday": "L\u00f8rdag",
"OptionEveryday": "Hver dag",
"OptionWeekend": "Weekends",
"OptionWeekday": "Weekdays",
"OptionWeekend": "Helger",
"OptionWeekday": "Ukedager",
"HeaderConfirmDeletion": "Bekreft Kansellering",
"MessageConfirmPathSubstitutionDeletion": "Er du sikker p\u00e5 at du vil slette sti erstatter?",
"LiveTvUpdateAvailable": "(Oppdatering tilgjengelig)",
@ -251,8 +252,8 @@
"OrganizePatternResult": "Resultat: {0}",
"HeaderRestart": "Omstart",
"HeaderShutdown": "Sl\u00e5 Av",
"MessageConfirmRestart": "Are you sure you wish to restart Emby Server?",
"MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?",
"MessageConfirmRestart": "Er du sikker p\u00e5 at du vil starte Emby Server p\u00e5 ny?",
"MessageConfirmShutdown": "Er du sikker p\u00e5 at du vil avslutte Emby Server",
"ButtonUpdateNow": "Oppdater N\u00e5",
"ValueItemCount": "{0} element",
"ValueItemCountPlural": "{0} elementer",
@ -541,7 +542,7 @@
"MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.",
"MessageYouHaveAnActiveRecurringMembership": "Du har et aktivt {0} medlemskap. Du kan oppgradere din plan ved hjelp av alternativene nedenfor.",
"ButtonDelete": "Slett",
"HeaderEmbyAccountAdded": "Emby Account Added",
"HeaderEmbyAccountAdded": "Emby konto lagt til",
"MessageEmbyAccountAdded": "The Emby account has been added to this user.",
"MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.",
"HeaderEmbyAccountRemoved": "Emby Account Removed",
@ -726,7 +727,7 @@
"MessageInvalidForgotPasswordPin": "Ugyldig eller utg\u00e5tt PIN kode angitt. Vennligst pr\u00f8v igjen.",
"MessagePasswordResetForUsers": "Passordet er fjernet for f\u00f8lgende brukere:",
"HeaderInviteGuest": "Inviter gjest",
"ButtonLinkMyEmbyAccount": "Link my account now",
"ButtonLinkMyEmbyAccount": "Link kontoen min n\u00e5",
"MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.",
"ButtonSync": "Synk",
"SyncMedia": "Synkroniser media",
@ -755,15 +756,15 @@
"SyncJobItemStatusFailed": "Feilet",
"SyncJobItemStatusRemovedFromDevice": "Fjernet fra enheten",
"SyncJobItemStatusCancelled": "Kansellert",
"LabelProfile": "Profile:",
"LabelProfile": "Profil:",
"LabelBitrateMbps": "Bitrate (Mbps):",
"EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.",
"ButtonNewServer": "New Server",
"ButtonSignInWithConnect": "Sign in with Emby Connect",
"HeaderNewServer": "New Server",
"MyDevice": "My Device",
"ButtonRemote": "Remote",
"EmbyIntroDownloadMessage": "For \u00e5 laste ned og installere Emby Server bes\u00f8k {0}.",
"ButtonNewServer": "Ny server",
"ButtonSignInWithConnect": "Logg inn med Emby Connect",
"HeaderNewServer": "Ny server",
"MyDevice": "Min(e) enhet(er)",
"ButtonRemote": "Fjernkont.",
"TabInfo": "Info",
"TabCast": "Cast",
"TabScenes": "Scenes"
"TabScenes": "Scener"
}

@ -40,13 +40,14 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Synchroniseer",
"ButtonDonate": "Doneren",
"LabelRecurringDonationCanBeCancelledHelp": "Terugkerende donaties kunnen op elk moment stop gezet worden in uw PayPal account.",
"HeaderMyMedia": "Mijn media",
"TitleNotifications": "Meldingen",
"ErrorLaunchingChromecast": "Er is een fout opgetreden bij het starten van chromecast. Zorg ervoor dat uw apparaat is aangesloten op uw draadloze netwerk.",
"MessageErrorLoadingSupporterInfo": "Er is een fout opgetreden bij het laden van uw supporter informatie. Probeer het later opnieuw.",
"MessageLinkYourSupporterKey": "Koppel uw supporters sleutel met maximaal {0} Emby Connect leden om te genieten van gratis toegang tot de volgende apps:",
"HeaderConfirmRemoveUser": "Gebruiker verwijderen",
"MessageSwipeDownOnRemoteControl": "Welcome to remote control. Select the device to control by clicking the cast icon in the upper right corner. Swipe down anywhere on this screen to go back to where you came from.",
"MessageSwipeDownOnRemoteControl": "Welkom bij afstandbediening. Selecteer het apparat wat je wilt bedienen door op het icoon rechtsboven te klikken. Swipe ergens op dit scherm naar beneden om terug te gaan.",
"MessageConfirmRemoveConnectSupporter": "Bent u zeker dat u de extra supporter voordelen van deze gebruiker wilt verwijderen?",
"ValueTimeLimitSingleHour": "Tijdslimiet: 1 uur",
"ValueTimeLimitMultiHour": "Tijdslimiet: {0} uren",
@ -97,7 +98,7 @@
"HeaderSupporterBenefit": "Een supporter lidmaatschap biedt voordelen zoals toegang tot synchronisatie, premium plug-ins, internet kanalen en meer. {0}Meer weten{1}.",
"LabelSyncNoTargetsHelp": "Het lijkt erop dat je momenteel geen apps hebt die synchroniseren ondersteunen.",
"HeaderWelcomeToProjectServerDashboard": "Welkom bij het Emby Server Dashboard",
"HeaderWelcomeToProjectWebClient": "Welcome to Emby",
"HeaderWelcomeToProjectWebClient": "Welkom bij Emby",
"ButtonTakeTheTour": "Volg de tour",
"HeaderWelcomeBack": "Welkom terug!",
"TitlePlugins": "Plugins",
@ -757,12 +758,12 @@
"SyncJobItemStatusCancelled": "Geannuleerd",
"LabelProfile": "profiel:",
"LabelBitrateMbps": "Bitrate (Mbps):",
"EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.",
"ButtonNewServer": "New Server",
"ButtonSignInWithConnect": "Sign in with Emby Connect",
"EmbyIntroDownloadMessage": "Ga naar {0} om Emby Server te downloaden en te installeren.",
"ButtonNewServer": "Nieuwe server",
"ButtonSignInWithConnect": "Aanmelden met Emby Connect",
"HeaderNewServer": "Nieuwe Server",
"MyDevice": "My Device",
"ButtonRemote": "Remote",
"MyDevice": "Mijn apparaat",
"ButtonRemote": "Afstandsbediening",
"TabInfo": "Info",
"TabCast": "Cast",
"TabScenes": "Scenes"

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "TV ao Vivo",
"TitleSync": "Sinc",
"ButtonDonate": "Doar",
"LabelRecurringDonationCanBeCancelledHelp": "Doa\u00e7\u00f5es recorrentes podem ser canceladas a qualquer momento dentro da conta do PayPal.",
"HeaderMyMedia": "Minha M\u00eddia",
"TitleNotifications": "Notifica\u00e7\u00f5es",
"ErrorLaunchingChromecast": "Ocorreu um erro ao iniciar o chromecast. Por favor verifique se seu dispositivo est\u00e1 conectado \u00e0 sua rede sem fio.",

@ -40,6 +40,7 @@
"TitleLiveTV": "TV ao Vivo",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "\u0422\u0412-\u044d\u0444\u0438\u0440",
"TitleSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f",
"ButtonDonate": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c",
"LabelRecurringDonationCanBeCancelledHelp": "\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0447\u0435\u0440\u0435\u0437 \u0432\u0430\u0448\u0443 \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c PayPal.",
"HeaderMyMedia": "\u041c\u043e\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435",
"TitleNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f",
"ErrorLaunchingChromecast": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Chromecast. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043a \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.",
@ -303,7 +304,7 @@
"HeaderTime": "\u0412\u0440\u0435\u043c\u044f",
"HeaderName": "\u0418\u043c\u044f (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435)",
"HeaderAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c",
"HeaderAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c",
"HeaderAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c. \u0438\u0441\u043f-\u043b\u044c",
"HeaderArtist": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c",
"LabelAddedOnDate": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e {0}",
"ButtonStart": "\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c",
@ -433,16 +434,16 @@
"HeaderRuntime": "\u0414\u043b\u0438\u0442.",
"HeaderCommunityRating": "\u041e\u0431\u0449. \u043e\u0446\u0435\u043d\u043a\u0430",
"HeaderPasswordReset": "\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f",
"HeaderParentalRating": "\u0412\u043e\u0437\u0440. \u043a\u0430\u0442-\u0438\u044f",
"HeaderParentalRating": "\u0412\u043e\u0437\u0440. \u043a\u0430\u0442.",
"HeaderReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f.",
"HeaderDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431-\u0438\u044f",
"HeaderDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431.",
"HeaderSeries": "\u0421\u0435\u0440\u0438\u0430\u043b\u044b",
"HeaderSeason": "\u0421\u0435\u0437\u043e\u043d",
"HeaderSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0435\u0437\u043e\u043d\u0430",
"HeaderNetwork": "\u0422\u0435\u043b\u0435\u0441\u0435\u0442\u044c",
"HeaderYear": "\u0413\u043e\u0434",
"HeaderGameSystem": "\u0418\u0433\u0440\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430",
"HeaderPlayers": "\u041f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0438",
"HeaderGameSystem": "\u0418\u0433\u0440. \u0441\u0438\u0441\u0442.",
"HeaderPlayers": "\u0418\u0433\u0440\u043e\u043a\u0438",
"HeaderEmbeddedImage": "\u0412\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u044b\u0439 \u0440\u0438\u0441\u0443\u043d\u043e\u043a",
"HeaderTrack": "\u0414\u043e\u0440-\u043a\u0430",
"HeaderDisc": "\u0414\u0438\u0441\u043a",
@ -586,7 +587,7 @@
"TooltipLike": "\u041d\u0440\u0430\u0432\u0438\u0442\u0441\u044f",
"TooltipDislike": "\u041d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f",
"TooltipPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e",
"ValueSeriesYearToPresent": "{0} - \u043d\u0430\u0441\u0442. \u0432\u0440\u0435\u043c\u044f",
"ValueSeriesYearToPresent": "{0} - \u041d.\u0412.",
"ValueAwards": "\u041f\u0440\u0438\u0437\u044b: {0}",
"ValueBudget": "\u0411\u044e\u0434\u0436\u0435\u0442: {0}",
"ValueRevenue": "\u0412\u044b\u0440\u0443\u0447\u043a\u0430: {0}",
@ -623,7 +624,7 @@
"HeaderBooks": "\u041a\u043d\u0438\u0433\u0438",
"HeaderEpisodes": "\u042d\u043f\u0438\u0437\u043e\u0434\u044b",
"HeaderSeasons": "\u0421\u0435\u0437\u043e\u043d\u044b",
"HeaderTracks": "\u0414\u043e\u0440\u043e\u0436\u043a\u0438",
"HeaderTracks": "\u0414\u043e\u0440-\u043a\u0438",
"HeaderItems": "\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b",
"HeaderOtherItems": "\u0414\u0440\u0443\u0433\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b",
"ButtonFullReview": "\u041f\u043e\u043b\u043d\u0430\u044f \u0440\u0435\u0446\u0435\u043d\u0437\u0438\u044f...",
@ -729,7 +730,7 @@
"ButtonLinkMyEmbyAccount": "\u0421\u0432\u044f\u0437\u0430\u0442\u044c \u043c\u043e\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c",
"MessageConnectAccountRequiredToInviteGuest": "\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0442\u044c \u0433\u043e\u0441\u0442\u0435\u0439, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Emby \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.",
"ButtonSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"SyncMedia": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f",
"SyncMedia": "\u0421\u0438\u043d\u0445\u0440-\u0438\u044f",
"HeaderCancelSyncJob": "\u041e\u0442\u043c\u0435\u043d\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438",
"CancelSyncJobConfirmation": "\u041e\u0442\u043c\u0435\u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c?",
"TabSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f",
@ -763,7 +764,7 @@
"HeaderNewServer": "\u041d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440",
"MyDevice": "\u041c\u043e\u0451 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e",
"ButtonRemote": "\u041f\u0443\u043b\u044c\u0442...",
"TabInfo": "\u041e \u043f\u0440\u043e\u0444\u0438\u043b\u0435",
"TabCast": "\u0420\u043e\u043b\u0438",
"TabInfo": "\u0418\u043d\u0444\u043e",
"TabCast": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438",
"TabScenes": "\u0421\u0446\u0435\u043d\u044b"
}

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live-TV",
"TitleSync": "Sync",
"ButtonDonate": "Donera",
"LabelRecurringDonationCanBeCancelledHelp": "St\u00e5ende donationer kan avbrytas n\u00e4r som helst via ditt PayPal-konto.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "Det gick inte att starta Chromecast. Kontrollera att enheten \u00e4r ansluten till det tr\u00e5dl\u00f6sa n\u00e4tverket.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Canl\u0131 TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "Live TV",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -40,6 +40,7 @@
"TitleLiveTV": "\u7535\u89c6\u76f4\u64ad",
"TitleSync": "\u540c\u6b65",
"ButtonDonate": "\u6350\u8d60",
"LabelRecurringDonationCanBeCancelledHelp": "\u5728\u60a8\u7684PayPal\u8d26\u6237\u5185\u4efb\u4f55\u65f6\u5019\u90fd\u53ef\u4ee5\u53d6\u6d88\u7ecf\u5e38\u6027\u6350\u8d60\u3002",
"HeaderMyMedia": "My Media",
"TitleNotifications": "\u901a\u77e5",
"ErrorLaunchingChromecast": "\u542f\u52a8chromecast\u9047\u5230\u9519\u8bef\uff0c\u8bf7\u786e\u8ba4\u8bbe\u5907\u5df2\u7ecf\u8fde\u63a5\u5230\u4f60\u7684\u65e0\u7ebf\u7f51\u7edc\u3002",

@ -40,6 +40,7 @@
"TitleLiveTV": "\u96fb\u8996\u529f\u80fd",
"TitleSync": "Sync",
"ButtonDonate": "Donate",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderMyMedia": "My Media",
"TitleNotifications": "Notifications",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",

@ -347,7 +347,7 @@ namespace MediaBrowser.Server.Implementations.Localization
if (parts.Length == 2)
{
culture = parts[0].ToLower() + "_" + parts[1].ToUpper();
culture = parts[0].ToLower() + "-" + parts[1].ToUpper();
}
else
{

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -18,15 +18,15 @@
"WelcomeToProject": "Velkommen til Emby!",
"ThisWizardWillGuideYou": "Denne guide vil hj\u00e6lpe dig igennem ops\u00e6tningen. For at begynde, v\u00e6lg venligst dit fortrukne sprog.",
"TellUsAboutYourself": "Fort\u00e6l os lidt om dig selv",
"ButtonQuickStartGuide": "Quick start guide",
"ButtonQuickStartGuide": "Hurtig-start guide",
"LabelYourFirstName": "Dit fornavn",
"MoreUsersCanBeAddedLater": "Flere brugere kan tilf\u00f8jes senere i betjeningspanelet.",
"UserProfilesIntro": "Emby har indbygget underst\u00f8ttelse af brugerprofiler. Dette giver hver bruger sine egne indstillinger for visning, afspilningsstatus og for\u00e6ldrekontrol.",
"LabelWindowsService": "Windows Service",
"AWindowsServiceHasBeenInstalled": "Der er blevet installeret en Windows Service.",
"WindowsServiceIntro1": "Emby Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.",
"WindowsServiceIntro1": "Emby Server k\u00f8rer normalt som en desktop applikation med et statusbar ikon, men hvis du \u00f8nsker at k\u00f8rer det som en baggrundsservice kan programmet startes fra windows services kontrolpanel istedet.",
"WindowsServiceIntro2": "Hvis Windows servicen bruges skal du v\u00e6re opm\u00e6rksom p\u00e5, at servicen ikke kan k\u00f8re p\u00e5 samme tid som bakkeikonet. Det er derfor n\u00f8dvendigt at afslutte bakkeikonet f\u00f8r servicen startes. Det er n\u00f8dvendigt at konfigurere servicen til at k\u00f8re med administrative privileger, som kan g\u00f8res via Windows Service kontrolpanelet. V\u00e6r opm\u00e6rksom p\u00e5 at servicen p\u00e5 nuv\u00e6rende tidspunkt ikke er i stand til at autoopdatere, s\u00e5 opdatering vil kr\u00e6ve manuel handling.",
"WizardCompleted": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.",
"WizardCompleted": "Det er alt vi beh\u00f8ver for nu. Emby er begyndt at indsamle information omkring dit mediebibliotek. Tjek nogle af vores apps og klik derefter p\u00e5 <b>F\u00e6rdig<\/b> for at se <b>Server betjeningspanelet<\/b>.",
"LabelConfigureSettings": "Konfigurer indstillinger",
"LabelEnableVideoImageExtraction": "Aktiver udtr\u00e6kning af video billede",
"VideoImageExtractionHelp": "For videoer der ikke allerede har billeder, og som vi ikke kan finde internet billeder til. Dette vil g\u00f8re den indledende biblioteksskanning l\u00e6ngere, men vil resulterer i en p\u00e6nere pr\u00e6sentation.",
@ -34,23 +34,23 @@
"LabelChapterImageExtractionForMoviesHelp": "Udtr\u00e6kning af kapitelbilleder lader klienter vise billeder i scenev\u00e6lgeren. Denne proces kan v\u00e6re langsom og processorbelastende, og kan kr\u00e6ve adskillige gigabytes harddiskplads. Processen k\u00f8rer som en natlig planlagt opgave, selv om dette kan \u00e6ndres i planl\u00e6ggeren. Det anbefales ikke at k\u00f8re denne proces i tidsrum hvor der er brugere p\u00e5 systemet.",
"LabelEnableAutomaticPortMapping": "Aktiver automatisk port kortl\u00e6gning",
"LabelEnableAutomaticPortMappingHelp": "UPnP tillader automatisk routerkonfiguration for nem fjernadgang. Dette virker muligvis ikke med alle routere.",
"HeaderTermsOfService": "Emby Terms of Service",
"MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.",
"OptionIAcceptTermsOfService": "I accept the terms of service",
"ButtonPrivacyPolicy": "Privacy policy",
"ButtonTermsOfService": "Terms of Service",
"HeaderDeveloperOptions": "Developer Options",
"OptionEnableWebClientResponseCache": "Enable web client response caching",
"OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.",
"OptionEnableWebClientResourceMinification": "Enable web client resource minification",
"LabelDashboardSourcePath": "Web client source path:",
"LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.",
"HeaderTermsOfService": "Emby tjenestevilk\u00e5r",
"MessagePleaseAcceptTermsOfService": "Accepter venligst tjenestevilk\u00e5rene og privatlivspolitikken f\u00f8r du forts\u00e6tter.",
"OptionIAcceptTermsOfService": "Jeg accepterer tjenestevilk\u00e5rene",
"ButtonPrivacyPolicy": "Privatlivspolitik",
"ButtonTermsOfService": "Tjenestevilk\u00e5r",
"HeaderDeveloperOptions": "Indstillinger for udviklere",
"OptionEnableWebClientResponseCache": "Aktiver webklient svar-caching",
"OptionDisableForDevelopmentHelp": "Konfigurer disse som n\u00f8dvendigt for udviklingsform\u00e5l af webklienten",
"OptionEnableWebClientResourceMinification": "Aktiver formindskelse af webklientens forbrug af ressourcer",
"LabelDashboardSourcePath": "Webklient kildesti:",
"LabelDashboardSourcePathHelp": "Hvis serveren k\u00f8rer fra kilden, specificer da stien til dashboard-ui mappen. Alle webklient-filer vil blive leveret fra denne lokation.",
"ButtonConvertMedia": "Konverter medie",
"ButtonOrganize": "Organiser",
"LinkedToEmbyConnect": "Koblet til Emby Connect",
"HeaderSupporterBenefits": "Supporter Benefits",
"HeaderSupporterBenefits": "Supporter fordele",
"HeaderAddUser": "Tilf\u00f8j bruger",
"LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.",
"LabelAddConnectSupporterHelp": "For at tilf\u00f8je en bruger som ikke er angivet skal du f\u00f8rst sammenk\u00e6de deres konto til Emby Connect fra deres brugers profilside.",
"LabelPinCode": "Pinkode:",
"OptionHideWatchedContentFromLatestMedia": "Skjul sete fra seneste",
"HeaderSync": "Sync",
@ -59,7 +59,7 @@
"ButtonExit": "Afslut",
"ButtonNew": "Ny",
"HeaderTV": "TV",
"HeaderAudio": "Audio",
"HeaderAudio": "Lyd",
"HeaderVideo": "Video",
"HeaderPaths": "Stier",
"CategorySync": "Sync",
@ -75,10 +75,10 @@
"ButtonConfigurePinCode": "Konfigurer pinkode",
"HeaderAdultsReadHere": "Voksne l\u00e6s her!",
"RegisterWithPayPal": "Registrer med PayPal",
"HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership",
"HeaderSyncRequiresSupporterMembership": "Sync kr\u00e6ver medlemsskab",
"HeaderEnjoyDayTrial": "Nyd en 14-dages gratis pr\u00f8veperiode",
"LabelSyncTempPath": "Sti for midlertidige filer:",
"LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.",
"LabelSyncTempPathHelp": "Specificer en brugerdefineret synkroniserings arbejds-mappe. Konverterede filer vil under synkroniseringsprocessen blive gemt her.",
"LabelCustomCertificatePath": "Sti til eget certifikat:",
"LabelCustomCertificatePathHelp": "Angiv dit eget ssl certifikat som .pfx fil. Hvis du undlader dette, danner serveren et selvsigneret certifikat.",
"TitleNotifications": "Underretninger",
@ -90,7 +90,7 @@
"LabelEnableEnhancedMovies": "Aktiver udvidede filmvisninger",
"LabelEnableEnhancedMoviesHelp": "Aktiver dette for at f\u00e5 vist film som mapper med trailere, medvirkende og andet relateret inhold.",
"HeaderSyncJobInfo": "Sync Job",
"FolderTypeMixed": "Mixed content",
"FolderTypeMixed": "Blandet indhold",
"FolderTypeMovies": "FIlm",
"FolderTypeMusic": "Musik",
"FolderTypeAdultVideos": "Voksenfilm",
@ -110,7 +110,7 @@
"LabelCountry": "Land:",
"LabelLanguage": "Sprog:",
"LabelTimeLimitHours": "Tidsgr\u00e6nse (timer):",
"ButtonJoinTheDevelopmentTeam": "Join the Development Team",
"ButtonJoinTheDevelopmentTeam": "Bliv medlem af Teamet bag Emby",
"HeaderPreferredMetadataLanguage": "Foretrukket sprog for metadata:",
"LabelSaveLocalMetadata": "Gem illustrationer og metadata i mediemapper",
"LabelSaveLocalMetadataHelp": "Lagring af illustrationer og metadata i mediemapper vil placerer dem et sted hvor de nemt kan redigeres.",
@ -214,17 +214,17 @@
"OptionArtist": "Artist",
"OptionAlbum": "Album",
"OptionTrackName": "Nummerets navn",
"OptionCommunityRating": "Community Rating",
"OptionCommunityRating": "F\u00e6llesskabsvurdering",
"OptionNameSort": "Navn",
"OptionFolderSort": "Mapper",
"OptionBudget": "Budget",
"OptionRevenue": "Indt\u00e6gt",
"OptionPoster": "Plakat",
"OptionPosterCard": "Poster card",
"OptionBackdrop": "Backdrop",
"OptionPosterCard": "Plakat",
"OptionBackdrop": "Baggrund",
"OptionTimeline": "Tidslinje",
"OptionThumb": "Thumb",
"OptionThumbCard": "Thumb card",
"OptionThumb": "Miniature",
"OptionThumbCard": "Miniature kort",
"OptionBanner": "Banner",
"OptionCriticRating": "Kritikervurdering",
"OptionVideoBitrate": "Video Bitrate",
@ -240,7 +240,7 @@
"HeaderLatestSongs": "Seneste sange",
"HeaderRecentlyPlayed": "Afspillet for nyligt",
"HeaderFrequentlyPlayed": "Ofte afspillet",
"DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.",
"DevBuildWarning": "Udviklerversionen er bleeding edge. Nye versioner bliver ofte udgivet og bliver ikke testet inden. Applikationen kan risikere at lukke ned og funktioner kan nogle gange slet ikke virke.",
"LabelVideoType": "Video type:",
"OptionBluray": "Bluray",
"OptionDvd": "Dvd",
@ -296,7 +296,7 @@
"SearchKnowledgeBase": "S\u00f8g i vidensdatabasen",
"VisitTheCommunity": "Bes\u00f8g f\u00e6llesskabet",
"VisitProjectWebsite": "Bes\u00f8g Embys hjemmeside",
"VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.",
"VisitProjectWebsiteLong": "Bes\u00f8g Emby hjemmesiden for at blive opdateret p\u00e5 de seneste nyheder og holde dig opdateret med udviklernes blog.",
"OptionHideUser": "Vis ikke denne bruger p\u00e5 loginsiden",
"OptionHideUserFromLoginHelp": "Nyttigt for private kontoer eller skjulte administratorkontoer. Brugeren skal logge ind ved at skive sit brugernavn og adgangskode.",
"OptionDisableUser": "Deaktiver denne bruger",
@ -323,7 +323,7 @@
"ButtonAddToCollection": "Tilf\u00f8j til samling",
"PismoMessage": "Utilizing Pismo File Mount through a donated license.",
"TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.",
"HeaderCredits": "Credits",
"HeaderCredits": "Anerkendelser",
"PleaseSupportOtherProduces": "St\u00f8t venligst andre gratis produkter vi bruger:",
"VersionNumber": "Version {0}",
"TabPaths": "Stier",
@ -370,8 +370,8 @@
"ExtractChapterImagesHelp": "Udtr\u00e6kning af kapitelbilleder lader klienter vise billeder i scenev\u00e6lgeren. Denne proces kan v\u00e6re langsom og processorbelastende, og kan kr\u00e6ve adskillige gigabytes harddiskplads. Processen k\u00f8rer som en natlig planlagt opgave, selv om dette kan \u00e6ndres i planl\u00e6ggeren. Det anbefales ikke at k\u00f8re denne proces i tidsrum hvor der er brugere p\u00e5 systemet.",
"LabelMetadataDownloadLanguage": "Foretrukket sprog for nedhentning:",
"ButtonAutoScroll": "Rul automatisk",
"LabelImageSavingConvention": "Image saving convention:",
"LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.",
"LabelImageSavingConvention": "Konvention for lagring af billeder:",
"LabelImageSavingConventionHelp": "Emby genkender billeder fra de fleste store medieapplikationer. Valg af konvention for hentning af billeder er nyttefuld hvis du ogs\u00e5 benytter dig af andre produkter.",
"OptionImageSavingCompatible": "Kompatibel - Emby\/Kodi\/Plex",
"OptionImageSavingStandard": "Standard - MB2",
"ButtonSignIn": "Log Ind",
@ -434,7 +434,7 @@
"OptionDownloadDiscImage": "Disk",
"OptionDownloadBannerImage": "Banner",
"OptionDownloadBackImage": "Bagside",
"OptionDownloadArtImage": "Art",
"OptionDownloadArtImage": "Kunst",
"OptionDownloadPrimaryImage": "Prim\u00e6r",
"HeaderFetchImages": "Hent billeder:",
"HeaderImageSettings": "Billedindstillinger",
@ -482,10 +482,10 @@
"HeaderAwardsAndReviews": "Priser og anmelselser",
"HeaderSoundtracks": "Soundtracks",
"HeaderMusicVideos": "Musikvideoer",
"HeaderSpecialFeatures": "Special Features",
"HeaderCastCrew": "Cast & Crew",
"HeaderAdditionalParts": "Additional Parts",
"ButtonSplitVersionsApart": "Split Versions Apart",
"HeaderSpecialFeatures": "Specielle egenskaber",
"HeaderCastCrew": "Medvirkende",
"HeaderAdditionalParts": "Andre stier:",
"ButtonSplitVersionsApart": "Opdel versioner",
"ButtonPlayTrailer": "Trailer",
"LabelMissing": "Mangler",
"LabelOffline": "Offline",
@ -497,7 +497,7 @@
"LabelTo": "Til:",
"LabelToHelp": "F. eks. \\\\MyServer\\Movies (en sti klienterne kan tilg\u00e5)",
"ButtonAddPathSubstitution": "Tilf\u00f8j substitution",
"OptionSpecialEpisode": "Specials",
"OptionSpecialEpisode": "S\u00e6rudsendelser",
"OptionMissingEpisode": "Manglende episoder",
"OptionUnairedEpisode": "Ikke sendte episoder",
"OptionEpisodeSortName": "Navn for sortering af episoder",
@ -648,7 +648,7 @@
"LabelSupporterKey": "Supporter n\u00f8gle (Kopier fra e-mail og inds\u00e6t)",
"LabelSupporterKeyHelp": "Inds\u00e6t din supporter n\u00f8gle for at f\u00e5 yderligere fordele, f\u00e6llesskabet har udviklet til Emby.",
"MessageInvalidKey": "Supporter n\u00f8glen manler eller er ugyldig.",
"ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.",
"ErrorMessageInvalidKey": "For at registrere premium indhold skal du v\u00e6re en Emby Supporter. Doner venligst for at st\u00f8tte den l\u00f8bende udvikling af vores kerneprodukt. Mange tak.",
"HeaderDisplaySettings": "Indstillinger for visning",
"TabPlayTo": "Afspil til",
"LabelEnableDlnaServer": "Aktiver DNLA server",
@ -700,7 +700,7 @@
"CategoryApplication": "Program",
"CategoryPlugin": "Plugin",
"LabelMessageTitle": "Titel p\u00e5 besked",
"LabelAvailableTokens": "Available tokens:",
"LabelAvailableTokens": "Tilg\u00e6ngelige tokens:",
"AdditionalNotificationServices": "Kig i plugin-kataloget for at f\u00e5 yderligere uderretnings-tjenester",
"OptionAllUsers": "Alle brugere",
"OptionAdminUsers": "Administratore",
@ -743,7 +743,7 @@
"ButtonVolumeDown": "Volume -",
"ButtonMute": "Lyd fra",
"HeaderLatestMedia": "Seneste medier",
"OptionSpecialFeatures": "Special Features",
"OptionSpecialFeatures": "Specielle egenskaber",
"HeaderCollections": "Samlinger",
"LabelProfileCodecsHelp": "Adskil med komma. Kan efterlades tom for at g\u00e6lde for alle codecs.",
"LabelProfileContainersHelp": "Adskil med komma. Kan efterlades tom for at g\u00e6lde for alle containere.",
@ -791,8 +791,8 @@
"LabelIconMaxWidthHelp": "Maksimumopl\u00f8sningen p\u00e5 ikoner der bliver vist med upnp:icon",
"LabelIconMaxHeight": "Max h\u00f8jde p\u00e5 ikoner:",
"LabelIconMaxHeightHelp": "Maksimumopl\u00f8sningen p\u00e5 ikoner der bliver vist med upnp:icon",
"LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.",
"HeaderProfileServerSettingsHelp": "These values control how Emby Server will present itself to the device.",
"LabelIdentificationFieldHelp": "En case-insensitive substring eller regex ekspression.",
"HeaderProfileServerSettingsHelp": "Disse v\u00e6rdier kontrollerer hvordan Emby pr\u00e6senterer sig til enheden.",
"LabelMaxBitrate": "Max bitrate:",
"LabelMaxBitrateHelp": "Angiv en maksimal bitrate i omr\u00e5der med begr\u00e6nset b\u00e5ndbredde, eller hvis enheden selv har begr\u00e6nsninger.",
"LabelMaxStreamingBitrate": "Max streaming bitrate:",
@ -804,8 +804,8 @@
"LabelMusicStaticBitrateHelp": "Angiv en maksimal bitrate n\u00e5r der synkroniseres musik.",
"LabelMusicStreamingTranscodingBitrate": "Bitrate for musiktranskodning",
"LabelMusicStreamingTranscodingBitrateHelp": "Angiv en maksimal bitrate n\u00e5r der streames musik.",
"OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.",
"OptionIgnoreTranscodeByteRangeRequests": "Ignorer foresp\u00f8rgsler vedr\u00f8rende transcode byte interval",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "Hvis aktiveret vil disse foresp\u00f8rgsler blive efterkommet, men byte range headeren ignoreret.",
"LabelFriendlyName": "System venligt navn",
"LabelManufacturer": "Producent",
"LabelManufacturerUrl": "Producent url",
@ -1163,7 +1163,7 @@
"OptionLocalRefreshOnly": "Opdater kun lokalt",
"HeaderRefreshMetadata": "Opdater metadata",
"HeaderPersonInfo": "Personinformation",
"HeaderIdentifyItem": "Identify Item",
"HeaderIdentifyItem": "Identificer genstand",
"HeaderIdentifyItemHelp": "Indtast et eller flere s\u00f8gekriterier.Fjern kriterier for at f\u00e5 flere s\u00f8geresultater.",
"HeaderConfirmDeletion": "Bekr\u00e6ft sletning",
"LabelFollowingFileWillBeDeleted": "F\u00f8lgende filer bliver slettet:",
@ -1190,7 +1190,7 @@
"LabelAirTime:": "Sendetid:",
"LabelRuntimeMinutes": "Spilletid (minutter):",
"LabelParentalRating": "Aldersgr\u00e6nse:",
"LabelCustomRating": "Custom rating:",
"LabelCustomRating": "Brugerdefineret bed\u00f8mmelse:",
"LabelBudget": "Budget",
"LabelRevenue": "Indt\u00e6gter ($):",
"LabelOriginalAspectRatio": "Originalt formatforhold:",
@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "Ingen temavideo",
"LabelOneTimeDonationAmount": "Donationsbel\u00f8b:",
"ButtonDonate": "Don\u00e9r",
"ButtonPurchase": "K\u00f8b",
"OptionActor": "Skuespiller",
"OptionComposer": "Komponist",
"OptionDirector": "Instrukt\u00f8r",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Information om udvikleren",
"HeaderRevisionHistory": "Revisionshistorik",
"ButtonViewWebsite": "Bes\u00f8g hjemmeside",
"LabelRecurringDonationCanBeCancelledHelp": "Tilbagevendende donationer kan afmeldes n\u00e5r som helst fra din PayPal konto.",
"HeaderXmlSettings": "XML indstillinger",
"HeaderXmlDocumentAttributes": "XML dokumentattributter",
"HeaderXmlDocumentAttribute": "XML dokumentattribut",
@ -1335,10 +1335,10 @@
"OptionWeekends": "Weekender",
"MessageProfileInfoSynced": "Brugerprofil synkroniseret med Emby Connect",
"HeaderOptionalLinkEmbyAccount": "Valgfrit: Forbind din Emby konto",
"ButtonTrailerReel": "Trailer reel",
"HeaderTrailerReel": "Trailer Reel",
"ButtonTrailerReel": "Trailer rulle",
"HeaderTrailerReel": "Trailer rulle",
"OptionPlayUnwatchedTrailersOnly": "Afspil kun ikke sete trailere",
"HeaderTrailerReelHelp": "Start a trailer reel to play a long running playlist of trailers.",
"HeaderTrailerReelHelp": "Start en trailer rulle for at afspille en lang afspilningsliste med forfilm.",
"MessageNoTrailersFound": "Ingen trailere fundet. Installer Trailer kanalen for at tilf\u00f8je et bibliotek med trailere fra internettet.",
"HeaderNewUsers": "Nye brugere",
"ButtonSignUp": "Tilmeld dig",
@ -1381,7 +1381,7 @@
"TabJobs": "Opgaver",
"TabSyncJobs": "Sync opgaver",
"LabelTagFilterMode": "Tilstand:",
"LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.",
"LabelTagFilterAllowModeHelp": "Hvis godkendte tags bliver brugt som en del af en meget forgrenet mappestruktur, kr\u00e6ver tagget indhold at parent mappen ogs\u00e5 tagges.",
"HeaderThisUserIsCurrentlyDisabled": "Denne bruger er for \u00f8jeblikket deaktiveret.",
"MessageReenableUser": "Se nedenfor om genaktivering",
"LabelEnableInternetMetadataForTvPrograms": "Hent internet metadata for:",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "Som standard udf\u00f8res synkronseringskonverteringer ved lav hastighed for at minimere ressourceforbrug.",
"HeaderPlaylists": "Afspilningslister",
"HeaderSelectDate": "V\u00e6lg dato",
"HeaderWelcomeExclamation": "Velkommen!",
"HeaderMyPreferences": "Mine indstillinger",
"ButtonMyPreferencesWelcomeYes": "Ja, jeg vil gerne s\u00e6tte mine indstillinger nu.",
"ButtonMyPreferencesWelcomeNo": "Nej tak, jeg g\u00f8r det senere.",
"MyPreferencesWelcomeMessage1": "Vi har sat dit bibliotek op p\u00e5 en m\u00e5de vi tror du vil nyde. Udseendet og grupperingen af indholdet kan \u00e6ndres n\u00e5r som helst i dine indstillinger. Dine indstillinger vil g\u00e6lde for alle Emby apps.",
"MyPreferencesWelcomeMessage2": "Vil du s\u00e6tte dine indstillinger nu?",
"ToAccessPreferencesHelp": "Du kan tilg\u00e5 dine indstillinger senere ved at klikke p\u00e5 brugerikonet \u00f8verst til h\u00f8jre i vinduet og v\u00e6lge 'Mine indstillinger'.",
"HeaderViewStyles": "Visningsstiler",
"LabelSelectViewStyles": "Aktiver udvidet pr\u00e6sentation for:",
"LabelSelectViewStylesHelp": "Aktiver dette for at f\u00e5 visninger med kategorier som forslag, seneste, genrer, m.m. Hvis det ikke er aktiveret, bliver der vist almindelige mapper.",
@ -1432,11 +1425,12 @@
"LabelServerPort": "Port:",
"HeaderNewServer": "Ny server",
"ButtonChangeServer": "Skift server",
"HeaderConnectToServer": "Connect to Server",
"OptionReportList": "List View",
"OptionReportStatistics": "Statistics",
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"HeaderConnectToServer": "Forbind til server",
"OptionReportList": "Liste visning",
"OptionReportStatistics": "Statistik",
"OptionReportGrouping": "Gruppering",
"HeaderExport": "Eksporter",
"HeaderColumns": "S\u00f8jler",
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -78,7 +78,7 @@
"HeaderSyncRequiresSupporterMembership": "Synchronisation ben\u00f6tigt eine Supporter-Mitgliedschaft",
"HeaderEnjoyDayTrial": "Genie\u00dfen Sie eine 14 Tage Testversion",
"LabelSyncTempPath": "Verzeichnis f\u00fcr tempor\u00e4re Dateien",
"LabelSyncTempPathHelp": "Legen Sie einen eigenen Synchronisations-Arbeits Verzeichnis fest. Konvertierte Medien werden w\u00e4hrend der Synchronisation hier gespeichert.",
"LabelSyncTempPathHelp": "Legen Sie ein eigenes Synchronisations-Arbeits Verzeichnis fest. Konvertierte Medien werden w\u00e4hrend der Synchronisation hier gespeichert.",
"LabelCustomCertificatePath": "Eigener Zertifikats Ordner:",
"LabelCustomCertificatePathHelp": "F\u00fcgen Sie ihr eigenes SSL Zertifikat als .pfx Datei hinzu. Wenn ausgelassen, wird der Server ein selbst signiertes Zertifikat f\u00fcr Sie erstellen.",
"TitleNotifications": "Benachrichtigungen",
@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "Kein Theme Video",
"LabelOneTimeDonationAmount": "Spendenbetrag:",
"ButtonDonate": "Spenden",
"ButtonPurchase": "Kaufen",
"OptionActor": "Schauspieler",
"OptionComposer": "Komponist",
"OptionDirector": "Regisseur",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Entwicklerinformationen",
"HeaderRevisionHistory": "Versionsverlauf",
"ButtonViewWebsite": "Besuche die Website",
"LabelRecurringDonationCanBeCancelledHelp": "Fortlaufende Spenden k\u00f6nnen jederzeit \u00fcber deinen PayPal Account gek\u00fcndigt werden.",
"HeaderXmlSettings": "XML Einstellungen",
"HeaderXmlDocumentAttributes": "XML-Dokument Eigenschaften",
"HeaderXmlDocumentAttribute": "XML-Dokument Eigenschaft",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "Standardm\u00e4\u00dfig werden Synchronisations-Konvertierungen bei geringer Geschwindigkeit durchgef\u00fchrt um Ressourcen zu sparen.",
"HeaderPlaylists": "Wiedergabeliste",
"HeaderSelectDate": "Datum w\u00e4hlen",
"HeaderWelcomeExclamation": "Willkommen!",
"HeaderMyPreferences": "Meine Einstellungen",
"ButtonMyPreferencesWelcomeYes": "Ja, ich m\u00f6chte meine Einstellungen nun festlegen.",
"ButtonMyPreferencesWelcomeNo": "Nein danke, das mache ich sp\u00e4ter.",
"MyPreferencesWelcomeMessage1": "Wir pr\u00e4sentieren Ihnen Ihre Bibliothek in einer Art, wie wir denken, dass es Ihnen gefallen d\u00fcrfte. Die Darstellung und Gruppierung des Inhaltes kann jederzeit in Ihren Einstellungen angepasst werden. Ihre Einstellungen werden auf alle Empy Apps \u00fcbertragen.",
"MyPreferencesWelcomeMessage2": "M\u00f6chten Sie Ihre Einstellungen nun festlegen?",
"ToAccessPreferencesHelp": "Um Ihre Einstellungen sp\u00e4ter zu \u00e4ndern, klicken Sie ihr Benutzer-Icon im oberen rechten Bereich oder w\u00e4hlen Sie \"Meine Einstellungen\".",
"HeaderViewStyles": "Zeige Stiele",
"LabelSelectViewStyles": "Aktiviere erweiterte Ansichten f\u00fcr:",
"LabelSelectViewStylesHelp": "Wenn aktiviert werden Darstellungen von Kategorien mit Medieninformationen wie Empfehlungen, k\u00fcrzlich hinzugef\u00fcgt, Genres und weitere, angereichert. Wenn deaktiviert werden diese nur als simple Verzeichnisse dargestellt.",
@ -1433,10 +1426,11 @@
"HeaderNewServer": "Neuer Server",
"ButtonChangeServer": "Wechsel Server",
"HeaderConnectToServer": "Verbinde zu Server",
"OptionReportList": "List View",
"OptionReportStatistics": "Statistics",
"OptionReportGrouping": "Grouping",
"OptionReportList": "Listenanzeige",
"OptionReportStatistics": "Statistik",
"OptionReportGrouping": "Gruppierung",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"HeaderColumns": "Spalten",
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Aktiviere externe Videoplayer"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1041,7 +1041,7 @@
"LabelDateAdded": "Fecha de adici\u00f3n:",
"HeaderFeatures": "Caracter\u00edsticas",
"HeaderAdvanced": "Avanzado",
"ButtonSync": "SInc",
"ButtonSync": "Sinc",
"TabScheduledTasks": "Tareas Programadas",
"HeaderChapters": "Cap\u00edtulos",
"HeaderResumeSettings": "Configuraci\u00f3n para Continuar",
@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "Sin Video del Tema",
"LabelOneTimeDonationAmount": "Cantidad a donar:",
"ButtonDonate": "Donar",
"ButtonPurchase": "Comprar",
"OptionActor": "Actor",
"OptionComposer": "Compositor",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Info del desarrollador",
"HeaderRevisionHistory": "Historial de Versiones",
"ButtonViewWebsite": "Ver sitio web",
"LabelRecurringDonationCanBeCancelledHelp": "Las donaciones recurrentes pueden ser canceladas en cualquier momento desde su cuenta PayPal.",
"HeaderXmlSettings": "Configuraci\u00f3n XML",
"HeaderXmlDocumentAttributes": "Atributos del Documento XML",
"HeaderXmlDocumentAttribute": "Atributo del Documento XML",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "Por defecto, la conversi\u00f3n es realizada a baja velocidad para minimizar el consumo de recursos.",
"HeaderPlaylists": "Listas",
"HeaderSelectDate": "Seleccionar fecha",
"HeaderWelcomeExclamation": "\u00a1Bienvenido!",
"HeaderMyPreferences": "Mi Configuraci\u00f3n",
"ButtonMyPreferencesWelcomeYes": "Si, me gustar\u00eda ajustar mi configuraci\u00f3n ahora.",
"ButtonMyPreferencesWelcomeNo": "No gracias, lo har\u00e9 luego.",
"MyPreferencesWelcomeMessage1": "Configuramos la apariencia de tu biblioteca de una forma que pensamos que te gustar\u00eda. Puedes cambiar la apariencia y agrupaci\u00f3n del contenido cuando quieras en tu configuraci\u00f3n. Tu configuraci\u00f3n se aplicar\u00e1 a todas las aplicaciones de Emby.",
"MyPreferencesWelcomeMessage2": "\u00bfTe gustar\u00eda ajustar tu configuraci\u00f3n ahora?",
"ToAccessPreferencesHelp": "Para acceder a tu configuraci\u00f3n luego, haz clic en tu icono de usuario en la esquina superior derecha y selecciona Mi Configuraci\u00f3n.",
"HeaderViewStyles": "Ver Estilos",
"LabelSelectViewStyles": "Abilitar presentaciones mejoradas para:",
"LabelSelectViewStylesHelp": "Si se activa, las diferentes vistas usar\u00e1n metada para mostrar categor\u00edas como Sugerencias, \u00daltimos, G\u00e9neros, y m\u00e1s. Si est\u00e1 desactivado, se mostrar\u00e1n como carpetas comunes.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Agrupado",
"HeaderExport": "Exportar",
"HeaderColumns": "Columnas",
"ButtonReset": "Resetear"
"ButtonReset": "Resetear",
"OptionEnableExternalVideoPlayers": "Habilitar reproductores externos de video"
}

@ -368,7 +368,7 @@
"LabelFanartApiKey": "Personal api key:",
"LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.",
"ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
"LabelMetadataDownloadLanguage": "Preferred download language:",
"LabelMetadataDownloadLanguage": "Idioma preferido visualizado",
"ButtonAutoScroll": "Auto-desplazamiento",
"LabelImageSavingConvention": "Sistema de guardado de im\u00e1genes:",
"LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.",
@ -524,7 +524,7 @@
"HeaderCustomDlnaProfiles": "Perfiles personalizados",
"HeaderSystemDlnaProfiles": "Perfiles del sistema",
"CustomDlnaProfilesHelp": "Crear un perfil personalizado para un nuevo dispositivo o reemplazar un perfil del sistema.",
"SystemDlnaProfilesHelp": "System profiles are read-only. Changes to a system profile will be saved to a new custom profile.",
"SystemDlnaProfilesHelp": "El perfil del Sistema es solo lectura. Cambios al perfil del sistema seran guardados en un perfil nuevo modificado.",
"TitleDashboard": "Panel de control",
"TabHome": "Inicio",
"TabInfo": "Info",
@ -551,12 +551,12 @@
"LabelPublicHttpsPort": "N\u00famero de puerto p\u00fablico de https:",
"LabelPublicHttpsPortHelp": "El n\u00famero de puerto p\u00fablico que debe ser enlazado al puerto local https:",
"LabelEnableHttps": "Reportar el https como una direccion externa",
"LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.",
"LabelEnableHttpsHelp": "Si es habilitado, el servidor reportara un enlaze https a los clientes como una direccion externa.",
"LabelHttpsPort": "N\u00famero de puerto local de https:",
"LabelHttpsPortHelp": "N\u00famero de puerto al que el servidor de tcp de Emby debe de ser enlazado.",
"LabelWebSocketPortNumber": "N\u00famero de puerto WebSocket:",
"LabelEnableAutomaticPortMap": "Habilitar asignaci\u00f3n de puertos autom\u00e1tico",
"LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.",
"LabelEnableAutomaticPortMapHelp": "UPnP permite la configuraci\u00f3n del router para acceso externo de forma f\u00e1cil y autom\u00e1tica. Esto puede no funcionar en algunos modelos de routers.",
"LabelExternalDDNS": "Direccion externa del WAN:",
"LabelExternalDDNSHelp": "Ponga aqui su DNS dinamico si tiene uno. las aplicaciones de Emby lo usar\u00e1n para conectarse remotamente. Deje en blanco para detecci\u00f3n autom\u00e1tica.",
"TabResume": "Continuar",
@ -634,11 +634,11 @@
"MessagePleaseRestartServerToFinishUpdating": "Reinicie el servidor para acabar de aplicar las actualizaciones.",
"LabelDownMixAudioScale": "Audio boost when downmixing:",
"LabelDownMixAudioScaleHelp": "Potenciador de audio. Establecer a 1 para preservar el volumen original.",
"ButtonLinkKeys": "Transfer Key",
"ButtonLinkKeys": "Transferir Clave",
"LabelOldSupporterKey": "Antigua clave de seguidor",
"LabelNewSupporterKey": "Nueva clave de seguidor",
"HeaderMultipleKeyLinking": "Transfer to New Key",
"MultipleKeyLinkingHelp": "If you received a new supporter key, use this form to transfer the old key's registrations to your new one.",
"HeaderMultipleKeyLinking": "Trasferir a una Clave Nueva",
"MultipleKeyLinkingHelp": "Si usted recivio una nueva clave de partidiario, use este formulario para trasferir la registracion de la clave vieja a la nueva.",
"LabelCurrentEmailAddress": "Cuenta de correo actual",
"LabelCurrentEmailAddressHelp": "La direcci\u00f3n de correo electr\u00f3nico actual a la que se envi\u00f3 la nueva clave.",
"HeaderForgotKey": "Perd\u00ed mi clave",
@ -646,13 +646,13 @@
"LabelSupporterEmailAddress": "La direcci\u00f3n de correo que utliz\u00f3 para comprar la clave.",
"ButtonRetrieveKey": "Recuperar clave",
"LabelSupporterKey": "Clave de seguidor (pegar desde el correo)",
"LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Emby.",
"MessageInvalidKey": "Supporter key is missing or invalid.",
"ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.",
"LabelSupporterKeyHelp": "Agregue su clave de partidiario para empezar a disfrutar beneficios adicionales que la comunidad a creado para Emby.",
"MessageInvalidKey": "Clave de partidiario no se encuentra o es invalido.",
"ErrorMessageInvalidKey": "Para que cualquier contenido premium sea registrado, usted debe ser un pardidiario de Emby. Porfavor done y ayude a continuar con el desarrollo del producto principal. Gracias.",
"HeaderDisplaySettings": "Opciones de pantalla",
"TabPlayTo": "Reproducir en",
"LabelEnableDlnaServer": "Habilitar servidor Dlna",
"LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.",
"LabelEnableDlnaServerHelp": "Permite que los aparatos con tecnologia UPnP en su red local pudan acceder los contenidos en Emby.",
"LabelEnableBlastAliveMessages": "Explotar mensajes en vivo",
"LabelEnableBlastAliveMessagesHelp": "Active aqu\u00ed si el servidor no es detectado correctamente por otros dispositivos UPnP en su red.",
"LabelBlastMessageInterval": "Intervalo para mensajes en vivo (segundos)",
@ -677,9 +677,9 @@
"NotificationOptionPluginUpdateInstalled": "Se ha instalado la actualizaci\u00f3n del plugin",
"NotificationOptionPluginInstalled": "Plugin instalado",
"NotificationOptionPluginUninstalled": "Plugin desinstalado",
"NotificationOptionVideoPlayback": "Video playback started",
"NotificationOptionAudioPlayback": "Audio playback started",
"NotificationOptionGamePlayback": "Game playback started",
"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",
@ -687,7 +687,7 @@
"NotificationOptionInstallationFailed": "Fallo en la instalaci\u00f3n",
"NotificationOptionNewLibraryContent": "Nuevo contenido a\u00f1adido",
"NotificationOptionNewLibraryContentMultiple": "Nuevo contenido a\u00f1adido (multiple)",
"NotificationOptionCameraImageUploaded": "Camera image uploaded",
"NotificationOptionCameraImageUploaded": "Imagen de camara se a carcado",
"NotificationOptionUserLockedOut": "User locked out",
"HeaderSendNotificationHelp": "By default, notifications are delivered to your dashboard inbox. Browse the plugin catalog to install additional notification options.",
"NotificationOptionServerRestartRequired": "Se requiere el reinicio del servidor",
@ -729,13 +729,13 @@
"ButtonFullscreen": "Toggle fullscreen",
"ButtonScenes": "Escenas",
"ButtonSubtitles": "Subt\u00edtulos",
"ButtonAudioTracks": "Audio tracks",
"ButtonAudioTracks": "Pistas de Audio",
"ButtonPreviousTrack": "Pista anterior",
"ButtonNextTrack": "Pista siguiente",
"ButtonStop": "Detener",
"ButtonPause": "Pausa",
"ButtonNext": "Next",
"ButtonPrevious": "Previous",
"ButtonNext": "Siguiente",
"ButtonPrevious": "Anterior",
"LabelGroupMoviesIntoCollections": "Agrupar pel\u00edculas en colecciones",
"LabelGroupMoviesIntoCollectionsHelp": "Cuando se muestran las listas de pel\u00edculas, las pel\u00edculas pertenecientes a una colecci\u00f3n se mostrar\u00e1n como un elemento agrupado.",
"NotificationOptionPluginError": "Error en plugin",
@ -773,7 +773,7 @@
"OptionPlainVideoItemsHelp": "Si est\u00e1 habilitado, todos los v\u00eddeos est\u00e1n representados en DIDL como \"object.item.videoItem\" en lugar de un tipo m\u00e1s espec\u00edfico, como por ejemplo \"object.item.videoItem.movie\".",
"LabelSupportedMediaTypes": "Tipos de medio soportados:",
"TabIdentification": "Identificaci\u00f3n",
"HeaderIdentification": "Identification",
"HeaderIdentification": "Identificaci\u00f3n",
"TabDirectPlay": "Reproducci\u00f3n directa",
"TabContainers": "Contenedores",
"TabCodecs": "Codecs",
@ -795,9 +795,9 @@
"HeaderProfileServerSettingsHelp": "These values control how Emby Server will present itself to the device.",
"LabelMaxBitrate": "Bitrate m\u00e1ximo:",
"LabelMaxBitrateHelp": "Especificar una tasa de bits m\u00e1xima en entornos de ancho de banda limitado, o si el dispositivo impone su propio l\u00edmite.",
"LabelMaxStreamingBitrate": "Max streaming bitrate:",
"LabelMaxStreamingBitrate": "Bitrate m\u00e1ximo:",
"LabelMaxStreamingBitrateHelp": "Specify a max bitrate when streaming.",
"LabelMaxChromecastBitrate": "Max Chromecast bitrate:",
"LabelMaxChromecastBitrate": "Bitrate de reproducci\u00f3n Chromecast",
"LabelMaxStaticBitrate": "Max sync bitrate:",
"LabelMaxStaticBitrateHelp": "Specify a max bitrate when syncing content at high quality.",
"LabelMusicStaticBitrate": "Music sync bitrate:",
@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "Pas de th\u00e8me vid\u00e9o",
"LabelOneTimeDonationAmount": "Montant du don :",
"ButtonDonate": "Faire un don",
"ButtonPurchase": "Acheter",
"OptionActor": "Acteur(trice)",
"OptionComposer": "Compositeur:",
"OptionDirector": "R\u00e9alisateur:",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Info d\u00e9velopeur",
"HeaderRevisionHistory": "Historique des r\u00e9visions",
"ButtonViewWebsite": "Voir le site",
"LabelRecurringDonationCanBeCancelledHelp": "Des donations r\u00e9currentes peuvent \u00eatre annul\u00e9es \u00e0 tout moment depuis votre compte PayPal.",
"HeaderXmlSettings": "R\u00e9glages Xml",
"HeaderXmlDocumentAttributes": "Attributs des documents Xml",
"HeaderXmlDocumentAttribute": "Attribut des documents Xml",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "Par d\u00e9faut, le transcodage est r\u00e9alis\u00e9 de mani\u00e8re lente pour minimiser la consommation de ressources.",
"HeaderPlaylists": "Listes de lecture",
"HeaderSelectDate": "S\u00e9lectionnez la date",
"HeaderWelcomeExclamation": "Bienvenue !",
"HeaderMyPreferences": "Mes pr\u00e9f\u00e9rences",
"ButtonMyPreferencesWelcomeYes": "Oui, je voudrais d\u00e9finir mes pr\u00e9f\u00e9rences maintenant.",
"ButtonMyPreferencesWelcomeNo": "Non merci, je le ferai plus tard.",
"MyPreferencesWelcomeMessage1": "Nous avons pr\u00e9sent\u00e9 votre biblioth\u00e8que d'une mani\u00e8re que nous pensons agr\u00e9able. L'apparence et les regroupements de contenus peuvent \u00eatre modifi\u00e9s \u00e0 tout moment en ajustant vos pr\u00e9f\u00e9rences. Vos pr\u00e9f\u00e9rences s'appliqueront \u00e0 toutes vos applications Emby.",
"MyPreferencesWelcomeMessage2": "Voulez-vous d\u00e9finir vos pr\u00e9f\u00e9rences maintenant ?",
"ToAccessPreferencesHelp": "Pour acc\u00e9der plus tard \u00e0 vos pr\u00e9f\u00e9rences, cliquez sur l'ic\u00f4ne utilisateur dans le bandeau en haut \u00e0 droite et s\u00e9lectionnez Mes pr\u00e9f\u00e9rences.",
"HeaderViewStyles": "Styles d'affichage",
"LabelSelectViewStyles": "Activer les pr\u00e9sentations am\u00e9lior\u00e9es pour :",
"LabelSelectViewStylesHelp": "Si vous activez cette option, l'affichage utilisera les m\u00e9tadonn\u00e9es pour ajouter des cat\u00e9gories telles que Suggestions, Derni\u00e8res, Genres, ... Si vous d\u00e9sactivez cette option, l'affichage sera simplement bas\u00e9 sur les dossiers.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Groupement",
"HeaderExport": "Exporter",
"HeaderColumns": "Colonnes",
"ButtonReset": "R\u00e9initialiser"
"ButtonReset": "R\u00e9initialiser",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No tema video",
"LabelOneTimeDonationAmount": "Importo della donazione:",
"ButtonDonate": "Donazione",
"ButtonPurchase": "Purchase",
"OptionActor": "Attore",
"OptionComposer": "Compositore",
"OptionDirector": "Regista",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Info sviluppatore",
"HeaderRevisionHistory": "Cronologia delle revisioni",
"ButtonViewWebsite": "Visualizza sito web",
"LabelRecurringDonationCanBeCancelledHelp": "Donazioni ricorrenti possono essere cancellati in qualsiasi momento dal tuo conto PayPal.",
"HeaderXmlSettings": "Impostazioni Xml",
"HeaderXmlDocumentAttributes": "Attributi Documento Xml",
"HeaderXmlDocumentAttribute": "Attributo Documento Xml",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "Per default, la sincronizzazione viene eseguita a bassa velocit\u00e0 per minimizzare il consumo di risorse",
"HeaderPlaylists": "Playlist",
"HeaderSelectDate": "Seleziona la data",
"HeaderWelcomeExclamation": "Benvenuto!",
"HeaderMyPreferences": "Le miei preferenze",
"ButtonMyPreferencesWelcomeYes": "Grazie, preferisco impostare le mie preferenze adesso",
"ButtonMyPreferencesWelcomeNo": "No grazie, provveder\u00f2 in seguito.",
"MyPreferencesWelcomeMessage1": "Abbiamo presentato la tua libreria in un modo in cui pensiamo ti possa piacere. L'aspetto e il raggruppamento dei contenuti possono essere cambiati in qualsiasi momento modificando le preferenze. Le preferenze si applicano a tutte le app Emby.",
"MyPreferencesWelcomeMessage2": "Desideri impostare le tue preferenze ora?",
"ToAccessPreferencesHelp": "Per accedere alle preferenze in un secondo tempo, fare clic sull'icona utente presente in alto a destra e seleziona Le Mie Preferenze.",
"HeaderViewStyles": "Stili Viste",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "Se abilitato, le viste verranno create con i metadati per offrire categorie come Suggeriti, Recenti, Generi e altro. Se disabilitato, verranno mostrate come semplici cartelle.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u0441\u0456\u0437",
"LabelOneTimeDonationAmount": "\u049a\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b \u049b\u043e\u0440\u044b\u0442\u044b\u043d\u0434\u044b\u0441\u044b:",
"ButtonDonate": "\u049a\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0430\u0443",
"ButtonPurchase": "\u0421\u0430\u0442\u044b\u043f \u0430\u043b\u0443",
"OptionActor": "\u0410\u043a\u0442\u0435\u0440",
"OptionComposer": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440",
"OptionDirector": "\u0420\u0435\u0436\u0438\u0441\u0441\u0435\u0440",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0442\u0443\u0440\u0430\u043b\u044b",
"HeaderRevisionHistory": "\u04e8\u0437\u0433\u0435\u0440\u0456\u0441\u0442\u0435\u0440 \u0442\u0430\u0440\u0438\u0445\u044b",
"ButtonViewWebsite": "\u0421\u0430\u0439\u0442\u044b\u043d\u0430",
"LabelRecurringDonationCanBeCancelledHelp": "\u049a\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b\u0442\u0430\u0440 PayPal \u0435\u0441\u0435\u043f \u0448\u043e\u0442\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u04d9\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0434\u0430 \u0431\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.",
"HeaderXmlSettings": "XML \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456",
"HeaderXmlDocumentAttributes": "XML-\u049b\u04b1\u0436\u0430\u0442 \u0442\u04e9\u043b\u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b",
"HeaderXmlDocumentAttribute": "XML-\u049b\u04b1\u0436\u0430\u0442 \u0442\u04e9\u043b\u0441\u0438\u043f\u0430\u0442\u044b",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "\u0420\u0435\u0441\u0443\u0440\u0441\u0442\u0430\u0440 \u0442\u04b1\u0442\u044b\u043d\u0443\u0434\u044b \u0431\u0430\u0440\u044b\u043d\u0448\u0430 \u0430\u0437\u0430\u0439\u0442\u0443 \u04af\u0448\u0456\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443\u043b\u0456\u043a \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443 \u04d9\u0434\u0435\u043f\u043a\u0456\u0434\u0435 \u0442\u04e9\u043c\u0435\u043d \u0436\u044b\u043b\u0434\u0430\u043c\u0434\u044b\u049b\u043f\u0435\u043d \u043e\u0440\u044b\u043d\u0434\u0430\u043b\u0430\u0434\u044b.",
"HeaderPlaylists": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440",
"HeaderSelectDate": "\u041a\u04af\u043d\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u0443",
"HeaderWelcomeExclamation": "\u049a\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!",
"HeaderMyPreferences": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c",
"ButtonMyPreferencesWelcomeYes": "\u0418\u04d9, \u043c\u0435\u043d \u0435\u043d\u0434\u0456 \u043c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c\u0434\u0456 \u043e\u0440\u043d\u0430\u0442\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0439\u043c\u044b\u043d.",
"ButtonMyPreferencesWelcomeNo": "\u0416\u043e\u049b, \u0440\u0430\u0445\u043c\u0435\u0442, \u043c\u0435\u043d \u043e\u043d\u044b \u043a\u0435\u0439\u0456\u043d\u0456\u0440\u0435\u043a \u0456\u0441\u0442\u0435\u0439\u043c\u0456\u043d.",
"MyPreferencesWelcomeMessage1": "\u0421\u0456\u0437 \u049b\u0430\u043b\u0430\u0439 \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u0439\u0442\u044b\u043d\u044b\u043d \u043e\u0439\u043b\u0430\u0441\u0442\u044b\u0440\u044b\u043f \u0441\u0456\u0437\u0434\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u04a3\u044b\u0437\u0434\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0442\u0456\u043c\u0456\u0437. \u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437\u0434\u0456 \u0440\u0435\u0442\u0442\u0435\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u0435\u0437\u0435\u043d\u0434\u0456\u0440\u0443\u0456 \u043c\u0435\u043d \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443\u044b \u043a\u0435\u0437 \u043a\u0435\u043b\u0433\u0435\u043d \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u04e9\u0437\u0433\u0435\u0440\u0442\u0456\u043b\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d. \u0421\u0456\u0437\u0434\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437 \u0431\u0430\u0440\u043b\u044b\u049b Emby \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043d\u0434\u0430 \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b.",
"MyPreferencesWelcomeMessage2": "\u0421\u0456\u0437 \u0435\u043d\u0434\u0456 \u04e9\u0437 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d\u0456\u0437\u0434\u0456 \u043e\u0440\u043d\u0430\u0442\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?",
"ToAccessPreferencesHelp": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437\u0433\u0435 \u043a\u0435\u0439\u0456\u043d\u0456\u0440\u0435\u043a \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d, \u04af\u0441\u0442\u0456\u04a3\u0433\u0456 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u043c\u0435\u0441\u0456 \u043e\u04a3 \u0436\u0430\u0493\u044b\u043d\u0434\u0430\u0493\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u041c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.",
"HeaderViewStyles": "\u0410\u0441\u043f\u0435\u043a\u0442 \u043c\u04d9\u043d\u0435\u0440\u043b\u0435\u0440\u0456",
"LabelSelectViewStyles": "\u041c\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u0436\u0430\u049b\u0441\u0430\u0440\u0442\u044b\u043b\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d \u049b\u043e\u0441\u0443:",
"LabelSelectViewStylesHelp": "\u049a\u043e\u0441\u044b\u043b\u0441\u0430, \u043c\u04b1\u043d\u0434\u0430\u0439 \u04b0\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440, \u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456, \u0416\u0430\u043d\u0440\u043b\u0430\u0440\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430 \u0434\u0430 \u0441\u0430\u043d\u0430\u0442\u0442\u0430\u0440\u044b\u043d \u04b1\u0441\u044b\u043d\u0443 \u04af\u0448\u0456\u043d \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u04b1\u0440\u044b\u043b\u0430\u0434\u044b. \u0410\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0441\u0430, \u043e\u043b\u0430\u0440 \u049b\u0430\u0440\u0430\u043f\u0430\u0439\u044b\u043c \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0434\u0456.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "\u0422\u043e\u043f\u0442\u0430\u0443",
"HeaderExport": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0442\u0430\u0443",
"HeaderColumns": "\u0411\u0430\u0493\u0430\u043d\u0434\u0430\u0440",
"ButtonReset": "\u042b\u0441\u044b\u0440\u0443"
"ButtonReset": "\u042b\u0441\u044b\u0440\u0443",
"OptionEnableExternalVideoPlayers": "\u0421\u044b\u0440\u0442\u049b\u044b \u043e\u0439\u043d\u0430\u0442\u049b\u044b\u0448\u0442\u0430\u0440\u0434\u044b \u049b\u043e\u0441\u0443"
}

@ -1228,6 +1228,7 @@
"OptionNoThemeVideo": "No Theme Video",
"LabelOneTimeDonationAmount": "Donation amount:",
"ButtonDonate": "Donate",
"ButtonPurchase": "Purchase",
"OptionActor": "Actor",
"OptionComposer": "Composer",
"OptionDirector": "Director",
@ -1247,7 +1248,6 @@
"HeaderDeveloperInfo": "Developer Info",
"HeaderRevisionHistory": "Revision History",
"ButtonViewWebsite": "View website",
"LabelRecurringDonationCanBeCancelledHelp": "Recurring donations can be cancelled at any time from within your PayPal account.",
"HeaderXmlSettings": "Xml Settings",
"HeaderXmlDocumentAttributes": "Xml Document Attributes",
"HeaderXmlDocumentAttribute": "Xml Document Attribute",
@ -1409,13 +1409,6 @@
"OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.",
"HeaderPlaylists": "Playlists",
"HeaderSelectDate": "Select Date",
"HeaderWelcomeExclamation": "Welcome!",
"HeaderMyPreferences": "My Preferences",
"ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.",
"ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.",
"MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.",
"MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
"ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
"HeaderViewStyles": "View Styles",
"LabelSelectViewStyles": "Enable enhanced presentations for:",
"LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
@ -1438,5 +1431,6 @@
"OptionReportGrouping": "Grouping",
"HeaderExport": "Export",
"HeaderColumns": "Columns",
"ButtonReset": "Reset"
"ButtonReset": "Reset",
"OptionEnableExternalVideoPlayers": "Enable external video players"
}

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

Loading…
Cancel
Save