瀏覽代碼

update translations

Luke Pulverenti 10 年之前
父節點
當前提交
97ece5bd6f
共有 63 個文件被更改,包括 248 次插入91 次删除
  1. 20 0
      MediaBrowser.Controller/Entities/BaseItem.cs
  2. 3 1
      MediaBrowser.Model/Configuration/UserConfiguration.cs
  3. 22 7
      MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs
  4. 22 7
      MediaBrowser.Providers/TV/FanartSeriesProvider.cs
  5. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json
  6. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json
  7. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json
  8. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/da.json
  9. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/de.json
  10. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/el.json
  11. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json
  12. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json
  13. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/es.json
  14. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json
  15. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json
  16. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
  17. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/he.json
  18. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json
  19. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/it.json
  20. 2 2
      MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json
  21. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json
  22. 3 3
      MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json
  23. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json
  24. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json
  25. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json
  26. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json
  27. 2 2
      MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
  28. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json
  29. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json
  30. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json
  31. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json
  32. 1 1
      MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json
  33. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/ar.json
  34. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/ca.json
  35. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/cs.json
  36. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/da.json
  37. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/de.json
  38. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/el.json
  39. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/en_GB.json
  40. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/en_US.json
  41. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/es.json
  42. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/es_MX.json
  43. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/fi.json
  44. 8 5
      MediaBrowser.Server.Implementations/Localization/Server/fr.json
  45. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/he.json
  46. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/hr.json
  47. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/it.json
  48. 5 2
      MediaBrowser.Server.Implementations/Localization/Server/kk.json
  49. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/ko.json
  50. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/ms.json
  51. 9 6
      MediaBrowser.Server.Implementations/Localization/Server/nb.json
  52. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/nl.json
  53. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/pl.json
  54. 5 2
      MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json
  55. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json
  56. 5 2
      MediaBrowser.Server.Implementations/Localization/Server/ru.json
  57. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/server.json
  58. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/sv.json
  59. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/tr.json
  60. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/vi.json
  61. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json
  62. 4 1
      MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json
  63. 17 2
      MediaBrowser.Server.Startup.Common/FFMpeg/FFmpegValidator.cs

+ 20 - 0
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -1073,6 +1073,11 @@ namespace MediaBrowser.Controller.Entities
                 throw new ArgumentNullException("user");
             }
 
+            if (!IsVisibleViaTags(user))
+            {
+                return false;
+            }
+
             var maxAllowedRating = user.Configuration.MaxParentalRating;
 
             if (maxAllowedRating == null)
@@ -1103,6 +1108,21 @@ namespace MediaBrowser.Controller.Entities
             return value.Value <= maxAllowedRating.Value;
         }
 
