add server management to web client

pull/702/head
Luke Pulverenti 10 years ago
parent 7ca1cd8795
commit 60d3f47503

@ -390,5 +390,22 @@ namespace MediaBrowser.Common.Implementations.IO
{
return Path.GetFileNameWithoutExtension(path);
}
public bool IsPathFile(string path)
{
if (string.IsNullOrWhiteSpace(path))
{
throw new ArgumentNullException("path");
}
//if (path.IndexOf("://", StringComparison.OrdinalIgnoreCase) != -1 &&
// !path.StartsWith("file://", StringComparison.OrdinalIgnoreCase))
//{
// return false;
//}
//return true;
return Path.IsPathRooted(path);
}
}
}

@ -126,5 +126,12 @@ namespace MediaBrowser.Common.IO
/// <param name="path">The path.</param>
/// <returns>System.String.</returns>
string GetFileNameWithoutExtension(string path);
/// <summary>
/// Determines whether [is path file] [the specified path].
/// </summary>
/// <param name="path">The path.</param>
/// <returns><c>true</c> if [is path file] [the specified path]; otherwise, <c>false</c>.</returns>
bool IsPathFile(string path);
}
}

@ -202,12 +202,12 @@ namespace MediaBrowser.Controller.Entities
return LocationType.Offline;
}
if (string.IsNullOrEmpty(Path))
if (string.IsNullOrWhiteSpace(Path))
{
return LocationType.Virtual;
}
return System.IO.Path.IsPathRooted(Path) ? LocationType.FileSystem : LocationType.Remote;
return FileSystem.IsPathFile(Path) ? LocationType.FileSystem : LocationType.Remote;
}
}

@ -57,15 +57,6 @@ namespace MediaBrowser.MediaEncoding.Subtitles
var ms = new MemoryStream();
try
{
// Return the original without any conversions, if possible
if (startTimeTicks == 0 &&
!endTimeTicks.HasValue &&
string.Equals(inputFormat, outputFormat, StringComparison.OrdinalIgnoreCase))
{
await stream.CopyToAsync(ms, 81920, cancellationToken).ConfigureAwait(false);
}
else
{
var trackInfo = await GetTrackInfo(stream, inputFormat, cancellationToken).ConfigureAwait(false);
@ -74,7 +65,6 @@ namespace MediaBrowser.MediaEncoding.Subtitles
var writer = GetWriter(outputFormat);
writer.Write(trackInfo, ms, cancellationToken);
}
ms.Position = 0;
}
catch
@ -239,10 +229,10 @@ namespace MediaBrowser.MediaEncoding.Subtitles
await ConvertTextSubtitleToSrt(subtitleStream.Path, outputPath, subtitleStream.Language, cancellationToken)
.ConfigureAwait(false);
return new Tuple<string, string, bool>(outputPath, "srt", false);
return new Tuple<string, string, bool>(outputPath, "srt", true);
}
return new Tuple<string, string, bool>(subtitleStream.Path, currentFormat, false);
return new Tuple<string, string, bool>(subtitleStream.Path, currentFormat, true);
}
private async Task<SubtitleTrackInfo> GetTrackInfo(Stream stream,

@ -176,7 +176,7 @@ namespace MediaBrowser.Model.Configuration
public PeopleMetadataOptions PeopleMetadataOptions { get; set; }
public bool FindInternetTrailers { get; set; }
public string[] InsecureApps3 { get; set; }
public string[] InsecureApps5 { get; set; }
public bool SaveMetadataHidden { get; set; }
@ -228,14 +228,17 @@ namespace MediaBrowser.Model.Configuration
PeopleMetadataOptions = new PeopleMetadataOptions();
InsecureApps3 = new[]
InsecureApps5 = new[]
{
"Roku",
"Chromecast",
"iOS",
"Windows Phone",
"Windows RT",
"Xbmc"
"Xbmc",
"Unknown app",
"MediaPortal",
"Media Portal"
};
MetadataOptions = new[]

@ -6,5 +6,6 @@ namespace MediaBrowser.Model.Connect
public string Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string NameOrEmail { get; set; }
}
}

@ -338,7 +338,7 @@ namespace MediaBrowser.Server.Implementations.Connect
var connectUser = await GetConnectUser(new ConnectUserQuery
{
Name = connectUsername
NameOrEmail = connectUsername
}, CancellationToken.None).ConfigureAwait(false);
@ -433,7 +433,7 @@ namespace MediaBrowser.Server.Implementations.Connect
{
var connectUser = await GetConnectUser(new ConnectUserQuery
{
Name = connectUsername
NameOrEmail = connectUsername
}, CancellationToken.None).ConfigureAwait(false);
@ -578,6 +578,10 @@ namespace MediaBrowser.Server.Implementations.Connect
{
url = url + "?id=" + WebUtility.UrlEncode(query.Id);
}
else if (!string.IsNullOrWhiteSpace(query.NameOrEmail))
{
url = url + "?nameOrEmail=" + WebUtility.UrlEncode(query.NameOrEmail);
}
else if (!string.IsNullOrWhiteSpace(query.Name))
{
url = url + "?name=" + WebUtility.UrlEncode(query.Name);
@ -963,7 +967,7 @@ namespace MediaBrowser.Server.Implementations.Connect
{
var user = e.Argument;
await TryUploadUserPreferences(user, CancellationToken.None).ConfigureAwait(false);
//await TryUploadUserPreferences(user, CancellationToken.None).ConfigureAwait(false);
}
private async Task TryUploadUserPreferences(User user, CancellationToken cancellationToken)

@ -2,6 +2,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Devices;
using MediaBrowser.Model.Devices;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Session;
using System;
@ -19,6 +20,7 @@ namespace MediaBrowser.Server.Implementations.Devices
private readonly IApplicationPaths _appPaths;
private readonly IJsonSerializer _json;
private ILogger _logger;
private ConcurrentBag<DeviceInfo> _devices;
@ -69,7 +71,8 @@ namespace MediaBrowser.Server.Implementations.Devices
public DeviceInfo GetDevice(string id)
{
return GetDevices().FirstOrDefault(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase));
return GetDevices()
.FirstOrDefault(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase));
}
public IEnumerable<DeviceInfo> GetDevices()
@ -96,7 +99,19 @@ namespace MediaBrowser.Server.Implementations.Devices
return new DirectoryInfo(path)
.EnumerateFiles("*", SearchOption.AllDirectories)
.Where(i => string.Equals(i.Name, "device.json", StringComparison.OrdinalIgnoreCase))
.Select(i => _json.DeserializeFromFile<DeviceInfo>(i.FullName))
.Select(i =>
{
try
{
return _json.DeserializeFromFile<DeviceInfo>(i.FullName);
}
catch (Exception ex)
{
_logger.ErrorException("Error reading {0}", ex, i.FullName);
return null;
}
})
.Where(i => i != null)
.ToList();
}
catch (IOException)

