update translations

pull/702/head
Luke Pulverenti 10 years ago
parent e08963790d
commit 5c84cadb5e

@ -1,5 +1,4 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
@ -13,12 +12,12 @@ using MediaBrowser.Dlna.ContentDirectory;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Xml;
using MediaBrowser.Model.Net;
namespace MediaBrowser.Dlna.Didl
{
@ -801,7 +800,10 @@ namespace MediaBrowser.Dlna.Didl
if (string.Equals(item.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase)
|| string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
{
return;
if (!stubType.HasValue)
{
return;
}
}
}

@ -357,6 +357,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
}
};
_logger.Debug("{0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments);
await resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false);
process.Start();

@ -563,7 +563,7 @@ namespace MediaBrowser.Model.Dlna
return new SubtitleProfile
{
Method = SubtitleDeliveryMethod.Embed,
Method = SubtitleDeliveryMethod.Encode,
Format = subtitleStream.Codec
};
}

@ -62,12 +62,6 @@ namespace MediaBrowser.Model.System
/// <value>The completed installations.</value>
public List<InstallationInfo> CompletedInstallations { get; set; }
/// <summary>
/// Gets or sets a value indicating whether [supports native web socket].
/// </summary>
/// <value><c>true</c> if [supports native web socket]; otherwise, <c>false</c>.</value>
public bool SupportsNativeWebSocket { get; set; }
/// <summary>
/// Gets or sets a value indicating whether this instance can self restart.
/// </summary>