+        private bool IsVisibleViaTags(User user)
+        {
+            var hasTags = this as IHasTags;
+
+            if (hasTags != null)
+            {
+                if (user.Configuration.BlockedTags.Any(i => hasTags.Tags.Contains(i, StringComparer.OrdinalIgnoreCase)))
+                {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+
         /// <summary>
         /// Gets the block unrated value.
         /// </summary>

+ 3 - 1
MediaBrowser.Model/Configuration/UserConfiguration.cs

@@ -86,7 +86,8 @@ namespace MediaBrowser.Model.Configuration
         public bool EnableUserPreferenceAccess { get; set; }
 
         public string[] LatestItemsExcludes { get; set; }
-        
+        public string[] BlockedTags { get; set; }
+   
         /// <summary>
         /// Initializes a new instance of the <see cref="UserConfiguration" /> class.
         /// </summary>
@@ -102,6 +103,7 @@ namespace MediaBrowser.Model.Configuration
             OrderedViews = new string[] { };
             BlockedMediaFolders = new string[] { };
             DisplayChannelsWithinViews = new string[] { };
+            BlockedTags = new string[] { };
             BlockedChannels = new string[] { };
             BlockUnratedItems = new UnratedItem[] { };
 

+ 22 - 7
MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs

@@ -290,18 +290,33 @@ namespace MediaBrowser.Providers.Movies
 
             Directory.CreateDirectory(Path.GetDirectoryName(path));
 
-            using (var response = await _httpClient.Get(new HttpRequestOptions
+            try
             {
-                Url = url,
-                ResourcePool = FanartArtistProvider.Current.FanArtResourcePool,
-                CancellationToken = cancellationToken
+                using (var response = await _httpClient.Get(new HttpRequestOptions
+                {
+                    Url = url,
+                    ResourcePool = FanartArtistProvider.Current.FanArtResourcePool,
+                    CancellationToken = cancellationToken
 
-            }).ConfigureAwait(false))
+                }).ConfigureAwait(false))
+                {
+                    using (var fileStream = _fileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read, true))
+                    {
+                        await response.CopyToAsync(fileStream).ConfigureAwait(false);
+                    }
+                }
+            }
+            catch (HttpException exception)
             {
-                using (var fileStream = _fileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read, true))
+                if (exception.StatusCode.HasValue && exception.StatusCode.Value == HttpStatusCode.NotFound)
                 {
-                    await response.CopyToAsync(fileStream).ConfigureAwait(false);
+                    // If the user has automatic updates enabled, save a dummy object to prevent repeated download attempts
+                    _json.SerializeToFile(new RootObject(), path);
+
+                    return;
                 }
+
+                throw;
             }
         }
 

+ 22 - 7
MediaBrowser.Providers/TV/FanartSeriesProvider.cs

@@ -295,18 +295,33 @@ namespace MediaBrowser.Providers.TV
 
             Directory.CreateDirectory(Path.GetDirectoryName(path));
 
-            using (var response = await _httpClient.Get(new HttpRequestOptions
+            try
             {
-                Url = url,
-                ResourcePool = FanartArtistProvider.Current.FanArtResourcePool,
-                CancellationToken = cancellationToken
+                using (var response = await _httpClient.Get(new HttpRequestOptions
+                {
+                    Url = url,
+                    ResourcePool = FanartArtistProvider.Current.FanArtResourcePool,
+                    CancellationToken = cancellationToken
 
-            }).ConfigureAwait(false))
+                }).ConfigureAwait(false))
+                {
+                    using (var fileStream = _fileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read, true))
+                    {
+                        await response.CopyToAsync(fileStream).ConfigureAwait(false);
+                    }
+                }
+            }
+            catch (HttpException exception)
             {
-                using (var fileStream = _fileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read, true))
+                if (exception.StatusCode.HasValue && exception.StatusCode.Value == HttpStatusCode.NotFound)
                 {
-                    await response.CopyToAsync(fileStream).ConfigureAwait(false);
+                    // If the user has automatic updates enabled, save a dummy object to prevent repeated download attempts
+                    _json.SerializeToFile(new RootObject(), path);
+
+                    return;
                 }
+
+                throw;
             }
         }
 

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/da.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

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

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "Eine E-Mail mit der Einladung zum Sharing ist an {0} geschickt worden.",
     "MessageInvitationSentToNewUser": "Eine E-Mail mit der Einladung zur Anmeldung am Media Browser ist an {0} geschickt worden.",
     "HeaderConnectionFailure": "Verbindungsfehler",
-    "MessageUnableToConnectToServer": "Wir konnten leider keine Verbindung mit dem ausgew\u00e4hlten Server herstellen. Bitte versuche es noch einmal sp\u00e4ter.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "W\u00e4hle Server",
     "MessagePluginConfigurationRequiresLocalAccess": "Melde dich bitte direkt an deinem lokalen Server an, um dieses Plugin konfigurieren zu k\u00f6nnen.",
     "MessageLoggedOutParentalControl": "Der Zugriff ist derzeit eingeschr\u00e4nkt. Bitte versuche es sp\u00e4ter erneut.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/el.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/es.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "Se ha enviado un correo electr\u00f3nico a {0}, invit\u00e1ndolo a aceptar tu invitaci\u00f3n para compartir.",
     "MessageInvitationSentToNewUser": "Se ha enviado un correo electr\u00f3nico a {0} invit\u00e1ndolo a registrarse con Media Browser.",
     "HeaderConnectionFailure": "Falla de Conexi\u00f3n",
