2
0
Эх сурвалжийг харах

disable nuget package restore

Luke Pulverenti 10 жил өмнө
parent
commit
f1a602f5a8
32 өөрчлөгдсөн 218 нэмэгдсэн , 151 устгасан
  1. 4 1
      .gitignore
  2. 38 3
      MediaBrowser.Api/ConnectService.cs
  3. 0 1
      MediaBrowser.Api/MediaBrowser.Api.csproj
  4. 0 2
      MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
  5. 0 2
      MediaBrowser.Common/MediaBrowser.Common.csproj
  6. 0 2
      MediaBrowser.Controller/MediaBrowser.Controller.csproj
  7. 0 2
      MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
  8. 3 2
      MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
  9. 3 2
      MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
  10. 26 1
      MediaBrowser.Model/ApiClient/ServerCredentials.cs
  11. 0 1
      MediaBrowser.Model/Configuration/ServerConfiguration.cs
  12. 17 0
      MediaBrowser.Model/Connect/ConnectAuthenticationExchangeResult.cs
  13. 1 2
      MediaBrowser.Model/MediaBrowser.Model.csproj
  14. 0 2
      MediaBrowser.Providers/MediaBrowser.Providers.csproj
  15. 14 1
      MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs
  16. 15 15
      MediaBrowser.Server.Implementations/Localization/JavaScript/de.json
  17. 5 5
      MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
  18. 6 6
      MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json
  19. 4 4
      MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
  20. 38 38
      MediaBrowser.Server.Implementations/Localization/Server/de.json
  21. 10 10
      MediaBrowser.Server.Implementations/Localization/Server/fr.json
  22. 20 20
      MediaBrowser.Server.Implementations/Localization/Server/kk.json
  23. 8 8
      MediaBrowser.Server.Implementations/Localization/Server/ru.json
  24. 0 2
      MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
  25. 0 8
      MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
  26. 0 2
      MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
  27. 0 2
      MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
  28. 2 2
      Nuget/MediaBrowser.Common.Internal.nuspec
  29. 1 1
      Nuget/MediaBrowser.Common.nuspec
  30. 1 1
      Nuget/MediaBrowser.Model.Signed.nuspec
  31. 2 2
      Nuget/MediaBrowser.Server.Core.nuspec
  32. 0 1
      OpenSubtitlesHandler/OpenSubtitlesHandler.csproj

+ 4 - 1
.gitignore

@@ -1,3 +1,5 @@
+!*
+
 #################
 ## Eclipse
 #################
@@ -145,8 +147,9 @@ publish/
 
 # NuGet Packages Directory
 ## TODO: If you have NuGet Package Restore enabled, uncomment the next line
-packages/
+# packages/
 dlls/
+dllssigned/
 
 # Windows Azure Build Output
 csx

+ 38 - 3
MediaBrowser.Api/ConnectService.cs

@@ -1,13 +1,18 @@
-using MediaBrowser.Controller.Connect;
+using MediaBrowser.Common.Extensions;
+using MediaBrowser.Controller.Connect;
+using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Net;
 using MediaBrowser.Model.Connect;
 using ServiceStack;