@ -341,7 +341,7 @@
"HeaderVideoError": "Erreur vid\u00e9o",
"ButtonAddToPlaylist": "Ajouter \u00e0 la liste de lecture",
"HeaderAddToPlaylist": "Ajouter \u00e0 la liste de lecture",
"LabelName": "Nom :",
"LabelName": "Nom",
"ButtonSubmit": "Soumettre",
"LabelSelectPlaylist": "Liste de lecture :",
"OptionNewPlaylist": "Nouvelle liste de lecture...",
@ -408,9 +408,9 @@
"LabelEpisodeNumber": "Num\u00e9ro de l'\u00e9pisode:",
"LabelTrackNumber": "Num\u00e9ro de piste:",
"LabelNumber": "Num\u00e9ro:",
"LabelReleaseDate": "Date de sortie :",
"LabelReleaseDate": "Date de sortie",
"LabelEndDate": "Date de fin:",
"LabelYear": "Ann\u00e9e :",
"LabelYear": "Ann\u00e9e",
"LabelDateOfBirth": "Date de naissance :",
"LabelBirthYear": "Ann\u00e9e de naissance :",
"LabelBirthDate": "Date de naissance :",
@ -570,7 +570,7 @@
"MediaInfoCodec": "Codec",
"MediaInfoProfile": "Profil",
"MediaInfoLevel": "Niveau",
"MediaInfoAspectRatio": "Ratio d'aspect original:",
"MediaInfoAspectRatio": "Ratio d'aspect original",
"MediaInfoResolution": "R\u00e9solution",
"MediaInfoAnamorphic": "Anamorphique",
"MediaInfoInterlaced": "Entrelac\u00e9",
@ -603,16 +603,16 @@
"WebClientTourUserPreferences4": "Configurer les images de fonds, les th\u00e8mes musicaux et les lecteurs externes",
"WebClientTourMobile1": "Le client web fonctionne parfaitement sur les smartphones et les tablettes...",
"WebClientTourMobile2": "et contr\u00f4le facilement les autres appareils et applications Media Browser",
"MessageEnjoyYourStay": "Profitez en bien",
"MessageEnjoyYourStay": "Amusez-vous bien !",
"DashboardTourDashboard": "Le tableau de bord du serveur vous permet de g\u00e9rer votre serveur et vos utilisateurs. Vous saurez toujours qui fait quoi et o\u00f9.",
"DashboardTourHelp": "L'aide contextuelle de l'application permet d'ouvrir les pages du wiki relatives au contenu affich\u00e9.",
"DashboardTourUsers": "Cr\u00e9ez facilement des comptes utilisateurs pour vos amis et votre famille, chacun avec ses propres droits, biblioth\u00e8ques accessibles, contr\u00f4le parental et plus encore.",
"DashboardTourCinemaMode": "Le mode cin\u00e9ma apporte l'exp\u00e9rience du cin\u00e9ma directement dans votre salon gr\u00e2ce \u00e0 la possibilit\u00e9 de lire les bandes-annonces et les introductions personnalis\u00e9es avant le programme principal.",
"DashboardTourChapters": "Autoriser la g\u00e9n\u00e9ration des images de chapitres de vos vid\u00e9os pour une pr\u00e9sentation plus agr\u00e9able pendant la navigation.",
"DashboardTourSubtitles": "T\u00e9l\u00e9charger automatiquement les sous-titres pour vos vid\u00e9os dans n'importe quelle langue.",
"DashboardTourPlugins": "Installer les plugin comme les chaines vid\u00e9os internet, live TV, analyseur de m\u00e9tadonn\u00e9es, et plus encore.",
"DashboardTourNotifications": "Envoyer automatiquement les notifications des \u00e9v\u00e8nements du serveur \u00e0 vos appareils mobiles, email et plus encore.",
"DashboardTourScheduledTasks": "G\u00e9rer facilement les op\u00e9rations longues des taches planifi\u00e9es. Sp\u00e9cifier quand et combien de fois elles doivent se lancer.",
"DashboardTourChapters": "Autorisez la g\u00e9n\u00e9ration des images de chapitres de vos vid\u00e9os pour une pr\u00e9sentation plus agr\u00e9able pendant la navigation.",
"DashboardTourSubtitles": "T\u00e9l\u00e9chargez automatiquement les sous-titres de vos vid\u00e9os dans n'importe quelle langue.",
"DashboardTourPlugins": "Installez des plugins : cha\u00eenes vid\u00e9os internet, TV en direct, analyseur de m\u00e9tadonn\u00e9es, et plus encore.",
"DashboardTourNotifications": "Envoyez automatiquement les notifications d'\u00e9v\u00e9nements du serveur vers vos appareils mobiles, vos adresses email et plus encore.",
"DashboardTourScheduledTasks": "G\u00e9rez facilement les op\u00e9rations longues des taches planifi\u00e9es. Sp\u00e9cifiez quand et \u00e0 quelle fr\u00e9quence elles doivent se lancer.",
"DashboardTourMobile": "Le tableau de bord de Media Browser fonctionne parfaitement sur les smartphones et les tablettes. G\u00e9rer votre serveur du bout des doigts, n'importe quand, n'importe o\u00f9.",
"MessageRefreshQueued": "Demande d'actualisation en file d'attente",
"TabDevices": "Appareils",