-    "MessageUnableToConnectToServer": "No fue posible conectarse a lo que se ha seleccionado en este momento. Por favor int\u00e9ntelo de nuevo mas tarde.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Seleccionar servidor",
     "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento por favor inicie sesi\u00f3n en su servidor local directamente.",
     "MessageLoggedOutParentalControl": "El acceso se encuentra restringido en este momento. Por favor int\u00e9ntelo de nuevo mas tarde.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

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

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "Un mail a \u00e9t\u00e9 envoy\u00e9 \u00e0 {0} pour les inviter \u00e0 accepter votre invitation de partage.",
     "MessageInvitationSentToNewUser": "Un mail a \u00e9t\u00e9 envoy\u00e9 \u00e0 {0} pour les inviter \u00e0 s'inscrire sur Media Browser.",
     "HeaderConnectionFailure": "Erreur de connexion",
-    "MessageUnableToConnectToServer": "Nous sommes incapable de se connecter \u00e0 la s\u00e9lection pour le moment. S.V.P. r\u00e9essayer plus tard.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "S\u00e9lectionner le serveur",
     "MessagePluginConfigurationRequiresLocalAccess": "Pour configurer ce plugin, S.v.p. connecter vous \u00e0 votre serveur local directement.",
     "MessageLoggedOutParentalControl": "L'acc\u00e8s est actuellement limit\u00e9. S.v.p. r\u00e9essayez plus tard",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/he.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/it.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "Una e-mail \u00e8 stata inviata a {0}, invitandoli ad accettare l'invito di condivisione.",
     "MessageInvitationSentToNewUser": "Una e-mail \u00e8 stata inviata a {0} invitandoli a firmare con Media Browser.",
     "HeaderConnectionFailure": "Errore di connessione",
-    "MessageUnableToConnectToServer": "Non siamo in grado di connettersi al selezionata in questo momento. Si prega di riprovare pi\u00f9 tardi.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Selezionare il server",
     "MessagePluginConfigurationRequiresLocalAccess": "Per configurare questo plugin si prega di accedere al proprio server locale direttamente.",
     "MessageLoggedOutParentalControl": "L'accesso \u00e8 attualmente limitato. Si prega di riprovare pi\u00f9 tardi.",

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

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "\u041e\u043b\u0430\u0440\u0493\u0430 \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u0448\u0430\u049b\u044b\u0440\u0443\u044b\u04a3\u044b\u0437\u0434\u044b \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u0441\u044b\u043c\u0435\u043d, \u044d-\u043f\u043e\u0448\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043f \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456.",
     "MessageInvitationSentToNewUser": "\u041e\u043b\u0430\u0440\u0493\u0430 Media Browser \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456\u043d \u0436\u0430\u0441\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u0441\u044b\u043c\u0435\u043d, \u044d-\u043f\u043e\u0448\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043f \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456.",
     "HeaderConnectionFailure": "\u049a\u043e\u0441\u044b\u043b\u0443 \u0441\u04d9\u0442\u0441\u0456\u0437",
-    "MessageUnableToConnectToServer": "\u0414\u04d9\u043b \u049b\u0430\u0437\u0456\u0440 \u0442\u0430\u04a3\u0434\u0430\u043b\u0493\u0430\u043d\u0493\u0430 \u049b\u043e\u0441\u044b\u043b\u0443\u044b\u043c\u044b\u0437 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.",
+    "MessageUnableToConnectToServer": "\u0414\u04d9\u043b \u049b\u0430\u0437\u0456\u0440 \u0442\u0430\u04a3\u0434\u0430\u043b\u0493\u0430\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0433\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u044b\u043c\u044b\u0437 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.",
     "ButtonSelectServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u0443",
     "MessagePluginConfigurationRequiresLocalAccess": "\u041e\u0441\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0456 \u0442\u0435\u04a3\u0448\u0435\u0443 \u04af\u0448\u0456\u043d \u0436\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u0441\u0435\u0440\u0432\u0435\u0440\u0456\u04a3\u0456\u0437\u0433\u0435 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u043a\u0456\u0440\u0456\u04a3\u0456\u0437.",
     "MessageLoggedOutParentalControl": "\u0410\u0493\u044b\u043c\u0434\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0441\u0443 \u0448\u0435\u043a\u0442\u0435\u043b\u0433\u0435\u043d. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.",
