add server management to web client

This commit is contained in:
Luke Pulverenti 2014-11-04 07:41:12 -05:00
parent 7ca1cd8795
commit 60d3f47503
72 changed files with 20510 additions and 18390 deletions

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -58,23 +58,13 @@ namespace MediaBrowser.MediaEncoding.Subtitles
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);
var trackInfo = await GetTrackInfo(stream, inputFormat, cancellationToken).ConfigureAwait(false);
FilterEvents(trackInfo, startTimeTicks, endTimeTicks, false);
FilterEvents(trackInfo, startTimeTicks, endTimeTicks, false);
var writer = GetWriter(outputFormat);
var writer = GetWriter(outputFormat);
writer.Write(trackInfo, ms, cancellationToken);
}
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,

View File

@ -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[]

View File

@ -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; }
}
}

View File

@ -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)

View File

@ -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)

View File

@ -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);

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"},

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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>

View File

@ -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>

View File

@ -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);
}