@ -28,8 +28,8 @@
"MessageKeyEmailedTo": "\u041a\u0456\u043b\u0442 {0} \u04af\u0448\u0456\u043d \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0434\u044b \u043f\u043e\u0448\u0442\u0430\u043c\u0435\u043d \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456.",
"MessageKeysLinked": "\u041a\u0456\u043b\u0442\u0442\u0435\u0440 \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u0434\u044b.",
"HeaderConfirmation": "\u0420\u0430\u0441\u0442\u0430\u0443",
"MessageKeyUpdated": "\u049a\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456\u04a3\u0456\u0437 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b.",
"MessageKeyRemoved": "\u049a\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456\u04a3\u0456\u0437 \u0430\u043b\u0430\u0441\u0442\u0430\u043b\u0434\u044b.",
"MessageKeyUpdated": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456\u04a3\u0456\u0437 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b.",
"MessageKeyRemoved": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456\u04a3\u0456\u0437 \u0430\u043b\u0430\u0441\u0442\u0430\u043b\u0434\u044b.",
"ErrorLaunchingChromecast": "Chromecast \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. \u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u04a3\u044b\u0437 \u0441\u044b\u043c\u0441\u044b\u0437 \u0436\u0435\u043b\u0456\u0433\u0435 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u044b\u043d\u0430 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.",
"HeaderSearch": "\u0406\u0437\u0434\u0435\u0443",
"LabelArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b",
@ -43,7 +43,7 @@
"ButtonHelp": "\u0410\u043d\u044b\u049b\u0442\u0430\u043c\u0430",
"ButtonSave": "\u0421\u0430\u049b\u0442\u0430\u0443",
"HeaderDevices": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440",
"HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to premium plugins, internet channel content, and more. {0}Learn more{1}.",
"HeaderSupporterBenefit": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u043a \u0441\u044b\u0439\u0430\u049b\u044b\u043b\u044b \u043f\u043b\u0430\u0433\u0438\u043d, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0430\u0440\u043d\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d\u044b \u0436\u04d9\u043d\u0435 \u0441\u043e\u043d\u0434\u0430\u0439 \u0441\u0438\u044f\u049b\u0442\u044b\u043b\u0430\u0440\u0493\u0430 \u049b\u043e\u043b \u0436\u0435\u0442\u043a\u0456\u0437\u0443\u043c\u0435\u043d \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u0430\u0440\u0442\u044b\u049b\u0448\u044b\u043b\u044b\u049b\u0442\u0430\u0440 \u0431\u0435\u0440\u0435\u0434\u0456. {0}\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u0431\u0456\u043b\u0443{1}.",
"HeaderWelcomeToMediaBrowserServerDashboard": "Media Browser \u0431\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b\u043d\u0430 \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!",
"HeaderWelcomeToMediaBrowserWebClient": "Media Browser \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0456\u043d\u0435 \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!",
"ButtonTakeTheTour": "\u0410\u0440\u0430\u043b\u0430\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437",
@ -459,10 +459,10 @@
"MessageTrialWillExpireIn": "\u041e\u0441\u044b \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a \u04af\u0448\u0456\u043d \u0442\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u0443 \u043a\u0435\u0437\u0435\u04a3\u0456\u043d\u0456\u04a3 \u043c\u0435\u0440\u0437\u0456\u043c\u0456 {0} \u043a\u04af\u043d\u0434\u0435 \u0431\u0456\u0442\u0435\u0434\u0456",
"MessageInstallPluginFromApp": "\u0411\u04b1\u043b \u043f\u043b\u0430\u0433\u0438\u043d \u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0493\u0430 \u0442\u0430\u0493\u0430\u0439\u044b\u043d\u0434\u0430\u043b\u0441\u0430, \u0441\u043e\u043d\u044b\u04a3 \u0456\u0448\u0456\u043d\u0435\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0443\u044b \u0442\u0438\u0456\u0441\u0442\u0456.",
"ValuePriceUSD": "\u0411\u0430\u0493\u0430\u0441\u044b: {0} USD",
"MessageFeatureIncludedWithSupporter": "\u041e\u0441\u044b \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a \u04af\u0448\u0456\u043d \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0435\u043d\u0441\u0456\u0437, \u0436\u04d9\u043d\u0435 \u043e\u043d\u044b \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u049b\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u044b \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0430 \u0430\u043b\u0430\u0441\u044b\u0437.",
"MessageChangeRecurringPlanConfirm": "\u041e\u0441\u044b \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043d\u044b \u0430\u044f\u049b\u0442\u0430\u0493\u0430\u043d\u043d\u0430\u043d \u043a\u0435\u0439\u0456\u043d PayPal \u0435\u0441\u0435\u043f \u0448\u043e\u0442\u044b\u04a3\u044b\u0437 \u0430\u0440\u049b\u044b\u043b\u044b \u0430\u043b\u0434\u044b\u04a3\u0493\u044b \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b\u0442\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442. Media Browser \u0436\u043e\u0431\u0430\u0441\u044b\u043d \u049b\u043e\u043b\u0434\u0430\u0443\u044b\u04a3\u044b\u0437\u0493\u0430 \u0430\u043b\u0493\u044b\u0441 \u0430\u0439\u0442\u0430\u043c\u044b\u0437!",
"MessageSupporterMembershipExpiredOn": "\u049a\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u043c\u0435\u0440\u0437\u0456\u043c\u0456 {0} \u0431\u0456\u0442\u0442\u0456.",
"MessageYouHaveALifetimeMembership": "\u0492\u04b1\u043c\u044b\u0440\u043b\u044b\u049b \u049b\u043e\u043b\u0434\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u043d\u0435 \u0442\u0438\u0435\u0441\u043b\u0456\u0441\u0456\u0437. \u0422\u04e9\u043c\u0435\u043d\u0434\u0435\u0433\u0456 \u043d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440\u0434\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u0431\u0456\u0440 \u0436\u043e\u043b\u0493\u044b \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u043d\u0435\u0433\u0456\u0437\u0456\u043d\u0434\u0435 \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u049b\u0430\u043c\u0442\u0430\u043c\u0430\u0441\u044b\u0437 \u0435\u0442\u0443 \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456\u04a3\u0456\u0437 \u0431\u0430\u0440. Media Browser \u0436\u043e\u0431\u0430\u0441\u044b\u043d \u049b\u043e\u043b\u0434\u0430\u0443\u044b\u04a3\u044b\u0437\u0493\u0430 \u0430\u043b\u0493\u044b\u0441 \u0430\u0439\u0442\u0430\u043c\u044b\u0437!",
"MessageFeatureIncludedWithSupporter": "\u041e\u0441\u044b \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a \u04af\u0448\u0456\u043d \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0435\u043d\u0441\u0456\u0437, \u0436\u04d9\u043d\u0435 \u043e\u043d\u044b \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0436\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u044b \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0430 \u0430\u043b\u0430\u0441\u044b\u0437.",
"MessageChangeRecurringPlanConfirm": "\u041e\u0441\u044b \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043d\u044b \u0430\u044f\u049b\u0442\u0430\u0493\u0430\u043d\u043d\u0430\u043d \u043a\u0435\u0439\u0456\u043d PayPal \u0435\u0441\u0435\u043f \u0448\u043e\u0442\u044b\u04a3\u044b\u0437 \u0430\u0440\u049b\u044b\u043b\u044b \u0430\u043b\u0434\u044b\u04a3\u0493\u044b \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b\u0442\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442. Media Browser \u0436\u043e\u0431\u0430\u0441\u044b\u043d \u0436\u0430\u049b\u0442\u0430\u0443\u044b\u04a3\u044b\u0437\u0493\u0430 \u0430\u043b\u0493\u044b\u0441 \u0430\u0439\u0442\u0430\u043c\u044b\u0437!",
"MessageSupporterMembershipExpiredOn": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u043c\u0435\u0440\u0437\u0456\u043c\u0456 {0} \u0431\u0456\u0442\u0442\u0456.",
"MessageYouHaveALifetimeMembership": "\u0492\u04b1\u043c\u044b\u0440\u043b\u044b\u049b \u0436\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u043d\u0435 \u0442\u0438\u0435\u0441\u043b\u0456\u0441\u0456\u0437. \u0422\u04e9\u043c\u0435\u043d\u0434\u0435\u0433\u0456 \u043d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440\u0434\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u0431\u0456\u0440 \u0436\u043e\u043b\u0493\u044b \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u043d\u0435\u0433\u0456\u0437\u0456\u043d\u0434\u0435 \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0434\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u049b\u0430\u043c\u0442\u0430\u043c\u0430\u0441\u044b\u0437 \u0435\u0442\u0443 \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456\u04a3\u0456\u0437 \u0431\u0430\u0440. Media Browser \u0436\u043e\u0431\u0430\u0441\u044b\u043d \u0436\u0430\u049b\u0442\u0430\u0443\u044b\u04a3\u044b\u0437\u0493\u0430 \u0430\u043b\u0493\u044b\u0441 \u0430\u0439\u0442\u0430\u043c\u044b\u0437!",
"MessageYouHaveAnActiveRecurringMembership": "\u0411\u0435\u043b\u0441\u0435\u043d\u0434\u0456 {0} \u043c\u04af\u0448\u0435\u043b\u0456\u0433\u0456\u043d\u0435 \u0442\u0438\u0435\u0441\u043b\u0456\u0441\u0456\u0437. \u0422\u04e9\u043c\u0435\u043d\u0434\u0435\u0433\u0456 \u043d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440\u0434\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u0436\u043e\u0441\u043f\u0430\u0440\u044b\u04a3\u044b\u0437\u0434\u044b \u043a\u04e9\u0442\u0435\u0440\u0443 \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456\u04a3\u0456\u0437 \u0431\u0430\u0440",
"ButtonDelete": "\u0416\u043e\u044e",
"HeaderMediaBrowserAccountAdded": "Media Browser \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d",