@@ -621,7 +621,7 @@
     "MessageContactAdminToResetPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456\u04a3\u0456\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u04d9\u043a\u0456\u043c\u0448\u0456\u04a3\u0456\u0437\u0433\u0435 \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437.",
     "MessageForgotPasswordInNetworkRequired": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443 \u04af\u0434\u0435\u0440\u0456\u0441\u0456 \u04af\u0448\u0456\u043d \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u04af\u0439\u043b\u0456\u043a \u0436\u0435\u043b\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u0456\u0448\u0456\u043d\u0434\u0435 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.",
     "MessageForgotPasswordFileCreated": "\u041a\u0435\u043b\u0435\u0441\u0456 \u0444\u0430\u0439\u043b \u0441\u0435\u0440\u0432\u0435\u0440\u0456\u04a3\u0456\u0437\u0434\u0435 \u0436\u0430\u0441\u0430\u043b\u0434\u044b \u0436\u04d9\u043d\u0435 \u049b\u0430\u043b\u0430\u0439 \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443 \u0442\u0443\u0440\u0430\u043b\u044b \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u0430\u0440 \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0430\u0440:",
-    "MessageForgotPasswordFileExpiration": "PIN \u044b\u0441\u044b\u0440\u0443\u044b {0} \u0431\u0456\u0442\u0435\u0434\u0456.",
+    "MessageForgotPasswordFileExpiration": "PIN \u044b\u0441\u044b\u0440\u0443 \u043c\u0435\u0437\u0433\u0456\u043b\u0456 {0} \u0431\u0456\u0442\u0435\u0434\u0456.",
     "MessageInvalidForgotPasswordPin": "\u0416\u0430\u0440\u0430\u043c\u0441\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u043c\u0435\u0440\u0437\u0456\u043c\u0456 \u0431\u0456\u0442\u043a\u0435\u043d PIN \u0435\u043d\u0433\u0456\u0437\u0456\u043b\u0434\u0456. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.",
     "MessagePasswordResetForUsers": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0435\u0440 \u043a\u0435\u043b\u0435\u0441\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440 \u04af\u0448\u0456\u043d \u044b\u0441\u044b\u0440\u044b\u043b\u0434\u044b:",
     "HeaderInviteGuest": "\u049a\u043e\u043d\u0430\u049b\u0442\u044b \u0448\u0430\u049b\u044b\u0440\u0443",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 3 - 3
MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json

@@ -604,20 +604,20 @@
     "HeaderSelectUploadPath": "Velg Opplastings sti",
     "LabelEnableCameraUploadForHelp": "Opplasting vil foreg\u00e5 automatisk i bakgrunnen n\u00e5r man er logget inn i Media Browser.",
     "ErrorMessageStartHourGreaterThanEnd": "Sluttid m\u00e5 v\u00e6re senere enn starttid.",
-    "ButtonLibraryAccess": "Library access",
+    "ButtonLibraryAccess": "Bibliotektilgang",
     "ButtonParentalControl": "Foreldrekontroll",
     "HeaderInvitationSent": "Invitasjon Sendt",
     "MessageInvitationSentToUser": "En epost har blitt sent til {0} med oppfordring til \u00e5 godta invitasjonen din.",
     "MessageInvitationSentToNewUser": "En epost har blitt sendt til {0} med en invitasjon til \u00e5 registrere seg med Media Browser.",
     "HeaderConnectionFailure": "Tilkobling feiler",