@ -66,7 +66,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security
if (!authAttribtues.AllowLocal || !req.IsLocal)
{
if (!string.IsNullOrWhiteSpace(auth.Token) ||
!_config.Configuration.InsecureApps3.Contains(auth.Client ?? string.Empty, StringComparer.OrdinalIgnoreCase))
!_config.Configuration.InsecureApps5.Contains(auth.Client ?? string.Empty, StringComparer.OrdinalIgnoreCase))
{
var valid = IsValidConnectKey(auth.Token);

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "Wir konnten leider keine Verbindung mit dem ausgew\u00e4hlten Server herstellen. Bitte versuche es noch einmal sp\u00e4ter.",
"ButtonSelectServer": "W\u00e4hle Server",
"MessagePluginConfigurationRequiresLocalAccess": "Melde dich bitte direkt an deinem lokalen Server an, um dieses Plugin konfigurieren zu k\u00f6nnen.",
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later."
"MessageLoggedOutParentalControl": "Der Zugriff ist derzeit eingeschr\u00e4nkt. Bitte versuche es sp\u00e4ter erneut.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -6,25 +6,25 @@
"Administrator": "Administrador",
"Password": "Contrase\u00f1a",
"DeleteImage": "Eliminar imagen",
"DeleteImageConfirmation": "\u00bfEst\u00e1 seguro que desea eliminar esta imagen?",
"DeleteImageConfirmation": "\u00bfEst\u00e1 seguro de querer eliminar esta imagen?",
"FileReadCancelled": "La lectura del archivo ha sido cancelada.",
"FileNotFound": "Archivo no encontrado.",
"FileReadError": "Ha ocurrido un error al leer el archivo.",
"DeleteUser": "Eliminar Usuario",
"DeleteUserConfirmation": "\u00bfEsta seguro que desea eliminar este usuario?",
"DeleteUserConfirmation": "\u00bfEst\u00e1 seguro de querer eliminar este usuario?",
"PasswordResetHeader": "Restablecer Contrase\u00f1a",
"PasswordResetComplete": "La contrase\u00f1a ha sido restablecida.",
"PasswordResetConfirmation": "\u00bfEst\u00e1 seguro que desea restablecer la contrase\u00f1a?",
"PasswordResetConfirmation": "\u00bfEst\u00e1 seguro de querer restablecer la contrase\u00f1a?",
"PasswordSaved": "Contrase\u00f1a guardada.",
"PasswordMatchError": "La Contrase\u00f1a y la confirmaci\u00f3n de la contrase\u00f1a deben coincidir.",
"OptionRelease": "Versi\u00f3n Oficial",
"OptionBeta": "Beta",
"OptionDev": "Desarrollo (Inestable)",
"UninstallPluginHeader": "Desinstalar Complemento",
"UninstallPluginConfirmation": "\u00bfEst\u00e1 seguro que desea desinstalar {0}?",
"UninstallPluginConfirmation": "\u00bfEst\u00e1 seguro de querer desinstalar {0}?",
"NoPluginConfigurationMessage": "El complemento no requiere configuraci\u00f3n",
"NoPluginsInstalledMessage": "No tiene complementos instalados.",
"BrowsePluginCatalogMessage": "Explore el catalogo de complementos para ver los complementos disponibles.",
"BrowsePluginCatalogMessage": "Explorar el catalogo de complementos para ver los complementos disponibles.",
"MessageKeyEmailedTo": "Clave enviada por correo a {0}.",
"MessageKeysLinked": "Llaves Vinculadas",
"HeaderConfirmation": "Confirmaci\u00f3n",
@ -44,7 +44,7 @@
"LabelScheduledTaskLastRan": "Ejecutado hace {0}, tomando {1}.",
"HeaderDeleteTaskTrigger": "Borrar Disparador de Tarea",
"HeaderTaskTriggers": "Disparadores de Tarea",
"MessageDeleteTaskTrigger": "\u00bfEstas seguro de que deseas eliminar este disparador de tarea?",
"MessageDeleteTaskTrigger": "\u00bfEst\u00e1 seguro de querer eliminar este disparador de tarea?",
"MessageNoPluginsInstalled": "No tienes extensiones instaladas.",
"LabelVersionInstalled": "{0} instalado",
"LabelNumberReviews": "{0} Rese\u00f1as",
@ -82,13 +82,13 @@
"RecommendationDirectedBy": "Dirigido por {0}",
"RecommendationStarring": "Protagonizado por {0}",
"HeaderConfirmRecordingCancellation": "Confirmar Cancelaci\u00f3n de la Grabaci\u00f3n",
"MessageConfirmRecordingCancellation": "\u00bfEstas seguro de que deseas cancelar esta grabaci\u00f3n?",
"MessageConfirmRecordingCancellation": "\u00bfEst\u00e1 seguro de querer cancelar esta grabaci\u00f3n?",
"MessageRecordingCancelled": "Grabaci\u00f3n cancelada.",
"HeaderConfirmSeriesCancellation": "Confirmar Cancelaci\u00f3n de Serie",
"MessageConfirmSeriesCancellation": "\u00bfEstas seguro de que deseas cancelar esta serie?",
"MessageConfirmSeriesCancellation": "\u00bfEst\u00e1 seguro de querer cancelar esta serie?",
"MessageSeriesCancelled": "Serie cancelada",
"HeaderConfirmRecordingDeletion": "Confirmar Eliminaci\u00f3n de Grabaci\u00f3n",
"MessageConfirmRecordingDeletion": "\u00bfEstas seguro de que deseas eliminar esta grabaci\u00f3n?",
"MessageConfirmRecordingDeletion": "\u00bfEst\u00e1 seguro de querer eliminar esta grabaci\u00f3n?",
"MessageRecordingDeleted": "Grabaci\u00f3n eliminada.",
"ButonCancelRecording": "Cancelar Grabaci\u00f3n",
"MessageRecordingSaved": "Grabaci\u00f3n guardada.",
@ -100,12 +100,12 @@
"OptionFriday": "Viernes",
"OptionSaturday": "S\u00e1bado",
"HeaderConfirmDeletion": "Confirmar Eliminaci\u00f3n",
"MessageConfirmPathSubstitutionDeletion": "\u00bfEstas seguro de que deseas eliminar esta ruta alternativa?",
"MessageConfirmPathSubstitutionDeletion": "\u00bfEst\u00e1 seguro de querer eliminar esta ruta alternativa?",
"LiveTvUpdateAvailable": "(Actualizaci\u00f3n disponible)",
"LabelVersionUpToDate": "\u00a1Actualizado!",
"ButtonResetTuner": "Resetear sintonizador",
"HeaderResetTuner": "Resetear Sintonizador",
"MessageConfirmResetTuner": "\u00bfEstas seguro de que deseas restablecer las configuraciones de este sintonizador? Cualquier reproducci\u00f3n o grabaci\u00f3n sera interrumpida abruptamente.",
"MessageConfirmResetTuner": "\u00bfEst\u00e1 seguro de querer restablecer las configuraciones de este sintonizador? Cualquier reproducci\u00f3n o grabaci\u00f3n sera interrumpida abruptamente.",
"ButtonCancelSeries": "Cancelar Series",
"HeaderSeriesRecordings": "Grabaciones de Series",
"LabelAnytime": "Cuando sea",
@ -114,12 +114,12 @@
"StatusRecordingProgram": "Grabando {0}",
"StatusWatchingProgram": "Viendo {0}",
"HeaderSplitMedia": "Dividir y Separar Medios",
"MessageConfirmSplitMedia": "\u00bfEstas seguro de que deseas dividir y separar estos medios en elementos individuales?",
"MessageConfirmSplitMedia": "\u00bfEst\u00e1 seguro de querer dividir y separar estos medios en elementos individuales?",
"HeaderError": "Error",
"MessagePleaseSelectOneItem": "Por favor selecciona al menos un elemento.",
"MessagePleaseSelectTwoItems": "Por favor selecciona al menos dos elementos.",
"MessageTheFollowingItemsWillBeGrouped": "Los siguientes t\u00edtulos ser\u00e1n agrupados en un solo elemento.",
"MessageConfirmItemGrouping": "Los clientes de Media Browser elegir\u00e1n autom\u00e1ticamente la versi\u00f3n optima para reproducir basado en el dispositivo y el rendimiento de redo. \u00bfEsta seguro de que desea continuar?",
"MessageConfirmItemGrouping": "Los clientes de Media Browser elegir\u00e1n autom\u00e1ticamente la versi\u00f3n optima para reproducir basado en el dispositivo y el rendimiento de redo. \u00bfEst\u00e1 seguro de querer continuar?",
"HeaderResume": "Continuar",
"HeaderMyViews": "Mis Vistas",
"HeaderLibraryFolders": "Carpetas de Medios",
@ -132,7 +132,7 @@
"HeaderFavoriteGames": "Juegos Preferidos",
"HeaderRatingsDownloads": "Calificaciones \/ Descargas",
"HeaderConfirmProfileDeletion": "Confirmar Eliminaci\u00f3n del Perfil",
"MessageConfirmProfileDeletion": "\u00bfEst\u00e1 seguro que desea eliminar este perfil?",
"MessageConfirmProfileDeletion": "\u00bfEst\u00e1 seguro de querer eliminar este perfil?",
"HeaderSelectServerCachePath": "Seleccionar Trayector\u00eda para Cach\u00e9 del Servidor",
"HeaderSelectTranscodingPath": "Seleccionar Ruta para Transcodificaci\u00f3n Temporal",
"HeaderSelectImagesByNamePath": "Seleccionar Ruta para Im\u00e1genes por Nombre",
@ -158,7 +158,7 @@
"StatusFailed": "Fallido",
"StatusSuccess": "Exitoso",
"MessageFileWillBeDeleted": "El siguiente archivo sera eliminado:",
"MessageSureYouWishToProceed": "\u00bfEstas seguro de que deseas continuar?",
"MessageSureYouWishToProceed": "\u00bfEst\u00e1 seguro de querer continuar?",
"MessageDuplicatesWillBeDeleted": "Adicionalmente se eliminaran los siguientes duplicados:",
"MessageFollowingFileWillBeMovedFrom": "El siguiente archivo sera movido de:",
"MessageDestinationTo": "a:",
@ -167,8 +167,8 @@
"OrganizePatternResult": "Resultado: {0}",
"HeaderRestart": "Reiniciar",
"HeaderShutdown": "Apagar",
"MessageConfirmRestart": "\u00bfEstas seguro de que deseas reiniciar el Servidor de Media Browser?",
"MessageConfirmShutdown": "\u00bfEstas seguro de que deseas apagar el Servidor de Media Browser?",
"MessageConfirmRestart": "\u00bfEst\u00e1 seguro de querer reiniciar el Servidor de Media Browser?",
"MessageConfirmShutdown": "\u00bfEst\u00e1 seguro de querer apagar el Servidor de Media Browser?",
"ButtonUpdateNow": "Actualizar Ahora",
"NewVersionOfSomethingAvailable": "\u00a1Una nueva versi\u00f3n de {0} esta disponible!",
"VersionXIsAvailableForDownload": "La versi\u00f3n {0} ahora esta disponible para descargar.",
@ -185,7 +185,7 @@
"LabelUnknownLanaguage": "Idioma desconocido",
"HeaderCurrentSubtitles": "Subtitulos Actuales",
"MessageDownloadQueued": "La descarga se ha agregado a la cola.",
"MessageAreYouSureDeleteSubtitles": "\u00bfEstas seguro de que deseas eliminar este archivo de subtitulos?",
"MessageAreYouSureDeleteSubtitles": "\u00bfEst\u00e1 seguro de querer eliminar este archivo de subtitulos?",
"ButtonRemoteControl": "Control Remoto",
"HeaderLatestTvRecordings": "Grabaciones Recientes",
"ButtonOk": "Ok",
@ -247,9 +247,9 @@
"ButtonPreviousPage": "P\u00e1gina Anterior",
"ButtonMoveLeft": "Mover a la izquierda",
"ButtonMoveRight": "Mover a la derecha",
"ButtonBrowseOnlineImages": "Navegar por im\u00e1genes en l\u00ednea",
"ButtonBrowseOnlineImages": "Buscar im\u00e1genes en l\u00ednea",
"HeaderDeleteItem": "Eliminar \u00cdtem",
"ConfirmDeleteItem": "\u00bfEsta seguro de querer eleiminar este \u00edtem de su biblioteca?",
"ConfirmDeleteItem": "\u00bfEst\u00e1 seguro de querer eleiminar este \u00edtem de su biblioteca?",
"MessagePleaseEnterNameOrId": "Por favor ingrese un nombre o id externo.",
"MessageValueNotCorrect": "El valor ingresado no es correcto. Intente nuevamente por favor.",
"MessageItemSaved": "\u00cdtem guardado.",
@ -261,7 +261,7 @@
"HeaderFieldsHelp": "Deslice un campo hacia \"apagado\" para bloquearlo y evitar que sus datos sean modificados.",
"HeaderLiveTV": "TV en Vivo",
"MissingLocalTrailer": "Falta avance local.",
"MissingPrimaryImage": "Falta im\u00e1gen primaria.",
"MissingPrimaryImage": "Falta im\u00e1gen principal.",
"MissingBackdropImage": "Falta im\u00e1gen de fondo.",
"MissingLogoImage": "Falta im\u00e1gen de logo.",
"MissingEpisode": "Falta episodio.",
@ -398,14 +398,14 @@
"LabelBirthYear": "A\u00f1o de nacimiento:",
"LabelDeathDate": "Fecha de defunci\u00f3n:",
"HeaderRemoveMediaLocation": "Eliminar Ubicaci\u00f3n de Medios",
"MessageConfirmRemoveMediaLocation": "\u00bfEsta seguro de querer eliminar esta ubicaci\u00f3n?",
"MessageConfirmRemoveMediaLocation": "\u00bfEst\u00e1 seguro de querer eliminar esta ubicaci\u00f3n?",
"HeaderRenameMediaFolder": "Renombrar Carpeta de Medios",
"LabelNewName": "Nuevo nombre:",
"HeaderAddMediaFolder": "Agregar Carpeta de Medios",
"HeaderAddMediaFolderHelp": "Nombre (Pel\u00edculas, M\u00fascia, TV, etc.):",
"HeaderRemoveMediaFolder": "Eliminar Carpteta de Medios",
"MessageTheFollowingLocationWillBeRemovedFromLibrary": "Las siguientes ubicaciones de medios ser\u00e1n eliminadas de su biblioteca:",
"MessageAreYouSureYouWishToRemoveMediaFolder": "\u00bfEsta seguro de querer eliminar esta carpeta de medios?",
"MessageAreYouSureYouWishToRemoveMediaFolder": "\u00bfEst\u00e1 seguro de querer eliminar esta carpeta de medios?",
"ButtonRename": "Renombrar",
"ButtonChangeType": "Cambiar tipo",
"HeaderMediaLocations": "Ubicaciones de Medios",
@ -449,7 +449,7 @@
"ButtonDelete": "Eliminar",
"HeaderMediaBrowserAccountAdded": "Cuanta de Media Browser A\u00f1adida",
"MessageMediaBrowserAccountAdded": "La cuenta de Media Browser has sido a\u00f1adida a este usuario.",
"MessagePendingMediaBrowserAccountAdded": "La cuenta de Media Browser ha sifo a\u00f1adida a este usuario. Se enviar\u00e1 un correo electr\u00f3nico al due\u00f1o de dicha cuenta. La invitaci\u00f3n deber\u00e1 ser confirmada haciendo click en la liga contenida en el correo.",
"MessagePendingMediaBrowserAccountAdded": "La cuenta de Media Browser ha sifo a\u00f1adida a este usuario. Se enviar\u00e1 un correo electr\u00f3nico al due\u00f1o de dicha cuenta. La invitaci\u00f3n deber\u00e1 ser confirmada haciendo clic en la liga contenida en el correo.",
"HeaderMediaBrowserAccountRemoved": "Cuenta de Media Browser Removida",
"MessageMediaBrowserAccontRemoved": "La cuenta de Media Browser ha sido removida de este usuario.",
"TooltipLinkedToMediaBrowserConnect": "Ligado a Media Browser Connect",
@ -575,8 +575,8 @@
"WebClientTourContent": "Vea sus medios recientemente a\u00f1adidos, siguientes ep\u00ecsodios y m\u00e1s. Los c\u00edrculos verdes indican cuantos medios sin reproducir tiene.",
"WebClientTourMovies": "Reproduzca pel\u00edculas, avances y m\u00e1s desde cualquier dispositivo con un navegador web.",
"WebClientTourMouseOver": "Mantgenga el rat\u00f3n sobre cualquier cartel para un acceso r\u00e1pido a informaci\u00f3n importante.",
"WebClientTourTapHold": "Presione y mantenga o haga click derecho en cualquier cartel para mostrar un men\u00fa contextual",
"WebClientTourMetadataManager": "Haga click en editar para abrir el administrador de metadatos",
"WebClientTourTapHold": "Mantenga presionado o haga clic derecho en cualquier cartel para mostrar un men\u00fa contextual",
"WebClientTourMetadataManager": "Haga clic en editar para abrir el administrador de metadatos",
"WebClientTourPlaylists": "Cree f\u00e1cilmente listas de reproducci\u00f3n y mezclas instant\u00e1neas, y reprod\u00fazcalas en cualquier dispositivo",
"WebClientTourCollections": "Cree colecciones de pel\u00edculas para agruparlas en sets de pel\u00edculas",
"WebClientTourUserPreferences1": "Las preferencias de usuario le permiten personalizar la manera en que su biblioteca es presentada en todos sus apps de Media Browser",
@ -599,7 +599,7 @@
"TabDevices": "Dispositivos",
"DeviceLastUsedByUserName": "\u00daltimo usado por {0}",
"HeaderDeleteDevice": "Eliminar Dispositivo",
"DeleteDeviceConfirmation": "\u00bfEsta seguro de querer eliminar este dispositivo? Volver\u00e1 a aparecer la siguiente vez que un usuario inicie sesi\u00f3n en \u00e9l.",
"DeleteDeviceConfirmation": "\u00bfEst\u00e1 seguro de querer eliminar este dispositivo? Volver\u00e1 a aparecer la siguiente vez que un usuario inicie sesi\u00f3n en \u00e9l.",
"LabelEnableCameraUploadFor": "Habilitar subir desde la c\u00e1mara para:",
"HeaderSelectUploadPath": "Seleccionar ruta de subida",
"LabelEnableCameraUploadForHelp": "Las subidas ocurrir\u00e1n autom\u00e1ticamente en segundo plano al iniciar sesi\u00f3n en Media Browser.",
@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "No fue posible conectarse a lo que se ha seleccionado en este momento. Por favor int\u00e9ntelo m\u00e1s tarde.",
"ButtonSelectServer": "Seleccionar servidor",
"MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento por favor inicie sesi\u00f3n en su servidor local directamente.",
"MessageLoggedOutParentalControl": "El acceso esta restringido en este momento. Por favor intenta de nuevo mas tarde."
"MessageLoggedOutParentalControl": "El acceso esta restringido en este momento. Por favor intenta de nuevo mas tarde.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -0,0 +1,620 @@
{
"SettingsSaved": "Asetukset tallennettu.",
"AddUser": "Lis\u00e4\u00e4 K\u00e4ytt\u00e4j\u00e4",
"Users": "K\u00e4ytt\u00e4j\u00e4t",
"Delete": "Poista",
"Administrator": "Administrator",
"Password": "Salasana",
"DeleteImage": "Poista Kuva",
"DeleteImageConfirmation": "Oletko varma ett\u00e4 haluat poistaa t\u00e4m\u00e4n kuvan?",
"FileReadCancelled": "Tiedoston luku on peruutettu.",
"FileNotFound": "Tiedostoa ei l\u00f6ydy.",
"FileReadError": "Virhe tiedoston luvun aikana.",
"DeleteUser": "Poista k\u00e4ytt\u00e4j\u00e4",
"DeleteUserConfirmation": "Oletko varma ett\u00e4 haluat poistaa t\u00e4m\u00e4n k\u00e4ytt\u00e4j\u00e4n?",
"PasswordResetHeader": "Salasanan Palautus",
"PasswordResetComplete": "Salasana on palauttettu.",
"PasswordResetConfirmation": "Oletko varma, ett\u00e4 haluat palauttaa salasanan?",
"PasswordSaved": "Salasana tallennettu.",
"PasswordMatchError": "Salasana ja salasanan vahvistuksen pit\u00e4\u00e4 olla samat.",
"OptionRelease": "Virallinen Julkaisu",
"OptionBeta": "Beta",
"OptionDev": "Kehittely (Ei vakaa)",
"UninstallPluginHeader": "Poista Lis\u00e4osa",
"UninstallPluginConfirmation": "Oletko varma, ett\u00e4 haluat poistaa {0}?",
"NoPluginConfigurationMessage": "T\u00e4ll\u00e4 lis\u00e4osalla ei ole mit\u00e4\u00e4n muokattavaa.",
"NoPluginsInstalledMessage": "Sinulla ei ole mit\u00e4\u00e4n lis\u00e4osia asennettuna.",
"BrowsePluginCatalogMessage": "Selaa meid\u00e4n lis\u00e4osa listaa katsoaksesi saatavilla olevia lis\u00e4osia.",
"MessageKeyEmailedTo": "Key emailed to {0}.",
"MessageKeysLinked": "Keys linked.",
"HeaderConfirmation": "Confirmation",
"MessageKeyUpdated": "Thank you. Your supporter key has been updated.",
"MessageKeyRemoved": "Thank you. Your supporter key has been removed.",
"ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.",
"HeaderSearch": "Search",
"LabelArtist": "Artist",
"LabelMovie": "Movie",
"LabelMusicVideo": "Music Video",
"LabelEpisode": "Episode",
"LabelSeries": "Series",
"LabelStopping": "Stopping",
"LabelCancelled": "(cancelled)",
"LabelFailed": "(failed)",
"LabelAbortedByServerShutdown": "(Aborted by server shutdown)",
"LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.",
"HeaderDeleteTaskTrigger": "Delete Task Trigger",
"HeaderTaskTriggers": "Task Triggers",
"MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?",
"MessageNoPluginsInstalled": "You have no plugins installed.",
"LabelVersionInstalled": "{0} installed",
"LabelNumberReviews": "{0} Reviews",
"LabelFree": "Free",
"HeaderSelectAudio": "Select Audio",
"HeaderSelectSubtitles": "Select Subtitles",
"LabelDefaultStream": "(Default)",
"LabelForcedStream": "(Forced)",
"LabelDefaultForcedStream": "(Default\/Forced)",
"LabelUnknownLanguage": "Unknown language",
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
"ButtonNextTrack": "Next Track",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
"ButtonEdit": "Edit",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
"LabelNoUnreadNotifications": "No unread notifications.",
"ButtonViewNotifications": "View notifications",
"ButtonMarkTheseRead": "Mark these read",
"ButtonClose": "Close",
"LabelAllPlaysSentToPlayer": "All plays will be sent to the selected player.",
"MessageInvalidUser": "Invalid username or password. Please try again.",
"HeaderLoginFailure": "Login Failure",
"HeaderAllRecordings": "All Recordings",
"RecommendationBecauseYouLike": "Because you like {0}",
"RecommendationBecauseYouWatched": "Because you watched {0}",
"RecommendationDirectedBy": "Directed by {0}",
"RecommendationStarring": "Starring {0}",
"HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation",
"MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?",
"MessageRecordingCancelled": "Recording cancelled.",
"HeaderConfirmSeriesCancellation": "Confirm Series Cancellation",
"MessageConfirmSeriesCancellation": "Are you sure you wish to cancel this series?",
"MessageSeriesCancelled": "Series cancelled.",
"HeaderConfirmRecordingDeletion": "Confirm Recording Deletion",
"MessageConfirmRecordingDeletion": "Are you sure you wish to delete this recording?",
"MessageRecordingDeleted": "Recording deleted.",
"ButonCancelRecording": "Cancel Recording",
"MessageRecordingSaved": "Recording saved.",
"OptionSunday": "Sunday",
"OptionMonday": "Monday",
"OptionTuesday": "Tuesday",
"OptionWednesday": "Wednesday",
"OptionThursday": "Thursday",
"OptionFriday": "Friday",
"OptionSaturday": "Saturday",
"HeaderConfirmDeletion": "Confirm Deletion",
"MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?",
"LiveTvUpdateAvailable": "(Update available)",
"LabelVersionUpToDate": "Up to date!",
"ButtonResetTuner": "Reset tuner",
"HeaderResetTuner": "Reset Tuner",
"MessageConfirmResetTuner": "Are you sure you wish to reset this tuner? Any active players or recordings will be abruptly stopped.",
"ButtonCancelSeries": "Cancel Series",
"HeaderSeriesRecordings": "Series Recordings",
"LabelAnytime": "Any time",
"StatusRecording": "Recording",
"StatusWatching": "Watching",
"StatusRecordingProgram": "Recording {0}",
"StatusWatchingProgram": "Watching {0}",
"HeaderSplitMedia": "Split Media Apart",
"MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?",
"HeaderError": "Error",
"MessagePleaseSelectOneItem": "Please select at least one item.",
"MessagePleaseSelectTwoItems": "Please select at least two items.",
"MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:",
"MessageConfirmItemGrouping": "Media Browser clients will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?",
"HeaderResume": "Resume",
"HeaderMyViews": "My Views",
"HeaderLibraryFolders": "Media Folders",
"HeaderLatestMedia": "Latest Media",
"ButtonMoreItems": "More...",
"ButtonMore": "More",
"HeaderFavoriteMovies": "Favorite Movies",
"HeaderFavoriteShows": "Favorite Shows",
"HeaderFavoriteEpisodes": "Favorite Episodes",
"HeaderFavoriteGames": "Favorite Games",
"HeaderRatingsDownloads": "Rating \/ Downloads",
"HeaderConfirmProfileDeletion": "Confirm Profile Deletion",
"MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?",
"HeaderSelectServerCachePath": "Select Server Cache Path",
"HeaderSelectTranscodingPath": "Select Transcoding Temporary Path",
"HeaderSelectImagesByNamePath": "Select Images By Name Path",
"HeaderSelectMetadataPath": "Select Metadata Path",
"HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable.",
"HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.",
"HeaderSelectImagesByNamePathHelp": "Browse or enter the path to your items by name folder. The folder must be writeable.",
"HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.",
"HeaderSelectChannelDownloadPath": "Select Channel Download Path",
"HeaderSelectChannelDownloadPathHelp": "Browse or enter the path to use for storing channel cache files. The folder must be writeable.",
"OptionNewCollection": "New...",
"ButtonAdd": "Add",
"ButtonRemove": "Remove",
"LabelChapterDownloaders": "Chapter downloaders:",
"LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.",
"HeaderFavoriteAlbums": "Favorite Albums",
"HeaderLatestChannelMedia": "Latest Channel Items",
"ButtonOrganizeFile": "Organize File",
"ButtonDeleteFile": "Delete File",
"HeaderOrganizeFile": "Organize File",
"HeaderDeleteFile": "Delete File",
"StatusSkipped": "Skipped",
"StatusFailed": "Failed",
"StatusSuccess": "Success",
"MessageFileWillBeDeleted": "The following file will be deleted:",
"MessageSureYouWishToProceed": "Are you sure you wish to proceed?",
"MessageDuplicatesWillBeDeleted": "In addition the following dupliates will be deleted:",
"MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:",
"MessageDestinationTo": "to:",
"HeaderSelectWatchFolder": "Select Watch Folder",
"HeaderSelectWatchFolderHelp": "Browse or enter the path to your watch folder. The folder must be writeable.",
"OrganizePatternResult": "Result: {0}",
"HeaderRestart": "Restart",
"HeaderShutdown": "Shutdown",
"MessageConfirmRestart": "Are you sure you wish to restart Media Browser Server?",
"MessageConfirmShutdown": "Are you sure you wish to shutdown Media Browser Server?",
"ButtonUpdateNow": "Update Now",
"NewVersionOfSomethingAvailable": "A new version of {0} is available!",
"VersionXIsAvailableForDownload": "Version {0} is now available for download.",
"LabelVersionNumber": "Version {0}",
"LabelPlayMethodTranscoding": "Transcoding",
"LabelPlayMethodDirectStream": "Direct Streaming",
"LabelPlayMethodDirectPlay": "Direct Playing",
"LabelAudioCodec": "Audio: {0}",
"LabelVideoCodec": "Video: {0}",
"LabelRemoteAccessUrl": "Remote access: {0}",
"LabelRunningOnPort": "Running on port {0}.",
"HeaderLatestFromChannel": "Latest from {0}",
"ButtonDownload": "Download",
"LabelUnknownLanaguage": "Unknown language",
"HeaderCurrentSubtitles": "Current Subtitles",
"MessageDownloadQueued": "The download has been queued.",
"MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?",
"ButtonRemoteControl": "Remote Control",
"HeaderLatestTvRecordings": "Latest Recordings",
"ButtonOk": "Ok",
"ButtonCancel": "Lopeta",
"ButtonRefresh": "Refresh",
"LabelCurrentPath": "Current path:",
"HeaderSelectMediaPath": "Select Media Path",
"ButtonNetwork": "Network",
"MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.",
"HeaderMenu": "Menu",
"ButtonOpen": "Open",
"ButtonOpenInNewTab": "Open in new tab",
"ButtonShuffle": "Shuffle",
"ButtonInstantMix": "Instant mix",
"ButtonResume": "Resume",
"HeaderScenes": "Scenes",
"HeaderAudioTracks": "Audio Tracks",
"HeaderSubtitles": "Subtitles",
"HeaderVideoQuality": "Video Quality",
"MessageErrorPlayingVideo": "There was an error playing the video.",
"MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.",
"ButtonHome": "Home",
"ButtonDashboard": "Dashboard",
"ButtonReports": "Reports",
"ButtonMetadataManager": "Metadata Manager",
"HeaderTime": "Time",
"HeaderName": "Name",
"HeaderAlbum": "Album",
"HeaderAlbumArtist": "Album Artist",
"HeaderArtist": "Artist",
"LabelAddedOnDate": "Added {0}",
"ButtonStart": "Start",
"HeaderChannels": "Channels",
"HeaderMediaFolders": "Media Folders",
"HeaderBlockItemsWithNoRating": "Block items with no rating information:",
"OptionBlockOthers": "Others",
"OptionBlockTvShows": "TV Shows",
"OptionBlockTrailers": "Trailers",
"OptionBlockMusic": "Music",
"OptionBlockMovies": "Movies",
"OptionBlockBooks": "Books",
"OptionBlockGames": "Games",
"OptionBlockLiveTvPrograms": "Live TV Programs",
"OptionBlockLiveTvChannels": "Live TV Channels",
"OptionBlockChannelContent": "Internet Channel Content",
"ButtonRevoke": "Revoke",
"MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Media Browser will be abruptly terminated.",
"HeaderConfirmRevokeApiKey": "Revoke Api Key",
"ValueContainer": "Container: {0}",
"ValueAudioCodec": "Audio Codec: {0}",
"ValueVideoCodec": "Video Codec: {0}",
"ValueCodec": "Codec: {0}",
"ValueConditions": "Conditions: {0}",
"LabelAll": "All",
"HeaderDeleteImage": "Delete Image",
"MessageFileNotFound": "File not found.",
"MessageFileReadError": "An error occurred reading this file.",
"ButtonNextPage": "Next Page",
"ButtonPreviousPage": "Previous Page",
"ButtonMoveLeft": "Move left",
"ButtonMoveRight": "Move right",
"ButtonBrowseOnlineImages": "Browse online images",
"HeaderDeleteItem": "Delete Item",
"ConfirmDeleteItem": "Are you sure you wish to delete this item from your library?",
"MessagePleaseEnterNameOrId": "Please enter a name or an external Id.",
"MessageValueNotCorrect": "The value entered is not correct. Please try again.",
"MessageItemSaved": "Item saved.",
"OptionEnded": "Ended",
"OptionContinuing": "Continuing",
"OptionOff": "Off",
"OptionOn": "On",
"HeaderFields": "Fields",
"HeaderFieldsHelp": "Slide a field to 'off' to lock it and prevent it's data from being changed.",
"HeaderLiveTV": "Live TV",
"MissingLocalTrailer": "Missing local trailer.",
"MissingPrimaryImage": "Missing primary image.",
"MissingBackdropImage": "Missing backdrop image.",
"MissingLogoImage": "Missing logo image.",
"MissingEpisode": "Missing episode.",
"OptionScreenshots": "Screenshots",
"OptionBackdrops": "Backdrops",
"OptionImages": "Images",
"OptionKeywords": "Keywords",
"OptionTags": "Tags",
"OptionStudios": "Studios",
"OptionName": "Name",
"OptionOverview": "Overview",
"OptionGenres": "Genres",
"OptionParentalRating": "Parental Rating",
"OptionPeople": "People",
"OptionRuntime": "Runtime",
"OptionProductionLocations": "Production Locations",
"OptionBirthLocation": "Birth Location",
"LabelAllChannels": "All channels",
"LabelLiveProgram": "LIVE",
"LabelNewProgram": "NEW",
"LabelPremiereProgram": "PREMIERE",
"LabelHDProgram": "HD",
"HeaderChangeFolderType": "Change Folder Type",
"HeaderChangeFolderTypeHelp": "To change the folder type, please remove and rebuild the collection with the new type.",
"HeaderAlert": "Alert",
"MessagePleaseRestart": "Please restart to finish updating.",
"ButtonRestart": "Restart",
"MessagePleaseRefreshPage": "Please refresh this page to receive new updates from the server.",
"ButtonHide": "Hide",
"MessageSettingsSaved": "Settings saved.",
"ButtonSignOut": "Sign Out",
"ButtonMyProfile": "My Profile",
"ButtonMyPreferences": "My Preferences",
"MessageBrowserDoesNotSupportWebSockets": "This browser does not support web sockets. For a better experience, try a newer browser such as Chrome, Firefox, IE10+, Safari (iOS) or Opera.",
"LabelInstallingPackage": "Installing {0}",
"LabelPackageInstallCompleted": "{0} installation completed.",
"LabelPackageInstallFailed": "{0} installation failed.",
"LabelPackageInstallCancelled": "{0} installation cancelled.",
"TabServer": "Server",
"TabUsers": "Users",
"TabLibrary": "Library",
"TabMetadata": "Metadata",
"TabDLNA": "DLNA",
"TabLiveTV": "Live TV",
"TabAutoOrganize": "Auto-Organize",
"TabPlugins": "Plugins",
"TabAdvanced": "Advanced",
"TabHelp": "Help",
"TabScheduledTasks": "Scheduled Tasks",
"ButtonFullscreen": "Fullscreen",
"ButtonAudioTracks": "Audio Tracks",
"ButtonSubtitles": "Subtitles",
"ButtonScenes": "Scenes",
"ButtonQuality": "Quality",
"HeaderNotifications": "Notifications",
"HeaderSelectPlayer": "Select Player:",
"ButtonSelect": "Select",
"ButtonNew": "New",
"MessageInternetExplorerWebm": "For best results with Internet Explorer please install the WebM playback plugin.",
"HeaderVideoError": "Video Error",
"ButtonAddToPlaylist": "Add to playlist",
"HeaderAddToPlaylist": "Add to Playlist",
"LabelName": "Name:",
"ButtonSubmit": "Submit",
"LabelSelectPlaylist": "Playlist:",
"OptionNewPlaylist": "New playlist...",
"MessageAddedToPlaylistSuccess": "Ok",
"ButtonView": "View",
"ButtonViewSeriesRecording": "View series recording",
"ValueOriginalAirDate": "Original air date: {0}",
"ButtonRemoveFromPlaylist": "Remove from playlist",
"HeaderSpecials": "Specials",
"HeaderTrailers": "Trailers",
"HeaderAudio": "Audio",
"HeaderResolution": "Resolution",
"HeaderVideo": "Video",
"HeaderRuntime": "Runtime",
"HeaderCommunityRating": "Community rating",
"HeaderParentalRating": "Parental rating",
"HeaderReleaseDate": "Release date",
"HeaderDateAdded": "Date added",
"HeaderSeries": "Series",
"HeaderSeason": "Season",
"HeaderSeasonNumber": "Season number",
"HeaderNetwork": "Network",
"HeaderYear": "Year",
"HeaderGameSystem": "Game system",
"HeaderPlayers": "Players",
"HeaderEmbeddedImage": "Embedded image",
"HeaderTrack": "Track",
"HeaderDisc": "Disc",
"OptionMovies": "Movies",
"OptionCollections": "Collections",
"OptionSeries": "Series",
"OptionSeasons": "Seasons",
"OptionEpisodes": "Episodes",
"OptionGames": "Games",
"OptionGameSystems": "Game systems",
"OptionMusicArtists": "Music artists",
"OptionMusicAlbums": "Music albums",
"OptionMusicVideos": "Music videos",
"OptionSongs": "Songs",
"OptionHomeVideos": "Home videos",
"OptionBooks": "Books",
"OptionAdultVideos": "Adult videos",
"ButtonUp": "Up",
"ButtonDown": "Down",
"LabelMetadataReaders": "Metadata readers:",
"LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.",
"LabelMetadataDownloaders": "Metadata downloaders:",
"LabelMetadataDownloadersHelp": "Enable and rank your preferred metadata downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.",
"LabelMetadataSavers": "Metadata savers:",
"LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.",
"LabelImageFetchers": "Image fetchers:",
"LabelImageFetchersHelp": "Enable and rank your preferred image fetchers in order of priority.",
"ButtonQueueAllFromHere": "Queue all from here",
"ButtonPlayAllFromHere": "Play all from here",
"LabelDynamicExternalId": "{0} Id:",
"HeaderIdentify": "Identify Item",
"PersonTypePerson": "Person",
"LabelTitleDisplayOrder": "Title display order:",
"OptionSortName": "Sort name",
"OptionReleaseDate": "Release date",
"LabelSeasonNumber": "Season number:",
"LabelDiscNumber": "Disc number",
"LabelParentNumber": "Parent number",
"LabelEpisodeNumber": "Episode number:",
"LabelTrackNumber": "Track number:",
"LabelNumber": "Number:",
"LabelReleaseDate": "Release date:",
"LabelEndDate": "End date:",
"LabelYear": "Year:",
"LabelDateOfBirth": "Date of birth:",
"LabelBirthYear": "Birth year:",
"LabelDeathDate": "Death date:",
"HeaderRemoveMediaLocation": "Remove Media Location",
"MessageConfirmRemoveMediaLocation": "Are you sure you wish to remove this location?",
"HeaderRenameMediaFolder": "Rename Media Folder",
"LabelNewName": "New name:",
"HeaderAddMediaFolder": "Add Media Folder",
"HeaderAddMediaFolderHelp": "Name (Movies, Music, TV, etc):",
"HeaderRemoveMediaFolder": "Remove Media Folder",
"MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:",
"MessageAreYouSureYouWishToRemoveMediaFolder": "Are you sure you wish to remove this media folder?",
"ButtonRename": "Rename",
"ButtonChangeType": "Change type",
"HeaderMediaLocations": "Media Locations",
"LabelFolderTypeValue": "Folder type: {0}",
"LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.",
"FolderTypeMixed": "Mixed movies & tv",
"FolderTypeMovies": "Movies",
"FolderTypeMusic": "Music",
"FolderTypeAdultVideos": "Adult videos",
"FolderTypePhotos": "Photos",
"FolderTypeMusicVideos": "Music videos",
"FolderTypeHomeVideos": "Home videos",
"FolderTypeGames": "Games",
"FolderTypeBooks": "Books",
"FolderTypeTvShows": "TV shows",
"TabMovies": "Movies",
"TabSeries": "Series",
"TabEpisodes": "Episodes",
"TabTrailers": "Trailers",
"TabGames": "Games",
"TabAlbums": "Albums",
"TabSongs": "Songs",
"TabMusicVideos": "Music Videos",
"BirthPlaceValue": "Birth place: {0}",
"DeathDateValue": "Died: {0}",
"BirthDateValue": "Born: {0}",
"HeaderLatestReviews": "Latest Reviews",
"HeaderPluginInstallation": "Plugin Installation",
"MessageAlreadyInstalled": "This version is already installed.",
"ValueReviewCount": "{0} Reviews",
"MessageYouHaveVersionInstalled": "You currently have version {0} installed.",
"MessageTrialExpired": "The trial period for this feature has expired",
"MessageTrialWillExpireIn": "The trial period for this feature will expire in {0} day(s)",
"MessageInstallPluginFromApp": "This plugin must be installed from with in the app you intend to use it in.",
"ValuePriceUSD": "Price: {0} (USD)",
"MessageFeatureIncludedWithSupporter": "You are registered for this feature, and will be able to continue using it with an active supporter membership.",
"MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Media Browser.",
"MessageSupporterMembershipExpiredOn": "Your supporter membership expired on {0}.",
"MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Media Browser.",
"MessageYouHaveAnActiveRecurringMembership": "You have an active {0} membership. You can upgrade your plan using the options below.",
"ButtonDelete": "Delete",
"HeaderMediaBrowserAccountAdded": "Media Browser Account Added",
"MessageMediaBrowserAccountAdded": "The Media Browser account has been added to this user.",
"MessagePendingMediaBrowserAccountAdded": "The Media Browser account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.",
"HeaderMediaBrowserAccountRemoved": "Media Browser Account Removed",
"MessageMediaBrowserAccontRemoved": "The Media Browser account has been removed from this user.",
"TooltipLinkedToMediaBrowserConnect": "Linked to Media Browser Connect",
"HeaderUnrated": "Unrated",
"ValueDiscNumber": "Disc {0}",
"HeaderUnknownDate": "Unknown Date",
"HeaderUnknownYear": "Unknown Year",
"ValueMinutes": "{0} min",
"ButtonPlayExternalPlayer": "Play with external player",
"HeaderSelectExternalPlayer": "Select External Player",
"HeaderExternalPlayerPlayback": "External Player Playback",
"ButtonImDone": "I'm Done",
"OptionWatched": "Watched",
"OptionUnwatched": "Unwatched",
"ExternalPlayerPlaystateOptionsHelp": "Specify how you would like to resume playing this video next time.",
"LabelMarkAs": "Mark as:",
"OptionInProgress": "In-Progress",
"LabelResumePoint": "Resume point:",
"ValueOneMovie": "1 movie",
"ValueMovieCount": "{0} movies",
"ValueOneTrailer": "1 trailer",
"ValueTrailerCount": "{0} trailers",
"ValueOneSeries": "1 series",
"ValueSeriesCount": "{0} series",
"ValueOneEpisode": "1 episode",
"ValueEpisodeCount": "{0} episodes",
"ValueOneGame": "1 game",
"ValueGameCount": "{0} games",
"ValueOneAlbum": "1 album",
"ValueAlbumCount": "{0} albums",
"ValueOneSong": "1 song",
"ValueSongCount": "{0} songs",
"ValueOneMusicVideo": "1 music video",
"ValueMusicVideoCount": "{0} music videos",
"HeaderOffline": "Offline",
"HeaderUnaired": "Unaired",
"HeaderMissing": "Missing",
"ButtonWebsite": "Website",
"TooltipFavorite": "Favorite",
"TooltipLike": "Like",
"TooltipDislike": "Dislike",
"TooltipPlayed": "Played",
"ValueSeriesYearToPresent": "{0}-Present",
"ValueAwards": "Awards: {0}",
"ValueBudget": "Budget: {0}",
"ValueRevenue": "Revenue: {0}",
"ValuePremiered": "Premiered {0}",
"ValuePremieres": "Premieres {0}",
"ValueStudio": "Studio: {0}",
"ValueStudios": "Studios: {0}",
"ValueSpecialEpisodeName": "Special - {0}",
"LabelLimit": "Limit:",
"ValueLinks": "Links: {0}",
"HeaderPeople": "People",
"HeaderCastAndCrew": "Cast & Crew",
"ValueArtist": "Artist: {0}",
"ValueArtists": "Artists: {0}",
"HeaderTags": "Tags",
"MediaInfoCameraMake": "Camera make",
"MediaInfoCameraModel": "Camera model",
"MediaInfoAltitude": "Altitude",
"MediaInfoAperture": "Aperture",
"MediaInfoExposureTime": "Exposure time",
"MediaInfoFocalLength": "Focal length",
"MediaInfoOrientation": "Orientation",
"MediaInfoIsoSpeedRating": "Iso speed rating",
"MediaInfoLatitude": "Latitude",
"MediaInfoLongitude": "Longitude",
"MediaInfoShutterSpeed": "Shutter speed",
"MediaInfoSoftware": "Software",
"HeaderIfYouLikeCheckTheseOut": "If you like {0}, check these out...",
"HeaderPlotKeywords": "Plot Keywords",
"HeaderMovies": "Movies",
"HeaderAlbums": "Albums",
"HeaderGames": "Games",
"HeaderBooks": "Books",
"HeaderEpisodes": "Episodes",
"HeaderSeasons": "Seasons",
"HeaderTracks": "Tracks",
"HeaderItems": "Items",
"HeaderOtherItems": "Other Items",
"ButtonFullReview": "Full review",
"ValueAsRole": "as {0}",
"ValueGuestStar": "Guest star",
"MediaInfoSize": "Size",
"MediaInfoPath": "Path",
"MediaInfoFormat": "Format",
"MediaInfoContainer": "Container",
"MediaInfoDefault": "Default",
"MediaInfoForced": "Forced",
"MediaInfoExternal": "External",
"MediaInfoTimestamp": "Timestamp",
"MediaInfoPixelFormat": "Pixel format",
"MediaInfoBitDepth": "Bit depth",
"MediaInfoSampleRate": "Sample rate",
"MediaInfoBitrate": "Bitrate",
"MediaInfoChannels": "Channels",
"MediaInfoLayout": "Layout",
"MediaInfoLanguage": "Language",
"MediaInfoCodec": "Codec",
"MediaInfoProfile": "Profile",
"MediaInfoLevel": "Level",
"MediaInfoAspectRatio": "Aspect ratio",
"MediaInfoResolution": "Resolution",
"MediaInfoAnamorphic": "Anamorphic",
"MediaInfoInterlaced": "Interlaced",
"MediaInfoFramerate": "Framerate",
"MediaInfoStreamTypeAudio": "Audio",
"MediaInfoStreamTypeData": "Data",
"MediaInfoStreamTypeVideo": "Video",
"MediaInfoStreamTypeSubtitle": "Subtitle",
"MediaInfoStreamTypeEmbeddedImage": "Embedded Image",
"MediaInfoRefFrames": "Ref frames",
"TabPlayback": "Playback",
"HeaderSelectCustomIntrosPath": "Select Custom Intros Path",
"HeaderRateAndReview": "Rate and Review",
"HeaderThankYou": "Thank You",
"MessageThankYouForYourReview": "Thank you for your review.",
"LabelYourRating": "Your rating:",
"LabelFullReview": "Full review:",
"LabelShortRatingDescription": "Short rating summary:",
"OptionIRecommendThisItem": "I recommend this item",
"WebClientTourContent": "View your recently added media, next episodes, and more. The green circles indicate how many unplayed items you have.",
"WebClientTourMovies": "Play movies, trailers and more from any device with a web browser",
"WebClientTourMouseOver": "Hold the mouse over any poster for quick access to important information",
"WebClientTourTapHold": "Tap and hold or right click any poster for a context menu",
"WebClientTourMetadataManager": "Click edit to open the metadata manager",
"WebClientTourPlaylists": "Easily create playlists and instant mixes, and play them on any device",
"WebClientTourCollections": "Create movie collections to group box sets together",
"WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Media Browser apps",
"WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Media Browser app",
"WebClientTourUserPreferences3": "Design the web client home page to your liking",
"WebClientTourUserPreferences4": "Configure backdrops, theme songs and external players",
"WebClientTourMobile1": "The web client works great on smartphones and tablets...",
"WebClientTourMobile2": "and easily controls other devices and Media Browser apps",
"MessageEnjoyYourStay": "Enjoy your stay",
"DashboardTourDashboard": "The server dashboard allows you to monitor your server and your users. You'll always know who is doing what and where they are.",
"DashboardTourUsers": "Easily create user accounts for your friends and family, each with their own permissions, library access, parental controls and more.",
"DashboardTourCinemaMode": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.",
"DashboardTourChapters": "Enable chapter image generation for your videos for a more pleasing presentation while viewing.",
"DashboardTourSubtitles": "Automatically download subtitles for your videos in any language.",
"DashboardTourPlugins": "Install plugins such as internet video channels, live tv, metadata scanners, and more.",
"DashboardTourNotifications": "Automatically send notifications of server events to your mobile device, email and more.",
"DashboardTourScheduledTasks": "Easily manage long running operations with scheduled tasks. Decide when they run, and how often.",
"DashboardTourMobile": "The Media Browser dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.",
"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.",
"ButtonLibraryAccess": "Library access",
"ButtonParentalControl": "Parental control",
"HeaderInvitationSent": "Invitation Sent",
"MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.",
"MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.",
"HeaderConnectionFailure": "Connection Failure",
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "Nous sommes incapable de se connecter \u00e0 la s\u00e9lection pour le moment. S.V.P. r\u00e9essayer plus tard.",
"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"
"MessageLoggedOutParentalControl": "L'acc\u00e8s est actuellement limit\u00e9. S.v.p. r\u00e9essayez plus tard",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later.",
"ButtonSelectServer": "Selezionare il server",
"MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.",
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -621,5 +621,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"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.",
"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."
"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.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -595,8 +595,8 @@
"DashboardTourNotifications": "Automatically send notifications of server events to your mobile device, email and more.",
"DashboardTourScheduledTasks": "Easily manage long running operations with scheduled tasks. Decide when they run, and how often.",
"DashboardTourMobile": "The Media Browser dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.",
"MessageRefreshQueued": "Refresh queued",
"TabDevices": "Devices",
"MessageRefreshQueued": "Oppfrisk k\u00f8en",
"TabDevices": "Enheter",
"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.",
@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "Er kan momenteel niet met de geselecteerde verbonden worden, probeer het svp. later nog eens.",
"ButtonSelectServer": "Selecteer server",
"MessagePluginConfigurationRequiresLocalAccess": "Meld svp. op de lokale server aan om deze plugin te configureren.",
"MessageLoggedOutParentalControl": "Toegang is momenteel bepertk, probeer later opnieuw."
"MessageLoggedOutParentalControl": "Toegang is momenteel bepertk, probeer later opnieuw.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -2,11 +2,11 @@
"SettingsSaved": "Ajustes salvos.",
"AddUser": "Adicionar Usu\u00e1rio",
"Users": "Usu\u00e1rios",
"Delete": "Apagar",
"Delete": "Excluir",
"Administrator": "Administrador",
"Password": "Senha",
"DeleteImage": "Apagar Imagem",
"DeleteImageConfirmation": "Deseja realmente apagar esta imagem?",
"DeleteImage": "Excluir Imagem",
"DeleteImageConfirmation": "Deseja realmente excluir esta imagem?",
"FileReadCancelled": "A leitura do arquivo foi cancelada.",
"FileNotFound": "Arquivo n\u00e3o encontrado.",
"FileReadError": "Ocorreu um erro ao ler o arquivo.",
@ -240,7 +240,7 @@
"ValueCodec": "Codec: {0}",
"ValueConditions": "Condi\u00e7\u00f5es: {0}",
"LabelAll": "Todos",
"HeaderDeleteImage": "Apagar Imagem",
"HeaderDeleteImage": "Excluir Imagem",
"MessageFileNotFound": "Arquivo n\u00e3o encontrado.",
"MessageFileReadError": "Ocorreu um erro ao ler este arquivo.",
"ButtonNextPage": "Pr\u00f3xima P\u00e1gina",
@ -248,8 +248,8 @@
"ButtonMoveLeft": "Mover \u00e0 esquerda",
"ButtonMoveRight": "Mover \u00e0 direita",
"ButtonBrowseOnlineImages": "Procurar imagens online",
"HeaderDeleteItem": "Apagar item",
"ConfirmDeleteItem": "Deseja realmente apagar este item de sua biblioteca?",
"HeaderDeleteItem": "Excluir item",
"ConfirmDeleteItem": "Deseja realmente excluir este item de sua biblioteca?",
"MessagePleaseEnterNameOrId": "Por favor, digite um nome ou Id externo.",
"MessageValueNotCorrect": "O valor digitado n\u00e3o est\u00e1 correto. Por favor, tente novamente.",
"MessageItemSaved": "Item salvo.",
@ -261,7 +261,7 @@
"HeaderFieldsHelp": "Deslize um campo para 'off' para bloquear e evitar que seus dados sejam alterados.",
"HeaderLiveTV": "TV ao Vivo",
"MissingLocalTrailer": "Faltando trailer local.",
"MissingPrimaryImage": "Faltando imagem prim\u00e1ria.",
"MissingPrimaryImage": "Faltando imagem da capa.",
"MissingBackdropImage": "Faltando imagem de fundo.",
"MissingLogoImage": "Faltando imagem do logo.",
"MissingEpisode": "Faltando epis\u00f3dio.",
@ -446,7 +446,7 @@
"MessageSupporterMembershipExpiredOn": "Sua ades\u00e3o de colaborador expirou em {0}.",
"MessageYouHaveALifetimeMembership": "Voc\u00ea tem uma ades\u00e3o de colaborador vital\u00edcia. Voc\u00ea pode fazer doa\u00e7\u00f5es adicionais em uma \u00fanica vez ou recorrentes usando as op\u00e7\u00f5es abaixo. Obrigado por colaborar com o Media Browser.",
"MessageYouHaveAnActiveRecurringMembership": "Voc\u00ea tem uma ades\u00e3o {0} ativa. Voc\u00ea pode atualizar seu plano usando as op\u00e7\u00f5es abaixo.",
"ButtonDelete": "Apagar",
"ButtonDelete": "Excluir",
"HeaderMediaBrowserAccountAdded": "Conta do Media Browser Adicionada",
"MessageMediaBrowserAccountAdded": "A conta do Media Browser foi adicionada para este usu\u00e1rio.",
"MessagePendingMediaBrowserAccountAdded": "A conta do Media Browser foi adicionada para este usu\u00e1rio. Um email ser\u00e1 enviado para o dono da conta. O convite precisa ser confirmado, clicando no link dentro do email.",
@ -489,8 +489,8 @@
"HeaderMissing": "Ausente",
"ButtonWebsite": "Website",
"TooltipFavorite": "Favorito",
"TooltipLike": "Curtir",
"TooltipDislike": "N\u00e3o curtir",
"TooltipLike": "Curti",
"TooltipDislike": "N\u00e3o curti",
"TooltipPlayed": "Reproduzido",
"ValueSeriesYearToPresent": "{0}-Presente",
"ValueAwards": "Pr\u00eamios: {0}",
@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "N\u00e3o foi poss\u00edvel conectar ao 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."
"MessageLoggedOutParentalControl": "O acesso est\u00e1 atualmente restrito. Por favor, tente mais tarde.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -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 \u0440\u0438\u0441\u0443\u043d\u043e\u043a",
"DeleteImage": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"DeleteImageConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \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.",
@ -613,5 +613,8 @@
"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.",
"ButtonSelectServer": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440",
"MessagePluginConfigurationRequiresLocalAccess": "\u0427\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u0432 \u0441\u0432\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e.",
"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."
"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.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -613,5 +613,8 @@
"MessageUnableToConnectToServer": "We're unable to connect to the selected 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."
"MessageLoggedOutParentalControl": "Access is currently restricted. Please try again later.",
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject"
}

@ -368,6 +368,7 @@ namespace MediaBrowser.Server.Implementations.Localization
new LocalizatonOption{ Name="Czech", Value="cs"},
new LocalizatonOption{ Name="Danish", Value="da"},
new LocalizatonOption{ Name="Dutch", Value="nl"},
new LocalizatonOption{ Name="Finnish", Value="fi"},
new LocalizatonOption{ Name="French", Value="fr"},
new LocalizatonOption{ Name="German", Value="de"},
new LocalizatonOption{ Name="Greek", Value="el"},

@ -1260,7 +1260,7 @@
"OptionDisableUserPreferences": "Disable access to user preferences",
"OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.",
"HeaderSelectServer": "Select Server",
"MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email.",
"MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to accept it below or by clicking the link in the email.",
"TitleNewUser": "New User",
"ButtonConfigurePassword": "Configure Password",
"HeaderDashboardUserPassword": "User passwords are managed within each user's personal profile settings.",
@ -1269,5 +1269,6 @@
"HeaderLatestItems": "Latest Items",
"LabelSelectLastestItemsFolders": "Include media from the following sections in Latest Items",
"HeaderShareMediaFolders": "Share Media Folders",
"MessageGuestSharingPermissionsHelp": "Most features are initially unavailable to guests but can be enabled as needed."
"MessageGuestSharingPermissionsHelp": "Most features are initially unavailable to guests but can be enabled as needed.",
"HeaderInvitations": "Invitations"
}