@ -40,7 +40,7 @@
"LabelStopping": "Avbryter",
"LabelCancelled": "(avbr\u00f6ts)",
"LabelFailed": "(misslyckades)",
"ButtonHelp": "Help",
"ButtonHelp": "Hj\u00e4lp",
"ButtonSave": "Spara",
"HeaderDevices": "Devices",
"HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to premium plugins, internet channel content, and more. {0}Learn more{1}.",
@ -52,8 +52,8 @@
"MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.",
"HeaderLibraryAccess": "Library Access",
"HeaderChannelAccess": "Channel Access",
"HeaderDeviceAccess": "Device Access",
"HeaderSelectDevices": "Select Devices",
"HeaderDeviceAccess": "Enhets\u00e5tkomst",
"HeaderSelectDevices": "V\u00e4lj Enheter",
"LabelAbortedByServerShutdown": "(avbr\u00f6ts eftersom servern st\u00e4ngdes av)",
"LabelScheduledTaskLastRan": "Senast k\u00f6rd {0}, tog {1}",
"HeaderDeleteTaskTrigger": "Ta bort aktivitetsutl\u00f6sare",
@ -273,7 +273,7 @@
"OptionOff": "Av",
"OptionOn": "P\u00e5",
"ButtonSettings": "Inst\u00e4llningar",
"ButtonUninstall": "Uninstall",
"ButtonUninstall": "Avinstallera",
"HeaderFields": "F\u00e4lt",
"HeaderFieldsHelp": "Dra ett f\u00e4lt till \"av\" f\u00f6r att l\u00e5sa det och f\u00f6rhindra att dess data \u00e4ndras.",
"HeaderLiveTV": "Live-TV",
@ -636,7 +636,7 @@
"DefaultErrorMessage": "There was an error processing the request. Please try again later.",
"ButtonAccept": "Accept",
"ButtonReject": "Reject",
"HeaderForgotPassword": "Forgot Password",
"HeaderForgotPassword": "Gl\u00f6mt L\u00f6senord",
"MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.",
"MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.",
"MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:",