-    "MessageUnableToConnectToServer": "Vi klarte ikke \u00e5 koble til ditt valg n\u00e5. Vennligst pr\u00f8v igjen senere.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Velg server",
     "MessagePluginConfigurationRequiresLocalAccess": "Logg inn p\u00e5 din lokale server direkte for \u00e5 konfigurere dette programtillegget.",
     "MessageLoggedOutParentalControl": "Tilgangen er forel\u00f8pig begrenset. Vennligst pr\u00f8v igjen senere.",
     "DefaultErrorMessage": "Det skjedde en feil under behandling av foresp\u00f8rselen. Vennligst pr\u00f8v igjen senere.",
     "ButtonAccept": "Godta",
     "ButtonReject": "Avvis",
-    "HeaderForgotPassword": "Forgot Password",
+    "HeaderForgotPassword": "Glemt passord",
     "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.",
     "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.",
     "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "Een email is verzonden naar {0} om je uitnodiging om media te delen te accepteren.",
     "MessageInvitationSentToNewUser": "Een email is verzonden naar {0} om je uitnodiging aan te melden bij Media Browser",
     "HeaderConnectionFailure": "Verbindingsfout",
-    "MessageUnableToConnectToServer": "Er kan momenteel niet met de geselecteerde verbonden worden, probeer het svp. later nog eens.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Selecteer server",
     "MessagePluginConfigurationRequiresLocalAccess": "Meld svp. op de lokale server aan om deze plugin te configureren.",
     "MessageLoggedOutParentalControl": "Toegang is momenteel bepertk, probeer later opnieuw.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "Um email foi enviado para {0}, convidando para aceitar seu convite de compartilhamento.",
     "MessageInvitationSentToNewUser": "Um email foi enviado para {0}, convidando para inscrever-se no Media Browser.",
     "HeaderConnectionFailure": "Falha na Conex\u00e3o",
-    "MessageUnableToConnectToServer": "N\u00e3o foi poss\u00edvel conectar ao selecionado. Por favor, tente mais tarde.",
+    "MessageUnableToConnectToServer": "N\u00e3o foi poss\u00edvel conectar ao servidor selecionado. Por favor, tente mais tarde.",
     "ButtonSelectServer": "Selecionar servidor",
     "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este plugin, por favor entre em seu servidor local diretamente.",
     "MessageLoggedOutParentalControl": "O acesso est\u00e1 atualmente restrito. Por favor, tente mais tarde.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

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

@@ -5,7 +5,7 @@
     "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",
+    "DeleteImage": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043e\u043a",
     "DeleteImageConfirmation": "\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 \u0440\u0438\u0441\u0443\u043d\u043e\u043a?",
     "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.",
@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0443.",
     "MessageInvitationSentToNewUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u0438\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 Media Browser.",
     "HeaderConnectionFailure": "\u0421\u0431\u043e\u0439 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f",
-    "MessageUnableToConnectToServer": "\u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u0434\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c\u0443. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.",
+    "MessageUnableToConnectToServer": "\u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.",
     "ButtonSelectServer": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440",
     "MessagePluginConfigurationRequiresLocalAccess": "\u0414\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 \u0441\u0432\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.",
     "MessageLoggedOutParentalControl": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json

@@ -610,7 +610,7 @@
     "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
     "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
     "HeaderConnectionFailure": "Connection Failure",
-    "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
+    "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please try again later.",
     "ButtonSelectServer": "Select server",
     "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
     "MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/ar.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/ca.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/cs.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/da.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/de.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Passwort zur\u00fccksetzen",
     "HeaderParentalRatings": "Altersbeschr\u00e4nkung",
     "HeaderVideoTypes": "Videotypen",
-    "HeaderYears": "Jahre"
+    "HeaderYears": "Jahre",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/el.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/en_GB.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/en_US.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/es.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/es_MX.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Restablecer Contrase\u00f1a",
     "HeaderParentalRatings": "Clasificaci\u00f3n Parental",
     "HeaderVideoTypes": "Tipos de Video",
-    "HeaderYears": "A\u00f1os"
+    "HeaderYears": "A\u00f1os",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/fi.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

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

