1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge pull request #2063 from MediaBrowser/dev

Dev
This commit is contained in:
Luke 2016-08-16 01:54:40 -04:00 committed by GitHub
commit 3ae68f9ce2
64 changed files with 566 additions and 327 deletions

View file

@ -3361,6 +3361,22 @@
});
};
self.cancelSyncItems = function (itemIds, targetId) {
if (!itemIds) {
throw new Error("null itemIds");
}
var url = self.getUrl("Sync/" + (targetId || self.deviceId()) + "/Items", {
ItemIds: itemIds.join(',')
});
return self.ajax({
type: "DELETE",
url: url
});
};
/**
* Reports a user has stopped playing an item
* @param {String} userId

View file

@ -130,11 +130,11 @@
* @param {DOMElement} elem the header element
* @param {Object} options options for the widget
*/
function Headroom(elem, options) {
function Headroom(elems, options) {
options = extend(options, Headroom.options);
this.lastKnownScrollY = 0;
this.elem = elem;
this.elems = elems;
this.debouncer = new Debouncer(this.update.bind(this));
this.tolerance = normalizeTolerance(options.tolerance);
this.classes = options.classes;
@ -143,8 +143,6 @@
this.initialised = false;
this.onPin = options.onPin;
this.onUnpin = options.onUnpin;
this.onTop = options.onTop;
this.onNotTop = options.onNotTop;
}
Headroom.prototype = {
constructor: Headroom,
@ -154,13 +152,30 @@
*/
init: function () {
this.elem.classList.add(this.classes.initial);
for (var i = 0, length = this.elems.length; i < length; i++) {
this.elems[i].classList.add(this.classes.initial);
}
this.attachEvent();
return this;
},
add: function (elem) {
elem.classList.add(this.classes.initial);
this.elems.push(elem);
},
remove: function (elem) {
var classes = this.classes;
elem.classList.remove(classes.unpinned, classes.pinned, classes.initial);
var i = this.elems.indexOf(elem);
if (i != -1) {
this.elems.splice(i, 1);
}
},
/**
* Unattaches events and removes any classes that were added
*/
@ -168,7 +183,11 @@
var classes = this.classes;
this.initialised = false;
this.elem.classList.remove(classes.unpinned, classes.pinned, classes.top, classes.initial);
for (var i = 0, length = this.elems.length; i < length; i++) {
this.elems[i].classList.remove(classes.unpinned, classes.pinned, classes.initial);
}
removeEventListenerWithOptions(this.scroller, 'scroll', this.debouncer, {
capture: false,
passive: true
@ -196,13 +215,17 @@
* Unpins the header if it's currently pinned
*/
unpin: function () {
var classList = this.elem.classList,
classes = this.classes;
if (classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) {
classList.add(classes.unpinned);
classList.remove(classes.pinned);
this.onUnpin && this.onUnpin.call(this);
var classes = this.classes;
for (var i = 0, length = this.elems.length; i < length; i++) {
var classList = this.elems[i].classList;
if (classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) {
classList.add(classes.unpinned);
classList.remove(classes.pinned);
this.onUnpin && this.onUnpin.call(this);
}
}
},
@ -210,42 +233,19 @@
* Pins the header if it's currently unpinned
*/
pin: function () {
var classList = this.elem.classList,
classes = this.classes;
if (classList.contains(classes.unpinned)) {
classList.remove(classes.unpinned);
classList.add(classes.pinned);
this.onPin && this.onPin.call(this);
var classes = this.classes;
for (var i = 0, length = this.elems.length; i < length; i++) {
var classList = this.elems[i].classList;
if (classList.contains(classes.unpinned)) {
classList.remove(classes.unpinned);
classList.add(classes.pinned);
this.onPin && this.onPin.call(this);
}
}
},
/**
* Handles the top states
*/
top: function () {
var classList = this.elem.classList,
classes = this.classes;
if (!classList.contains(classes.top)) {
classList.add(classes.top);
classList.remove(classes.notTop);
this.onTop && this.onTop.call(this);
}
},
/**
* Handles the not top state
*/
notTop: function () {
var classList = this.elem.classList,
classes = this.classes;
if (!classList.contains(classes.notTop)) {
classList.add(classes.notTop);
classList.remove(classes.top);
this.onNotTop && this.onNotTop.call(this);
}
},
/**
@ -315,14 +315,6 @@
return;
}
if (this.enableTopClasses) {
if (currentScrollY <= this.offset) {
this.top();
} else {
this.notTop();
}
}
if (this.shouldUnpin(currentScrollY, toleranceExceeded)) {
this.unpin();
}
@ -347,8 +339,6 @@
classes: {
pinned: 'headroom--pinned',
unpinned: 'headroom--unpinned',
top: 'headroom--top',
notTop: 'headroom--not-top',
initial: 'headroom'
}
};

View file

@ -1,4 +1,4 @@
<div id="channelsPage" data-role="page" data-dom-cache="true" class="page libraryPage channelsPage pageWithAbsoluteTabs" data-contextname="${HeaderChannels}" data-require="scripts/channels,scripts/channelslatest,scripts/sections">
<div id="channelsPage" data-role="page" data-dom-cache="true" class="page libraryPage channelsPage pageWithAbsoluteTabs" data-contextname="${HeaderChannels}">
<div is="emby-tabs" class="libraryViewNav">
<div class="emby-tabs-slider">

View file

@ -5,16 +5,9 @@
right: 0;
z-index: 1;
bottom: 0;
}
.appfooter-headroom {
transition: transform 180ms linear;
}
.appfooter--pinned {
transform: none;
}
.appfooter--unpinned {
.appfooter.headroom--unpinned {
transform: translateY(100%);
}

View file

@ -13,27 +13,10 @@
function initHeadRoom(instance, elem) {
require(["headroom"], function () {
require(["headroom-window"], function (headroom) {
// construct an instance of Headroom, passing the element
var headroom = new Headroom(elem, {
// or scroll tolerance per direction
tolerance: {
down: 20,
up: 0
},
classes: {
pinned: 'appfooter--pinned',
unpinned: 'appfooter--unpinned',
top: 'appfooter--top',
notTop: 'appfooter--not-top',
initial: 'appfooter-headroom'
}
});
// initialise
headroom.init();
instance.headroom = headroom;
self.headroom = headroom;
headroom.add(elem);
});
}
@ -62,10 +45,11 @@
var self = this;
if (self.headroom) {
self.headroom.destroy();
self.headroom.remove(self.element);
self.headroom = null;
}
self.Element = null;
self.element = null;
};
return dockedTabs;

View file

@ -1,5 +1,5 @@
.touch-menu-la {
width: 240px;
width: 280px;
position: fixed;
top: 0;
bottom: 0;

View file

@ -97,7 +97,10 @@
return;
}
var edgeHammer = new Hammer(options.edgeSwipeElement, null);
require(['hammer-main'], initEdgeSwipeInternal);
}
function initEdgeSwipeInternal(edgeHammer) {
var isPeeking = false;
edgeHammer.on('panstart panmove', function (ev) {

View file

@ -100,7 +100,7 @@ paper-input + .fieldDescription {
top: 0;
right: 0;
bottom: 0;
left: 270px;
left: 280px;
}
.dashboardDocument .adminDrawerLogo {

View file

@ -1,11 +1,11 @@
@media all and (min-width: 300px) {
.libraryViewNav, .libraryViewNav > .contentScrollSlider {
.libraryViewNav, .emby-tabs-slider {
display: flex;
flex-grow: 1;
}
.libraryViewNav .emby-tab-button {
flex-grow: 1;
}
.emby-tab-button {
flex-grow: 1;
}
}

View file

@ -38,7 +38,7 @@
<div class="syncLocalContainer hide" style="margin-top:1em; display: inline-flex; padding: 0 .5em;">
<label class="checkboxContainer" style="margin:0;">
<input type="checkbox" is="emby-checkbox" class="chkOffline" />
<span>Make Available Offline</span>
<span>${MakeAvailableOffline}</span>
</label>
</div>
</div>
@ -62,7 +62,7 @@
<div class="syncLocalContainer hide" style="margin-top:1em; display: inline-flex; padding: 0 .5em;">
<label class="checkboxContainer" style="margin:0;">
<input type="checkbox" is="emby-checkbox" class="chkOffline" />
<span>Make Available Offline</span>
<span>${MakeAvailableOffline}</span>
</label>
</div>
</div>

View file

@ -1,4 +1,4 @@
define(['libraryBrowser', 'cardBuilder', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (libraryBrowser, cardBuilder) {
define(['libraryBrowser', 'cardBuilder', 'emby-itemscontainer', 'emby-tabs', 'emby-button', 'scripts/channelslatest', 'scripts/sections'], function (libraryBrowser, cardBuilder) {
// The base query options
var query = {
@ -70,18 +70,29 @@
}
}
pageIdOn('pageinit', "channelsPage", function () {
return function (view, params) {
var page = this;
var self = this;
var viewTabs = view.querySelector('.libraryViewNav');
var mdlTabs = page.querySelector('.libraryViewNav');
libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 1]);
libraryBrowser.configurePaperLibraryTabs(page, mdlTabs, page.querySelectorAll('.pageTabContent'), [0, 1]);
mdlTabs.addEventListener('tabchange', function (e) {
loadTab(page, parseInt(e.detail.selectedTabIndex));
viewTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex));
});
});
if (AppInfo.enableHeadRoom) {
require(["headroom-window"], function (headroom) {
headroom.add(viewTabs);
self.headroom = headroom;
});
}
view.addEventListener('viewdestroy', function (e) {
if (self.headroom) {
self.headroom.remove(viewTabs);
}
});
};
});

View file

@ -248,9 +248,9 @@
loadHomeTab(view, tabContent);
};
var mdlTabs = view.querySelector('.libraryViewNav');
var viewTabs = view.querySelector('.libraryViewNav');
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 3]);
libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 3]);
var tabControllers = [];
var renderedTabs = [];
@ -319,11 +319,11 @@
});
}
mdlTabs.addEventListener('beforetabchange', function (e) {
viewTabs.addEventListener('beforetabchange', function (e) {
preLoadTab(view, parseInt(e.detail.selectedTabIndex));
});
mdlTabs.addEventListener('tabchange', function (e) {
viewTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex));
});
@ -343,7 +343,7 @@
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') {
mdlTabs.triggerTabChange();
viewTabs.triggerTabChange();
}
}
@ -370,5 +370,18 @@
Events.off(MediaController, 'playbackstop', onPlaybackStop);
Events.off(ApiClient, "websocketmessage", onWebSocketMessage);
});
if (AppInfo.enableHeadRoom) {
require(["headroom-window"], function (headroom) {
headroom.add(viewTabs);
self.headroom = headroom;
});
}
view.addEventListener('viewdestroy', function (e) {
if (self.headroom) {
self.headroom.remove(viewTabs);
}
});
};
});

View file

@ -90,7 +90,7 @@
var elems = page.querySelectorAll('.chkOffline');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].checked = item.SyncPercent == 100;
elems[i].checked = item.SyncPercent != null;
}
}
@ -1127,7 +1127,8 @@
showTitle: true,
centerText: true,
lazy: true,
overlayPlayButton: true
overlayPlayButton: true,
allowBottomPadding: !scrollX
});
}
else if (item.Type == "Season") {
@ -1141,7 +1142,7 @@
overlayText: true,
lazy: true,
showDetailsMenu: true,
overlayPlayButton: AppInfo.enableAppLayouts
overlayPlayButton: AppInfo.enableAppLayouts,
});
}
else if (item.Type == "GameSystem") {
@ -2054,21 +2055,33 @@
});
}
function onSyncLocalClick() {
if (this.checked) {
require(['syncDialog'], function (syncDialog) {
syncDialog.showMenu({
items: [currentItem]
});
});
} else {
}
}
return function (view, params) {
function resetSyncStatus() {
updateSyncStatus(view, currentItem);
}
function onSyncLocalClick() {
if (this.checked) {
require(['syncDialog'], function (syncDialog) {
syncDialog.showMenu({
items: [currentItem]
}).then(function () {
reload(view, params);
}, resetSyncStatus);
});
} else {
require(['confirm'], function (confirm) {
confirm(Globalize.translate('ConfirmRemoveDownload')).then(function () {
ApiClient.cancelSyncItems([currentItem.Id]);
}, resetSyncStatus);
});
}
}
function onPlayTrailerClick() {
playTrailer(view);
}

View file

@ -116,32 +116,43 @@
configureSwipeTabs: function (ownerpage, tabs) {
if (!browser.touch) {
return;
//return;
}
//require(['hammer'], function (Hammer) {
// var hammertime = new Hammer(ownerpage);
// hammertime.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL });
//});
var pageCount = ownerpage.querySelectorAll('.pageTabContent').length;
require(['hammer'], function (Hammer) {
var hammertime = new Hammer(ownerpage);
hammertime.get('swipe').set({ direction: Hammer.DIRECTION_HORIZONTAL });
hammertime.on('swipeleft', function (e) {
if (LibraryBrowser.allowSwipe(e.target)) {
var selected = parseInt(tabs.selectedIndex() || '0');
if (selected < (pageCount - 1)) {
tabs.selectedIndex(selected + 1);
}
var onSwipeLeft = function (e) {
if (LibraryBrowser.allowSwipe(e.target) && ownerpage.contains(e.target)) {
var selected = parseInt(tabs.selectedIndex() || '0');
if (selected < (pageCount - 1)) {
tabs.selectedIndex(selected + 1);
}
});
}
};
hammertime.on('swiperight', function (e) {
if (LibraryBrowser.allowSwipe(e.target)) {
var selected = parseInt(tabs.selectedIndex() || '0');
if (selected > 0) {
tabs.selectedIndex(selected - 1);
}
var onSwipeRight = function (e) {
if (LibraryBrowser.allowSwipe(e.target) && ownerpage.contains(e.target)) {
var selected = parseInt(tabs.selectedIndex() || '0');
if (selected > 0) {
tabs.selectedIndex(selected - 1);
}
}
};
require(['hammer-main'], function (hammertime) {
hammertime.on('swipeleft', onSwipeLeft);
hammertime.on('swiperight', onSwipeRight);
ownerpage.addEventListener('viewdestroy', function () {
hammertime.off('swipeleft', onSwipeLeft);
hammertime.off('swiperight', onSwipeRight);
});
});
},

View file

@ -879,21 +879,6 @@
}
}
pageClassOn('pageinit', 'page', function () {
var page = this;
var isLibraryPage = page.classList.contains('libraryPage');
if (isLibraryPage) {
var navs = page.querySelectorAll('.libraryViewNav');
for (var i = 0, length = navs.length; i < length; i++) {
initHeadRoom(navs[i]);
}
}
});
pageClassOn('pagebeforeshow', 'page', function (e) {
var page = this;
@ -999,18 +984,9 @@
return;
}
require(["headroom"], function () {
require(["headroom-window"], function (headroom) {
// construct an instance of Headroom, passing the element
var headroom = new Headroom(elem, {
// or scroll tolerance per direction
tolerance: {
down: 40,
up: 0
}
});
// initialise
headroom.init();
headroom.add(elem);
});
}
@ -1063,8 +1039,8 @@
var drawerWidth = screen.availWidth - 50;
// At least 240
drawerWidth = Math.max(drawerWidth, 240);
// But not exceeding 270
drawerWidth = Math.min(drawerWidth, 270);
// But not exceeding 280
drawerWidth = Math.min(drawerWidth, 280);
var disableEdgeSwipe = false;
@ -1079,8 +1055,7 @@
target: navDrawerElement,
onChange: onMainDrawerSelect,
width: drawerWidth,
disableEdgeSwipe: disableEdgeSwipe,
edgeSwipeElement: document.querySelector('.mainDrawerPanelContent')
disableEdgeSwipe: disableEdgeSwipe
};
}

View file

@ -198,11 +198,11 @@
});
}
var mdlTabs = view.querySelector('.libraryViewNav');
var viewTabs = view.querySelector('.libraryViewNav');
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 2, 3, 4]);
libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 2, 3, 4]);
mdlTabs.addEventListener('tabchange', function (e) {
viewTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex));
});
@ -211,8 +211,18 @@
document.body.classList.remove('autoScrollY');
});
if (AppInfo.enableHeadRoom) {
require(["headroom-window"], function (headroom) {
headroom.add(viewTabs);
self.headroom = headroom;
});
}
view.addEventListener('viewdestroy', function (e) {
if (self.headroom) {
self.headroom.remove(viewTabs);
}
tabControllers.forEach(function (t) {
if (t.destroy) {
t.destroy();

View file

@ -208,15 +208,9 @@
loadSuggestionsTab(view, params, tabContent);
};
var mdlTabs = view.querySelector('.libraryViewNav');
var viewTabs = view.querySelector('.libraryViewNav');
var baseUrl = 'movies.html';
var topParentId = params.topParentId;
if (topParentId) {
baseUrl += '?topParentId=' + topParentId;
}
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 3, 4, 5]);
libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 3, 4, 5]);
var tabControllers = [];
var renderedTabs = [];
@ -290,14 +284,15 @@
});
}
mdlTabs.addEventListener('beforetabchange', function (e) {
viewTabs.addEventListener('beforetabchange', function (e) {
preLoadTab(view, parseInt(e.detail.selectedTabIndex));
});
mdlTabs.addEventListener('tabchange', function (e) {
viewTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex));
});
view.addEventListener('viewbeforeshow', function (e) {
if (!view.getAttribute('data-title')) {
var parentId = params.topParentId;
@ -323,7 +318,7 @@
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') {
renderedTabs = [];
mdlTabs.triggerTabChange();
viewTabs.triggerTabChange();
}
}
@ -334,6 +329,19 @@
view.addEventListener('viewbeforehide', function (e) {
Events.off(MediaController, 'playbackstop', onPlaybackStop);
});
if (AppInfo.enableHeadRoom) {
require(["headroom-window"], function (headroom) {
headroom.add(viewTabs);
self.headroom = headroom;
});
}
view.addEventListener('viewdestroy', function (e) {
if (self.headroom) {
self.headroom.remove(viewTabs);
}
});
};
});

View file

@ -349,19 +349,29 @@
});
}
var mdlTabs = view.querySelector('.libraryViewNav');
var viewTabs = view.querySelector('.libraryViewNav');
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 4, 5, 6]);
libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 4, 5, 6]);
mdlTabs.addEventListener('beforetabchange', function (e) {
viewTabs.addEventListener('beforetabchange', function (e) {
preLoadTab(view, parseInt(e.detail.selectedTabIndex));
});
mdlTabs.addEventListener('tabchange', function (e) {
viewTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex));
});
if (AppInfo.enableHeadRoom) {
require(["headroom-window"], function (headroom) {
headroom.add(viewTabs);
self.headroom = headroom;
});
}
view.addEventListener('viewdestroy', function (e) {
if (self.headroom) {
self.headroom.remove(viewTabs);
}
tabControllers.forEach(function (t) {
if (t.destroy) {
t.destroy();

View file

@ -1185,6 +1185,31 @@ var AppInfo = {};
}
}
function createWindowHeadroom() {
// construct an instance of Headroom, passing the element
var headroom = new Headroom([], {
// or scroll tolerance per direction
tolerance: {
down: 20,
up: 0
},
classes: {
//pinned: 'appfooter--pinned',
//unpinned: 'appfooter--unpinned',
//initial: 'appfooter-headroom'
}
});
// initialise
headroom.init();
return headroom;
}
function createMainContentHammer(Hammer) {
var hammer = new Hammer(document.querySelector('.mainDrawerPanelContent'), null);
return hammer;
}
function initRequire() {
var urlArgs = "v=" + (window.dashboardVersion || new Date().getDate());
@ -1491,6 +1516,9 @@ var AppInfo = {};
return Emby.Page;
});
define("headroom-window", ['headroom'], createWindowHeadroom);
define("hammer-main", ['hammer'], createMainContentHammer);
// mock this for now. not used in this app
define("playbackManager", [], function () {
return {
@ -1892,7 +1920,8 @@ var AppInfo = {};
path: '/channels.html',
dependencies: [],
autoFocus: false,
transition: 'fade'
transition: 'fade',
controller: 'scripts/channels'
});
defineRoute({

View file

@ -219,93 +219,96 @@
function showSyncMenu(options) {
requirejs(["registrationservices"], function () {
RegistrationServices.validateFeature('sync').then(function () {
showSyncMenuInternal(options);
return new Promise(function (resolve, reject) {
requirejs(["registrationservices", 'dialogHelper', 'formDialogStyle'], function (registrationServices, dialogHelper) {
registrationServices.validateFeature('sync').then(function () {
showSyncMenuInternal(dialogHelper, options).then(resolve, reject);
}, reject);
});
});
}
function showSyncMenuInternal(options) {
function showSyncMenuInternal(dialogHelper, options) {
require(['dialogHelper', 'formDialogStyle'], function (dialogHelper) {
var userId = Dashboard.getCurrentUserId();
var userId = Dashboard.getCurrentUserId();
var dialogOptionsQuery = {
UserId: userId,
ItemIds: (options.items || []).map(function (i) {
return i.Id || i;
}).join(','),
var dialogOptionsQuery = {
UserId: userId,
ItemIds: (options.items || []).map(function (i) {
return i.Id || i;
}).join(','),
ParentId: options.ParentId,
Category: options.Category
};
ParentId: options.ParentId,
Category: options.Category
};
return ApiClient.getJSON(ApiClient.getUrl('Sync/Options', dialogOptionsQuery)).then(function (dialogOptions) {
ApiClient.getJSON(ApiClient.getUrl('Sync/Options', dialogOptionsQuery)).then(function (dialogOptions) {
currentDialogOptions = dialogOptions;
currentDialogOptions = dialogOptions;
var dlg = dialogHelper.createDialog({
size: 'small',
removeOnClose: true,
autoFocus: false
});
dlg.classList.add('ui-body-a');
dlg.classList.add('background-theme-a');
dlg.classList.add('formDialog');
var html = '';
html += '<div class="formDialogHeader">';
html += '<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><i class="md-icon">&#xE5C4;</i></button>';
html += '<div class="formDialogHeaderTitle">';
html += Globalize.translate('SyncMedia');
html += '</div>';
html += '<a href="https://github.com/MediaBrowser/Wiki/wiki/Sync" target="_blank" class="clearLink" style="margin-top:0;display:inline-block;vertical-align:middle;margin-left:auto;"><button is="emby-button" type="button" class="mini"><i class="md-icon">info</i><span>' + Globalize.translate('ButtonHelp') + '</span></button></a>';
html += '</div>';
html += '<div class="formDialogContent smoothScrollY" style="padding-top:2em;">';
html += '<div class="dialogContentInner dialog-content-centered">';
html += '<form class="formSubmitSyncRequest" style="margin: auto;">';
html += '<div class="formFields"></div>';
html += '<p>';
html += '<button is="emby-button" type="submit" class="raised submit block"><i class="md-icon">sync</i><span>' + Globalize.translate('ButtonSync') + '</span></button>';
html += '</p>';
html += '</form>';
html += '</div>';
html += '</div>';
dlg.innerHTML = html;
document.body.appendChild(dlg);
dialogHelper.open(dlg);
$('form', dlg).on('submit', function () {
submitJob(dlg, userId, options, this, dialogHelper);
return false;
});
$('.btnCancel', dlg).on('click', function () {
dialogHelper.close(dlg);
});
renderForm({
elem: $('.formFields', dlg),
dialogOptions: dialogOptions,
dialogOptionsFn: getTargetDialogOptionsFn(dialogOptionsQuery)
});
var dlg = dialogHelper.createDialog({
size: 'small',
removeOnClose: true,
autoFocus: false
});
dlg.classList.add('ui-body-a');
dlg.classList.add('background-theme-a');
dlg.classList.add('formDialog');
var html = '';
html += '<div class="formDialogHeader">';
html += '<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><i class="md-icon">&#xE5C4;</i></button>';
html += '<div class="formDialogHeaderTitle">';
html += Globalize.translate('SyncMedia');
html += '</div>';
html += '<a href="https://github.com/MediaBrowser/Wiki/wiki/Sync" target="_blank" class="clearLink" style="margin-top:0;display:inline-block;vertical-align:middle;margin-left:auto;"><button is="emby-button" type="button" class="mini"><i class="md-icon">info</i><span>' + Globalize.translate('ButtonHelp') + '</span></button></a>';
html += '</div>';
html += '<div class="formDialogContent smoothScrollY" style="padding-top:2em;">';
html += '<div class="dialogContentInner dialog-content-centered">';
html += '<form class="formSubmitSyncRequest" style="margin: auto;">';
html += '<div class="formFields"></div>';
html += '<p>';
html += '<button is="emby-button" type="submit" class="raised submit block"><i class="md-icon">sync</i><span>' + Globalize.translate('ButtonSync') + '</span></button>';
html += '</p>';
html += '</form>';
html += '</div>';
html += '</div>';
dlg.innerHTML = html;
document.body.appendChild(dlg);
$('form', dlg).on('submit', function () {
submitJob(dlg, userId, options, this, dialogHelper);
return false;
});
$('.btnCancel', dlg).on('click', function () {
dialogHelper.close(dlg);
});
var promise = dialogHelper.open(dlg);
renderForm({
elem: $('.formFields', dlg),
dialogOptions: dialogOptions,
dialogOptionsFn: getTargetDialogOptionsFn(dialogOptionsQuery)
});
return promise;
});
}

View file

@ -202,34 +202,28 @@
});
}
var mdlTabs = view.querySelector('.libraryViewNav');
var viewTabs = view.querySelector('.libraryViewNav');
function onPlaybackStop(e, state) {
if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') {
renderedTabs = [];
mdlTabs.triggerTabChange();
viewTabs.triggerTabChange();
}
}
var baseUrl = 'tv.html';
var topParentId = params.topParentId;
if (topParentId) {
baseUrl += '?topParentId=' + topParentId;
}
if (enableScrollX()) {
view.querySelector('#resumableItems').classList.add('hiddenScrollX');
} else {
view.querySelector('#resumableItems').classList.remove('hiddenScrollX');
}
libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 4, 5, 6]);
libraryBrowser.configurePaperLibraryTabs(view, viewTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 4, 5, 6]);
mdlTabs.addEventListener('beforetabchange', function (e) {
viewTabs.addEventListener('beforetabchange', function (e) {
preLoadTab(view, parseInt(e.detail.selectedTabIndex));
});
mdlTabs.addEventListener('tabchange', function (e) {
viewTabs.addEventListener('tabchange', function (e) {
loadTab(view, parseInt(e.detail.selectedTabIndex));
});
@ -278,8 +272,18 @@
Events.off(ApiClient, "websocketmessage", onWebSocketMessage);
});
if (AppInfo.enableHeadRoom) {
require(["headroom-window"], function (headroom) {
headroom.add(viewTabs);
self.headroom = headroom;
});
}
view.addEventListener('viewdestroy', function (e) {
if (self.headroom) {
self.headroom.remove(viewTabs);
}
tabControllers.forEach(function (t) {
if (t.destroy) {
t.destroy();

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "Wir konnten kein FFmpeg in dem von Dir erfassten Verzeichnis finden. FFprobe wird ebenso ben\u00f6tigt und muss sich im gleichen Verzeichnis befinden. Diese Komponenten sind normalerweise in einem B\u00fcndel vorhanden um kommen zusammen mit einem Download. Bitte pr\u00fcfe das Verzeichnis und probiere es erneut.",
"XmlTvPremiere": "Grunds\u00e4tzlich wird Emby {0} Stunden des EPGs importieren. Um unendlich Daten zu importieren ist eine aktive Emby Premiere Mitgliedschaft notwendig.",
"MoreFromValue": "Mehr von {0}",
"OptionSaveMetadataAsHiddenHelp": "\u00c4nderungen werden sich auf neue Metadaten angewendet. Bereits existierende Metadaten werden bei der n\u00e4chsten Speicherung des Emby Servers auf den neusten Stand gebracht."
"OptionSaveMetadataAsHiddenHelp": "\u00c4nderungen werden sich auf neue Metadaten angewendet. Bereits existierende Metadaten werden bei der n\u00e4chsten Speicherung des Emby Servers auf den neusten Stand gebracht.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2312,5 +2312,7 @@
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files."
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "No fue posible localizar FFmpeg usando la ruta que introdujo. FFprobe tambi\u00e9n es requerido y debe de estar en la misma carpeta. Estos componentes normalmente est\u00e1n empaquetados en la misma descarga. Por favor verifique la ruta e intente de nuevo.",
"XmlTvPremiere": "Por defecto, Emby importara {0} horas de datos de la gu\u00eda. Para importar datos ilimitados necesita una subscripcion activa de Emby Premiere",
"MoreFromValue": "Mas de {0}",
"OptionSaveMetadataAsHiddenHelp": "Cambiando esto se aplicara a nuevos metadatos en adelante. Los archivos de metadatos existentes ser\u00e1n actualizados la pr\u00f3xima vez que sean guardados por el Servidor Emby"
"OptionSaveMetadataAsHiddenHelp": "Cambiando esto se aplicara a nuevos metadatos en adelante. Los archivos de metadatos existentes ser\u00e1n actualizados la pr\u00f3xima vez que sean guardados por el Servidor Emby",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "Por defecto Emby importar\u00e1 {0} horas de programaci\u00f3n. Importar una cantidad ilimitada necesita una suscripci\u00f3n a Emby Premiere.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "Nous ne pouvons pas localiser FFmpeg en utilisant le chemin que vous avez saisi. FFprobe est \u00e9galement n\u00e9cessaire et doit exister dans le m\u00eame dossier. Ces composants sont g\u00e9n\u00e9ralement regroup\u00e9s dans le m\u00eame t\u00e9l\u00e9chargement. S'il vous pla\u00eet v\u00e9rifier le chemin et essayer \u00e0 nouveau.",
"XmlTvPremiere": "Par d\u00e9faut, Emby importera {0} heures de donn\u00e9es de guidage. L\u2019importation de donn\u00e9es illimit\u00e9 n\u00e9cessite un abonnement Emby Premiere.",
"MoreFromValue": "Plus de {0}",
"OptionSaveMetadataAsHiddenHelp": "La modification s'appliquera aux nouvelles m\u00e9tadonn\u00e9es enregistr\u00e9es \u00e0 l'avenir. Les fichiers de m\u00e9tadonn\u00e9es existants seront mis \u00e0 jour la prochaine fois par Emby Server."
"OptionSaveMetadataAsHiddenHelp": "La modification s'appliquera aux nouvelles m\u00e9tadonn\u00e9es enregistr\u00e9es \u00e0 l'avenir. Les fichiers de m\u00e9tadonn\u00e9es existants seront mis \u00e0 jour la prochaine fois par Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -1349,7 +1349,7 @@
"HeaderPlayback": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443",
"OptionAllowAudioPlaybackTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0493\u0430 \u0442\u0430\u043b\u0430\u0431\u044b \u0431\u0430\u0440 \u0434\u044b\u0431\u044b\u0441 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443",
"OptionAllowVideoPlaybackTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0493\u0430 \u0442\u0430\u043b\u0430\u0431\u044b \u0431\u0430\u0440 \u0431\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443",
"OptionAllowVideoPlaybackRemuxing": "Allow video playback that requires conversion without re-encoding",
"OptionAllowVideoPlaybackRemuxing": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0441\u044b\u0437 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443 \u0442\u0430\u043b\u0430\u0431\u044b \u0431\u0430\u0440 \u0431\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443",
"OptionAllowMediaPlaybackTranscodingHelp": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440 \u04e9\u0437\u0434\u0435\u0440\u0456\u043d\u0456\u04a3 \u0441\u0430\u044f\u0441\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0430 \u043d\u0435\u0433\u0456\u0437\u0434\u0435\u043b\u0433\u0435\u043d \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0439\u0442\u044b\u043d \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430\u0493\u044b \u049b\u0430\u0442\u0435 \u0442\u0443\u0440\u0430\u043b\u044b \u043e\u04a3\u0430\u0439 \u0445\u0430\u0431\u0430\u0440\u043b\u0430\u0440\u0434\u044b \u0430\u043b\u0430\u0434\u044b.",
"TabStreaming": "\u0410\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443",
"LabelRemoteClientBitrateLimit": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435 \u0430\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b\u043d\u044b\u04a3 \u0448\u0435\u0433\u0456, \u041c\u0431\u0438\u0442\/\u0441:",
@ -1862,7 +1862,7 @@
"OptionMusicAlbums": "\u041c\u0443\u0437\u044b\u043a\u0430 \u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440\u044b",
"OptionMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440",
"OptionSongs": "\u04d8\u0443\u0435\u043d\u0434\u0435\u0440",
"OptionHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456",
"OptionHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456 \u043c\u0435\u043d \u0444\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440",
"OptionBooks": "\u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440",
"ButtonUp": "\u0416\u043e\u0493\u0430\u0440\u044b\u0493\u0430",
"ButtonDown": "\u0422\u04e9\u043c\u0435\u043d\u0433\u0435",
@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "\u0411\u0456\u0437\u0433\u0435 \u0441\u0456\u0437 \u0435\u043d\u0433\u0456\u0437\u0433\u0435\u043d FFmpeg \u0436\u043e\u043b\u044b\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u0442\u0430\u0431\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0431\u043e\u043b\u043c\u0430\u0434\u044b. \u0421\u043e\u043d\u0434\u0430\u0439-\u0430\u049b FFprobe \u0442\u0430\u043b\u0430\u043f \u0435\u0442\u0456\u043b\u0435\u0434\u0456 \u0436\u04d9\u043d\u0435 \u0441\u043e\u043b \u049b\u0430\u043b\u0442\u0430\u0434\u0430 \u0431\u043e\u043b\u0443\u044b \u0436\u04e9\u043d. \u0411\u04b1\u043b \u049b\u04b1\u0440\u0430\u043c\u0434\u0430\u0441\u0442\u0430\u0440 \u04d9\u0434\u0435\u0442\u0442\u0435 \u0441\u043e\u043b \u0436\u04af\u043a\u0442\u0435\u0443\u043c\u0435\u043d \u0431\u0456\u0440\u0433\u0435 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u043b\u0435\u0434\u0456. \u0416\u043e\u043b\u0434\u044b \u0442\u0435\u043a\u0441\u0435\u0440\u0456\u043f, \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u043f \u043a\u04e9\u0440\u0456\u04a3\u0456\u0437.",
"XmlTvPremiere": "\u04d8\u0434\u0435\u043f\u043a\u0456\u0434\u0435, Emby \u0430\u0440\u049b\u044b\u043b\u044b {0} \u0441\u0430\u0493\u0430\u0442 \u049b\u0430\u043c\u0442\u0438\u0442\u044b\u043d \u0442\u0435\u043b\u0435\u0433\u0438\u0434 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456 \u0448\u0435\u0442\u0442\u0435\u043d \u04d9\u043a\u0435\u043b\u0456\u043d\u0435\u0434\u0456. \u0414\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0448\u0435\u043a\u0441\u0456\u0437 \u0448\u0435\u0442\u0442\u0435\u043d \u04d9\u043a\u0435\u043b\u0443\u0456 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 Emby Premiere \u0436\u0430\u0437\u044b\u043b\u044b\u043c\u044b\u043d \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0434\u0456.",
"MoreFromValue": "{0} \u0430\u0440\u049b\u044b\u043b\u044b \u043a\u04e9\u0431\u0456\u0440\u0435\u043a",
"OptionSaveMetadataAsHiddenHelp": "\u041e\u0441\u044b \u04e9\u0437\u0433\u0435\u0440\u0442\u0443 \u0431\u043e\u043b\u0430\u0448\u0430\u049b\u0442\u0430 \u0441\u0430\u049b\u0442\u0430\u043b\u0430\u0442\u044b\u043d \u0436\u0430\u04a3\u0430 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b. \u0411\u0430\u0440 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u043e\u043b\u0430\u0440 Emby \u0441\u0435\u0440\u0432\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0441\u0430\u049b\u0442\u0430\u043b\u0493\u0430\u043d\u0434\u0430 \u043a\u0435\u043b\u0435\u0441\u0456 \u0436\u043e\u043b\u044b \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b."
"OptionSaveMetadataAsHiddenHelp": "\u041e\u0441\u044b \u04e9\u0437\u0433\u0435\u0440\u0442\u0443 \u0431\u043e\u043b\u0430\u0448\u0430\u049b\u0442\u0430 \u0441\u0430\u049b\u0442\u0430\u043b\u0430\u0442\u044b\u043d \u0436\u0430\u04a3\u0430 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b. \u0411\u0430\u0440 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u043e\u043b\u0430\u0440 Emby \u0441\u0435\u0440\u0432\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0441\u0430\u049b\u0442\u0430\u043b\u0493\u0430\u043d\u0434\u0430 \u043a\u0435\u043b\u0435\u0441\u0456 \u0436\u043e\u043b\u044b \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "Vi kan dessverre ikke finne FFmpeg bruke banen du har angitt. FFprobe er ogs\u00e5 n\u00f8dvendig og m\u00e5 ligge i samme mappe. Disse komponentene er vanligvis buntet sammen i samme nedlastning. Kontroller banen og pr\u00f8v igjen.",
"XmlTvPremiere": "Som standard, vill Emby importere {0} timer av tv guide informasjon. For \u00e5 kunne importere ubegrenset med data kreves det et aktivt Emby Premiere abonnement.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We zijn niet in staat om FFmpeg te lokaliseren met behulp van het pad dat u hebt ingevoerd. FFprobe is ook nodig en moet \u200b\u200bin dezelfde map staan. Deze componenten worden gewoonlijk gebundeld in dezelfde download. Controleer het pad en probeer het opnieuw.",
"XmlTvPremiere": "Standaard wordt {0} uur gids data in Emby ge\u00efmporteerd. Het importeren van onbeperkte data vereist een actieve Emby Premiere abonnement.",
"MoreFromValue": "Meer van {0}",
"OptionSaveMetadataAsHiddenHelp": "Het veranderen van dit zal gelden voor nieuwe metadata die wordt opgeslagen. Bestaande metadata bestanden zullen de volgende keer dat ze worden opgeslagen door Emby Server worden bijgewerkt."
"OptionSaveMetadataAsHiddenHelp": "Het veranderen van dit zal gelden voor nieuwe metadata die wordt opgeslagen. Bestaande metadata bestanden zullen de volgende keer dat ze worden opgeslagen door Emby Server worden bijgewerkt.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "N\u00e3o foi poss\u00edvel localizar FFmpeg utilizando o caminho que voc\u00ea digitou. O FFprobe tamb\u00e9m \u00e9 obrigat\u00f3rio e precisa existir na mesma pasta. Estes componentes normalmente est\u00e3o juntos no mesmo download. Por favor verifique o caminho e tente novamente.",
"XmlTvPremiere": "Por padr\u00e3o, o Emby importar\u00e1 {0} horas de dados do guia. A importa\u00e7\u00e3o de dados ilimitados exige uma subscri\u00e7\u00e3o ativa do Emby Premiere.",
"MoreFromValue": "Mais de {0}",
"OptionSaveMetadataAsHiddenHelp": "Ao alterar isto, aplicar\u00e1 sobre novos metadados salvos daqui para a frente. Os arquivos de metadados existentes ser\u00e3o atualizados na pr\u00f3xima vez que forem salvos no Servidor Emby."
"OptionSaveMetadataAsHiddenHelp": "Ao alterar isto, aplicar\u00e1 sobre novos metadados salvos daqui para a frente. Os arquivos de metadados existentes ser\u00e3o atualizados na pr\u00f3xima vez que forem salvos no Servidor Emby.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -1349,7 +1349,7 @@
"HeaderPlayback": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445",
"OptionAllowAudioPlaybackTranscoding": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
"OptionAllowVideoPlaybackTranscoding": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
"OptionAllowVideoPlaybackRemuxing": "Allow video playback that requires conversion without re-encoding",
"OptionAllowVideoPlaybackRemuxing": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438",
"OptionAllowMediaPlaybackTranscodingHelp": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u043c\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.",
"TabStreaming": "\u0422\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f",
"LabelRemoteClientBitrateLimit": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438, \u041c\u0431\u0438\u0442\/\u0441:",
@ -1862,7 +1862,7 @@
"OptionMusicAlbums": "\u041c\u0443\u0437. \u0430\u043b\u044c\u0431\u043e\u043c\u044b",
"OptionMusicVideos": "\u041c\u0443\u0437. \u0432\u0438\u0434\u0435\u043e",
"OptionSongs": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438",
"OptionHomeVideos": "\u0414\u043e\u043c. \u0432\u0438\u0434\u0435\u043e",
"OptionHomeVideos": "\u0414\u043e\u043c. \u0432\u0438\u0434\u0435\u043e \u0438 \u0444\u043e\u0442\u043e",
"OptionBooks": "\u041a\u043d\u0438\u0433\u0438",
"ButtonUp": "\u0412\u0432\u0435\u0440\u0445",
"ButtonDown": "\u0412\u043d\u0438\u0437",
@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "\u041c\u044b \u043d\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c FFmpeg \u043f\u043e \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c\u0443 \u0432\u0430\u043c\u0438 \u043f\u0443\u0442\u0438. FFprobe \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u043f\u0430\u043f\u043a\u0435. \u042d\u0442\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0443\u0442\u044c \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443.",
"XmlTvPremiere": "\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0432 Emby \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f {0} \u0447\u0430\u0441(\u0430\/\u043e\u0432) \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u043b\u0435\u0433\u0438\u0434\u0430. \u0414\u043b\u044f \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 Emby Premiere.",
"MoreFromValue": "\u0415\u0449\u0451 \u0441 {0}",
"OptionSaveMetadataAsHiddenHelp": "\u042d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u043a \u043d\u043e\u0432\u044b\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 Emby Server."
"OptionSaveMetadataAsHiddenHelp": "\u042d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u043a \u043d\u043e\u0432\u044b\u043c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "Mer fr\u00e5n {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2310,5 +2310,9 @@
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
"MoreFromValue": "More from {0}",
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server."
"OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Emby Server.",
"EnablePhotos": "Enable photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.",
"MakeAvailableOffline": "Make available offline",
"ConfirmRemoveDownload": "Remove download?"
}

View file

@ -2,5 +2,5 @@
<packages>
<package id="CommonIO" version="1.0.0.9" targetFramework="net45" />
<package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" />
<package id="WebMarkupMin.Core" version="1.0.1" targetFramework="net45" />
<package id="WebMarkupMin.Core" version="2.1.0" targetFramework="net45" />
</packages>