@ -31,8 +31,9 @@ namespace MediaBrowser.Server.Implementations.Sync
private readonly IUserManager _userManager;
private readonly ITVSeriesManager _tvSeriesManager;
private readonly IMediaEncoder _mediaEncoder;
private readonly ISubtitleEncoder _subtitleEncoder;
public SyncJobProcessor(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager, IMediaEncoder mediaEncoder)
public SyncJobProcessor(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager, IMediaEncoder mediaEncoder, ISubtitleEncoder subtitleEncoder)
{
_libraryManager = libraryManager;
_syncRepo = syncRepo;
@ -41,6 +42,7 @@ namespace MediaBrowser.Server.Implementations.Sync
_userManager = userManager;
_tvSeriesManager = tvSeriesManager;
_mediaEncoder = mediaEncoder;
_subtitleEncoder = subtitleEncoder;
}
public async Task EnsureJobItems(SyncJob job)
@ -443,6 +445,8 @@ namespace MediaBrowser.Server.Implementations.Sync
_logger.ErrorException("Error during sync transcoding", ex);
}
await ConvertSubtitles(jobItem, streamInfo, cancellationToken).ConfigureAwait(false);
if (jobItem.Status == SyncJobItemStatus.Failed || jobItem.Status == SyncJobItemStatus.Queued)
{
await _syncRepo.Update(jobItem).ConfigureAwait(false);
@ -452,7 +456,7 @@ namespace MediaBrowser.Server.Implementations.Sync
else
{
jobItem.RequiresConversion = false;
if (mediaSource.Protocol == MediaProtocol.File)
{
jobItem.OutputPath = mediaSource.Path;
@ -472,6 +476,20 @@ namespace MediaBrowser.Server.Implementations.Sync
await _syncRepo.Update(jobItem).ConfigureAwait(false);
}
private async Task ConvertSubtitles(SyncJobItem jobItem, StreamInfo streamInfo, CancellationToken cancellationToken)
{
if (streamInfo.SubtitleDeliveryMethod != SubtitleDeliveryMethod.External || !streamInfo.SubtitleStreamIndex.HasValue)
{
// Nothing to do
return;
}
//using (var stream = await _subtitleEncoder.GetSubtitles(streamInfo.ItemId, streamInfo.MediaSourceId, streamInfo.SubtitleStreamIndex.Value, streamInfo.SubtitleFormat, 0, null, cancellationToken).ConfigureAwait(false))
//{
//}
}
private async Task Sync(SyncJobItem jobItem, Audio item, User user, DeviceProfile profile, bool enableConversion, IProgress<double> progress, CancellationToken cancellationToken)
{
var options = new AudioOptions
@ -522,7 +540,7 @@ namespace MediaBrowser.Server.Implementations.Sync
else
{
jobItem.RequiresConversion = false;
if (mediaSource.Protocol == MediaProtocol.File)
{
jobItem.OutputPath = mediaSource.Path;

@ -40,10 +40,11 @@ namespace MediaBrowser.Server.Implementations.Sync
private readonly ITVSeriesManager _tvSeriesManager;
private readonly Func<IMediaEncoder> _mediaEncoder;
private readonly IFileSystem _fileSystem;
private readonly Func<ISubtitleEncoder> _subtitleEncoder;
private ISyncProvider[] _providers = { };
public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func<IMediaEncoder> mediaEncoder, IFileSystem fileSystem)
public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func<IMediaEncoder> mediaEncoder, IFileSystem fileSystem, Func<ISubtitleEncoder> subtitleEncoder)
{
_libraryManager = libraryManager;
_repo = repo;
@ -55,6 +56,7 @@ namespace MediaBrowser.Server.Implementations.Sync
_tvSeriesManager = tvSeriesManager;
_mediaEncoder = mediaEncoder;
_fileSystem = fileSystem;
_subtitleEncoder = subtitleEncoder;
}
public void AddParts(IEnumerable<ISyncProvider> providers)
@ -64,7 +66,7 @@ namespace MediaBrowser.Server.Implementations.Sync
public async Task<SyncJobCreationResult> CreateJob(SyncJobRequest request)
{
var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder());
var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder(), _subtitleEncoder());
var user = _userManager.GetUserById(request.UserId);
@ -178,7 +180,7 @@ namespace MediaBrowser.Server.Implementations.Sync
if (item == null)
{
var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder());
var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder(), _subtitleEncoder());
var user = _userManager.GetUserById(job.UserId);
@ -420,7 +422,7 @@ namespace MediaBrowser.Server.Implementations.Sync
await _repo.Update(jobItem).ConfigureAwait(false);
var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder());
var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder(), _subtitleEncoder());
await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false);
}