@@ -4,8 +4,8 @@
     "LabelGithub": "Github",
     "LabelSwagger": "Swagger",
     "LabelStandard": "Standard",
-    "LabelApiDocumentation": "Api Documentation",
-    "LabelDeveloperResources": "Developer Resources",
+    "LabelApiDocumentation": "Documentation API",
+    "LabelDeveloperResources": "Ressources pour d\u00e9veloppeurs",
     "LabelBrowseLibrary": "Parcourir la biblioth\u00e8que",
     "LabelConfigureMediaBrowser": "Configurer Media Browser",
     "LabelOpenLibraryViewer": "Ouvrir le navigateur de biblioth\u00e8que",
@@ -146,11 +146,11 @@
     "OptionBudget": "Budget",
     "OptionRevenue": "Recettes",
     "OptionPoster": "Affiche",
-    "OptionPosterCard": "Poster card",
+    "OptionPosterCard": "Carte Affiche",
     "OptionBackdrop": "Image d'arri\u00e8re-plan",
     "OptionTimeline": "Chronologie",
     "OptionThumb": "Vignette",
-    "OptionThumbCard": "Thumb card",
+    "OptionThumbCard": "Carte Vignette",
     "OptionBanner": "Banni\u00e8re",
     "OptionCriticRating": "Note des critiques",
     "OptionVideoBitrate": "D\u00e9bit vid\u00e9o",
@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Mot de passe r\u00e9initialis\u00e9",
     "HeaderParentalRatings": "Note parentale",
     "HeaderVideoTypes": "Types de vid\u00e9o",
-    "HeaderYears": "Ann\u00e9es"
+    "HeaderYears": "Ann\u00e9es",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/he.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/hr.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/it.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Valutazioni genitori",
     "HeaderVideoTypes": "Tipi Video",
-    "HeaderYears": "Anni"
+    "HeaderYears": "Anni",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 5 - 2
MediaBrowser.Server.Implementations/Localization/Server/kk.json

@@ -1216,7 +1216,7 @@
     "HeaderCameraUploadHelp": "\u04b0\u0442\u049b\u044b\u0440 \u0436\u0430\u0431\u0434\u044b\u049b\u0442\u0430\u0440\u044b\u04a3\u044b\u0437\u0431\u0435\u043d \u0442\u04af\u0441\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0444\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u043c\u0435\u043d \u0431\u0435\u0439\u043d\u0435\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u044b Media Browser \u0456\u0448\u0456\u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u049b\u043e\u0442\u0430\u0440\u044b\u043f \u0431\u0435\u0440\u0443.",
     "MessageNoDevicesSupportCameraUpload": "\u0410\u0493\u044b\u043c\u0434\u0430 \u043a\u0430\u043c\u0435\u0440\u0430\u0434\u0430\u043d \u049b\u043e\u0442\u0430\u0440\u044b\u043f \u0431\u0435\u0440\u0435\u0442\u0456\u043d \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u0436\u0430\u0431\u0434\u044b\u049b\u0442\u0430\u0440\u044b\u04a3\u044b\u0437 \u0436\u043e\u049b.",
     "LabelCameraUploadPath": "\u041a\u0430\u043c\u0435\u0440\u0430\u0434\u0430\u043d \u043a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443 \u0436\u043e\u043b\u044b:",