@ -407,6 +407,8 @@
<EmbeddedResource Include="Localization\Server\hr.json" />
<EmbeddedResource Include="Localization\JavaScript\zh_CN.json" />
<EmbeddedResource Include="Localization\Server\zh_CN.json" />
<EmbeddedResource Include="Localization\JavaScript\fi.json" />
<EmbeddedResource Include="Localization\Server\fi.json" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>

@ -87,6 +87,9 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="dashboard-ui\css\images\server.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\scripts\selectserver.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

@ -17,6 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Globalization;
using System.Text;
using System.Collections.Generic;
using System.IO;
@ -229,6 +230,8 @@ namespace XmlRpcHandler
XMLwrt.WriteEndElement();//array
XMLwrt.WriteEndElement();//value
}
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
private static IXmlRpcValue ReadValue(XmlReader xmlReader)
{
while (xmlReader.Read())
@ -242,7 +245,7 @@ namespace XmlRpcHandler
}
else if (xmlReader.Name == "int" && xmlReader.IsStartElement())
{
return new XmlRpcValueBasic(int.Parse(xmlReader.ReadString()), XmlRpcBasicValueType.Int);
return new XmlRpcValueBasic(int.Parse(xmlReader.ReadString(), UsCulture), XmlRpcBasicValueType.Int);
}
else if (xmlReader.Name == "boolean" && xmlReader.IsStartElement())
{
@ -250,17 +253,17 @@ namespace XmlRpcHandler
}
else if (xmlReader.Name == "double" && xmlReader.IsStartElement())
{
return new XmlRpcValueBasic(double.Parse(xmlReader.ReadString()), XmlRpcBasicValueType.Double);
return new XmlRpcValueBasic(double.Parse(xmlReader.ReadString(), UsCulture), XmlRpcBasicValueType.Double);
}
else if (xmlReader.Name == "dateTime.iso8601" && xmlReader.IsStartElement())
{
string date = xmlReader.ReadString();
int year = int.Parse(date.Substring(0, 4));
int month = int.Parse(date.Substring(4, 2));
int day = int.Parse(date.Substring(6, 2));
int hour = int.Parse(date.Substring(9, 2));
int minute = int.Parse(date.Substring(12, 2));//19980717T14:08:55
int sec = int.Parse(date.Substring(15, 2));
int year = int.Parse(date.Substring(0, 4), UsCulture);
int month = int.Parse(date.Substring(4, 2), UsCulture);
int day = int.Parse(date.Substring(6, 2), UsCulture);
int hour = int.Parse(date.Substring(9, 2), UsCulture);
int minute = int.Parse(date.Substring(12, 2), UsCulture);//19980717T14:08:55
int sec = int.Parse(date.Substring(15, 2), UsCulture);
DateTime time = new DateTime(year, month, day, hour, minute, sec);
return new XmlRpcValueBasic(time, XmlRpcBasicValueType.dateTime_iso8601);
}

Loading…
Cancel
Save