@ -20,8 +20,9 @@ namespace MediaBrowser.Server.Implementations.Sync
private readonly IUserManager _userManager;
private readonly ITVSeriesManager _tvSeriesManager;
private readonly IMediaEncoder _mediaEncoder;
private readonly ISubtitleEncoder _subtitleEncoder;
public SyncScheduledTask(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager, IMediaEncoder mediaEncoder)
public SyncScheduledTask(ILibraryManager libraryManager, ISyncRepository syncRepo, ISyncManager syncManager, ILogger logger, IUserManager userManager, ITVSeriesManager tvSeriesManager, IMediaEncoder mediaEncoder, ISubtitleEncoder subtitleEncoder)
{
_libraryManager = libraryManager;
_syncRepo = syncRepo;
@ -30,6 +31,7 @@ namespace MediaBrowser.Server.Implementations.Sync
_userManager = userManager;
_tvSeriesManager = tvSeriesManager;
_mediaEncoder = mediaEncoder;
_subtitleEncoder = subtitleEncoder;
}
public string Name
@ -52,7 +54,7 @@ namespace MediaBrowser.Server.Implementations.Sync
public Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
{
return new SyncJobProcessor(_libraryManager, _syncRepo, _syncManager, _logger, _userManager, _tvSeriesManager, _mediaEncoder).Sync(progress,
return new SyncJobProcessor(_libraryManager, _syncRepo, _syncManager, _logger, _userManager, _tvSeriesManager, _mediaEncoder, _subtitleEncoder).Sync(progress,
cancellationToken);
}

@ -467,7 +467,7 @@ namespace MediaBrowser.Server.Startup.Common
_supportsNativeWebSocket = false;
}
HttpServer = ServerFactory.CreateServer(this, LogManager, "Media Browser", WebApplicationName, "dashboard/index.html", _supportsNativeWebSocket);
HttpServer = ServerFactory.CreateServer(this, LogManager, "Media Browser", WebApplicationName, "dashboard/index.html", false);
RegisterSingleInstance(HttpServer, false);
progress.Report(10);
@ -483,7 +483,7 @@ namespace MediaBrowser.Server.Startup.Common
TVSeriesManager = new TVSeriesManager(UserManager, UserDataManager, LibraryManager);
RegisterSingleInstance(TVSeriesManager);
SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager);
SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager, () => SubtitleEncoder);
RegisterSingleInstance(SyncManager);
DtoService = new DtoService(Logger, LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ServerConfigurationManager, FileSystemManager, ProviderManager, () => ChannelManager, SyncManager, this);
@ -961,7 +961,6 @@ namespace MediaBrowser.Server.Startup.Common
Version = ApplicationVersion.ToString(),
IsNetworkDeployed = CanSelfUpdate,
WebSocketPortNumber = HttpServerPort,
SupportsNativeWebSocket = true,
FailedPluginAssemblies = FailedAssemblies.ToList(),
InProgressInstallations = InstallationManager.CurrentInstallations.Select(i => i.Item1).ToList(),
CompletedInstallations = InstallationManager.CompletedInstallations.ToList(),

@ -264,6 +264,7 @@ namespace MediaBrowser.WebDashboard.Api
foreach (var file in new[]
{
"thirdparty/apiclient/logger.js",
"thirdparty/apiclient/md5.js",
"thirdparty/apiclient/sha1.js",
"thirdparty/apiclient/store.js",

@ -141,6 +141,9 @@
<Content Include="dashboard-ui\thirdparty\apiclient\device.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\thirdparty\apiclient\logger.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\thirdparty\apiclient\mediabrowser.apiclient.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

@ -130,6 +130,12 @@ namespace MediaBrowser.XbmcMetadata.Parsers
item.SetProviderId(MetadataProviders.Imdb, imdbId);
}
// If the file is just an imdb url, don't go any further
if (index == 0)
{
return;
}
xml = xml.Substring(0, index + 1);
}

Loading…
Cancel
Save