-    "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used. If using a custom path it will also need to be added in the library setup area.",
+    "LabelCameraUploadPathHelp": "\u049a\u0430\u043b\u0430\u0443\u044b\u04a3\u044b\u0437 \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u043e\u043b\u0434\u044b \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437. \u0415\u0433\u0435\u0440 \u0430\u043d\u044b\u049b\u0442\u0430\u043b\u043c\u0430\u0441\u0430, \u04d9\u0434\u0435\u043f\u043a\u0456 \u049b\u0430\u043b\u0442\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0430\u0434\u044b. \u0415\u0433\u0435\u0440 \u0442\u0435\u04a3\u0448\u0435\u043b\u0435\u0442\u0456\u043d \u0436\u043e\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0441\u0430, \u0431\u04b1\u043d\u044b \u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b \u0422\u0430\u0441\u0443\u0448\u044b\u0445\u0430\u043d\u0430\u043d\u044b \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443 \u0430\u0439\u043c\u0430\u0493\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u0443 \u049b\u0430\u0436\u0435\u0442.",
     "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",
     "LabelCreateCameraUploadSubfolderHelp": "\u0416\u0430\u0431\u0434\u044b\u049b\u0442\u0430\u0440 \u0431\u0435\u0442\u0456\u043d\u0434\u0435 \u043d\u04b1\u049b\u044b\u0493\u0430\u043d\u0434\u0430 \u0436\u0430\u0431\u0434\u044b\u049b\u049b\u0430 \u043d\u0430\u049b\u0442\u044b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 \u0442\u0430\u0493\u0430\u0439\u044b\u043d\u0434\u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.",
     "LabelCustomDeviceDisplayName": "\u0411\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0443 \u0430\u0442\u044b:",
@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443",
     "HeaderParentalRatings": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u0442\u0430\u0440",
     "HeaderVideoTypes": "\u0411\u0435\u0439\u043d\u0435 \u0442\u04af\u0440\u043b\u0435\u0440\u0456",
-    "HeaderYears": "\u0416\u044b\u043b\u0434\u0430\u0440"
+    "HeaderYears": "\u0416\u044b\u043b\u0434\u0430\u0440",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/ko.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/ms.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 9 - 6
MediaBrowser.Server.Implementations/Localization/Server/nb.json

@@ -1263,14 +1263,17 @@
     "LabelSelectLastestItemsFolders": "Inkluder media fra f\u00f8lgende avsnitt i de siste elementene",
     "HeaderShareMediaFolders": "Del media mapper",
     "MessageGuestSharingPermissionsHelp": "De fleste funksjonene er i utgangspunktet utilgjengelig for gjester, men kan aktiveres ved behov.",
-    "HeaderInvitations": "Invitations",
+    "HeaderInvitations": "Invitasjoner",
     "LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.",
-    "HeaderForgotPassword": "Forgot Password",
-    "TitleForgotPassword": "Forgot Password",
-    "TitlePasswordReset": "Password Reset",
+    "HeaderForgotPassword": "Glemt passord",
+    "TitleForgotPassword": "Glemt passord",
+    "TitlePasswordReset": "Resett passord",
     "LabelPasswordRecoveryPinCode": "Pin code:",
-    "HeaderPasswordReset": "Password Reset",
+    "HeaderPasswordReset": "Resett passord",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/nl.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Wachtwoord resetten",
     "HeaderParentalRatings": "Ouderlijke toezicht",
     "HeaderVideoTypes": "Video types",
-    "HeaderYears": "Jaren"
+    "HeaderYears": "Jaren",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/pl.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 5 - 2
MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json

@@ -1216,7 +1216,7 @@
     "HeaderCameraUploadHelp": "Carga autom\u00e1tica de fotos e v\u00eddeos de seus dispositivos m\u00f3veis para o Media Browser.",
     "MessageNoDevicesSupportCameraUpload": "Atualmente voc\u00ea n\u00e3o tem nenhum dispositivo que suporte carga atrav\u00e9s da c\u00e2mera.",
     "LabelCameraUploadPath": "Caminho para carga atrav\u00e9s da c\u00e2mera:",
-    "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used. If using a custom path it will also need to be added in the library setup area.",
+    "LabelCameraUploadPathHelp": "Selecione um caminho personalizado para upload, se desejar. Se n\u00e3o definir, a pasta padr\u00e3o ser\u00e1 usada. Se usar um caminho personalizado, ser\u00e1 necess\u00e1rio adicionar na \u00e1rea de ajustes da biblioteca.",
     "LabelCreateCameraUploadSubfolder": "Criar uma subpasta para cada dispositivo",
     "LabelCreateCameraUploadSubfolderHelp": "Pastas espec\u00edficas podem ser atribu\u00eddas a um dispositivo clicando-as na p\u00e1gina de Dispositivos.",
     "LabelCustomDeviceDisplayName": "Nome para exibi\u00e7\u00e3o:",
