From a3d796cd54c809c7ec2783e5cab6c37b2950410d Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 12 May 2015 11:35:05 -0400 Subject: [PATCH 01/18] update mac project --- .../Emby.Server.Mac.csproj | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj index d1a24ab127..03c69901ea 100644 --- a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj +++ b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj @@ -301,6 +301,9 @@ Resources\dashboard-ui\connectlogin.html + + Resources\dashboard-ui\cordovaindex.html + Resources\dashboard-ui\dashboard.html @@ -739,6 +742,9 @@ Resources\dashboard-ui\css\images\checkmarkgreen.png + + Resources\dashboard-ui\css\images\empty.png + Resources\dashboard-ui\css\images\favicon.ico @@ -751,6 +757,9 @@ Resources\dashboard-ui\css\images\logindefault.png + + Resources\dashboard-ui\css\images\logo536.png + Resources\dashboard-ui\css\images\mblogoicon.png @@ -760,9 +769,6 @@ Resources\dashboard-ui\css\images\rotten.png - - Resources\dashboard-ui\css\images\server.png - Resources\dashboard-ui\css\images\splash.jpg @@ -949,9 +955,6 @@ Resources\dashboard-ui\css\images\icons\volumeup.png - - Resources\dashboard-ui\css\images\icons\wireless.png - Resources\dashboard-ui\css\images\items\detail\audio.png @@ -1588,12 +1591,27 @@ Resources\dashboard-ui\thirdparty\cast_sender.js + + Resources\dashboard-ui\thirdparty\fastclick.js + + + Resources\dashboard-ui\thirdparty\headroom.js + Resources\dashboard-ui\thirdparty\jquery-2.1.1.min.js Resources\dashboard-ui\thirdparty\jquery.unveil-custom.js + + Resources\dashboard-ui\thirdparty\masonry.pkgd.min.js + + + Resources\dashboard-ui\thirdparty\require.js + + + Resources\dashboard-ui\thirdparty\requirecss.js + Resources\dashboard-ui\thirdparty\apiclient\ajax.js @@ -1648,9 +1666,18 @@ Resources\dashboard-ui\thirdparty\apiclient\alt\events.js + + Resources\dashboard-ui\thirdparty\cordova\remotecontrols.js + + + Resources\dashboard-ui\thirdparty\cordova\serverdiscovery.js + Resources\dashboard-ui\thirdparty\fontawesome\css\font-awesome.css + + Resources\dashboard-ui\thirdparty\fontawesome\css\font-awesome.css.map + Resources\dashboard-ui\thirdparty\fontawesome\css\font-awesome.min.css @@ -1669,6 +1696,9 @@ Resources\dashboard-ui\thirdparty\fontawesome\fonts\fontawesome-webfont.woff + + Resources\dashboard-ui\thirdparty\fontawesome\fonts\fontawesome-webfont.woff2 + Resources\dashboard-ui\thirdparty\jquerymobile-1.4.5\jquery.mobile-1.4.5.min.css From a100effdb6f63923debaeb4d12098d711918f7ab Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 May 2015 00:16:05 -0400 Subject: [PATCH 02/18] escape single quotes --- MediaBrowser.Api/Playback/BaseStreamingService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 6f1edb1650..986dc4d2ee 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -716,7 +716,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 +724,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)); } From 11aa20a7b819f54551256467dcdf315dbdef4237 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 May 2015 16:53:14 -0400 Subject: [PATCH 03/18] hls updates --- .../Playback/BaseStreamingService.cs | 2 +- .../Playback/Hls/DynamicHlsService.cs | 19 ++++++++++++------- .../Library/CoreResolutionIgnoreRule.cs | 1 + .../Localization/Server/server.json | 1 + .../Api/DashboardService.cs | 13 +++++++++++++ .../Api/PackageCreator.cs | 14 ++++++++++---- .../Savers/MovieNfoSaver.cs | 2 +- 7 files changed, 39 insertions(+), 13 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 986dc4d2ee..a36b65f744 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -179,7 +179,7 @@ namespace MediaBrowser.Api.Playback if (time > _slowSeekTicks && _slowSeekTicks > 0) { - return string.Format("-ss {0}", MediaEncoder.GetTimeParameter(_slowSeekTicks)); + return string.Format("-ss {0}", MediaEncoder.GetTimeParameter(time)); } return string.Empty; diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 2d8b71a0cc..45d560da7f 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -244,7 +244,7 @@ namespace MediaBrowser.Api.Playback.Hls } catch (FileNotFoundException) { - + } } @@ -675,7 +675,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('?'); @@ -758,12 +758,14 @@ namespace MediaBrowser.Api.Playback.Hls } var keyFrameArg = string.Format(" -force_key_frames expr:gte(t,n_forced*{0})", - 1.ToString(UsCulture)); + state.SegmentLength.ToString(UsCulture)); var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream; 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) { @@ -783,7 +785,7 @@ 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"; @@ -799,7 +801,8 @@ 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); } } @@ -809,11 +812,13 @@ namespace MediaBrowser.Api.Playback.Hls slowSeekParam = " " + slowSeekParam; } + //state.EnableGenericHlsSegmenter = true; + if (state.EnableGenericHlsSegmenter) { var outputTsArg = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath)) + "%d.ts"; - 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}\"", + return string.Format("{0} {11} {1}{10} -map_metadata -1 -threads {2} {3} {4} -flags -global_header -sc_threshold 0 {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, @@ -829,7 +834,7 @@ namespace MediaBrowser.Api.Playback.Hls ).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}{10} -map_metadata -1 -threads {2} {3} {4} -output_ts_offset " + MediaEncoder.GetTimeParameter(state.Request.StartTimeTicks ?? 0) + " -flags -global_header -sc_threshold 0 {5} -hls_time {6} -start_number {7} -hls_list_size {8} -y \"{9}\"", inputModifier, GetInputArgument(state), threads, diff --git a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs index 3dda3f1581..be8c1cfbd7 100644 --- a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs +++ b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs @@ -32,6 +32,7 @@ namespace MediaBrowser.Server.Implementations.Library ".wd_tv", // Synology + "@eaDir", "eaDir" }; diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 8f90f1aca6..579df55a8d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -1243,6 +1243,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index 07d9ed4979..715f06055f 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -320,6 +320,19 @@ namespace MediaBrowser.WebDashboard.Api await DumpFile(filename, Path.Combine(destination, filename), mode, culture, appVersion).ConfigureAwait(false); } + + var excludeFiles = new List(); + + if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) + { + excludeFiles.Add("supporter.html"); + excludeFiles.Add("supporterkey.html"); + } + + foreach (var file in excludeFiles) + { + File.Delete(Path.Combine(destination, file)); + } } private async Task DumpJs(string source, string mode, string destination, string culture, string appVersion) diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index 2823733ea8..a414e41313 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -291,7 +291,7 @@ namespace MediaBrowser.WebDashboard.Api html = ReplaceBetween(html, "", "", string.Empty); // Replace CORDOVA_REPLACE_SUPPORTER_SUBMIT_START - html = ReplaceBetween(html, "", "", "${ButtonDonate}"); + html = ReplaceBetween(html, "", "", "${ButtonPurchase}"); return html; } @@ -299,14 +299,20 @@ namespace MediaBrowser.WebDashboard.Api private string ReplaceBetween(string html, string startToken, string endToken, string newHtml) { var start = html.IndexOf(startToken, StringComparison.OrdinalIgnoreCase); - var end = html.IndexOf(endToken, StringComparison.OrdinalIgnoreCase); - if (start == -1 || end == -1) + if (start == -1) { return html; } - string result = html.Substring(start + 1, end - start - 1); + var end = html.IndexOf(endToken, start, StringComparison.OrdinalIgnoreCase); + + if (end == -1) + { + return html; + } + + string result = html.Substring(start, end - start); html = html.Replace(result, newHtml); return ReplaceBetween(html, startToken, endToken, newHtml); diff --git a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs index b2d276b734..ddbd528d9d 100644 --- a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs @@ -33,7 +33,7 @@ namespace MediaBrowser.XbmcMetadata.Savers { var path = item.ContainingFolderPath; - list.Add(Path.Combine(path, "VIDEO_TS.nfo")); + list.Add(Path.Combine(path, "VIDEO_TS", "VIDEO_TS.nfo")); } if (item.VideoType == VideoType.Dvd || item.VideoType == VideoType.BluRay || item.VideoType == VideoType.HdDvd) From ae768735aa3755083321d1c9975a8b3fcf644b31 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 22 May 2015 11:59:17 -0400 Subject: [PATCH 04/18] update translations --- MediaBrowser.Api/ApiEntryPoint.cs | 24 +++++-- .../Playback/Hls/BaseHlsService.cs | 3 +- .../Playback/Hls/DynamicHlsService.cs | 66 ++++++++++--------- MediaBrowser.Dlna/Profiles/DefaultProfile.cs | 4 +- MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml | 5 +- MediaBrowser.Dlna/Profiles/Xml/Default.xml | 5 +- MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml | 5 +- .../Profiles/Xml/DirecTV HD-DVR.xml | 5 +- .../Profiles/Xml/Dish Hopper-Joey.xml | 5 +- .../Profiles/Xml/LG Smart TV.xml | 5 +- .../Profiles/Xml/Linksys DMA2100.xml | 5 +- .../Profiles/Xml/MediaMonkey.xml | 5 +- .../Profiles/Xml/Panasonic Viera.xml | 5 +- .../Profiles/Xml/Popcorn Hour.xml | 5 +- .../Profiles/Xml/Samsung Smart TV.xml | 5 +- .../Profiles/Xml/Sony Blu-ray Player 2013.xml | 5 +- .../Profiles/Xml/Sony Blu-ray Player.xml | 5 +- .../Profiles/Xml/Sony Bravia (2010).xml | 5 +- .../Profiles/Xml/Sony Bravia (2011).xml | 5 +- .../Profiles/Xml/Sony Bravia (2012).xml | 5 +- .../Profiles/Xml/Sony Bravia (2013).xml | 5 +- .../Profiles/Xml/Sony PlayStation 3.xml | 5 +- MediaBrowser.Dlna/Profiles/Xml/Vlc.xml | 5 +- MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml | 5 +- MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml | 5 +- MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml | 5 +- MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml | 5 +- .../Localization/JavaScript/ar.json | 1 + .../JavaScript/{be_BY.json => be-BY.json} | 1 + .../JavaScript/{bg_BG.json => bg-BG.json} | 1 + .../Localization/JavaScript/ca.json | 1 + .../Localization/JavaScript/cs.json | 1 + .../Localization/JavaScript/da.json | 1 + .../Localization/JavaScript/de.json | 7 +- .../Localization/JavaScript/el.json | 1 + .../JavaScript/{en_GB.json => en-GB.json} | 1 + .../JavaScript/{en_US.json => en-US.json} | 1 + .../JavaScript/{es_MX.json => es-MX.json} | 9 +-- .../JavaScript/{es_VE.json => es-VE.json} | 1 + .../Localization/JavaScript/es.json | 1 + .../Localization/JavaScript/fi.json | 1 + .../Localization/JavaScript/fr.json | 1 + .../Localization/JavaScript/he.json | 1 + .../Localization/JavaScript/hr.json | 1 + .../Localization/JavaScript/hu.json | 1 + .../Localization/JavaScript/it.json | 1 + .../Localization/JavaScript/kk.json | 1 + .../Localization/JavaScript/ms.json | 1 + .../Localization/JavaScript/nb.json | 1 + .../Localization/JavaScript/nl.json | 15 +++-- .../Localization/JavaScript/pl.json | 1 + .../JavaScript/{pt_BR.json => pt-BR.json} | 1 + .../JavaScript/{pt_PT.json => pt-PT.json} | 1 + .../Localization/JavaScript/ru.json | 21 +++--- .../JavaScript/{sl_SI.json => sl-SI.json} | 1 + .../Localization/JavaScript/sv.json | 1 + .../Localization/JavaScript/tr.json | 1 + .../Localization/JavaScript/uk.json | 1 + .../Localization/JavaScript/vi.json | 1 + .../JavaScript/{zh_CN.json => zh-CN.json} | 1 + .../JavaScript/{zh_TW.json => zh-TW.json} | 1 + .../Localization/LocalizationManager.cs | 2 +- .../Localization/Server/ar.json | 9 +-- .../Server/{bg_BG.json => bg-BG.json} | 9 +-- .../Localization/Server/ca.json | 9 +-- .../Localization/Server/cs.json | 9 +-- .../Localization/Server/da.json | 9 +-- .../Localization/Server/de.json | 17 ++--- .../Localization/Server/el.json | 9 +-- .../Server/{en_GB.json => en-GB.json} | 9 +-- .../Server/{sl_SI.json => en-US.json} | 9 +-- .../Server/{es_MX.json => es-MX.json} | 11 +--- .../Localization/Server/es.json | 9 +-- .../Localization/Server/fi.json | 9 +-- .../Localization/Server/fr.json | 9 +-- .../Localization/Server/he.json | 9 +-- .../Localization/Server/hr.json | 9 +-- .../Localization/Server/it.json | 9 +-- .../Localization/Server/kk.json | 9 +-- .../Localization/Server/ko.json | 9 +-- .../Localization/Server/ms.json | 9 +-- .../Localization/Server/nb.json | 9 +-- .../Localization/Server/nl.json | 39 +++++------ .../Localization/Server/pl.json | 9 +-- .../Server/{pt_BR.json => pt-BR.json} | 9 +-- .../Server/{pt_PT.json => pt-PT.json} | 9 +-- .../Localization/Server/ru.json | 15 ++--- .../Server/{en_US.json => sl-SI.json} | 9 +-- .../Localization/Server/sv.json | 9 +-- .../Localization/Server/tr.json | 9 +-- .../Localization/Server/uk.json | 9 +-- .../Localization/Server/vi.json | 9 +-- .../Server/{zh_CN.json => zh-CN.json} | 9 +-- .../Server/{zh_TW.json => zh-TW.json} | 9 +-- ...MediaBrowser.Server.Implementations.csproj | 39 +++++------ .../Parsers/BaseNfoParser.cs | 30 +++++---- SharedVersion.cs | 2 +- 97 files changed, 255 insertions(+), 446 deletions(-) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{be_BY.json => be-BY.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{bg_BG.json => bg-BG.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{en_GB.json => en-GB.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{en_US.json => en-US.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{es_MX.json => es-MX.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{es_VE.json => es-VE.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{pt_BR.json => pt-BR.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{pt_PT.json => pt-PT.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{sl_SI.json => sl-SI.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{zh_CN.json => zh-CN.json} (99%) rename MediaBrowser.Server.Implementations/Localization/JavaScript/{zh_TW.json => zh-TW.json} (99%) rename MediaBrowser.Server.Implementations/Localization/Server/{bg_BG.json => bg-BG.json} (99%) rename MediaBrowser.Server.Implementations/Localization/Server/{en_GB.json => en-GB.json} (99%) rename MediaBrowser.Server.Implementations/Localization/Server/{sl_SI.json => en-US.json} (99%) rename MediaBrowser.Server.Implementations/Localization/Server/{es_MX.json => es-MX.json} (98%) rename MediaBrowser.Server.Implementations/Localization/Server/{pt_BR.json => pt-BR.json} (99%) rename MediaBrowser.Server.Implementations/Localization/Server/{pt_PT.json => pt-PT.json} (99%) rename MediaBrowser.Server.Implementations/Localization/Server/{en_US.json => sl-SI.json} (99%) rename MediaBrowser.Server.Implementations/Localization/Server/{zh_CN.json => zh-CN.json} (99%) rename MediaBrowser.Server.Implementations/Localization/Server/{zh_TW.json => zh-TW.json} (99%) diff --git a/MediaBrowser.Api/ApiEntryPoint.cs b/MediaBrowser.Api/ApiEntryPoint.cs index 2a72854fb4..dff60d4831 100644 --- a/MediaBrowser.Api/ApiEntryPoint.cs +++ b/MediaBrowser.Api/ApiEntryPoint.cs @@ -339,14 +339,23 @@ 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; + + // With newer just in time encoding, we no longer need to be aggressive about killing the stream + if (!job.IsLiveOutput) + { + timerDuration = 180000; + } + } } job.PingTimeout = timerDuration; @@ -628,6 +637,9 @@ namespace MediaBrowser.Api /// /// The live stream identifier. public string LiveStreamId { get; set; } + + public bool IsLiveOutput { get; set; } + /// /// Gets or sets the path. /// diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index b10c02e17c..a143da7729 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -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 { diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 45d560da7f..a2e327f7d0 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -393,21 +393,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 +422,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; + //// 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); + //while (eofCount < 10) + //{ + // var info = new FileInfo(segmentPath); - if (!info.Exists) - { - break; - } + // if (!info.Exists) + // { + // break; + // } - var newLength = info.Length; + // var newLength = info.Length; - if (newLength == length) - { - eofCount++; - } - else - { - eofCount = 0; - } + // if (newLength == length) + // { + // eofCount++; + // } + // else + // { + // eofCount = 0; + // } - length = newLength; - await Task.Delay(100, cancellationToken).ConfigureAwait(false); - } + // length = newLength; + // await Task.Delay(100, cancellationToken).ConfigureAwait(false); + //} + cancellationToken.ThrowIfCancellationRequested(); return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); } diff --git a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs index 819de59fc6..18d9dbcfa1 100644 --- a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs +++ b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs @@ -31,8 +31,8 @@ namespace MediaBrowser.Dlna.Profiles MaxIconWidth = 48; MaxIconHeight = 48; - MaxStreamingBitrate = 8000000; - MaxStaticBitrate = 8000000; + MaxStreamingBitrate = 12000000; + MaxStaticBitrate = 12000000; MusicStreamingTranscodingBitrate = 128000; MusicSyncBitrate = 128000; diff --git a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml index 644e1d7ef0..29612e37ae 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml @@ -22,8 +22,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -34,7 +34,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Default.xml b/MediaBrowser.Dlna/Profiles/Xml/Default.xml index 1ec01a8a65..4f5c70dd1e 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Default.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Default.xml @@ -16,8 +16,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -28,7 +28,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml index 75250b0533..bac02ea3a6 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml @@ -21,8 +21,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -33,7 +33,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml index 7e61e91740..3afa9907b7 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml @@ -22,8 +22,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -34,7 +34,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml index 8e8f41a8d0..62f4907e0b 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -35,7 +35,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml index 58f9dbcd1d..b7f61b006d 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml @@ -22,8 +22,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -34,7 +34,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml index 8fa282a36e..a2c5bff0bd 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml @@ -20,8 +20,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -32,7 +32,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml index 876ce93b57..9b8907637e 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml @@ -22,8 +22,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -34,7 +34,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml index ed23217716..95e0013663 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -35,7 +35,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml index ebcfd2a22d..351ebc5225 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml @@ -16,8 +16,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -28,7 +28,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml index b77197659c..baf3c88619 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml @@ -22,8 +22,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -34,7 +34,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml index 32b482fa25..b0f8a7fb55 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml @@ -22,8 +22,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -34,7 +34,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml index 038936e8b6..a07be6920a 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml @@ -24,8 +24,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -36,7 +36,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml index 4ef4ecb534..26573b1e8b 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -36,7 +36,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml index 3df34da654..76aef07f66 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -36,7 +36,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml index 073708cd5e..4f168a6ce4 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -36,7 +36,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml index 5315649373..2877e2d4e0 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -36,7 +36,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml index e92f7eed78..52bae8bc94 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -36,7 +36,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml index 3ebfdaa726..4243247def 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml @@ -22,8 +22,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -34,7 +34,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml index accaa33a41..684e61c42f 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -35,7 +35,6 @@ false true true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml index ab6f816a7f..f60729bea9 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -35,7 +35,6 @@ true false false - true diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml index 43301458a3..7167108a7c 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml @@ -23,8 +23,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -35,7 +35,6 @@ false false true - false diff --git a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml index d085db4072..55f86e5d21 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml @@ -22,8 +22,8 @@ 480 48 48 - 8000000 - 8000000 + 12000000 + 12000000 128000 128000 DMS-1.50 @@ -34,7 +34,6 @@ false false true - false diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json index bfcd6e8dff..2afbaa009a 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/be_BY.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/be-BY.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/be_BY.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/be-BY.json index 78c28bd9e1..c8f0adb48b 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/be_BY.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/be-BY.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/bg-BG.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/bg-BG.json index 638694097e..673d572bcf 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/bg-BG.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json index 77dfd819c2..69d35a3eb7 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json index 62e6c4ecc9..be88e12faf 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json index 515c3e1a67..bc3acfb244 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json @@ -40,6 +40,7 @@ "TitleLiveTV": "Live TV", "TitleSync": "Sync", "ButtonDonate": "Don\u00e9r", + "LabelRecurringDonationCanBeCancelledHelp": "Tilbagevendende donationer kan afmeldes n\u00e5r som helst fra din PayPal konto.", "HeaderMyMedia": "Mine medier", "TitleNotifications": "Underretninger", "ErrorLaunchingChromecast": "Der opstod en fejl ved start af cromecast. Tjek venligst at din enhed er forbundet til det tr\u00e5dl\u00f8se netv\u00e6rk.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json index 1c8724ac57..546da05c94 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json @@ -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", @@ -764,6 +765,6 @@ "MyDevice": "Mein Ger\u00e4t", "ButtonRemote": "Fernbedienung", "TabInfo": "Info", - "TabCast": "Cast", - "TabScenes": "Scenes" + "TabCast": "Darsteller", + "TabScenes": "Szenen" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json index e849d9f1d2..399e5fb44a 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en-GB.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/en-GB.json index 3e4c465d18..ed9e45c3b1 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en-GB.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en-US.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/en-US.json index 2b496d3d97..2d1b231a84 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en-US.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-MX.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/es-MX.json index 2247ee91ef..eb7a0d9ec7 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-MX.json @@ -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", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_VE.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-VE.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/es_VE.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/es-VE.json index 1db115c6c4..0d90dc2542 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_VE.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es-VE.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json index 1ac3473a93..c2d415a88c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json index 70f8fb7922..a8b1cb0121 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json index 8c91984fe1..2d62987e9e 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json index 5c7418844a..b851ee77dd 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json index 1df0901c29..a916eecb17 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json index 0a3049dc75..2f6a67b292 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json index edccd4dd56..403d50e59e 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json index d3e1eb2696..addc67a16c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json index 3fc420462d..8d3a9d2b19 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json index 111b101ff2..2f65f3ed24 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json @@ -40,6 +40,7 @@ "TitleLiveTV": "Live TV", "TitleSync": "Synk", "ButtonDonate": "Don\u00e9r", + "LabelRecurringDonationCanBeCancelledHelp": "Gjentakende donasjoner kan avbrytes n\u00e5r som helst fra din PayPal-konto.", "HeaderMyMedia": "My 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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json index bd8d8c4e60..ad3cb0e99a 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json @@ -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" diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json index ddb7100fb8..01479c8736 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt-BR.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/pt-BR.json index ff589ff1d7..3224e5951f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt-BR.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt-PT.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/pt-PT.json index de18b6ac47..ab9aeab3d8 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt-PT.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json index a72949acdf..1fbfab09f8 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json @@ -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" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/sl-SI.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/sl-SI.json index fdc2caad07..d9a9e359ad 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sl-SI.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json index 598378872a..fd762059ca 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json index 15cb2a76ac..e08978ba07 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json index 6bde366aac..d397b8672a 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json index 7cf8fa1869..e459602e1f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh-CN.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/zh-CN.json index b5e28eba33..7df9e288c7 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh-CN.json @@ -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", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh-TW.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json rename to MediaBrowser.Server.Implementations/Localization/JavaScript/zh-TW.json index 0a0b568958..45af9c8a3e 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh-TW.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs index e1dd5c6186..a259e7edc5 100644 --- a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs +++ b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs @@ -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 { diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ar.json b/MediaBrowser.Server.Implementations/Localization/Server/ar.json index 171c0e9d32..157917bc88 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ar.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json b/MediaBrowser.Server.Implementations/Localization/Server/bg-BG.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json rename to MediaBrowser.Server.Implementations/Localization/Server/bg-BG.json index 9db97a85f8..e16ee91e68 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/bg-BG.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ca.json b/MediaBrowser.Server.Implementations/Localization/Server/ca.json index 6f932b2eca..984600f659 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ca.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/cs.json b/MediaBrowser.Server.Implementations/Localization/Server/cs.json index f3288874a8..d1a7299eff 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/cs.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/da.json b/MediaBrowser.Server.Implementations/Localization/Server/da.json index b04be17ba4..7c483de175 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/da.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json @@ -1228,6 +1228,7 @@ "OptionNoThemeVideo": "Ingen temavideo", "LabelOneTimeDonationAmount": "Donationsbel\u00f8b:", "ButtonDonate": "Don\u00e9r", + "ButtonPurchase": "Purchase", "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", @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/de.json b/MediaBrowser.Server.Implementations/Localization/Server/de.json index e9d9dd873f..babfbb028e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/de.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json @@ -1228,6 +1228,7 @@ "OptionNoThemeVideo": "Kein Theme Video", "LabelOneTimeDonationAmount": "Spendenbetrag:", "ButtonDonate": "Spenden", + "ButtonPurchase": "Purchase", "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,10 @@ "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", + "HeaderColumns": "Spalten", "ButtonReset": "Reset" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/el.json b/MediaBrowser.Server.Implementations/Localization/Server/el.json index 08c4607ef1..d59c78c6c4 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/el.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/el.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json b/MediaBrowser.Server.Implementations/Localization/Server/en-GB.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/Server/en_GB.json rename to MediaBrowser.Server.Implementations/Localization/Server/en-GB.json index fd74642441..e0bdecbb13 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en-GB.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json b/MediaBrowser.Server.Implementations/Localization/Server/en-US.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json rename to MediaBrowser.Server.Implementations/Localization/Server/en-US.json index 5f3ca945fa..83f5dd0723 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en-US.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json b/MediaBrowser.Server.Implementations/Localization/Server/es-MX.json similarity index 98% rename from MediaBrowser.Server.Implementations/Localization/Server/es_MX.json rename to MediaBrowser.Server.Implementations/Localization/Server/es-MX.json index 68446323a3..5f1b6397d3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es-MX.json @@ -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": "Purchase", "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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es.json b/MediaBrowser.Server.Implementations/Localization/Server/es.json index 7c05b1ef3d..38111b0ce2 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fi.json b/MediaBrowser.Server.Implementations/Localization/Server/fi.json index 8450c38921..93f91b5de4 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fi.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fr.json b/MediaBrowser.Server.Implementations/Localization/Server/fr.json index caa3d34c19..be2c5279ac 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -1228,6 +1228,7 @@ "OptionNoThemeVideo": "Pas de th\u00e8me vid\u00e9o", "LabelOneTimeDonationAmount": "Montant du don :", "ButtonDonate": "Faire un don", + "ButtonPurchase": "Purchase", "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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/he.json b/MediaBrowser.Server.Implementations/Localization/Server/he.json index a93694b941..57093d9071 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/he.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/hr.json b/MediaBrowser.Server.Implementations/Localization/Server/hr.json index 1d6c5a0fb8..b8a1018937 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/hr.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/it.json b/MediaBrowser.Server.Implementations/Localization/Server/it.json index cb1bad88ab..b2df5a0aad 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/it.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/kk.json b/MediaBrowser.Server.Implementations/Localization/Server/kk.json index a086012c7d..e13011d7d6 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json @@ -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": "Purchase", "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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ko.json b/MediaBrowser.Server.Implementations/Localization/Server/ko.json index 607ecddcd3..cdec2c1b7e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ko.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ko.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ms.json b/MediaBrowser.Server.Implementations/Localization/Server/ms.json index a5dfb32e41..b73871bb02 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ms.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nb.json b/MediaBrowser.Server.Implementations/Localization/Server/nb.json index 7df82c2c49..80b2fc3ecf 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json @@ -1228,6 +1228,7 @@ "OptionNoThemeVideo": "Ingen tema video", "LabelOneTimeDonationAmount": "Donasjons bel\u00f8p:", "ButtonDonate": "Don\u00e9r", + "ButtonPurchase": "Purchase", "OptionActor": "Skuespiller", "OptionComposer": "Komponist", "OptionDirector": "Regiss\u00f8r", @@ -1247,7 +1248,6 @@ "HeaderDeveloperInfo": "Utvikler informasjon", "HeaderRevisionHistory": "Revisjonshistorikk", "ButtonViewWebsite": "Vis nettsted", - "LabelRecurringDonationCanBeCancelledHelp": "Gjentakende donasjoner kan avbrytes n\u00e5r som helst fra din PayPal-konto.", "HeaderXmlSettings": "Xml innstillinger", "HeaderXmlDocumentAttributes": "Xml dokument attributter", "HeaderXmlDocumentAttribute": "Xml dokument attributt", @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nl.json b/MediaBrowser.Server.Implementations/Localization/Server/nl.json index cc37a2c2af..d941b5b17c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json @@ -797,7 +797,7 @@ "LabelMaxBitrateHelp": "Geef een max. bitrate in bandbreedte beperkte omgevingen, of als het apparaat zijn eigen limiet heeft.", "LabelMaxStreamingBitrate": "Maximale streaming bitrate:", "LabelMaxStreamingBitrateHelp": "Geef een maximale bitrate voor streaming op.", - "LabelMaxChromecastBitrate": "Max Chromecast bitrate:", + "LabelMaxChromecastBitrate": "Maximale bitrate Chromecast:", "LabelMaxStaticBitrate": "Maximale Synchronisatie bitrate:", "LabelMaxStaticBitrateHelp": "Geef een maximale bitrate op voor synchroniseren in hoge kwaliteit.", "LabelMusicStaticBitrate": "Muzieksynchronisatie bitrate:", @@ -1228,6 +1228,7 @@ "OptionNoThemeVideo": "Geen thema film", "LabelOneTimeDonationAmount": "Donatie bedrag:", "ButtonDonate": "Doneren", + "ButtonPurchase": "Purchase", "OptionActor": "Acteur", "OptionComposer": "Componist", "OptionDirector": "Regiseur", @@ -1247,7 +1248,6 @@ "HeaderDeveloperInfo": "Informatie ontwikkelaar", "HeaderRevisionHistory": "Versie geschiedenis", "ButtonViewWebsite": "Bekijk website", - "LabelRecurringDonationCanBeCancelledHelp": "Terugkerende donaties kunnen op elk moment stop gezet worden in uw PayPal account.", "HeaderXmlSettings": "Xml Instellingen", "HeaderXmlDocumentAttributes": "Xml Document Attributen", "HeaderXmlDocumentAttribute": "Xml Document Attribuut", @@ -1409,34 +1409,27 @@ "OptionEnableFullSpeedConversionHelp": "Standaard wordt het converteren voor synchronisatie opdrachten op lage snelheid uitgevoerd zodat er zo min mogelijke impact is op de server.", "HeaderPlaylists": "Afspeellijsten", "HeaderSelectDate": "Selecteer Datum", - "HeaderWelcomeExclamation": "Welkom!", - "HeaderMyPreferences": "Mijn voorkeuren", - "ButtonMyPreferencesWelcomeYes": "Ja, ik wil mijn voorkeuren nu instellen.", - "ButtonMyPreferencesWelcomeNo": "Nee, bedankt, dat doe ik later.", - "MyPreferencesWelcomeMessage1": "We tonen je bibliotheek op een manier waarvan we denken dat je het fijn vindt. De weergave en groepering kan altijd aangepast worden aan jouw voorkeur. Je voorkeur wordt op al je Emby apps toegepast.", - "MyPreferencesWelcomeMessage2": "Wil je nu je voorkeuren instellen?", - "ToAccessPreferencesHelp": "Om je voorkeuren later te wijzigen, klik je op je gebruikersicoon rechtsboven en kies je Mijn voorkeuren.", "HeaderViewStyles": "Bekijk stijlen", - "LabelSelectViewStyles": "Enable enhanced presentations for:", + "LabelSelectViewStyles": "Schakel verbeterde presentatie in voor:", "LabelSelectViewStylesHelp": "Bij inschakelen zullen overzichten met met categori\u00ebn zolas suggesties, recente, genres en meer getoond worden. Bij uitschakelen worden simpele mappen getoond.", "TabPhotos": "Foto's", "TabVideos": "Video's", "HeaderWelcomeToEmby": "Welkom bij Emby", - "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", + "EmbyIntroMessage": "Met Emby kan je eenvoudig films, muziek en foto's naar je telefoon, tablet en andere apparaten streamen.", + "ButtonSkip": "Overslaan", + "TextConnectToServerManually": "Verbind handmatig met de server", + "ButtonSignInWithConnect": "Aanmelden met Emby Connect", + "ButtonConnect": "Verbind", + "LabelServerHost": "Server:", "LabelServerHostHelp": "192.168.1.100 of https:\/\/myserver.com", "LabelServerPort": "Poort:", "HeaderNewServer": "Nieuwe Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", - "OptionReportList": "List View", - "OptionReportStatistics": "Statistics", - "OptionReportGrouping": "Grouping", + "ButtonChangeServer": "Wijzig server", + "HeaderConnectToServer": "Verbind met server", + "OptionReportList": "Lijst weergave", + "OptionReportStatistics": "Statistieken", + "OptionReportGrouping": "Groupering", "HeaderExport": "Export", - "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "HeaderColumns": "Kolommen", + "ButtonReset": "Rest" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pl.json b/MediaBrowser.Server.Implementations/Localization/Server/pl.json index 8f439e7da6..50cea6f701 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pl.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json rename to MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json index d1ef7ef4ea..5c196cfb23 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json @@ -1228,6 +1228,7 @@ "OptionNoThemeVideo": "Nenhum V\u00eddeo-tema", "LabelOneTimeDonationAmount": "Valor da doa\u00e7\u00e3o:", "ButtonDonate": "Doar", + "ButtonPurchase": "Purchase", "OptionActor": "Ator", "OptionComposer": "Compositor", "OptionDirector": "Diretor", @@ -1247,7 +1248,6 @@ "HeaderDeveloperInfo": "Info do desenvolvedor", "HeaderRevisionHistory": "Hist\u00f3rico de Vers\u00f5es", "ButtonViewWebsite": "Ver website", - "LabelRecurringDonationCanBeCancelledHelp": "Doa\u00e7\u00f5es recorrentes podem ser canceladas a qualquer momento dentro da conta do PayPal.", "HeaderXmlSettings": "Ajustes do Xml", "HeaderXmlDocumentAttributes": "Atributos do Documento Xml", "HeaderXmlDocumentAttribute": "Atributo do Documento Xml", @@ -1409,13 +1409,6 @@ "OptionEnableFullSpeedConversionHelp": "Por padr\u00e3o, a convers\u00e3o na sincroniza\u00e7\u00e3o \u00e9 executada em uma velocidade baixa para minimizar o consumo de recursos.", "HeaderPlaylists": "Listas de reprodu\u00e7\u00e3o", "HeaderSelectDate": "Selecionar Data", - "HeaderWelcomeExclamation": "Bem Vindo!", - "HeaderMyPreferences": "Minhas Prefer\u00eancias", - "ButtonMyPreferencesWelcomeYes": "Sim, gostaria de definir minhas prefer\u00eancias agora.", - "ButtonMyPreferencesWelcomeNo": "N\u00e3o, obrigado. Farei mais tarde.", - "MyPreferencesWelcomeMessage1": "N\u00f3s exibimos sua biblioteca de uma forma que pensamos que ir\u00e1 gostar. A apar\u00eancia e o agrupamento de conte\u00fado podem ser mudados a qualquer hora ajustando suas prefer\u00eancias. Suas prefer\u00eancias ser\u00e3o aplicadas a todas as apps do Emby.", - "MyPreferencesWelcomeMessage2": "Gostaria de definir suas prefer\u00eancias agora?", - "ToAccessPreferencesHelp": "Para acessar suas prefer\u00eancias mais tarde, clique no \u00edcone do usu\u00e1rio no canto superior direito e selecione Minhas Prefer\u00eancias.", "HeaderViewStyles": "Visualizar Estilos", "LabelSelectViewStyles": "Ativar apresenta\u00e7\u00f5es aprimoradas para:", "LabelSelectViewStylesHelp": "Se ativada, as visualiza\u00e7\u00f5es ser\u00e3o feitas com metadados para oferecer categorias como Sugest\u00f5es, Recentes, G\u00eaneros e mais. Se desativada, elas ser\u00e3o exibidas como pastas simples.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/Server/pt-PT.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json rename to MediaBrowser.Server.Implementations/Localization/Server/pt-PT.json index af86b12bcd..06df61fd9b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt-PT.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ru.json b/MediaBrowser.Server.Implementations/Localization/Server/ru.json index f61e8b1c11..138175f3ba 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -402,7 +402,7 @@ "TabSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", "ButtonRefreshGuideData": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u0438\u0434\u0430", "ButtonRefresh": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c", - "ButtonAdvancedRefresh": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e", + "ButtonAdvancedRefresh": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u043f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435...", "OptionPriority": "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442", "OptionRecordOnAllChannels": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432", "OptionRecordAnytime": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f", @@ -527,7 +527,7 @@ "SystemDlnaProfilesHelp": "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f. \u041f\u0440\u0430\u0432\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u043d\u043e\u0432\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435.", "TitleDashboard": "\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c", "TabHome": "\u0413\u043b\u0430\u0432\u043d\u043e\u0435", - "TabInfo": "\u041e \u043f\u0440\u043e\u0444\u0438\u043b\u0435", + "TabInfo": "\u0418\u043d\u0444\u043e", "HeaderLinks": "\u0421\u0441\u044b\u043b\u043a\u0438", "HeaderSystemPaths": "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438", "LinkCommunity": "\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e", @@ -778,7 +778,7 @@ "TabContainers": "\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b", "TabCodecs": "\u041a\u043e\u0434\u0435\u043a\u0438", "TabResponses": "\u041e\u0442\u043a\u043b\u0438\u043a\u0438", - "HeaderProfileInformation": "\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u0435", + "HeaderProfileInformation": "\u041e \u043f\u0440\u043e\u0444\u0438\u043b\u0435", "LabelEmbedAlbumArtDidl": "\u0412\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u0430\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0435 \u043e\u0431\u043b\u043e\u0436\u043a\u0438 \u0432 DIDL", "LabelEmbedAlbumArtDidlHelp": "\u0414\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0430\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0445 \u043e\u0431\u043b\u043e\u0436\u0435\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u043f\u0435\u0442\u044c \u043d\u0435\u0443\u0434\u0430\u0447\u0443 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.", "LabelAlbumArtPN": "PN \u0430\u043b\u044c\u0431\u043e\u043c\u043d\u043e\u0439 \u043e\u0431\u043b\u043e\u0436\u043a\u0438:", @@ -1228,6 +1228,7 @@ "OptionNoThemeVideo": "\u0411\u0435\u0437 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e", "LabelOneTimeDonationAmount": "\u0421\u0443\u043c\u043c\u0430 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f:", "ButtonDonate": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c", + "ButtonPurchase": "Purchase", "OptionActor": "\u0410\u043a\u0442\u0451\u0440", "OptionComposer": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440", "OptionDirector": "\u0420\u0435\u0436\u0438\u0441\u0441\u0451\u0440", @@ -1247,7 +1248,6 @@ "HeaderDeveloperInfo": "\u041e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u0445", "HeaderRevisionHistory": "\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439", "ButtonViewWebsite": "\u0421\u043c. \u0432\u0435\u0431\u0441\u0430\u0439\u0442", - "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.", "HeaderXmlSettings": "XML-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", "HeaderXmlDocumentAttributes": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", "HeaderXmlDocumentAttribute": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", @@ -1409,13 +1409,6 @@ "OptionEnableFullSpeedConversionHelp": "\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.", "HeaderPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "HeaderSelectDate": "\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u0442\u044b", - "HeaderWelcomeExclamation": "\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b", - "HeaderMyPreferences": "\u041c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", - "ButtonMyPreferencesWelcomeYes": "\u0414\u0430, \u044f \u0445\u043e\u0447\u0443 \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0439\u0447\u0430\u0441...", - "ButtonMyPreferencesWelcomeNo": "\u041d\u0435\u0442, \u0441\u043f\u0430\u0441\u0438\u0431\u043e, \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u043f\u043e\u0437\u0436\u0435...", - "MyPreferencesWelcomeMessage1": "\u0412\u0430\u0448\u0430 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u043c \u043f\u0440\u0438\u044f\u0442\u0435\u043d. \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0438 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u0412\u0430\u0448\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c Emby.", - "MyPreferencesWelcomeMessage2": "\u0422\u0435\u043f\u0435\u0440\u044c, \u0432\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438?", - "ToAccessPreferencesHelp": "\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u041c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.", "HeaderViewStyles": "\u0421\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a", "LabelSelectViewStyles": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f:", "LabelSelectViewStylesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435, \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0416\u0430\u043d\u0440\u044b \u0438 \u0442.\u0434. \u041f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u043f\u0430\u043f\u043a\u0430\u043c\u0438.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json b/MediaBrowser.Server.Implementations/Localization/Server/sl-SI.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/Server/en_US.json rename to MediaBrowser.Server.Implementations/Localization/Server/sl-SI.json index 5f3ca945fa..83f5dd0723 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sl-SI.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sv.json b/MediaBrowser.Server.Implementations/Localization/Server/sv.json index ade2cc34cb..204d29fdb1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sv.json @@ -1228,6 +1228,7 @@ "OptionNoThemeVideo": "Temavideo saknas", "LabelOneTimeDonationAmount": "Bidragsbelopp:", "ButtonDonate": "Donera", + "ButtonPurchase": "Purchase", "OptionActor": "Sk\u00e5despelare", "OptionComposer": "Komposit\u00f6r", "OptionDirector": "Regiss\u00f6r", @@ -1247,7 +1248,6 @@ "HeaderDeveloperInfo": "Information f\u00f6r utvecklare", "HeaderRevisionHistory": "Revisionshistorik", "ButtonViewWebsite": "G\u00e5 till hemsidan", - "LabelRecurringDonationCanBeCancelledHelp": "St\u00e5ende donationer kan avbrytas n\u00e4r som helst via ditt PayPal-konto.", "HeaderXmlSettings": "XML-inst\u00e4llningar", "HeaderXmlDocumentAttributes": "XML-dokumentattribut", "HeaderXmlDocumentAttribute": "XML-dokumentattribut", @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/tr.json b/MediaBrowser.Server.Implementations/Localization/Server/tr.json index fd82e18f94..1fe855c75b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/uk.json b/MediaBrowser.Server.Implementations/Localization/Server/uk.json index 26e82caadb..e2f56eef17 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/uk.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/vi.json b/MediaBrowser.Server.Implementations/Localization/Server/vi.json index ef345e1af0..6ade2beb10 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/vi.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/Server/zh-CN.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json rename to MediaBrowser.Server.Implementations/Localization/Server/zh-CN.json index 821bc8fcb5..1f19abe5ee 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh-CN.json @@ -1228,6 +1228,7 @@ "OptionNoThemeVideo": "\u65e0\u4e3b\u9898\u89c6\u9891", "LabelOneTimeDonationAmount": "\u6350\u6b3e\u91d1\u989d\uff1a", "ButtonDonate": "\u6350\u8d60", + "ButtonPurchase": "Purchase", "OptionActor": "\u6f14\u5458", "OptionComposer": "\u4f5c\u66f2\u5bb6", "OptionDirector": "\u5bfc\u6f14", @@ -1247,7 +1248,6 @@ "HeaderDeveloperInfo": "\u5f00\u53d1\u8005\u4fe1\u606f", "HeaderRevisionHistory": "\u4fee\u8ba2\u5386\u53f2", "ButtonViewWebsite": "\u6d4f\u89c8\u7f51\u7ad9", - "LabelRecurringDonationCanBeCancelledHelp": "\u5728\u60a8\u7684PayPal\u8d26\u6237\u5185\u4efb\u4f55\u65f6\u5019\u90fd\u53ef\u4ee5\u53d6\u6d88\u7ecf\u5e38\u6027\u6350\u8d60\u3002", "HeaderXmlSettings": "XML\u8bbe\u7f6e", "HeaderXmlDocumentAttributes": "XML\u6587\u6863\u5c5e\u6027", "HeaderXmlDocumentAttribute": "XML\u6587\u6863\u5c5e\u6027", @@ -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.", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/Server/zh-TW.json similarity index 99% rename from MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json rename to MediaBrowser.Server.Implementations/Localization/Server/zh-TW.json index 8b0547c698..d311249a20 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh-TW.json @@ -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.", diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index dd16c6f11c..1f5b4a2bfa 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -360,28 +360,18 @@ - - - - - - - - - - @@ -389,7 +379,6 @@ - @@ -408,24 +397,36 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 4d1db15f52..868c667f64 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -122,13 +122,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { var endingXml = xml.Substring(index); - var imdbId = endingXml.Split('/') - .FirstOrDefault(i => i.StartsWith("tt", StringComparison.OrdinalIgnoreCase)); - - if (!string.IsNullOrWhiteSpace(imdbId)) - { - item.SetProviderId(MetadataProviders.Imdb, imdbId); - } + ParseProviderLinks(item, endingXml); // If the file is just an imdb url, don't go any further if (index == 0) @@ -142,13 +136,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { // If the file is just an Imdb url, handle that - var imdbId = xml.Split('/') - .FirstOrDefault(i => i.StartsWith("tt", StringComparison.OrdinalIgnoreCase)); - - if (!string.IsNullOrWhiteSpace(imdbId)) - { - item.SetProviderId(MetadataProviders.Imdb, imdbId); - } + ParseProviderLinks(item, xml); return; } @@ -181,6 +169,20 @@ namespace MediaBrowser.XbmcMetadata.Parsers } } + private void ParseProviderLinks(T item, string xml) + { + var imdbId = xml.Split('/') + .FirstOrDefault(i => i.StartsWith("tt", StringComparison.OrdinalIgnoreCase)); + + if (!string.IsNullOrWhiteSpace(imdbId)) + { + item.SetProviderId(MetadataProviders.Imdb, imdbId); + } + + // TODO: Support Tmdb + // http://www.themoviedb.org/movie/36557 + } + protected virtual void FetchDataFromXmlNode(XmlReader reader, T item, List userDataList) { var userDataUserId = _config.GetNfoConfiguration().UserId; diff --git a/SharedVersion.cs b/SharedVersion.cs index 18a72f44e8..8e67ede83c 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; [assembly: AssemblyVersion("3.0.*")] -//[assembly: AssemblyVersion("3.0.5607.2")] +//[assembly: AssemblyVersion("3.0.5621.0")] From c7171177b93a846425d5344c3707fd0b90cad9e9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 22 May 2015 15:16:14 -0400 Subject: [PATCH 05/18] lazy load scripts --- MediaBrowser.Api/Images/ImageService.cs | 2 ++ .../Probing/ProbeResultNormalizer.cs | 1 + .../HttpServer/ResponseFilter.cs | 29 +++++++++++++------ .../Api/PackageCreator.cs | 5 ---- .../MediaBrowser.WebDashboard.csproj | 3 ++ 5 files changed, 26 insertions(+), 14 deletions(-) diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index 80079adf4a..8c6cc0a18e 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -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, diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs index 0117f41291..6ca489f6d9 100644 --- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs +++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs @@ -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"))); diff --git a/MediaBrowser.Server.Implementations/HttpServer/ResponseFilter.cs b/MediaBrowser.Server.Implementations/HttpServer/ResponseFilter.cs index 23ecde1910..c47332dbee 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/ResponseFilter.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/ResponseFilter.cs @@ -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); } /// diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index a414e41313..13234888c3 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -590,12 +590,7 @@ namespace MediaBrowser.WebDashboard.Api "kids.js", "librarypathmapping.js", "librarysettings.js", - "livetvchannel.js", - "livetvguide.js", - "livetvnewrecording.js", - "livetvprogram.js", "livetvrecording.js", - "livetvrecordinglist.js", "livetvtimer.js", "livetvseriestimer.js", "livetvsettings.js", diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index b7ecd58a50..acac624714 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -150,6 +150,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest From 25e325481db84629fa5b42a4bf8b1cf6f1761057 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 22 May 2015 17:21:34 -0400 Subject: [PATCH 06/18] 3.0.5621.0 --- SharedVersion.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SharedVersion.cs b/SharedVersion.cs index 8e67ede83c..5da02ac703 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.0.*")] -//[assembly: AssemblyVersion("3.0.5621.0")] +//[assembly: AssemblyVersion("3.0.*")] +[assembly: AssemblyVersion("3.0.5621.0")] From d0c9273d679cfec73c10e6f863c5cf9012a3aa2f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 23 May 2015 16:44:15 -0400 Subject: [PATCH 07/18] install service with Emby name --- .../Configuration/ServerConfiguration.cs | 14 ++++++++--- .../Music/FanArtAlbumProvider.cs | 2 +- .../FFMpeg/FFMpegDownloadInfo.cs | 12 +++++----- MediaBrowser.ServerApplication/App.config | 2 +- .../BackgroundService.cs | 24 ++++++++++++++++--- .../BackgroundServiceInstaller.cs | 2 +- MediaBrowser.ServerApplication/MainStartup.cs | 7 +++--- .../Native/Autorun.cs | 19 +++++++++++++-- 8 files changed, 62 insertions(+), 20 deletions(-) diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 2833e71677..a0a7fc90d5 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -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 } } }, diff --git a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs index 734ee74b6e..0676d93d16 100644 --- a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs @@ -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 { diff --git a/MediaBrowser.Server.Startup.Common/FFMpeg/FFMpegDownloadInfo.cs b/MediaBrowser.Server.Startup.Common/FFMpeg/FFMpegDownloadInfo.cs index 4d2ed067be..8a7d10bd74 100644 --- a/MediaBrowser.Server.Startup.Common/FFMpeg/FFMpegDownloadInfo.cs +++ b/MediaBrowser.Server.Startup.Common/FFMpeg/FFMpegDownloadInfo.cs @@ -84,13 +84,13 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg return new[] { "http://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20150331-git-5cba529-win64-static.7z", - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/windows/ffmpeg-20150331-git-5cba529-win64-static.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/windows/ffmpeg-20150331-git-5cba529-win64-static.7z" }; case Architecture.X86: return new[] { "http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20150331-git-5cba529-win32-static.7z", - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/windows/ffmpeg-20150331-git-5cba529-win32-static.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/windows/ffmpeg-20150331-git-5cba529-win32-static.7z" }; } break; @@ -102,12 +102,12 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg case Architecture.X86_X64: return new[] { - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/osx/ffmpeg-x64-2.5.3.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x64-2.5.3.7z" }; case Architecture.X86: return new[] { - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/osx/ffmpeg-x86-2.5.3.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x86-2.5.3.7z" }; } break; @@ -119,12 +119,12 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg case Architecture.X86_X64: return new[] { - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/linux/ffmpeg-2.6.1-64bit-static.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-2.6.1-64bit-static.7z" }; case Architecture.X86: return new[] { - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/linux/ffmpeg-2.6.1-32bit-static.7z" + "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-2.6.1-32bit-static.7z" }; } break; diff --git a/MediaBrowser.ServerApplication/App.config b/MediaBrowser.ServerApplication/App.config index 94dd9ee733..14ce35a965 100644 --- a/MediaBrowser.ServerApplication/App.config +++ b/MediaBrowser.ServerApplication/App.config @@ -13,7 +13,7 @@ - + diff --git a/MediaBrowser.ServerApplication/BackgroundService.cs b/MediaBrowser.ServerApplication/BackgroundService.cs index 019a11e1c0..da7537cd70 100644 --- a/MediaBrowser.ServerApplication/BackgroundService.cs +++ b/MediaBrowser.ServerApplication/BackgroundService.cs @@ -1,4 +1,5 @@ using MediaBrowser.Model.Logging; +using System.Linq; using System.ServiceProcess; namespace MediaBrowser.ServerApplication @@ -8,8 +9,25 @@ namespace MediaBrowser.ServerApplication /// public class BackgroundService : ServiceBase { - public static string Name = "MediaBrowser"; - public static string DisplayName = "Media Browser"; + public static string Name = "Emby"; + public static string DisplayName = "Emby Server"; + + public static string GetExistingServiceName() + { + try + { + if (ServiceController.GetServices().Any(s => s.ServiceName == "MediaBrowser")) + { + return "MediaBrowser"; + } + } + catch + { + return "MediaBrowser"; + } + + return Name; + } private readonly ILogger _logger; @@ -24,7 +42,7 @@ namespace MediaBrowser.ServerApplication CanStop = true; - ServiceName = Name; + ServiceName = GetExistingServiceName(); } /// diff --git a/MediaBrowser.ServerApplication/BackgroundServiceInstaller.cs b/MediaBrowser.ServerApplication/BackgroundServiceInstaller.cs index 15cab6c197..08c8a25b9d 100644 --- a/MediaBrowser.ServerApplication/BackgroundServiceInstaller.cs +++ b/MediaBrowser.ServerApplication/BackgroundServiceInstaller.cs @@ -22,7 +22,7 @@ namespace MediaBrowser.ServerApplication DelayedAutoStart = true, - Description = "The windows background service for Media Browser Server.", + Description = "The windows background service for Emby Server.", // Will ensure the network is available ServicesDependedOn = new[] { "LanmanServer", "Tcpip" } diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index 6e8774eea1..f918fc37cc 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -370,7 +370,8 @@ namespace MediaBrowser.ServerApplication private static void RunServiceInstallationIfNeeded(string applicationPath) { - var ctl = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == BackgroundService.Name); + var serviceName = BackgroundService.GetExistingServiceName(); + var ctl = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName == serviceName); if (ctl == null) { @@ -476,7 +477,7 @@ namespace MediaBrowser.ServerApplication // Update is there - execute update try { - var serviceName = _isRunningAsService ? BackgroundService.Name : string.Empty; + var serviceName = _isRunningAsService ? BackgroundService.GetExistingServiceName() : string.Empty; new ApplicationUpdater().UpdateApplication(appPaths, updateArchive, logger, serviceName); // And just let the app exit so it can update @@ -539,7 +540,7 @@ namespace MediaBrowser.ServerApplication private static void ShutdownWindowsService() { _logger.Info("Stopping background service"); - var service = new ServiceController(BackgroundService.Name); + var service = new ServiceController(BackgroundService.GetExistingServiceName()); service.Refresh(); diff --git a/MediaBrowser.ServerApplication/Native/Autorun.cs b/MediaBrowser.ServerApplication/Native/Autorun.cs index 593bb7955c..dd2a775655 100644 --- a/MediaBrowser.ServerApplication/Native/Autorun.cs +++ b/MediaBrowser.ServerApplication/Native/Autorun.cs @@ -18,17 +18,32 @@ namespace MediaBrowser.ServerApplication.Native { var shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu), "Media Browser 3", "Media Browser Server.lnk"); + if (!Directory.Exists(Path.GetDirectoryName(shortcutPath))) + { + shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu), "Emby", "Emby Server.lnk"); + } + var startupPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup); + // Remove lnk from old name + try + { + fileSystem.DeleteFile(Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "Media Browser Server.lnk")); + } + catch + { + + } + if (autorun) { //Copy our shortut into the startup folder for this user - File.Copy(shortcutPath, Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "MBstartup.lnk"), true); + File.Copy(shortcutPath, Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "Emby Server.lnk"), true); } else { //Remove our shortcut from the startup folder for this user - fileSystem.DeleteFile(Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "MBstartup.lnk")); + fileSystem.DeleteFile(Path.Combine(startupPath, Path.GetFileName(shortcutPath) ?? "Emby Server.lnk")); } } } From fb48dd34870d5ef8d1d636d83af5132e26b99449 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 23 May 2015 18:01:13 -0400 Subject: [PATCH 08/18] support mono restarts --- MediaBrowser.Server.Mac/Main.cs | 20 +++++++++++ MediaBrowser.Server.Mac/Native/BaseMonoApp.cs | 6 ++-- MediaBrowser.Server.Mac/Native/NativeApp.cs | 22 ++++++++++++- .../Native/BaseMonoApp.cs | 6 ++-- MediaBrowser.Server.Mono/Native/NativeApp.cs | 20 +++++++++++ MediaBrowser.Server.Mono/Program.cs | 33 ++++++++++++++++++- MediaBrowser.ServerApplication/MainStartup.cs | 4 +-- SharedVersion.cs | 2 +- 8 files changed, 102 insertions(+), 11 deletions(-) diff --git a/MediaBrowser.Server.Mac/Main.cs b/MediaBrowser.Server.Mac/Main.cs index b4184f3b19..cffa62fae7 100644 --- a/MediaBrowser.Server.Mac/Main.cs +++ b/MediaBrowser.Server.Mac/Main.cs @@ -146,6 +146,26 @@ namespace MediaBrowser.Server.Mac MenuBarIcon.Instance.Terminate (); } + public static void Restart() + { + _logger.Info("Disposing app host"); + AppHost.Dispose(); + + _logger.Info("Starting new instance"); + + var currentProcess = Process.GetCurrentProcess(); + + var args = Environment.GetCommandLineArgs() + .Select(NormalizeCommandLineArgument); + + var commandLineArgsString = string.Join(" ", args.ToArray()); + + Process.Start(currentProcess.MainModule.FileName, commandLineArgsString); + + _logger.Info("AppController.Terminate"); + MenuBarIcon.Instance.Terminate(); + } + /// /// Handles the UnhandledException event of the CurrentDomain control. /// diff --git a/MediaBrowser.Server.Mac/Native/BaseMonoApp.cs b/MediaBrowser.Server.Mac/Native/BaseMonoApp.cs index 9821f49ddd..57610dfc2c 100644 --- a/MediaBrowser.Server.Mac/Native/BaseMonoApp.cs +++ b/MediaBrowser.Server.Mac/Native/BaseMonoApp.cs @@ -19,16 +19,16 @@ namespace MediaBrowser.Server.Mac /// /// Restarts this instance. /// - public void Restart() + public virtual void Restart() { - + throw new NotImplementedException(); } /// /// Determines whether this instance [can self restart]. /// /// true if this instance [can self restart]; otherwise, false. - public bool CanSelfRestart + public virtual bool CanSelfRestart { get { diff --git a/MediaBrowser.Server.Mac/Native/NativeApp.cs b/MediaBrowser.Server.Mac/Native/NativeApp.cs index f7c2dd4c95..4515be0517 100644 --- a/MediaBrowser.Server.Mac/Native/NativeApp.cs +++ b/MediaBrowser.Server.Mac/Native/NativeApp.cs @@ -13,7 +13,27 @@ namespace MediaBrowser.Server.Mac public override void Shutdown() { MainClass.Shutdown(); - } + } + + /// + /// Determines whether this instance [can self restart]. + /// + /// true if this instance can self restart; otherwise, false. + public override bool CanSelfRestart + { + get + { + return true; + } + } + + /// + /// Restarts this instance. + /// + public override void Restart() + { + MainClass.Restart(); + } } } diff --git a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs index aea6d73679..ba96ca737b 100644 --- a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs +++ b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs @@ -21,16 +21,16 @@ namespace MediaBrowser.Server.Mono.Native /// /// Restarts this instance. /// - public void Restart() + public virtual void Restart() { - + throw new NotImplementedException(); } /// /// Determines whether this instance [can self restart]. /// /// true if this instance [can self restart]; otherwise, false. - public bool CanSelfRestart + public virtual bool CanSelfRestart { get { diff --git a/MediaBrowser.Server.Mono/Native/NativeApp.cs b/MediaBrowser.Server.Mono/Native/NativeApp.cs index d92b86157a..8c954ffcc5 100644 --- a/MediaBrowser.Server.Mono/Native/NativeApp.cs +++ b/MediaBrowser.Server.Mono/Native/NativeApp.cs @@ -13,5 +13,25 @@ namespace MediaBrowser.Server.Mono.Native { MainClass.Shutdown(); } + + /// + /// Determines whether this instance [can self restart]. + /// + /// true if this instance can self restart; otherwise, false. + public override bool CanSelfRestart + { + get + { + return true; + } + } + + /// + /// Restarts this instance. + /// + public override void Restart() + { + MainClass.Restart(); + } } } diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index 10a6c6fb91..7cd80f5c97 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -1,4 +1,3 @@ -using System.IO; using MediaBrowser.Common.Implementations.IO; using MediaBrowser.Common.Implementations.Logging; using MediaBrowser.Model.Logging; @@ -8,6 +7,8 @@ using MediaBrowser.Server.Startup.Common; using Microsoft.Win32; using System; using System.Diagnostics; +using System.IO; +using System.Linq; using System.Net; using System.Net.Security; using System.Reflection; @@ -136,6 +137,36 @@ namespace MediaBrowser.Server.Mono { ApplicationTaskCompletionSource.SetResult (true); } + + public static void Restart() + { + _logger.Info("Disposing app host"); + _appHost.Dispose(); + + _logger.Info("Starting new instance"); + + var currentProcess = Process.GetCurrentProcess(); + + var args = Environment.GetCommandLineArgs() + .Select(NormalizeCommandLineArgument); + + var commandLineArgsString = string.Join(" ", args.ToArray()); + + Process.Start(currentProcess.MainModule.FileName, commandLineArgsString); + + _logger.Info("Calling Environment.Exit"); + Environment.Exit(0); + } + + private static string NormalizeCommandLineArgument(string arg) + { + if (arg.IndexOf(" ", StringComparison.OrdinalIgnoreCase) == -1) + { + return arg; + } + + return "\"" + arg + "\""; + } } class NoCheckCertificatePolicy : ICertificatePolicy diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index f918fc37cc..968172bc3a 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -516,11 +516,11 @@ namespace MediaBrowser.ServerApplication _logger.Info("Hiding server notify icon"); _serverNotifyIcon.Visible = false; - _logger.Info("Executing windows forms restart"); + _logger.Info("Starting new instance"); //Application.Restart(); Process.Start(_appHost.ServerConfigurationManager.ApplicationPaths.ApplicationPath); - _logger.Info("Calling Application.Exit"); + _logger.Info("Calling Environment.Exit"); Environment.Exit(0); } } diff --git a/SharedVersion.cs b/SharedVersion.cs index 5da02ac703..653297d702 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; //[assembly: AssemblyVersion("3.0.*")] -[assembly: AssemblyVersion("3.0.5621.0")] +[assembly: AssemblyVersion("3.0.5621.1")] From 6315f9b863c7a119eeb2cf1828ab92d23e579a27 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 23 May 2015 18:08:50 -0400 Subject: [PATCH 09/18] add mac method --- MediaBrowser.Server.Mac/Main.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/MediaBrowser.Server.Mac/Main.cs b/MediaBrowser.Server.Mac/Main.cs index cffa62fae7..1dc9758419 100644 --- a/MediaBrowser.Server.Mac/Main.cs +++ b/MediaBrowser.Server.Mac/Main.cs @@ -166,6 +166,16 @@ namespace MediaBrowser.Server.Mac MenuBarIcon.Instance.Terminate(); } + private static string NormalizeCommandLineArgument(string arg) + { + if (arg.IndexOf(" ", StringComparison.OrdinalIgnoreCase) == -1) + { + return arg; + } + + return "\"" + arg + "\""; + } + /// /// Handles the UnhandledException event of the CurrentDomain control. /// From 83b6a30d961fb43697b9101d093227c2e3fbf68f Mon Sep 17 00:00:00 2001 From: Luke Date: Sat, 23 May 2015 18:27:05 -0400 Subject: [PATCH 10/18] support server restart --- .../Emby.Server.Mac.csproj | 33 ++++++++++++++----- MediaBrowser.Server.Mac/Main.cs | 9 +++-- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj index 03c69901ea..b0db9fb984 100644 --- a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj +++ b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj @@ -259,9 +259,6 @@ - - Resources\dashboard-ui\.DS_Store - Resources\dashboard-ui\about.html @@ -301,9 +298,6 @@ Resources\dashboard-ui\connectlogin.html - - Resources\dashboard-ui\cordovaindex.html - Resources\dashboard-ui\dashboard.html @@ -658,9 +652,6 @@ Resources\dashboard-ui\wizarduser.html - - Resources\dashboard-ui\css\.DS_Store - Resources\dashboard-ui\css\card.css @@ -1306,6 +1297,9 @@ Resources\dashboard-ui\scripts\livetvchannels.js + + Resources\dashboard-ui\scripts\livetvcomponents.js + Resources\dashboard-ui\scripts\livetvguide.js @@ -1471,9 +1465,15 @@ Resources\dashboard-ui\scripts\pluginspage.js + + Resources\dashboard-ui\scripts\queryfilters.js + Resources\dashboard-ui\scripts\ratingdialog.js + + Resources\dashboard-ui\scripts\registrationservices.js + Resources\dashboard-ui\scripts\remotecontrol.js @@ -1666,6 +1666,21 @@ Resources\dashboard-ui\thirdparty\apiclient\alt\events.js + + Resources\dashboard-ui\thirdparty\cordova\chromecast.js + + + Resources\dashboard-ui\thirdparty\cordova\connectsdk.js + + + Resources\dashboard-ui\thirdparty\cordova\generaldevice.js + + + Resources\dashboard-ui\thirdparty\cordova\imagestore.js + + + Resources\dashboard-ui\thirdparty\cordova\registrationservices.js + Resources\dashboard-ui\thirdparty\cordova\remotecontrols.js diff --git a/MediaBrowser.Server.Mac/Main.cs b/MediaBrowser.Server.Mac/Main.cs index 1dc9758419..0802b97b93 100644 --- a/MediaBrowser.Server.Mac/Main.cs +++ b/MediaBrowser.Server.Mac/Main.cs @@ -153,14 +153,17 @@ namespace MediaBrowser.Server.Mac _logger.Info("Starting new instance"); - var currentProcess = Process.GetCurrentProcess(); - var args = Environment.GetCommandLineArgs() + .Skip(1) .Select(NormalizeCommandLineArgument); var commandLineArgsString = string.Join(" ", args.ToArray()); + var module = Environment.GetCommandLineArgs().First(); - Process.Start(currentProcess.MainModule.FileName, commandLineArgsString); + _logger.Info ("Executable: {0}", module); + _logger.Info ("Arguments: {0}", commandLineArgsString); + + Process.Start(module, commandLineArgsString); _logger.Info("AppController.Terminate"); MenuBarIcon.Instance.Terminate(); From 609d1f19ccc251b9863e22aba171aa559739f473 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 23 May 2015 18:28:26 -0400 Subject: [PATCH 11/18] update mono restart --- MediaBrowser.Server.Mono/Program.cs | 214 ++++++++++++++-------------- 1 file changed, 109 insertions(+), 105 deletions(-) diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index 7cd80f5c97..a9d5104262 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -17,126 +17,127 @@ using System.Threading.Tasks; namespace MediaBrowser.Server.Mono { - public class MainClass - { - private static ApplicationHost _appHost; + public class MainClass + { + private static ApplicationHost _appHost; - private static ILogger _logger; + private static ILogger _logger; - public static void Main (string[] args) - { + public static void Main(string[] args) + { var applicationPath = Assembly.GetEntryAssembly().Location; - - var options = new StartupOptions(); - // Allow this to be specified on the command line. - var customProgramDataPath = options.GetOption("-programdata"); + var options = new StartupOptions(); - var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath); + // Allow this to be specified on the command line. + var customProgramDataPath = options.GetOption("-programdata"); - var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); - logManager.ReloadLogger(LogSeverity.Info); - logManager.AddConsoleOutput(); + var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath); - var logger = _logger = logManager.GetLogger("Main"); + var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); + logManager.ReloadLogger(LogSeverity.Info); + logManager.AddConsoleOutput(); + + var logger = _logger = logManager.GetLogger("Main"); ApplicationHost.LogEnvironmentInfo(logger, appPaths, true); - AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; - try - { - RunApplication(appPaths, logManager, options); - } - finally - { - logger.Info("Shutting down"); + try + { + RunApplication(appPaths, logManager, options); + } + finally + { + logger.Info("Shutting down"); - _appHost.Dispose(); - } - } + _appHost.Dispose(); + } + } - private static ServerApplicationPaths CreateApplicationPaths(string applicationPath, string programDataPath) - { - if (string.IsNullOrEmpty(programDataPath)) - { - programDataPath = ApplicationPathHelper.GetProgramDataPath(applicationPath); - } - - return new ServerApplicationPaths(programDataPath, applicationPath, Path.GetDirectoryName(applicationPath)); - } + private static ServerApplicationPaths CreateApplicationPaths(string applicationPath, string programDataPath) + { + if (string.IsNullOrEmpty(programDataPath)) + { + programDataPath = ApplicationPathHelper.GetProgramDataPath(applicationPath); + } - private static readonly TaskCompletionSource ApplicationTaskCompletionSource = new TaskCompletionSource(); + return new ServerApplicationPaths(programDataPath, applicationPath, Path.GetDirectoryName(applicationPath)); + } - private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, StartupOptions options) - { - SystemEvents.SessionEnding += SystemEvents_SessionEnding; + private static readonly TaskCompletionSource ApplicationTaskCompletionSource = new TaskCompletionSource(); - // Allow all https requests - ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); + private static void RunApplication(ServerApplicationPaths appPaths, ILogManager logManager, StartupOptions options) + { + SystemEvents.SessionEnding += SystemEvents_SessionEnding; - var fileSystem = new CommonFileSystem(logManager.GetLogger("FileSystem"), false, true); + // Allow all https requests + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); - var nativeApp = new NativeApp(); + var fileSystem = new CommonFileSystem(logManager.GetLogger("FileSystem"), false, true); + + var nativeApp = new NativeApp(); _appHost = new ApplicationHost(appPaths, logManager, options, fileSystem, "MBServer.Mono", nativeApp); - - if (options.ContainsOption("-v")) { - Console.WriteLine (_appHost.ApplicationVersion.ToString()); - return; - } - Console.WriteLine ("appHost.Init"); + if (options.ContainsOption("-v")) + { + Console.WriteLine(_appHost.ApplicationVersion.ToString()); + return; + } - var initProgress = new Progress(); + Console.WriteLine("appHost.Init"); - var task = _appHost.Init(initProgress); - Task.WaitAll (task); + var initProgress = new Progress(); - Console.WriteLine ("Running startup tasks"); + var task = _appHost.Init(initProgress); + Task.WaitAll(task); - task = _appHost.RunStartupTasks(); - Task.WaitAll (task); + Console.WriteLine("Running startup tasks"); - task = ApplicationTaskCompletionSource.Task; + task = _appHost.RunStartupTasks(); + Task.WaitAll(task); - Task.WaitAll (task); - } + task = ApplicationTaskCompletionSource.Task; - /// - /// Handles the SessionEnding event of the SystemEvents control. - /// - /// The source of the event. - /// The instance containing the event data. - static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) - { - if (e.Reason == SessionEndReasons.SystemShutdown) - { - Shutdown(); - } - } + Task.WaitAll(task); + } - /// - /// Handles the UnhandledException event of the CurrentDomain control. - /// - /// The source of the event. - /// The instance containing the event data. - static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) - { - var exception = (Exception)e.ExceptionObject; + /// + /// Handles the SessionEnding event of the SystemEvents control. + /// + /// The source of the event. + /// The instance containing the event data. + static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) + { + if (e.Reason == SessionEndReasons.SystemShutdown) + { + Shutdown(); + } + } + + /// + /// Handles the UnhandledException event of the CurrentDomain control. + /// + /// The source of the event. + /// The instance containing the event data. + static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + var exception = (Exception)e.ExceptionObject; new UnhandledExceptionWriter(_appHost.ServerConfigurationManager.ApplicationPaths, _logger, _appHost.LogManager).Log(exception); - if (!Debugger.IsAttached) - { - Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(exception)); - } - } + if (!Debugger.IsAttached) + { + Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(exception)); + } + } - public static void Shutdown() - { - ApplicationTaskCompletionSource.SetResult (true); - } + public static void Shutdown() + { + ApplicationTaskCompletionSource.SetResult(true); + } public static void Restart() { @@ -145,35 +146,38 @@ namespace MediaBrowser.Server.Mono _logger.Info("Starting new instance"); - var currentProcess = Process.GetCurrentProcess(); - var args = Environment.GetCommandLineArgs() - .Select(NormalizeCommandLineArgument); + .Skip(1) + .Select(NormalizeCommandLineArgument); var commandLineArgsString = string.Join(" ", args.ToArray()); + var module = Environment.GetCommandLineArgs().First(); - Process.Start(currentProcess.MainModule.FileName, commandLineArgsString); + _logger.Info("Executable: {0}", module); + _logger.Info("Arguments: {0}", commandLineArgsString); + + Process.Start(module, commandLineArgsString); _logger.Info("Calling Environment.Exit"); Environment.Exit(0); } - private static string NormalizeCommandLineArgument(string arg) - { - if (arg.IndexOf(" ", StringComparison.OrdinalIgnoreCase) == -1) - { + private static string NormalizeCommandLineArgument(string arg) + { + if (arg.IndexOf(" ", StringComparison.OrdinalIgnoreCase) == -1) + { return arg; - } + } return "\"" + arg + "\""; - } - } + } + } - class NoCheckCertificatePolicy : ICertificatePolicy - { - public bool CheckValidationResult (ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) - { - return true; - } - } + class NoCheckCertificatePolicy : ICertificatePolicy + { + public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) + { + return true; + } + } } From f26a639a36aed431a9090fb833358871f2192e74 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 24 May 2015 14:33:28 -0400 Subject: [PATCH 12/18] fix audio-only hls --- .../Playback/BaseStreamingService.cs | 26 -- .../Playback/Hls/BaseHlsService.cs | 4 +- .../Playback/Hls/DynamicHlsService.cs | 264 ++++++++++++------ .../Playback/Hls/HlsSegmentService.cs | 35 ++- .../Playback/Hls/VideoHlsService.cs | 21 +- .../Playback/Progressive/VideoService.cs | 2 +- MediaBrowser.Api/Playback/StreamState.cs | 7 +- MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs | 2 +- MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml | 2 +- MediaBrowser.Model/Dlna/StreamInfo.cs | 5 + .../IO/LibraryMonitor.cs | 6 +- SharedVersion.cs | 4 +- 12 files changed, 225 insertions(+), 153 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index a36b65f744..0b8f21129d 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -148,7 +148,6 @@ namespace MediaBrowser.Api.Playback } protected readonly CultureInfo UsCulture = new CultureInfo("en-US"); - private readonly long _slowSeekTicks = TimeSpan.FromSeconds(0).Ticks; /// /// 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(time)); - } - - return string.Empty; - } - - protected virtual bool EnableSlowSeek - { - get - { - return false; - } - } - /// /// Gets the map args. /// diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index a143da7729..b2ffeca3db 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -134,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; @@ -245,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 diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index a2e327f7d0..6774cc8594 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -30,27 +30,60 @@ namespace MediaBrowser.Api.Playback.Hls /// [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 { } - /// - /// Class GetHlsVideoSegment - /// [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; } + + /// + /// Gets or sets the segment id. + /// + /// The segment id. + 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 Get(GetMasterHlsVideoStream request) + public Task Get(GetMasterHlsVideoPlaylist request) { - return GetAsync(request, "GET"); + return GetMasterPlaylistInternal(request, "GET"); } - public Task Head(GetMasterHlsVideoStream request) + public Task Head(GetMasterHlsVideoPlaylist request) { - return GetAsync(request, "HEAD"); + return GetMasterPlaylistInternal(request, "HEAD"); } - public Task Get(GetMainHlsVideoStream request) + public Task Get(GetMasterHlsAudioPlaylist request) { - return GetPlaylistAsync(request, "main"); + return GetMasterPlaylistInternal(request, "GET"); } - public Task Get(GetDynamicHlsVideoSegment request) + public Task Head(GetMasterHlsAudioPlaylist request) + { + return GetMasterPlaylistInternal(request, "HEAD"); + } + + public Task Get(GetVariantHlsVideoPlaylist request) + { + return GetVariantPlaylistInternal(request, true, "main"); + } + + public Task Get(GetVariantHlsAudioPlaylist request) + { + return GetVariantPlaylistInternal(request, false, "main"); + } + + public Task Get(GetHlsVideoSegment request) { return GetDynamicSegment(request, request.SegmentId); } - private async Task GetDynamicSegment(VideoStreamRequest request, string segmentId) + public Task Get(GetHlsAudioSegment request) + { + return GetDynamicSegment(request, request.SegmentId); + } + + private async Task 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); @@ -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 GetSegmentResult(string playlistPath, @@ -474,7 +527,7 @@ namespace MediaBrowser.Api.Playback.Hls }); } - private async Task GetAsync(GetMasterHlsVideoStream request, string method) + private async Task GetMasterPlaylistInternal(StreamRequest request, string method) { var state = await GetState(request, CancellationToken.None).ConfigureAwait(false); @@ -511,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; @@ -526,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); @@ -596,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; @@ -618,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; @@ -673,7 +733,7 @@ namespace MediaBrowser.Api.Playback.Hls return variation; } - private async Task GetPlaylistAsync(VideoStreamRequest request, string name) + private async Task GetVariantPlaylistInternal(StreamRequest request, bool isOutputVideo, string name) { var state = await GetState(request, CancellationToken.None).ConfigureAwait(false); @@ -697,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; @@ -716,6 +777,28 @@ namespace MediaBrowser.Api.Playback.Hls protected override string GetAudioArguments(StreamState state) { + if (!state.IsOutputVideo) + { + var audioTranscodeParams = new List(); + 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)) @@ -746,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; @@ -758,31 +846,35 @@ 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; } - - var keyFrameArg = string.Format(" -force_key_frames expr:gte(t,n_forced*{0})", - state.SegmentLength.ToString(UsCulture)); - - var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream; - - 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) + else { - args += GetOutputSizeParam(state, codec, false); + var keyFrameArg = string.Format(" -force_key_frames expr:gte(t,n_forced*{0})", + state.SegmentLength.ToString(UsCulture)); + + var hasGraphicalSubs = state.SubtitleStream != null && !state.SubtitleStream.IsTextSubtitleStream; + + 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); + } + + // 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; } @@ -797,7 +889,7 @@ namespace MediaBrowser.Api.Playback.Hls var startNumberParam = isEncoding ? GetStartNumber(state).ToString(UsCulture) : "0"; var toTimeParam = string.Empty; - if (state.RunTimeTicks.HasValue) + if (state.RunTimeTicks.HasValue && state.IsOutputVideo) { var startTime = state.Request.StartTimeTicks ?? 0; var durationSeconds = ApiEntryPoint.Instance.GetEncodingOptions().ThrottleThresholdInSeconds; @@ -812,46 +904,43 @@ namespace MediaBrowser.Api.Playback.Hls } } - 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; - //state.EnableGenericHlsSegmenter = true; + //var outputTsArg = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath)) + "%d" + GetSegmentFileExtension(state); - if (state.EnableGenericHlsSegmenter) - { - var outputTsArg = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath)) + "%d.ts"; + //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} {11} {1}{10} -map_metadata -1 -threads {2} {3} {4} -flags -global_header -sc_threshold 0 {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, - 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} -output_ts_offset " + MediaEncoder.GetTimeParameter(state.Request.StartTimeTicks ?? 0) + " -flags -global_header -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(); } @@ -872,14 +961,6 @@ namespace MediaBrowser.Api.Playback.Hls } } - protected override bool EnableSlowSeek - { - get - { - return true; - } - } - /// /// Gets the segment file extension. /// @@ -887,7 +968,12 @@ namespace MediaBrowser.Api.Playback.Hls /// System.String. protected override string GetSegmentFileExtension(StreamState state) { - return ".ts"; + return GetSegmentFileExtension(state.IsOutputVideo); + } + + protected string GetSegmentFileExtension(bool isOutputVideo) + { + return isOutputVideo ? ".ts" : ".ts"; } } } diff --git a/MediaBrowser.Api/Playback/Hls/HlsSegmentService.cs b/MediaBrowser.Api/Playback/Hls/HlsSegmentService.cs index 5d8c67abe9..b44d7f6606 100644 --- a/MediaBrowser.Api/Playback/Hls/HlsSegmentService.cs +++ b/MediaBrowser.Api/Playback/Hls/HlsSegmentService.cs @@ -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 + /// /// Gets or sets the id. /// @@ -29,12 +31,31 @@ namespace MediaBrowser.Api.Playback.Hls public string SegmentId { get; set; } } + /// + /// Class GetHlsVideoStream + /// + [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; } + } + /// /// Class GetHlsVideoSegment /// [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 /// [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; } /// @@ -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 /// /// The request. /// System.Object. - 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 /// /// The request. /// System.Object. - public object Get(GetHlsAudioSegment request) + public object Get(GetHlsAudioSegmentLegacy request) { // TODO: Deprecate with new iOS app var file = request.SegmentId + Path.GetExtension(Request.PathInfo); diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs index 626df59f25..f21be190fe 100644 --- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs @@ -11,25 +11,6 @@ using System; namespace MediaBrowser.Api.Playback.Hls { - /// - /// Class GetHlsVideoStream - /// - [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 /// /// The request. /// System.Object. - public object Get(GetHlsVideoStream request) + public object Get(GetHlsVideoStreamLegacy request) { return ProcessRequest(request, false); } diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs index 27482c50c6..283f9671fa 100644 --- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs +++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs @@ -15,7 +15,7 @@ using System.IO; namespace MediaBrowser.Api.Playback.Progressive { /// - /// Class GetAudioStream + /// Class GetVideoStream /// [Route("/Videos/{Id}/stream.ts", "GET")] [Route("/Videos/{Id}/stream.webm", "GET")] diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs index 2d1e896db0..02b7720a4a 100644 --- a/MediaBrowser.Api/Playback/StreamState.cs +++ b/MediaBrowser.Api/Playback/StreamState.cs @@ -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 PlayableStreamFileNames { get; set; } public int SegmentLength = 3; - public bool EnableGenericHlsSegmenter = false; public int HlsListSize { get diff --git a/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs b/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs index a26c439113..63bb0b52a2 100644 --- a/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs +++ b/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs @@ -15,7 +15,7 @@ namespace MediaBrowser.Dlna.Profiles Identification = new DeviceIdentification { - ModelName = "WD TV HD Live", + ModelName = "WD TV", Headers = new [] { diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml index 684e61c42f..4f8000c3bd 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml @@ -2,7 +2,7 @@ WDTV Live - WD TV HD Live + WD TV diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index 645c1c7d02..92eb0372c0 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -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); } diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs index 2d4770fac7..491549d64f 100644 --- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs +++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs @@ -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); diff --git a/SharedVersion.cs b/SharedVersion.cs index 653297d702..2a2ce1e51b 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -//[assembly: AssemblyVersion("3.0.*")] -[assembly: AssemblyVersion("3.0.5621.1")] +[assembly: AssemblyVersion("3.0.*")] +//[assembly: AssemblyVersion("3.0.5621.1")] From 134dc3b68b6adfe49645b9cbeca5fd19a6342266 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 24 May 2015 23:01:44 -0400 Subject: [PATCH 13/18] fix session not found errors --- .../HttpServer/Security/SessionContext.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs b/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs index f40d117c42..a498d32fac 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs @@ -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) From 12d47e1e9431cc9f89b135b185702f7f1b0face2 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 24 May 2015 23:01:57 -0400 Subject: [PATCH 14/18] fix dlna progress reporting for wd tv --- MediaBrowser.Dlna/PlayTo/Device.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/MediaBrowser.Dlna/PlayTo/Device.cs b/MediaBrowser.Dlna/PlayTo/Device.cs index c41aa73a9c..222a52736c 100644 --- a/MediaBrowser.Dlna/PlayTo/Device.cs +++ b/MediaBrowser.Dlna/PlayTo/Device.cs @@ -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(true, null); + // first try to add a root node with a dlna namesapce + try + { + uPnpResponse = XElement.Parse("" + trackString + ""); + uPnpResponse = uPnpResponse.Descendants().First(); + } + catch (Exception ex) + { + _logger.ErrorException("Unable to parse xml {0}", ex, trackString); + return new Tuple(true, null); + } } var e = uPnpResponse.Element(uPnpNamespaces.items); From 5048914445c371ced2f060b9bcd1d43945bcf8c0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 24 May 2015 23:02:09 -0400 Subject: [PATCH 15/18] update hls --- MediaBrowser.Api/Playback/BaseStreamingService.cs | 2 +- MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 0b8f21129d..1b7bcab530 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -1077,7 +1077,7 @@ namespace MediaBrowser.Api.Playback { get { - return true; + return false; } } diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 6774cc8594..72d903a0aa 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -889,7 +889,7 @@ namespace MediaBrowser.Api.Playback.Hls var startNumberParam = isEncoding ? GetStartNumber(state).ToString(UsCulture) : "0"; var toTimeParam = string.Empty; - if (state.RunTimeTicks.HasValue && state.IsOutputVideo) + if (state.RunTimeTicks.HasValue && state.IsOutputVideo && ApiEntryPoint.Instance.GetEncodingOptions().EnableThrottling) { var startTime = state.Request.StartTimeTicks ?? 0; var durationSeconds = ApiEntryPoint.Instance.GetEncodingOptions().ThrottleThresholdInSeconds; From 541d0c2ce174fc587a07ceb88df0d65656ef122a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 25 May 2015 13:32:22 -0400 Subject: [PATCH 16/18] 3.0.5621.2 --- MediaBrowser.Api/ApiEntryPoint.cs | 6 - .../Playback/BaseStreamingService.cs | 9 +- .../Playback/Hls/DynamicHlsService.cs | 13 +- .../Localization/JavaScript/da.json | 1040 ++++++++--------- .../Localization/Server/da.json | 114 +- .../Localization/Server/fr.json | 2 +- .../Localization/Server/kk.json | 2 +- .../Localization/Server/pt-BR.json | 2 +- .../Localization/Server/ru.json | 2 +- .../Localization/Server/server.json | 5 +- .../Api/PackageCreator.cs | 1 - .../MediaBrowser.WebDashboard.csproj | 3 + SharedVersion.cs | 4 +- 13 files changed, 602 insertions(+), 601 deletions(-) diff --git a/MediaBrowser.Api/ApiEntryPoint.cs b/MediaBrowser.Api/ApiEntryPoint.cs index dff60d4831..05ff503e47 100644 --- a/MediaBrowser.Api/ApiEntryPoint.cs +++ b/MediaBrowser.Api/ApiEntryPoint.cs @@ -349,12 +349,6 @@ namespace MediaBrowser.Api if (!string.IsNullOrWhiteSpace(job.PlaySessionId)) { timerDuration = 60000; - - // With newer just in time encoding, we no longer need to be aggressive about killing the stream - if (!job.IsLiveOutput) - { - timerDuration = 180000; - } } } diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 1b7bcab530..31679aad3c 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -1060,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)) @@ -1073,12 +1073,9 @@ namespace MediaBrowser.Api.Playback } } - protected virtual bool EnableThrottling + protected virtual bool EnableThrottling(StreamState state) { - get - { - return false; - } + return true; } private async void StartStreamingLog(TranscodingJob transcodingJob, StreamState state, Stream source, Stream target) diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 72d903a0aa..d2b276ba50 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -889,7 +889,7 @@ namespace MediaBrowser.Api.Playback.Hls var startNumberParam = isEncoding ? GetStartNumber(state).ToString(UsCulture) : "0"; var toTimeParam = string.Empty; - if (state.RunTimeTicks.HasValue && state.IsOutputVideo && ApiEntryPoint.Instance.GetEncodingOptions().EnableThrottling) + if (EnableSplitTranscoding(state)) { var startTime = state.Request.StartTimeTicks ?? 0; var durationSeconds = ApiEntryPoint.Instance.GetEncodingOptions().ThrottleThresholdInSeconds; @@ -945,12 +945,19 @@ namespace MediaBrowser.Api.Playback.Hls ).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; } + + return state.RunTimeTicks.HasValue && state.IsOutputVideo; } protected override bool EnableStreamCopy diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json index bc3acfb244..f2a43c211f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json @@ -36,7 +36,7 @@ "MessageKeyUpdated": "Tak. Din supporter n\u00f8gle er nu opdateret.", "MessageKeyRemoved": "Tak. Din supporter n\u00f8gle er fjernet.", "HeaderSupportTheTeam": "St\u00f8t Emby-holdet", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", + "TextEnjoyBonusFeatures": "F\u00e5 bonus funktioner", "TitleLiveTV": "Live TV", "TitleSync": "Sync", "ButtonDonate": "Don\u00e9r", @@ -95,84 +95,84 @@ "ButtonAddToCollection": "Tilf\u00f8j til samling", "HeaderSelectCertificatePath": "V\u00e6lg certifikatsti", "ConfirmMessageScheduledTaskButton": "Denne operation k\u00f8rer normalt som en planlagt opgave. Den kan ogs\u00e5 k\u00f8res manuelt her. For at konfigurere den planlage opgave, se:", - "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", + "HeaderSupporterBenefit": "Med et supporter medlemskab opn\u00e5r du ekstra fordele s\u00e5 som adgang til sync, premium plugins, internet kanaler samt meget mere. {0}L\u00e6r mere{1}.", "LabelSyncNoTargetsHelp": "Det ser ud til at du for \u00f8jeblikket ikke har nogle enheder ser underst\u00f8tter sync.", "HeaderWelcomeToProjectServerDashboard": "Velkommen til Emby betjeningspanel", "HeaderWelcomeToProjectWebClient": "Velkommen til Emby", "ButtonTakeTheTour": "Vis introduktion", "HeaderWelcomeBack": "Velkommen tilbage!", "TitlePlugins": "Tilf\u00f8jelser", - "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", - "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "ButtonTakeTheTourToSeeWhatsNew": "Tag en rundvisning for at se hvad der er nyt", + "MessageNoSyncJobsFound": "Intet sync job blev fundet. Opret sync jobs ved at benytte Sync knapper som findes gennem web-interfacet.", "HeaderLibraryAccess": "Adgang til biblioteker", "HeaderChannelAccess": "Adgang til kanaler", "HeaderDeviceAccess": "Enhedsadgang", - "HeaderSelectDevices": "Select Devices", - "ButtonCancelItem": "Cancel item", - "ButtonQueueForRetry": "Queue for retry", - "ButtonReenable": "Re-enable", + "HeaderSelectDevices": "V\u00e6lg enheder", + "ButtonCancelItem": "Annuller genstand", + "ButtonQueueForRetry": "S\u00e6t et nyt fors\u00f8g i k\u00f8", + "ButtonReenable": "Genaktiver", "ButtonLearnMore": "L\u00e6r mere", - "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal", - "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", - "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", - "HeaderDeleteTaskTrigger": "Delete Task Trigger", + "SyncJobItemStatusSyncedMarkForRemoval": "Markeret til sletning", + "LabelAbortedByServerShutdown": "(Annulleret grundet server nedlukning)", + "LabelScheduledTaskLastRan": "Sidst k\u00f8rt {0}, og tog {1}.", + "HeaderDeleteTaskTrigger": "Slet Task Trigger", "HeaderTaskTriggers": "Task Triggers", - "MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?", - "MessageNoPluginsInstalled": "You have no plugins installed.", - "LabelVersionInstalled": "{0} installed", - "LabelNumberReviews": "{0} Reviews", - "LabelFree": "Free", - "HeaderPlaybackError": "Playback Error", - "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", - "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", - "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", - "HeaderSelectAudio": "Select Audio", - "HeaderSelectSubtitles": "Select Subtitles", - "ButtonMarkForRemoval": "Remove from device", - "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelDefaultStream": "(Default)", - "LabelForcedStream": "(Forced)", - "LabelDefaultForcedStream": "(Default\/Forced)", - "LabelUnknownLanguage": "Unknown language", - "MessageConfirmSyncJobItemCancellation": "Are you sure you wish to cancel this item?", + "MessageDeleteTaskTrigger": "Er du sikker p\u00e5 du \u00f8nsker at slette denne task trigger?", + "MessageNoPluginsInstalled": "Du har ingen plugins installeret.", + "LabelVersionInstalled": "{0} installeret", + "LabelNumberReviews": "{0} Anmeldelser", + "LabelFree": "Gratis", + "HeaderPlaybackError": "Fejl i afspilning", + "MessagePlaybackErrorNotAllowed": "Du er p\u00e5 nuv\u00e6rende tidspunkt ikke autoriseret til at afspille dette indhold. Kontakt venligst din systemadministrator for flere detaljer.", + "MessagePlaybackErrorNoCompatibleStream": "Ingen kompatible streams er tilg\u00e6ngelige p\u00e5 nuv\u00e6rende tidspunkt. Pr\u00f8v igen senere eller kontakt din systemadministrator for flere detaljer.", + "MessagePlaybackErrorRateLimitExceeded": "Din afspilningskvote er blevet overskredet. Kontakt venligst din systemadministrator for flere detaljer.", + "MessagePlaybackErrorPlaceHolder": "Det valgte indhold kan ikke afspilles fra denne enhed.", + "HeaderSelectAudio": "V\u00e6lg lydspor", + "HeaderSelectSubtitles": "V\u00e6lg undertekster", + "ButtonMarkForRemoval": "Fjern fra enhed", + "ButtonUnmarkForRemoval": "Annuller fjernelse fra enhed", + "LabelDefaultStream": "(Standard)", + "LabelForcedStream": "(Tvungen)", + "LabelDefaultForcedStream": "(Standard\/Tvungen)", + "LabelUnknownLanguage": "Ukendt sprog", + "MessageConfirmSyncJobItemCancellation": "Er du sikker p\u00e5 du \u00f8nsker at annullere denne genstand?", "ButtonMute": "Lyd fra", - "ButtonUnmute": "Unmute", + "ButtonUnmute": "Sl\u00e5 lyd til", "ButtonStop": "Stop", "ButtonNextTrack": "N\u00e6ste spor", "ButtonPause": "Pause", "ButtonPlay": "Afspil", "ButtonEdit": "Rediger", - "ButtonQueue": "Queue", + "ButtonQueue": "K\u00f8", "ButtonPlayTrailer": "Afspil trailer", - "ButtonPlaylist": "Playlist", + "ButtonPlaylist": "Afspilningsliste", "ButtonPreviousTrack": "Forrige spor", - "LabelEnabled": "Enabled", - "LabelDisabled": "Disabled", - "ButtonMoreInformation": "More Information", - "LabelNoUnreadNotifications": "No unread notifications.", - "ButtonViewNotifications": "View notifications", - "ButtonMarkTheseRead": "Mark these read", + "LabelEnabled": "Sl\u00e5et til", + "LabelDisabled": "Sl\u00e5et fra", + "ButtonMoreInformation": "Mere information", + "LabelNoUnreadNotifications": "Ingen ul\u00e6ste notifikationer", + "ButtonViewNotifications": "Se notifikationer", + "ButtonMarkTheseRead": "Marker disse som l\u00e6st", "ButtonClose": "Luk", - "LabelAllPlaysSentToPlayer": "All plays will be sent to the selected player.", - "MessageInvalidUser": "Invalid username or password. Please try again.", - "HeaderLoginFailure": "Login Failure", + "LabelAllPlaysSentToPlayer": "Alle afspilninger vil blive sendt til den valgte afspiller.", + "MessageInvalidUser": "Ukendt brugernavn eller adgangskode. Pr\u00f8v igen.", + "HeaderLoginFailure": "Login fejl", "HeaderAllRecordings": "Alle optagelser", - "RecommendationBecauseYouLike": "Because you like {0}", - "RecommendationBecauseYouWatched": "Because you watched {0}", - "RecommendationDirectedBy": "Directed by {0}", - "RecommendationStarring": "Starring {0}", - "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", - "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", - "MessageRecordingCancelled": "Recording cancelled.", - "HeaderConfirmSeriesCancellation": "Confirm Series Cancellation", - "MessageConfirmSeriesCancellation": "Are you sure you wish to cancel this series?", - "MessageSeriesCancelled": "Series cancelled.", - "HeaderConfirmRecordingDeletion": "Confirm Recording Deletion", - "MessageConfirmRecordingDeletion": "Are you sure you wish to delete this recording?", - "MessageRecordingDeleted": "Recording deleted.", - "ButonCancelRecording": "Cancel Recording", - "MessageRecordingSaved": "Recording saved.", + "RecommendationBecauseYouLike": "Fordi du kan lide {0}", + "RecommendationBecauseYouWatched": "Fordi du har set {0}", + "RecommendationDirectedBy": "Instrueret af {0}", + "RecommendationStarring": "Hovedrolleindehavere {0}", + "HeaderConfirmRecordingCancellation": "Bekr\u00e6ft annullering af optagelse", + "MessageConfirmRecordingCancellation": "Er du sikker p\u00e5 du \u00f8nsker at annullere denne optagelse?", + "MessageRecordingCancelled": "Optagelse annulleret.", + "HeaderConfirmSeriesCancellation": "Bekr\u00e6ft annullering af serie", + "MessageConfirmSeriesCancellation": "Er du sikker p\u00e5 du \u00f8nsker at annullere denne serie?", + "MessageSeriesCancelled": "Serie annulleret.", + "HeaderConfirmRecordingDeletion": "Bekr\u00e6ft sletning af optagelse", + "MessageConfirmRecordingDeletion": "Er du sikker p\u00e5 du \u00f8nsker at slette denne optagelse?", + "MessageRecordingDeleted": "Optagelse slettet.", + "ButonCancelRecording": "Annuller optagelse", + "MessageRecordingSaved": "Optagelse gemt.", "OptionSunday": "S\u00f8ndag", "OptionMonday": "Mandag", "OptionTuesday": "Tirsdag", @@ -181,332 +181,332 @@ "OptionFriday": "Fredag", "OptionSaturday": "L\u00f8rdag", "OptionEveryday": "Hver dag", - "OptionWeekend": "Weekends", - "OptionWeekday": "Weekdays", + "OptionWeekend": "Weekender", + "OptionWeekday": "Hverdage", "HeaderConfirmDeletion": "Bekr\u00e6ft sletning", - "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", - "LiveTvUpdateAvailable": "(Update available)", - "LabelVersionUpToDate": "Up to date!", + "MessageConfirmPathSubstitutionDeletion": "Er du sikker p\u00e5 du \u00f8nsker at slette denne stisubstitution?", + "LiveTvUpdateAvailable": "(Opdatering tilg\u00e6ngelig)", + "LabelVersionUpToDate": "Opdateret!", "ButtonResetTuner": "Reset tuner", - "HeaderResetTuner": "Reset Tuner", - "MessageConfirmResetTuner": "Are you sure you wish to reset this tuner? Any active players or recordings will be abruptly stopped.", - "ButtonCancelSeries": "Cancel Series", - "HeaderSeriesRecordings": "Series Recordings", - "LabelAnytime": "Any time", - "StatusRecording": "Recording", - "StatusWatching": "Watching", - "StatusRecordingProgram": "Recording {0}", - "StatusWatchingProgram": "Watching {0}", - "HeaderSplitMedia": "Split Media Apart", - "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", - "HeaderError": "Error", - "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", - "MessagePleaseSelectOneItem": "Please select at least one item.", - "MessagePleaseSelectTwoItems": "Please select at least two items.", - "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", - "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "HeaderResetTuner": "Reset tuner", + "MessageConfirmResetTuner": "Er du sikker p\u00e5 du \u00f8nsker at resette denne tuner? Alle aktive afspilninger eller optagelser vil stoppe pludseligt.", + "ButtonCancelSeries": "Annuller serie", + "HeaderSeriesRecordings": "Serieoptagelser", + "LabelAnytime": "Alle tidspunkter", + "StatusRecording": "Optagelse", + "StatusWatching": "Ser", + "StatusRecordingProgram": "Optager {0}", + "StatusWatchingProgram": "Ser {0}", + "HeaderSplitMedia": "Opsplit medie", + "MessageConfirmSplitMedia": "Er du sikker p\u00e5 du \u00f8nsker at opsplitte mediekilderne til separate klilder?", + "HeaderError": "Fejl", + "MessageChromecastConnectionError": "Din Chromecast modtager kan ikke forbinde til din Emby Server. Tjek venligst deres forbindelse og pr\u00f8v igen.", + "MessagePleaseSelectOneItem": "V\u00e6lg venligst mindst \u00e9t element.", + "MessagePleaseSelectTwoItems": "V\u00e6lg venligst mindst to elementer.", + "MessageTheFollowingItemsWillBeGrouped": "F\u00f8lgende elementer vil blive grupperet til et element:", + "MessageConfirmItemGrouping": "Emby apps vil automatisk fors\u00f8ge at afspille den optimale version baseret p\u00e5 enheden og netv\u00e6rksydelse. Er du sikker p\u00e5 du \u00f8nsker at forts\u00e6tte?", "HeaderResume": "Fors\u00e6t", "HeaderMyViews": "Mine visninger", - "HeaderLibraryFolders": "Media Folders", + "HeaderLibraryFolders": "Mediemapper", "HeaderLatestMedia": "Seneste medier", "ButtonMoreItems": "Mere...", "ButtonMore": "Mere", - "HeaderFavoriteMovies": "Favorite Movies", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteGames": "Favorite Games", - "HeaderRatingsDownloads": "Rating \/ Downloads", - "HeaderConfirmProfileDeletion": "Confirm Profile Deletion", - "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", - "HeaderSelectServerCachePath": "Select Server Cache Path", - "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", - "HeaderSelectImagesByNamePath": "Select Images By Name Path", - "HeaderSelectMetadataPath": "Select Metadata Path", - "HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable.", - "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", - "HeaderSelectImagesByNamePathHelp": "Browse or enter the path to your items by name folder. The folder must be writeable.", - "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.", - "HeaderSelectChannelDownloadPath": "Select Channel Download Path", - "HeaderSelectChannelDownloadPathHelp": "Browse or enter the path to use for storing channel cache files. The folder must be writeable.", - "OptionNewCollection": "New...", + "HeaderFavoriteMovies": "Favorit film", + "HeaderFavoriteShows": "Favorit serier", + "HeaderFavoriteEpisodes": "Favorit episoder", + "HeaderFavoriteGames": "Favorit spil", + "HeaderRatingsDownloads": "Bed\u00f8mmelser \/ Downloads", + "HeaderConfirmProfileDeletion": "Bekr\u00e6ft sletning af profil", + "MessageConfirmProfileDeletion": "Er du sikker p\u00e5 du \u00f8nsker at slette denne profil?", + "HeaderSelectServerCachePath": "V\u00e6lg \"Server Cache Path\"", + "HeaderSelectTranscodingPath": "V\u00e6lg \"Transcoding Temporary Path\"", + "HeaderSelectImagesByNamePath": "V\u00e6lg billeder efter navn-sti:", + "HeaderSelectMetadataPath": "V\u00e6lg Metadata Path", + "HeaderSelectServerCachePathHelp": "V\u00e6lg eller indtast stien som skal benyttes til serverens cache filer. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "HeaderSelectTranscodingPathHelp": "V\u00e6lg eller indtast stien som skal benyttes til midlertidige transkodningsfiler. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "HeaderSelectImagesByNamePathHelp": "V\u00e6lg eller indtast stien som f\u00f8rer til mappen med dine elmenter per navn. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "HeaderSelectMetadataPathHelp": "V\u00e6lg eller indtast stien for hvor du \u00f8nsker at gemme din metadata. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "HeaderSelectChannelDownloadPath": "V\u00e6lg sti for hentning af kanalindhold", + "HeaderSelectChannelDownloadPathHelp": "V\u00e6lg eller indtast stien for hvor du \u00f8nsker at gemme kanalindholds cache filer. Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "OptionNewCollection": "Ny...", "ButtonAdd": "Tilf\u00f8j", "ButtonRemove": "Fjern", - "LabelChapterDownloaders": "Chapter downloaders:", - "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderLatestChannelMedia": "Latest Channel Items", - "ButtonOrganizeFile": "Organize File", - "ButtonDeleteFile": "Delete File", - "HeaderOrganizeFile": "Organize File", - "HeaderDeleteFile": "Delete File", - "StatusSkipped": "Skipped", - "StatusFailed": "Failed", - "StatusSuccess": "Success", - "MessageFileWillBeDeleted": "The following file will be deleted:", - "MessageSureYouWishToProceed": "Are you sure you wish to proceed?", - "MessageDuplicatesWillBeDeleted": "In addition the following dupliates will be deleted:", - "MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:", - "MessageDestinationTo": "to:", - "HeaderSelectWatchFolder": "Select Watch Folder", - "HeaderSelectWatchFolderHelp": "Browse or enter the path to your watch folder. The folder must be writeable.", - "OrganizePatternResult": "Result: {0}", - "HeaderRestart": "Restart", - "HeaderShutdown": "Shutdown", - "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", - "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", + "LabelChapterDownloaders": "Kapitel downloadere:", + "LabelChapterDownloadersHelp": "Aktiver og ranger dine fortrukne kapitel downloadere i en prioriteret r\u00e6kkef\u00f8lge. Lavt rangerende downloadere bliver kun benyttet til at udfylde manglende information.", + "HeaderFavoriteAlbums": "Favoritalbums", + "HeaderLatestChannelMedia": "Seneste kanalenheder", + "ButtonOrganizeFile": "Organiser fil", + "ButtonDeleteFile": "Slet fil", + "HeaderOrganizeFile": "Organiser fil", + "HeaderDeleteFile": "Slet fil", + "StatusSkipped": "Oversprunget", + "StatusFailed": "Fejlet", + "StatusSuccess": "Succes", + "MessageFileWillBeDeleted": "Den f\u00f8lgende fil vil blive slettet:", + "MessageSureYouWishToProceed": "\u00d8nsker du at forts\u00e6tte?", + "MessageDuplicatesWillBeDeleted": "Derudover vil f\u00f8lgende duplikater blive slettet:", + "MessageFollowingFileWillBeMovedFrom": "Den f\u00f8lgende fil vil blive flyttet fra:", + "MessageDestinationTo": "til:", + "HeaderSelectWatchFolder": "V\u00e6lg en Watch Folder", + "HeaderSelectWatchFolderHelp": "V\u00e6lg eller indtast stien til din \"watch folder\". Mappen m\u00e5 ikke v\u00e6re skrivebeskyttet.", + "OrganizePatternResult": "Resultat: {0}", + "HeaderRestart": "Genstart", + "HeaderShutdown": "Luk", + "MessageConfirmRestart": "Er du sikker p\u00e5 du \u00f8nsker at genstarte Emby?", + "MessageConfirmShutdown": "Er du sikker p\u00e5 du \u00f8nsker at lukke Emby?", "ButtonUpdateNow": "Opdater nu", - "ValueItemCount": "{0} item", - "ValueItemCountPlural": "{0} items", - "NewVersionOfSomethingAvailable": "A new version of {0} is available!", - "VersionXIsAvailableForDownload": "Version {0} is now available for download.", + "ValueItemCount": "{0} elment", + "ValueItemCountPlural": "{0} elementer", + "NewVersionOfSomethingAvailable": "En ny version af {0} er tilg\u00e6ngelig!", + "VersionXIsAvailableForDownload": "Version {0} kan nu downloades.", "LabelVersionNumber": "Version {0}", - "LabelPlayMethodTranscoding": "Transcoding", - "LabelPlayMethodDirectStream": "Direct Streaming", - "LabelPlayMethodDirectPlay": "Direct Playing", - "LabelAudioCodec": "Audio: {0}", + "LabelPlayMethodTranscoding": "Transkoding", + "LabelPlayMethodDirectStream": "Direkte streaming", + "LabelPlayMethodDirectPlay": "Direkte afspilning", + "LabelAudioCodec": "Lyd: {0}", "LabelVideoCodec": "Video: {0}", - "LabelLocalAccessUrl": "Local access: {0}", - "LabelRemoteAccessUrl": "Remote access: {0}", - "LabelRunningOnPort": "Running on http port {0}.", - "LabelRunningOnPorts": "Running on http port {0}, and https port {1}.", - "HeaderLatestFromChannel": "Latest from {0}", - "LabelUnknownLanaguage": "Unknown language", - "HeaderCurrentSubtitles": "Current Subtitles", - "MessageDownloadQueued": "The download has been queued.", - "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", - "ButtonRemoteControl": "Remote Control", - "HeaderLatestTvRecordings": "Latest Recordings", + "LabelLocalAccessUrl": "Lokal adgang: {0}", + "LabelRemoteAccessUrl": "Fjernadgang: {0}", + "LabelRunningOnPort": "K\u00f8rer p\u00e5 http port {0}.", + "LabelRunningOnPorts": "K\u00f8rer p\u00e5 http port {0}, og https port {1}.", + "HeaderLatestFromChannel": "Seneste fra {0}", + "LabelUnknownLanaguage": "Ukendt sprog", + "HeaderCurrentSubtitles": "Nuv\u00e6rende undertekster", + "MessageDownloadQueued": "Downloadet er sat i k\u00f8.", + "MessageAreYouSureDeleteSubtitles": "Er du sikker p\u00e5 du \u00f8nsker at slette denne undertekstfil?", + "ButtonRemoteControl": "Fjernstyring", + "HeaderLatestTvRecordings": "Seneste optagelser", "ButtonOk": "Ok", "ButtonCancel": "Annuller", "ButtonRefresh": "Opdater", - "LabelCurrentPath": "Current path:", - "HeaderSelectMediaPath": "Select Media Path", - "HeaderSelectPath": "Select Path", - "ButtonNetwork": "Network", - "MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.", + "LabelCurrentPath": "Nuv\u00e6rende sti:", + "HeaderSelectMediaPath": "V\u00e6lg mediesti", + "HeaderSelectPath": "V\u00e6lg sti", + "ButtonNetwork": "Netv\u00e6rk", + "MessageDirectoryPickerInstruction": "Netv\u00e6rksstier kan indtastes manuelt i tilf\u00e6lde af at netv\u00e6rksknappen ikke kan lokalisere dine enheder. Foreksempel, {0} eller {1}.", "HeaderMenu": "Menu", - "ButtonOpen": "Open", - "ButtonOpenInNewTab": "Open in new tab", - "ButtonShuffle": "Shuffle", - "ButtonInstantMix": "Instant mix", - "ButtonResume": "Resume", + "ButtonOpen": "\u00c5ben", + "ButtonOpenInNewTab": "\u00c5ben i ny fane", + "ButtonShuffle": "Bland", + "ButtonInstantMix": "Instant Mix", + "ButtonResume": "Genoptag", "HeaderScenes": "Scener", - "HeaderAudioTracks": "Audio Tracks", - "HeaderLibraries": "Libraries", - "HeaderSubtitles": "Subtitles", - "HeaderVideoQuality": "Video Quality", - "MessageErrorPlayingVideo": "There was an error playing the video.", - "MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.", + "HeaderAudioTracks": "Lydspor", + "HeaderLibraries": "Bibliotekter", + "HeaderSubtitles": "Undertekster", + "HeaderVideoQuality": "Videokvalitet", + "MessageErrorPlayingVideo": "Der opstod en fejl under afspilning af videoen.", + "MessageEnsureOpenTuner": "Sikre dig at en \u00e5ben tuner er tilg\u00e6ngelig.", "ButtonHome": "Hjem", - "ButtonDashboard": "Dashboard", - "ButtonReports": "Reports", + "ButtonDashboard": "Betjeningspanel", + "ButtonReports": "Rapporter", "ButtonMetadataManager": "Metadata Manager", - "HeaderTime": "Time", + "HeaderTime": "Tid", "HeaderName": "Navn", "HeaderAlbum": "Album", - "HeaderAlbumArtist": "Album Artist", + "HeaderAlbumArtist": "Album kunstner", "HeaderArtist": "Artist", - "LabelAddedOnDate": "Added {0}", + "LabelAddedOnDate": "Tilf\u00f8jet {0}", "ButtonStart": "Start", "HeaderChannels": "Kanaler", "HeaderMediaFolders": "Mediemapper", - "HeaderBlockItemsWithNoRating": "Block content with no rating information:", - "OptionBlockOthers": "Others", - "OptionBlockTvShows": "TV Shows", - "OptionBlockTrailers": "Trailers", - "OptionBlockMusic": "Music", - "OptionBlockMovies": "Movies", - "OptionBlockBooks": "Books", - "OptionBlockGames": "Games", - "OptionBlockLiveTvPrograms": "Live TV Programs", - "OptionBlockLiveTvChannels": "Live TV Channels", - "OptionBlockChannelContent": "Internet Channel Content", - "ButtonRevoke": "Revoke", - "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Emby Server will be abruptly terminated.", - "HeaderConfirmRevokeApiKey": "Revoke Api Key", - "ValueContainer": "Container: {0}", - "ValueAudioCodec": "Audio Codec: {0}", + "HeaderBlockItemsWithNoRating": "Bloker indhold uden bed\u00f8mmelser:", + "OptionBlockOthers": "Andre", + "OptionBlockTvShows": "TV serier", + "OptionBlockTrailers": "Trailere", + "OptionBlockMusic": "Musik", + "OptionBlockMovies": "Film", + "OptionBlockBooks": "B\u00f8ger", + "OptionBlockGames": "Spil", + "OptionBlockLiveTvPrograms": "Live TV-programmer", + "OptionBlockLiveTvChannels": "Live TV-kanaler", + "OptionBlockChannelContent": "Internet kanalindhold", + "ButtonRevoke": "Invalider", + "MessageConfirmRevokeApiKey": "Er du sikker p\u00e5 du \u00f8nsker at invalidere denne api n\u00f8gle? Applikationens forbindelse til Emby vil blive afbrudt \u00f8jeblikkeligt.", + "HeaderConfirmRevokeApiKey": "Invalider Api n\u00f8gle", + "ValueContainer": "Beholder: {0}", + "ValueAudioCodec": "Audio codec: {0}", "ValueVideoCodec": "Video Codec: {0}", "ValueCodec": "Codec: {0}", - "ValueConditions": "Conditions: {0}", - "LabelAll": "All", - "HeaderDeleteImage": "Delete Image", - "MessageFileNotFound": "File not found.", - "MessageFileReadError": "An error occurred reading this file.", - "ButtonNextPage": "Next Page", - "ButtonPreviousPage": "Previous Page", - "ButtonMoveLeft": "Move left", - "ButtonMoveRight": "Move right", - "ButtonBrowseOnlineImages": "Browse online images", - "HeaderDeleteItem": "Delete Item", - "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", - "MessagePleaseEnterNameOrId": "Please enter a name or an external Id.", - "MessageValueNotCorrect": "The value entered is not correct. Please try again.", - "MessageItemSaved": "Item saved.", - "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Please accept the terms of service before continuing.", + "ValueConditions": "Forhold: {0}", + "LabelAll": "Alle", + "HeaderDeleteImage": "Slet billede", + "MessageFileNotFound": "Fil blev ikke fundet.", + "MessageFileReadError": "Der opstod en fejl i fors\u00f8get p\u00e5 at l\u00e6se filen.", + "ButtonNextPage": "N\u00e6ste side", + "ButtonPreviousPage": "Forrige side", + "ButtonMoveLeft": "Flyt til venstre", + "ButtonMoveRight": "Flyt til h\u00f8jre", + "ButtonBrowseOnlineImages": "Gennemse online billeder", + "HeaderDeleteItem": "Slet element", + "ConfirmDeleteItem": "Hvis dette element slettes, fjernes det b\u00e5de fra dit filsystem samt din mediebibliotek. Er du sikker p\u00e5 du \u00f8nsker at forts\u00e6tte?", + "MessagePleaseEnterNameOrId": "Indtast venligst et navn eller eksternt Id.", + "MessageValueNotCorrect": "Det indtastede v\u00e6rdi er ikke korrekt. Pr\u00f8v igen.", + "MessageItemSaved": "Element gemt.", + "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Accepter venligst tjenestevilk\u00e5rene f\u00f8r du forts\u00e6tter.", "OptionEnded": "F\u00e6rdig", "OptionContinuing": "Fors\u00e6ttes", "OptionOff": "Off", "OptionOn": "On", "ButtonSettings": "Indstillinger", - "ButtonUninstall": "Uninstall", - "HeaderFields": "Fields", - "HeaderFieldsHelp": "Slide a field to 'off' to lock it and prevent it's data from being changed.", + "ButtonUninstall": "Afinstaller", + "HeaderFields": "Felter", + "HeaderFieldsHelp": "\u00c6ndre et felt til \"afbrudt\" for at l\u00e5se det og forhindre dets data i at blive \u00e6ndret.", "HeaderLiveTV": "Live TV", - "MissingLocalTrailer": "Missing local trailer.", - "MissingPrimaryImage": "Missing primary image.", - "MissingBackdropImage": "Missing backdrop image.", - "MissingLogoImage": "Missing logo image.", - "MissingEpisode": "Missing episode.", - "OptionScreenshots": "Screenshots", - "OptionBackdrops": "Backdrops", - "OptionImages": "Images", - "OptionKeywords": "Keywords", + "MissingLocalTrailer": "Mangler lokal trailer.", + "MissingPrimaryImage": "Mangler prim\u00e6rt billede", + "MissingBackdropImage": "Mangler baggrundsbillede.", + "MissingLogoImage": "Mangler logo.", + "MissingEpisode": "Mangler episode.", + "OptionScreenshots": "Sk\u00e6rmbilleder", + "OptionBackdrops": "Baggrunde", + "OptionImages": "Billeder", + "OptionKeywords": "N\u00f8gleord", "OptionTags": "Tags", - "OptionStudios": "Studios", - "OptionName": "Name", - "OptionOverview": "Overview", - "OptionGenres": "Genres", + "OptionStudios": "Studier", + "OptionName": "Navn", + "OptionOverview": "Oversigt", + "OptionGenres": "Genrer", "OptionParentalRating": "Aldersgr\u00e6nse", - "OptionPeople": "People", + "OptionPeople": "Personer", "OptionRuntime": "Varighed", - "OptionProductionLocations": "Production Locations", - "OptionBirthLocation": "Birth Location", - "LabelAllChannels": "All channels", - "LabelLiveProgram": "LIVE", - "LabelNewProgram": "NEW", - "LabelPremiereProgram": "PREMIERE", + "OptionProductionLocations": "Produktionslokationer", + "OptionBirthLocation": "F\u00f8dselssted", + "LabelAllChannels": "Alle kanaler", + "LabelLiveProgram": "DIREKTE", + "LabelNewProgram": "NY", + "LabelPremiereProgram": "PR\u00c6MIERE", "LabelHDProgram": "HD", - "HeaderChangeFolderType": "Change Content Type", - "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.", - "HeaderAlert": "Alert", - "MessagePleaseRestart": "Please restart to finish updating.", + "HeaderChangeFolderType": "\u00c6ndre indholdstype", + "HeaderChangeFolderTypeHelp": "For at \u00e6ndre typen bedes du fjerne og gendanne mappen med den nye type.", + "HeaderAlert": "Advarsel", + "MessagePleaseRestart": "Genstart venligst for at afslutte opdateringen.", "ButtonRestart": "Genstart", - "MessagePleaseRefreshPage": "Please refresh this page to receive new updates from the server.", - "ButtonHide": "Hide", - "MessageSettingsSaved": "Settings saved.", - "ButtonSignOut": "Sign Out", - "ButtonMyProfile": "My Profile", - "ButtonMyPreferences": "My Preferences", - "MessageBrowserDoesNotSupportWebSockets": "This browser does not support web sockets. For a better experience, try a newer browser such as Chrome, Firefox, IE10+, Safari (iOS) or Opera.", - "LabelInstallingPackage": "Installing {0}", - "LabelPackageInstallCompleted": "{0} installation completed.", - "LabelPackageInstallFailed": "{0} installation failed.", - "LabelPackageInstallCancelled": "{0} installation cancelled.", + "MessagePleaseRefreshPage": "Genindl\u00e6s venligst denne side for at modtage nye opdateringer fra serveren.", + "ButtonHide": "Gem", + "MessageSettingsSaved": "Indstillinger er gemt.", + "ButtonSignOut": "Log af", + "ButtonMyProfile": "Min profil", + "ButtonMyPreferences": "Mine indstillinger", + "MessageBrowserDoesNotSupportWebSockets": "Denne browser underst\u00f8tter ikke \"web sockets\". For en bedre oplevelse benyt da en nyere browser s\u00e5 som Chrome, Firefox, IE10+, Safari (iOS) eller Opera.", + "LabelInstallingPackage": "Installerer {0}", + "LabelPackageInstallCompleted": "{0} installation udf\u00f8rt.", + "LabelPackageInstallFailed": "{0} installationen mislykkedes.", + "LabelPackageInstallCancelled": "{0} installation afbrudt.", "TabServer": "Server", "TabUsers": "Brugere", - "TabLibrary": "Library", + "TabLibrary": "Bibliotek", "TabMetadata": "Metadata", "TabDLNA": "DLNA", "TabLiveTV": "Live TV", - "TabAutoOrganize": "Auto-Organize", - "TabPlugins": "Plugins", + "TabAutoOrganize": "Organiser automatisk", + "TabPlugins": "Tilf\u00f8jelser", "TabAdvanced": "Avanceret", - "TabHelp": "Help", + "TabHelp": "Hj\u00e6lp", "TabScheduledTasks": "Planlagte opgaver", "ButtonFullscreen": "Fuldsk\u00e6rm", "ButtonAudioTracks": "Lydpor", "ButtonSubtitles": "Undertekster", "ButtonScenes": "Scener", - "ButtonQuality": "Quality", - "HeaderNotifications": "Notifications", - "HeaderSelectPlayer": "Select Player:", + "ButtonQuality": "Kvalitet", + "HeaderNotifications": "Notifikationer", + "HeaderSelectPlayer": "V\u00e6lg afspiller:", "ButtonSelect": "V\u00e6lg", "ButtonNew": "Ny", - "MessageInternetExplorerWebm": "For best results with Internet Explorer please install the WebM playback plugin.", - "HeaderVideoError": "Video Error", + "MessageInternetExplorerWebm": "For at opn\u00e5 de bedste resultater med Internet Explorer bedes du installere WebM afspilningstilf\u00f8jelsen.", + "HeaderVideoError": "Video fejl", "ButtonAddToPlaylist": "Tilf\u00f8j til afspilningsliste", - "HeaderAddToPlaylist": "Add to Playlist", + "HeaderAddToPlaylist": "Tilf\u00f8j til afspilningsliste", "LabelName": "Navn:", "ButtonSubmit": "Indsend", - "LabelSelectPlaylist": "Playlist:", - "OptionNewPlaylist": "New playlist...", + "LabelSelectPlaylist": "Afspilningsliste:", + "OptionNewPlaylist": "Ny afspilningsliste...", "MessageAddedToPlaylistSuccess": "Ok", "ButtonView": "Visning", - "ButtonViewSeriesRecording": "View series recording", - "ValueOriginalAirDate": "Original air date: {0}", - "ButtonRemoveFromPlaylist": "Remove from playlist", - "HeaderSpecials": "Specials", - "HeaderTrailers": "Trailers", - "HeaderAudio": "Audio", - "HeaderResolution": "Resolution", + "ButtonViewSeriesRecording": "Vis serieoptagelse", + "ValueOriginalAirDate": "Blev sendt f\u00f8rste gang: {0}", + "ButtonRemoveFromPlaylist": "Fjer fra afspilningsliste", + "HeaderSpecials": "S\u00e6rudsendelser", + "HeaderTrailers": "Trailere", + "HeaderAudio": "Lyd", + "HeaderResolution": "Opl\u00f8sning", "HeaderVideo": "Video", - "HeaderRuntime": "Runtime", - "HeaderCommunityRating": "Community rating", + "HeaderRuntime": "Varighed", + "HeaderCommunityRating": "F\u00e6llesskabsvurdering", "HeaderPasswordReset": "Nulstil adgangskode", - "HeaderParentalRating": "Parental rating", - "HeaderReleaseDate": "Release date", - "HeaderDateAdded": "Date added", - "HeaderSeries": "Series", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderNetwork": "Network", - "HeaderYear": "Year", - "HeaderGameSystem": "Game system", - "HeaderPlayers": "Players", - "HeaderEmbeddedImage": "Embedded image", - "HeaderTrack": "Track", - "HeaderDisc": "Disc", + "HeaderParentalRating": "Aldersgr\u00e6nse", + "HeaderReleaseDate": "Udgivelsesdato", + "HeaderDateAdded": "Dato for tilf\u00f8jelse", + "HeaderSeries": "Serier", + "HeaderSeason": "S\u00e6son", + "HeaderSeasonNumber": "S\u00e6sonnummer", + "HeaderNetwork": "Netv\u00e6rk", + "HeaderYear": "\u00c5r", + "HeaderGameSystem": "Spilsystem", + "HeaderPlayers": "Afspillere", + "HeaderEmbeddedImage": "Indlejret billede", + "HeaderTrack": "Spor", + "HeaderDisc": "Disk", "OptionMovies": "Film", - "OptionCollections": "Collections", - "OptionSeries": "Series", - "OptionSeasons": "Seasons", + "OptionCollections": "Samlinger", + "OptionSeries": "Serier", + "OptionSeasons": "S\u00e6soner", "OptionEpisodes": "Episoder", - "OptionGames": "Games", - "OptionGameSystems": "Game systems", - "OptionMusicArtists": "Music artists", - "OptionMusicAlbums": "Music albums", - "OptionMusicVideos": "Music videos", - "OptionSongs": "Songs", - "OptionHomeVideos": "Home videos", - "OptionBooks": "Books", - "OptionAdultVideos": "Adult videos", - "ButtonUp": "Up", - "ButtonDown": "Down", - "LabelMetadataReaders": "Metadata readers:", - "LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.", - "LabelMetadataDownloaders": "Metadata downloaders:", - "LabelMetadataDownloadersHelp": "Enable and rank your preferred metadata downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", - "LabelMetadataSavers": "Metadata savers:", - "LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.", - "LabelImageFetchers": "Image fetchers:", - "LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.", - "ButtonQueueAllFromHere": "Queue all from here", - "ButtonPlayAllFromHere": "Play all from here", + "OptionGames": "Spil", + "OptionGameSystems": "Spilsystemer", + "OptionMusicArtists": "Musikartister", + "OptionMusicAlbums": "Musikalbummer", + "OptionMusicVideos": "Musikvideoer", + "OptionSongs": "Sange", + "OptionHomeVideos": "Hjemmevideoer", + "OptionBooks": "B\u00f8ger", + "OptionAdultVideos": "Voksenfilm", + "ButtonUp": "Op", + "ButtonDown": "Ned", + "LabelMetadataReaders": "Metadata afl\u00e6sere:", + "LabelMetadataReadersHelp": "Ranger dine fortrukne lokale metadatakilder i prioriteret r\u00e6kkef\u00f8lge. Den f\u00f8rst fundne fil vil blive afl\u00e6st.", + "LabelMetadataDownloaders": "Metadata downloadere:", + "LabelMetadataDownloadersHelp": "Aktiver og ranger dine fortrukne metadata downloadere i en prioriteret r\u00e6kkef\u00f8lge. Lavt rangerende downloadere bliver kun benyttet til at udfylde manglende information.", + "LabelMetadataSavers": "Metadata-gemmer:", + "LabelMetadataSaversHelp": "V\u00e6lg de filformater du \u00f8nsker din metadata gemmes som.", + "LabelImageFetchers": "Billede-henter:", + "LabelImageFetchersHelp": "Aktiver og ranger dine fortrukne billede-hentere i en prioriteret r\u00e6kkef\u00f8lge.", + "ButtonQueueAllFromHere": "Set alt her i k\u00f8", + "ButtonPlayAllFromHere": "Afspil alt fra her", "LabelDynamicExternalId": "{0} Id:", - "HeaderIdentify": "Identify Item", + "HeaderIdentify": "Identificer genstand", "PersonTypePerson": "Person", - "LabelTitleDisplayOrder": "Title display order:", - "OptionSortName": "Sort name", + "LabelTitleDisplayOrder": "Titelvisningsorden:", + "OptionSortName": "Sorteringsnavn", "OptionReleaseDate": "Udgivelsesdato", "LabelSeasonNumber": "S\u00e6sonnummer", - "LabelDiscNumber": "Disc number", - "LabelParentNumber": "Parent number", + "LabelDiscNumber": "Disk nummer", + "LabelParentNumber": "Parent nummer", "LabelEpisodeNumber": "Episodenummer", - "LabelTrackNumber": "Track number:", - "LabelNumber": "Number:", + "LabelTrackNumber": "Spor nummer:", + "LabelNumber": "Nummer:", "LabelReleaseDate": "Udgivelsesdato:", "LabelEndDate": "Slutdato:", "LabelYear": "\u00c5r:", - "LabelDateOfBirth": "Date of birth:", - "LabelBirthYear": "Birth year:", - "LabelBirthDate": "Birth date:", - "LabelDeathDate": "Death date:", - "HeaderRemoveMediaLocation": "Remove Media Location", - "MessageConfirmRemoveMediaLocation": "Are you sure you wish to remove this location?", - "HeaderRenameMediaFolder": "Rename Media Folder", - "LabelNewName": "New name:", - "HeaderAddMediaFolder": "Add Media Folder", - "HeaderAddMediaFolderHelp": "Name (Movies, Music, TV, etc):", - "HeaderRemoveMediaFolder": "Remove Media Folder", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:", - "MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?", - "ButtonRename": "Rename", - "ButtonChangeType": "Change type", - "HeaderMediaLocations": "Media Locations", - "LabelContentTypeValue": "Content type: {0}", - "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", - "FolderTypeUnset": "Unset (mixed content)", + "LabelDateOfBirth": "F\u00f8dselsdato:", + "LabelBirthYear": "F\u00f8dsels\u00e5r:", + "LabelBirthDate": "F\u00f8dselsdato:", + "LabelDeathDate": "D\u00f8dsdato:", + "HeaderRemoveMediaLocation": "Fjern medielokalisation", + "MessageConfirmRemoveMediaLocation": "Er du sikker p\u00e5 du \u00f8nsker at fjerne denne lokalisation?", + "HeaderRenameMediaFolder": "Omd\u00f8b mediemappe", + "LabelNewName": "Nyt navn:", + "HeaderAddMediaFolder": "Tilf\u00f8j mediemappe", + "HeaderAddMediaFolderHelp": "Navn (Film, Musik, TV, osv.):", + "HeaderRemoveMediaFolder": "Fjern mediemappe", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "F\u00f8lgende medielokationer vil blive fjerne fra dit bibliotek:", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Er du sikker p\u00e5 du \u00f8nsker at fjerne denne mediemappe?", + "ButtonRename": "Omd\u00f8b", + "ButtonChangeType": "\u00c6ndre type", + "HeaderMediaLocations": "Medielokationer", + "LabelContentTypeValue": "Indholdstype: {0}", + "LabelPathSubstitutionHelp": "Valgfri: Stisubstitution kan sammenk\u00e6de serverstier til netv\u00e6rksstier som klienter derved kan tilg\u00e5 for direkte afspilning.", + "FolderTypeUnset": "Ikke valgt (blandet indhold)", "FolderTypeMovies": "FIlm", "FolderTypeMusic": "Musik", "FolderTypeAdultVideos": "Voksenfilm", @@ -524,247 +524,247 @@ "TabAlbums": "Albums", "TabSongs": "Sange", "TabMusicVideos": "Musikvideoer", - "BirthPlaceValue": "Birth place: {0}", - "DeathDateValue": "Died: {0}", - "BirthDateValue": "Born: {0}", - "HeaderLatestReviews": "Latest Reviews", - "HeaderPluginInstallation": "Plugin Installation", - "MessageAlreadyInstalled": "This version is already installed.", - "ValueReviewCount": "{0} Reviews", - "MessageYouHaveVersionInstalled": "You currently have version {0} installed.", - "MessageTrialExpired": "The trial period for this feature has expired", - "MessageTrialWillExpireIn": "The trial period for this feature will expire in {0} day(s)", - "MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.", - "ValuePriceUSD": "Price: {0} (USD)", - "MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active supporter membership.", - "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Emby.", - "MessageSupporterMembershipExpiredOn": "Your supporter membership expired on {0}.", - "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": "You have an active {0} membership. You can upgrade your plan using the options below.", + "BirthPlaceValue": "F\u00f8dselssted: {0}", + "DeathDateValue": "D\u00f8dsdato: {0}", + "BirthDateValue": "F\u00f8dt: {0}", + "HeaderLatestReviews": "Seneste anmeldeser", + "HeaderPluginInstallation": "Plugin installation", + "MessageAlreadyInstalled": "Denne version er allerede installeret.", + "ValueReviewCount": "{0} Anmeldelser", + "MessageYouHaveVersionInstalled": "Du har version {0} installeret.", + "MessageTrialExpired": "Pr\u00f8veperioden for denne funktion er udl\u00f8bet", + "MessageTrialWillExpireIn": "Pr\u00f8veperioden for denne funktion udl\u00f8ber om {0} dag(e)", + "MessageInstallPluginFromApp": "Dette plugin skal v\u00e6re installeret inde i den app du \u00f8nsker at benytte det fra.", + "ValuePriceUSD": "Pris: {0} (USD)", + "MessageFeatureIncludedWithSupporter": "Du er registreret til at benytte denne funktion, og kan blive ved med at benytte den under foruds\u00e6tning af et aktivt supporter medlemsskab.", + "MessageChangeRecurringPlanConfirm": "Efter denne transaktion er udf\u00f8rt skal du afmelde din tidligere l\u00f8bende donation inde fra din PayPal konto. Tak fordi du st\u00f8tter Emby.", + "MessageSupporterMembershipExpiredOn": "Dit supporter medlemskab udl\u00f8b den {0}.", + "MessageYouHaveALifetimeMembership": "Du har et livstidsmedlemskab. Du kan give yderligere donationer via en engangsydelse eller p\u00e5 l\u00f8bende basis ved at benytte mulighederne nedenfor. Tak fordi du st\u00f8tter Emby.", + "MessageYouHaveAnActiveRecurringMembership": "Du har et aktivt {0} medlemsskab. Du kan opgradere dette via mulighederne nedenfor.", "ButtonDelete": "Slet", - "HeaderEmbyAccountAdded": "Emby Account Added", - "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", - "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", - "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderUnrated": "Unrated", - "ValueDiscNumber": "Disc {0}", - "HeaderUnknownDate": "Unknown Date", - "HeaderUnknownYear": "Unknown Year", + "HeaderEmbyAccountAdded": "Emby konto tilf\u00f8jet", + "MessageEmbyAccountAdded": "Emby kontoen er blevet tilf\u00f8jet til denne bruger.", + "MessagePendingEmbyAccountAdded": "Emby kontoen er blevet tilf\u00f8jet denne bruger. En email sendes til ejeren af kontoen. Invitationen skal bekr\u00e6ftes ved at klikke p\u00e5 linket i emailen.", + "HeaderEmbyAccountRemoved": "Emby konto fjernet", + "MessageEmbyAccontRemoved": "Emby kontoen er blevet fjernet fra denne bruger.", + "TooltipLinkedToEmbyConnect": "Koblet til Emby Connect", + "HeaderUnrated": "Ingen bed\u00f8mmelse", + "ValueDiscNumber": "Disk {0}", + "HeaderUnknownDate": "Ukendt dato", + "HeaderUnknownYear": "Ukendt \u00e5r", "ValueMinutes": "{0} min", - "ButtonPlayExternalPlayer": "Play with external player", - "HeaderSelectExternalPlayer": "Select External Player", - "HeaderExternalPlayerPlayback": "External Player Playback", - "ButtonImDone": "I'm Done", - "OptionWatched": "Watched", - "OptionUnwatched": "Unwatched", - "ExternalPlayerPlaystateOptionsHelp": "Specify how you would like to resume playing this video next time.", - "LabelMarkAs": "Mark as:", - "OptionInProgress": "In-Progress", - "LabelResumePoint": "Resume point:", - "ValueOneMovie": "1 movie", - "ValueMovieCount": "{0} movies", + "ButtonPlayExternalPlayer": "Afspil med ekstern afspiller", + "HeaderSelectExternalPlayer": "V\u00e6lg ekstern afspiller", + "HeaderExternalPlayerPlayback": "Ekstern afspiller afspilning", + "ButtonImDone": "Jeg er f\u00e6rdig", + "OptionWatched": "Set", + "OptionUnwatched": "Ikke set", + "ExternalPlayerPlaystateOptionsHelp": "Specificer hvordan du gerne vil genoptage afspilningen af denne video n\u00e6ste gang.", + "LabelMarkAs": "Marker som:", + "OptionInProgress": "I gang", + "LabelResumePoint": "Genoptagelsespunkt:", + "ValueOneMovie": "1 film", + "ValueMovieCount": "{0} film", "ValueOneTrailer": "1 trailer", - "ValueTrailerCount": "{0} trailers", - "ValueOneSeries": "1 series", - "ValueSeriesCount": "{0} series", + "ValueTrailerCount": "{0} trailere", + "ValueOneSeries": "1 serie", + "ValueSeriesCount": "{0} serier", "ValueOneEpisode": "1 episode", - "ValueEpisodeCount": "{0} episodes", - "ValueOneGame": "1 game", - "ValueGameCount": "{0} games", + "ValueEpisodeCount": "{0} episoder", + "ValueOneGame": "1 spil", + "ValueGameCount": "{0} spil", "ValueOneAlbum": "1 album", - "ValueAlbumCount": "{0} albums", - "ValueOneSong": "1 song", - "ValueSongCount": "{0} songs", - "ValueOneMusicVideo": "1 music video", - "ValueMusicVideoCount": "{0} music videos", + "ValueAlbumCount": "{0} album", + "ValueOneSong": "1 sang", + "ValueSongCount": "{0} sange", + "ValueOneMusicVideo": "1 musikvideo", + "ValueMusicVideoCount": "{0} musikvideoer", "HeaderOffline": "Offline", - "HeaderUnaired": "Unaired", - "HeaderMissing": "Missing", - "ButtonWebsite": "Website", - "TooltipFavorite": "Favorite", + "HeaderUnaired": "Ikke sendt", + "HeaderMissing": "Mangler", + "ButtonWebsite": "Hjemmeside", + "TooltipFavorite": "Favorit", "TooltipLike": "Like", "TooltipDislike": "Dislike", - "TooltipPlayed": "Played", - "ValueSeriesYearToPresent": "{0}-Present", - "ValueAwards": "Awards: {0}", + "TooltipPlayed": "Afspillet", + "ValueSeriesYearToPresent": "{0}-Nu", + "ValueAwards": "Priser: {0}", "ValueBudget": "Budget: {0}", - "ValueRevenue": "Revenue: {0}", - "ValuePremiered": "Premiered {0}", - "ValuePremieres": "Premieres {0}", - "ValueStudio": "Studio: {0}", - "ValueStudios": "Studios: {0}", + "ValueRevenue": "Indtjening: {0}", + "ValuePremiered": "Pr\u00e6miere {0}", + "ValuePremieres": "Pr\u00e6miere {0}", + "ValueStudio": "Studie: {0}", + "ValueStudios": "Studier: {0}", "ValueStatus": "Status: {0}", "ValueSpecialEpisodeName": "Special - {0}", - "LabelLimit": "Limit:", + "LabelLimit": "Gr\u00e6nse:", "ValueLinks": "Links: {0}", "HeaderPeople": "Mennesker", - "HeaderCastAndCrew": "Cast & Crew", - "ValueArtist": "Artist: {0}", - "ValueArtists": "Artists: {0}", + "HeaderCastAndCrew": "Medvirkende", + "ValueArtist": "Kunstner: {0}", + "ValueArtists": "Kunstnere: {0}", "HeaderTags": "Tags", - "MediaInfoCameraMake": "Camera make", - "MediaInfoCameraModel": "Camera model", - "MediaInfoAltitude": "Altitude", - "MediaInfoAperture": "Aperture", - "MediaInfoExposureTime": "Exposure time", - "MediaInfoFocalLength": "Focal length", - "MediaInfoOrientation": "Orientation", - "MediaInfoIsoSpeedRating": "Iso speed rating", - "MediaInfoLatitude": "Latitude", - "MediaInfoLongitude": "Longitude", - "MediaInfoShutterSpeed": "Shutter speed", + "MediaInfoCameraMake": "Kameram\u00e6rke", + "MediaInfoCameraModel": "Kameramodel", + "MediaInfoAltitude": "H\u00f8jde", + "MediaInfoAperture": "Bl\u00e6nde", + "MediaInfoExposureTime": "Eksponering", + "MediaInfoFocalLength": "Br\u00e6ndvidde", + "MediaInfoOrientation": "Orientering", + "MediaInfoIsoSpeedRating": "Iso hastigheds rating", + "MediaInfoLatitude": "Breddegrad", + "MediaInfoLongitude": "H\u00f8jdegrad", + "MediaInfoShutterSpeed": "Lukkehastighed", "MediaInfoSoftware": "Software", - "HeaderIfYouLikeCheckTheseOut": "If you like {0}, check these out...", + "HeaderIfYouLikeCheckTheseOut": "Hvis du kan lide {0}, s\u00e5 tjek disse...", "HeaderPlotKeywords": "Plot n\u00f8gleord", - "HeaderMovies": "Movies", + "HeaderMovies": "Film", "HeaderAlbums": "Albums", - "HeaderGames": "Games", - "HeaderBooks": "Books", + "HeaderGames": "Spil", + "HeaderBooks": "B\u00f8ger", "HeaderEpisodes": "Afsnit", - "HeaderSeasons": "Seasons", - "HeaderTracks": "Tracks", - "HeaderItems": "Items", - "HeaderOtherItems": "Other Items", - "ButtonFullReview": "Full review", - "ValueAsRole": "as {0}", - "ValueGuestStar": "Guest star", - "MediaInfoSize": "Size", - "MediaInfoPath": "Path", + "HeaderSeasons": "S\u00e6soner", + "HeaderTracks": "Spor", + "HeaderItems": "Element", + "HeaderOtherItems": "Andre elementer", + "ButtonFullReview": "Fuld anmeldelse", + "ValueAsRole": "som {0}", + "ValueGuestStar": "G\u00e6stestjerne", + "MediaInfoSize": "St\u00f8rrelse", + "MediaInfoPath": "Sti", "MediaInfoFormat": "Format", - "MediaInfoContainer": "Container", - "MediaInfoDefault": "Default", - "MediaInfoForced": "Forced", - "MediaInfoExternal": "External", - "MediaInfoTimestamp": "Timestamp", - "MediaInfoPixelFormat": "Pixel format", - "MediaInfoBitDepth": "Bit depth", + "MediaInfoContainer": "Beholder", + "MediaInfoDefault": "Standard", + "MediaInfoForced": "Tvungen", + "MediaInfoExternal": "Ekstern", + "MediaInfoTimestamp": "Tidsstempel", + "MediaInfoPixelFormat": "Pixelformat", + "MediaInfoBitDepth": "Bit dybde", "MediaInfoSampleRate": "Sample rate", "MediaInfoBitrate": "Bitrate", - "MediaInfoChannels": "Channels", + "MediaInfoChannels": "Kanaler", "MediaInfoLayout": "Layout", - "MediaInfoLanguage": "Language", + "MediaInfoLanguage": "Sprog", "MediaInfoCodec": "Codec", - "MediaInfoProfile": "Profile", - "MediaInfoLevel": "Level", - "MediaInfoAspectRatio": "Aspect ratio", - "MediaInfoResolution": "Resolution", - "MediaInfoAnamorphic": "Anamorphic", + "MediaInfoProfile": "Profil", + "MediaInfoLevel": "Niveau", + "MediaInfoAspectRatio": "Formatforhold", + "MediaInfoResolution": "Opl\u00f8sning", + "MediaInfoAnamorphic": "Anamorfisk", "MediaInfoInterlaced": "Interlaced", "MediaInfoFramerate": "Framerate", - "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoStreamTypeAudio": "Lyd", "MediaInfoStreamTypeData": "Data", "MediaInfoStreamTypeVideo": "Video", - "MediaInfoStreamTypeSubtitle": "Subtitle", - "MediaInfoStreamTypeEmbeddedImage": "Embedded Image", + "MediaInfoStreamTypeSubtitle": "Undertekster", + "MediaInfoStreamTypeEmbeddedImage": "Indlejret billede", "MediaInfoRefFrames": "Ref frames", "TabPlayback": "Afspilning", "TabNotifications": "Underretninger", - "TabExpert": "Expert", - "HeaderSelectCustomIntrosPath": "Select Custom Intros Path", - "HeaderRateAndReview": "Rate and Review", - "HeaderThankYou": "Thank You", - "MessageThankYouForYourReview": "Thank you for your review.", - "LabelYourRating": "Your rating:", - "LabelFullReview": "Full review:", - "LabelShortRatingDescription": "Short rating summary:", - "OptionIRecommendThisItem": "I recommend this item", - "WebClientTourContent": "View your recently added media, next episodes, and more. The green circles indicate how many unplayed items you have.", - "WebClientTourMovies": "Play movies, trailers and more from any device with a web browser", - "WebClientTourMouseOver": "Hold the mouse over any poster for quick access to important information", - "WebClientTourTapHold": "Tap and hold or right click any poster for a context menu", - "WebClientTourMetadataManager": "Click edit to open the metadata manager", - "WebClientTourPlaylists": "Easily create playlists and instant mixes, and play them on any device", - "WebClientTourCollections": "Create movie collections to group box sets together", - "WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Emby apps", - "WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Emby app", - "WebClientTourUserPreferences3": "Design the web client home page to your liking", - "WebClientTourUserPreferences4": "Configure backdrops, theme songs and external players", - "WebClientTourMobile1": "The web client works great on smartphones and tablets...", - "WebClientTourMobile2": "and easily controls other devices and Emby apps", - "WebClientTourMySync": "Sync your personal media to your devices for offline viewing.", - "MessageEnjoyYourStay": "Enjoy your stay", - "DashboardTourDashboard": "The server dashboard allows you to monitor your server and your users. You'll always know who is doing what and where they are.", - "DashboardTourHelp": "In-app help provides easy buttons to open wiki pages relating to the on-screen content.", - "DashboardTourUsers": "Easily create user accounts for your friends and family, each with their own permissions, library access, parental controls and more.", - "DashboardTourCinemaMode": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", - "DashboardTourChapters": "Enable chapter image generation for your videos for a more pleasing presentation while viewing.", - "DashboardTourSubtitles": "Automatically download subtitles for your videos in any language.", - "DashboardTourPlugins": "Install plugins such as internet video channels, live tv, metadata scanners, and more.", - "DashboardTourNotifications": "Automatically send notifications of server events to your mobile device, email and more.", - "DashboardTourScheduledTasks": "Easily manage long running operations with scheduled tasks. Decide when they run, and how often.", - "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", - "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", - "MessageRefreshQueued": "Refresh queued", + "TabExpert": "Ekspert", + "HeaderSelectCustomIntrosPath": "V\u00e6lg sti til brugerdefinerede introduktioner", + "HeaderRateAndReview": "Bed\u00f8m og anmeld", + "HeaderThankYou": "Tak", + "MessageThankYouForYourReview": "Tak for din anmeldelse", + "LabelYourRating": "Din bed\u00f8mmelse:", + "LabelFullReview": "Fuld anmeldelse:", + "LabelShortRatingDescription": "Kort bed\u00f8mmelsesresum\u00e9:", + "OptionIRecommendThisItem": "Jeg anbefaler dette", + "WebClientTourContent": "Se dit seneste tilf\u00f8jet media, kommende episoder samt mere. Den gr\u00f8nne cirkel indikerer hvor mange uafspillet elementer du har.", + "WebClientTourMovies": "Afspil film, trailere samt andet fra hvilken som helst enhed med en browser", + "WebClientTourMouseOver": "Hold musen over enhver plakat for hurtig adgang til vigtig information", + "WebClientTourTapHold": "Tryk og hold eller h\u00f8jreklik p\u00e5 enhver plakat for at \u00e5bne en menu for det valgte element", + "WebClientTourMetadataManager": "Klik p\u00e5 rediger for at \u00e5bne metadata manageren", + "WebClientTourPlaylists": "Opret afspilningslister og instant mixes, og afspil dem p\u00e5 enhver enhed", + "WebClientTourCollections": "Opret filmsamlinger s\u00e5 film kan grupperes sammen", + "WebClientTourUserPreferences1": "Brugerindstillinger g\u00f8r det muligt for dig at skr\u00e6ddersy m\u00e5den dit bibliotek pr\u00e6senteres i alle dine Emby apps", + "WebClientTourUserPreferences2": "Konfigurer sproget p\u00e5 dine lyd og undertekstindstillinger \u00e9n gang for alle Emby apps", + "WebClientTourUserPreferences3": "Design webklient hjemmesiden til din egen smag", + "WebClientTourUserPreferences4": "V\u00e6lg baggrunde, temasange og eksterne afspillere", + "WebClientTourMobile1": "Webklienten virker perfekt p\u00e5 smartphones og tablets...", + "WebClientTourMobile2": "og styr let andre enheder og Emby apps", + "WebClientTourMySync": "Synkroniser dine personlige mediefiler til dine enheder s\u00e5 det kan ses offline.", + "MessageEnjoyYourStay": "Nyd dit bes\u00f8g", + "DashboardTourDashboard": "Betjeningspanelet g\u00f8r det muligt at monitorere din server og dine brugere. Du vil altid v\u00e6re i stand til at vide hvem der g\u00f8r hvad samt hvor de er.", + "DashboardTourHelp": "Hj\u00e6lp inde i app'en s\u00f8rger for knapper der let \u00e5bner de wiki-sider der er relateret til hvad der er p\u00e5 din sk\u00e6rm i det \u00f8jeblik.", + "DashboardTourUsers": "Opret let brugerkonti til dine venner og familie, hver med deres egne rettigheder, adgang til biblioteket, for\u00e6ldre-indstillinger samt meget mere.", + "DashboardTourCinemaMode": "Biograftilstand giver dig biografoplevelsen direkte ind i din stue, med muligheden for at vise trailere og brugerdefinerede introduktioner f\u00f8r hovedfilmen.", + "DashboardTourChapters": "Aktiver kapitelbillede-oprettelse for dine videoer for en mere behagelig pr\u00e6sentation mens du afspiller.", + "DashboardTourSubtitles": "Download automatisk undertekster til dine videoer in ethvert sprog.", + "DashboardTourPlugins": "Installer tilf\u00f8jelser s\u00e5 som internet videokanaler, live tv, metadata skannere samt meget mere.", + "DashboardTourNotifications": "Send automatisk notifikationer vedr\u00f8rende serverbegivenheder til dine mobile enheder, din email samt andre tjenester.", + "DashboardTourScheduledTasks": "Administrer let processer der l\u00f8ber over l\u00e6ngere tid via planlagte opgaver. Bestem hvorn\u00e5r de udf\u00f8res samt hvor ofte.", + "DashboardTourMobile": "Emby betjeningspanelet virker uden problemer p\u00e5 b\u00e5de smartphones og tablets. Kontrol over din server er altid ved dine fingrespidser hvor som helst, n\u00e5r som helst.", + "DashboardTourSync": "Synkroniser dine personlige mediefiler til dine enheder s\u00e5 det kan ses offline.", + "MessageRefreshQueued": "Opdatering sat i k\u00f8", "TabDevices": "Enheder", - "TabExtras": "Extras", - "DeviceLastUsedByUserName": "Last used by {0}", - "HeaderDeleteDevice": "Delete Device", - "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", - "LabelEnableCameraUploadFor": "Enable camera upload for:", - "HeaderSelectUploadPath": "Select Upload Path", - "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", - "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", - "ButtonLibraryAccess": "Library access", - "ButtonParentalControl": "Parental control", - "HeaderInvitationSent": "Invitation Sent", - "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", - "HeaderConnectionFailure": "Connection Failure", - "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", - "ButtonSelectServer": "Select server", - "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", - "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.", - "DefaultErrorMessage": "There was an error processing the request. Please try again later.", - "ButtonAccept": "Accept", - "ButtonReject": "Reject", + "TabExtras": "Ekstra", + "DeviceLastUsedByUserName": "Sidst brugt af {0}", + "HeaderDeleteDevice": "Slet enhed", + "DeleteDeviceConfirmation": "Er du sikker p\u00e5 du \u00f8nsker at slette denne enhed? Den vil dukke op igen n\u00e6ste gang en bruger logger ind med den.", + "LabelEnableCameraUploadFor": "Aktiver kamera upload for:", + "HeaderSelectUploadPath": "V\u00e6lg upload sti", + "LabelEnableCameraUploadForHelp": "Uploads sker automatisk i baggrunden n\u00e5r du er logget p\u00e5 Emby", + "ErrorMessageStartHourGreaterThanEnd": "Slut tid skal v\u00e6re st\u00f8rre end start tid.", + "ButtonLibraryAccess": "Biblioteksadgang", + "ButtonParentalControl": "For\u00e6ldrekontrol", + "HeaderInvitationSent": "Invitation sendt", + "MessageInvitationSentToUser": "En email er blevet sendt til {0}, hvori de er blevet anmodet om at acceptere din invitation.", + "MessageInvitationSentToNewUser": "En email er blevet sendt til {0} med en invitation til at oprette sig hos Emby.", + "HeaderConnectionFailure": "Forbindelsesfejl", + "MessageUnableToConnectToServer": "Vi kan ikke forbinde til den valgte server p\u00e5 nuv\u00e6rende tidspunkt. Sikrer dig venligst at serveren k\u00f8rer og pr\u00f8v igen.", + "ButtonSelectServer": "V\u00e6lg server", + "MessagePluginConfigurationRequiresLocalAccess": "For at konfigurerer dette plugin log da venligst direkte ind p\u00e5 din lokale server.", + "MessageLoggedOutParentalControl": "Adgang er begr\u00e6nset p\u00e5 nuv\u00e6rende tidspunkt. Pr\u00f8v igen senere.", + "DefaultErrorMessage": "Det opstod en fejl ved behandlingen af foresp\u00f8rgslen. Pr\u00f8v igen senere.", + "ButtonAccept": "Accepter", + "ButtonReject": "Afvis", "HeaderForgotPassword": "Glemt adgangskode", - "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.", - "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", - "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", - "MessageForgotPasswordFileExpiration": "The reset pin will expire at {0}.", - "MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.", - "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", - "HeaderInviteGuest": "Invite Guest", - "ButtonLinkMyEmbyAccount": "Link my account now", - "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", + "MessageContactAdminToResetPassword": "Kontakt venligst din systemadministrator for at nulstille din adgangskode.", + "MessageForgotPasswordInNetworkRequired": "Pr\u00f8v igen inde i dit hjemmenetv\u00e6rk for at igangs\u00e6tte nulstilling af din adgangskode.", + "MessageForgotPasswordFileCreated": "Den f\u00f8lgende fil er blevet oprettet p\u00e5 din server og indeholder instruktioner vedr\u00f8rende hvordan du skal forts\u00e6tte:", + "MessageForgotPasswordFileExpiration": "Nulstillings pinkoden udl\u00f8ber {0}.", + "MessageInvalidForgotPasswordPin": "En ugyldig eller udl\u00f8bet pinkode blev indtastet. Pr\u00f8v igen.", + "MessagePasswordResetForUsers": "Adgangskoder er blevet fjernet fra f\u00f8lgende brugere:", + "HeaderInviteGuest": "Inviter g\u00e6st", + "ButtonLinkMyEmbyAccount": "Link min konto nu", + "MessageConnectAccountRequiredToInviteGuest": "For at invitere g\u00e6ster skal du f\u00f8rst k\u00e6de din Emby konto til denne server.", "ButtonSync": "Sync", - "SyncMedia": "Sync Media", - "HeaderCancelSyncJob": "Cancel Sync", - "CancelSyncJobConfirmation": "Cancelling the sync job will remove synced media from the device during the next sync process. Are you sure you wish to proceed?", + "SyncMedia": "Synkroniser medier", + "HeaderCancelSyncJob": "Afbryd synkronisering", + "CancelSyncJobConfirmation": "Afbrydelse af synkroniseringen vil fjerne medier fra enheden under n\u00e6ste synkroniseringsproces. Er du sikker p\u00e5 du \u00f8nsker at forts\u00e6tte?", "TabSync": "Sync", - "MessagePleaseSelectDeviceToSyncTo": "Please select a device to sync to.", - "MessageSyncJobCreated": "Sync job created.", - "LabelSyncTo": "Sync to:", - "LabelSyncJobName": "Sync job name:", - "LabelQuality": "Quality:", - "HeaderSettings": "Settings", - "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", - "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", - "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", - "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be synced.", - "MessageBookPluginRequired": "Requires installation of the Bookshelf plugin", - "MessageGamePluginRequired": "Requires installation of the GameBrowser plugin", - "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", - "SyncJobItemStatusQueued": "Queued", - "SyncJobItemStatusConverting": "Converting", - "SyncJobItemStatusTransferring": "Transferring", - "SyncJobItemStatusSynced": "Synced", - "SyncJobItemStatusFailed": "Failed", - "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled", - "LabelProfile": "Profile:", + "MessagePleaseSelectDeviceToSyncTo": "V\u00e6lg en enhed at synkroniserer til.", + "MessageSyncJobCreated": "Synkroniserings job oprettet", + "LabelSyncTo": "Synkroniser til:", + "LabelSyncJobName": "Navn til synkroniserings job:", + "LabelQuality": "Kvalitet:", + "HeaderSettings": "Indstillinger", + "OptionAutomaticallySyncNewContent": "Synkroniser automatisk nyt indhold", + "OptionAutomaticallySyncNewContentHelp": "Nyt indhold i denne kategori vil automatisk blive synkroniseret til enheden.", + "OptionSyncUnwatchedVideosOnly": "Synkroniser kun usete videoer", + "OptionSyncUnwatchedVideosOnlyHelp": "Kun usete videoer vil blive synkroniseret, og videoer vil blive fjernet fra enheden n\u00e5r de er blevet set.", + "LabelItemLimit": "Maks. filer:", + "LabelItemLimitHelp": "Valgfri. S\u00e6t en gr\u00e6nse for antallet af filer der synkroniseres.", + "MessageBookPluginRequired": "Kr\u00e6ver installation af Bookshelf tilf\u00f8jelsen", + "MessageGamePluginRequired": "Kr\u00e6ver installation af GameBrowser tilf\u00f8jelsen", + "MessageUnsetContentHelp": "Indhold vil blive vist som almindelige mapper. For det bedste resultat benyt metadata manageren til at v\u00e6lge indholdstypen i undermapper.", + "SyncJobItemStatusQueued": "Sat i k\u00f8", + "SyncJobItemStatusConverting": "Konverterer", + "SyncJobItemStatusTransferring": "Overf\u00f8rer", + "SyncJobItemStatusSynced": "Synkroniseret", + "SyncJobItemStatusFailed": "Fejlet", + "SyncJobItemStatusRemovedFromDevice": "Fjernet fra enhed", + "SyncJobItemStatusCancelled": "Annulleret", + "LabelProfile": "Profil:", "LabelBitrateMbps": "Bitrate (Mbps):", - "EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.", - "ButtonNewServer": "New Server", + "EmbyIntroDownloadMessage": "For at downloade og installere Emby bes\u00f8g {0}.", + "ButtonNewServer": "Ny server", "ButtonSignInWithConnect": "Log ind med Emby Connect", "HeaderNewServer": "Ny server", - "MyDevice": "My Device", - "ButtonRemote": "Remote", + "MyDevice": "Min enhed", + "ButtonRemote": "Fjernbetjening", "TabInfo": "Info", "TabCast": "Cast", - "TabScenes": "Scenes" + "TabScenes": "Scener" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/da.json b/MediaBrowser.Server.Implementations/Localization/Server/da.json index 7c483de175..8ac1d44a83 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/da.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json @@ -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 Finish<\/b> to view the 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 F\u00e6rdig<\/b> for at se 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,7 +1228,7 @@ "OptionNoThemeVideo": "Ingen temavideo", "LabelOneTimeDonationAmount": "Donationsbel\u00f8b:", "ButtonDonate": "Don\u00e9r", - "ButtonPurchase": "Purchase", + "ButtonPurchase": "K\u00f8b", "OptionActor": "Skuespiller", "OptionComposer": "Komponist", "OptionDirector": "Instrukt\u00f8r", @@ -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:", @@ -1425,11 +1425,11 @@ "LabelServerPort": "Port:", "HeaderNewServer": "Ny server", "ButtonChangeServer": "Skift server", - "HeaderConnectToServer": "Connect to Server", - "OptionReportList": "List View", - "OptionReportStatistics": "Statistics", - "OptionReportGrouping": "Grouping", - "HeaderExport": "Export", - "HeaderColumns": "Columns", + "HeaderConnectToServer": "Forbind til server", + "OptionReportList": "Liste visning", + "OptionReportStatistics": "Statistik", + "OptionReportGrouping": "Gruppering", + "HeaderExport": "Eksporter", + "HeaderColumns": "S\u00f8jler", "ButtonReset": "Reset" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fr.json b/MediaBrowser.Server.Implementations/Localization/Server/fr.json index be2c5279ac..38d55bc6f5 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -1228,7 +1228,7 @@ "OptionNoThemeVideo": "Pas de th\u00e8me vid\u00e9o", "LabelOneTimeDonationAmount": "Montant du don :", "ButtonDonate": "Faire un don", - "ButtonPurchase": "Purchase", + "ButtonPurchase": "Acheter", "OptionActor": "Acteur(trice)", "OptionComposer": "Compositeur:", "OptionDirector": "R\u00e9alisateur:", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/kk.json b/MediaBrowser.Server.Implementations/Localization/Server/kk.json index e13011d7d6..72a2ab0865 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json @@ -1228,7 +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": "Purchase", + "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", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json index 5c196cfb23..54d523825c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json @@ -1228,7 +1228,7 @@ "OptionNoThemeVideo": "Nenhum V\u00eddeo-tema", "LabelOneTimeDonationAmount": "Valor da doa\u00e7\u00e3o:", "ButtonDonate": "Doar", - "ButtonPurchase": "Purchase", + "ButtonPurchase": "Comprar", "OptionActor": "Ator", "OptionComposer": "Compositor", "OptionDirector": "Diretor", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ru.json b/MediaBrowser.Server.Implementations/Localization/Server/ru.json index 138175f3ba..f09cb3594f 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -1228,7 +1228,7 @@ "OptionNoThemeVideo": "\u0411\u0435\u0437 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e", "LabelOneTimeDonationAmount": "\u0421\u0443\u043c\u043c\u0430 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f:", "ButtonDonate": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c", - "ButtonPurchase": "Purchase", + "ButtonPurchase": "\u041f\u0440\u0438\u043e\u0431\u0440\u0435\u0441\u0442\u0438", "OptionActor": "\u0410\u043a\u0442\u0451\u0440", "OptionComposer": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440", "OptionDirector": "\u0420\u0435\u0436\u0438\u0441\u0441\u0451\u0440", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 579df55a8d..9d45451a88 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -1243,7 +1243,7 @@ "OptionNoThemeVideo": "No Theme Video", "LabelOneTimeDonationAmount": "Donation amount:", "ButtonDonate": "Donate", - "ButtonPurchase": "Purchase", + "ButtonPurchase": "Purchase", "OptionActor": "Actor", "OptionComposer": "Composer", "OptionDirector": "Director", @@ -1447,5 +1447,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index 13234888c3..f6601ce804 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -581,7 +581,6 @@ namespace MediaBrowser.WebDashboard.Api "cinemamodeconfiguration.js", "encodingsettings.js", - "externalplayer.js", "forgotpassword.js", "forgotpasswordpin.js", "indexpage.js", diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index acac624714..4315c20231 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -231,6 +231,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/SharedVersion.cs b/SharedVersion.cs index 2a2ce1e51b..1f434195a2 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.0.*")] -//[assembly: AssemblyVersion("3.0.5621.1")] +//[assembly: AssemblyVersion("3.0.*")] +[assembly: AssemblyVersion("3.0.5621.2")] From 3656f5db8db7b81a7a77c78ab5e1445efc30a125 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 25 May 2015 12:08:05 -0700 Subject: [PATCH 17/18] Fixed invalid Swagger parameter type --- MediaBrowser.Api/Music/InstantMixService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.Api/Music/InstantMixService.cs b/MediaBrowser.Api/Music/InstantMixService.cs index 78c6a8bf41..46034dc61a 100644 --- a/MediaBrowser.Api/Music/InstantMixService.cs +++ b/MediaBrowser.Api/Music/InstantMixService.cs @@ -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; } } From 975e699d5b5d8984139780958f0f15177777b937 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 26 May 2015 11:31:50 -0400 Subject: [PATCH 18/18] update translations --- .../Playback/Hls/DynamicHlsService.cs | 5 ++ MediaBrowser.Api/PluginService.cs | 14 +++- MediaBrowser.Dlna/Profiles/DefaultProfile.cs | 4 +- MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml | 4 +- MediaBrowser.Dlna/Profiles/Xml/Default.xml | 4 +- MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml | 4 +- .../Profiles/Xml/DirecTV HD-DVR.xml | 4 +- .../Profiles/Xml/Dish Hopper-Joey.xml | 4 +- .../Profiles/Xml/Generic Device.xml | 43 ----------- .../Profiles/Xml/LG Smart TV.xml | 4 +- .../Profiles/Xml/Linksys DMA2100.xml | 4 +- .../Profiles/Xml/MediaMonkey.xml | 4 +- .../Profiles/Xml/Panasonic Viera.xml | 4 +- .../Profiles/Xml/Popcorn Hour.xml | 4 +- .../Profiles/Xml/Samsung Smart TV.xml | 4 +- .../Profiles/Xml/Sony Blu-ray Player 2013.xml | 4 +- .../Profiles/Xml/Sony Blu-ray Player.xml | 4 +- .../Profiles/Xml/Sony Bravia (2010).xml | 4 +- .../Profiles/Xml/Sony Bravia (2011).xml | 4 +- .../Profiles/Xml/Sony Bravia (2012).xml | 4 +- .../Profiles/Xml/Sony Bravia (2013).xml | 4 +- .../Profiles/Xml/Sony PlayStation 3.xml | 4 +- MediaBrowser.Dlna/Profiles/Xml/Vlc.xml | 4 +- MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml | 4 +- MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml | 4 +- MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml | 4 +- MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml | 4 +- .../Devices/DeviceManager.cs | 5 +- .../Localization/JavaScript/de.json | 6 +- .../Localization/JavaScript/nb.json | 54 +++++++------- .../Localization/Server/ar.json | 3 +- .../Localization/Server/bg-BG.json | 3 +- .../Localization/Server/ca.json | 3 +- .../Localization/Server/cs.json | 3 +- .../Localization/Server/da.json | 3 +- .../Localization/Server/de.json | 7 +- .../Localization/Server/el.json | 3 +- .../Localization/Server/en-GB.json | 3 +- .../Localization/Server/en-US.json | 3 +- .../Localization/Server/es-MX.json | 5 +- .../Localization/Server/es.json | 45 ++++++------ .../Localization/Server/fi.json | 3 +- .../Localization/Server/fr.json | 3 +- .../Localization/Server/he.json | 3 +- .../Localization/Server/hr.json | 3 +- .../Localization/Server/it.json | 3 +- .../Localization/Server/kk.json | 3 +- .../Localization/Server/ko.json | 3 +- .../Localization/Server/ms.json | 3 +- .../Localization/Server/nb.json | 73 ++++++++++--------- .../Localization/Server/nl.json | 3 +- .../Localization/Server/pl.json | 3 +- .../Localization/Server/pt-BR.json | 3 +- .../Localization/Server/pt-PT.json | 3 +- .../Localization/Server/ru.json | 5 +- .../Localization/Server/sl-SI.json | 3 +- .../Localization/Server/sv.json | 3 +- .../Localization/Server/tr.json | 3 +- .../Localization/Server/uk.json | 3 +- .../Localization/Server/vi.json | 3 +- .../Localization/Server/zh-CN.json | 3 +- .../Localization/Server/zh-TW.json | 3 +- .../ApplicationHost.cs | 2 +- .../MediaBrowser.WebDashboard.csproj | 1 + SharedVersion.cs | 4 +- 65 files changed, 226 insertions(+), 220 deletions(-) delete mode 100644 MediaBrowser.Dlna/Profiles/Xml/Generic Device.xml diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index d2b276ba50..fdddc0c37f 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -957,6 +957,11 @@ namespace MediaBrowser.Api.Playback.Hls return false; } + if (string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + return state.RunTimeTicks.HasValue && state.IsOutputVideo; } diff --git a/MediaBrowser.Api/PluginService.cs b/MediaBrowser.Api/PluginService.cs index 2fbf65f3fd..4af9bfe58a 100644 --- a/MediaBrowser.Api/PluginService.cs +++ b/MediaBrowser.Api/PluginService.cs @@ -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); } /// diff --git a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs index 18d9dbcfa1..18a595d5b5 100644 --- a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs +++ b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs @@ -31,8 +31,8 @@ namespace MediaBrowser.Dlna.Profiles MaxIconWidth = 48; MaxIconHeight = 48; - MaxStreamingBitrate = 12000000; - MaxStaticBitrate = 12000000; + MaxStreamingBitrate = 10000000; + MaxStaticBitrate = 10000000; MusicStreamingTranscodingBitrate = 128000; MusicSyncBitrate = 128000; diff --git a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml index 29612e37ae..a537cbfcf6 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/BubbleUPnp.xml @@ -22,8 +22,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Default.xml b/MediaBrowser.Dlna/Profiles/Xml/Default.xml index 4f5c70dd1e..72cad45136 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Default.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Default.xml @@ -16,8 +16,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml index bac02ea3a6..bbaf23cc57 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml @@ -21,8 +21,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml index 3afa9907b7..5de643b026 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml @@ -22,8 +22,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml index 62f4907e0b..bf65212b9d 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Generic Device.xml b/MediaBrowser.Dlna/Profiles/Xml/Generic Device.xml deleted file mode 100644 index 1c611d47a4..0000000000 --- a/MediaBrowser.Dlna/Profiles/Xml/Generic Device.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - Generic Device - Emby - Emby - http://emby.media/ - Emby - Emby - Emby - http://emby.media/ - false - false - Audio,Photo,Video - JPEG_SM - 480 - 480 - 48 - 48 - 8000000 - 8000000 - 128000 - 128000 - DMS-1.50 - http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_BASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMA_FULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-matroska:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_LPCM;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_L6_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_NDSD;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_LPCM_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=01500000000000000000000000000000 - 0 - false - false - false - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml index b7f61b006d..044baaa70b 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml @@ -22,8 +22,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml index a2c5bff0bd..ca64d36d4d 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml @@ -20,8 +20,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml index 9b8907637e..61e7fedf86 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml @@ -22,8 +22,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml index 95e0013663..147182b7ed 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml index 351ebc5225..1378341fb0 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml @@ -16,8 +16,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml index baf3c88619..af16eec107 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml @@ -22,8 +22,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml index b0f8a7fb55..7eb9db7f6f 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml @@ -22,8 +22,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml index a07be6920a..013600f87a 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml @@ -24,8 +24,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml index 26573b1e8b..2990df4e31 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml index 76aef07f66..a74c3a4164 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml index 4f168a6ce4..f13b40e00d 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml index 2877e2d4e0..118afaa180 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml index 52bae8bc94..33066d8ef9 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml index 4243247def..6b341671ce 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Vlc.xml @@ -22,8 +22,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml index 4f8000c3bd..7f216a65c9 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml index f60729bea9..1182243807 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml index 7167108a7c..4c6287442b 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml @@ -23,8 +23,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml index 55f86e5d21..ca95ecde31 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml @@ -22,8 +22,8 @@ 480 48 48 - 12000000 - 12000000 + 10000000 + 10000000 128000 128000 DMS-1.50 diff --git a/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs b/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs index fb64a6d285..04337dda6a 100644 --- a/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs +++ b/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs @@ -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> CameraImageUploaded; @@ -34,7 +36,7 @@ namespace MediaBrowser.Server.Implementations.Devices /// public event EventHandler> 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 RegisterDevice(string reportedId, string name, string appName, string appVersion, string usedByUserId) diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json index 546da05c94..768007718b 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json @@ -399,7 +399,7 @@ "TabMetadata": "Metadata", "TabDLNA": "DLNA", "TabLiveTV": "Live-TV", - "TabAutoOrganize": "Automatische Organisation", + "TabAutoOrganize": "Autom.Organisation", "TabPlugins": "Plugins", "TabAdvanced": "Erweitert", "TabHelp": "Hilfe", @@ -587,7 +587,7 @@ "TooltipLike": "Like", "TooltipDislike": "Dislike", "TooltipPlayed": "Gespielt", - "ValueSeriesYearToPresent": "{0}-vorhanden", + "ValueSeriesYearToPresent": "{0}-heute", "ValueAwards": "Auszeichnungen: {0}", "ValueBudget": "Budget: {0}", "ValueRevenue": "Einnahmen: {0}", @@ -689,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.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json index 2f65f3ed24..7e2083d6cd 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json @@ -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", @@ -41,24 +41,24 @@ "TitleSync": "Synk", "ButtonDonate": "Don\u00e9r", "LabelRecurringDonationCanBeCancelledHelp": "Gjentakende donasjoner kan avbrytes n\u00e5r som helst fra din PayPal-konto.", - "HeaderMyMedia": "My Media", + "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", @@ -98,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", @@ -181,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)", @@ -252,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", @@ -542,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", @@ -727,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", @@ -756,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" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ar.json b/MediaBrowser.Server.Implementations/Localization/Server/ar.json index 157917bc88..88e99a85d2 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ar.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/bg-BG.json b/MediaBrowser.Server.Implementations/Localization/Server/bg-BG.json index e16ee91e68..dcbe6e107b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/bg-BG.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/bg-BG.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ca.json b/MediaBrowser.Server.Implementations/Localization/Server/ca.json index 984600f659..38206a132d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ca.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/cs.json b/MediaBrowser.Server.Implementations/Localization/Server/cs.json index d1a7299eff..0cb91e28a8 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/cs.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/da.json b/MediaBrowser.Server.Implementations/Localization/Server/da.json index 8ac1d44a83..1e4ae9af39 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/da.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Gruppering", "HeaderExport": "Eksporter", "HeaderColumns": "S\u00f8jler", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/de.json b/MediaBrowser.Server.Implementations/Localization/Server/de.json index babfbb028e..9f7db7e104 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/de.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json @@ -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,7 +1228,7 @@ "OptionNoThemeVideo": "Kein Theme Video", "LabelOneTimeDonationAmount": "Spendenbetrag:", "ButtonDonate": "Spenden", - "ButtonPurchase": "Purchase", + "ButtonPurchase": "Kaufen", "OptionActor": "Schauspieler", "OptionComposer": "Komponist", "OptionDirector": "Regisseur", @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Gruppierung", "HeaderExport": "Export", "HeaderColumns": "Spalten", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Aktiviere externe Videoplayer" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/el.json b/MediaBrowser.Server.Implementations/Localization/Server/el.json index d59c78c6c4..7f030a29d2 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/el.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/el.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en-GB.json b/MediaBrowser.Server.Implementations/Localization/Server/en-GB.json index e0bdecbb13..d708f5a082 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en-GB.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en-GB.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en-US.json b/MediaBrowser.Server.Implementations/Localization/Server/en-US.json index 83f5dd0723..94061b9d02 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en-US.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en-US.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es-MX.json b/MediaBrowser.Server.Implementations/Localization/Server/es-MX.json index 5f1b6397d3..9548f694b8 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es-MX.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es-MX.json @@ -1228,7 +1228,7 @@ "OptionNoThemeVideo": "Sin Video del Tema", "LabelOneTimeDonationAmount": "Cantidad a donar:", "ButtonDonate": "Donar", - "ButtonPurchase": "Purchase", + "ButtonPurchase": "Comprar", "OptionActor": "Actor", "OptionComposer": "Compositor", "OptionDirector": "Director", @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Agrupado", "HeaderExport": "Exportar", "HeaderColumns": "Columnas", - "ButtonReset": "Resetear" + "ButtonReset": "Resetear", + "OptionEnableExternalVideoPlayers": "Habilitar reproductores externos de video" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es.json b/MediaBrowser.Server.Implementations/Localization/Server/es.json index 38111b0ce2..7499de193f 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json @@ -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:", @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fi.json b/MediaBrowser.Server.Implementations/Localization/Server/fi.json index 93f91b5de4..30b5173a4b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fi.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fr.json b/MediaBrowser.Server.Implementations/Localization/Server/fr.json index 38d55bc6f5..6f60d972d0 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Groupement", "HeaderExport": "Exporter", "HeaderColumns": "Colonnes", - "ButtonReset": "R\u00e9initialiser" + "ButtonReset": "R\u00e9initialiser", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/he.json b/MediaBrowser.Server.Implementations/Localization/Server/he.json index 57093d9071..d834971704 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/he.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/hr.json b/MediaBrowser.Server.Implementations/Localization/Server/hr.json index b8a1018937..c47ab644fe 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/hr.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/it.json b/MediaBrowser.Server.Implementations/Localization/Server/it.json index b2df5a0aad..6f553d2e6b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/it.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/kk.json b/MediaBrowser.Server.Implementations/Localization/Server/kk.json index 72a2ab0865..22ee04caff 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json @@ -1431,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" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ko.json b/MediaBrowser.Server.Implementations/Localization/Server/ko.json index cdec2c1b7e..56491d496c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ko.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ko.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ms.json b/MediaBrowser.Server.Implementations/Localization/Server/ms.json index b73871bb02..d37faaf9f2 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ms.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nb.json b/MediaBrowser.Server.Implementations/Localization/Server/nb.json index 80b2fc3ecf..77dd27b82c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json @@ -69,7 +69,7 @@ "DividerOr": "-- eller --", "HeaderInstalledServices": "Installerte programtillegg", "HeaderAvailableServices": "Tilgjengelige tjenester", - "MessageNoServicesInstalled": "No services are currently installed.", + "MessageNoServicesInstalled": "Ingen programtillegg er installert.", "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", "ButtonConfigurePinCode": "Configure pin code", @@ -169,7 +169,7 @@ "MessageNothingHere": "Ingeting her.", "MessagePleaseEnsureInternetMetadata": "P\u00e5se at nedlasting av internet-metadata er sl\u00e5tt p\u00e5.", "TabSuggested": "Forslag", - "TabSuggestions": "Suggestions", + "TabSuggestions": "Forslag", "TabLatest": "Siste", "TabUpcoming": "Kommer", "TabShows": "Show", @@ -233,7 +233,7 @@ "ScheduledTasksTitle": "Planlagte Oppgaver", "TabMyPlugins": "Mine programtillegg", "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", + "TitlePlugins": "Programtillegg", "HeaderAutomaticUpdates": "Automatiske oppdateringer", "HeaderNowPlaying": "Spiller n\u00e5", "HeaderLatestAlbums": "Siste album", @@ -423,7 +423,7 @@ "LabelNumberOfGuideDays": "Antall dager av guide data som skal lastes ned", "LabelNumberOfGuideDaysHelp": "Nedlasting av guide data for flere dager gir muligheten for \u00e5 planlegge i forveien og for \u00e5 se flere listinger. Dette vil ogs\u00e5 ta lengre tid for nedlasting. Auto vil velge basert p\u00e5 antall kanaler.", "OptionAutomatic": "Auto", - "HeaderServices": "Services", + "HeaderServices": "Tjenester", "LiveTvPluginRequired": "En Live TV tilbyder trengs for \u00e5 kunne fortsette.", "LiveTvPluginRequiredHelp": "Vennligst installer en av v\u00e5re tilgjengelige programtillegg, f.eks Next Pvr eller ServerWmc.", "LabelCustomizeOptionsPerMediaType": "Tilpass for media type:", @@ -628,7 +628,7 @@ "ButtonUpdateNow": "Oppdater N\u00e5", "TabHosting": "Hosting", "PleaseUpdateManually": "Vennligst sl\u00e5 av serveren og oppdater manuelt.", - "NewServerVersionAvailable": "A new version of Emby Server is available!", + "NewServerVersionAvailable": "En ny versjon av Emby Server er tilgjengelig!", "ServerUpToDate": "Emby Server is up to date", "LabelComponentsUpdated": "F\u00f8lgende komponenter har blitt installert eller oppdatert:", "MessagePleaseRestartServerToFinishUpdating": "Vennligst restart serveren for \u00e5 fullf\u00f8re installasjon av oppdateringer.", @@ -926,13 +926,13 @@ "LabelChannelDownloadAgeHelp": "Nedlastet innhold eldre enn dette vil bli slettet. Det vil v\u00e6re avspillbart via internett streaming.", "ChannelSettingsFormHelp": "Installer kanaler som eksempel Trailers og Vimeo i programtillegg katalogen.", "ButtonOptions": "Alternativer", - "ViewTypePlaylists": "Playlists", + "ViewTypePlaylists": "Spillelister", "ViewTypeMovies": "Filmer", "ViewTypeTvShows": "TV", "ViewTypeGames": "Spill", "ViewTypeMusic": "Musikk", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", + "ViewTypeMusicGenres": "Sjangere", + "ViewTypeMusicArtists": "Artist", "ViewTypeBoxSets": "Samlinger", "ViewTypeChannels": "Kanaler", "ViewTypeLiveTV": "Live TV", @@ -956,7 +956,7 @@ "ViewTypeMovieFavorites": "Favoritter", "ViewTypeMovieGenres": "Sjangere", "ViewTypeMusicLatest": "Siste", - "ViewTypeMusicPlaylists": "Playlists", + "ViewTypeMusicPlaylists": "Spillelister", "ViewTypeMusicAlbums": "Albumer", "ViewTypeMusicAlbumArtists": "Album artister", "HeaderOtherDisplaySettings": "Visnings Innstillinger", @@ -1073,7 +1073,7 @@ "OptionBox": "Boks", "OptionBoxRear": "Boks bak", "OptionDisc": "Disk", - "OptionIcon": "Icon", + "OptionIcon": "Ikon", "OptionLogo": "Logo", "OptionMenu": "Meny", "OptionScreenshot": "Screenshot", @@ -1125,7 +1125,7 @@ "UserDeletedWithName": "Bruker {0} har blitt slettet", "MessageServerConfigurationUpdated": "Server konfigurasjon har blitt oppdatert", "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurasjon seksjon {0} har blitt oppdatert", - "MessageApplicationUpdated": "Emby Server has been updated", + "MessageApplicationUpdated": "Emby server har blitt oppdatert", "AuthenticationSucceededWithUserName": "{0} autentisert med suksess", "FailedLoginAttemptWithUserName": "P\u00e5loggingsfors\u00f8k feilet fra {0}", "UserDownloadingItemWithValues": "{0} laster ned {1}", @@ -1256,9 +1256,9 @@ "LabelExtractChaptersDuringLibraryScan": "Hent ut kapittel bilder under bibliotek skann", "LabelExtractChaptersDuringLibraryScanHelp": "Hvis aktivert, vil kapittel bilder bli hentet ut mens videoer importeres under bibliotek skanning.\nHvis deaktivert, vil de bli hentet ut under planlagte oppgaver for kapittel bilder, som medf\u00f8rer at vanlig bibliotek skanning blir fortere ferdig.", "LabelConnectGuestUserName": "Their Emby username or email address:", - "LabelConnectUserName": "Emby username\/email:", + "LabelConnectUserName": "Emby brukernavn\/epost", "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", - "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", + "ButtonLearnMoreAboutEmbyConnect": "L\u00e6r mer om Emby Connect", "LabelExternalPlayers": "Eksterne avspillere:", "LabelExternalPlayersHelp": "Vis knapper for \u00e5 spille av innhold i eksterne avspillere. Dette er bare tilgjengelig p\u00e5 enheter som st\u00f8tter url oppsett, i hovedsak Android og iOS. Med eksterne spillere er det vanligvis ingen st\u00f8tte for fjernkontroll eller gjenopptaking.", "HeaderSubtitleProfile": "Undertekst Profil", @@ -1318,7 +1318,7 @@ "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Emby website, or their email address.", "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Emby Connect.", "ButtonSendInvitation": "Send Invitasjon", - "HeaderSignInWithConnect": "Sign in with Emby Connect", + "HeaderSignInWithConnect": "Logg inn med Emby Connect", "HeaderGuests": "Gjester", "HeaderLocalUsers": "Lokale Brukere", "HeaderPendingInvitations": "Ventende invitasjoner", @@ -1337,7 +1337,7 @@ "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", "ButtonTrailerReel": "Trailer reel", "HeaderTrailerReel": "Trailer Reel", - "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers", + "OptionPlayUnwatchedTrailersOnly": "Bare spill usette trailere", "HeaderTrailerReelHelp": "Start a trailer reel to play a long running playlist of trailers.", "MessageNoTrailersFound": "No trailers found. Install the Trailer channel to enhance your movie experience by adding a library of internet trailers.", "HeaderNewUsers": "Nye Brukere", @@ -1385,10 +1385,10 @@ "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", "MessageReenableUser": "See below to reenable", "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", - "OptionTVMovies": "TV Movies", - "HeaderUpcomingMovies": "Upcoming Movies", - "HeaderUpcomingSports": "Upcoming Sports", - "HeaderUpcomingPrograms": "Upcoming Programs", + "OptionTVMovies": "TV serier", + "HeaderUpcomingMovies": "Kommende filmer", + "HeaderUpcomingSports": "Kommende sport", + "HeaderUpcomingPrograms": "Kommende programmer", "ButtonMoreItems": "Mer...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", @@ -1407,29 +1407,30 @@ "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", "OptionEnableFullSpeedConversion": "Enable full speed conversion", "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", - "HeaderPlaylists": "Playlists", - "HeaderSelectDate": "Select Date", - "HeaderViewStyles": "View Styles", + "HeaderPlaylists": "Spillelister", + "HeaderSelectDate": "Velg dato", + "HeaderViewStyles": "Se stiler", "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.", - "TabPhotos": "Photos", - "TabVideos": "Videos", - "HeaderWelcomeToEmby": "Welcome to Emby", + "TabPhotos": "Bilder", + "TabVideos": "Filmer", + "HeaderWelcomeToEmby": "Velkommen til Emby", "EmbyIntroMessage": "With Emby you can easily stream videos, music and photos to smart phones, tablets and other devices from your Emby Server.", - "ButtonSkip": "Skip", - "TextConnectToServerManually": "Connect to server manually", - "ButtonSignInWithConnect": "Sign in with Emby Connect", - "ButtonConnect": "Connect", - "LabelServerHost": "Host:", - "LabelServerHostHelp": "192.168.1.100 or https:\/\/myserver.com", + "ButtonSkip": "Hopp over", + "TextConnectToServerManually": "Koble til server manuelt", + "ButtonSignInWithConnect": "Logg inn med Emby Connect", + "ButtonConnect": "Koble til", + "LabelServerHost": "Vert", + "LabelServerHostHelp": "192.168.1.100 eller \"https:\/\/dinserver.no\"", "LabelServerPort": "Port:", - "HeaderNewServer": "New Server", - "ButtonChangeServer": "Change Server", - "HeaderConnectToServer": "Connect to Server", + "HeaderNewServer": "Ny server", + "ButtonChangeServer": "Endre server", + "HeaderConnectToServer": "Koble til server", "OptionReportList": "List View", "OptionReportStatistics": "Statistics", "OptionReportGrouping": "Grouping", - "HeaderExport": "Export", + "HeaderExport": "Eksporter", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Resett", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nl.json b/MediaBrowser.Server.Implementations/Localization/Server/nl.json index d941b5b17c..987eacc3d2 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Groupering", "HeaderExport": "Export", "HeaderColumns": "Kolommen", - "ButtonReset": "Rest" + "ButtonReset": "Rest", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pl.json b/MediaBrowser.Server.Implementations/Localization/Server/pl.json index 50cea6f701..449dc2fb57 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pl.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json index 54d523825c..cc33babbc6 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt-BR.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Agrupamento", "HeaderExport": "Exportar", "HeaderColumns": "Colunas", - "ButtonReset": "Redefinir" + "ButtonReset": "Redefinir", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt-PT.json b/MediaBrowser.Server.Implementations/Localization/Server/pt-PT.json index 06df61fd9b..996a250978 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt-PT.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt-PT.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ru.json b/MediaBrowser.Server.Implementations/Localization/Server/ru.json index f09cb3594f..221ee8f163 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -27,7 +27,7 @@ "WindowsServiceIntro1": "Emby Server \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043b\u043e\u0442\u043a\u0435, \u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u043a\u0430\u043a \u0444\u043e\u043d\u043e\u0432\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u0441\u043b\u0443\u0436\u0431 Windows.", "WindowsServiceIntro2": "\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u044b Windows, \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043b\u043e\u0442\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u043e\u043a \u0432 \u043b\u043e\u0442\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0436\u0431\u0430 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430. \u0421\u043b\u0443\u0436\u0431\u0443 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448\u0435 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e.", "WizardCompleted": "\u042d\u0442\u043e \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e. Emby \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0430\u0448\u0438\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0413\u043e\u0442\u043e\u0432\u043e<\/b>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b>.", - "LabelConfigureSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432", + "LabelConfigureSettings": "\u041d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", "LabelEnableVideoImageExtraction": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e", "VideoImageExtractionHelp": "\u0414\u043b\u044f \u0432\u0438\u0434\u0435\u043e, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0435\u0449\u0451 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438, \u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e.", "LabelEnableChapterImageExtractionForMovies": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0441\u0446\u0435\u043d \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432", @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "\u0413\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", "HeaderExport": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", "HeaderColumns": "\u041a\u043e\u043b\u043e\u043d\u043a\u0438", - "ButtonReset": "\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c" + "ButtonReset": "\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c", + "OptionEnableExternalVideoPlayers": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u0438 \u0432\u0438\u0434\u0435\u043e" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sl-SI.json b/MediaBrowser.Server.Implementations/Localization/Server/sl-SI.json index 83f5dd0723..94061b9d02 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sl-SI.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sl-SI.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sv.json b/MediaBrowser.Server.Implementations/Localization/Server/sv.json index 204d29fdb1..9480b6dc17 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sv.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/tr.json b/MediaBrowser.Server.Implementations/Localization/Server/tr.json index 1fe855c75b..3243d385ae 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/uk.json b/MediaBrowser.Server.Implementations/Localization/Server/uk.json index e2f56eef17..f6f05206e3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/uk.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/vi.json b/MediaBrowser.Server.Implementations/Localization/Server/vi.json index 6ade2beb10..487f133b91 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/vi.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh-CN.json b/MediaBrowser.Server.Implementations/Localization/Server/zh-CN.json index 1f19abe5ee..9cef04b9f3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh-CN.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh-CN.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh-TW.json b/MediaBrowser.Server.Implementations/Localization/Server/zh-TW.json index d311249a20..054505c38c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh-TW.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh-TW.json @@ -1431,5 +1431,6 @@ "OptionReportGrouping": "Grouping", "HeaderExport": "Export", "HeaderColumns": "Columns", - "ButtonReset": "Reset" + "ButtonReset": "Reset", + "OptionEnableExternalVideoPlayers": "Enable external video players" } \ No newline at end of file diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index 4c25c968cf..0c14520270 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -458,7 +458,7 @@ namespace MediaBrowser.Server.Startup.Common ConnectManager = new ConnectManager(LogManager.GetLogger("Connect"), ApplicationPaths, JsonSerializer, encryptionManager, HttpClient, this, ServerConfigurationManager, UserManager, ProviderManager, SecurityManager); RegisterSingleInstance(ConnectManager); - DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ConfigurationManager, LogManager.GetLogger("DeviceManager")); + DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager); RegisterSingleInstance(DeviceManager); var newsService = new Implementations.News.NewsService(ApplicationPaths, JsonSerializer); diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 4315c20231..3871cb9d66 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -225,6 +225,7 @@ PreserveNewest + PreserveNewest diff --git a/SharedVersion.cs b/SharedVersion.cs index 1f434195a2..95f572b03c 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -//[assembly: AssemblyVersion("3.0.*")] -[assembly: AssemblyVersion("3.0.5621.2")] +[assembly: AssemblyVersion("3.0.*")] +//[assembly: AssemblyVersion("3.0.5621.2")]