diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 6c406a11cf..418a9c9baf 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -9,6 +9,7 @@ using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; @@ -247,6 +248,11 @@ namespace MediaBrowser.Api.Playback } } + if (type == MediaStreamType.Video) + { + streams = streams.Where(i => !string.Equals(i.Codec, "mjpeg", StringComparison.OrdinalIgnoreCase)).ToList(); + } + if (returnFirstIfNoIndex && type == MediaStreamType.Audio) { return streams.FirstOrDefault(i => i.Channels.HasValue && i.Channels.Value > 0) ?? @@ -1018,7 +1024,7 @@ namespace MediaBrowser.Api.Playback return string.Format(" -b:v {0}", bitrate.Value.ToString(UsCulture)); } - + return string.Format(" -maxrate {0} -bufsize {1}", bitrate.Value.ToString(UsCulture), (bitrate.Value * 2).ToString(UsCulture)); @@ -1256,6 +1262,69 @@ namespace MediaBrowser.Api.Playback } } + /// + /// Parses the dlna headers. + /// + /// The request. + private void ParseDlnaHeaders(StreamRequest request) + { + if (!request.StartTimeTicks.HasValue) + { + var timeSeek = GetHeader("TimeSeekRange.dlna.org"); + + request.StartTimeTicks = ParseTimeSeekHeader(timeSeek); + } + } + + /// + /// Parses the time seek header. + /// + private long? ParseTimeSeekHeader(string value) + { + if (string.IsNullOrWhiteSpace(value)) + { + return null; + } + + if (value.IndexOf("npt=", StringComparison.OrdinalIgnoreCase) != 0) + { + throw new ArgumentException("Invalid timeseek header"); + } + value = value.Substring(4).Split(new[] { '-' }, 2)[0]; + + if (value.IndexOf(':') == -1) + { + // Parses npt times in the format of '417.33' + double seconds; + if (double.TryParse(value, NumberStyles.Any, UsCulture, out seconds)) + { + return TimeSpan.FromSeconds(seconds).Ticks; + } + + throw new ArgumentException("Invalid timeseek header"); + } + + // Parses npt times in the format of '10:19:25.7' + var tokens = value.Split(new[] { ':' }, 3); + double secondsSum = 0; + var timeFactor = 3600; + + foreach (var time in tokens) + { + double digit; + if (double.TryParse(time, NumberStyles.Any, UsCulture, out digit)) + { + secondsSum += (digit * timeFactor); + } + else + { + throw new ArgumentException("Invalid timeseek header"); + } + timeFactor /= 60; + } + return TimeSpan.FromSeconds(secondsSum).Ticks; + } + /// /// Gets the state. /// @@ -1264,6 +1333,8 @@ namespace MediaBrowser.Api.Playback /// StreamState. protected async Task GetState(StreamRequest request, CancellationToken cancellationToken) { + ParseDlnaHeaders(request); + if (!string.IsNullOrWhiteSpace(request.Params)) { ParseParams(request); @@ -1509,8 +1580,6 @@ namespace MediaBrowser.Api.Playback /// true if XXXX, false otherwise protected void AddDlnaHeaders(StreamState state, IDictionary responseHeaders, bool isStaticallyStreamed) { - var timeSeek = GetHeader("TimeSeekRange.dlna.org"); - var transferMode = GetHeader("transferMode.dlna.org"); responseHeaders["transferMode.dlna.org"] = string.IsNullOrEmpty(transferMode) ? "Streaming" : transferMode; responseHeaders["realTimeInfo.dlna.org"] = "DLNA.ORG_TLAG=*"; @@ -1521,11 +1590,21 @@ namespace MediaBrowser.Api.Playback // first bit means Time based seek supported, second byte range seek supported (not sure about the order now), so 01 = only byte seek, 10 = time based, 11 = both, 00 = none var orgOp = ";DLNA.ORG_OP="; - // Time-based seeking currently only possible when transcoding - orgOp += isStaticallyStreamed ? "0" : "1"; + if (state.RunTimeTicks.HasValue) + { + // Time-based seeking currently only possible when transcoding + orgOp += isStaticallyStreamed ? "0" : "1"; + + // Byte-based seeking only possible when not transcoding + orgOp += isStaticallyStreamed || state.TranscodeSeekInfo == TranscodeSeekInfo.Bytes ? "1" : "0"; - // Byte-based seeking only possible when not transcoding - orgOp += isStaticallyStreamed || state.TranscodeSeekInfo == TranscodeSeekInfo.Bytes ? "1" : "0"; + AddTimeSeekResponseHeaders(state, responseHeaders); + } + else + { + // No seeking is available if we don't know the content runtime + orgOp += "00"; + } // 0 = native, 1 = transcoded var orgCi = isStaticallyStreamed ? ";DLNA.ORG_CI=0" : ";DLNA.ORG_CI=1"; @@ -1568,15 +1647,6 @@ namespace MediaBrowser.Api.Playback { contentFeatures = "DLNA.ORG_PN=MPEG_PS_PAL"; } - //else if (string.Equals(extension, ".wmv", StringComparison.OrdinalIgnoreCase)) - //{ - // contentFeatures = "DLNA.ORG_PN=WMVHIGH_BASE"; - //} - //else if (string.Equals(extension, ".asf", StringComparison.OrdinalIgnoreCase)) - //{ - // // ?? - // contentFeatures = "DLNA.ORG_PN=WMVHIGH_BASE"; - //} if (!string.IsNullOrEmpty(contentFeatures)) { @@ -1589,6 +1659,15 @@ namespace MediaBrowser.Api.Playback } } + private void AddTimeSeekResponseHeaders(StreamState state, IDictionary responseHeaders) + { + var runtimeSeconds = TimeSpan.FromTicks(state.RunTimeTicks.Value).TotalSeconds.ToString(UsCulture); + var startSeconds = TimeSpan.FromTicks(state.Request.StartTimeTicks ?? 0).TotalSeconds.ToString(UsCulture); + + responseHeaders["TimeSeekRange.dlna.org"] = string.Format("npt={0}-{1}/{1}", startSeconds, runtimeSeconds); + responseHeaders["X-AvailableSeekRange"] = string.Format("1 npt={0}-{1}", startSeconds, runtimeSeconds); + } + /// /// Enforces the resolution limit. /// diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs index 48285a4b14..bde5fe30d3 100644 --- a/MediaBrowser.Api/Playback/StreamState.cs +++ b/MediaBrowser.Api/Playback/StreamState.cs @@ -1,5 +1,5 @@ using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using System.Collections.Generic; diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index a233c1f12f..760d07611d 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -78,14 +78,7 @@ - - - - - - - diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingOptions.cs b/MediaBrowser.Controller/MediaEncoding/EncodingOptions.cs index 74235becdc..26182ebc47 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingOptions.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingOptions.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Controller.MediaEncoding { diff --git a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj index df1fed12f0..21e41c02af 100644 --- a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj +++ b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj @@ -70,6 +70,7 @@ + @@ -78,7 +79,7 @@ - + diff --git a/MediaBrowser.Dlna/PlayTo/Device.cs b/MediaBrowser.Dlna/PlayTo/Device.cs index c0f88f285e..6b7fb0ceed 100644 --- a/MediaBrowser.Dlna/PlayTo/Device.cs +++ b/MediaBrowser.Dlna/PlayTo/Device.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Net; +using System.Globalization; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; using MediaBrowser.Model.Logging; using System; @@ -453,10 +454,10 @@ namespace MediaBrowser.Dlna.PlayTo var volume = result.Document.Descendants(uPnpNamespaces.RenderingControl + "GetVolumeResponse").Select(i => i.Element("CurrentVolume")).FirstOrDefault(i => i != null); var volumeValue = volume == null ? null : volume.Value; - if (volumeValue == null) + if (string.IsNullOrWhiteSpace(volumeValue)) return; - Volume = Int32.Parse(volumeValue); + Volume = int.Parse(volumeValue, UsCulture); //Reset the Mute value if Volume is bigger than zero if (Volume > 0 && _muteVol > 0) @@ -555,17 +556,17 @@ namespace MediaBrowser.Dlna.PlayTo var durationElem = result.Document.Descendants(uPnpNamespaces.AvTransport + "GetPositionInfoResponse").Select(i => i.Element("TrackDuration")).FirstOrDefault(i => i != null); var duration = durationElem == null ? null : durationElem.Value; - if (duration != null) + if (!string.IsNullOrWhiteSpace(duration)) { - Duration = TimeSpan.Parse(duration); + Duration = TimeSpan.Parse(duration, UsCulture); } var positionElem = result.Document.Descendants(uPnpNamespaces.AvTransport + "GetPositionInfoResponse").Select(i => i.Element("RelTime")).FirstOrDefault(i => i != null); var position = positionElem == null ? null : positionElem.Value; - if (position != null) + if (!string.IsNullOrWhiteSpace(position)) { - Position = TimeSpan.Parse(position); + Position = TimeSpan.Parse(position, UsCulture); } var track = result.Document.Descendants("TrackMetaData").Select(i => i.Value) @@ -701,7 +702,7 @@ namespace MediaBrowser.Dlna.PlayTo if (icon != null) { - deviceProperties.Icon = uIcon.Create(icon); + deviceProperties.Icon = CreateIcon(icon); } var isRenderer = false; @@ -746,6 +747,33 @@ namespace MediaBrowser.Dlna.PlayTo #endregion + private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); + private static DeviceIcon CreateIcon(XElement element) + { + if (element == null) + { + throw new ArgumentNullException("element"); + } + + var mimeType = element.GetDescendantValue(uPnpNamespaces.ud.GetName("mimetype")); + var width = element.GetDescendantValue(uPnpNamespaces.ud.GetName("width")); + var height = element.GetDescendantValue(uPnpNamespaces.ud.GetName("height")); + var depth = element.GetDescendantValue(uPnpNamespaces.ud.GetName("depth")); + var url = element.GetDescendantValue(uPnpNamespaces.ud.GetName("url")); + + var widthValue = int.Parse(width, NumberStyles.Any, UsCulture); + var heightValue = int.Parse(height, NumberStyles.Any, UsCulture); + + return new DeviceIcon + { + Depth = depth, + Height = heightValue, + MimeType = mimeType, + Url = url, + Width = widthValue + }; + } + private static DeviceService Create(XElement element) { var type = element.GetDescendantValue(uPnpNamespaces.ud.GetName("serviceType")); diff --git a/MediaBrowser.Dlna/PlayTo/DeviceIcon.cs b/MediaBrowser.Dlna/PlayTo/DeviceIcon.cs new file mode 100644 index 0000000000..a46abdd745 --- /dev/null +++ b/MediaBrowser.Dlna/PlayTo/DeviceIcon.cs @@ -0,0 +1,21 @@ + +namespace MediaBrowser.Dlna.PlayTo +{ + public class DeviceIcon + { + public string Url { get; set; } + + public string MimeType { get; set; } + + public int Width { get; set; } + + public int Height { get; set; } + + public string Depth { get; set; } + + public override string ToString() + { + return string.Format("{0}x{1}", Height, Width); + } + } +} diff --git a/MediaBrowser.Dlna/PlayTo/DeviceInfo.cs b/MediaBrowser.Dlna/PlayTo/DeviceInfo.cs index 122549c7d3..71b06c8ee1 100644 --- a/MediaBrowser.Dlna/PlayTo/DeviceInfo.cs +++ b/MediaBrowser.Dlna/PlayTo/DeviceInfo.cs @@ -1,5 +1,6 @@ using MediaBrowser.Controller.Dlna; using System.Collections.Generic; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.PlayTo { @@ -46,7 +47,7 @@ namespace MediaBrowser.Dlna.PlayTo } } - public uIcon Icon { get; set; } + public DeviceIcon Icon { get; set; } private readonly List _services = new List(); public List Services diff --git a/MediaBrowser.Dlna/PlayTo/DlnaController.cs b/MediaBrowser.Dlna/PlayTo/DlnaController.cs index 96df8c8622..a584408c53 100644 --- a/MediaBrowser.Dlna/PlayTo/DlnaController.cs +++ b/MediaBrowser.Dlna/PlayTo/DlnaController.cs @@ -6,6 +6,7 @@ using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Session; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Session; diff --git a/MediaBrowser.Dlna/PlayTo/PlaylistItem.cs b/MediaBrowser.Dlna/PlayTo/PlaylistItem.cs index 9f990bcb7b..be6e9a0c94 100644 --- a/MediaBrowser.Dlna/PlayTo/PlaylistItem.cs +++ b/MediaBrowser.Dlna/PlayTo/PlaylistItem.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.PlayTo { diff --git a/MediaBrowser.Dlna/PlayTo/PlaylistItemFactory.cs b/MediaBrowser.Dlna/PlayTo/PlaylistItemFactory.cs index 6a42e6a756..34394fa32d 100644 --- a/MediaBrowser.Dlna/PlayTo/PlaylistItemFactory.cs +++ b/MediaBrowser.Dlna/PlayTo/PlaylistItemFactory.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; @@ -184,7 +185,6 @@ namespace MediaBrowser.Dlna.PlayTo } break; } - case ProfileConditionValue.Filesize: case ProfileConditionValue.AudioProfile: case ProfileConditionValue.Has64BitOffsets: case ProfileConditionValue.VideoBitDepth: @@ -444,8 +444,6 @@ namespace MediaBrowser.Dlna.PlayTo return audioStream == null ? null : audioStream.BitRate; case ProfileConditionValue.AudioChannels: return audioStream == null ? null : audioStream.Channels; - case ProfileConditionValue.Filesize: - return new FileInfo(mediaPath).Length; case ProfileConditionValue.VideoBitrate: return videoStream == null ? null : videoStream.BitRate; case ProfileConditionValue.VideoFramerate: diff --git a/MediaBrowser.Dlna/PlayTo/uIcon.cs b/MediaBrowser.Dlna/PlayTo/uIcon.cs deleted file mode 100644 index 79bbbc1efa..0000000000 --- a/MediaBrowser.Dlna/PlayTo/uIcon.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using System.Xml.Linq; - -namespace MediaBrowser.Dlna.PlayTo -{ - public class uIcon - { - public string Url { get; private set; } - - public string MimeType { get; private set; } - - public int Width { get; private set; } - - public int Height { get; private set; } - - public string Depth { get; private set; } - - public uIcon(string mimeType, string width, string height, string depth, string url) - { - MimeType = mimeType; - Width = (!string.IsNullOrEmpty(width)) ? int.Parse(width) : 0; - Height = (!string.IsNullOrEmpty(height)) ? int.Parse(height) : 0; - Depth = depth; - Url = url; - } - - public static uIcon Create(XElement element) - { - if (element == null) - { - throw new ArgumentNullException("element"); - } - - var mimeType = element.GetDescendantValue(uPnpNamespaces.ud.GetName("mimetype")); - var width = element.GetDescendantValue(uPnpNamespaces.ud.GetName("width")); - var height = element.GetDescendantValue(uPnpNamespaces.ud.GetName("height")); - var depth = element.GetDescendantValue(uPnpNamespaces.ud.GetName("depth")); - var url = element.GetDescendantValue(uPnpNamespaces.ud.GetName("url")); - - return new uIcon(mimeType, width, height, depth, url); - } - - public override string ToString() - { - return string.Format("{0}x{1}", Height, Width); - } - } -} diff --git a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs index e6b5668faf..13bf467c62 100644 --- a/MediaBrowser.Dlna/Profiles/DefaultProfile.cs +++ b/MediaBrowser.Dlna/Profiles/DefaultProfile.cs @@ -1,5 +1,6 @@ using MediaBrowser.Controller.Dlna; using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/DenonAvrProfile.cs b/MediaBrowser.Dlna/Profiles/DenonAvrProfile.cs index 3c5064ad62..2f2d4f3ceb 100644 --- a/MediaBrowser.Dlna/Profiles/DenonAvrProfile.cs +++ b/MediaBrowser.Dlna/Profiles/DenonAvrProfile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/Foobar2000Profile.cs b/MediaBrowser.Dlna/Profiles/Foobar2000Profile.cs index 198b0a73a2..1eae3fa934 100644 --- a/MediaBrowser.Dlna/Profiles/Foobar2000Profile.cs +++ b/MediaBrowser.Dlna/Profiles/Foobar2000Profile.cs @@ -1,5 +1,6 @@ using MediaBrowser.Controller.Dlna; using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/LgTvProfile.cs b/MediaBrowser.Dlna/Profiles/LgTvProfile.cs index ccf36e8447..cce33ae100 100644 --- a/MediaBrowser.Dlna/Profiles/LgTvProfile.cs +++ b/MediaBrowser.Dlna/Profiles/LgTvProfile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/LinksysDMA2100Profile.cs b/MediaBrowser.Dlna/Profiles/LinksysDMA2100Profile.cs index a64cd24f31..e7542ea9e5 100644 --- a/MediaBrowser.Dlna/Profiles/LinksysDMA2100Profile.cs +++ b/MediaBrowser.Dlna/Profiles/LinksysDMA2100Profile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs b/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs index ced9a7c612..178207fc6a 100644 --- a/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs +++ b/MediaBrowser.Dlna/Profiles/PanasonicVieraProfile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs b/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs index b008947d3f..db856eeee9 100644 --- a/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs +++ b/MediaBrowser.Dlna/Profiles/SamsungSmartTvProfile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs index b64d4f6caf..833f623bf4 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayer2013Profile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs index 972fc48ed7..c6319122c4 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBlurayPlayerProfile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs index 870b97fe72..6639e18763 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs index 2bba58696e..8665b892ab 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs index f8a6dcfbd7..5becc6752a 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs index 56eaf47f4f..4b814c3e0a 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs b/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs index 06d721f52e..f746c0d3af 100644 --- a/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs b/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs index c3b88f7bfc..5e7c278936 100644 --- a/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs +++ b/MediaBrowser.Dlna/Profiles/WdtvLiveProfile.cs @@ -1,5 +1,6 @@ using MediaBrowser.Controller.Dlna; using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/Windows81Profile.cs b/MediaBrowser.Dlna/Profiles/Windows81Profile.cs new file mode 100644 index 0000000000..b7c6372584 --- /dev/null +++ b/MediaBrowser.Dlna/Profiles/Windows81Profile.cs @@ -0,0 +1,141 @@ +using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; + +namespace MediaBrowser.Dlna.Profiles +{ + [XmlRoot("Profile")] + public class Windows81Profile : DefaultProfile + { + public Windows81Profile() + { + Name = "Windows 8/RT"; + + Identification = new DeviceIdentification + { + Manufacturer = "Microsoft SDK Customer" + }; + + TranscodingProfiles = new[] + { + new TranscodingProfile + { + Container = "mp3", + AudioCodec = "mp3", + Type = DlnaProfileType.Audio + }, + new TranscodingProfile + { + Container = "ts", + VideoCodec = "h264", + AudioCodec = "aac", + Type = DlnaProfileType.Video, + VideoProfile = "Baseline" + } + }; + + DirectPlayProfiles = new[] + { + new DirectPlayProfile + { + Container = "mp4,mov", + VideoCodec = "h264,mpeg4", + AudioCodec = "aac,ac3,eac3,mp3,pcm", + Type = DlnaProfileType.Video + }, + + new DirectPlayProfile + { + Container = "ts", + VideoCodec = "h264", + AudioCodec = "aac,ac3,eac3,mp3,mp2,pcm", + Type = DlnaProfileType.Video + }, + + new DirectPlayProfile + { + Container = "asf", + VideoCodec = "wmv2,wmv3,vc1", + AudioCodec = "wmav2,wmapro,wmavoice", + Type = DlnaProfileType.Video + }, + + new DirectPlayProfile + { + Container = "avi", + VideoCodec = "mpeg4,msmpeg4,mjpeg", + AudioCodec = "mp3,ac3,eac3,mp2,pcm", + Type = DlnaProfileType.Video + }, + + new DirectPlayProfile + { + Container = "mp4", + AudioCodec = "aac", + Type = DlnaProfileType.Audio + }, + + new DirectPlayProfile + { + Container = "mp3", + AudioCodec = "mp3", + Type = DlnaProfileType.Audio + }, + + new DirectPlayProfile + { + Container = "jpeg", + Type = DlnaProfileType.Photo + } + }; + + CodecProfiles = new[] + { + new CodecProfile + { + Type = CodecType.Video, + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.VideoBitDepth, + Value = "8", + IsRequired = false + } + } + }, + + new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "aac,eac3", + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioChannels, + Value = "8" + } + } + }, + + new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "ac3", + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioChannels, + Value = "6" + } + } + } + }; + + } + } +} diff --git a/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs b/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs index 3fae85f594..9ece32df54 100644 --- a/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs +++ b/MediaBrowser.Dlna/Profiles/Xbox360Profile.cs @@ -1,5 +1,5 @@ -using System.Xml.Serialization; -using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; +using System.Xml.Serialization; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Dlna/Profiles/XboxOneProfile.cs b/MediaBrowser.Dlna/Profiles/XboxOneProfile.cs index 59372655c0..0615e65038 100644 --- a/MediaBrowser.Dlna/Profiles/XboxOneProfile.cs +++ b/MediaBrowser.Dlna/Profiles/XboxOneProfile.cs @@ -1,5 +1,6 @@ using System.Xml.Serialization; using MediaBrowser.Controller.Dlna; +using MediaBrowser.Model.Dlna; namespace MediaBrowser.Dlna.Profiles { diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index 00fb2131c6..99928bcba3 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -101,9 +101,36 @@ Configuration\UserConfiguration.cs + + Dlna\CodecProfile.cs + + + Dlna\ContainerProfile.cs + + + Dlna\DeviceIdentification.cs + + + Dlna\DeviceProfile.cs + Dlna\DeviceProfileInfo.cs + + Dlna\DirectPlayProfile.cs + + + Dlna\ResponseProfile.cs + + + Dlna\StreamBuilder.cs + + + Dlna\StreamInfo.cs + + + Dlna\TranscodingProfile.cs + Drawing\DrawingUtils.cs @@ -224,9 +251,6 @@ Entities\VirtualFolderInfo.cs - - Extensions\ModelExtensions.cs - FileOrganization\FileOrganizationQuery.cs diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index f8bc2a600f..3738decff3 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -88,9 +88,36 @@ Configuration\UserConfiguration.cs + + Dlna\CodecProfile.cs + + + Dlna\ContainerProfile.cs + + + Dlna\DeviceIdentification.cs + + + Dlna\DeviceProfile.cs + Dlna\DeviceProfileInfo.cs + + Dlna\DirectPlayProfile.cs + + + Dlna\ResponseProfile.cs + + + Dlna\StreamBuilder.cs + + + Dlna\StreamInfo.cs + + + Dlna\TranscodingProfile.cs + Drawing\DrawingUtils.cs @@ -211,9 +238,6 @@ Entities\VirtualFolderInfo.cs - - Extensions\ModelExtensions.cs - FileOrganization\FileOrganizationQuery.cs diff --git a/MediaBrowser.Controller/Dlna/CodecProfile.cs b/MediaBrowser.Model/Dlna/CodecProfile.cs similarity index 94% rename from MediaBrowser.Controller/Dlna/CodecProfile.cs rename to MediaBrowser.Model/Dlna/CodecProfile.cs index e2eb60d9a1..b15dfc809e 100644 --- a/MediaBrowser.Controller/Dlna/CodecProfile.cs +++ b/MediaBrowser.Model/Dlna/CodecProfile.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Xml.Serialization; -namespace MediaBrowser.Controller.Dlna +namespace MediaBrowser.Model.Dlna { public class CodecProfile { @@ -22,7 +22,7 @@ namespace MediaBrowser.Controller.Dlna public List GetCodecs() { - return (Codec ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (Codec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } public bool ContainsCodec(string codec) @@ -73,7 +73,6 @@ namespace MediaBrowser.Controller.Dlna AudioChannels, AudioBitrate, AudioProfile, - Filesize, Width, Height, Has64BitOffsets, diff --git a/MediaBrowser.Controller/Dlna/ContainerProfile.cs b/MediaBrowser.Model/Dlna/ContainerProfile.cs similarity index 87% rename from MediaBrowser.Controller/Dlna/ContainerProfile.cs rename to MediaBrowser.Model/Dlna/ContainerProfile.cs index 1029ba72cb..3a5fe3bd50 100644 --- a/MediaBrowser.Controller/Dlna/ContainerProfile.cs +++ b/MediaBrowser.Model/Dlna/ContainerProfile.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Xml.Serialization; -namespace MediaBrowser.Controller.Dlna +namespace MediaBrowser.Model.Dlna { public class ContainerProfile { @@ -20,7 +20,7 @@ namespace MediaBrowser.Controller.Dlna public List GetContainers() { - return (Container ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (Container ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } } } diff --git a/MediaBrowser.Controller/Dlna/DeviceIdentification.cs b/MediaBrowser.Model/Dlna/DeviceIdentification.cs similarity index 96% rename from MediaBrowser.Controller/Dlna/DeviceIdentification.cs rename to MediaBrowser.Model/Dlna/DeviceIdentification.cs index c9cd4bc703..87cf000b1a 100644 --- a/MediaBrowser.Controller/Dlna/DeviceIdentification.cs +++ b/MediaBrowser.Model/Dlna/DeviceIdentification.cs @@ -1,7 +1,6 @@ - -using System.Xml.Serialization; +using System.Xml.Serialization; -namespace MediaBrowser.Controller.Dlna +namespace MediaBrowser.Model.Dlna { public class DeviceIdentification { diff --git a/MediaBrowser.Controller/Dlna/DeviceProfile.cs b/MediaBrowser.Model/Dlna/DeviceProfile.cs similarity index 97% rename from MediaBrowser.Controller/Dlna/DeviceProfile.cs rename to MediaBrowser.Model/Dlna/DeviceProfile.cs index bb9629c28b..53cd2da12b 100644 --- a/MediaBrowser.Controller/Dlna/DeviceProfile.cs +++ b/MediaBrowser.Model/Dlna/DeviceProfile.cs @@ -1,11 +1,10 @@ -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; using System.Linq; using System.Xml.Serialization; -namespace MediaBrowser.Controller.Dlna +namespace MediaBrowser.Model.Dlna { [XmlRoot("Profile")] public class DeviceProfile @@ -89,7 +88,7 @@ namespace MediaBrowser.Controller.Dlna public List GetSupportedMediaTypes() { - return (SupportedMediaTypes ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (SupportedMediaTypes ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } public TranscodingProfile GetAudioTranscodingProfile(string container, string audioCodec) diff --git a/MediaBrowser.Controller/Dlna/DirectPlayProfile.cs b/MediaBrowser.Model/Dlna/DirectPlayProfile.cs similarity index 84% rename from MediaBrowser.Controller/Dlna/DirectPlayProfile.cs rename to MediaBrowser.Model/Dlna/DirectPlayProfile.cs index ad70640daa..c7ecdc908b 100644 --- a/MediaBrowser.Controller/Dlna/DirectPlayProfile.cs +++ b/MediaBrowser.Model/Dlna/DirectPlayProfile.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Xml.Serialization; -namespace MediaBrowser.Controller.Dlna +namespace MediaBrowser.Model.Dlna { public class DirectPlayProfile { @@ -20,17 +20,17 @@ namespace MediaBrowser.Controller.Dlna public List GetContainers() { - return (Container ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (Container ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } public List GetAudioCodecs() { - return (AudioCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (AudioCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } public List GetVideoCodecs() { - return (VideoCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (VideoCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } } diff --git a/MediaBrowser.Controller/Dlna/ResponseProfile.cs b/MediaBrowser.Model/Dlna/ResponseProfile.cs similarity index 86% rename from MediaBrowser.Controller/Dlna/ResponseProfile.cs rename to MediaBrowser.Model/Dlna/ResponseProfile.cs index 163a95d5ac..e84095ffe5 100644 --- a/MediaBrowser.Controller/Dlna/ResponseProfile.cs +++ b/MediaBrowser.Model/Dlna/ResponseProfile.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Xml.Serialization; -namespace MediaBrowser.Controller.Dlna +namespace MediaBrowser.Model.Dlna { public class ResponseProfile { @@ -33,17 +33,17 @@ namespace MediaBrowser.Controller.Dlna public List GetContainers() { - return (Container ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (Container ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } public List GetAudioCodecs() { - return (AudioCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (AudioCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } public List GetVideoCodecs() { - return (VideoCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (VideoCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } } } diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs new file mode 100644 index 0000000000..d03567ffc1 --- /dev/null +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -0,0 +1,533 @@ +using System; +using System.Globalization; +using System.IO; +using System.Linq; +using MediaBrowser.Model.Dto; +using System.Collections.Generic; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Model.Dlna +{ + public class StreamBuilder + { + private readonly CultureInfo _usCulture = new CultureInfo("en-US"); + + public StreamInfo BuildAudioItem(AudioOptions options) + { + ValidateAudioInput(options); + + var mediaSources = options.MediaSources; + + // If the client wants a specific media soure, filter now + if (!string.IsNullOrEmpty(options.MediaSourceId)) + { + // Avoid implicitly captured closure + var mediaSourceId = options.MediaSourceId; + + mediaSources = mediaSources + .Where(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase)) + .ToList(); + } + + var streams = mediaSources.Select(i => BuildAudioItem(options.ItemId, i, options.Profile)).ToList(); + + foreach (var stream in streams) + { + stream.DeviceId = options.DeviceId; + stream.DeviceProfileId = options.Profile.Id; + } + + return GetOptimalStream(streams); + } + + public StreamInfo BuildVideoItem(VideoOptions options) + { + ValidateInput(options); + + var mediaSources = options.MediaSources; + + // If the client wants a specific media soure, filter now + if (!string.IsNullOrEmpty(options.MediaSourceId)) + { + // Avoid implicitly captured closure + var mediaSourceId = options.MediaSourceId; + + mediaSources = mediaSources + .Where(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase)) + .ToList(); + } + + var streams = mediaSources.Select(i => BuildVideoItem(i, options)).ToList(); + + foreach (var stream in streams) + { + stream.DeviceId = options.DeviceId; + stream.DeviceProfileId = options.Profile.Id; + } + + return GetOptimalStream(streams); + } + + private StreamInfo GetOptimalStream(List streams) + { + // Grab the first one that can be direct streamed + // If that doesn't produce anything, just take the first + return streams.FirstOrDefault(i => i.IsDirectStream) ?? + streams.FirstOrDefault(); + } + + private StreamInfo BuildAudioItem(string itemId, MediaSourceInfo item, DeviceProfile profile) + { + var playlistItem = new StreamInfo + { + ItemId = itemId, + MediaType = DlnaProfileType.Audio, + MediaSourceId = item.Id + }; + + var audioStream = item.MediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio); + + var directPlay = profile.DirectPlayProfiles + .FirstOrDefault(i => i.Type == playlistItem.MediaType && IsAudioProfileSupported(i, item, audioStream)); + + if (directPlay != null) + { + var audioCodec = audioStream == null ? null : audioStream.Codec; + + // Make sure audio codec profiles are satisfied + if (!string.IsNullOrEmpty(audioCodec) && profile.CodecProfiles.Where(i => i.Type == CodecType.Audio && i.ContainsCodec(audioCodec)) + .All(i => AreConditionsSatisfied(i.Conditions, item.Path, null, audioStream))) + { + playlistItem.IsDirectStream = true; + playlistItem.Container = item.Container; + + return playlistItem; + } + } + + var transcodingProfile = profile.TranscodingProfiles + .FirstOrDefault(i => i.Type == playlistItem.MediaType); + + if (transcodingProfile != null) + { + playlistItem.IsDirectStream = false; + playlistItem.Container = transcodingProfile.Container; + playlistItem.AudioCodec = transcodingProfile.AudioCodec; + + var audioTranscodingConditions = profile.CodecProfiles + .Where(i => i.Type == CodecType.Audio && i.ContainsCodec(transcodingProfile.AudioCodec)) + .Take(1) + .SelectMany(i => i.Conditions); + + ApplyTranscodingConditions(playlistItem, audioTranscodingConditions); + } + + return playlistItem; + } + + private StreamInfo BuildVideoItem(MediaSourceInfo item, VideoOptions options) + { + var playlistItem = new StreamInfo + { + ItemId = options.ItemId, + MediaType = DlnaProfileType.Video, + MediaSourceId = item.Id + }; + + var audioStream = item.MediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio); + var videoStream = item.MediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Video); + + if (IsEligibleForDirectPlay(item, options)) + { + // See if it can be direct played + var directPlay = options.Profile.DirectPlayProfiles + .FirstOrDefault(i => i.Type == playlistItem.MediaType && IsVideoProfileSupported(i, item, videoStream, audioStream)); + + if (directPlay != null) + { + var videoCodec = videoStream == null ? null : videoStream.Codec; + + // Make sure video codec profiles are satisfied + if (!string.IsNullOrEmpty(videoCodec) && options.Profile.CodecProfiles.Where(i => i.Type == CodecType.Video && i.ContainsCodec(videoCodec)) + .All(i => AreConditionsSatisfied(i.Conditions, item.Path, videoStream, audioStream))) + { + var audioCodec = audioStream == null ? null : audioStream.Codec; + + // Make sure audio codec profiles are satisfied + if (string.IsNullOrEmpty(audioCodec) || options.Profile.CodecProfiles.Where(i => i.Type == CodecType.VideoAudio && i.ContainsCodec(audioCodec)) + .All(i => AreConditionsSatisfied(i.Conditions, item.Path, videoStream, audioStream))) + { + playlistItem.IsDirectStream = true; + playlistItem.Container = item.Container; + + return playlistItem; + } + } + } + } + + // Can't direct play, find the transcoding profile + var transcodingProfile = options.Profile.TranscodingProfiles + .FirstOrDefault(i => i.Type == playlistItem.MediaType); + + if (transcodingProfile != null) + { + playlistItem.IsDirectStream = false; + playlistItem.Container = transcodingProfile.Container; + playlistItem.AudioCodec = transcodingProfile.AudioCodec.Split(',').FirstOrDefault(); + playlistItem.VideoCodec = transcodingProfile.VideoCodec; + + var videoTranscodingConditions = options.Profile.CodecProfiles + .Where(i => i.Type == CodecType.Video && i.ContainsCodec(transcodingProfile.VideoCodec)) + .Take(1) + .SelectMany(i => i.Conditions); + + ApplyTranscodingConditions(playlistItem, videoTranscodingConditions); + + var audioTranscodingConditions = options.Profile.CodecProfiles + .Where(i => i.Type == CodecType.VideoAudio && i.ContainsCodec(transcodingProfile.AudioCodec)) + .Take(1) + .SelectMany(i => i.Conditions); + + ApplyTranscodingConditions(playlistItem, audioTranscodingConditions); + } + + return playlistItem; + } + + private bool IsEligibleForDirectPlay(MediaSourceInfo item, VideoOptions options) + { + if (options.SubtitleStreamIndex.HasValue) + { + return false; + } + + if (options.AudioStreamIndex.HasValue && + item.MediaStreams.Count(i => i.Type == MediaStreamType.Audio) > 1) + { + return false; + } + + return true; + } + + private void ValidateInput(VideoOptions options) + { + ValidateAudioInput(options); + + if (options.AudioStreamIndex.HasValue && string.IsNullOrEmpty(options.MediaSourceId)) + { + throw new ArgumentException("MediaSourceId is required when a specific audio stream is requested"); + } + + if (options.SubtitleStreamIndex.HasValue && string.IsNullOrEmpty(options.MediaSourceId)) + { + throw new ArgumentException("MediaSourceId is required when a specific subtitle stream is requested"); + } + } + + private void ValidateAudioInput(AudioOptions options) + { + if (string.IsNullOrEmpty(options.ItemId)) + { + throw new ArgumentException("ItemId is required"); + } + if (string.IsNullOrEmpty(options.DeviceId)) + { + throw new ArgumentException("DeviceId is required"); + } + if (options.Profile == null) + { + throw new ArgumentException("Profile is required"); + } + if (options.MediaSources == null) + { + throw new ArgumentException("MediaSources is required"); + } + } + + private void ApplyTranscodingConditions(StreamInfo item, IEnumerable conditions) + { + foreach (var condition in conditions + .Where(i => !string.IsNullOrEmpty(i.Value))) + { + var value = condition.Value; + + switch (condition.Property) + { + case ProfileConditionValue.AudioBitrate: + { + int num; + if (int.TryParse(value, NumberStyles.Any, _usCulture, out num)) + { + item.AudioBitrate = num; + } + break; + } + case ProfileConditionValue.AudioChannels: + { + int num; + if (int.TryParse(value, NumberStyles.Any, _usCulture, out num)) + { + item.MaxAudioChannels = num; + } + break; + } + case ProfileConditionValue.AudioProfile: + case ProfileConditionValue.Has64BitOffsets: + case ProfileConditionValue.VideoBitDepth: + case ProfileConditionValue.VideoProfile: + { + // Not supported yet + break; + } + case ProfileConditionValue.Height: + { + int num; + if (int.TryParse(value, NumberStyles.Any, _usCulture, out num)) + { + item.MaxHeight = num; + } + break; + } + case ProfileConditionValue.VideoBitrate: + { + int num; + if (int.TryParse(value, NumberStyles.Any, _usCulture, out num)) + { + item.VideoBitrate = num; + } + break; + } + case ProfileConditionValue.VideoFramerate: + { + int num; + if (int.TryParse(value, NumberStyles.Any, _usCulture, out num)) + { + item.MaxFramerate = num; + } + break; + } + case ProfileConditionValue.VideoLevel: + { + int num; + if (int.TryParse(value, NumberStyles.Any, _usCulture, out num)) + { + item.VideoLevel = num; + } + break; + } + case ProfileConditionValue.Width: + { + int num; + if (int.TryParse(value, NumberStyles.Any, _usCulture, out num)) + { + item.MaxWidth = num; + } + break; + } + default: + throw new ArgumentException("Unrecognized ProfileConditionValue"); + } + } + } + + private bool IsAudioProfileSupported(DirectPlayProfile profile, MediaSourceInfo item, MediaStream audioStream) + { + if (profile.Container.Length > 0) + { + // Check container type + var mediaContainer = item.Container ?? string.Empty; + if (!profile.GetContainers().Any(i => string.Equals(i, mediaContainer, StringComparison.OrdinalIgnoreCase))) + { + return false; + } + } + + return true; + } + + private bool IsVideoProfileSupported(DirectPlayProfile profile, MediaSourceInfo item, MediaStream videoStream, MediaStream audioStream) + { + // Only plain video files can be direct played + if (item.VideoType != VideoType.VideoFile) + { + return false; + } + + if (profile.Container.Length > 0) + { + // Check container type + var mediaContainer = item.Container ?? string.Empty; + if (!profile.GetContainers().Any(i => string.Equals(i, mediaContainer, StringComparison.OrdinalIgnoreCase))) + { + return false; + } + } + + // Check video codec + var videoCodecs = profile.GetVideoCodecs(); + if (videoCodecs.Count > 0) + { + var videoCodec = videoStream == null ? null : videoStream.Codec; + if (string.IsNullOrEmpty(videoCodec) || !videoCodecs.Contains(videoCodec, StringComparer.OrdinalIgnoreCase)) + { + return false; + } + } + + var audioCodecs = profile.GetAudioCodecs(); + if (audioCodecs.Count > 0) + { + // Check audio codecs + var audioCodec = audioStream == null ? null : audioStream.Codec; + if (string.IsNullOrEmpty(audioCodec) || !audioCodecs.Contains(audioCodec, StringComparer.OrdinalIgnoreCase)) + { + return false; + } + } + + return true; + } + + private bool AreConditionsSatisfied(IEnumerable conditions, string mediaPath, MediaStream videoStream, MediaStream audioStream) + { + return conditions.All(i => IsConditionSatisfied(i, mediaPath, videoStream, audioStream)); + } + + /// + /// Determines whether [is condition satisfied] [the specified condition]. + /// + /// The condition. + /// The media path. + /// The video stream. + /// The audio stream. + /// true if [is condition satisfied] [the specified condition]; otherwise, false. + /// Unexpected ProfileConditionType + private bool IsConditionSatisfied(ProfileCondition condition, string mediaPath, MediaStream videoStream, MediaStream audioStream) + { + if (condition.Property == ProfileConditionValue.Has64BitOffsets) + { + // TODO: Determine how to evaluate this + } + + if (condition.Property == ProfileConditionValue.VideoProfile) + { + var profile = videoStream == null ? null : videoStream.Profile; + + if (!string.IsNullOrEmpty(profile)) + { + switch (condition.Condition) + { + case ProfileConditionType.Equals: + return string.Equals(profile, condition.Value, StringComparison.OrdinalIgnoreCase); + case ProfileConditionType.NotEquals: + return !string.Equals(profile, condition.Value, StringComparison.OrdinalIgnoreCase); + default: + throw new InvalidOperationException("Unexpected ProfileConditionType"); + } + } + } + + else if (condition.Property == ProfileConditionValue.AudioProfile) + { + var profile = audioStream == null ? null : audioStream.Profile; + + if (!string.IsNullOrEmpty(profile)) + { + switch (condition.Condition) + { + case ProfileConditionType.Equals: + return string.Equals(profile, condition.Value, StringComparison.OrdinalIgnoreCase); + case ProfileConditionType.NotEquals: + return !string.Equals(profile, condition.Value, StringComparison.OrdinalIgnoreCase); + default: + throw new InvalidOperationException("Unexpected ProfileConditionType"); + } + } + } + + else + { + var actualValue = GetConditionValue(condition, mediaPath, videoStream, audioStream); + + if (actualValue.HasValue) + { + long expected; + if (long.TryParse(condition.Value, NumberStyles.Any, _usCulture, out expected)) + { + switch (condition.Condition) + { + case ProfileConditionType.Equals: + return actualValue.Value == expected; + case ProfileConditionType.GreaterThanEqual: + return actualValue.Value >= expected; + case ProfileConditionType.LessThanEqual: + return actualValue.Value <= expected; + case ProfileConditionType.NotEquals: + return actualValue.Value != expected; + default: + throw new InvalidOperationException("Unexpected ProfileConditionType"); + } + } + } + } + + // Value doesn't exist in metadata. Fail it if required. + return !condition.IsRequired; + } + + /// + /// Gets the condition value. + /// + /// The condition. + /// The media path. + /// The video stream. + /// The audio stream. + /// System.Nullable{System.Int64}. + /// Unexpected Property + private long? GetConditionValue(ProfileCondition condition, string mediaPath, MediaStream videoStream, MediaStream audioStream) + { + switch (condition.Property) + { + case ProfileConditionValue.AudioBitrate: + return audioStream == null ? null : audioStream.BitRate; + case ProfileConditionValue.AudioChannels: + return audioStream == null ? null : audioStream.Channels; + case ProfileConditionValue.VideoBitrate: + return videoStream == null ? null : videoStream.BitRate; + case ProfileConditionValue.VideoFramerate: + return videoStream == null ? null : (ConvertToLong(videoStream.AverageFrameRate ?? videoStream.RealFrameRate)); + case ProfileConditionValue.Height: + return videoStream == null ? null : videoStream.Height; + case ProfileConditionValue.Width: + return videoStream == null ? null : videoStream.Width; + case ProfileConditionValue.VideoLevel: + return videoStream == null ? null : ConvertToLong(videoStream.Level); + default: + throw new InvalidOperationException("Unexpected Property"); + } + } + + /// + /// Converts to long. + /// + /// The value. + /// System.Nullable{System.Int64}. + private long? ConvertToLong(float? val) + { + return val.HasValue ? Convert.ToInt64(val.Value) : (long?)null; + } + + /// + /// Converts to long. + /// + /// The value. + /// System.Nullable{System.Int64}. + private long? ConvertToLong(double? val) + { + return val.HasValue ? Convert.ToInt64(val.Value) : (long?)null; + } + } + +} diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs new file mode 100644 index 0000000000..21e4dae7bb --- /dev/null +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using MediaBrowser.Model.Dto; + +namespace MediaBrowser.Model.Dlna +{ + /// + /// Class StreamInfo. + /// + public class StreamInfo + { + public string ItemId { get; set; } + + public string MediaSourceId { get; set; } + + public bool IsDirectStream { get; set; } + + public DlnaProfileType MediaType { get; set; } + + public string Container { get; set; } + + public long StartPositionTicks { get; set; } + + public string VideoCodec { get; set; } + + public string AudioCodec { get; set; } + + public int? AudioStreamIndex { get; set; } + + public int? SubtitleStreamIndex { get; set; } + + public int? MaxAudioChannels { get; set; } + + public int? AudioBitrate { get; set; } + + public int? VideoBitrate { get; set; } + + public int? VideoLevel { get; set; } + + public int? MaxWidth { get; set; } + public int? MaxHeight { get; set; } + + public int? MaxFramerate { get; set; } + + public string DeviceProfileId { get; set; } + public string DeviceId { get; set; } + + public string ToUrl(string baseUrl) + { + return ToDlnaUrl(baseUrl); + } + + public string ToDlnaUrl(string baseUrl) + { + if (string.IsNullOrEmpty(baseUrl)) + { + throw new ArgumentNullException(baseUrl); + } + + var dlnaCommand = BuildDlnaParam(this); + + var extension = string.IsNullOrEmpty(Container) ? string.Empty : "." + Container; + + baseUrl = baseUrl.TrimEnd('/'); + + if (MediaType == DlnaProfileType.Audio) + { + return string.Format("{0}/audio/{1}/stream{2}?{3}", baseUrl, ItemId, extension, dlnaCommand); + } + return string.Format("{0}/videos/{1}/stream{2}?{3}", baseUrl, ItemId, extension, dlnaCommand); + } + + private static string BuildDlnaParam(StreamInfo item) + { + var usCulture = new CultureInfo("en-US"); + + var list = new List + { + item.DeviceProfileId ?? string.Empty, + item.DeviceId ?? string.Empty, + item.MediaSourceId ?? string.Empty, + (item.IsDirectStream).ToString().ToLower(), + item.VideoCodec ?? string.Empty, + item.AudioCodec ?? string.Empty, + item.AudioStreamIndex.HasValue ? item.AudioStreamIndex.Value.ToString(usCulture) : string.Empty, + item.SubtitleStreamIndex.HasValue ? item.SubtitleStreamIndex.Value.ToString(usCulture) : string.Empty, + item.VideoBitrate.HasValue ? item.VideoBitrate.Value.ToString(usCulture) : string.Empty, + item.AudioBitrate.HasValue ? item.AudioBitrate.Value.ToString(usCulture) : string.Empty, + item.MaxAudioChannels.HasValue ? item.MaxAudioChannels.Value.ToString(usCulture) : string.Empty, + item.MaxFramerate.HasValue ? item.MaxFramerate.Value.ToString(usCulture) : string.Empty, + item.MaxWidth.HasValue ? item.MaxWidth.Value.ToString(usCulture) : string.Empty, + item.MaxHeight.HasValue ? item.MaxHeight.Value.ToString(usCulture) : string.Empty, + item.StartPositionTicks.ToString(usCulture), + item.VideoLevel.HasValue ? item.VideoLevel.Value.ToString(usCulture) : string.Empty + }; + + return string.Format("Params={0}", string.Join(";", list.ToArray())); + } + + } + + /// + /// Class AudioOptions. + /// + public class AudioOptions + { + public string ItemId { get; set; } + public List MediaSources { get; set; } + public int? MaxBitrateSetting { get; set; } + public DeviceProfile Profile { get; set; } + public string MediaSourceId { get; set; } + public string DeviceId { get; set; } + } + + /// + /// Class VideoOptions. + /// + public class VideoOptions : AudioOptions + { + public int? AudioStreamIndex { get; set; } + public int? SubtitleStreamIndex { get; set; } + } +} diff --git a/MediaBrowser.Controller/Dlna/TranscodingProfile.cs b/MediaBrowser.Model/Dlna/TranscodingProfile.cs similarity index 93% rename from MediaBrowser.Controller/Dlna/TranscodingProfile.cs rename to MediaBrowser.Model/Dlna/TranscodingProfile.cs index 704ba54d26..ba02e9be25 100644 --- a/MediaBrowser.Controller/Dlna/TranscodingProfile.cs +++ b/MediaBrowser.Model/Dlna/TranscodingProfile.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Xml.Serialization; -namespace MediaBrowser.Controller.Dlna +namespace MediaBrowser.Model.Dlna { public class TranscodingProfile { @@ -35,7 +35,7 @@ namespace MediaBrowser.Controller.Dlna public List GetAudioCodecs() { - return (AudioCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToList(); + return (AudioCodec ?? string.Empty).Split(',').Where(i => !string.IsNullOrEmpty(i)).ToList(); } } diff --git a/MediaBrowser.Model/Dto/MediaVersionInfo.cs b/MediaBrowser.Model/Dto/MediaVersionInfo.cs index ddb3407877..37aefae55d 100644 --- a/MediaBrowser.Model/Dto/MediaVersionInfo.cs +++ b/MediaBrowser.Model/Dto/MediaVersionInfo.cs @@ -9,6 +9,8 @@ namespace MediaBrowser.Model.Dto public string Path { get; set; } + public string Container { get; set; } + public LocationType LocationType { get; set; } public string Name { get; set; } diff --git a/MediaBrowser.Model/Extensions/ModelExtensions.cs b/MediaBrowser.Model/Extensions/ModelExtensions.cs deleted file mode 100644 index 6717be8d9c..0000000000 --- a/MediaBrowser.Model/Extensions/ModelExtensions.cs +++ /dev/null @@ -1,20 +0,0 @@ - -namespace MediaBrowser.Model.Extensions -{ - /// - /// Class ModelExtensions - /// - static class ModelExtensions - { - /// - /// Values the or default. - /// - /// The STR. - /// The def. - /// System.String. - internal static string ValueOrDefault(this string str, string def = "") - { - return string.IsNullOrEmpty(str) ? def : str; - } - } -} diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 0859f69998..ec78a2b1b4 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -66,7 +66,16 @@ + + + + + + + + + @@ -155,7 +164,6 @@ - @@ -223,6 +231,7 @@ ..\packages\PropertyChanged.Fody.1.41.0.0\Lib\NET35\PropertyChanged.dll False + diff --git a/MediaBrowser.Model/Updates/PackageVersionInfo.cs b/MediaBrowser.Model/Updates/PackageVersionInfo.cs index 8b7b65f0cc..3b0a940190 100644 --- a/MediaBrowser.Model/Updates/PackageVersionInfo.cs +++ b/MediaBrowser.Model/Updates/PackageVersionInfo.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Extensions; -using System; +using System; using System.Runtime.Serialization; namespace MediaBrowser.Model.Updates @@ -39,7 +38,18 @@ namespace MediaBrowser.Model.Updates [IgnoreDataMember] public Version version { - get { return _version ?? (_version = new Version(versionStr.ValueOrDefault("0.0.0.1"))); } + get { return _version ?? (_version = new Version(ValueOrDefault(versionStr, "0.0.0.1"))); } + } + + /// + /// Values the or default. + /// + /// The STR. + /// The def. + /// System.String. + private static string ValueOrDefault(string str, string def = "") + { + return string.IsNullOrEmpty(str) ? def : str; } /// diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs index b92e823859..4deab67f2c 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs @@ -34,7 +34,8 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio { var collectionType = args.GetCollectionType(); - if (string.Equals(collectionType, CollectionType.Music, StringComparison.OrdinalIgnoreCase)) + if (string.Equals(collectionType, CollectionType.Music, StringComparison.OrdinalIgnoreCase) || + string.IsNullOrWhiteSpace(collectionType)) { return new Controller.Entities.Audio.Audio(); } diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json index 12cdb7035e..d0ba703197 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json @@ -1,31 +1 @@ -{ - "SettingsSaved": "Einstellungen gespeichert", - "AddUser": "Benutzer hinzuf\u00fcgen", - "Users": "Benutzer", - "Delete": "L\u00f6schen", - "Administrator": "Administrator", - "Password": "Passwort", - "CreatePassword": "Passwort erstellen", - "DeleteImage": "Bild l\u00f6schen", - "DeleteImageConfirmation": "M\u00f6chten Sie das Bild wirklich l\u00f6schen?", - "FileReadCancelled": "Das Einlesen der Datei wurde abgebrochen.", - "FileNotFound": "Datei nicht gefunden", - "FileReadError": "Beim Lesen der Datei ist ein Fehler aufgetreten.", - "DeleteUser": "Benutzer l\u00f6schen", - "DeleteUserConfirmation": "M\u00f6chten Sie {0} wirklich l\u00f6schen?", - "PasswordResetHeader": "Passwort zur\u00fccksetzen", - "PasswordResetComplete": "Das Passwort wurde zur\u00fcckgesetzt.", - "PasswordResetConfirmation": "M\u00f6chten Sie das Passwort wirklich zur\u00fccksetzen?", - "PasswordSaved": "Passwort gespeichert", - "PasswordMatchError": "Passwort und Passwortbest\u00e4tigung stimmen nicht \u00fcberein.", - "OptionOff": "Aus", - "OptionOn": "Ein", - "OptionRelease": "Release", - "OptionBeta": "Beta", - "OptionDev": "Dev", - "UninstallPluginHeader": "Deinstalliere Plugin", - "UninstallPluginConfirmation": "M\u00f6chten Sie {0} wirklich deinstallieren?", - "NoPluginConfigurationMessage": "Bei diesem Plugin kann nichts eingestellt werden.", - "NoPluginsInstalledMessage": "Sie haben keine Plugins installiert.", - "BrowsePluginCatalogMessage": "Durchsuchen Sie unsere Bibliothek um alle verf\u00fcgbaren Plugins anzuzeigen." -} \ No newline at end of file +{"SettingsSaved":"Einstellungen gespeichert","AddUser":"Benutzer hinzuf\u00fcgen","Users":"Benutzer","Delete":"L\u00f6schen","Administrator":"Administrator","Password":"Passwort","DeleteImage":"Bild l\u00f6schen","DeleteImageConfirmation":"M\u00f6chten Sie das Bild wirklich l\u00f6schen?","FileReadCancelled":"Das Einlesen der Datei wurde abgebrochen.","FileNotFound":"Datei nicht gefunden","FileReadError":"Beim Lesen der Datei ist ein Fehler aufgetreten.","DeleteUser":"Benutzer l\u00f6schen","DeleteUserConfirmation":"M\u00f6chten Sie {0} wirklich l\u00f6schen?","PasswordResetHeader":"Passwort zur\u00fccksetzen","PasswordResetComplete":"Das Passwort wurde zur\u00fcckgesetzt.","PasswordResetConfirmation":"M\u00f6chten Sie das Passwort wirklich zur\u00fccksetzen?","PasswordSaved":"Passwort gespeichert","PasswordMatchError":"Passwort und Passwortbest\u00e4tigung stimmen nicht \u00fcberein.","OptionOff":"Aus","OptionOn":"Ein","OptionRelease":"Release","OptionBeta":"Beta","OptionDev":"Dev","UninstallPluginHeader":"Deinstalliere Plugin","UninstallPluginConfirmation":"M\u00f6chten Sie {0} wirklich deinstallieren?","NoPluginConfigurationMessage":"Bei diesem Plugin kann nichts eingestellt werden.","NoPluginsInstalledMessage":"Sie haben keine Plugins installiert.","BrowsePluginCatalogMessage":"Durchsuchen Sie unsere Bibliothek um alle verf\u00fcgbaren Plugins anzuzeigen."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json index 7184d47247..b6f4bf209c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json @@ -1,31 +1 @@ -{ - "SettingsSaved": "Settings saved.", - "AddUser": "Add User", - "Users": "Users", - "Delete": "Delete", - "Administrator": "Administrator", - "Password": "Password", - "CreatePassword": "Create Password", - "DeleteImage": "Delete Image", - "DeleteImageConfirmation": "Are you sure you wish to delete this image?", - "FileReadCancelled": "The file read has been cancelled.", - "FileNotFound": "File not found.", - "FileReadError": "An error occurred while reading the file.", - "DeleteUser": "Delete User", - "DeleteUserConfirmation": "Are you sure you wish to delete {0}?", - "PasswordResetHeader": "Password Reset", - "PasswordResetComplete": "The password has been reset.", - "PasswordResetConfirmation": "Are you sure you wish to reset the password?", - "PasswordSaved": "Password saved.", - "PasswordMatchError": "Password and password confirmation must match.", - "OptionOff": "Off", - "OptionOn": "On", - "OptionRelease": "Release", - "OptionBeta": "Beta", - "OptionDev": "Dev", - "UninstallPluginHeader": "Uninstall Plugin", - "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?", - "NoPluginConfigurationMessage": "This plugin has nothing to configure.", - "NoPluginsInstalledMessage": "You have no plugins installed.", - "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins." -} \ No newline at end of file +{"SettingsSaved":"Settings saved.","AddUser":"Add User","Users":"Users","Delete":"Delete","Administrator":"Administrator","Password":"Password","DeleteImage":"Delete Image","DeleteImageConfirmation":"Are you sure you wish to delete this image?","FileReadCancelled":"The file read has been cancelled.","FileNotFound":"File not found.","FileReadError":"An error occurred while reading the file.","DeleteUser":"Delete User","DeleteUserConfirmation":"Are you sure you wish to delete {0}?","PasswordResetHeader":"Password Reset","PasswordResetComplete":"The password has been reset.","PasswordResetConfirmation":"Are you sure you wish to reset the password?","PasswordSaved":"Password saved.","PasswordMatchError":"Password and password confirmation must match.","OptionOff":"Off","OptionOn":"On","OptionRelease":"Release","OptionBeta":"Beta","OptionDev":"Dev","UninstallPluginHeader":"Uninstall Plugin","UninstallPluginConfirmation":"Are you sure you wish to uninstall {0}?","NoPluginConfigurationMessage":"This plugin has nothing to configure.","NoPluginsInstalledMessage":"You have no plugins installed.","BrowsePluginCatalogMessage":"Browse our plugin catalog to view available plugins."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json index b0b9fd1a91..f30c4213b9 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json @@ -1,31 +1 @@ -{ - "SettingsSaved": "Configuracion guardada", - "AddUser": "Agregar usuario", - "Users": "Usuarios", - "Delete": "Borrar", - "Administrator": "Administrador", - "Password": "Contrase\u00f1a", - "CreatePassword": "Crear Contrase\u00f1a", - "DeleteImage": "Borrar Imagen", - "DeleteImageConfirmation": "Esta seguro que desea borrar esta imagen?", - "FileReadCancelled": "La lectura del archivo se ha cancelado.", - "FileNotFound": "Archivo no encontrado.", - "FileReadError": "Se encontr\u00f3 un error al leer el archivo.", - "DeleteUser": "Borrar Usuario", - "DeleteUserConfirmation": "Esta seguro que desea eliminar a {0}?", - "PasswordResetHeader": "Restablecer contrase\u00f1a", - "PasswordResetComplete": "La contrase\u00f1a se ha restablecido.", - "PasswordResetConfirmation": "Esta seguro que desea restablecer la contrase\u00f1a?", - "PasswordSaved": "Contrase\u00f1a guardada.", - "PasswordMatchError": "La contrase\u00f1a y la confirmaci\u00f3n de la contrase\u00f1a deben de ser iguales.", - "OptionOff": "Apagado", - "OptionOn": "Prendido", - "OptionRelease": "Liberar", - "OptionBeta": "Beta", - "OptionDev": "Desarrollo", - "UninstallPluginHeader": "Desinstalar Plugin", - "UninstallPluginConfirmation": "Esta seguro que desea desinstalar {0}?", - "NoPluginConfigurationMessage": "El plugin no requiere configuraci\u00f3n", - "NoPluginsInstalledMessage": "No tiene plugins instalados.", - "BrowsePluginCatalogMessage": "Navegar el catalogo de plugins para ver los plugins disponibles." -} \ No newline at end of file +{"SettingsSaved":"Configuracion guardada","AddUser":"Agregar usuario","Users":"Usuarios","Delete":"Borrar","Administrator":"Administrador","Password":"Contrase\u00f1a","DeleteImage":"Borrar Imagen","DeleteImageConfirmation":"Esta seguro que desea borrar esta imagen?","FileReadCancelled":"La lectura del archivo se ha cancelado.","FileNotFound":"Archivo no encontrado.","FileReadError":"Se encontr\u00f3 un error al leer el archivo.","DeleteUser":"Borrar Usuario","DeleteUserConfirmation":"Esta seguro que desea eliminar a {0}?","PasswordResetHeader":"Restablecer contrase\u00f1a","PasswordResetComplete":"La contrase\u00f1a se ha restablecido.","PasswordResetConfirmation":"Esta seguro que desea restablecer la contrase\u00f1a?","PasswordSaved":"Contrase\u00f1a guardada.","PasswordMatchError":"La contrase\u00f1a y la confirmaci\u00f3n de la contrase\u00f1a deben de ser iguales.","OptionOff":"Apagado","OptionOn":"Prendido","OptionRelease":"Liberar","OptionBeta":"Beta","OptionDev":"Desarrollo","UninstallPluginHeader":"Desinstalar Plugin","UninstallPluginConfirmation":"Esta seguro que desea desinstalar {0}?","NoPluginConfigurationMessage":"El plugin no requiere configuraci\u00f3n","NoPluginsInstalledMessage":"No tiene plugins instalados.","BrowsePluginCatalogMessage":"Navegar el catalogo de plugins para ver los plugins disponibles."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json index 9e1ebbfee6..e26001abfb 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json @@ -1,31 +1 @@ -{ - "SettingsSaved": "Param\u00e8tres sauvegard\u00e9s.", - "AddUser": "Ajout\u00e9 Usager", - "Users": "Usagers", - "Delete": "Supprimer", - "Administrator": "Administrateur", - "Password": "Mot de passe", - "CreatePassword": "Cr\u00e9er mot de passe", - "DeleteImage": "Supprimer Image", - "DeleteImageConfirmation": "\u00cates-vous s\u00fbr de vouloir supprimer l'image?", - "FileReadCancelled": "La lecture du fichier a \u00e9t\u00e9 annul\u00e9e.", - "FileNotFound": "Fichier non trouv\u00e9", - "FileReadError": "Un erreur est survenue pendant la lecture du fichier.", - "DeleteUser": "Supprimer Usager", - "DeleteUserConfirmation": "\u00cates-vous s\u00fbr de vouloir supprimer {0}?", - "PasswordResetHeader": "Red\u00e9marrage du mot de passe", - "PasswordResetComplete": "Le mot de passe a \u00e9t\u00e9 red\u00e9marr\u00e9.", - "PasswordResetConfirmation": "\u00cates-vous s\u00fbr de vouloir red\u00e9marrer le mot de passe?", - "PasswordSaved": "Mot de passe sauvegard\u00e9.", - "PasswordMatchError": "Mot de passe et confirmation de mot de passe doivent correspondre.", - "OptionOff": "Off", - "OptionOn": "On", - "OptionRelease": "Lancement", - "OptionBeta": "Beta", - "OptionDev": "Dev", - "UninstallPluginHeader": "D\u00e9sinstaller module d'extention", - "UninstallPluginConfirmation": "\u00cates-vous s\u00fbr de vouloir d\u00e9sinstaller {0}?", - "NoPluginConfigurationMessage": "Ce module d'extension n'a rien \u00e0 configurer.", - "NoPluginsInstalledMessage": "Vous n'avez aucun module d'extension install\u00e9.", - "BrowsePluginCatalogMessage": "Explorer notre catalogue de modules d'extension pour voir ce qui est disponible." -} \ No newline at end of file +{"SettingsSaved":"Param\u00e8tres sauvegard\u00e9s.","AddUser":"Ajouter utilisateur","Users":"Utilisateur","Delete":"Supprimer","Administrator":"Administrateur","Password":"Mot de passe","DeleteImage":"Supprimer Image","DeleteImageConfirmation":"\u00cates-vous s\u00fbr de vouloir supprimer l'image?","FileReadCancelled":"La lecture du fichier a \u00e9t\u00e9 annul\u00e9e.","FileNotFound":"Fichier non trouv\u00e9","FileReadError":"Un erreur est survenue pendant la lecture du fichier.","DeleteUser":"Supprimer utilisateur","DeleteUserConfirmation":"\u00cates-vous s\u00fbr de vouloir supprimer {0}?","PasswordResetHeader":"R\u00e9initialisation du mot de passe","PasswordResetComplete":"Le mot de passe a \u00e9t\u00e9 r\u00e9initialis\u00e9.","PasswordResetConfirmation":"\u00cates-vous s\u00fbr de vouloir r\u00e9initialiser le mot de passe?","PasswordSaved":"Mot de passe sauvegard\u00e9.","PasswordMatchError":"Mot de passe et confirmation de mot de passe doivent correspondre.","OptionOff":"Off","OptionOn":"On","OptionRelease":"Lancement","OptionBeta":"Beta","OptionDev":"Dev","UninstallPluginHeader":"D\u00e9sinstaller Plug-in","UninstallPluginConfirmation":"\u00cates-vous s\u00fbr de vouloir d\u00e9sinstaller {0}?","NoPluginConfigurationMessage":"Ce module d'extension n'a rien \u00e0 configurer.","NoPluginsInstalledMessage":"Vous n'avez aucun module d'extension install\u00e9.","BrowsePluginCatalogMessage":"Explorer notre catalogue de modules d'extension pour voir ce qui est disponible."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json new file mode 100644 index 0000000000..ebac5c29b2 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json @@ -0,0 +1 @@ +{"SettingsSaved":"Settaggi salvati.","AddUser":"Aggiungi utente","Users":"Utenti","Delete":"Elimina","Administrator":"Amministratore","Password":"Password","DeleteImage":"Elimina immagine","DeleteImageConfirmation":"Sei sicuro di voler eliminare questa immagine?","FileReadCancelled":"Il file letto \u00e8 stato cancellato.","FileNotFound":"File non trovato","FileReadError":"Errore durante la lettura del file.","DeleteUser":"Elimina utente","DeleteUserConfirmation":"Sei sicuro di voler eliminare {0}?","PasswordResetHeader":"Ripristina Password","PasswordResetComplete":"la password \u00e8 stata ripristinata.","PasswordResetConfirmation":"Sei sicuro di voler ripristinare la password?","PasswordSaved":"Password salvata.","PasswordMatchError":"Le password non coincidono.","OptionOff":"Spegni","OptionOn":"Accendi","OptionRelease":"Versione","OptionBeta":"Beta","OptionDev":"Dev","UninstallPluginHeader":"Disinstalla Plugin","UninstallPluginConfirmation":"Sei sicuro di voler Disinstallare {0}?","NoPluginConfigurationMessage":"Questo Plugin non \u00e8 stato configurato.","NoPluginsInstalledMessage":"non ci sono Plugins installati.","BrowsePluginCatalogMessage":"Sfoglia il catalogo dei Plugins."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index 6b014bf34f..178e820a1d 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -5,7 +5,6 @@ "Delete": "Delete", "Administrator": "Administrator", "Password": "Password", - "CreatePassword": "Create Password", "DeleteImage": "Delete Image", "DeleteImageConfirmation": "Are you sure you wish to delete this image?", "FileReadCancelled": "The file read has been cancelled.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json index 17a343283c..3807780867 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json @@ -1,31 +1 @@ -{ - "SettingsSaved": "Instellingen opgeslagen.", - "AddUser": "Gebruiker toevoegen", - "Users": "Gebruikers", - "Delete": "Verwijderen", - "Administrator": "Beheerder", - "Password": "Wachtwoord", - "CreatePassword": "Maak wachtwoord", - "DeleteImage": "Verwijder afbeelding", - "DeleteImageConfirmation": "Weet je zeker dat je deze afbeelding wilt verwijderen?", - "FileReadCancelled": "Het lezen van het bestand is geannuleerd", - "FileNotFound": "Bestand niet gevonden.", - "FileReadError": "Er is een fout opgetreden bij het lezen van het bestand.", - "DeleteUser": "Verwijder gebruiker", - "DeleteUserConfirmation": "Weet je zeker dat je {0} wilt verwijderen?", - "PasswordResetHeader": "Wachtwoord opnieuw instellen", - "PasswordResetComplete": "Het wachtwoord is opnieuw ingesteld.", - "PasswordResetConfirmation": "Weet je zeker dat je het wachtwoord opnieuw in wilt stellen?", - "PasswordSaved": "Wachtwoord opgeslagen.", - "PasswordMatchError": "Wachtwoord en wachtwoord bevestiging moeten hetzelfde zijn.", - "OptionOff": "Uit", - "OptionOn": "Aan", - "OptionRelease": "Release", - "OptionBeta": "Beta", - "OptionDev": "Dev", - "UninstallPluginHeader": "Deinstalleer Plugin", - "UninstallPluginConfirmation": "Weet u zeker dat u {0} wilt deinstalleren?", - "NoPluginConfigurationMessage": "Deze plugin heeft niets in te stellen", - "NoPluginsInstalledMessage": "U heeft geen plugins geinstalleerd", - "BrowsePluginCatalogMessage": "Blader door de Plugincatalogus voor beschikbare plugins." -} \ No newline at end of file +{"SettingsSaved":"Instellingen opgeslagen.","AddUser":"Gebruiker toevoegen","Users":"Gebruikers","Delete":"Verwijderen","Administrator":"Beheerder","Password":"Wachtwoord","DeleteImage":"Verwijder afbeelding","DeleteImageConfirmation":"Weet je zeker dat je deze afbeelding wilt verwijderen?","FileReadCancelled":"Het lezen van het bestand is geannuleerd","FileNotFound":"Bestand niet gevonden.","FileReadError":"Er is een fout opgetreden bij het lezen van het bestand.","DeleteUser":"Verwijder gebruiker","DeleteUserConfirmation":"Weet je zeker dat je {0} wilt verwijderen?","PasswordResetHeader":"Wachtwoord opnieuw instellen","PasswordResetComplete":"Het wachtwoord is opnieuw ingesteld.","PasswordResetConfirmation":"Weet je zeker dat je het wachtwoord opnieuw in wilt stellen?","PasswordSaved":"Wachtwoord opgeslagen.","PasswordMatchError":"Wachtwoord en wachtwoord bevestiging moeten hetzelfde zijn.","OptionOff":"Uit","OptionOn":"Aan","OptionRelease":"Release","OptionBeta":"Beta","OptionDev":"Dev","UninstallPluginHeader":"Deinstalleer Plugin","UninstallPluginConfirmation":"Weet u zeker dat u {0} wilt deinstalleren?","NoPluginConfigurationMessage":"Deze plugin heeft niets in te stellen","NoPluginsInstalledMessage":"U heeft geen plugins geinstalleerd","BrowsePluginCatalogMessage":"Blader door de Plugincatalogus voor beschikbare plugins."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json index 73734c0c66..45c3ce3f1b 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json @@ -1,31 +1 @@ -{ - "SettingsSaved": "Prefer\u00eancias salvas.", - "AddUser": "Adicionar Usu\u00e1rio", - "Users": "Usu\u00e1rios", - "Delete": "Apagar", - "Administrator": "Administrador", - "Password": "Senha", - "CreatePassword": "Criar Senha", - "DeleteImage": "Apagar Imagem", - "DeleteImageConfirmation": "Tem certeza que deseja apagar esta imagem?", - "FileReadCancelled": "A leitura do arquivo foi cancelada.", - "FileNotFound": "Arquivo n\u00e3o encontrado.", - "FileReadError": "Ocorreu um erro ao ler o arquivo.", - "DeleteUser": "Apagar Usu\u00e1rio", - "DeleteUserConfirmation": "Tem certeza que deseja apagar {0}?", - "PasswordResetHeader": "Redefinir Senha", - "PasswordResetComplete": "A senha foi redefinida.", - "PasswordResetConfirmation": "Deseja realmente redefinir a senha?", - "PasswordSaved": "Senha salva.", - "PasswordMatchError": "A senha e confirma\u00e7\u00e3o da senha devem conferir.", - "OptionOff": "Off", - "OptionOn": "On", - "OptionRelease": "Release", - "OptionBeta": "Beta", - "OptionDev": "Dev", - "UninstallPluginHeader": "Desintalar Plugin", - "UninstallPluginConfirmation": "Deseja realmente desinstalar {0}?", - "NoPluginConfigurationMessage": "Este plugin n\u00e3o necessita configurar.", - "NoPluginsInstalledMessage": "N\u00e3o existem plugins instalados.", - "BrowsePluginCatalogMessage": "Navegue pelo cat\u00e1logo de plugins para ver os dispon\u00edveis." -} \ No newline at end of file +{"SettingsSaved":"Prefer\u00eancias salvas.","AddUser":"Adicionar Usu\u00e1rio","Users":"Usu\u00e1rios","Delete":"Apagar","Administrator":"Administrador","Password":"Senha","DeleteImage":"Apagar Imagem","DeleteImageConfirmation":"Tem certeza que deseja apagar esta imagem?","FileReadCancelled":"A leitura do arquivo foi cancelada.","FileNotFound":"Arquivo n\u00e3o encontrado.","FileReadError":"Ocorreu um erro ao ler o arquivo.","DeleteUser":"Apagar Usu\u00e1rio","DeleteUserConfirmation":"Tem certeza que deseja apagar {0}?","PasswordResetHeader":"Redefinir Senha","PasswordResetComplete":"A senha foi redefinida.","PasswordResetConfirmation":"Deseja realmente redefinir a senha?","PasswordSaved":"Senha salva.","PasswordMatchError":"A senha e confirma\u00e7\u00e3o da senha devem conferir.","OptionOff":"Off","OptionOn":"On","OptionRelease":"Release","OptionBeta":"Beta","OptionDev":"Dev","UninstallPluginHeader":"Desintalar Plugin","UninstallPluginConfirmation":"Deseja realmente desinstalar {0}?","NoPluginConfigurationMessage":"Este plugin n\u00e3o necessita configurar.","NoPluginsInstalledMessage":"N\u00e3o existem plugins instalados.","BrowsePluginCatalogMessage":"Navegue pelo cat\u00e1logo de plugins para ver os dispon\u00edveis."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json index 1245644993..db7eb9f587 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json @@ -1,31 +1 @@ -{ - "SettingsSaved": "Configura\u00e7\u00f5es guardadas.", - "AddUser": "Adicionar Utilizador", - "Users": "Utilizadores", - "Delete": "Apagar", - "Administrator": "Administrador", - "Password": "Senha", - "CreatePassword": "Criar Senha", - "DeleteImage": "Apagar Imagem", - "DeleteImageConfirmation": "Tem a certeza que pretende apagar a imagem?", - "FileReadCancelled": "A leitura do ficheiro foi cancelada.", - "FileNotFound": "Ficheiro n\u00e3o encontrado", - "FileReadError": "Ocorreu um erro ao ler o ficheiro.", - "DeleteUser": "Apagar Utilizador", - "DeleteUserConfirmation": "Tem a certeza que pretende apagar {0}?", - "PasswordResetHeader": "Redefinir Senha", - "PasswordResetComplete": "A senha foi redefinida.", - "PasswordResetConfirmation": "Tem a certeza que pretende redefinir a senha?", - "PasswordSaved": "Senha guardada.", - "PasswordMatchError": "A senha e a confirma\u00e7\u00e3o da senha devem coincidir.", - "OptionOff": "Desligado", - "OptionOn": "Ligado", - "OptionRelease": "Final", - "OptionBeta": "Beta", - "OptionDev": "Dev", - "UninstallPluginHeader": "Desinstalar extens\u00e3o", - "UninstallPluginConfirmation": "Tem a certeza que pretende desinstalar {0}?", - "NoPluginConfigurationMessage": "Esta extens\u00e3o n\u00e3o \u00e9 configur\u00e1vel.", - "NoPluginsInstalledMessage": "N\u00e3o tem extens\u00f5es instaladas.", - "BrowsePluginCatalogMessage": "Navegue o nosso cat\u00e1logo de extens\u00f5es para ver as extens\u00f5es dispon\u00edveis." -} \ No newline at end of file +{"SettingsSaved":"Configura\u00e7\u00f5es guardadas.","AddUser":"Adicionar Utilizador","Users":"Utilizadores","Delete":"Apagar","Administrator":"Administrador","Password":"Senha","DeleteImage":"Apagar Imagem","DeleteImageConfirmation":"Tem a certeza que pretende apagar a imagem?","FileReadCancelled":"A leitura do ficheiro foi cancelada.","FileNotFound":"Ficheiro n\u00e3o encontrado","FileReadError":"Ocorreu um erro ao ler o ficheiro.","DeleteUser":"Apagar Utilizador","DeleteUserConfirmation":"Tem a certeza que pretende apagar {0}?","PasswordResetHeader":"Redefinir Senha","PasswordResetComplete":"A senha foi redefinida.","PasswordResetConfirmation":"Tem a certeza que pretende redefinir a senha?","PasswordSaved":"Senha guardada.","PasswordMatchError":"A senha e a confirma\u00e7\u00e3o da senha devem coincidir.","OptionOff":"Desligado","OptionOn":"Ligado","OptionRelease":"Final","OptionBeta":"Beta","OptionDev":"Dev","UninstallPluginHeader":"Desinstalar extens\u00e3o","UninstallPluginConfirmation":"Tem a certeza que pretende desinstalar {0}?","NoPluginConfigurationMessage":"Esta extens\u00e3o n\u00e3o \u00e9 configur\u00e1vel.","NoPluginsInstalledMessage":"N\u00e3o tem extens\u00f5es instaladas.","BrowsePluginCatalogMessage":"Navegue o nosso cat\u00e1logo de extens\u00f5es para ver as extens\u00f5es dispon\u00edveis."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json index 2657b96883..10823c6928 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json @@ -1,31 +1 @@ -{ - "SettingsSaved": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b", - "AddUser": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", - "Users": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438", - "Delete": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c", - "Administrator": "\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440", - "Password": "\u041f\u0430\u0440\u043e\u043b\u044c", - "CreatePassword": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c", - "DeleteImage": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", - "DeleteImageConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435?", - "FileReadCancelled": "\u0427\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e", - "FileNotFound": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d", - "FileReadError": "\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430", - "DeleteUser": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", - "DeleteUserConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c {0}?", - "PasswordResetHeader": "\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f", - "PasswordResetComplete": "\u041f\u0430\u0440\u043e\u043b\u044c \u0431\u044b\u043b \u0441\u0431\u0440\u043e\u0448\u0435\u043d", - "PasswordResetConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c?", - "PasswordSaved": "\u041f\u0430\u0440\u043e\u043b\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d", - "PasswordMatchError": "\u041f\u043e\u043b\u044f \u041f\u0430\u0440\u043e\u043b\u044c \u0438 \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c", - "OptionOff": "\u0412\u044b\u043a\u043b.", - "OptionOn": "\u0412\u043a\u043b.", - "OptionRelease": "\u0412\u044b\u043f\u0443\u0441\u043a", - "OptionBeta": "\u0411\u0435\u0442\u0430", - "OptionDev": "\u0420\u0430\u0437\u0440\u0430\u0431.", - "UninstallPluginHeader": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d", - "UninstallPluginConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c {0}?", - "NoPluginConfigurationMessage": "\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a", - "NoPluginsInstalledMessage": "\u0423 \u0412\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.", - "BrowsePluginCatalogMessage": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u0448\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432." -} \ No newline at end of file +{"SettingsSaved":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b","AddUser":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","Users":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438","Delete":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c","Administrator":"\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440","Password":"\u041f\u0430\u0440\u043e\u043b\u044c","DeleteImage":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","DeleteImageConfirmation":"\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435?","FileReadCancelled":"\u0427\u0442\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0431\u044b\u043b\u043e \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e","FileNotFound":"\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d","FileReadError":"\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430","DeleteUser":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","DeleteUserConfirmation":"\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c {0}?","PasswordResetHeader":"\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f","PasswordResetComplete":"\u041f\u0430\u0440\u043e\u043b\u044c \u0431\u044b\u043b \u0441\u0431\u0440\u043e\u0448\u0435\u043d","PasswordResetConfirmation":"\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c?","PasswordSaved":"\u041f\u0430\u0440\u043e\u043b\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d","PasswordMatchError":"\u041f\u043e\u043b\u044f \u041f\u0430\u0440\u043e\u043b\u044c \u0438 \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c","OptionOff":"\u0412\u044b\u043a\u043b.","OptionOn":"\u0412\u043a\u043b.","OptionRelease":"\u0412\u044b\u043f\u0443\u0441\u043a","OptionBeta":"\u0411\u0435\u0442\u0430","OptionDev":"\u0420\u0430\u0437\u0440\u0430\u0431.","UninstallPluginHeader":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d","UninstallPluginConfirmation":"\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c {0}?","NoPluginConfigurationMessage":"\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043d\u0435\u0447\u0435\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c.","NoPluginsInstalledMessage":"\u0423 \u0412\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.","BrowsePluginCatalogMessage":"\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u0448\u0438\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json index ca7b3a7c75..325ca47b9c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json @@ -1,31 +1 @@ -{ - "SettingsSaved": "\u8a2d\u7f6e\u5df2\u4fdd\u5b58", - "AddUser": "Add User", - "Users": "\u7528\u6236", - "Delete": "\u522a\u9664", - "Administrator": "\u7ba1\u7406\u54e1", - "Password": "\u5bc6\u78bc", - "CreatePassword": "\u5275\u5efa\u5bc6\u78bc", - "DeleteImage": "\u522a\u9664\u5716\u50cf", - "DeleteImageConfirmation": "\u4f60\u78ba\u5b9a\u8981\u522a\u9664\u9019\u5f35\u5716\u7247\uff1f", - "FileReadCancelled": "The file read has been cancelled.", - "FileNotFound": "File not found.", - "FileReadError": "An error occurred while reading the file.", - "DeleteUser": "\u522a\u9664\u7528\u6236", - "DeleteUserConfirmation": "Are you sure you wish to delete {0}?", - "PasswordResetHeader": "\u91cd\u8a2d\u5bc6\u78bc", - "PasswordResetComplete": "\u5bc6\u78bc\u5df2\u91cd\u8a2d", - "PasswordResetConfirmation": "\u4f60\u78ba\u5b9a\u8981\u91cd\u8a2d\u5bc6\u78bc\uff1f", - "PasswordSaved": "\u5bc6\u78bc\u5df2\u4fdd\u5b58\u3002", - "PasswordMatchError": "\u5bc6\u78bc\u548c\u78ba\u8a8d\u5bc6\u78bc\u5fc5\u9808\u4e00\u81f4\u3002", - "OptionOff": "Off", - "OptionOn": "On", - "OptionRelease": "Release", - "OptionBeta": "Beta", - "OptionDev": "Dev", - "UninstallPluginHeader": "Uninstall Plugin", - "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?", - "NoPluginConfigurationMessage": "This plugin has nothing to configure.", - "NoPluginsInstalledMessage": "You have no plugins installed.", - "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins." -} \ No newline at end of file +{"SettingsSaved":"\u8a2d\u7f6e\u5df2\u4fdd\u5b58","AddUser":"Add User","Users":"\u7528\u6236","Delete":"\u522a\u9664","Administrator":"\u7ba1\u7406\u54e1","Password":"\u5bc6\u78bc","DeleteImage":"\u522a\u9664\u5716\u50cf","DeleteImageConfirmation":"\u4f60\u78ba\u5b9a\u8981\u522a\u9664\u9019\u5f35\u5716\u7247\uff1f","FileReadCancelled":"The file read has been cancelled.","FileNotFound":"File not found.","FileReadError":"An error occurred while reading the file.","DeleteUser":"\u522a\u9664\u7528\u6236","DeleteUserConfirmation":"Are you sure you wish to delete {0}?","PasswordResetHeader":"\u91cd\u8a2d\u5bc6\u78bc","PasswordResetComplete":"\u5bc6\u78bc\u5df2\u91cd\u8a2d","PasswordResetConfirmation":"\u4f60\u78ba\u5b9a\u8981\u91cd\u8a2d\u5bc6\u78bc\uff1f","PasswordSaved":"\u5bc6\u78bc\u5df2\u4fdd\u5b58\u3002","PasswordMatchError":"\u5bc6\u78bc\u548c\u78ba\u8a8d\u5bc6\u78bc\u5fc5\u9808\u4e00\u81f4\u3002","OptionOff":"Off","OptionOn":"On","OptionRelease":"Release","OptionBeta":"Beta","OptionDev":"Dev","UninstallPluginHeader":"Uninstall Plugin","UninstallPluginConfirmation":"Are you sure you wish to uninstall {0}?","NoPluginConfigurationMessage":"This plugin has nothing to configure.","NoPluginsInstalledMessage":"You have no plugins installed.","BrowsePluginCatalogMessage":"Browse our plugin catalog to view available plugins."} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs index 9b907ef747..7c6f49d72e 100644 --- a/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs +++ b/MediaBrowser.Server.Implementations/Localization/LocalizationManager.cs @@ -338,6 +338,8 @@ namespace MediaBrowser.Server.Implementations.Localization new LocalizatonOption{ Name="Dutch", Value="nl"}, new LocalizatonOption{ Name="French", Value="fr"}, new LocalizatonOption{ Name="German", Value="de"}, + new LocalizatonOption{ Name="Hebrew", Value="he"}, + new LocalizatonOption{ Name="Italian", Value="it"}, new LocalizatonOption{ Name="Portuguese (Brazil)", Value="pt-BR"}, new LocalizatonOption{ Name="Portuguese (Portugal)", Value="pt-PT"}, new LocalizatonOption{ Name="Russian", Value="ru"}, diff --git a/MediaBrowser.Server.Implementations/Localization/Server/de.json b/MediaBrowser.Server.Implementations/Localization/Server/de.json index 36d6993d87..95109ec5db 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/de.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json @@ -1,50 +1 @@ -{ - "LabelExit": "Ende", - "LabelVisitCommunity": "Besuche die Community", - "LabelGithubWiki": "Github Wiki", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelViewApiDocumentation": "Zeige API Dokumentation", - "LabelBrowseLibrary": "Durchsuche Bibliothek", - "LabelConfigureMediaBrowser": "Konfiguriere Media Browser", - "LabelOpenLibraryViewer": "\u00d6ffne Bibliothekenansicht", - "LabelRestartServer": "Server neustarten", - "LabelShowLogWindow": "Zeige Log Fenster", - "LabelPrevious": "Vorheriges", - "LabelFinish": "Ende", - "LabelNext": "N\u00e4chstes", - "LabelYoureDone": "Du bist fertig!", - "WelcomeToMediaBrowser": "Willkommen zu Media Browser!", - "LabelMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Dieser Assistent wird Sie durch den Einrichtungsprozess f\u00fchren.", - "TellUsAboutYourself": "Sagen Sie uns etwas \u00fcber sich selbst", - "LabelYourFirstName": "Ihr Vorname:", - "MoreUsersCanBeAddedLater": "Weitere Benutzer k\u00f6nnen Sie sp\u00e4ter im Dashboard hinzuf\u00fcgen.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Ein Windows Service wurde installiert.", - "WindowsServiceIntro1": "Media Browser 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.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.", - "LabelConfigureSettings": "Konfiguriere Einstellungen", - "LabelEnableVideoImageExtraction": "Aktiviere Videobild-Extrahierung", - "VideoImageExtractionHelp": "F\u00fcr Videos die noch keien Bilder haben, und f\u00fcr die wir keine Internetbilder finden k\u00f6nnen. Hierdurch wird der erste Bibliothekenscan etwas mehr Zeit beanspruchen, f\u00fchrt aber zu einer ansprechenderen Pr\u00e4sentation.", - "LabelEnableChapterImageExtractionForMovies": "Extrahiere Kapitelbilder f\u00fcr Filme", - "LabelChapterImageExtractionForMoviesHelp": "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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Aktiviere automatische Portweiterleitung", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "ButtonOk": "Ok", - "ButtonCancel": "Abbrechen", - "HeaderSetupLibrary": "Medienbibliothek einrichten", - "ButtonAddMediaFolder": "Medienordner hinzuf\u00fcgen", - "LabelFolderType": "Ordnertyp:", - "MediaFolderHelpPluginRequired": "* Ben\u00f6tigt ein Plugin, wie GameBrowser oder MB Bookshelf.", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Land:", - "LabelLanguage": "Sprache:", - "HeaderPreferredMetadataLanguage": "Bevorzugte Metadata Sprache:", - "LabelSaveLocalMetadata": "Speichere Bildmaterial und Metadaten in den Medienodnern", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Lade Bildmaterial und Metadaten aus dem Internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations." -} \ No newline at end of file +{"LabelExit":"Ende","LabelVisitCommunity":"Besuche die Community","LabelGithubWiki":"Github Wiki","LabelSwagger":"Swagger","LabelStandard":"Standard","LabelViewApiDocumentation":"Zeige API Dokumentation","LabelBrowseLibrary":"Durchsuche Bibliothek","LabelConfigureMediaBrowser":"Konfiguriere Media Browser","LabelOpenLibraryViewer":"\u00d6ffne Bibliothekenansicht","LabelRestartServer":"Server neustarten","LabelShowLogWindow":"Zeige Log Fenster","LabelPrevious":"Vorheriges","LabelFinish":"Ende","LabelNext":"N\u00e4chstes","LabelYoureDone":"Du bist fertig!","WelcomeToMediaBrowser":"Willkommen zu Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"Dieser Assistent wird Sie durch den Einrichtungsprozess f\u00fchren.","TellUsAboutYourself":"Sagen Sie uns etwas \u00fcber sich selbst","LabelYourFirstName":"Ihr Vorname:","MoreUsersCanBeAddedLater":"Weitere Benutzer k\u00f6nnen Sie sp\u00e4ter im Dashboard hinzuf\u00fcgen.","UserProfilesIntro":"Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.","LabelWindowsService":"Windows Service","AWindowsServiceHasBeenInstalled":"Ein Windows Service wurde installiert.","WindowsServiceIntro1":"Media Browser 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.","WindowsServiceIntro2":"If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.","WizardCompleted":"That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.","LabelConfigureSettings":"Konfiguriere Einstellungen","LabelEnableVideoImageExtraction":"Aktiviere Videobild-Extrahierung","VideoImageExtractionHelp":"F\u00fcr Videos die noch keien Bilder haben, und f\u00fcr die wir keine Internetbilder finden k\u00f6nnen. Hierdurch wird der erste Bibliothekenscan etwas mehr Zeit beanspruchen, f\u00fchrt aber zu einer ansprechenderen Pr\u00e4sentation.","LabelEnableChapterImageExtractionForMovies":"Extrahiere Kapitelbilder f\u00fcr Filme","LabelChapterImageExtractionForMoviesHelp":"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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.","LabelEnableAutomaticPortMapping":"Aktiviere automatische Portweiterleitung","LabelEnableAutomaticPortMappingHelp":"UPnP allows automated router configuration for easy remote access. This may not work with some router models.","ButtonOk":"Ok","ButtonCancel":"Abbrechen","HeaderSetupLibrary":"Medienbibliothek einrichten","ButtonAddMediaFolder":"Medienordner hinzuf\u00fcgen","LabelFolderType":"Ordnertyp:","MediaFolderHelpPluginRequired":"* Ben\u00f6tigt ein Plugin, wie GameBrowser oder MB Bookshelf.","ReferToMediaLibraryWiki":"Refer to the media library wiki.","LabelCountry":"Land:","LabelLanguage":"Sprache:","HeaderPreferredMetadataLanguage":"Bevorzugte Metadata Sprache:","LabelSaveLocalMetadata":"Speichere Bildmaterial und Metadaten in den Medienodnern","LabelSaveLocalMetadataHelp":"Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.","LabelDownloadInternetMetadata":"Lade Bildmaterial und Metadaten aus dem Internet","LabelDownloadInternetMetadataHelp":"Media Browser can download information about your media to enable rich presentations.","TabPreferences":"Preferences","TabPassword":"Password","TabLibraryAccess":"Library Access","TabImage":"Image","TabProfile":"Profile","LabelDisplayMissingEpisodesWithinSeasons":"Display missing episodes within seasons","LabelUnairedMissingEpisodesWithinSeasons":"Display unaired episodes within seasons","HeaderVideoPlaybackSettings":"Video Playback Settings","LabelAudioLanguagePreference":"Audio language preference:","LabelSubtitleLanguagePreference":"Subtitle language preference:","LabelDisplayForcedSubtitlesOnly":"Display only forced subtitles","TabProfiles":"Profiles","TabSecurity":"Security","ButtonAddUser":"Add User","ButtonSave":"Save","ButtonResetPassword":"Reset Password","LabelNewPassword":"New password:","LabelNewPasswordConfirm":"New password confirm:","HeaderCreatePassword":"Create Password","LabelCurrentPassword":"Current password:","LabelMaxParentalRating":"Maximum allowed parental rating:","MaxParentalRatingHelp":"Content with a higher rating will be hidden from this user.","LibraryAccessHelp":"Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.","ButtonDeleteImage":"Delete Image","ButtonUpload":"Upload","HeaderUploadNewImage":"Upload New Image","LabelDropImageHere":"Drop Image Here","ImageUploadAspectRatioHelp":"1:1 Aspect Ratio Recommended. JPG\/PNG only.","MessageNothingHere":"Nothing here.","MessagePleaseEnsureInternetMetadata":"Please ensure downloading of internet metadata is enabled.","TabSuggested":"Suggested","TabLatest":"Latest","TabUpcoming":"Upcoming","TabShows":"Shows","TabEpisodes":"Episodes","TabGenres":"Genres","TabPeople":"People","TabNetworks":"Networks"} \ 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 40269bde39..714799f609 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json @@ -1,50 +1 @@ -{ - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", - "LabelGithubWiki": "Github Wiki", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelViewApiDocumentation": "View Api Documentation", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureMediaBrowser": "Configure Media Browser", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Previous", - "LabelFinish": "Finish", - "LabelNext": "Next", - "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "LabelMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.", - "TellUsAboutYourself": "Tell us about yourself", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser 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.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations." -} \ No newline at end of file +{"LabelExit":"Exit","LabelVisitCommunity":"Visit Community","LabelGithubWiki":"Github Wiki","LabelSwagger":"Swagger","LabelStandard":"Standard","LabelViewApiDocumentation":"View Api Documentation","LabelBrowseLibrary":"Browse Library","LabelConfigureMediaBrowser":"Configure Media Browser","LabelOpenLibraryViewer":"Open Library Viewer","LabelRestartServer":"Restart Server","LabelShowLogWindow":"Show Log Window","LabelPrevious":"Previous","LabelFinish":"Finish","LabelNext":"Next","LabelYoureDone":"You're Done!","WelcomeToMediaBrowser":"Welcome to Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"This wizard will help guide you through the setup process.","TellUsAboutYourself":"Tell us about yourself","LabelYourFirstName":"Your first name:","MoreUsersCanBeAddedLater":"More users can be added later within the Dashboard.","UserProfilesIntro":"Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.","LabelWindowsService":"Windows Service","AWindowsServiceHasBeenInstalled":"A Windows Service has been installed.","WindowsServiceIntro1":"Media Browser 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.","WindowsServiceIntro2":"If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.","WizardCompleted":"That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.","LabelConfigureSettings":"Configure settings","LabelEnableVideoImageExtraction":"Enable video image extraction","VideoImageExtractionHelp":"For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.","LabelEnableChapterImageExtractionForMovies":"Extract chapter image extraction for Movies","LabelChapterImageExtractionForMoviesHelp":"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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.","LabelEnableAutomaticPortMapping":"Enable automatic port mapping","LabelEnableAutomaticPortMappingHelp":"UPnP allows automated router configuration for easy remote access. This may not work with some router models.","ButtonOk":"Ok","ButtonCancel":"Cancel","HeaderSetupLibrary":"Setup your media library","ButtonAddMediaFolder":"Add media folder","LabelFolderType":"Folder type:","MediaFolderHelpPluginRequired":"* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.","ReferToMediaLibraryWiki":"Refer to the media library wiki.","LabelCountry":"Country:","LabelLanguage":"Language:","HeaderPreferredMetadataLanguage":"Preferred metadata language:","LabelSaveLocalMetadata":"Save artwork and metadata into media folders","LabelSaveLocalMetadataHelp":"Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.","LabelDownloadInternetMetadata":"Download artwork and metadata from the internet","LabelDownloadInternetMetadataHelp":"Media Browser can download information about your media to enable rich presentations.","TabPreferences":"Preferences","TabPassword":"Password","TabLibraryAccess":"Library Access","TabImage":"Image","TabProfile":"Profile","LabelDisplayMissingEpisodesWithinSeasons":"Display missing episodes within seasons","LabelUnairedMissingEpisodesWithinSeasons":"Display unaired episodes within seasons","HeaderVideoPlaybackSettings":"Video Playback Settings","LabelAudioLanguagePreference":"Audio language preference:","LabelSubtitleLanguagePreference":"Subtitle language preference:","LabelDisplayForcedSubtitlesOnly":"Display only forced subtitles","TabProfiles":"Profiles","TabSecurity":"Security","ButtonAddUser":"Add User","ButtonSave":"Save","ButtonResetPassword":"Reset Password","LabelNewPassword":"New password:","LabelNewPasswordConfirm":"New password confirm:","HeaderCreatePassword":"Create Password","LabelCurrentPassword":"Current password:","LabelMaxParentalRating":"Maximum allowed parental rating:","MaxParentalRatingHelp":"Content with a higher rating will be hidden from this user.","LibraryAccessHelp":"Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.","ButtonDeleteImage":"Delete Image","ButtonUpload":"Upload","HeaderUploadNewImage":"Upload New Image","LabelDropImageHere":"Drop Image Here","ImageUploadAspectRatioHelp":"1:1 Aspect Ratio Recommended. JPG\/PNG only.","MessageNothingHere":"Nothing here.","MessagePleaseEnsureInternetMetadata":"Please ensure downloading of internet metadata is enabled.","TabSuggested":"Suggested","TabLatest":"Latest","TabUpcoming":"Upcoming","TabShows":"Shows","TabEpisodes":"Episodes","TabGenres":"Genres","TabPeople":"People","TabNetworks":"Networks"} \ 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 f475e1db4d..be46dfa269 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json @@ -1,50 +1 @@ -{ - "LabelExit": "Salir", - "LabelVisitCommunity": "Visitar la comunidad", - "LabelGithubWiki": "Wiki de Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Estandar", - "LabelViewApiDocumentation": "Ver documentacion de Api", - "LabelBrowseLibrary": "Navegar biblioteca", - "LabelConfigureMediaBrowser": "Configurar Media Browser", - "LabelOpenLibraryViewer": "Abrir el visor de la biblioteca", - "LabelRestartServer": "reiniciar el servidor", - "LabelShowLogWindow": "Mostrar la ventana del log", - "LabelPrevious": "Anterior", - "LabelFinish": "Terminar", - "LabelNext": "Siguiente", - "LabelYoureDone": "Ha Terminado!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "LabelMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.", - "TellUsAboutYourself": "Tell us about yourself", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser 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.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations." -} \ No newline at end of file +{"LabelExit":"Salir","LabelVisitCommunity":"Visitar la comunidad","LabelGithubWiki":"Wiki de Github","LabelSwagger":"Swagger","LabelStandard":"Estandar","LabelViewApiDocumentation":"Ver documentacion de Api","LabelBrowseLibrary":"Navegar biblioteca","LabelConfigureMediaBrowser":"Configurar Media Browser","LabelOpenLibraryViewer":"Abrir el visor de la biblioteca","LabelRestartServer":"reiniciar el servidor","LabelShowLogWindow":"Mostrar la ventana del log","LabelPrevious":"Anterior","LabelFinish":"Terminar","LabelNext":"Siguiente","LabelYoureDone":"Ha Terminado!","WelcomeToMediaBrowser":"Bienvenido a Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"Este asistente lo guiara por el proceso de instalaci\u00f3n.","TellUsAboutYourself":"D\u00edganos acerca de usted","LabelYourFirstName":"Su nombre","MoreUsersCanBeAddedLater":"M\u00e1s usuarios pueden agregarse m\u00e1s tarde en el tablero de instrumentos.","UserProfilesIntro":"Media Browser incluye soporte integrado para los perfiles de usuario, lo que permite que cada usuario tenga su propia configuraci\u00f3n de la pantalla, estado de reproducci\u00f3n y controles de los padres.","LabelWindowsService":"Servicio de Windows","AWindowsServiceHasBeenInstalled":"Un servicio de Windows se ha instalado","WindowsServiceIntro1":"Media Browser Server se ejecuta normalmente como una aplicaci\u00f3n de escritorio con un icono de la bandeja, pero si lo prefiere para ejecutarlo como un servicio en el fondo, se puede iniciar desde el panel de control de servicios de Windows en su lugar.","WindowsServiceIntro2":"Si se utiliza el servicio de Windows, tenga en cuenta que no se puede ejecutar al mismo tiempo que el icono de la bandeja, por lo que tendr\u00e1 que salir de la bandeja con el fin de ejecutar el servicio. Tambi\u00e9n tendr\u00e1 que ser configurado con privilegios administrativos a trav\u00e9s del panel de control del servicio. Tenga en cuenta que en este momento el servicio no es capaz de auto-actualizaci\u00f3n, por lo que las nuevas versiones requieren la interacci\u00f3n manual.","WizardCompleted":"Eso es todo lo que necesitamos por ahora. Media Browser ha comenzado a reunir informaci\u00f3n sobre su biblioteca de medios. Echa un vistazo a algunas de nuestras aplicaciones, y luego haga clic en Finalizar<\/b> para ver el Dashboard<\/b>.","LabelConfigureSettings":"Configuraci\u00f3n de opciones","LabelEnableVideoImageExtraction":"Habilitar extracci\u00f3n de im\u00e1genes de video","VideoImageExtractionHelp":"Para los v\u00eddeos que no dispongan de las im\u00e1genes, y que no podemos encontrar en Internet im\u00e1genes. Esto agregar\u00e1 un tiempo adicional para la exploraci\u00f3n inicial de bibliotecas, pero resultar\u00e1 en una presentaci\u00f3n m\u00e1s agradable.","LabelEnableChapterImageExtractionForMovies":"Extraer im\u00e1genes de cap\u00edtulos para pel\u00edculas","LabelChapterImageExtractionForMoviesHelp":"Extraer im\u00e1genes de cap\u00edtulo permitir\u00e1 a los clientes mostrar men\u00fas gr\u00e1ficos de selecci\u00f3n de escenas. El proceso puede ser lento, intensivo en utilizaci\u00f3n del CPU y puede requerir varios gigabytes de espacio. Se ejecuta como una tarea en noche, a las 4 de la ma\u00f1ana, aunque esto se puede configurar en el \u00e1rea de tareas programadas. No se recomienda ejecutar esta tarea durante las horas pico de uso","LabelEnableAutomaticPortMapping":"Habilitar asignaci\u00f3n de puertos autom\u00e1tico","LabelEnableAutomaticPortMappingHelp":"UPnP permite la configuraci\u00f3n de ruteador de manera autom\u00e1tica, para acceso remoto de manera f\u00e1cil. Eso puede no funcionar para algunos modelos de ruteadores","ButtonOk":"OK","ButtonCancel":"Cancelar","HeaderSetupLibrary":"Establecer biblioteca de medios","ButtonAddMediaFolder":"Agregar una carpeta de medios","LabelFolderType":"Tipo de carpeta:","MediaFolderHelpPluginRequired":"* Requiere el uso de un plugin, por ejemplo GameBrowser o MB Bookshelf","ReferToMediaLibraryWiki":"Consultar el wiki de la biblioteca de medios","LabelCountry":"Pa\u00eds:","LabelLanguage":"Idioma:","HeaderPreferredMetadataLanguage":"Idioma preferido para metadata","LabelSaveLocalMetadata":"Guardar im\u00e1genes y metadata en las carpetas de medios","LabelSaveLocalMetadataHelp":"Guardar im\u00e1genes y metadata directamente en las carpetas de medios, permitir\u00e1 colocarlas en un lugar donde se pueden editar f\u00e1cilmente.","LabelDownloadInternetMetadata":"Descargar imagenes y metadata de internet","LabelDownloadInternetMetadataHelp":"Media Browser permite descargar informaci\u00f3n acerca de su media para enriquecer la presentaci\u00f3n.","TabPreferences":"Preferencias","TabPassword":"Contrase\u00f1a","TabLibraryAccess":"Acceso a biblioteca","TabImage":"imagen","TabProfile":"Perfil","LabelDisplayMissingEpisodesWithinSeasons":"Mostar episodios no disponibles en temporadas","LabelUnairedMissingEpisodesWithinSeasons":"Mostrar episodios a\u00fan no emitidos en temporadas","HeaderVideoPlaybackSettings":"Ajustes de Reproducci\u00f3n de Video","LabelAudioLanguagePreference":"Preferencia de idioma de audio","LabelSubtitleLanguagePreference":"Preferencia de idioma de subtitulos","LabelDisplayForcedSubtitlesOnly":"Mostrar \u00fanicamente subtitulos forzados","TabProfiles":"Perfiles","TabSecurity":"Seguridad","ButtonAddUser":"Agregar Usuario","ButtonSave":"Grabar","ButtonResetPassword":"Reiniciar Contrase\u00f1a","LabelNewPassword":"Nueva Contrase\u00f1a:","LabelNewPasswordConfirm":"Confirmaci\u00f3n de contrase\u00f1a nueva:","HeaderCreatePassword":"Crear Contrase\u00f1a","LabelCurrentPassword":"Contrase\u00f1a actual","LabelMaxParentalRating":"M\u00e1xima clasificaci\u00f3n permitida","MaxParentalRatingHelp":"El contenido con clasificaci\u00f3n parental superior se ocultar\u00e1 para este usuario.","LibraryAccessHelp":"Seleccione las carpetas de medios para compartir con este usuario. Los administradores podr\u00e1n editar todas las carpetas usando el gestor de metadata.","ButtonDeleteImage":"Borrar imagen","ButtonUpload":"Subir","HeaderUploadNewImage":"Subir nueva imagen","LabelDropImageHere":"Depositar Imagen Aqu\u00ed","ImageUploadAspectRatioHelp":"Se Recomienda una Proporci\u00f3n de Aspecto 1:1. Solo JPG\/PNG","MessageNothingHere":"Nada aqu\u00ed.","MessagePleaseEnsureInternetMetadata":"Por favor aseg\u00farese que la descarga de metadata del internet esta habilitada","TabSuggested":"Sugerencia","TabLatest":"Ultima","TabUpcoming":"Siguiente","TabShows":"Programas","TabEpisodes":"Episodios","TabGenres":"Generos","TabPeople":"Gente","TabNetworks":"redes"} \ 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 c2934807c9..6a312f98d2 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -1,50 +1 @@ -{ - "LabelExit": "Quitter", - "LabelVisitCommunity": "Visiter Communaut\u00e9", - "LabelGithubWiki": "GitHub Wiki", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelViewApiDocumentation": "Consulter la documentation API", - "LabelBrowseLibrary": "Naviguer la biblioth\u00e8que", - "LabelConfigureMediaBrowser": "Configurer Media Browser", - "LabelOpenLibraryViewer": "Ouvrir le navigateur de biblioth\u00e8que", - "LabelRestartServer": "Red\u00e9marrer Serveur", - "LabelShowLogWindow": "Afficher la fen\u00eatre du journal d'\u00e9v\u00e8nements", - "LabelPrevious": "Pr\u00e9c\u00e9dant", - "LabelFinish": "Termin\u00e9", - "LabelNext": "Suivant", - "LabelYoureDone": "Vous avez Termin\u00e9!", - "WelcomeToMediaBrowser": "Bienvenue \u00e0 Media Browser!", - "LabelMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Cet assistant vous guidera dans le processus de configuration.", - "TellUsAboutYourself": "Parlez-nous de vous", - "LabelYourFirstName": "Votre pr\u00e9nom:", - "MoreUsersCanBeAddedLater": "Plus d'usagers pourrons \u00eatre ajout\u00e9s ult\u00e9rieurement \u00e0 partir du tableau de bord.", - "UserProfilesIntro": "Media Browser supporte nativement les profiles d'usager, donnant la possibilit\u00e9 pour chaque usager d'avoir ses propres param\u00e8tres d'affichage, \u00e9tats de lecture et param\u00e8tres de contr\u00f4le parental.", - "LabelWindowsService": "Service Windows", - "AWindowsServiceHasBeenInstalled": "Un service Windows a \u00e9t\u00e9 install\u00e9.", - "WindowsServiceIntro1": "Media Browser, normalement, fonctionne en tant qu'application de bureau avec un ic\u00f4ne de barre de t\u00e2ches, mais si vous pr\u00e9f\u00e9rez son fonctionnement en tant que service d'arri\u00e8re-plan, il peut \u00eatre d\u00e9marr\u00e9 par le gestionnaire de service Windows.", - "WindowsServiceIntro2": "Si le service Windows est utilis\u00e9, veuillez noter qu'il ne peut pas fonctionner en m\u00eame temps que l'application par la barre de t\u00e2che, donc il faut fermer l'application de la barre de t\u00e2ches pour pouvoir ex\u00e9cuter le service. Le service devra aussi \u00eatre configur\u00e9 avec les droits administratifs par le panneau de configuration. Veuillez noter qu'actuellement les mise \u00e0 jour automatique par le service ne sont pas stables, donc les mises \u00e0 jour devront se faire par interaction manuelle.", - "WizardCompleted": "C'est tout ce dont nous avons besoins pour l'instant. Media Browser a commenc\u00e9 \u00e0 ramasser l'information sur votre biblioth\u00e8que de m\u00e9dia. Visiter quelques unes de nos applications, ensuite cliquer Termin\u00e9<\/b> pour voir le Tableau de bord<\/b>", - "LabelConfigureSettings": "Configurer param\u00e8tres", - "LabelEnableVideoImageExtraction": "Activer l'extraction d'image des videos", - "VideoImageExtractionHelp": "Pour les vid\u00e9os sans images et que nous n'avons pas trouv\u00e9 par Internet. Ce processus prolongera la mise \u00e0 jour initiale de biblioth\u00e8que mais offrira une meilleure pr\u00e9sentation visuelle.", - "LabelEnableChapterImageExtractionForMovies": "Extraire les images de chapitre pour les films", - "LabelChapterImageExtractionForMoviesHelp": "L'extraction d'images de chapitre permettra aux clients d'afficher des menus graphiques des sc\u00e8nes. Le processus peut \u00eatre long et exigeant en ressource processeur et de stockage (plusieurs Gigabytes). Il s'ex\u00e9cute par d\u00e9faut dans les t\u00e2ches programm\u00e9es \u00e0 4:00 AM mais peut \u00eatre modifi\u00e9 dans les options de t\u00e2ches programm\u00e9es. Il n'est pas recommand\u00e9 d'ex\u00e9cuter cette t\u00e2che dans les heures d'utilisation standard.", - "LabelEnableAutomaticPortMapping": "Activer la configuration automatique de port", - "LabelEnableAutomaticPortMappingHelp": "UPnP permet la configuration automatique de routeur pour un acc\u00e8s distance facile. Ceci peut ne pas fonctionner sur certains mod\u00e8les de routeur.", - "ButtonOk": "Ok", - "ButtonCancel": "Annuler", - "HeaderSetupLibrary": "Configurer votre biblioth\u00e8que de m\u00e9dia", - "ButtonAddMediaFolder": "Ajouter r\u00e9pertoire de m\u00e9dia", - "LabelFolderType": "Type de r\u00e9pertoire:", - "MediaFolderHelpPluginRequired": "* Requiert l'utilisation d'un plug-in, Ex: GameBrowser ou MB BookShelf", - "ReferToMediaLibraryWiki": "Se r\u00e9f\u00e9rer au wiki des biblioth\u00e8ques de m\u00e9dia", - "LabelCountry": "Pays:", - "LabelLanguage": "Langue:", - "HeaderPreferredMetadataLanguage": "Langue de m\u00e9tadonn\u00e9es pr\u00e9f\u00e9r\u00e9e:", - "LabelSaveLocalMetadata": "Enregistrer les images et m\u00e9tadonn\u00e9es dans les r\u00e9pertoires de m\u00e9dia", - "LabelSaveLocalMetadataHelp": "Enregistrer les images et m\u00e9tadonn\u00e9es dans les r\u00e9pertoires de m\u00e9dia va les placer \u00e0 un endroit o\u00f9 elles pourront facilement \u00eatre modifi\u00e9es.", - "LabelDownloadInternetMetadata": "T\u00e9l\u00e9charger les images et m\u00e9tadonn\u00e9es de Internet", - "LabelDownloadInternetMetadataHelp": "Media Browser peut t\u00e9l\u00e9charger l'information \u00e0 propos de votre m\u00e9dia pour offrir une pr\u00e9sentation plus riche." -} \ No newline at end of file +{"LabelExit":"Quitter","LabelVisitCommunity":"Visiter Communaut\u00e9","LabelGithubWiki":"GitHub Wiki","LabelSwagger":"Swagger","LabelStandard":"Standard","LabelViewApiDocumentation":"Consulter la documentation API","LabelBrowseLibrary":"Parcourir la biblioth\u00e8que","LabelConfigureMediaBrowser":"Configurer Media Browser","LabelOpenLibraryViewer":"Ouvrir le navigateur de biblioth\u00e8que","LabelRestartServer":"Red\u00e9marrer Serveur","LabelShowLogWindow":"Afficher la fen\u00eatre du journal d'\u00e9v\u00e8nements","LabelPrevious":"Pr\u00e9c\u00e9dent","LabelFinish":"Termin\u00e9","LabelNext":"Suivant","LabelYoureDone":"Vous avez Termin\u00e9!","WelcomeToMediaBrowser":"Bienvenue \u00e0 Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"Cet assistant vous guidera dans le processus de configuration.","TellUsAboutYourself":"Parlez-nous de vous","LabelYourFirstName":"Votre pr\u00e9nom:","MoreUsersCanBeAddedLater":"Plus d'utilisateurs pourrons \u00eatre ajout\u00e9s ult\u00e9rieurement \u00e0 partir du tableau de bord.","UserProfilesIntro":"Media Browser supporte nativement les profiles d'usager, donnant la possibilit\u00e9 pour chaque usager d'avoir ses propres param\u00e8tres d'affichage, \u00e9tats de lecture et param\u00e8tres de contr\u00f4le parental.","LabelWindowsService":"Service Windows","AWindowsServiceHasBeenInstalled":"Un service Windows a \u00e9t\u00e9 install\u00e9.","WindowsServiceIntro1":"Media Browser, normalement, fonctionne en tant qu'application de bureau avec un ic\u00f4ne de barre de t\u00e2ches, mais si vous pr\u00e9f\u00e9rez son fonctionnement en tant que service d'arri\u00e8re-plan, il peut \u00eatre d\u00e9marr\u00e9 par le gestionnaire de service Windows.","WindowsServiceIntro2":"Si le service Windows est utilis\u00e9, veuillez noter qu'il ne peut pas fonctionner en m\u00eame temps que l'application par la barre de t\u00e2che, donc il faut fermer l'application de la barre de t\u00e2ches pour pouvoir ex\u00e9cuter le service. Le service devra aussi \u00eatre configur\u00e9 avec les droits administratifs par le panneau de configuration. Veuillez noter qu'actuellement les mise \u00e0 jour automatique par le service ne sont pas stables, donc les mises \u00e0 jour devront se faire par interaction manuelle.","WizardCompleted":"C'est tout ce dont nous avons besoins pour l'instant. Media Browser a commenc\u00e9 \u00e0 collecter l'information sur votre biblioth\u00e8que de m\u00e9dia. Visiter quelques unes de nos applications, ensuite cliquer Termin\u00e9<\/b> pour voir le Tableau de bord<\/b>","LabelConfigureSettings":"Configurer param\u00e8tres","LabelEnableVideoImageExtraction":"Activer l'extraction d'image des videos","VideoImageExtractionHelp":"Pour les vid\u00e9os sans images et que nous n'avons pas trouv\u00e9 par Internet. Ce processus prolongera la mise \u00e0 jour initiale de biblioth\u00e8que mais offrira une meilleure pr\u00e9sentation visuelle.","LabelEnableChapterImageExtractionForMovies":"Extraire les images de chapitre pour les films","LabelChapterImageExtractionForMoviesHelp":"L'extraction d'images de chapitre permettra aux clients d'afficher des menus graphiques des sc\u00e8nes. Le processus peut \u00eatre long et exigeant en ressource processeur et de stockage (plusieurs Gigabytes). Il s'ex\u00e9cute par d\u00e9faut dans les t\u00e2ches programm\u00e9es \u00e0 4:00 AM mais peut \u00eatre modifi\u00e9 dans les options de t\u00e2ches programm\u00e9es. Il n'est pas recommand\u00e9 d'ex\u00e9cuter cette t\u00e2che dans les heures d'utilisation standard.","LabelEnableAutomaticPortMapping":"Activer la configuration automatique de port","LabelEnableAutomaticPortMappingHelp":"UPnP permet la configuration automatique de routeur pour un acc\u00e8s distance facile. Ceci peut ne pas fonctionner sur certains mod\u00e8les de routeur.","ButtonOk":"Ok","ButtonCancel":"Annuler","HeaderSetupLibrary":"Configurer votre biblioth\u00e8que de m\u00e9dia","ButtonAddMediaFolder":"Ajouter r\u00e9pertoire de m\u00e9dia","LabelFolderType":"Type de r\u00e9pertoire:","MediaFolderHelpPluginRequired":"* Requiert l'utilisation d'un plug-in, Ex: GameBrowser ou MB BookShelf","ReferToMediaLibraryWiki":"Se r\u00e9f\u00e9rer au wiki des biblioth\u00e8ques de m\u00e9dia","LabelCountry":"Pays:","LabelLanguage":"Langue:","HeaderPreferredMetadataLanguage":"Langue de m\u00e9tadonn\u00e9es pr\u00e9f\u00e9r\u00e9e:","LabelSaveLocalMetadata":"Enregistrer les images et m\u00e9tadonn\u00e9es dans les r\u00e9pertoires de m\u00e9dia","LabelSaveLocalMetadataHelp":"Enregistrer les images et m\u00e9tadonn\u00e9es dans les r\u00e9pertoires de m\u00e9dia va les placer \u00e0 un endroit o\u00f9 elles pourront facilement \u00eatre modifi\u00e9es.","LabelDownloadInternetMetadata":"T\u00e9l\u00e9charger les images et m\u00e9tadonn\u00e9es depuis Internet","LabelDownloadInternetMetadataHelp":"Media Browser peut t\u00e9l\u00e9charger l'information \u00e0 propos de votre m\u00e9dia pour offrir une pr\u00e9sentation plus riche.","TabPreferences":"Pr\u00e9f\u00e9rences","TabPassword":"Mot de Passe","TabLibraryAccess":"Acc\u00e8s aux biblioth\u00e8ques","TabImage":"Image","TabProfile":"Profil","LabelDisplayMissingEpisodesWithinSeasons":"Afficher les \u00e9pisodes manquantes dans les saisons","LabelUnairedMissingEpisodesWithinSeasons":"Afficher les \u00e9pisodes non diffus\u00e9s dans les saisons","HeaderVideoPlaybackSettings":"Param\u00e8tres de lecture video","LabelAudioLanguagePreference":"Param\u00e8tres de langue audio:","LabelSubtitleLanguagePreference":"Param\u00e8tres le langue de sous-titre","LabelDisplayForcedSubtitlesOnly":"Afficher seulement les sous-titres forc\u00e9s","TabProfiles":"Profiles","TabSecurity":"S\u00e9curit\u00e9","ButtonAddUser":"Ajouter utilisateur","ButtonSave":"Sauvegarder","ButtonResetPassword":"R\u00e9initialiser Mot de Passe","LabelNewPassword":"Nouveau mot de passe","LabelNewPasswordConfirm":"Confirmation du nouveau mot de passe:","HeaderCreatePassword":"Cr\u00e9er Mot de Passe","LabelCurrentPassword":"Mot de passe actuel:","LabelMaxParentalRating":"Maximum allowed parental rating:","MaxParentalRatingHelp":"Content with a higher rating will be hidden from this user.","LibraryAccessHelp":"Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.","ButtonDeleteImage":"Supprimer Image","ButtonUpload":"Envoyer","HeaderUploadNewImage":"Envoyer nouvelle image","LabelDropImageHere":"Drop Image Here","ImageUploadAspectRatioHelp":"1:1 Aspect Ratio Recommended. JPG\/PNG only.","MessageNothingHere":"Rien ici.","MessagePleaseEnsureInternetMetadata":"SVP s'assurer que le t\u00e9l\u00e9chargement des m\u00e9tadonn\u00e9es depuis Internet soit activ\u00e9.","TabSuggested":"Sugg\u00e9r\u00e9","TabLatest":"Plus recents","TabUpcoming":"\u00c0 venir","TabShows":"Shows","TabEpisodes":"\u00c9pisodes","TabGenres":"Genres","TabPeople":"Personne","TabNetworks":"R\u00e9seaux"} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/he.json b/MediaBrowser.Server.Implementations/Localization/Server/he.json new file mode 100644 index 0000000000..be97a0c6c3 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json @@ -0,0 +1 @@ +{"LabelExit":"\u05d9\u05e6\u05d9\u05d0\u05d4","LabelVisitCommunity":"Visit Community","LabelGithubWiki":"Github Wiki","LabelSwagger":"Swagger","LabelStandard":"Standard","LabelViewApiDocumentation":"View Api Documentation","LabelBrowseLibrary":"Browse Library","LabelConfigureMediaBrowser":"Configure Media Browser","LabelOpenLibraryViewer":"Open Library Viewer","LabelRestartServer":"Restart Server","LabelShowLogWindow":"Show Log Window","LabelPrevious":"Previous","LabelFinish":"Finish","LabelNext":"Next","LabelYoureDone":"You're Done!","WelcomeToMediaBrowser":"Welcome to Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"This wizard will help guide you through the setup process.","TellUsAboutYourself":"Tell us about yourself","LabelYourFirstName":"Your first name:","MoreUsersCanBeAddedLater":"More users can be added later within the Dashboard.","UserProfilesIntro":"Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.","LabelWindowsService":"Windows Service","AWindowsServiceHasBeenInstalled":"A Windows Service has been installed.","WindowsServiceIntro1":"Media Browser 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.","WindowsServiceIntro2":"If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.","WizardCompleted":"That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.","LabelConfigureSettings":"Configure settings","LabelEnableVideoImageExtraction":"Enable video image extraction","VideoImageExtractionHelp":"For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.","LabelEnableChapterImageExtractionForMovies":"Extract chapter image extraction for Movies","LabelChapterImageExtractionForMoviesHelp":"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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.","LabelEnableAutomaticPortMapping":"Enable automatic port mapping","LabelEnableAutomaticPortMappingHelp":"UPnP allows automated router configuration for easy remote access. This may not work with some router models.","ButtonOk":"Ok","ButtonCancel":"Cancel","HeaderSetupLibrary":"Setup your media library","ButtonAddMediaFolder":"Add media folder","LabelFolderType":"Folder type:","MediaFolderHelpPluginRequired":"* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.","ReferToMediaLibraryWiki":"Refer to the media library wiki.","LabelCountry":"Country:","LabelLanguage":"Language:","HeaderPreferredMetadataLanguage":"Preferred metadata language:","LabelSaveLocalMetadata":"Save artwork and metadata into media folders","LabelSaveLocalMetadataHelp":"Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.","LabelDownloadInternetMetadata":"Download artwork and metadata from the internet","LabelDownloadInternetMetadataHelp":"Media Browser can download information about your media to enable rich presentations.","TabPreferences":"Preferences","TabPassword":"Password","TabLibraryAccess":"Library Access","TabImage":"Image","TabProfile":"Profile","LabelDisplayMissingEpisodesWithinSeasons":"Display missing episodes within seasons","LabelUnairedMissingEpisodesWithinSeasons":"Display unaired episodes within seasons","HeaderVideoPlaybackSettings":"Video Playback Settings","LabelAudioLanguagePreference":"Audio language preference:","LabelSubtitleLanguagePreference":"Subtitle language preference:","LabelDisplayForcedSubtitlesOnly":"Display only forced subtitles","TabProfiles":"Profiles","TabSecurity":"Security","ButtonAddUser":"Add User","ButtonSave":"Save","ButtonResetPassword":"Reset Password","LabelNewPassword":"New password:","LabelNewPasswordConfirm":"New password confirm:","HeaderCreatePassword":"Create Password","LabelCurrentPassword":"Current password:","LabelMaxParentalRating":"Maximum allowed parental rating:","MaxParentalRatingHelp":"Content with a higher rating will be hidden from this user.","LibraryAccessHelp":"Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.","ButtonDeleteImage":"Delete Image","ButtonUpload":"Upload","HeaderUploadNewImage":"Upload New Image","LabelDropImageHere":"Drop Image Here","ImageUploadAspectRatioHelp":"1:1 Aspect Ratio Recommended. JPG\/PNG only.","MessageNothingHere":"Nothing here.","MessagePleaseEnsureInternetMetadata":"Please ensure downloading of internet metadata is enabled.","TabSuggested":"Suggested","TabLatest":"Latest","TabUpcoming":"Upcoming","TabShows":"Shows","TabEpisodes":"Episodes","TabGenres":"Genres","TabPeople":"People","TabNetworks":"Networks"} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/it.json b/MediaBrowser.Server.Implementations/Localization/Server/it.json new file mode 100644 index 0000000000..363756f2c6 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json @@ -0,0 +1 @@ +{"LabelExit":"Esci","LabelVisitCommunity":"Visita Comunit\u00e0","LabelGithubWiki":"Github Wiki","LabelSwagger":"Swagger","LabelStandard":"Standard","LabelViewApiDocumentation":"Documentazione Api","LabelBrowseLibrary":"Soglia Libreria","LabelConfigureMediaBrowser":"Configura Media Browser","LabelOpenLibraryViewer":"Apri Libreria","LabelRestartServer":"Riavvia Server","LabelShowLogWindow":"Mostra Finestra log","LabelPrevious":"Precedente","LabelFinish":"Finito","LabelNext":"Prossimo","LabelYoureDone":"Tu hai Finito!","WelcomeToMediaBrowser":"Benvenuto in Media browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"Procedura Guidata per l'installazione.","TellUsAboutYourself":"Parlaci di te","LabelYourFirstName":"Nome","MoreUsersCanBeAddedLater":"Puoi aggiungere altri utenti in un secondo momento all'interno del pannello di configurazione","UserProfilesIntro":"Media Browser include il supporto integrato per i profili utente, permettendo ad ogni utente di avere le proprie impostazioni di visualizzazione.","LabelWindowsService":"Servizio Windows","AWindowsServiceHasBeenInstalled":"Servizio Windows Installato","WindowsServiceIntro1":"Media Browser Server, normalmente viene eseguito come un'applicazione desktop con una icona nella barra, ma se si preferisce farlo funzionare come un servizio in background, pu\u00f2 essere avviato dal pannello di controllo dei servizi di Windows, invece.","WindowsServiceIntro2":"Se si utilizza il servizio di Windows, si ricorda che non pu\u00f2 essere eseguito allo stesso tempo come l'icona di sistema, quindi devi chiudere l'applicazione al fine di eseguire il servizio. Il servizio dovr\u00e0 anche essere configurato con privilegi amministrativi tramite il pannello di controllo. Si prega di notare che in questo momento il servizio non \u00e8 in grado di Autoaggiornarsi, quindi le nuove versioni richiedono l'interazione manuale","WizardCompleted":"Questo \u00e8 tutto abbiamo bisogno per ora. Browser Media ha iniziato a raccogliere informazioni sulla vostra libreria multimediale. Scopri alcune delle nostre applicazioni, quindi fare clic su Finito<\/b> per aprireil pannello di controllo<\/b>.","LabelConfigureSettings":"Configura","LabelEnableVideoImageExtraction":"Estrazione immagine video non possibile","VideoImageExtractionHelp":"Per i video che sono sprovvisti di immagini,e che non siamo riusciti a trovarle su Internet.Questo aggiunger\u00e0 del tempo addizionale alla scansione della tua libreria ma si tradurr\u00e0 in una presentazione pi\u00f9 piacevole.","LabelEnableChapterImageExtractionForMovies":"Estrazione immagine capitolo estratto per Film","LabelChapterImageExtractionForMoviesHelp":"L'Estrazione di immagini capitoli permetter\u00e0 ai clienti di visualizzare i menu di selezione delle scene . Il processo pu\u00f2 essere lento e pu\u00f2 richiedere diversi gigabyte di spazio. Viene schedulato alle 04:00, anche se questo \u00e8 configurabile nella zona di operazioni pianificate. Non \u00e8 consigliabile eseguire questa operazione durante le ore di picco.","LabelEnableAutomaticPortMapping":"Abilita mappatura delle porte automatiche","LabelEnableAutomaticPortMappingHelp":"UPnP consente la configurazione automatica del router per l'accesso remoto facile. Questo potrebbe non funzionare con alcuni modelli di router.","ButtonOk":"OK","ButtonCancel":"Annulla","HeaderSetupLibrary":"Configura tua libreria","ButtonAddMediaFolder":"Aggiungi cartella","LabelFolderType":"Tipo cartella","MediaFolderHelpPluginRequired":"* Richiede l'uso di un plugin, ad esempio GameBrowser o MB Bookshelf.","ReferToMediaLibraryWiki":"Fare riferimento al wiki libreria multimediale.","LabelCountry":"Nazione:","LabelLanguage":"lingua:","HeaderPreferredMetadataLanguage":"Lingua dei metadati preferita:","LabelSaveLocalMetadata":"Salvare immagini e metadati in cartelle multimediali","LabelSaveLocalMetadataHelp":"Il salvataggio di immagini e dei metadati direttamente in cartelle multimediali verranno messi in un posto dove possono essere facilmente modificate.","LabelDownloadInternetMetadata":"Scarica immagini e dei metadati da internet","LabelDownloadInternetMetadataHelp":"Media Browser pu\u00f2 scaricare informazioni sui vostri media per consentire presentazioni pi\u00f9 belle.","TabPreferences":"Preferenze","TabPassword":"Password","TabLibraryAccess":"Accesso libreria","TabImage":"Immagine","TabProfile":"Profilo","LabelDisplayMissingEpisodesWithinSeasons":"Visualizza gli episodi mancanti nelle stagioni","LabelUnairedMissingEpisodesWithinSeasons":"Visualizzare episodi mai anti in onda all'interno stagioni","HeaderVideoPlaybackSettings":"Impostazioni di riproduzione video","LabelAudioLanguagePreference":"Audio preferenze di lingua:","LabelSubtitleLanguagePreference":"Sottotitoli preferenze di lingua:","LabelDisplayForcedSubtitlesOnly":"Visualizzare solo i sottotitoli forzati","TabProfiles":"Profili","TabSecurity":"Sicurezza","ButtonAddUser":"Aggiungi Utente","ButtonSave":"Salva","ButtonResetPassword":"Reset Password","LabelNewPassword":"Nuova Password:","LabelNewPasswordConfirm":"Nuova Password Conferma:","HeaderCreatePassword":"Crea Password","LabelCurrentPassword":"Password Corrente:","LabelMaxParentalRating":"Massima valutazione dei genitori consentita:","MaxParentalRatingHelp":"Contento di un punteggio pi\u00f9 elevato sar\u00e0 nascosto da questo utente.","LibraryAccessHelp":"Selezionare le cartelle multimediali da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.","ButtonDeleteImage":"Delete Image","ButtonUpload":"Upload","HeaderUploadNewImage":"Upload New Image","LabelDropImageHere":"Drop Image Here","ImageUploadAspectRatioHelp":"1:1 Aspect Ratio Recommended. JPG\/PNG only.","MessageNothingHere":"Nothing here.","MessagePleaseEnsureInternetMetadata":"Please ensure downloading of internet metadata is enabled.","TabSuggested":"Suggested","TabLatest":"Latest","TabUpcoming":"Upcoming","TabShows":"Shows","TabEpisodes":"Episodes","TabGenres":"Genres","TabPeople":"People","TabNetworks":"Networks"} \ 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 0fcf20a537..27211153d9 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json @@ -1,50 +1 @@ -{ - "LabelExit": "Afsluiten", - "LabelVisitCommunity": "Bezoek de community", - "LabelGithubWiki": "Github Wiki", - "LabelSwagger": "Swagger", - "LabelStandard": "Standaard", - "LabelViewApiDocumentation": "Bekijk Api documentatie", - "LabelBrowseLibrary": "Bekijk bibliotheek", - "LabelConfigureMediaBrowser": "Configureer Media Browser", - "LabelOpenLibraryViewer": "Open bibliotheek verkenner", - "LabelRestartServer": "Herstart server", - "LabelShowLogWindow": "Toon log venster", - "LabelPrevious": "Vorige", - "LabelFinish": "Finish", - "LabelNext": "Volgende", - "LabelYoureDone": "Gereed!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "LabelMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.", - "TellUsAboutYourself": "Tell us about yourself", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser 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.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations." -} \ No newline at end of file +{"LabelExit":"Afsluiten","LabelVisitCommunity":"Bezoek de community","LabelGithubWiki":"Github Wiki","LabelSwagger":"Swagger","LabelStandard":"Standaard","LabelViewApiDocumentation":"Bekijk Api documentatie","LabelBrowseLibrary":"Bekijk bibliotheek","LabelConfigureMediaBrowser":"Configureer Media Browser","LabelOpenLibraryViewer":"Open bibliotheek verkenner","LabelRestartServer":"Herstart server","LabelShowLogWindow":"Toon log venster","LabelPrevious":"Vorige","LabelFinish":"Voltooien","LabelNext":"Volgende","LabelYoureDone":"Gereed!","WelcomeToMediaBrowser":"Welkom bij Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"Deze wizard helpt u door het setup-proces.","TellUsAboutYourself":"Vertel ons over jezelf","LabelYourFirstName":"Uw voornaam:","MoreUsersCanBeAddedLater":"Meer gebruikers kunnen later in het dashboard worden toegevoegd.","UserProfilesIntro":"Media Browser bevat ingebouwde ondersteuning voor gebruikersprofielen, zodat iedere gebruiker zijn eigen display-instellingen, afspeelstatus en ouderlijk toezicht heeft.","LabelWindowsService":"Windows Service","AWindowsServiceHasBeenInstalled":"Een Windows Service is ge\u00efnstalleerd.","WindowsServiceIntro1":"Media Browser Server draait normaal als een desktop applicatie met een pictogram in het systeemvak, maar als je het liever laat draaien als een service op de achtergrond, dan kan dit worden gestart vanuit het windows services controlepanel.","WindowsServiceIntro2":"Als u de Windows-service gebruikt, dan dient u er rekening mee te houden dat het niet op hetzelfde moment als de desktop applicatie kan worden uitgevoerd. Dus daarom is het vereist de desktop applicatie eerst te sluiten voordat u de service gebruikt. De service zal ook moeten worden geconfigureerd met beheerdersrechten via het bedieningspaneel. Houd er rekening mee dat op dit moment de service niet automatisch kan worden bijgewerkt, zodat nieuwe versies dus handmatige interactie vereisen.","WizardCompleted":"Dat is alles wat we nodig hebben voor nu. Media Browser is begonnen met het verzamelen van informatie over uw mediabibliotheek. Bekijk enkele van onze apps, en klik vervolgens op Voltooien<\/b> om het Dashboard te bekijken<\/b>.","LabelConfigureSettings":"Configureer instellingen","LabelEnableVideoImageExtraction":"Videobeeld extractie inschakelen","VideoImageExtractionHelp":"Voor video's die niet al afbeeldingen hebben, en waarvoor geen afbeeldingen op Internet te vinden zijn. Dit zal enige extra tijd aan de oorspronkelijke bibliotheek scan toevoegen, maar zal resulteren in een meer aantrekkelijke presentatie.","LabelEnableChapterImageExtractionForMovies":"Extractie van hoofdstuk afbeeldingen voor Films","LabelChapterImageExtractionForMoviesHelp":"Extraheren hoofdstuk afbeeldingen zal clients de mogelijkheid geven om grafische scene selectie menu's weer te geven. Het proces kan traag, cpu-intensief zijn en kan enkele gigabytes aan ruimte vereisen. Het loopt als een 's nachts als geplande taak om 4:00, maar dit is instelbaar in de geplande taken sectie. Het wordt niet aanbevolen om deze taak uit te voeren tijdens de piekuren.","LabelEnableAutomaticPortMapping":"Schakel automatisch port mapping in","LabelEnableAutomaticPortMappingHelp":"UPnP zorgt voor geautomatiseerde configuratie van de router voor gemakkelijke toegang op afstand. Dit werkt mogelijk niet met sommige routers.","ButtonOk":"Ok","ButtonCancel":"Annuleren","HeaderSetupLibrary":"Stel uw mediabibliotheek in","ButtonAddMediaFolder":"Voeg mediamap toe","LabelFolderType":"Maptype:","MediaFolderHelpPluginRequired":"* Hiervoor is het gebruik van een plugin vereist, bijvoorbeeld GameBrowser of MB Bookshelf.","ReferToMediaLibraryWiki":"Raadpleeg de mediabibliotheek wiki.","LabelCountry":"Land:","LabelLanguage":"Taal:","HeaderPreferredMetadataLanguage":"Gewenste taal van de metadata:","LabelSaveLocalMetadata":"Sla afbeeldingen en metadata op in de mediamappen","LabelSaveLocalMetadataHelp":"Afbeeldingen en metadata direct opslaan in mediamappen zorgt er voor dat ze makkelijk vindbaar zijn en gemakkelijk kunnen worden bewerkt.","LabelDownloadInternetMetadata":"Download afbeeldingen en metagegevens van het internet","LabelDownloadInternetMetadataHelp":"Media Browser kan informatie downloaden over uw media om goede presentaties mogelijk te maken.","TabPreferences":"Voorkeuren","TabPassword":"Wachtwoord","TabLibraryAccess":"Bibliotheek toegang","TabImage":"Afbeelding","TabProfile":"Profiel","LabelDisplayMissingEpisodesWithinSeasons":"Toon ontbrekende afleveringen in een seizoen","LabelUnairedMissingEpisodesWithinSeasons":"Toon toekomstige afleveringen in een seizoen","HeaderVideoPlaybackSettings":"Video Playback Settings","LabelAudioLanguagePreference":"Audio language preference:","LabelSubtitleLanguagePreference":"Subtitle language preference:","LabelDisplayForcedSubtitlesOnly":"Display only forced subtitles","TabProfiles":"Profiles","TabSecurity":"Security","ButtonAddUser":"Add User","ButtonSave":"Save","ButtonResetPassword":"Reset Password","LabelNewPassword":"New password:","LabelNewPasswordConfirm":"New password confirm:","HeaderCreatePassword":"Create Password","LabelCurrentPassword":"Current password:","LabelMaxParentalRating":"Maximum allowed parental rating:","MaxParentalRatingHelp":"Content with a higher rating will be hidden from this user.","LibraryAccessHelp":"Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.","ButtonDeleteImage":"Delete Image","ButtonUpload":"Upload","HeaderUploadNewImage":"Upload New Image","LabelDropImageHere":"Drop Image Here","ImageUploadAspectRatioHelp":"1:1 Aspect Ratio Recommended. JPG\/PNG only.","MessageNothingHere":"Nothing here.","MessagePleaseEnsureInternetMetadata":"Please ensure downloading of internet metadata is enabled.","TabSuggested":"Suggested","TabLatest":"Latest","TabUpcoming":"Upcoming","TabShows":"Shows","TabEpisodes":"Episodes","TabGenres":"Genres","TabPeople":"People","TabNetworks":"Networks"} \ 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 0ea78b9560..3ef5108962 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json @@ -1,50 +1 @@ -{ - "LabelExit": "Sair", - "LabelVisitCommunity": "Visite o Community", - "LabelGithubWiki": "Wiki do Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Padr\u00e3o", - "LabelViewApiDocumentation": "Ver documenta\u00e7\u00e3o da Api", - "LabelBrowseLibrary": "Navegar pela Biblioteca", - "LabelConfigureMediaBrowser": "Configurar Media Browser", - "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca", - "LabelRestartServer": "Reiniciar Servidor", - "LabelShowLogWindow": "Mostrar Janela de Log", - "LabelPrevious": "Anterior", - "LabelFinish": "Terminar", - "LabelNext": "Pr\u00f3ximo", - "LabelYoureDone": "Pronto!", - "WelcomeToMediaBrowser": "Bem vindo ao Media Browser!", - "LabelMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Este assistente ir\u00e1 gui\u00e1-lo pelo processo de instala\u00e7\u00e3o.", - "TellUsAboutYourself": "Conte-nos sobre voc\u00ea", - "LabelYourFirstName": "Seu primeiro nome:", - "MoreUsersCanBeAddedLater": "Mais usu\u00e1rios podem ser adicionados dentro do Painel.", - "UserProfilesIntro": "Media Browser inclui suporte a perfis de usu\u00e1rios, permitindo a cada usu\u00e1rio ter suas prefer\u00eancias de visualiza\u00e7\u00e3o, status das reprodu\u00e7\u00f5es e controle dos pais.", - "LabelWindowsService": "Servi\u00e7o do Windows", - "AWindowsServiceHasBeenInstalled": "Foi instalado um Servi\u00e7o do Windows.", - "WindowsServiceIntro1": "O Servidor Media Browser normalmente \u00e9 executado como uma aplica\u00e7\u00e3o de desktop com um \u00edcone na bandeja do sistema, mas se preferir executar como servi\u00e7o pode inici\u00e1-lo no painel de controle de servi\u00e7os do Windows", - "WindowsServiceIntro2": "Se usar o servi\u00e7o do Windows, por favor certifique-se que n\u00e3o esteja sendo executado ao mesmo tempo que o \u00edcone na bandeja, se for ter\u00e1 que sair da app antes de executar o servi\u00e7o. O servi\u00e7o necessita ser configurado com privil\u00e9gios de administrador no painel de controle. Neste momento o servi\u00e7o n\u00e3o pode se auto-atualizar, por isso novas vers\u00f5es exigir\u00e3o intera\u00e7\u00e3o manual.", - "WizardCompleted": "Isto \u00e9 todo o necess\u00e1rio. Media Browser iniciou a coleta das informa\u00e7\u00f5es de sua biblioteca de m\u00eddia. Conhe\u00e7a algumas de nossas apps e clique Terminar<\/b> para ver o Painel<\/b>.", - "LabelConfigureSettings": "Configurar prefer\u00eancias", - "LabelEnableVideoImageExtraction": "Ativar extra\u00e7\u00e3o de imagens de v\u00eddeo", - "VideoImageExtractionHelp": "Para v\u00eddeos que n\u00e3o tenham imagens e que n\u00e3o possamos encontrar imagens na internet. Isto aumentar\u00e1 o tempo do rastreamento inicial da biblioteca mas resultar\u00e1 em uma apresenta\u00e7\u00e3o mais bonita.", - "LabelEnableChapterImageExtractionForMovies": "Extrair imagens de cap\u00edtulos dos Filmes", - "LabelChapterImageExtractionForMoviesHelp": "Extrair imagens de cap\u00edtulos permitir\u00e1 aos clientes mostrar menus gr\u00e1ficos de sele\u00e7\u00e3o de cenas. O processo pode ser lento, uso intenso de cpu e muito espa\u00e7o em disco. Ele executa como uma tarefa di\u00e1ria noturna \u00e0s 4:00hs, embora seja configur\u00e1vel na \u00e1rea de tarefas agendadas. N\u00e3o \u00e9 recomendado executar durante as horas de pico de uso.", - "LabelEnableAutomaticPortMapping": "Ativar mapeamento de porta autom\u00e1tico", - "LabelEnableAutomaticPortMappingHelp": "UPnP permite uma configura\u00e7\u00e3o automatizada do roteador para acesso remoto f\u00e1cil. Isto pode n\u00e3o funcionar em alguns modelos de roteadores.", - "ButtonOk": "Ok", - "ButtonCancel": "Cancelar", - "HeaderSetupLibrary": "Configurar sua biblioteca de m\u00eddias", - "ButtonAddMediaFolder": "Adicionar pasta de m\u00eddias", - "LabelFolderType": "Tipo de pasta:", - "MediaFolderHelpPluginRequired": "* Requer o uso de um plugin, ex. GameBrowser ou MB Bookshelf.", - "ReferToMediaLibraryWiki": "Consultar wiki da biblioteca de m\u00eddias", - "LabelCountry": "Pa\u00eds:", - "LabelLanguage": "Idioma:", - "HeaderPreferredMetadataLanguage": "Idioma preferido dos metadados:", - "LabelSaveLocalMetadata": "Salvar artwork e metadados dentro das pastas da m\u00eddia", - "LabelSaveLocalMetadataHelp": "Salvar artwork e metadados diretamente nas pastas da m\u00eddia, as deixar\u00e1 em um local f\u00e1cil para edit\u00e1-las.", - "LabelDownloadInternetMetadata": "Baixar artwork e metadados da internet", - "LabelDownloadInternetMetadataHelp": "Media Browser pode baixar informa\u00e7\u00f5es sobre sua m\u00eddia para melhorar a apresenta\u00e7\u00e3o." -} \ No newline at end of file +{"LabelExit":"Sair","LabelVisitCommunity":"Visite o Community","LabelGithubWiki":"Wiki do Github","LabelSwagger":"Swagger","LabelStandard":"Padr\u00e3o","LabelViewApiDocumentation":"Ver documenta\u00e7\u00e3o da Api","LabelBrowseLibrary":"Navegar pela Biblioteca","LabelConfigureMediaBrowser":"Configurar Media Browser","LabelOpenLibraryViewer":"Abrir Visualizador da Biblioteca","LabelRestartServer":"Reiniciar Servidor","LabelShowLogWindow":"Mostrar Janela de Log","LabelPrevious":"Anterior","LabelFinish":"Terminar","LabelNext":"Pr\u00f3ximo","LabelYoureDone":"Pronto!","WelcomeToMediaBrowser":"Bem vindo ao Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"Este assistente ir\u00e1 gui\u00e1-lo pelo processo de instala\u00e7\u00e3o.","TellUsAboutYourself":"Conte-nos sobre voc\u00ea","LabelYourFirstName":"Seu primeiro nome:","MoreUsersCanBeAddedLater":"Mais usu\u00e1rios podem ser adicionados dentro do Painel.","UserProfilesIntro":"Media Browser inclui suporte a perfis de usu\u00e1rios, permitindo a cada usu\u00e1rio ter suas prefer\u00eancias de visualiza\u00e7\u00e3o, status das reprodu\u00e7\u00f5es e controle dos pais.","LabelWindowsService":"Servi\u00e7o do Windows","AWindowsServiceHasBeenInstalled":"Foi instalado um Servi\u00e7o do Windows.","WindowsServiceIntro1":"O Servidor Media Browser normalmente \u00e9 executado como uma aplica\u00e7\u00e3o de desktop com um \u00edcone na bandeja do sistema, mas se preferir executar como servi\u00e7o pode inici\u00e1-lo no painel de controle de servi\u00e7os do Windows","WindowsServiceIntro2":"Se usar o servi\u00e7o do Windows, por favor certifique-se que n\u00e3o esteja sendo executado ao mesmo tempo que o \u00edcone na bandeja, se for ter\u00e1 que sair da app antes de executar o servi\u00e7o. O servi\u00e7o necessita ser configurado com privil\u00e9gios de administrador no painel de controle. Neste momento o servi\u00e7o n\u00e3o pode se auto-atualizar, por isso novas vers\u00f5es exigir\u00e3o intera\u00e7\u00e3o manual.","WizardCompleted":"Isto \u00e9 todo o necess\u00e1rio. Media Browser iniciou a coleta das informa\u00e7\u00f5es de sua biblioteca de m\u00eddia. Conhe\u00e7a algumas de nossas apps e clique Terminar<\/b> para ver o Painel<\/b>.","LabelConfigureSettings":"Configurar prefer\u00eancias","LabelEnableVideoImageExtraction":"Ativar extra\u00e7\u00e3o de imagens de v\u00eddeo","VideoImageExtractionHelp":"Para v\u00eddeos que n\u00e3o tenham imagens e que n\u00e3o possamos encontrar imagens na internet. Isto aumentar\u00e1 o tempo do rastreamento inicial da biblioteca mas resultar\u00e1 em uma apresenta\u00e7\u00e3o mais bonita.","LabelEnableChapterImageExtractionForMovies":"Extrair imagens de cap\u00edtulos dos Filmes","LabelChapterImageExtractionForMoviesHelp":"Extrair imagens de cap\u00edtulos permitir\u00e1 aos clientes mostrar menus gr\u00e1ficos de sele\u00e7\u00e3o de cenas. O processo pode ser lento, uso intenso de cpu e muito espa\u00e7o em disco. Ele executa como uma tarefa di\u00e1ria noturna \u00e0s 4:00hs, embora seja configur\u00e1vel na \u00e1rea de tarefas agendadas. N\u00e3o \u00e9 recomendado executar durante as horas de pico de uso.","LabelEnableAutomaticPortMapping":"Ativar mapeamento de porta autom\u00e1tico","LabelEnableAutomaticPortMappingHelp":"UPnP permite uma configura\u00e7\u00e3o automatizada do roteador para acesso remoto f\u00e1cil. Isto pode n\u00e3o funcionar em alguns modelos de roteadores.","ButtonOk":"Ok","ButtonCancel":"Cancelar","HeaderSetupLibrary":"Configurar sua biblioteca de m\u00eddias","ButtonAddMediaFolder":"Adicionar pasta de m\u00eddias","LabelFolderType":"Tipo de pasta:","MediaFolderHelpPluginRequired":"* Requer o uso de um plugin, ex. GameBrowser ou MB Bookshelf.","ReferToMediaLibraryWiki":"Consultar wiki da biblioteca de m\u00eddias","LabelCountry":"Pa\u00eds:","LabelLanguage":"Idioma:","HeaderPreferredMetadataLanguage":"Idioma preferido dos metadados:","LabelSaveLocalMetadata":"Salvar artwork e metadados dentro das pastas da m\u00eddia","LabelSaveLocalMetadataHelp":"Salvar artwork e metadados diretamente nas pastas da m\u00eddia, as deixar\u00e1 em um local f\u00e1cil para edit\u00e1-las.","LabelDownloadInternetMetadata":"Baixar artwork e metadados da internet","LabelDownloadInternetMetadataHelp":"Media Browser pode baixar informa\u00e7\u00f5es sobre sua m\u00eddia para melhorar a apresenta\u00e7\u00e3o.","TabPreferences":"Preferences","TabPassword":"Password","TabLibraryAccess":"Library Access","TabImage":"Image","TabProfile":"Profile","LabelDisplayMissingEpisodesWithinSeasons":"Display missing episodes within seasons","LabelUnairedMissingEpisodesWithinSeasons":"Display unaired episodes within seasons","HeaderVideoPlaybackSettings":"Video Playback Settings","LabelAudioLanguagePreference":"Audio language preference:","LabelSubtitleLanguagePreference":"Subtitle language preference:","LabelDisplayForcedSubtitlesOnly":"Display only forced subtitles","TabProfiles":"Profiles","TabSecurity":"Security","ButtonAddUser":"Add User","ButtonSave":"Save","ButtonResetPassword":"Reset Password","LabelNewPassword":"New password:","LabelNewPasswordConfirm":"New password confirm:","HeaderCreatePassword":"Create Password","LabelCurrentPassword":"Current password:","LabelMaxParentalRating":"Maximum allowed parental rating:","MaxParentalRatingHelp":"Content with a higher rating will be hidden from this user.","LibraryAccessHelp":"Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.","ButtonDeleteImage":"Delete Image","ButtonUpload":"Upload","HeaderUploadNewImage":"Upload New Image","LabelDropImageHere":"Drop Image Here","ImageUploadAspectRatioHelp":"1:1 Aspect Ratio Recommended. JPG\/PNG only.","MessageNothingHere":"Nothing here.","MessagePleaseEnsureInternetMetadata":"Please ensure downloading of internet metadata is enabled.","TabSuggested":"Suggested","TabLatest":"Latest","TabUpcoming":"Upcoming","TabShows":"Shows","TabEpisodes":"Episodes","TabGenres":"Genres","TabPeople":"People","TabNetworks":"Networks"} \ 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 9fddc4f98c..34b44f1a2d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json @@ -1,50 +1 @@ -{ - "LabelExit": "Sair", - "LabelVisitCommunity": "Visitar a Comunidade", - "LabelGithubWiki": "Wiki Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Padr\u00e3o", - "LabelViewApiDocumentation": "Ver Documenta\u00e7\u00e3o da API", - "LabelBrowseLibrary": "Navegar na Biblioteca", - "LabelConfigureMediaBrowser": "Configurar Media Browser", - "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca", - "LabelRestartServer": "Reiniciar Servidor", - "LabelShowLogWindow": "Mostrar Janela de Log", - "LabelPrevious": "Anterior", - "LabelFinish": "Terminar", - "LabelNext": "Seguinte", - "LabelYoureDone": "Concluiu!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "LabelMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.", - "TellUsAboutYourself": "Tell us about yourself", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser 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.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations." -} \ No newline at end of file +{"LabelExit":"Sair","LabelVisitCommunity":"Visitar a Comunidade","LabelGithubWiki":"Wiki Github","LabelSwagger":"Swagger","LabelStandard":"Padr\u00e3o","LabelViewApiDocumentation":"Ver Documenta\u00e7\u00e3o da API","LabelBrowseLibrary":"Navegar na Biblioteca","LabelConfigureMediaBrowser":"Configurar Media Browser","LabelOpenLibraryViewer":"Abrir Visualizador da Biblioteca","LabelRestartServer":"Reiniciar Servidor","LabelShowLogWindow":"Mostrar Janela de Log","LabelPrevious":"Anterior","LabelFinish":"Terminar","LabelNext":"Seguinte","LabelYoureDone":"Concluiu!","WelcomeToMediaBrowser":"Bem-vindo ao Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"Este assistente ir\u00e1 ajud\u00e1-lo durante o processo de configura\u00e7\u00e3o.","TellUsAboutYourself":"Fale-nos sobre si","LabelYourFirstName":"O seu primeiro nome:","MoreUsersCanBeAddedLater":"\u00c9 poss\u00edvel adicionar utilizadores mais tarde no painel de controlo.","UserProfilesIntro":"O Media Browser inclui suporte a perfis de utilizadores, permitindo a cada utilizador ter as suas pr\u00f3prias configura\u00e7\u00f5es de visualiza\u00e7\u00e3o, de estado das reprodu\u00e7\u00f5es e de controlo parental.","LabelWindowsService":"Servi\u00e7o do Windows","AWindowsServiceHasBeenInstalled":"Foi instalado um Servi\u00e7o do Windows.","WindowsServiceIntro1":"Media Browser 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.","WindowsServiceIntro2":"If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.","WizardCompleted":"That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.","LabelConfigureSettings":"Configure settings","LabelEnableVideoImageExtraction":"Enable video image extraction","VideoImageExtractionHelp":"For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.","LabelEnableChapterImageExtractionForMovies":"Extract chapter image extraction for Movies","LabelChapterImageExtractionForMoviesHelp":"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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.","LabelEnableAutomaticPortMapping":"Enable automatic port mapping","LabelEnableAutomaticPortMappingHelp":"UPnP allows automated router configuration for easy remote access. This may not work with some router models.","ButtonOk":"Ok","ButtonCancel":"Cancelar","HeaderSetupLibrary":"Setup your media library","ButtonAddMediaFolder":"Add media folder","LabelFolderType":"Folder type:","MediaFolderHelpPluginRequired":"* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.","ReferToMediaLibraryWiki":"Refer to the media library wiki.","LabelCountry":"Pa\u00eds:","LabelLanguage":"L\u00edngua:","HeaderPreferredMetadataLanguage":"Preferred metadata language:","LabelSaveLocalMetadata":"Save artwork and metadata into media folders","LabelSaveLocalMetadataHelp":"Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.","LabelDownloadInternetMetadata":"Download artwork and metadata from the internet","LabelDownloadInternetMetadataHelp":"Media Browser can download information about your media to enable rich presentations.","TabPreferences":"Prefer\u00eancias","TabPassword":"Senha","TabLibraryAccess":"Library Access","TabImage":"Imagem","TabProfile":"Perfil","LabelDisplayMissingEpisodesWithinSeasons":"Display missing episodes within seasons","LabelUnairedMissingEpisodesWithinSeasons":"Display unaired episodes within seasons","HeaderVideoPlaybackSettings":"Video Playback Settings","LabelAudioLanguagePreference":"Audio language preference:","LabelSubtitleLanguagePreference":"Subtitle language preference:","LabelDisplayForcedSubtitlesOnly":"Display only forced subtitles","TabProfiles":"Perfis","TabSecurity":"Seguran\u00e7a","ButtonAddUser":"Adicionar Utilizador","ButtonSave":"Guardar","ButtonResetPassword":"Redefinir Senha","LabelNewPassword":"Nova senha:","LabelNewPasswordConfirm":"New password confirm:","HeaderCreatePassword":"Criar Senha","LabelCurrentPassword":"Current password:","LabelMaxParentalRating":"Maximum allowed parental rating:","MaxParentalRatingHelp":"Content with a higher rating will be hidden from this user.","LibraryAccessHelp":"Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.","ButtonDeleteImage":"Delete Image","ButtonUpload":"Upload","HeaderUploadNewImage":"Upload New Image","LabelDropImageHere":"Drop Image Here","ImageUploadAspectRatioHelp":"1:1 Aspect Ratio Recommended. JPG\/PNG only.","MessageNothingHere":"Nothing here.","MessagePleaseEnsureInternetMetadata":"Please ensure downloading of internet metadata is enabled.","TabSuggested":"Suggested","TabLatest":"Latest","TabUpcoming":"Upcoming","TabShows":"Shows","TabEpisodes":"Episodes","TabGenres":"Genres","TabPeople":"People","TabNetworks":"Networks"} \ 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 076740f3cd..97053e3abd 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -1,50 +1 @@ -{ - "LabelExit": "\u0412\u044b\u0445\u043e\u0434", - "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e", - "LabelGithubWiki": "\u0412\u0438\u043a\u0438 \u043d\u0430 Github", - "LabelSwagger": "\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Swagger", - "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f", - "LabelViewApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API", - "LabelBrowseLibrary": "\u041e\u0431\u043e\u0437\u0440\u0435\u0432\u0430\u0442\u0435\u043b\u044c \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", - "LabelConfigureMediaBrowser": "\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c Media Browser", - "LabelOpenLibraryViewer": "\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443", - "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440", - "LabelShowLogWindow": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0416\u0443\u0440\u043d\u0430\u043b \u0432 \u043e\u043a\u043d\u0435", - "LabelPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435", - "LabelFinish": "\u0413\u043e\u0442\u043e\u0432\u043e", - "LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435", - "LabelYoureDone": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e!", - "WelcomeToMediaBrowser": "\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 Media Browser!", - "LabelMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "\u042d\u0442\u043e\u0442 \u043c\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u0442 \u0432\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.", - "TellUsAboutYourself": "\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0430\u043c \u043e \u0441\u0435\u0431\u0435", - "LabelYourFirstName": "\u0412\u0430\u0448\u0435 \u0438\u043c\u044f", - "MoreUsersCanBeAddedLater": "\u041f\u043e\u0437\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u041f\u0430\u043d\u0435\u043b\u044c.", - "UserProfilesIntro": "Media Browser \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f.", - "LabelWindowsService": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows", - "AWindowsServiceHasBeenInstalled": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430.", - "WindowsServiceIntro1": "Media Browser 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 \u043b\u043e\u0442\u043a\u0435, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438 Windows.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.", - "LabelConfigureSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\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 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441\u0446\u0435\u043d \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432", - "LabelChapterImageExtractionForMoviesHelp": "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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e-\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "ButtonOk": "\u041e\u041a", - "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0430", - "HeaderSetupLibrary": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u0430\u0448\u0435\u0439 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", - "ButtonAddMediaFolder": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0443", - "LabelFolderType": "\u0422\u0438\u043f \u043f\u0430\u043f\u043a\u0438:", - "MediaFolderHelpPluginRequired": "* \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043d\u043f\u0440. GameBrowser \u0438\u043b\u0438 MB Bookshelf.", - "ReferToMediaLibraryWiki": "\u0421\u043c. \u0432 \u0432\u0438\u043a\u0438 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435 (media library)", - "LabelCountry": "\u0421\u0442\u0440\u0430\u043d\u0430", - "LabelLanguage": "\u042f\u0437\u044b\u043a:", - "HeaderPreferredMetadataLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", - "LabelSaveLocalMetadata": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0430\u0445", - "LabelSaveLocalMetadataHelp": "\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0430\u0445, \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0438\u0445 \u0432 \u0442\u0430\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b.", - "LabelDownloadInternetMetadata": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442", - "LabelDownloadInternetMetadataHelp": "Media Browser \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \u0432\u0430\u0448\u0435\u043c \u043c\u0435\u0434\u0438\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f." -} \ No newline at end of file +{"LabelExit":"\u0412\u044b\u0445\u043e\u0434","LabelVisitCommunity":"\u041f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e","LabelGithubWiki":"\u0412\u0438\u043a\u0438 \u043d\u0430 Github","LabelSwagger":"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Swagger","LabelStandard":"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f","LabelViewApiDocumentation":"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API","LabelBrowseLibrary":"\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435","LabelConfigureMediaBrowser":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Media Browser","LabelOpenLibraryViewer":"\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438","LabelRestartServer":"\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440","LabelShowLogWindow":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0416\u0443\u0440\u043d\u0430\u043b \u0432 \u043e\u043a\u043d\u0435","LabelPrevious":"\u041f\u0440\u0435\u0434","LabelFinish":"\u0413\u043e\u0442\u043e\u0432\u043e","LabelNext":"\u0421\u043b\u0435\u0434","LabelYoureDone":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e!","WelcomeToMediaBrowser":"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"\u042d\u0442\u043e\u0442 \u043c\u0430\u0441\u0442\u0435\u0440 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u0442 \u0432\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.","TellUsAboutYourself":"\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0430\u043c \u043e \u0441\u0435\u0431\u0435","LabelYourFirstName":"\u0412\u0430\u0448\u0435 \u0438\u043c\u044f","MoreUsersCanBeAddedLater":"\u041f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u041f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.","UserProfilesIntro":"Media Browser \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f.","LabelWindowsService":"\u0421\u043b\u0443\u0436\u0431\u0430 Windows","AWindowsServiceHasBeenInstalled":"\u0421\u043b\u0443\u0436\u0431\u0430 Windows \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430.","WindowsServiceIntro1":"Media Browser 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 \u043b\u043e\u0442\u043a\u0435, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438 Windows.","WindowsServiceIntro2":"\u0415\u0441\u043b\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u0443 Windows, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043e\u043d\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u043b\u043e\u0442\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\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 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043b\u0443\u0436\u0431\u0443. \u0421\u043b\u0443\u0436\u0431\u0443 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\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 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0430\u0432. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043b\u0443\u0436\u0431\u0430 \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0441\u0430\u043c\u043e-\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.","WizardCompleted":"\u042d\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. Media Browser \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0431\u043e\u0440 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u0430\u0448\u0435\u0439 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435. \u041e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0430 \u0437\u0430\u0442\u0435\u043c \u0449\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u0413\u043e\u0442\u043e\u0432\u043e<\/b>, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u041f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/b>.","LabelConfigureSettings":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\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 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e","VideoImageExtractionHelp":"\u0414\u043b\u044f \u0432\u0438\u0434\u0435\u043e, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0449\u0451 \u200b\u200b\u043d\u0435\u0442 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0438 \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0441\u0435\u0442\u0438. \u042d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438, \u043d\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435.","LabelEnableChapterImageExtractionForMovies":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441\u0446\u0435\u043d \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432","LabelChapterImageExtractionForMoviesHelp":"\u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441\u0446\u0435\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0446\u0435\u043d. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c, \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u041e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u043d\u043e\u0432\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0432 4 \u0447\u0430\u0441. \u0443\u0442\u0440\u0430, \u0445\u043e\u0442\u044f \u044d\u0442\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0447. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0447\u0430\u0441\u044b \u043f\u0438\u043a\u043e\u0432\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.","LabelEnableAutomaticPortMapping":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e-\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432","LabelEnableAutomaticPortMappingHelp":"UPnP \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432.","ButtonOk":"\u041e\u041a","ButtonCancel":"\u041e\u0442\u043c\u0435\u043d\u0430","HeaderSetupLibrary":"\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438","ButtonAddMediaFolder":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0443","LabelFolderType":"\u0422\u0438\u043f \u043f\u0430\u043f\u043a\u0438:","MediaFolderHelpPluginRequired":"* \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043d\u043f\u0440. GameBrowser \u0438\u043b\u0438 MB Bookshelf.","ReferToMediaLibraryWiki":"\u0421\u043c. \u0432 \u0432\u0438\u043a\u0438 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435 (\u0440\u0430\u0437\u0434\u0435\u043b media library).","LabelCountry":"\u0421\u0442\u0440\u0430\u043d\u0430:","LabelLanguage":"\u042f\u0437\u044b\u043a:","HeaderPreferredMetadataLanguage":"\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445","LabelSaveLocalMetadata":"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0430\u0445","LabelSaveLocalMetadataHelp":"\u041f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0430\u0445, \u043e\u043d\u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u0430\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u0442\u044c.","LabelDownloadInternetMetadata":"\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0435\u0442\u0438","LabelDownloadInternetMetadataHelp":"Media Browser \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0432\u0430\u0448\u0435\u043c \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.","TabPreferences":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","TabPassword":"\u041f\u0430\u0440\u043e\u043b\u044c","TabLibraryAccess":"\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435","TabImage":"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","TabProfile":"\u041f\u0440\u043e\u0444\u0438\u043b\u044c","LabelDisplayMissingEpisodesWithinSeasons":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u0435\u0437\u043e\u043d\u0430\u043c\u0438","LabelUnairedMissingEpisodesWithinSeasons":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u0435\u0437\u043e\u043d\u0430\u043c\u0438","HeaderVideoPlaybackSettings":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e","LabelAudioLanguagePreference":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u0430\u0443\u0434\u0438\u043e","LabelSubtitleLanguagePreference":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044f\u0437\u044b\u043a\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432","LabelDisplayForcedSubtitlesOnly":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b","TabProfiles":"\u041f\u0440\u043e\u0444\u0438\u043b\u0438","TabSecurity":"\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c","ButtonAddUser":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","ButtonSave":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c","ButtonResetPassword":"\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c","LabelNewPassword":"\u041d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c","LabelNewPasswordConfirm":"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f","HeaderCreatePassword":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c","LabelCurrentPassword":"\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c","LabelMaxParentalRating":"\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u0430\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f:","MaxParentalRatingHelp":"\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0440\u044b\u0442\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","LibraryAccessHelp":"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u043f\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.","ButtonDeleteImage":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","ButtonUpload":"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c","HeaderUploadNewImage":"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","LabelDropImageHere":"\u041f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u044e\u0434\u0430","ImageUploadAspectRatioHelp":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d - 1:1. \u0422\u043e\u043b\u044c\u043a\u043e JPG\/PNG.","MessageNothingHere":"\u0417\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e.","MessagePleaseEnsureInternetMetadata":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0441\u0435\u0442\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430.","TabSuggested":"\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435","TabLatest":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435","TabUpcoming":"\u041f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u0449\u0438\u0435","TabShows":"\u0421\u0435\u0440\u0438\u0430\u043b\u044b","TabEpisodes":"\u042d\u043f\u0438\u0437\u043e\u0434\u044b","TabGenres":"\u0416\u0430\u043d\u0440\u044b","TabPeople":"\u041b\u044e\u0434\u0438","TabNetworks":"\u0422\u0435\u043b\u0435\u0441\u0435\u0442\u0438"} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 9630509d3b..134716dc13 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -15,7 +15,7 @@ "LabelNext": "Next", "LabelYoureDone": "You're Done!", "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "LabelMediaBrowser": "Media Browser", + "TitleMediaBrowser": "Media Browser", "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.", "TellUsAboutYourself": "Tell us about yourself", "LabelYourFirstName": "Your first name:", @@ -46,5 +46,44 @@ "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations." + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabImage": "Image", + "TabProfile": "Profile", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "LabelDisplayForcedSubtitlesOnly": "Display only forced subtitles", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop Image Here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users" } \ 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 6084c1511f..64595c892d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json @@ -1,50 +1 @@ -{ - "LabelExit": "\u96e2\u958b", - "LabelVisitCommunity": "\u8a2a\u554f\u793e\u5340", - "LabelGithubWiki": "Github Wiki", - "LabelSwagger": "Swagger", - "LabelStandard": "\u6a19\u6dee", - "LabelViewApiDocumentation": "View Api Documentation", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureMediaBrowser": "Configure Media Browser", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "\u91cd\u65b0\u555f\u52d5\u670d\u52d9\u5668", - "LabelShowLogWindow": "\u986f\u793a\u65e5\u8a8c\u8996\u7a97", - "LabelPrevious": "\u4e0a\u4e00\u500b", - "LabelFinish": "\u5b8c\u7d50", - "LabelNext": "\u4e0b\u4e00\u500b", - "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "LabelMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process.", - "TellUsAboutYourself": "Tell us about yourself", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser 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.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations." -} \ No newline at end of file +{"LabelExit":"\u96e2\u958b","LabelVisitCommunity":"\u8a2a\u554f\u793e\u5340","LabelGithubWiki":"Github Wiki","LabelSwagger":"Swagger","LabelStandard":"\u6a19\u6dee","LabelViewApiDocumentation":"View Api Documentation","LabelBrowseLibrary":"Browse Library","LabelConfigureMediaBrowser":"Configure Media Browser","LabelOpenLibraryViewer":"Open Library Viewer","LabelRestartServer":"\u91cd\u65b0\u555f\u52d5\u670d\u52d9\u5668","LabelShowLogWindow":"\u986f\u793a\u65e5\u8a8c\u8996\u7a97","LabelPrevious":"\u4e0a\u4e00\u500b","LabelFinish":"\u5b8c\u7d50","LabelNext":"\u4e0b\u4e00\u500b","LabelYoureDone":"You're Done!","WelcomeToMediaBrowser":"Welcome to Media Browser!","TitleMediaBrowser":"Media Browser","ThisWizardWillGuideYou":"This wizard will help guide you through the setup process.","TellUsAboutYourself":"Tell us about yourself","LabelYourFirstName":"Your first name:","MoreUsersCanBeAddedLater":"More users can be added later within the Dashboard.","UserProfilesIntro":"Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.","LabelWindowsService":"Windows Service","AWindowsServiceHasBeenInstalled":"A Windows Service has been installed.","WindowsServiceIntro1":"Media Browser 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.","WindowsServiceIntro2":"If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.","WizardCompleted":"That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.","LabelConfigureSettings":"Configure settings","LabelEnableVideoImageExtraction":"Enable video image extraction","VideoImageExtractionHelp":"For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.","LabelEnableChapterImageExtractionForMovies":"Extract chapter image extraction for Movies","LabelChapterImageExtractionForMoviesHelp":"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 as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.","LabelEnableAutomaticPortMapping":"Enable automatic port mapping","LabelEnableAutomaticPortMappingHelp":"UPnP allows automated router configuration for easy remote access. This may not work with some router models.","ButtonOk":"Ok","ButtonCancel":"Cancel","HeaderSetupLibrary":"Setup your media library","ButtonAddMediaFolder":"Add media folder","LabelFolderType":"Folder type:","MediaFolderHelpPluginRequired":"* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.","ReferToMediaLibraryWiki":"Refer to the media library wiki.","LabelCountry":"Country:","LabelLanguage":"Language:","HeaderPreferredMetadataLanguage":"Preferred metadata language:","LabelSaveLocalMetadata":"Save artwork and metadata into media folders","LabelSaveLocalMetadataHelp":"Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.","LabelDownloadInternetMetadata":"Download artwork and metadata from the internet","LabelDownloadInternetMetadataHelp":"Media Browser can download information about your media to enable rich presentations.","TabPreferences":"Preferences","TabPassword":"Password","TabLibraryAccess":"Library Access","TabImage":"Image","TabProfile":"Profile","LabelDisplayMissingEpisodesWithinSeasons":"Display missing episodes within seasons","LabelUnairedMissingEpisodesWithinSeasons":"Display unaired episodes within seasons","HeaderVideoPlaybackSettings":"Video Playback Settings","LabelAudioLanguagePreference":"Audio language preference:","LabelSubtitleLanguagePreference":"Subtitle language preference:","LabelDisplayForcedSubtitlesOnly":"Display only forced subtitles","TabProfiles":"Profiles","TabSecurity":"Security","ButtonAddUser":"Add User","ButtonSave":"Save","ButtonResetPassword":"Reset Password","LabelNewPassword":"New password:","LabelNewPasswordConfirm":"New password confirm:","HeaderCreatePassword":"Create Password","LabelCurrentPassword":"Current password:","LabelMaxParentalRating":"Maximum allowed parental rating:","MaxParentalRatingHelp":"Content with a higher rating will be hidden from this user.","LibraryAccessHelp":"Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.","ButtonDeleteImage":"Delete Image","ButtonUpload":"Upload","HeaderUploadNewImage":"Upload New Image","LabelDropImageHere":"Drop Image Here","ImageUploadAspectRatioHelp":"1:1 Aspect Ratio Recommended. JPG\/PNG only.","MessageNothingHere":"Nothing here.","MessagePleaseEnsureInternetMetadata":"Please ensure downloading of internet metadata is enabled.","TabSuggested":"Suggested","TabLatest":"Latest","TabUpcoming":"Upcoming","TabShows":"Shows","TabEpisodes":"Episodes","TabGenres":"Genres","TabPeople":"People","TabNetworks":"Networks"} \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index d06cf01812..5126a55afd 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -301,6 +301,10 @@ + + + +