@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Redefini\u00e7\u00e3o de Senha",
     "HeaderParentalRatings": "Classifica\u00e7\u00f5es Parentais",
     "HeaderVideoTypes": "Tipos de V\u00eddeo",
-    "HeaderYears": "Anos"
+    "HeaderYears": "Anos",
+    "HeaderAddTag": "Adicionar Tag",
+    "LabelBlockItemsWithTags": "Bloquear itens com tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 5 - 2
MediaBrowser.Server.Implementations/Localization/Server/ru.json

@@ -1216,7 +1216,7 @@
     "HeaderCameraUploadHelp": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u0442\u0441\u043d\u044f\u0442\u044b\u0445 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0439 \u0438 \u0432\u0438\u0434\u0435\u043e \u0438\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 Media Browser.",
     "MessageNoDevicesSupportCameraUpload": "\u041d\u0435\u0442 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0441 \u043a\u0430\u043c\u0435\u0440\u044b.",
     "LabelCameraUploadPath": "\u041f\u0443\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0441 \u043a\u0430\u043c\u0435\u0440\u044b:",
-    "LabelCameraUploadPathHelp": "Select a custom upload path, if desired. If unspecified a default folder will be used. If using a custom path it will also need to be added in the library setup area.",
+    "LabelCameraUploadPathHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043e, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u0442\u043e \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438.",
     "LabelCreateCameraUploadSubfolder": "\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430",
     "LabelCreateCameraUploadSubfolderHelp": "\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u0438 \u0449\u0435\u043b\u0447\u043a\u0435 \u043d\u0430 \u043d\u0451\u043c \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \"\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\".",
     "LabelCustomDeviceDisplayName": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435:",
@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f",
     "HeaderParentalRatings": "\u0412\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f",
     "HeaderVideoTypes": "\u0422\u0438\u043f\u044b \u0432\u0438\u0434\u0435\u043e",
-    "HeaderYears": "\u0413\u043e\u0434\u044b"
+    "HeaderYears": "\u0413\u043e\u0434\u044b",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/server.json

@@ -1288,5 +1288,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/sv.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/tr.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/vi.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 4 - 1
MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json

@@ -1272,5 +1272,8 @@
     "HeaderPasswordReset": "Password Reset",
     "HeaderParentalRatings": "Parental Ratings",
     "HeaderVideoTypes": "Video Types",
-    "HeaderYears": "Years"
+    "HeaderYears": "Years",
+    "HeaderAddTag": "Add Tag",
+    "LabelBlockItemsWithTags": "Block items with tags:",
+    "LabelTag": "Tag:"
 }

+ 17 - 2
MediaBrowser.Server.Startup.Common/FFMpeg/FFmpegValidator.cs

@@ -25,8 +25,23 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg
             _logger.Info("FFMpeg: {0}", info.EncoderPath);
             _logger.Info("FFProbe: {0}", info.ProbePath);
 
-            var fileInfo = new FileInfo(info.EncoderPath);
-            var cachePath = Path.Combine(_appPaths.CachePath, "1" + fileInfo.Length.ToString(CultureInfo.InvariantCulture).GetMD5().ToString("N"));
+            string cacheKey;
+
+            try
+            {
+                cacheKey = new FileInfo(info.EncoderPath).Length.ToString(CultureInfo.InvariantCulture).GetMD5().ToString("N");
+            }
+            catch (IOException)
+            {
+                // This could happen if ffmpeg is coming from a Path variable and we don't have the full path
+                cacheKey = Guid.NewGuid().ToString("N");
+            }
+            catch
+            {
+                cacheKey = Guid.NewGuid().ToString("N");
+            }
+
+            var cachePath = Path.Combine(_appPaths.CachePath, "1" + cacheKey);
 
             ValidateCodecs(info.EncoderPath, cachePath);
         }