+using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Threading.Tasks;
 
 namespace MediaBrowser.Api
 {
     [Route("/Users/{Id}/Connect/Link", "POST", Summary = "Creates a Connect link for a user")]
+    [Authenticated(Roles = "Admin")]
     public class CreateConnectLink : IReturn<UserLinkResult>
     {
         [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
@@ -18,6 +23,7 @@ namespace MediaBrowser.Api
     }
 
     [Route("/Users/{Id}/Connect/Link", "DELETE", Summary = "Removes a Connect link for a user")]
+    [Authenticated(Roles = "Admin")]
     public class DeleteConnectLink : IReturnVoid
     {
         [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
@@ -25,6 +31,7 @@ namespace MediaBrowser.Api
     }
 
     [Route("/Connect/Invite", "POST", Summary = "Creates a Connect link for a user")]
+    [Authenticated(Roles = "Admin")]
     public class CreateConnectInvite : IReturn<UserLinkResult>
     {
         [ApiMember(Name = "ConnectUsername", Description = "Connect username", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
@@ -36,26 +43,37 @@ namespace MediaBrowser.Api
 
 
     [Route("/Connect/Pending", "GET", Summary = "Creates a Connect link for a user")]
+    [Authenticated(Roles = "Admin")]
     public class GetPendingGuests : IReturn<List<ConnectAuthorization>>
     {
     }
 
 
     [Route("/Connect/Pending", "DELETE", Summary = "Deletes a Connect link for a user")]
+    [Authenticated(Roles = "Admin")]
     public class DeleteAuthorization : IReturnVoid
     {
         [ApiMember(Name = "Id", Description = "Authorization Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
         public string Id { get; set; }
     }
 
-    [Authenticated(Roles = "Admin")]
+    [Route("/Connect/Exchange", "GET", Summary = "Gets the corresponding local user from a connect user id")]
+    [Authenticated]
+    public class GetLocalUser : IReturn<ConnectAuthenticationExchangeResult>
+    {
+        [ApiMember(Name = "ConnectUserId", Description = "ConnectUserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
+        public string ConnectUserId { get; set; }
+    }
+
     public class ConnectService : BaseApiService
     {
         private readonly IConnectManager _connectManager;
+        private readonly IUserManager _userManager;
 
-        public ConnectService(IConnectManager connectManager)
+        public ConnectService(IConnectManager connectManager, IUserManager userManager)
         {
             _connectManager = connectManager;
+            _userManager = userManager;
         }
 
         public object Post(CreateConnectLink request)
@@ -88,5 +106,22 @@ namespace MediaBrowser.Api
 
             Task.WaitAll(task);
         }
+
+        public object Get(GetLocalUser request)
+        {
+            var user = _userManager.Users
+                .FirstOrDefault(i => string.Equals(i.ConnectUserId, request.ConnectUserId, StringComparison.OrdinalIgnoreCase));
+
+            if (user == null)
+            {
+                throw new ResourceNotFoundException();
+            }
+
+            return ToOptimizedResult(new ConnectAuthenticationExchangeResult
+            {
+                AccessToken = user.ConnectAccessKey,
+                LocalUserId = user.Id.ToString("N")
+            });
+        }
     }
 }

+ 0 - 1
MediaBrowser.Api/MediaBrowser.Api.csproj

@@ -11,7 +11,6 @@
     <AssemblyName>MediaBrowser.Api</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

+ 0 - 2
MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj

@@ -11,7 +11,6 @@
     <AssemblyName>MediaBrowser.Common.Implementations</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
@@ -120,7 +119,6 @@
   </ItemGroup>
   <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" />
   <PropertyGroup>
     <PostBuildEvent Condition=" '$(ConfigurationName)' != 'Release Mono' ">if '$(ConfigurationName)' == 'Release' (
 xcopy "$(TargetPath)" "$(SolutionDir)\Nuget\dlls\" /y /d /r /i

+ 0 - 2
MediaBrowser.Common/MediaBrowser.Common.csproj

@@ -11,7 +11,6 @@
     <AssemblyName>MediaBrowser.Common</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
@@ -116,7 +115,6 @@
   </ItemGroup>
   <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" />
   <PropertyGroup>
     <PostBuildEvent Condition=" '$(ConfigurationName)' != 'Release Mono' ">if '$(ConfigurationName)' == 'Release' (
 xcopy "$(TargetPath)" "$(SolutionDir)\Nuget\dlls\" /y /d /r /i

+ 0 - 2
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -11,7 +11,6 @@
     <AssemblyName>MediaBrowser.Controller</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
@@ -369,7 +368,6 @@ xcopy "$(TargetPath)" "$(SolutionDir)\Nuget\dlls\" /y /d /r /i
     <PreBuildEvent>
     </PreBuildEvent>
   </PropertyGroup>
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">

+ 0 - 2
MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj

@@ -12,7 +12,6 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -91,7 +90,6 @@
   </ItemGroup>
   <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">

+ 3 - 2
MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj

@@ -15,7 +15,6 @@
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <FodyPath>..\packages\Fody.1.19.1.0</FodyPath>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
@@ -224,6 +223,9 @@
     <Compile Include="..\MediaBrowser.Model\Configuration\XbmcMetadataOptions.cs">
       <Link>Configuration\XbmcMetadataOptions.cs</Link>
     </Compile>
+    <Compile Include="..\MediaBrowser.Model\Connect\ConnectAuthenticationExchangeResult.cs">
+      <Link>ApiClient\ConnectAuthenticationExchangeResult.cs</Link>
+    </Compile>
     <Compile Include="..\MediaBrowser.Model\Connect\ConnectAuthenticationResult.cs">
       <Link>Connect\ConnectAuthenticationResult.cs</Link>
     </Compile>
@@ -1114,7 +1116,6 @@
 xcopy "$(TargetPath)" "$(SolutionDir)\Nuget\dlls\portable\" /y /d /r /i
 )</PostBuildEvent>
   </PropertyGroup>
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
   <Import Project="Fody.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

+ 3 - 2
MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj

@@ -13,7 +13,6 @@
     <FileAlignment>512</FileAlignment>
     <TargetFrameworkProfile />
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <FodyPath>..\packages\Fody.1.17.0.0</FodyPath>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -190,6 +189,9 @@
     <Compile Include="..\MediaBrowser.Model\Configuration\XbmcMetadataOptions.cs">
       <Link>Configuration\XbmcMetadataOptions.cs</Link>
     </Compile>
+    <Compile Include="..\MediaBrowser.Model\Connect\ConnectAuthenticationExchangeResult.cs">
+      <Link>Connect\ConnectAuthenticationExchangeResult.cs</Link>
+    </Compile>
     <Compile Include="..\MediaBrowser.Model\Connect\ConnectAuthenticationResult.cs">
       <Link>Connect\ConnectAuthenticationResult.cs</Link>
     </Compile>
@@ -1065,7 +1067,6 @@
 xcopy "$(TargetPath)" "$(SolutionDir)\Nuget\dlls\net35\" /y /d /r /i
 )</PostBuildEvent>
   </PropertyGroup>
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">

+ 26 - 1
MediaBrowser.Model/ApiClient/ServerCredentials.cs

@@ -30,7 +30,32 @@ namespace MediaBrowser.Model.ApiClient
 
             if (index != -1)
             {
-                list[index] = server;
+                var existing = list[index];
+
+                // Merge the data
+                existing.DateLastAccessed = new[] { existing.DateLastAccessed, server.DateLastAccessed }.Max();
+
+                if (!string.IsNullOrEmpty(server.AccessToken))
+                {
+                    existing.AccessToken = server.AccessToken;
+                    existing.UserId = server.UserId;
+                }
+                if (!string.IsNullOrEmpty(server.RemoteAddress))
+                {
+                    existing.RemoteAddress = server.RemoteAddress;
+                }
+                if (!string.IsNullOrEmpty(server.LocalAddress))
+                {
+                    existing.LocalAddress = server.LocalAddress;
+                }
+                if (!string.IsNullOrEmpty(server.Name))
+                {
+                    existing.Name = server.Name;
+                }
+                if (server.WakeOnLanInfos != null && server.WakeOnLanInfos.Count > 0)
+                {
+                    existing.WakeOnLanInfos = server.WakeOnLanInfos.ToList();
+                }
             }
             else
             {

+ 0 - 1
MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -231,7 +231,6 @@ namespace MediaBrowser.Model.Configuration
                 "Roku",
                 "Chromecast",
                 "iOS",
-                "Android",
                 "Windows Phone"
             };
 

+ 17 - 0
MediaBrowser.Model/Connect/ConnectAuthenticationExchangeResult.cs

@@ -0,0 +1,17 @@
+
+namespace MediaBrowser.Model.Connect
+{
+    public class ConnectAuthenticationExchangeResult
+    {
+        /// <summary>
+        /// Gets or sets the local user identifier.
+        /// </summary>
+        /// <value>The local user identifier.</value>
+        public string LocalUserId { get; set; }
+        /// <summary>
+        /// Gets or sets the access token.
+        /// </summary>
+        /// <value>The access token.</value>
+        public string AccessToken { get; set; }
+    }
+}

+ 1 - 2
MediaBrowser.Model/MediaBrowser.Model.csproj

@@ -11,7 +11,6 @@
     <AssemblyName>MediaBrowser.Model</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <FodyPath>..\packages\Fody.1.19.1.0</FodyPath>
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
@@ -98,6 +97,7 @@
     <Compile Include="Configuration\PeopleMetadataOptions.cs" />
     <Compile Include="Configuration\XbmcMetadataOptions.cs" />
     <Compile Include="Configuration\SubtitlePlaybackMode.cs" />
+    <Compile Include="Connect\ConnectAuthenticationExchangeResult.cs" />
     <Compile Include="Connect\ConnectAuthenticationResult.cs" />
     <Compile Include="Connect\ConnectAuthorization.cs" />
     <Compile Include="Connect\ConnectUser.cs" />
@@ -424,7 +424,6 @@
 xcopy "$(TargetPath)" "$(SolutionDir)\Nuget\dlls\net45\" /y /d /r /i
 )</PostBuildEvent>
   </PropertyGroup>
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" />
   <Import Project="Fody.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

+ 0 - 2
MediaBrowser.Providers/MediaBrowser.Providers.csproj

@@ -11,7 +11,6 @@
     <AssemblyName>MediaBrowser.Providers</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
@@ -215,7 +214,6 @@
   </ItemGroup>
   <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">

+ 14 - 1
MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs

@@ -68,7 +68,10 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security
                 if (!string.IsNullOrWhiteSpace(auth.Token) ||
                     !_config.Configuration.InsecureApps2.Contains(auth.Client ?? string.Empty, StringComparer.OrdinalIgnoreCase))
                 {
-                    SessionManager.ValidateSecurityToken(auth.Token);
+                    if (!IsValidConnectKey(auth.Token))
+                    {
+                        SessionManager.ValidateSecurityToken(auth.Token);
+                    }
                 }
             }
 
@@ -115,6 +118,16 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security
             }
         }
 
+        private bool IsValidConnectKey(string token)
+        {
+            if (!string.IsNullOrEmpty(token))
+            {
+                return UserManager.Users.Any(u => string.Equals(token, u.ConnectAccessKey, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(u.ConnectAccessKey));
+            }
+
+            return false;
+        }
+
         protected bool DoHtmlRedirectIfConfigured(IRequest req, IResponse res, bool includeRedirectParam = false)
         {
             var htmlRedirect = this.HtmlRedirect ?? AuthenticateService.HtmlRedirect;

+ 15 - 15
MediaBrowser.Server.Implementations/Localization/JavaScript/de.json

@@ -36,10 +36,10 @@
     "LabelMovie": "Film",
     "LabelMusicVideo": "Musikvideo",
     "LabelEpisode": "Episode",
-    "LabelSeries": "Series",
+    "LabelSeries": "Serien",
     "LabelStopping": "Stoppe",
     "LabelCancelled": "(abgebrochen)",
-    "LabelFailed": "(failed)",
+    "LabelFailed": "(fehlgeschlagen)",
     "LabelAbortedByServerShutdown": "(Durch herunterfahrenden Server abgebrochen)",
     "LabelScheduledTaskLastRan": "Zuletzt ausgef\u00fchrt vor: {0}. Ben\u00f6tigte Zeit: {1}.",
     "HeaderDeleteTaskTrigger": "Entferne Aufgabenausl\u00f6ser",
@@ -63,7 +63,7 @@
     "ButtonPlay": "Abspielen",
     "ButtonEdit": "Bearbeiten",
     "ButtonQueue": "Warteschlange",
-    "ButtonPlayTrailer": "Play trailer",
+    "ButtonPlayTrailer": "Trailer abspielen",
     "ButtonPlaylist": "Wiedergabeliste",
     "ButtonPreviousTrack": "Vorheriges St\u00fcck",
     "LabelEnabled": "Aktivieren",
@@ -310,7 +310,7 @@
     "TabAdvanced": "Erweitert",
     "TabHelp": "Hilfe",
     "TabScheduledTasks": "Geplante Aufgaben",
-    "ButtonFullscreen": "Fullscreen",
+    "ButtonFullscreen": "Vollbild",
     "ButtonAudioTracks": "Audio Tracks",
     "ButtonSubtitles": "Untertitel",
     "ButtonScenes": "Szenen",
@@ -383,7 +383,7 @@
     "PersonTypePerson": "Person",
     "LabelTitleDisplayOrder": "Reihenfolge Titeldarstellung:",
     "OptionSortName": "Sortiername",
-    "OptionReleaseDate": "Release date",
+    "OptionReleaseDate": "Ver\u00f6ffentlichungsdatum",
     "LabelSeasonNumber": "Staffelnummer:",
     "LabelDiscNumber": "Disc Nummer",
     "LabelParentNumber": "Ursprungsnummer",
@@ -525,7 +525,7 @@
     "HeaderAlbums": "Alben",
     "HeaderGames": "Spiele",
     "HeaderBooks": "B\u00fccher",
-    "HeaderEpisodes": "Episodes",
+    "HeaderEpisodes": "Episoden",
     "HeaderSeasons": "Staffeln",
     "HeaderTracks": "Lieder",
     "HeaderItems": "Inhalte",
@@ -594,13 +594,13 @@
     "DashboardTourNotifications": "Sende automatisch Benachrichtigungen von Serverereignissen auf dein mobiles Endger\u00e4t, per E-Mail und mehr.",
     "DashboardTourScheduledTasks": "Verwalte einfach lang dauernde Aufgaben mit Hilfe von geplanten Aufgaben. Entscheide wann diese ausgef\u00fchrt werden und wie oft.",
     "DashboardTourMobile": "Die Media Browser \u00dcbersicht funktioniert auch hervorragend auf Smartphones und Tablets. Verwalte deinen Server jederzeit und \u00fcberall  direkt von deiner Handfl\u00e4che aus.",
-    "MessageRefreshQueued": "Refresh queued",
-    "TabDevices": "Devices",
-    "DeviceLastUsedByUserName": "Last used by {0}",
-    "HeaderDeleteDevice": "Delete Device",
-    "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.",
-    "LabelEnableCameraUploadFor": "Enable camera upload for:",
-    "HeaderSelectUploadPath": "Select Upload Path",
-    "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Media Browser.",
-    "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time."
+    "MessageRefreshQueued": "Warteschlange aktualisieren",
+    "TabDevices": "Ger\u00e4te",
+    "DeviceLastUsedByUserName": "Zuletzt genutzt von {0}",
+    "HeaderDeleteDevice": "Ger\u00e4t l\u00f6schen",
+    "DeleteDeviceConfirmation": "Bist du dir sicher dieses Ger\u00e4t l\u00f6schen zu wollen? Es wird wieder angezeigt werden, sobald sich ein Uder dar\u00fcber einloggt.",
+    "LabelEnableCameraUploadFor": "Aktiviere den Kamera-Upload f\u00fcr:",
+    "HeaderSelectUploadPath": "W\u00e4hle Upload Pfad",
+    "LabelEnableCameraUploadForHelp": "Uploads werden automatisch im Hintergrund durchgef\u00fchrt wenn du in Media Browser eingeloggt bist.",
+    "ErrorMessageStartHourGreaterThanEnd": "Die Endzeit muss gr\u00f6\u00dfer als die Startzeit sein."
 }

+ 5 - 5
MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json

@@ -84,8 +84,8 @@
     "MessageConfirmRecordingCancellation": "\u00cates-vous s\u00fbr de vouloir annuler cet enregistrement?",
     "MessageRecordingCancelled": "Enregistrement annul\u00e9.",
     "HeaderConfirmSeriesCancellation": "Confirmer annulation des s\u00e9ries",
-    "MessageConfirmSeriesCancellation": "\u00cates-vous s\u00fbr de vouloir annuler ces s\u00e9ries?",
-    "MessageSeriesCancelled": "S\u00e9ries annul\u00e9es",
+    "MessageConfirmSeriesCancellation": "\u00cates-vous s\u00fbr de vouloir annuler cette s\u00e9rie?",
+    "MessageSeriesCancelled": "S\u00e9ries annul\u00e9es.",
     "HeaderConfirmRecordingDeletion": "Confirmer la suppression de l'enregistrement",
     "MessageConfirmRecordingDeletion": "\u00cates-vous s\u00fbr de vouloir supprimer cet enregistrement?",
     "MessageRecordingDeleted": "Enregistrement supprim\u00e9.",
@@ -108,7 +108,7 @@
     "ButtonCancelSeries": "Annuler s\u00e9ries",
     "HeaderSeriesRecordings": "Enregistrements de s\u00e9ries",
     "LabelAnytime": "N'importe quelle heure",
-    "StatusRecording": "En cours d'enregistrement",
+    "StatusRecording": "Enregistrement",
     "StatusWatching": "En lecture",
     "StatusRecordingProgram": "Enregistre {0}",
     "StatusWatchingProgram": "En lecture de {0}",
@@ -160,7 +160,7 @@
     "MessageSureYouWishToProceed": "\u00cates-vous s\u00fbr de vouloir continuer?",
     "MessageDuplicatesWillBeDeleted": "De plus, les doubles suivants vont \u00eatre supprim\u00e9s :",
     "MessageFollowingFileWillBeMovedFrom": "Le fichier suivant sera d\u00e9plac\u00e9 de:",
-    "MessageDestinationTo": "Vers:",
+    "MessageDestinationTo": "\u00c0 :",
     "HeaderSelectWatchFolder": "S\u00e9lectionner le r\u00e9pertoire surveill\u00e9",
     "HeaderSelectWatchFolderHelp": "Parcourir ou saisir le chemin de votre r\u00e9pertoire de surveillance. Le r\u00e9pertoire doit \u00eatre accessible en \u00e9criture.",
     "OrganizePatternResult": "R\u00e9sultat : {0}",
@@ -595,7 +595,7 @@
     "DashboardTourScheduledTasks": "G\u00e9rer facilement les op\u00e9rations longues avec des taches planifi\u00e9s. D\u00e9cider quand elles doivent se lancer et combien de fois.",
     "DashboardTourMobile": "Le tableau de bord de Media Browser fonctionne parfaitement sur les smartphones et les tablettes. G\u00e9rer votre serveur du bout des doigts, n'importe quand, n'importe o\u00f9.",
     "MessageRefreshQueued": "Actualiser la file d'attente",
-    "TabDevices": "Lecteurs",
+    "TabDevices": "P\u00e9riph\u00e9riques",
     "DeviceLastUsedByUserName": "Derni\u00e8rement utilis\u00e9 par {0}",
     "HeaderDeleteDevice": "Supprimer le p\u00e9riph\u00e9rique",
     "DeleteDeviceConfirmation": "\u00cates-vous s\u00fbr de vouloir supprimer cet appareil? La prochaine fois qu'un utilisateur se connecte \u00e0 l'appareil, il sera ajout\u00e9 de nouveau.",

+ 6 - 6
MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json

@@ -596,11 +596,11 @@
     "DashboardTourMobile": "Media Browser \u0431\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0434\u0430\u0440\u0434\u0430 \u0436\u04d9\u043d\u0435 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0442\u0435\u0440\u0434\u0435 \u0442\u0430\u043c\u0430\u0448\u0430 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456. \u0421\u0435\u0440\u0432\u0435\u0440\u0456\u04a3\u0456\u0437\u0434\u0456 \u04d9\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430, \u04d9\u0440 \u0436\u0435\u0440\u0434\u0435 \u049b\u043e\u043b\u044b\u04a3\u044b\u0437\u0434\u044b\u04a3 \u0430\u043b\u0430\u049b\u0430\u043d\u044b\u043d\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u044b\u04a3\u044b\u0437.",
     "MessageRefreshQueued": "\u041a\u04e9\u043a\u0435\u0439\u0442\u0435\u0441\u0442\u0456 \u0435\u0442\u0443\u0456 \u043a\u0435\u0437\u0435\u043a\u0442\u0435",
     "TabDevices": "\u0416\u0430\u0431\u0434\u044b\u049b\u0442\u0430\u0440",
-    "DeviceLastUsedByUserName": "Last used by {0}",
-    "HeaderDeleteDevice": "Delete Device",
-    "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.",
-    "LabelEnableCameraUploadFor": "Enable camera upload for:",
-    "HeaderSelectUploadPath": "Select Upload Path",
+    "DeviceLastUsedByUserName": "{0} \u0430\u0440\u049b\u044b\u043b\u044b \u0435\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0493\u0430\u043d",
+    "HeaderDeleteDevice": "\u0416\u0430\u0431\u0434\u044b\u049b\u0442\u044b \u0436\u043e\u044e",
+    "DeleteDeviceConfirmation": "\u0428\u044b\u043d\u044b\u043c\u0435\u043d \u043e\u0441\u044b \u0436\u0430\u0431\u0434\u044b\u049b\u0442\u044b \u0436\u043e\u044e \u049b\u0430\u0436\u0435\u0442 \u043f\u0435? \u0411\u04b1\u043b \u043a\u0435\u043b\u0435\u0441\u0456 \u0440\u0435\u0442\u0442\u0435 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u043e\u0441\u044b\u0434\u0430\u043d \u043a\u0456\u0440\u0433\u0435\u043d\u0434\u0435 \u049b\u0430\u0439\u0442\u0430 \u043f\u0430\u0439\u0434\u0430 \u0431\u043e\u043b\u0430\u0434\u044b.",
+    "LabelEnableCameraUploadFor": "\u041c\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u043a\u0430\u043c\u0435\u0440\u0430\u0434\u0430\u043d \u043a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443:",
+    "HeaderSelectUploadPath": "\u041a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443 \u0436\u043e\u043b\u044b\u043d \u0442\u0430\u04a3\u0434\u0430\u0443",
     "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Media Browser.",
-    "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time."
+    "ErrorMessageStartHourGreaterThanEnd": "\u0410\u044f\u049b\u0442\u0430\u0443 \u0443\u0430\u049b\u044b\u0442\u044b \u0431\u0430\u0441\u0442\u0430\u0443 \u0443\u0430\u049b\u044b\u0442\u044b\u043d\u0430\u043d \u043a\u0435\u0439\u0456\u043d\u0440\u0435\u043a \u0431\u043e\u043b\u0443\u044b \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0434\u0456."
 }

+ 4 - 4
MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json

@@ -54,7 +54,7 @@
     "LabelDefaultStream": "(\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u0435)",
     "LabelForcedStream": "(\u0424\u043e\u0440\u0441-\u044b\u0435)",
     "LabelDefaultForcedStream": "(\u0423\u043c\u043e\u043b\u0447.\/\u0424\u043e\u0440\u0441-\u044b\u0435)",
-    "LabelUnknownLanguage": "\u041d\u0435\u043e\u043f\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a",
+    "LabelUnknownLanguage": "\u041d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a",
     "ButtonMute": "\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0432\u0443\u043a",
     "ButtonUnmute": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0432\u0443\u043a",
     "ButtonStop": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c",
@@ -181,7 +181,7 @@
     "LabelRunningOnPort": "\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 {0}.",
     "HeaderLatestFromChannel": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437 {0}",
     "ButtonDownload": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c",
-    "LabelUnknownLanaguage": "\u041d\u0435\u043e\u043f\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a",
+    "LabelUnknownLanaguage": "\u041d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u044f\u0437\u044b\u043a",
     "HeaderCurrentSubtitles": "\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b",
     "MessageDownloadQueued": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c.",
     "MessageAreYouSureDeleteSubtitles": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u0443\u0431\u0438\u0442\u0440\u043e\u0432?",
@@ -454,8 +454,8 @@
     "TooltipLinkedToMediaBrowserConnect": "\u0421\u0432\u044f\u0437\u044c \u0441 Media Browser Connect",
     "HeaderUnrated": "\u0411\u0435\u0437 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438",
     "ValueDiscNumber": "\u0414\u0438\u0441\u043a {0}",
-    "HeaderUnknownDate": "\u0414\u0430\u0442\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430",
-    "HeaderUnknownYear": "\u0413\u043e\u0434 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d",
+    "HeaderUnknownDate": "\u041d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u0434\u0430\u0442\u0430",
+    "HeaderUnknownYear": "\u041d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0433\u043e\u0434",
     "ValueMinutes": "{0} \u043c\u0438\u043d",
     "ButtonPlayExternalPlayer": "\u0412\u043e\u0441\u043f\u0440. \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043f\u0440\u043e\u0438\u0433\u0440-\u0435\u043c",
     "HeaderSelectExternalPlayer": "\u0412\u044b\u0431\u043e\u0440 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0442\u0435\u043b\u044f",

+ 38 - 38
MediaBrowser.Server.Implementations/Localization/Server/de.json

@@ -70,7 +70,7 @@
     "ButtonOk": "Ok",
     "LabelChannelDownloadSizeLimit": "Download Gr\u00f6\u00dfenlimit (GB):",
     "ButtonCancel": "Abbrechen",
-    "LabelChannelDownloadSizeLimitHelpText": "Limit the size of the channel download folder.",
+    "LabelChannelDownloadSizeLimitHelpText": "Limitiere die Gr\u00f6\u00dfe des Channel Download Verzeichnisses.",
     "HeaderRecentActivity": "K\u00fcrzliche Aktivit\u00e4ten",
     "ButtonNew": "Neu",
     "HeaderPeople": "Personen",
@@ -152,7 +152,7 @@
     "LabelWebsite": "Website:",
     "ButtonAddLocalUser": "F\u00fcge lokalen Benutzer hinzu",
     "LabelTagline": "Tagline:",
-    "ButtonInviteUser": "Invite User",
+    "ButtonInviteUser": "Lade Benutzer ein",
     "ButtonSave": "Speichern",
     "LabelOverview": "\u00dcbersicht:",
     "ButtonResetPassword": "Passwort zur\u00fccksetzten",
@@ -394,65 +394,65 @@
     "OptionSunday": "Sonntag",
     "HeaderWelcomeToMediaBrowserServerDashboard": "Willkommen zur Media Browser \u00dcbersicht",
     "OptionMonday": "Montag",
-    "LabelDateAddedBehavior": "Date added behavior for new content:",
+    "LabelDateAddedBehavior": "Verhalten f\u00fcr Hinzuf\u00fcgedatum bei neuen Inhalten:",
     "OptionTuesday": "Dienstag",
-    "OptionDateAddedImportTime": "Use date scanned into the library",
+    "OptionDateAddedImportTime": "Benutze das Scandatum vom hinzuf\u00fcgen in die Bbliothek",
     "OptionWednesday": "Mittwoch",
-    "OptionDateAddedFileTime": "Use file creation date",
+    "OptionDateAddedFileTime": "Benutze das Erstellungsdatum der Datei",
     "OptionThursday": "Donnerstag",
-    "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.",
+    "LabelDateAddedBehaviorHelp": "Wenn ein Metadatenwert vorhanden ist, wird dieser immer gegen\u00fcber den anderen Optionen bevorzugt werden.",
     "OptionFriday": "Freitag",
-    "LabelNumberTrailerToPlay": "Number of trailers to play:",
+    "LabelNumberTrailerToPlay": "Anzahl der abzuspielenden Trailer:",
     "OptionSaturday": "Samstag",
-    "TitleDevices": "Devices",
+    "TitleDevices": "Ger\u00e4te",
     "HeaderManagement": "Verwaltung",
-    "TabCameraUpload": "Camera Upload",
+    "TabCameraUpload": "Kamera-Upload",
     "LabelManagement": "Management:",
-    "TabDevices": "Devices",
+    "TabDevices": "Ger\u00e4te",
     "OptionMissingImdbId": "Fehlende IMDb Id",
-    "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Media Browser.",
+    "HeaderCameraUploadHelp": "Lade automatisch Bilder und Videos in Media Browser hoch, die mit deinen Mobilger\u00e4ten aufgenommen wurden.",
     "OptionMissingTvdbId": "Fehlende TheTVDB Id",
-    "MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.",
+    "MessageNoDevicesSupportCameraUpload": "Du hast bis jetzt keine Ger\u00e4t die den Kamera-Upload unterst\u00fctzen.",
     "OptionMissingOverview": "Fehlende \u00dcbersicht",
-    "LabelCameraUploadPath": "Camera upload path:",
+    "LabelCameraUploadPath": "Kamera-Upload Pfad:",
     "OptionFileMetadataYearMismatch": "Datei \/ Metadaten Jahre stimmen nicht \u00fcberein",
-    "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used.",
+    "LabelCameraUploadPathHelp": "W\u00e4hle, fals gew\u00fcnscht, einen individuellen Upload Pfad. Falls keiner festgelegt wird, wird der Standard Pfad genutzt.",
     "TabGeneral": "Allgemein",
-    "LabelCreateCameraUploadSubfolder": "Create a subfolder for each device",
+    "LabelCreateCameraUploadSubfolder": "Erstelle ein Unterverzeichnis f\u00fcr jedes Ger\u00e4t",
     "TitleSupport": "Support",
-    "LabelCreateCameraUploadSubfolderHelp": "Specific folders can be assigned to a device by clicking on it from the Devices page.",
+    "LabelCreateCameraUploadSubfolderHelp": "Bestimmte Verzeichnisse k\u00f6nnen Ger\u00e4ten durch einen Klick auf der Ger\u00e4teseite zugewiesen werden.",
     "TabLog": "Log",
-    "LabelCustomDeviceDisplayName": "Display name:",
+    "LabelCustomDeviceDisplayName": "Angezeigter Name:",
     "TabAbout": "\u00dcber",
-    "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.",
+    "LabelCustomDeviceDisplayNameHelp": "Lege einen individuellen Anzeigenamen fest oder lasse das Feld leer, um den vom ger\u00e4t \u00fcbermittelten Namen zu nutzen.",
     "TabSupporterKey": "Unterst\u00fctzerschl\u00fcssel",
-    "HeaderInviteUser": "Invite User",
+    "HeaderInviteUser": "Lade Benutzer ein",
     "TabBecomeSupporter": "Werde ein Unterst\u00fctzer",
-    "LabelConnectInviteUserHelp": "This is the username or email that your friend uses to sign in to the Media Browser website.",
+    "LabelConnectInviteUserHelp": "Dies ist der Benutzername oder die E-Mail die dein Freund nutzt, um sich f\u00fcr die Media Browser Website anzumelden.",
     "MediaBrowserHasCommunity": "Media Browser hat eine wachsende Gemeinschaft an Nutzern und Unterst\u00fctzern.",
-    "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Media Browser Connect.",
+    "HeaderInviteUserHelp": "Mit Media Browser ist es leichter als je zuvor, deine Medien mit deinen Freunden zu teilen.",
     "CheckoutKnowledgeBase": "Verwende die Knowledge Base als Hilfe, um das Optimum aus Media Browser herauszuholen.",
-    "ButtonSendInvitation": "Send Invitation",
+    "ButtonSendInvitation": "Sende Einladung",
     "SearchKnowledgeBase": "Durchsuche die Knowledge Base",
-    "HeaderGuests": "Guests",
+    "HeaderGuests": "G\u00e4ste",
     "VisitTheCommunity": "Besuche die Community",
-    "HeaderLocalUsers": "Local Users",
+    "HeaderLocalUsers": "Lokale Benutzer",
     "VisitMediaBrowserWebsite": "Besuche die Media Browser Website",
-    "HeaderPendingInvitations": "Pending Invitations",
+    "HeaderPendingInvitations": "Ausstehende Einladungen",
     "VisitMediaBrowserWebsiteLong": "Besuche die Media Browser Website um die aktuellsten Neuigkeiten zu erfahren und halte dich auf dem Laufenden mit dem Entwicklerblog.",
-    "TabParentalControl": "Parental Control",
+    "TabParentalControl": "Kindersicherung",
     "OptionHideUser": "Verberge diesen Benutzer in den Anmeldebildschirmen",
-    "HeaderAccessSchedule": "Access Schedule",
+    "HeaderAccessSchedule": "Zugangsplan",
     "OptionDisableUser": "Sperre diesen Benutzer",
-    "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.",
+    "HeaderAccessScheduleHelp": "Erstelle einen Zugangsplan, um den Zugriff auf bestimmte Zeiten zu limitieren.",
     "OptionDisableUserHelp": "Wenn deaktiviert,wird der Server keine Verbindung von diesem Benutzer erlauben. Bestehenden Verbindungen werden sofort beendet.",
-    "ButtonAddSchedule": "Add Schedule",
+    "ButtonAddSchedule": "Plan hinzuf\u00fcgen",
     "HeaderAdvancedControl": "Erweiterte Kontrolle",
-    "LabelAccessDay": "Day of week:",
+    "LabelAccessDay": "Wochentag:",
     "LabelName": "Name:",
-    "LabelAccessStart": "Start hour:",
+    "LabelAccessStart": "Startzeit:",
     "OptionAllowUserToManageServer": "Dieser Benutzer kann den Server managen",
-    "LabelAccessEnd": "End hour:",
+    "LabelAccessEnd": "Endzeit:",
     "HeaderFeatureAccess": "Funktionszugriff",
     "OptionAllowMediaPlayback": "Erlaube das Abspielen von Medien",
     "OptionAllowBrowsingLiveTv": "Erlaube das durchsuchen von Live-TV",
@@ -689,13 +689,13 @@
     "NewCollectionNameExample": "Beispiel: Star Wars Collection",
     "OptionSearchForInternetMetadata": "Suche im Internet nach Bildmaterial und Metadaten",
     "ButtonCreate": "Kreieren",
-    "LabelLocalHttpServerPortNumber": "Local port number:",
-    "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Media Browser's http server should bind to.",
-    "LabelPublicPort": "Public port number:",
-    "LabelPublicPortHelp": "The public port number that should be mapped to the local port.",
+    "LabelLocalHttpServerPortNumber": "Lokale Port-Nummer:",
+    "LabelLocalHttpServerPortNumberHelp": "Die TCP-Port-Nummer, an die der http-Server von Media Browser gebunden werden soll.",
+    "LabelPublicPort": "\u00d6ffentliche Port-Nummer:",
+    "LabelPublicPortHelp": "Der \u00f6ffentliche Port-Nummer, die auf den lokalen Port zugeordnet werden soll.",
     "LabelWebSocketPortNumber": "Web Socket Port Nummer:",
-    "LabelEnableAutomaticPortMap": "Enable automatic port mapping",
-    "LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models.",
+    "LabelEnableAutomaticPortMap": "Aktiviere das automatische Port-Mapping",
+    "LabelEnableAutomaticPortMapHelp": "Versuche automatisch den \u00f6ffentlichen Port dem lokalen Port mit Hilfe von UPnP zuzuordnen. Dies kann mit einigen Router-Modellen nicht funktionieren.",
     "LabelExternalDDNS": "Externe DDNS:",
     "LabelExternalDDNSHelp": "Wenn du eine dynamische DNS besitzen, trage Sie sie hier ein. Media Browser Apps werden sie verwenden, wenn sie sich verbinden.",
     "TabResume": "Fortsetzen",

+ 10 - 10
MediaBrowser.Server.Implementations/Localization/Server/fr.json

@@ -130,7 +130,7 @@
     "OptionDefaultSubtitles": "Par d\u00e9faut",
     "LabelFollowingFileWillBeDeleted": "Le fichier suivant a \u00e9t\u00e9 supprim\u00e9:",
     "OptionOnlyForcedSubtitles": "Seulement les sous-titres forc\u00e9s",
-    "LabelIfYouWishToContinueWithDeletion": "Si vous souhaitez continuer, merci de le confirmer en entrant la valeur de:",
+    "LabelIfYouWishToContinueWithDeletion": "Si vous souhaitez continuer, veuillez confirmer en entrant la valeur de :",
     "OptionAlwaysPlaySubtitles": "Toujours afficher les sous-titres",
     "ButtonIdentify": "Identifier",
     "OptionNoSubtitles": "Aucun sous-titre",
@@ -187,7 +187,7 @@
     "Label3DFormat": "Format 3D:",
     "MessageNothingHere": "Rien ici.",
     "HeaderAlternateEpisodeNumbers": "Num\u00e9ros d'\u00e9pisode alternatif",
-    "MessagePleaseEnsureInternetMetadata": "Merci de vous assurer que le t\u00e9l\u00e9chargement des m\u00e9tadonn\u00e9es depuis Internet est bien activ\u00e9.",
+    "MessagePleaseEnsureInternetMetadata": "Veuillez vous assurer que le t\u00e9l\u00e9chargement des m\u00e9tadonn\u00e9es depuis Internet est activ\u00e9.",
     "HeaderSpecialEpisodeInfo": "Information \u00e9pisode sp\u00e9cial",
     "TabSuggested": "Sugg\u00e9r\u00e9s",
     "HeaderExternalIds": "Identifiants externes",
@@ -267,7 +267,7 @@
     "OptionReleaseDate": "Date de sortie",
     "OptionPlayCount": "Nombre de lectures",
     "HeaderMediaInfo": "Information m\u00e9dia",
-    "OptionDatePlayed": "Date de lecture",
+    "OptionDatePlayed": "Date lu",
     "HeaderPhotoInfo": "Information photo",
     "OptionDateAdded": "Date d'ajout",
     "HeaderInstall": "Install\u00e9",
@@ -341,13 +341,13 @@
     "ButtonLearnMore": "Apprendre plus",
     "LabelFeatures": "Caract\u00e9ristiques:",
     "TabPlayback": "Lecture",
-    "LabelService": "Service:",
+    "LabelService": "Service :",
     "HeaderTrailersAndExtras": "Bandes-annonces et extras",
     "LabelStatus": "Status:",
     "OptionFindTrailers": "Trouver automatiquement les bandes-annonces sur Internet",
-    "LabelVersion": "Version:",
+    "LabelVersion": "Version :",
     "HeaderLanguagePreferences": "Pr\u00e9f\u00e9rences de langue",
-    "LabelLastResult": "Dernier r\u00e9sultat:",
+    "LabelLastResult": "Dernier r\u00e9sultat :",
     "TabCinemaMode": "Mode cin\u00e9ma",
     "OptionHasSubtitles": "Sous-titres",
     "TitlePlayback": "Lecture",
@@ -408,7 +408,7 @@
     "HeaderManagement": "Gestion",
     "TabCameraUpload": "Upload de la cam\u00e9ra",
     "LabelManagement": "Gestion :",
-    "TabDevices": "Lecteurs",
+    "TabDevices": "P\u00e9riph\u00e9riques",
     "OptionMissingImdbId": "ID IMDb manquant",
     "HeaderCameraUploadHelp": "Uploader automatiquement les photos et les vid\u00e9os depuis vos p\u00e9riph\u00e9riques mobiles dans Media Browser.",
     "OptionMissingTvdbId": "ID TheTVDB manquant",
@@ -758,7 +758,7 @@
     "HeaderLatestNews": "Derni\u00e8res nouvelles",
     "HeaderHelpImproveMediaBrowser": "Aidez-nous \u00e0 am\u00e9liorer Media Browser",
     "HeaderRunningTasks": "T\u00e2ches en ex\u00e9cution",
-    "HeaderActiveDevices": "Appareils actifs",
+    "HeaderActiveDevices": "P\u00e9riph\u00e9riques actifs",
     "HeaderPendingInstallations": "Installations en suspens",
     "HeaerServerInformation": "Information du serveur",
     "ButtonRestartNow": "Red\u00e9marrer maintenant",
@@ -950,7 +950,7 @@
     "LabelModelDescription": "Description de mod\u00e8le",
     "LabelModelUrl": "URL de mod\u00e8le",
     "LabelSerialNumber": "Num\u00e9ro de s\u00e9rie",
-    "LabelDeviceDescription": "Description de l'appareil",
+    "LabelDeviceDescription": "Description du p\u00e9riph\u00e9rique",
     "HeaderIdentificationCriteriaHelp": "Entrer au moins un crit\u00e8re d'identification.",
     "HeaderDirectPlayProfileHelp": "Ajoutez des profils de lecture directe pour sp\u00e9cifier quels formats l'appareil peut lire nativement.",
     "HeaderTranscodingProfileHelp": "Ajoutez des profils de transcodage pour sp\u00e9cifier quels formats doit \u00eatre transcod\u00e9.",
@@ -991,7 +991,7 @@
     "ButtonSend": "Envoyer",
     "LabelMessageText": "Texte du message:",
     "MessageNoAvailablePlugins": "Aucun plugin disponible.",
-    "LabelDisplayPluginsFor": "Afficher les plugins pour:",
+    "LabelDisplayPluginsFor": "Afficher les plugins pour :",
     "PluginTabMediaBrowserClassic": "MB Classic",
     "PluginTabMediaBrowserTheater": "MB Theatre",
     "LabelEpisodeNamePlain": "Nom d'\u00e9pisode",

+ 20 - 20
MediaBrowser.Server.Implementations/Localization/Server/kk.json

@@ -70,7 +70,7 @@
     "ButtonOk": "\u0416\u0430\u0440\u0430\u0439\u0434\u044b",
     "LabelChannelDownloadSizeLimit": "\u0416\u04af\u043a\u0442\u0435\u043c\u0435 \u04e9\u043b\u0448\u0435\u043c\u0456\u043d\u0456\u04a3 \u0448\u0435\u0433\u0456 (GB)",
     "ButtonCancel": "\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443",
-    "LabelChannelDownloadSizeLimitHelpText": "Limit the size of the channel download folder.",
+    "LabelChannelDownloadSizeLimitHelpText": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u049b\u043e\u0442\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u043b\u0442\u0430\u0441\u044b \u04e9\u043b\u0448\u0435\u043c\u0456\u043d \u0448\u0435\u043a\u0442\u0435\u0443.",
     "HeaderRecentActivity": "\u041a\u0435\u0438\u0456\u043d\u0433\u0456 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u0440",
     "ButtonNew": "\u0416\u0430\u0441\u0430\u0443",
     "HeaderPeople": "\u0410\u0434\u0430\u043c\u0434\u0430\u0440",
@@ -152,7 +152,7 @@
     "LabelWebsite": "\u0492\u0430\u043b\u0430\u043c\u0442\u043e\u0440 \u0441\u0430\u0439\u0442\u044b:",
     "ButtonAddLocalUser": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443",
     "LabelTagline": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456 \u0441\u04e9\u0439\u043b\u0435\u043c:",
-    "ButtonInviteUser": "Invite User",
+    "ButtonInviteUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u0448\u0430\u049b\u044b\u0440\u0443",
     "ButtonSave": "\u0421\u0430\u049b\u0442\u0430\u0443",
     "LabelOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443:",
     "ButtonResetPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443",
@@ -404,9 +404,9 @@
     "OptionFriday": "\u0436\u04b1\u043c\u0430",
     "LabelNumberTrailerToPlay": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u0434\u0456\u04a3 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0443 \u04af\u0448\u0456\u043d \u0441\u0430\u043d\u044b:",
     "OptionSaturday": "\u0441\u0435\u043d\u0431\u0456",
-    "TitleDevices": "Devices",
+    "TitleDevices": "\u0416\u0430\u0431\u0434\u044b\u049b\u0442\u0430\u0440",
     "HeaderManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440",
-    "TabCameraUpload": "Camera Upload",
+    "TabCameraUpload": "\u041a\u0430\u043c\u0435\u0440\u0430\u0434\u0430\u043d \u043a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443",
     "LabelManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440",
     "TabDevices": "\u0416\u0430\u0431\u0434\u044b\u049b\u0442\u0430\u0440",
     "OptionMissingImdbId": "IMDb Id \u0436\u043e\u049b",
@@ -414,45 +414,45 @@
     "OptionMissingTvdbId": "TheTVDB Id \u0436\u043e\u049b",
     "MessageNoDevicesSupportCameraUpload": "You currently don't have any devices that support camera upload.",
     "OptionMissingOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443 \u0436\u043e\u049b",
-    "LabelCameraUploadPath": "Camera upload path:",
+    "LabelCameraUploadPath": "\u041a\u0430\u043c\u0435\u0440\u0430\u0434\u0430\u043d \u043a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443 \u0436\u043e\u043b\u044b:",
     "OptionFileMetadataYearMismatch": "\u0424\u0430\u0439\u043b\/\u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0436\u044b\u043b\u044b \u0441\u04d9\u0439\u043a\u0435\u0441 \u0435\u043c\u0435\u0441",
     "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used.",
     "TabGeneral": "\u0416\u0430\u043b\u043f\u044b",
-    "LabelCreateCameraUploadSubfolder": "Create a subfolder for each device",
+    "LabelCreateCameraUploadSubfolder": "\u04d8\u0440\u049b\u0430\u0439\u0441\u044b \u0436\u0430\u0431\u0434\u044b\u049b \u04af\u0448\u0456\u043d \u0456\u0448\u043a\u0456 \u049b\u0430\u043b\u0442\u0430 \u0436\u0430\u0441\u0430\u0443",
     "TitleSupport": "\u049a\u043e\u043b\u0434\u0430\u0443",
     "LabelCreateCameraUploadSubfolderHelp": "Specific folders can be assigned to a device by clicking on it from the Devices page.",
     "TabLog": "\u0416\u04b1\u0440\u043d\u0430\u043b",
-    "LabelCustomDeviceDisplayName": "Display name:",
+    "LabelCustomDeviceDisplayName": "\u0411\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0443 \u0430\u0442\u044b:",
     "TabAbout": "\u0422\u0443\u0440\u0430\u043b\u044b",
     "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.",
     "TabSupporterKey": "\u049a\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456",
-    "HeaderInviteUser": "Invite User",
+    "HeaderInviteUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u0448\u0430\u049b\u044b\u0440\u0443",
     "TabBecomeSupporter": "\u049a\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u0431\u043e\u043b\u0443",
-    "LabelConnectInviteUserHelp": "This is the username or email that your friend uses to sign in to the Media Browser website.",
+    "LabelConnectInviteUserHelp": "\u0411\u04b1\u043b \u0434\u043e\u0441\u0442\u0430\u0440\u044b\u04a3\u044b\u0437\u0434\u044b\u04a3 Media Browser \u0493\u0430\u043b\u0430\u043c\u0442\u043e\u0440 \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u043a\u0456\u0440\u0433\u0435\u043d\u0434\u0435 \u049b\u043e\u043b\u0434\u0430\u043d\u0430\u0442\u044b\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043d\u0435\u043c\u0435\u0441\u0435 \u0435-\u043f\u043e\u0448\u0442\u0430 \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.",
     "MediaBrowserHasCommunity": "Media Browser \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u044b \u0431\u0435\u043d \u049b\u043e\u043b\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b\u04a3 \u0434\u0430\u043c\u0443\u0434\u0430\u0493\u044b \u049b\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0493\u044b \u0431\u0430\u0440.",
     "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Media Browser Connect.",
     "CheckoutKnowledgeBase": "Media Browser \u0435\u04a3 \u04af\u043b\u043a\u0435\u043d \u049b\u0430\u0439\u0442\u0430\u0440\u044b\u043c\u0434\u044b\u043b\u044b\u0493\u044b\u043d \u0430\u043b\u0443 \u0436\u04e9\u043d\u0456\u043d\u0434\u0435 \u043a\u04e9\u043c\u0435\u043a\u0442\u0435\u0441\u0443 \u04af\u0448\u0456\u043d \u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d \u049b\u0430\u0440\u0430\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.",
-    "ButtonSendInvitation": "Send Invitation",
+    "ButtonSendInvitation": "\u0428\u0430\u049b\u044b\u0440\u044b\u043c\u0434\u044b \u0436\u0456\u0431\u0435\u0440\u0443",
     "SearchKnowledgeBase": "\u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d\u0430\u043d \u0456\u0437\u0434\u0435\u0443",
-    "HeaderGuests": "Guests",
+    "HeaderGuests": "\u049a\u043e\u043d\u0430\u049b\u0442\u0430\u0440",
     "VisitTheCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443",
-    "HeaderLocalUsers": "Local Users",
+    "HeaderLocalUsers": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440",
     "VisitMediaBrowserWebsite": "Media Browser \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u0443",
-    "HeaderPendingInvitations": "Pending Invitations",
+    "HeaderPendingInvitations": "\u0411\u04e9\u0433\u0435\u043b\u0456\u0441 \u0448\u0430\u049b\u044b\u0440\u044b\u043c\u0434\u0430\u0440",
     "VisitMediaBrowserWebsiteLong": "\u0421\u043e\u04a3\u0493\u044b \u0436\u0430\u04a3\u0430\u043b\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u0431\u0456\u043b\u0456\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u0436\u04d9\u043d\u0435 \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0431\u043b\u043e\u0433\u0456\u043c\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u043f \u0442\u04b1\u0440\u0443 \u04af\u0448\u0456\u043d Media Browser \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u044b\u04a3\u044b\u0437.",
-    "TabParentalControl": "Parental Control",
+    "TabParentalControl": "\u041c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0431\u0430\u0441\u049b\u0430\u0440\u0443",
     "OptionHideUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u043a\u0456\u0440\u0443 \u044d\u043a\u0440\u0430\u043d\u0434\u0430\u0440\u044b\u043d\u0430\u043d \u0436\u0430\u0441\u044b\u0440\u0443",
-    "HeaderAccessSchedule": "Access Schedule",
+    "HeaderAccessSchedule": "\u049a\u0430\u0442\u044b\u043d\u0430\u0441\u0443 \u043a\u0435\u0441\u0442\u0435\u0441\u0456",
     "OptionDisableUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0443",
-    "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.",
+    "HeaderAccessScheduleHelp": "\u049a\u0430\u0442\u044b\u043d\u0430\u0441\u0443\u0434\u044b \u0431\u0435\u043b\u0433\u0456\u043b\u0456 \u0441\u0430\u0493\u0430\u0442\u0442\u0430\u0440\u0493\u0430 \u0448\u0435\u043a\u0442\u0435\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0441\u0443 \u043a\u0435\u0441\u0442\u0435\u0441\u0456\u043d \u0436\u0430\u0441\u0430\u04a3\u044b\u0437.",
     "OptionDisableUserHelp": "\u0415\u0433\u0435\u0440 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u044b\u043d\u0441\u0430, \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u043f\u0435\u0439\u0434\u0456. \u0411\u0430\u0440 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0434\u0430\u0440 \u043a\u0435\u043d\u0435\u0442 \u04af\u0437\u0456\u043b\u0435\u0434\u0456.",
-    "ButtonAddSchedule": "Add Schedule",
+    "ButtonAddSchedule": "\u041a\u0435\u0441\u0442\u0435 \u04af\u0441\u0442\u0435\u0443",
     "HeaderAdvancedControl": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443",
-    "LabelAccessDay": "Day of week:",
+    "LabelAccessDay": "\u0410\u043f\u0442\u0430 \u043a\u04af\u043d\u0456",
     "LabelName": "\u0410\u0442\u044b:",
-    "LabelAccessStart": "Start hour:",
+    "LabelAccessStart": "\u0411\u0430\u0441\u0442\u0430\u0443 \u0441\u0430\u0493\u0430\u0442\u044b:",
     "OptionAllowUserToManageServer": "\u0411\u0443\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443",
-    "LabelAccessEnd": "End hour:",
+    "LabelAccessEnd": "\u0410\u044f\u049b\u0442\u0430\u0443 \u0441\u0430\u0493\u0430\u0442\u044b:",
     "HeaderFeatureAccess": "\u041c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0442\u044b\u043d\u0430\u0441",
     "OptionAllowMediaPlayback": "\u0422\u0430\u0441\u0443\u0448\u044b\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443\u044b\u043d\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443",
     "OptionAllowBrowsingLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u0448\u043e\u043b\u0443\u044b\u043d\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443",

+ 8 - 8
MediaBrowser.Server.Implementations/Localization/Server/ru.json

@@ -108,9 +108,9 @@
     "TabProfile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c",
     "LabelImageRefreshMode": "\u0420\u0435\u0436\u0438\u043c \u043f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432:",
     "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435",
-    "OptionDownloadMissingImages": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0442\u0441\u0443\u0442-\u0438\u0445 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432",
+    "OptionDownloadMissingImages": "\u041f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432",
     "TabImages": "\u0420\u0438\u0441\u0443\u043d\u043a\u0438",
-    "OptionReplaceExistingImages": "\u0417\u0430\u043c\u0435\u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442-\u0438\u0445 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432",
+    "OptionReplaceExistingImages": "\u0417\u0430\u043c\u0435\u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432",
     "TabNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f",
     "OptionRefreshAllData": "\u041f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445",
     "TabCollectionTitles": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f",
@@ -428,7 +428,7 @@
     "TabSupporterKey": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430",
     "HeaderInviteUser": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f",
     "TabBecomeSupporter": "\u0421\u0442\u0430\u0442\u044c \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043e\u043c",
-    "LabelConnectInviteUserHelp": "This is the username or email that your friend uses to sign in to the Media Browser website.",
+    "LabelConnectInviteUserHelp": "\u042d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d-\u043f\u043e\u0447\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u0430\u0448 \u0434\u0440\u0443\u0433 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 Media Browser.",
     "MediaBrowserHasCommunity": "\u0423 Media Browser - \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432.",
     "HeaderInviteUserHelp": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0437\u044c\u044f\u043c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u0430\u0448\u0438\u043c \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Media Browser Connect \u0441\u0442\u0430\u043b\u043e \u043b\u0435\u0433\u0447\u0435, \u0447\u0435\u043c \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u043f\u0440\u0435\u0436\u0434\u0435.",
     "CheckoutKnowledgeBase": "\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0411\u0430\u0437\u043e\u0439 \u0437\u043d\u0430\u043d\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0432\u0435\u0441\u0442\u0438 \u0441\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u043e \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0442\u0434\u0430\u0447\u0438 \u043e\u0442 Media Browser.",
@@ -442,17 +442,17 @@
     "VisitMediaBrowserWebsiteLong": "\u041f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 \u0441\u0430\u0439\u0442 Media Browser, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0441\u0432\u0435\u0434\u043e\u043c\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0431\u043b\u043e\u0433\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.",
     "TabParentalControl": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c",
     "OptionHideUser": "\u0421\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0432\u0445\u043e\u0434\u0430",
-    "HeaderAccessSchedule": "Access Schedule",
+    "HeaderAccessSchedule": "\u0420\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430",
     "OptionDisableUser": "\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f",
     "HeaderAccessScheduleHelp": "\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u044b.",
     "OptionDisableUserHelp": "\u041f\u0440\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0437\u043a\u043e \u043e\u0431\u043e\u0440\u0432\u0430\u043d\u044b.",
-    "ButtonAddSchedule": "Add Schedule",
+    "ButtonAddSchedule": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
     "HeaderAdvancedControl": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",
-    "LabelAccessDay": "Day of week:",
+    "LabelAccessDay": "\u0414\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438:",
     "LabelName": "\u0418\u043c\u044f (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435):",
-    "LabelAccessStart": "Start hour:",
+    "LabelAccessStart": "\u041d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0430\u0441:",
     "OptionAllowUserToManageServer": "\u042d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c",
-    "LabelAccessEnd": "End hour:",
+    "LabelAccessEnd": "\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0447\u0430\u0441:",
     "HeaderFeatureAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438",
     "OptionAllowMediaPlayback": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445",
     "OptionAllowBrowsingLiveTv": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u044d\u0444\u0438\u0440\u043d\u043e\u0433\u043e \u0442\u0432",

+ 0 - 2
MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj

@@ -11,7 +11,6 @@
     <AssemblyName>MediaBrowser.Server.Implementations</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
@@ -511,7 +510,6 @@
   </ItemGroup>
   <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">

+ 0 - 8
MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj

@@ -12,7 +12,6 @@
     <StartupObject>MediaBrowser.Server.Mono.MainClass</StartupObject>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
     <DebugSymbols>true</DebugSymbols>
@@ -189,11 +188,4 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
   </ItemGroup>
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
-  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-    <PropertyGroup>
-      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
-    </PropertyGroup>
-    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
-  </Target>
 </Project>

+ 0 - 2
MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj

@@ -12,7 +12,6 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <PlatformTarget>AnyCPU</PlatformTarget>
@@ -222,7 +221,6 @@
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
   <PropertyGroup>
     <PostBuildEvent>if $(ConfigurationName) == Release (
 rmdir "$(SolutionDir)..\Deploy\Server\System" /s /q

+ 0 - 2
MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj

@@ -11,7 +11,6 @@
     <AssemblyName>MediaBrowser.WebDashboard</AssemblyName>
     <FileAlignment>512</FileAlignment>
     <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
-    <RestorePackages>true</RestorePackages>
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
@@ -2264,7 +2263,6 @@
     <PostBuildEvent>
     </PostBuildEvent>
   </PropertyGroup>
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">

+ 2 - 2
Nuget/MediaBrowser.Common.Internal.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common.Internal</id>
-        <version>3.0.491</version>
+        <version>3.0.493</version>
         <title>MediaBrowser.Common.Internal</title>
         <authors>Luke</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.491" />
+            <dependency id="MediaBrowser.Common" version="3.0.493" />
             <dependency id="NLog" version="3.1.0.0" />
             <dependency id="SimpleInjector" version="2.5.2" />
             <dependency id="sharpcompress" version="0.10.2" />

+ 1 - 1
Nuget/MediaBrowser.Common.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common</id>
-        <version>3.0.491</version>
+        <version>3.0.493</version>
         <title>MediaBrowser.Common</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>

+ 1 - 1
Nuget/MediaBrowser.Model.Signed.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Model.Signed</id>
-        <version>3.0.491</version>
+        <version>3.0.493</version>
         <title>MediaBrowser.Model - Signed Edition</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>

+ 2 - 2
Nuget/MediaBrowser.Server.Core.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Server.Core</id>
-        <version>3.0.491</version>
+        <version>3.0.493</version>
         <title>Media Browser.Server.Core</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains core components required to build plugins for Media Browser Server.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.491" />
+            <dependency id="MediaBrowser.Common" version="3.0.493" />
         </dependencies>
     </metadata>
     <files>

+ 0 - 1
OpenSubtitlesHandler/OpenSubtitlesHandler.csproj

@@ -119,7 +119,6 @@
     <Content Include="XML-RPC\Docs\XML-RPC.txt" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">