mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge branch 'master' into deminify-2
This commit is contained in:
commit
1a2019bb0e
88 changed files with 4241 additions and 2269 deletions
|
@ -28,6 +28,9 @@
|
||||||
- [lewazo](https://github.com/lewazo)
|
- [lewazo](https://github.com/lewazo)
|
||||||
- [Raghu Saxena](https://github.com/ckcr4lyf)
|
- [Raghu Saxena](https://github.com/ckcr4lyf)
|
||||||
- [Nickbert7](https://github.com/Nickbert7)
|
- [Nickbert7](https://github.com/Nickbert7)
|
||||||
|
- [ferferga](https://github.com/ferferga)
|
||||||
|
- [bilde2910](https://github.com/bilde2910)
|
||||||
|
- [Daniel Hartung](https://github.com/dhartung)
|
||||||
|
|
||||||
# Emby Contributors
|
# Emby Contributors
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
<a href="https://github.com/jellyfin/jellyfin-web"><img alt="GPL 2.0 License" src="https://img.shields.io/github/license/jellyfin/jellyfin-web.svg"/></a>
|
<a href="https://github.com/jellyfin/jellyfin-web"><img alt="GPL 2.0 License" src="https://img.shields.io/github/license/jellyfin/jellyfin-web.svg"/></a>
|
||||||
<a href="https://github.com/jellyfin/jellyfin-web/releases"><img alt="Current Release" src="https://img.shields.io/github/release/jellyfin/jellyfin-web.svg"/></a>
|
<a href="https://github.com/jellyfin/jellyfin-web/releases"><img alt="Current Release" src="https://img.shields.io/github/release/jellyfin/jellyfin-web.svg"/></a>
|
||||||
|
<a href="https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/?utm_source=widget"><img src="https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-web/svg-badge.svg" alt="Translation status" /></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
10
package.json
10
package.json
|
@ -16,13 +16,15 @@
|
||||||
"webpack-merge": "^4.2.2"
|
"webpack-merge": "^4.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jstree": "^3.3.7",
|
"flv.js": "^1.5.0",
|
||||||
"jquery": "^3.4.1",
|
|
||||||
"hls.js": "^0.12.4",
|
"hls.js": "^0.12.4",
|
||||||
"howler": "^2.1.2",
|
"howler": "^2.1.2",
|
||||||
"swiper": "^4.5.0",
|
"jquery": "^3.4.1",
|
||||||
|
"jstree": "^3.3.7",
|
||||||
|
"libjass": "^0.11.0",
|
||||||
|
"shaka-player": "^2.5.5",
|
||||||
"sortablejs": "^1.9.0",
|
"sortablejs": "^1.9.0",
|
||||||
"libjass": "^0.11.0"
|
"swiper": "^3.4.2"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"serve": "webpack-dev-server --config webpack.dev.js --open",
|
"serve": "webpack-dev-server --config webpack.dev.js --open",
|
||||||
|
|
|
@ -4,6 +4,10 @@
|
||||||
// Use define from require.js not webpack's define
|
// Use define from require.js not webpack's define
|
||||||
var _define = window.define;
|
var _define = window.define;
|
||||||
|
|
||||||
|
// flvjs
|
||||||
|
var flvjs = require("flv.js");
|
||||||
|
_define("flvjs", function() { return flvjs; });
|
||||||
|
|
||||||
// jstree
|
// jstree
|
||||||
var jstree = require("jstree");
|
var jstree = require("jstree");
|
||||||
require("jstree/dist/themes/default/style.css");
|
require("jstree/dist/themes/default/style.css");
|
||||||
|
@ -21,6 +25,10 @@ _define("hlsjs", function() { return hlsjs; });
|
||||||
var howler = require("howler");
|
var howler = require("howler");
|
||||||
_define("howler", function() { return howler; });
|
_define("howler", function() { return howler; });
|
||||||
|
|
||||||
|
// shaka
|
||||||
|
var shaka = require("shaka-player");
|
||||||
|
_define("shaka", function() { return shaka; });
|
||||||
|
|
||||||
// swiper
|
// swiper
|
||||||
var swiper = require("swiper");
|
var swiper = require("swiper");
|
||||||
require("swiper/dist/css/swiper.min.css");
|
require("swiper/dist/css/swiper.min.css");
|
||||||
|
|
|
@ -13,8 +13,7 @@ define(["events", "globalize", "dom", "datetime", "userSettings", "serverNotific
|
||||||
if (entry.UserId && entry.UserPrimaryImageTag) {
|
if (entry.UserId && entry.UserPrimaryImageTag) {
|
||||||
html += '<i class="listItemIcon md-icon" style="width:2em!important;height:2em!important;padding:0;color:transparent;background-color:' + color + ";background-image:url('" + apiClient.getUserImageUrl(entry.UserId, {
|
html += '<i class="listItemIcon md-icon" style="width:2em!important;height:2em!important;padding:0;color:transparent;background-color:' + color + ";background-image:url('" + apiClient.getUserImageUrl(entry.UserId, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
tag: entry.UserPrimaryImageTag,
|
tag: entry.UserPrimaryImageTag
|
||||||
height: 40
|
|
||||||
}) + "');background-repeat:no-repeat;background-position:center center;background-size: cover;\">dvr</i>"
|
}) + "');background-repeat:no-repeat;background-position:center center;background-size: cover;\">dvr</i>"
|
||||||
} else {
|
} else {
|
||||||
html += '<i class="listItemIcon md-icon" style="background-color:' + color + '">' + icon + '</i>';
|
html += '<i class="listItemIcon md-icon" style="background-color:' + color + '">' + icon + '</i>';
|
||||||
|
|
|
@ -430,13 +430,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadUserSkinWithOptions(ctx) {
|
function loadUserSkinWithOptions(ctx) {
|
||||||
|
|
||||||
require(['queryString'], function (queryString) {
|
require(['queryString'], function (queryString) {
|
||||||
|
|
||||||
//var url = options.url;
|
|
||||||
//var index = url.indexOf('?');
|
|
||||||
var params = queryString.parse(ctx.querystring);
|
var params = queryString.parse(ctx.querystring);
|
||||||
|
|
||||||
skinManager.loadUserSkin({
|
skinManager.loadUserSkin({
|
||||||
start: params.start
|
start: params.start
|
||||||
});
|
});
|
||||||
|
@ -444,16 +439,13 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateRoles(apiClient, roles) {
|
function validateRoles(apiClient, roles) {
|
||||||
|
|
||||||
return Promise.all(roles.split(',').map(function (role) {
|
return Promise.all(roles.split(',').map(function (role) {
|
||||||
return validateRole(apiClient, role);
|
return validateRole(apiClient, role);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateRole(apiClient, role) {
|
function validateRole(apiClient, role) {
|
||||||
|
|
||||||
if (role === 'admin') {
|
if (role === 'admin') {
|
||||||
|
|
||||||
return apiClient.getCurrentUser().then(function (user) {
|
return apiClient.getCurrentUser().then(function (user) {
|
||||||
if (user.Policy.IsAdministrator) {
|
if (user.Policy.IsAdministrator) {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
|
@ -480,7 +472,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
route: route,
|
route: route,
|
||||||
path: ctx.path
|
path: ctx.path
|
||||||
};
|
};
|
||||||
//next();
|
|
||||||
|
|
||||||
ctx.handled = true;
|
ctx.handled = true;
|
||||||
}
|
}
|
||||||
|
@ -503,7 +494,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
}
|
}
|
||||||
|
|
||||||
function endsWith(str, srch) {
|
function endsWith(str, srch) {
|
||||||
|
|
||||||
return str.lastIndexOf(srch) === srch.length - 1;
|
return str.lastIndexOf(srch) === srch.length - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -513,6 +503,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
if (endsWith(baseRoute, '/') && !endsWith(baseRoute, '://')) {
|
if (endsWith(baseRoute, '/') && !endsWith(baseRoute, '://')) {
|
||||||
baseRoute = baseRoute.substring(0, baseRoute.length - 1);
|
baseRoute = baseRoute.substring(0, baseRoute.length - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function baseUrl() {
|
function baseUrl() {
|
||||||
return baseRoute;
|
return baseRoute;
|
||||||
}
|
}
|
||||||
|
@ -551,14 +542,11 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
}
|
}
|
||||||
|
|
||||||
function back() {
|
function back() {
|
||||||
|
|
||||||
page.back();
|
page.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
function canGoBack() {
|
function canGoBack() {
|
||||||
|
|
||||||
var curr = current();
|
var curr = current();
|
||||||
|
|
||||||
if (!curr) {
|
if (!curr) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -576,7 +564,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
}
|
}
|
||||||
|
|
||||||
function show(path, options) {
|
function show(path, options) {
|
||||||
|
|
||||||
if (path.indexOf('/') !== 0 && path.indexOf('://') === -1) {
|
if (path.indexOf('/') !== 0 && path.indexOf('://') === -1) {
|
||||||
path = '/' + path;
|
path = '/' + path;
|
||||||
}
|
}
|
||||||
|
@ -585,7 +572,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
path = path.replace(baseRoute, '');
|
path = path.replace(baseRoute, '');
|
||||||
|
|
||||||
if (currentRouteInfo && currentRouteInfo.path === path) {
|
if (currentRouteInfo && currentRouteInfo.path === path) {
|
||||||
|
|
||||||
// can't use this with home right now due to the back menu
|
// can't use this with home right now due to the back menu
|
||||||
if (currentRouteInfo.route.type !== 'home') {
|
if (currentRouteInfo.route.type !== 'home') {
|
||||||
loading.hide();
|
loading.hide();
|
||||||
|
@ -594,7 +580,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
resolveOnNextShow = resolve;
|
resolveOnNextShow = resolve;
|
||||||
page.show(path, options);
|
page.show(path, options);
|
||||||
});
|
});
|
||||||
|
@ -615,14 +600,12 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
}
|
}
|
||||||
|
|
||||||
function showItem(item, serverId, options) {
|
function showItem(item, serverId, options) {
|
||||||
|
|
||||||
if (typeof (item) === 'string') {
|
if (typeof (item) === 'string') {
|
||||||
var apiClient = serverId ? connectionManager.getApiClient(serverId) : connectionManager.currentApiClient();
|
var apiClient = serverId ? connectionManager.getApiClient(serverId) : connectionManager.currentApiClient();
|
||||||
apiClient.getItem(apiClient.getCurrentUserId(), item).then(function (item) {
|
apiClient.getItem(apiClient.getCurrentUserId(), item).then(function (item) {
|
||||||
appRouter.showItem(item, options);
|
appRouter.showItem(item, options);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (arguments.length === 2) {
|
if (arguments.length === 2) {
|
||||||
options = arguments[1];
|
options = arguments[1];
|
||||||
}
|
}
|
||||||
|
@ -637,7 +620,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
var allRoutes = [];
|
var allRoutes = [];
|
||||||
|
|
||||||
function addRoute(path, newRoute) {
|
function addRoute(path, newRoute) {
|
||||||
|
|
||||||
page(path, getHandler(newRoute));
|
page(path, getHandler(newRoute));
|
||||||
allRoutes.push(newRoute);
|
allRoutes.push(newRoute);
|
||||||
}
|
}
|
||||||
|
@ -649,7 +631,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
var backdropContainer;
|
var backdropContainer;
|
||||||
var backgroundContainer;
|
var backgroundContainer;
|
||||||
function setTransparency(level) {
|
function setTransparency(level) {
|
||||||
|
|
||||||
if (!backdropContainer) {
|
if (!backdropContainer) {
|
||||||
backdropContainer = document.querySelector('.backdropContainer');
|
backdropContainer = document.querySelector('.backdropContainer');
|
||||||
}
|
}
|
||||||
|
@ -662,8 +643,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
document.documentElement.classList.add('transparentDocument');
|
document.documentElement.classList.add('transparentDocument');
|
||||||
backgroundContainer.classList.add('backgroundContainer-transparent');
|
backgroundContainer.classList.add('backgroundContainer-transparent');
|
||||||
backdropContainer.classList.add('hide');
|
backdropContainer.classList.add('hide');
|
||||||
}
|
} else if (level === 'backdrop' || level === 1) {
|
||||||
else if (level === 'backdrop' || level === 1) {
|
|
||||||
backdrop.externalBackdrop(true);
|
backdrop.externalBackdrop(true);
|
||||||
document.documentElement.classList.add('transparentDocument');
|
document.documentElement.classList.add('transparentDocument');
|
||||||
backgroundContainer.classList.add('backgroundContainer-transparent');
|
backgroundContainer.classList.add('backgroundContainer-transparent');
|
||||||
|
@ -677,9 +657,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
}
|
}
|
||||||
|
|
||||||
function pushState(state, title, url) {
|
function pushState(state, title, url) {
|
||||||
|
|
||||||
state.navigate = false;
|
state.navigate = false;
|
||||||
|
|
||||||
page.pushState(state, title, url);
|
page.pushState(state, title, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -690,40 +668,24 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('Setting page base to ' + baseRoute);
|
console.log('Setting page base to ' + baseRoute);
|
||||||
|
|
||||||
page.base(baseRoute);
|
page.base(baseRoute);
|
||||||
}
|
}
|
||||||
|
|
||||||
setBaseRoute();
|
setBaseRoute();
|
||||||
|
|
||||||
function syncNow() {
|
|
||||||
require(['localsync'], function (localSync) {
|
|
||||||
localSync.sync();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function invokeShortcut(id) {
|
function invokeShortcut(id) {
|
||||||
|
|
||||||
if (id.indexOf('library-') === 0) {
|
if (id.indexOf('library-') === 0) {
|
||||||
|
|
||||||
id = id.replace('library-', '');
|
id = id.replace('library-', '');
|
||||||
|
|
||||||
id = id.split('_');
|
id = id.split('_');
|
||||||
|
|
||||||
appRouter.showItem(id[0], id[1]);
|
appRouter.showItem(id[0], id[1]);
|
||||||
|
|
||||||
} else if (id.indexOf('item-') === 0) {
|
} else if (id.indexOf('item-') === 0) {
|
||||||
|
|
||||||
id = id.replace('item-', '');
|
id = id.replace('item-', '');
|
||||||
|
|
||||||
id = id.split('_');
|
id = id.split('_');
|
||||||
|
|
||||||
appRouter.showItem(id[0], id[1]);
|
appRouter.showItem(id[0], id[1]);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
id = id.split('_');
|
id = id.split('_');
|
||||||
|
|
||||||
appRouter.show(appRouter.getRouteUrl(id[0], {
|
appRouter.show(appRouter.getRouteUrl(id[0], {
|
||||||
serverId: id[1]
|
serverId: id[1]
|
||||||
}));
|
}));
|
||||||
|
@ -740,6 +702,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
appRouter.canGoBack = canGoBack;
|
appRouter.canGoBack = canGoBack;
|
||||||
appRouter.current = current;
|
appRouter.current = current;
|
||||||
appRouter.beginConnectionWizard = beginConnectionWizard;
|
appRouter.beginConnectionWizard = beginConnectionWizard;
|
||||||
|
appRouter.invokeShortcut = invokeShortcut;
|
||||||
appRouter.showItem = showItem;
|
appRouter.showItem = showItem;
|
||||||
appRouter.setTransparency = setTransparency;
|
appRouter.setTransparency = setTransparency;
|
||||||
appRouter.getRoutes = getRoutes;
|
appRouter.getRoutes = getRoutes;
|
||||||
|
@ -751,7 +714,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
|
||||||
Backdrop: 1,
|
Backdrop: 1,
|
||||||
Full: 2
|
Full: 2
|
||||||
};
|
};
|
||||||
appRouter.invokeShortcut = invokeShortcut;
|
|
||||||
|
|
||||||
return appRouter;
|
return appRouter;
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,6 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
function getKey(name, userId) {
|
function getKey(name, userId) {
|
||||||
|
|
||||||
if (userId) {
|
if (userId) {
|
||||||
name = userId + '-' + name;
|
name = userId + '-' + name;
|
||||||
}
|
}
|
||||||
|
@ -15,20 +14,15 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
}
|
}
|
||||||
|
|
||||||
AppSettings.prototype.enableAutoLogin = function (val) {
|
AppSettings.prototype.enableAutoLogin = function (val) {
|
||||||
|
|
||||||
if (val != null) {
|
if (val != null) {
|
||||||
this.set('enableAutoLogin', val.toString());
|
this.set('enableAutoLogin', val.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.get('enableAutoLogin') !== 'false';
|
return this.get('enableAutoLogin') !== 'false';
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.enableAutomaticBitrateDetection = function (isInNetwork, mediaType, val) {
|
AppSettings.prototype.enableAutomaticBitrateDetection = function (isInNetwork, mediaType, val) {
|
||||||
|
|
||||||
var key = 'enableautobitratebitrate-' + mediaType + '-' + isInNetwork;
|
var key = 'enableautobitratebitrate-' + mediaType + '-' + isInNetwork;
|
||||||
|
|
||||||
if (val != null) {
|
if (val != null) {
|
||||||
|
|
||||||
if (isInNetwork && mediaType === 'Audio') {
|
if (isInNetwork && mediaType === 'Audio') {
|
||||||
val = true;
|
val = true;
|
||||||
}
|
}
|
||||||
|
@ -44,11 +38,8 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.maxStreamingBitrate = function (isInNetwork, mediaType, val) {
|
AppSettings.prototype.maxStreamingBitrate = function (isInNetwork, mediaType, val) {
|
||||||
|
|
||||||
var key = 'maxbitrate-' + mediaType + '-' + isInNetwork;
|
var key = 'maxbitrate-' + mediaType + '-' + isInNetwork;
|
||||||
|
|
||||||
if (val != null) {
|
if (val != null) {
|
||||||
|
|
||||||
if (isInNetwork && mediaType === 'Audio') {
|
if (isInNetwork && mediaType === 'Audio') {
|
||||||
// nothing to do, this is always a max value
|
// nothing to do, this is always a max value
|
||||||
} else {
|
} else {
|
||||||
|
@ -65,7 +56,6 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.maxStaticMusicBitrate = function (val) {
|
AppSettings.prototype.maxStaticMusicBitrate = function (val) {
|
||||||
|
|
||||||
if (val !== undefined) {
|
if (val !== undefined) {
|
||||||
this.set('maxStaticMusicBitrate', val);
|
this.set('maxStaticMusicBitrate', val);
|
||||||
}
|
}
|
||||||
|
@ -75,18 +65,15 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.maxChromecastBitrate = function (val) {
|
AppSettings.prototype.maxChromecastBitrate = function (val) {
|
||||||
|
|
||||||
if (val != null) {
|
if (val != null) {
|
||||||
this.set('chromecastBitrate1', val);
|
this.set('chromecastBitrate1', val);
|
||||||
}
|
}
|
||||||
|
|
||||||
val = this.get('chromecastBitrate1');
|
val = this.get('chromecastBitrate1');
|
||||||
|
|
||||||
return val ? parseInt(val) : null;
|
return val ? parseInt(val) : null;
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.syncOnlyOnWifi = function (val) {
|
AppSettings.prototype.syncOnlyOnWifi = function (val) {
|
||||||
|
|
||||||
if (val != null) {
|
if (val != null) {
|
||||||
this.set('syncOnlyOnWifi', val.toString());
|
this.set('syncOnlyOnWifi', val.toString());
|
||||||
}
|
}
|
||||||
|
@ -95,7 +82,6 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.syncPath = function (val) {
|
AppSettings.prototype.syncPath = function (val) {
|
||||||
|
|
||||||
if (val != null) {
|
if (val != null) {
|
||||||
this.set('syncPath', val);
|
this.set('syncPath', val);
|
||||||
}
|
}
|
||||||
|
@ -104,13 +90,11 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.cameraUploadServers = function (val) {
|
AppSettings.prototype.cameraUploadServers = function (val) {
|
||||||
|
|
||||||
if (val != null) {
|
if (val != null) {
|
||||||
this.set('cameraUploadServers', val.join(','));
|
this.set('cameraUploadServers', val.join(','));
|
||||||
}
|
}
|
||||||
|
|
||||||
val = this.get('cameraUploadServers');
|
val = this.get('cameraUploadServers');
|
||||||
|
|
||||||
if (val) {
|
if (val) {
|
||||||
return val.split(',');
|
return val.split(',');
|
||||||
}
|
}
|
||||||
|
@ -119,7 +103,6 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.runAtStartup = function (val) {
|
AppSettings.prototype.runAtStartup = function (val) {
|
||||||
|
|
||||||
if (val != null) {
|
if (val != null) {
|
||||||
this.set('runatstartup', val.toString());
|
this.set('runatstartup', val.toString());
|
||||||
}
|
}
|
||||||
|
@ -128,9 +111,7 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.set = function (name, value, userId) {
|
AppSettings.prototype.set = function (name, value, userId) {
|
||||||
|
|
||||||
var currentValue = this.get(name, userId);
|
var currentValue = this.get(name, userId);
|
||||||
|
|
||||||
appStorage.setItem(getKey(name, userId), value);
|
appStorage.setItem(getKey(name, userId), value);
|
||||||
|
|
||||||
if (currentValue !== value) {
|
if (currentValue !== value) {
|
||||||
|
@ -139,12 +120,10 @@ define(['appStorage', 'events'], function (appStorage, events) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.get = function (name, userId) {
|
AppSettings.prototype.get = function (name, userId) {
|
||||||
|
|
||||||
return appStorage.getItem(getKey(name, userId));
|
return appStorage.getItem(getKey(name, userId));
|
||||||
};
|
};
|
||||||
|
|
||||||
AppSettings.prototype.enableSystemExternalPlayers = function (val) {
|
AppSettings.prototype.enableSystemExternalPlayers = function (val) {
|
||||||
|
|
||||||
if (val != null) {
|
if (val != null) {
|
||||||
this.set('enableSystemExternalPlayers', val.toString());
|
this.set('enableSystemExternalPlayers', val.toString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
function enableAnimation(elem) {
|
function enableAnimation(elem) {
|
||||||
|
|
||||||
if (browser.slow) {
|
if (browser.slow) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -11,7 +10,6 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
}
|
}
|
||||||
|
|
||||||
function enableRotation() {
|
function enableRotation() {
|
||||||
|
|
||||||
if (browser.tv) {
|
if (browser.tv) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -25,17 +23,13 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
}
|
}
|
||||||
|
|
||||||
function Backdrop() {
|
function Backdrop() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Backdrop.prototype.load = function (url, parent, existingBackdropImage) {
|
Backdrop.prototype.load = function (url, parent, existingBackdropImage) {
|
||||||
|
|
||||||
var img = new Image();
|
var img = new Image();
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
img.onload = function () {
|
img.onload = function () {
|
||||||
|
|
||||||
if (self.isDestroyed) {
|
if (self.isDestroyed) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -75,6 +69,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
|
|
||||||
internalBackdrop(true);
|
internalBackdrop(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
img.src = url;
|
img.src = url;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -87,14 +82,12 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
};
|
};
|
||||||
|
|
||||||
Backdrop.prototype.destroy = function () {
|
Backdrop.prototype.destroy = function () {
|
||||||
|
|
||||||
this.isDestroyed = true;
|
this.isDestroyed = true;
|
||||||
this.cancelAnimation();
|
this.cancelAnimation();
|
||||||
};
|
};
|
||||||
|
|
||||||
var backdropContainer;
|
var backdropContainer;
|
||||||
function getBackdropContainer() {
|
function getBackdropContainer() {
|
||||||
|
|
||||||
if (!backdropContainer) {
|
if (!backdropContainer) {
|
||||||
backdropContainer = document.querySelector('.backdropContainer');
|
backdropContainer = document.querySelector('.backdropContainer');
|
||||||
}
|
}
|
||||||
|
@ -109,7 +102,6 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearBackdrop(clearAll) {
|
function clearBackdrop(clearAll) {
|
||||||
|
|
||||||
clearRotation();
|
clearRotation();
|
||||||
|
|
||||||
if (currentLoadingBackdrop) {
|
if (currentLoadingBackdrop) {
|
||||||
|
@ -123,6 +115,7 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
if (clearAll) {
|
if (clearAll) {
|
||||||
hasExternalBackdrop = false;
|
hasExternalBackdrop = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
internalBackdrop(false);
|
internalBackdrop(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,8 +126,8 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
}
|
}
|
||||||
return backgroundContainer;
|
return backgroundContainer;
|
||||||
}
|
}
|
||||||
function setBackgroundContainerBackgroundEnabled() {
|
|
||||||
|
|
||||||
|
function setBackgroundContainerBackgroundEnabled() {
|
||||||
if (hasInternalBackdrop || hasExternalBackdrop) {
|
if (hasInternalBackdrop || hasExternalBackdrop) {
|
||||||
getBackgroundContainer().classList.add('withBackdrop');
|
getBackgroundContainer().classList.add('withBackdrop');
|
||||||
} else {
|
} else {
|
||||||
|
@ -160,7 +153,6 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
|
|
||||||
var currentLoadingBackdrop;
|
var currentLoadingBackdrop;
|
||||||
function setBackdropImage(url) {
|
function setBackdropImage(url) {
|
||||||
|
|
||||||
if (currentLoadingBackdrop) {
|
if (currentLoadingBackdrop) {
|
||||||
currentLoadingBackdrop.destroy();
|
currentLoadingBackdrop.destroy();
|
||||||
currentLoadingBackdrop = null;
|
currentLoadingBackdrop = null;
|
||||||
|
@ -181,48 +173,25 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
currentLoadingBackdrop = instance;
|
currentLoadingBackdrop = instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
var standardWidths = [480, 720, 1280, 1440, 1920];
|
|
||||||
function getBackdropMaxWidth() {
|
|
||||||
|
|
||||||
var width = dom.getWindowSize().innerWidth;
|
|
||||||
|
|
||||||
if (standardWidths.indexOf(width) !== -1) {
|
|
||||||
return width;
|
|
||||||
}
|
|
||||||
|
|
||||||
var roundScreenTo = 100;
|
|
||||||
width = Math.floor(width / roundScreenTo) * roundScreenTo;
|
|
||||||
|
|
||||||
return Math.min(width, 1920);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getItemImageUrls(item, imageOptions) {
|
function getItemImageUrls(item, imageOptions) {
|
||||||
|
|
||||||
imageOptions = imageOptions || {};
|
imageOptions = imageOptions || {};
|
||||||
|
|
||||||
var apiClient = connectionManager.getApiClient(item.ServerId);
|
var apiClient = connectionManager.getApiClient(item.ServerId);
|
||||||
|
|
||||||
if (item.BackdropImageTags && item.BackdropImageTags.length > 0) {
|
if (item.BackdropImageTags && item.BackdropImageTags.length > 0) {
|
||||||
|
|
||||||
return item.BackdropImageTags.map(function (imgTag, index) {
|
return item.BackdropImageTags.map(function (imgTag, index) {
|
||||||
|
|
||||||
return apiClient.getScaledImageUrl(item.BackdropItemId || item.Id, Object.assign(imageOptions, {
|
return apiClient.getScaledImageUrl(item.BackdropItemId || item.Id, Object.assign(imageOptions, {
|
||||||
type: "Backdrop",
|
type: "Backdrop",
|
||||||
tag: imgTag,
|
tag: imgTag,
|
||||||
maxWidth: getBackdropMaxWidth(),
|
|
||||||
index: index
|
index: index
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) {
|
if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) {
|
||||||
|
|
||||||
return item.ParentBackdropImageTags.map(function (imgTag, index) {
|
return item.ParentBackdropImageTags.map(function (imgTag, index) {
|
||||||
|
|
||||||
return apiClient.getScaledImageUrl(item.ParentBackdropItemId, Object.assign(imageOptions, {
|
return apiClient.getScaledImageUrl(item.ParentBackdropItemId, Object.assign(imageOptions, {
|
||||||
type: "Backdrop",
|
type: "Backdrop",
|
||||||
tag: imgTag,
|
tag: imgTag,
|
||||||
maxWidth: getBackdropMaxWidth(),
|
|
||||||
index: index
|
index: index
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
@ -232,17 +201,13 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
}
|
}
|
||||||
|
|
||||||
function getImageUrls(items, imageOptions) {
|
function getImageUrls(items, imageOptions) {
|
||||||
|
|
||||||
var list = [];
|
var list = [];
|
||||||
|
|
||||||
var onImg = function (img) {
|
var onImg = function (img) {
|
||||||
list.push(img);
|
list.push(img);
|
||||||
};
|
};
|
||||||
|
|
||||||
for (var i = 0, length = items.length; i < length; i++) {
|
for (var i = 0, length = items.length; i < length; i++) {
|
||||||
|
|
||||||
var itemImages = getItemImageUrls(items[i], imageOptions);
|
var itemImages = getItemImageUrls(items[i], imageOptions);
|
||||||
|
|
||||||
itemImages.forEach(onImg);
|
itemImages.forEach(onImg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,12 +227,12 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
|
|
||||||
// If you don't care about the order of the elements inside
|
// If you don't care about the order of the elements inside
|
||||||
// the array, you should sort both arrays here.
|
// the array, you should sort both arrays here.
|
||||||
|
|
||||||
for (var i = 0; i < a.length; ++i) {
|
for (var i = 0; i < a.length; ++i) {
|
||||||
if (a[i] !== b[i]) {
|
if (a[i] !== b[i]) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,20 +240,16 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
var currentRotatingImages = [];
|
var currentRotatingImages = [];
|
||||||
var currentRotationIndex = -1;
|
var currentRotationIndex = -1;
|
||||||
function setBackdrops(items, imageOptions, enableImageRotation) {
|
function setBackdrops(items, imageOptions, enableImageRotation) {
|
||||||
|
|
||||||
var images = getImageUrls(items, imageOptions);
|
var images = getImageUrls(items, imageOptions);
|
||||||
|
|
||||||
if (images.length) {
|
if (images.length) {
|
||||||
|
|
||||||
startRotation(images, enableImageRotation);
|
startRotation(images, enableImageRotation);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
clearBackdrop();
|
clearBackdrop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function startRotation(images, enableImageRotation) {
|
function startRotation(images, enableImageRotation) {
|
||||||
|
|
||||||
if (arraysEqual(images, currentRotatingImages)) {
|
if (arraysEqual(images, currentRotatingImages)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -301,11 +262,11 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
if (images.length > 1 && enableImageRotation !== false && enableRotation()) {
|
if (images.length > 1 && enableImageRotation !== false && enableRotation()) {
|
||||||
rotationInterval = setInterval(onRotationInterval, 24000);
|
rotationInterval = setInterval(onRotationInterval, 24000);
|
||||||
}
|
}
|
||||||
|
|
||||||
onRotationInterval();
|
onRotationInterval();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onRotationInterval() {
|
function onRotationInterval() {
|
||||||
|
|
||||||
if (playbackManager.isPlayingLocally(['Video'])) {
|
if (playbackManager.isPlayingLocally(['Video'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -324,35 +285,29 @@ define(['browser', 'connectionManager', 'playbackManager', 'dom', 'css!./style']
|
||||||
if (interval) {
|
if (interval) {
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
rotationInterval = null;
|
rotationInterval = null;
|
||||||
currentRotatingImages = [];
|
currentRotatingImages = [];
|
||||||
currentRotationIndex = -1;
|
currentRotationIndex = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setBackdrop(url, imageOptions) {
|
function setBackdrop(url, imageOptions) {
|
||||||
|
if (url && typeof url !== 'string') {
|
||||||
if (url) {
|
|
||||||
if (typeof url !== 'string') {
|
|
||||||
url = getImageUrls([url], imageOptions)[0];
|
url = getImageUrls([url], imageOptions)[0];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
clearRotation();
|
clearRotation();
|
||||||
|
|
||||||
setBackdropImage(url);
|
setBackdropImage(url);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
clearBackdrop();
|
clearBackdrop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
||||||
setBackdrops: setBackdrops,
|
setBackdrops: setBackdrops,
|
||||||
setBackdrop: setBackdrop,
|
setBackdrop: setBackdrop,
|
||||||
clear: clearBackdrop,
|
clear: clearBackdrop,
|
||||||
externalBackdrop: externalBackdrop
|
externalBackdrop: externalBackdrop
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
|
@ -232,9 +232,10 @@ button {
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background-size: contain;
|
background-size: cover;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: center bottom;
|
background-position: center;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cardImage-img {
|
.cardImage-img {
|
||||||
|
|
|
@ -471,7 +471,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Thumb",
|
type: "Thumb",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ImageTags.Thumb
|
tag: item.ImageTags.Thumb
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -479,7 +478,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Banner",
|
type: "Banner",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ImageTags.Banner
|
tag: item.ImageTags.Banner
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -487,7 +485,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Disc",
|
type: "Disc",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ImageTags.Disc
|
tag: item.ImageTags.Disc
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -495,7 +492,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Logo",
|
type: "Logo",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ImageTags.Logo
|
tag: item.ImageTags.Logo
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -503,7 +499,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.ParentLogoItemId, {
|
imgUrl = apiClient.getScaledImageUrl(item.ParentLogoItemId, {
|
||||||
type: "Logo",
|
type: "Logo",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ParentLogoImageTag
|
tag: item.ParentLogoImageTag
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -511,7 +506,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.SeriesId, {
|
imgUrl = apiClient.getScaledImageUrl(item.SeriesId, {
|
||||||
type: "Thumb",
|
type: "Thumb",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.SeriesThumbImageTag
|
tag: item.SeriesThumbImageTag
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -519,7 +513,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, {
|
imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, {
|
||||||
type: "Thumb",
|
type: "Thumb",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ParentThumbImageTag
|
tag: item.ParentThumbImageTag
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -527,7 +520,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Backdrop",
|
type: "Backdrop",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.BackdropImageTags[0]
|
tag: item.BackdropImageTags[0]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -537,7 +529,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, {
|
imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, {
|
||||||
type: "Backdrop",
|
type: "Backdrop",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ParentBackdropImageTags[0]
|
tag: item.ParentBackdropImageTags[0]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -547,8 +538,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
maxHeight: height,
|
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ImageTags.Primary
|
tag: item.ImageTags.Primary
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -569,8 +558,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.PrimaryImageItemId || item.Id || item.ItemId, {
|
imgUrl = apiClient.getScaledImageUrl(item.PrimaryImageItemId || item.Id || item.ItemId, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
maxHeight: height,
|
|
||||||
maxWidth: width,
|
|
||||||
tag: item.PrimaryImageTag
|
tag: item.PrimaryImageTag
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -589,7 +576,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, {
|
imgUrl = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ParentPrimaryImageTag
|
tag: item.ParentPrimaryImageTag
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -597,7 +583,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.SeriesId, {
|
imgUrl = apiClient.getScaledImageUrl(item.SeriesId, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.SeriesPrimaryImageTag
|
tag: item.SeriesPrimaryImageTag
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -607,8 +592,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.AlbumId, {
|
imgUrl = apiClient.getScaledImageUrl(item.AlbumId, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
maxHeight: height,
|
|
||||||
maxWidth: width,
|
|
||||||
tag: item.AlbumPrimaryImageTag
|
tag: item.AlbumPrimaryImageTag
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -623,7 +606,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Thumb",
|
type: "Thumb",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ImageTags.Thumb
|
tag: item.ImageTags.Thumb
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -632,7 +614,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Backdrop",
|
type: "Backdrop",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.BackdropImageTags[0]
|
tag: item.BackdropImageTags[0]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -640,7 +621,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
imgUrl = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Thumb",
|
type: "Thumb",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ImageTags.Thumb
|
tag: item.ImageTags.Thumb
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -648,7 +628,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.SeriesId, {
|
imgUrl = apiClient.getScaledImageUrl(item.SeriesId, {
|
||||||
type: "Thumb",
|
type: "Thumb",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.SeriesThumbImageTag
|
tag: item.SeriesThumbImageTag
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -656,7 +635,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, {
|
imgUrl = apiClient.getScaledImageUrl(item.ParentThumbItemId, {
|
||||||
type: "Thumb",
|
type: "Thumb",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ParentThumbImageTag
|
tag: item.ParentThumbImageTag
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -664,7 +642,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana
|
||||||
|
|
||||||
imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, {
|
imgUrl = apiClient.getScaledImageUrl(item.ParentBackdropItemId, {
|
||||||
type: "Backdrop",
|
type: "Backdrop",
|
||||||
maxWidth: width,
|
|
||||||
tag: item.ParentBackdropImageTags[0]
|
tag: item.ParentBackdropImageTags[0]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -147,15 +147,14 @@
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.paper-icon-button-light > img {
|
.paper-icon-button-light > div {
|
||||||
width: 1.72em;
|
|
||||||
/* Can't use 100% height or it will stretch past the boundaries in safari */
|
|
||||||
/*height: 100%;*/
|
|
||||||
max-height: 100%;
|
max-height: 100%;
|
||||||
/* Make sure its on top of the ripple */
|
transform: scale(1.8);
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
display: inline;
|
||||||
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.emby-button-foreground {
|
.emby-button-foreground {
|
||||||
|
|
|
@ -560,31 +560,31 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la
|
||||||
|
|
||||||
if (enableScrollX()) {
|
if (enableScrollX()) {
|
||||||
html += '<div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale" data-mousewheel="false" data-centerfocus="true" data-scrollbuttons="false">';
|
html += '<div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale" data-mousewheel="false" data-centerfocus="true" data-scrollbuttons="false">';
|
||||||
html += '<div class="padded-left padded-right padded-top padded-bottom scrollSlider focuscontainer-x">';
|
html += '<div class="padded-top padded-bottom scrollSlider focuscontainer-x">';
|
||||||
} else {
|
} else {
|
||||||
html += '<div class="padded-left padded-right padded-top padded-bottom focuscontainer-x">';
|
html += '<div class="padded-top padded-bottom focuscontainer-x">';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '<a style="margin-left:.8em;margin-right:0;" is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {
|
html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {
|
||||||
serverId: apiClient.serverId(),
|
serverId: apiClient.serverId(),
|
||||||
section: 'programs'
|
section: 'programs'
|
||||||
}) + '" class="raised"><span>' + globalize.translate('Programs') + '</span></a>';
|
}) + '" class="raised"><span>' + globalize.translate('Programs') + '</span></a>';
|
||||||
|
|
||||||
html += '<a style="margin-left:.5em;margin-right:0;" is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {
|
html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {
|
||||||
serverId: apiClient.serverId(),
|
serverId: apiClient.serverId(),
|
||||||
section: 'guide'
|
section: 'guide'
|
||||||
}) + '" class="raised"><span>' + globalize.translate('Guide') + '</span></a>';
|
}) + '" class="raised"><span>' + globalize.translate('Guide') + '</span></a>';
|
||||||
|
|
||||||
html += '<a style="margin-left:.5em;margin-right:0;" is="emby-linkbutton" href="' + appRouter.getRouteUrl('recordedtv', {
|
html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl('recordedtv', {
|
||||||
serverId: apiClient.serverId()
|
serverId: apiClient.serverId()
|
||||||
}) + '" class="raised"><span>' + globalize.translate('Recordings') + '</span></a>';
|
}) + '" class="raised"><span>' + globalize.translate('Recordings') + '</span></a>';
|
||||||
|
|
||||||
html += '<a style="margin-left:.5em;margin-right:0;" is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {
|
html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {
|
||||||
serverId: apiClient.serverId(),
|
serverId: apiClient.serverId(),
|
||||||
section: 'dvrschedule'
|
section: 'dvrschedule'
|
||||||
}) + '" class="raised"><span>' + globalize.translate('Schedule') + '</span></a>';
|
}) + '" class="raised"><span>' + globalize.translate('Schedule') + '</span></a>';
|
||||||
|
|
||||||
html += '<a style="margin-left:.5em;margin-right:0;" is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {
|
html += '<a is="emby-linkbutton" href="' + appRouter.getRouteUrl('livetv', {
|
||||||
serverId: apiClient.serverId(),
|
serverId: apiClient.serverId(),
|
||||||
section: 'seriesrecording'
|
section: 'seriesrecording'
|
||||||
}) + '" class="raised"><span>' + globalize.translate('Series') + '</span></a>';
|
}) + '" class="raised"><span>' + globalize.translate('Series') + '</span></a>';
|
||||||
|
|
|
@ -1192,24 +1192,26 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
}
|
}
|
||||||
|
|
||||||
var trackElement = null;
|
var trackElement = null;
|
||||||
var expectedId = 'manualTrack' + track.Index;
|
if (videoElement.textTracks && videoElement.textTracks.length > 0) {
|
||||||
|
trackElement = videoElement.textTracks[0];
|
||||||
|
|
||||||
// get list of tracks
|
// This throws an error in IE, but is fine in chrome
|
||||||
var allTracks = videoElement.textTracks;
|
// In IE it's not necessary anyway because changing the src seems to be enough
|
||||||
for (var i = 0; i < allTracks.length; i++) {
|
try {
|
||||||
|
trackElement.mode = 'showing';
|
||||||
|
while (trackElement.cues.length) {
|
||||||
|
trackElement.removeCue(trackElement.cues[0]);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log('Error removing cue from textTrack');
|
||||||
|
}
|
||||||
|
|
||||||
var currentTrack = allTracks[i];
|
trackElement.mode = 'disabled';
|
||||||
|
|
||||||
if (currentTrack.label === expectedId) {
|
|
||||||
trackElement = currentTrack;
|
|
||||||
break;
|
|
||||||
} else {
|
} else {
|
||||||
currentTrack.mode = 'disabled';
|
// There is a function addTextTrack but no function for removeTextTrack
|
||||||
|
// Therefore we add ONE element and replace its cue data
|
||||||
|
trackElement = videoElement.addTextTrack('subtitles', 'manualTrack', 'und');
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!trackElement) {
|
|
||||||
trackElement = videoElement.addTextTrack('subtitles', 'manualTrack' + track.Index, track.Language || 'und');
|
|
||||||
|
|
||||||
// download the track json
|
// download the track json
|
||||||
fetchSubtitles(track, item).then(function (data) {
|
fetchSubtitles(track, item).then(function (data) {
|
||||||
|
@ -1227,9 +1229,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
});
|
});
|
||||||
trackElement.mode = 'showing';
|
trackElement.mode = 'showing';
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
trackElement.mode = 'showing';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateSubtitleText(timeMs) {
|
function updateSubtitleText(timeMs) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter', 'playbackManager', 'loading', 'appSettings', 'browser', 'actionsheet'], function (appHost, globalize, connectionManager, itemHelper, appRouter, playbackManager, loading, appSettings, browser, actionsheet) {
|
define(["apphost", "globalize", "connectionManager", "itemHelper", "appRouter", "playbackManager", "loading", "appSettings", "browser", "actionsheet"], function (appHost, globalize, connectionManager, itemHelper, appRouter, playbackManager, loading, appSettings, browser, actionsheet) {
|
||||||
'use strict';
|
"use strict";
|
||||||
|
|
||||||
function getCommands(options) {
|
function getCommands(options) {
|
||||||
var item = options.item;
|
var item = options.item;
|
||||||
|
@ -9,18 +9,20 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
var user = options.user;
|
var user = options.user;
|
||||||
var commands = [];
|
var commands = [];
|
||||||
|
|
||||||
if (canPlay && item.MediaType !== 'Photo') {
|
if (canPlay && item.MediaType !== "Photo") {
|
||||||
if (options.play !== false) {
|
if (options.play !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('Play'),
|
name: globalize.translate("Play"),
|
||||||
id: 'resume'
|
id: "resume",
|
||||||
|
icon: "play_arrow"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.playAllFromHere && item.Type !== 'Program' && item.Type !== 'TvChannel') {
|
if (options.playAllFromHere && item.Type !== "Program" && item.Type !== "TvChannel") {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('PlayAllFromHere'),
|
name: globalize.translate("PlayAllFromHere"),
|
||||||
id: 'playallfromhere'
|
id: "playallfromhere",
|
||||||
|
icon: "play_arrow"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,22 +30,24 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
if (playbackManager.canQueue(item)) {
|
if (playbackManager.canQueue(item)) {
|
||||||
if (options.queue !== false) {
|
if (options.queue !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('AddToPlayQueue'),
|
name: globalize.translate("AddToPlayQueue"),
|
||||||
id: 'queue'
|
id: "queue",
|
||||||
|
icon: "playlist_add"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.queue !== false) {
|
if (options.queue !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('PlayNext'),
|
name: globalize.translate("PlayNext"),
|
||||||
id: 'queuenext'
|
id: "queuenext",
|
||||||
|
icon: "playlist_add"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (options.queueAllFromHere) {
|
//if (options.queueAllFromHere) {
|
||||||
// commands.push({
|
// commands.push({
|
||||||
// name: globalize.translate('QueueAllFromHere'),
|
// name: globalize.translate("QueueAllFromHere"),
|
||||||
// id: 'queueallfromhere'
|
// id: "queueallfromhere"
|
||||||
// });
|
// });
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
@ -51,11 +55,12 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
|
|
||||||
|
|
||||||
if (item.IsFolder || item.Type === "MusicArtist" || item.Type === "MusicGenre") {
|
if (item.IsFolder || item.Type === "MusicArtist" || item.Type === "MusicGenre") {
|
||||||
if (item.CollectionType !== 'livetv') {
|
if (item.CollectionType !== "livetv") {
|
||||||
if (options.shuffle !== false) {
|
if (options.shuffle !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('Shuffle'),
|
name: globalize.translate("Shuffle"),
|
||||||
id: 'shuffle'
|
id: "shuffle",
|
||||||
|
icon: "shuffle"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,8 +69,9 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
if (item.MediaType === "Audio" || item.Type === "MusicAlbum" || item.Type === "MusicArtist" || item.Type === "MusicGenre") {
|
if (item.MediaType === "Audio" || item.Type === "MusicAlbum" || item.Type === "MusicArtist" || item.Type === "MusicGenre") {
|
||||||
if (options.instantMix !== false && !itemHelper.isLocalItem(item)) {
|
if (options.instantMix !== false && !itemHelper.isLocalItem(item)) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('InstantMix'),
|
name: globalize.translate("InstantMix"),
|
||||||
id: 'instantmix'
|
id: "instantmix",
|
||||||
|
icon: "shuffle"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,75 +85,91 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
if (!restrictOptions) {
|
if (!restrictOptions) {
|
||||||
if (itemHelper.supportsAddingToCollection(item)) {
|
if (itemHelper.supportsAddingToCollection(item)) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('AddToCollection'),
|
name: globalize.translate("AddToCollection"),
|
||||||
id: 'addtocollection'
|
id: "addtocollection",
|
||||||
|
icon: "playlist_add"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemHelper.supportsAddingToPlaylist(item)) {
|
if (itemHelper.supportsAddingToPlaylist(item)) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('AddToPlaylist'),
|
name: globalize.translate("AddToPlaylist"),
|
||||||
id: 'addtoplaylist'
|
id: "addtoplaylist",
|
||||||
|
icon: "playlist_add"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((item.Type === 'Timer') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) {
|
if ((item.Type === "Timer") && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('CancelRecording'),
|
name: globalize.translate("CancelRecording"),
|
||||||
id: 'canceltimer'
|
id: "canceltimer",
|
||||||
|
icon: "cancel"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((item.Type === 'Recording' && item.Status === 'InProgress') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) {
|
if ((item.Type === "Recording" && item.Status === "InProgress") && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('CancelRecording'),
|
name: globalize.translate("CancelRecording"),
|
||||||
id: 'canceltimer'
|
id: "canceltimer",
|
||||||
|
icon: "cancel"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((item.Type === 'SeriesTimer') && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) {
|
if ((item.Type === "SeriesTimer") && user.Policy.EnableLiveTvManagement && options.cancelTimer !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('CancelSeries'),
|
name: globalize.translate("CancelSeries"),
|
||||||
id: 'cancelseriestimer'
|
id: "cancelseriestimer",
|
||||||
|
icon: "cancel"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.CanDelete && options.deleteItem !== false) {
|
if (item.CanDelete && options.deleteItem !== false) {
|
||||||
|
|
||||||
if (item.Type === 'Playlist' || item.Type === 'BoxSet') {
|
if (item.Type === "Playlist" || item.Type === "BoxSet") {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('Delete'),
|
name: globalize.translate("Delete"),
|
||||||
id: 'delete'
|
id: "delete",
|
||||||
|
icon: "delete"
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('DeleteMedia'),
|
name: globalize.translate("DeleteMedia"),
|
||||||
id: 'delete'
|
id: "delete",
|
||||||
|
icon: "delete"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Books are promoted to major download Button and therefor excluded in the context menu
|
// Books are promoted to major download Button and therefor excluded in the context menu
|
||||||
if ((item.CanDownload && appHost.supports('filedownload')) && item.Type !== "Book") {
|
if ((item.CanDownload && appHost.supports("filedownload")) && item.Type !== "Book") {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('Download'),
|
name: globalize.translate("Download"),
|
||||||
id: 'download'
|
id: "download",
|
||||||
|
icon: "file_download"
|
||||||
});
|
});
|
||||||
|
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('CopyStreamURL'),
|
name: globalize.translate("CopyStreamURL"),
|
||||||
id: 'copy-stream'
|
id: "copy-stream",
|
||||||
|
icon: "content_copy"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (commands.length) {
|
||||||
|
commands.push({
|
||||||
|
divider: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var canEdit = itemHelper.canEdit(user, item);
|
var canEdit = itemHelper.canEdit(user, item);
|
||||||
if (canEdit) {
|
if (canEdit) {
|
||||||
if (options.edit !== false && item.Type !== 'SeriesTimer') {
|
if (options.edit !== false && item.Type !== "SeriesTimer") {
|
||||||
var text = (item.Type === 'Timer' || item.Type === 'SeriesTimer') ? globalize.translate('Edit') : globalize.translate('EditMetadata');
|
var text = (item.Type === "Timer" || item.Type === "SeriesTimer") ? globalize.translate("Edit") : globalize.translate("EditMetadata");
|
||||||
commands.push({
|
commands.push({
|
||||||
name: text,
|
name: text,
|
||||||
id: 'edit'
|
id: "edit",
|
||||||
|
icon: "edit"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,18 +177,20 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
if (itemHelper.canEditImages(user, item)) {
|
if (itemHelper.canEditImages(user, item)) {
|
||||||
if (options.editImages !== false) {
|
if (options.editImages !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('EditImages'),
|
name: globalize.translate("EditImages"),
|
||||||
id: 'editimages'
|
id: "editimages",
|
||||||
|
icon: "edit"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canEdit) {
|
if (canEdit) {
|
||||||
if (item.MediaType === 'Video' && item.Type !== 'TvChannel' && item.Type !== 'Program' && item.LocationType !== 'Virtual' && !(item.Type === 'Recording' && item.Status !== 'Completed')) {
|
if (item.MediaType === "Video" && item.Type !== "TvChannel" && item.Type !== "Program" && item.LocationType !== "Virtual" && !(item.Type === "Recording" && item.Status !== "Completed")) {
|
||||||
if (options.editSubtitles !== false) {
|
if (options.editSubtitles !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('EditSubtitles'),
|
name: globalize.translate("EditSubtitles"),
|
||||||
id: 'editsubtitles'
|
id: "editsubtitles",
|
||||||
|
icon: "closed_caption"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,8 +199,9 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
if (options.identify !== false) {
|
if (options.identify !== false) {
|
||||||
if (itemHelper.canIdentify(user, item)) {
|
if (itemHelper.canIdentify(user, item)) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('Identify'),
|
name: globalize.translate("Identify"),
|
||||||
id: 'identify'
|
id: "identify",
|
||||||
|
icon: "edit"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -184,48 +209,54 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
if (item.MediaSources) {
|
if (item.MediaSources) {
|
||||||
if (options.moremediainfo !== false) {
|
if (options.moremediainfo !== false) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('MoreMediaInfo'),
|
name: globalize.translate("MoreMediaInfo"),
|
||||||
id: 'moremediainfo'
|
id: "moremediainfo",
|
||||||
|
icon: "info"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Type === 'Program' && options.record !== false) {
|
if (item.Type === "Program" && options.record !== false) {
|
||||||
if (item.TimerId) {
|
if (item.TimerId) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: Globalize.translate('ManageRecording'),
|
name: Globalize.translate("ManageRecording"),
|
||||||
id: 'record'
|
id: "record",
|
||||||
|
icon: "fiber_manual_record"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Type === 'Program' && options.record !== false) {
|
if (item.Type === "Program" && options.record !== false) {
|
||||||
if (!item.TimerId) {
|
if (!item.TimerId) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: Globalize.translate('Record'),
|
name: Globalize.translate("Record"),
|
||||||
id: 'record'
|
id: "record",
|
||||||
|
icon: "fiber_manual_record"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemHelper.canRefreshMetadata(item, user)) {
|
if (itemHelper.canRefreshMetadata(item, user)) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('RefreshMetadata'),
|
name: globalize.translate("RefreshMetadata"),
|
||||||
id: 'refresh'
|
id: "refresh",
|
||||||
|
icon: "refresh"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.PlaylistItemId && options.playlistId) {
|
if (item.PlaylistItemId && options.playlistId) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('RemoveFromPlaylist'),
|
name: globalize.translate("RemoveFromPlaylist"),
|
||||||
id: 'removefromplaylist'
|
id: "removefromplaylist",
|
||||||
|
icon: "remove"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.collectionId) {
|
if (options.collectionId) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('RemoveFromCollection'),
|
name: globalize.translate("RemoveFromCollection"),
|
||||||
id: 'removefromcollection'
|
id: "removefromcollection",
|
||||||
|
icon: "remove"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,8 +264,9 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
if (options.share === true) {
|
if (options.share === true) {
|
||||||
if (itemHelper.canShare(item, user)) {
|
if (itemHelper.canShare(item, user)) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('Share'),
|
name: globalize.translate("Share"),
|
||||||
id: 'share'
|
id: "share",
|
||||||
|
icon: "share"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -243,23 +275,26 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
if (options.sync !== false) {
|
if (options.sync !== false) {
|
||||||
if (itemHelper.canSync(user, item)) {
|
if (itemHelper.canSync(user, item)) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: globalize.translate('Sync'),
|
name: globalize.translate("Sync"),
|
||||||
id: 'sync'
|
id: "sync",
|
||||||
|
icon: "sync"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.openAlbum !== false && item.AlbumId && item.MediaType !== 'Photo') {
|
if (options.openAlbum !== false && item.AlbumId && item.MediaType !== "Photo") {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: Globalize.translate('ViewAlbum'),
|
name: Globalize.translate("ViewAlbum"),
|
||||||
id: 'album'
|
id: "album",
|
||||||
|
icon: "album"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.openArtist !== false && item.ArtistItems && item.ArtistItems.length) {
|
if (options.openArtist !== false && item.ArtistItems && item.ArtistItems.length) {
|
||||||
commands.push({
|
commands.push({
|
||||||
name: Globalize.translate('ViewArtist'),
|
name: Globalize.translate("ViewArtist"),
|
||||||
id: 'artist'
|
id: "artist",
|
||||||
|
icon: "person"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,24 +318,24 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case 'addtocollection':
|
case "addtocollection":
|
||||||
require(['collectionEditor'], function (collectionEditor) {
|
require(["collectionEditor"], function (collectionEditor) {
|
||||||
new collectionEditor().show({
|
new collectionEditor().show({
|
||||||
items: [itemId],
|
items: [itemId],
|
||||||
serverId: serverId
|
serverId: serverId
|
||||||
}).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
}).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'addtoplaylist':
|
case "addtoplaylist":
|
||||||
require(['playlistEditor'], function (playlistEditor) {
|
require(["playlistEditor"], function (playlistEditor) {
|
||||||
new playlistEditor().show({
|
new playlistEditor().show({
|
||||||
items: [itemId],
|
items: [itemId],
|
||||||
serverId: serverId
|
serverId: serverId
|
||||||
}).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
}).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'download':
|
case "download":
|
||||||
require(['fileDownloader'], function (fileDownloader) {
|
require(["fileDownloader"], function (fileDownloader) {
|
||||||
var downloadHref = apiClient.getItemDownloadUrl(itemId);
|
var downloadHref = apiClient.getItemDownloadUrl(itemId);
|
||||||
fileDownloader.download([{
|
fileDownloader.download([{
|
||||||
url: downloadHref,
|
url: downloadHref,
|
||||||
|
@ -310,7 +345,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
getResolveFunction(getResolveFunction(resolve, id), id)();
|
getResolveFunction(getResolveFunction(resolve, id), id)();
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'copy-stream':
|
case "copy-stream":
|
||||||
var downloadHref = apiClient.getItemDownloadUrl(itemId);
|
var downloadHref = apiClient.getItemDownloadUrl(itemId);
|
||||||
var textArea = document.createElement("textarea");
|
var textArea = document.createElement("textarea");
|
||||||
textArea.value = downloadHref;
|
textArea.value = downloadHref;
|
||||||
|
@ -318,10 +353,10 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
textArea.focus();
|
textArea.focus();
|
||||||
textArea.select();
|
textArea.select();
|
||||||
try {
|
try {
|
||||||
document.execCommand('copy');
|
document.execCommand("copy");
|
||||||
|
|
||||||
require(['toast'], function (toast) {
|
require(["toast"], function (toast) {
|
||||||
toast(globalize.translate('CopyStreamURLSuccess'));
|
toast(globalize.translate("CopyStreamURLSuccess"));
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Failed to copy to clipboard");
|
console.error("Failed to copy to clipboard");
|
||||||
|
@ -330,118 +365,118 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
document.body.removeChild(textArea);
|
document.body.removeChild(textArea);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'editsubtitles':
|
case "editsubtitles":
|
||||||
require(['subtitleEditor'], function (subtitleEditor) {
|
require(["subtitleEditor"], function (subtitleEditor) {
|
||||||
subtitleEditor.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
subtitleEditor.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'edit':
|
case "edit":
|
||||||
editItem(apiClient, item).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
editItem(apiClient, item).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
||||||
break;
|
break;
|
||||||
case 'editimages':
|
case "editimages":
|
||||||
require(['imageEditor'], function (imageEditor) {
|
require(["imageEditor"], function (imageEditor) {
|
||||||
imageEditor.show({
|
imageEditor.show({
|
||||||
itemId: itemId,
|
itemId: itemId,
|
||||||
serverId: serverId
|
serverId: serverId
|
||||||
}).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
}).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'identify':
|
case "identify":
|
||||||
require(['itemIdentifier'], function (itemIdentifier) {
|
require(["itemIdentifier"], function (itemIdentifier) {
|
||||||
itemIdentifier.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
itemIdentifier.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'moremediainfo':
|
case "moremediainfo":
|
||||||
require(['itemMediaInfo'], function (itemMediaInfo) {
|
require(["itemMediaInfo"], function (itemMediaInfo) {
|
||||||
itemMediaInfo.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
itemMediaInfo.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'refresh':
|
case "refresh":
|
||||||
refresh(apiClient, item);
|
refresh(apiClient, item);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'open':
|
case "open":
|
||||||
appRouter.showItem(item);
|
appRouter.showItem(item);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'play':
|
case "play":
|
||||||
play(item, false);
|
play(item, false);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'resume':
|
case "resume":
|
||||||
play(item, true);
|
play(item, true);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'queue':
|
case "queue":
|
||||||
play(item, false, true);
|
play(item, false, true);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'queuenext':
|
case "queuenext":
|
||||||
play(item, false, true, true);
|
play(item, false, true, true);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'record':
|
case "record":
|
||||||
require(['recordingCreator'], function (recordingCreator) {
|
require(["recordingCreator"], function (recordingCreator) {
|
||||||
recordingCreator.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
recordingCreator.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'shuffle':
|
case "shuffle":
|
||||||
playbackManager.shuffle(item);
|
playbackManager.shuffle(item);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'instantmix':
|
case "instantmix":
|
||||||
playbackManager.instantMix(item);
|
playbackManager.instantMix(item);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'delete':
|
case "delete":
|
||||||
deleteItem(apiClient, item).then(getResolveFunction(resolve, id, true, true), getResolveFunction(resolve, id));
|
deleteItem(apiClient, item).then(getResolveFunction(resolve, id, true, true), getResolveFunction(resolve, id));
|
||||||
break;
|
break;
|
||||||
case 'share':
|
case "share":
|
||||||
navigator.share({
|
navigator.share({
|
||||||
title: item.Name,
|
title: item.Name,
|
||||||
text: item.Overview,
|
text: item.Overview,
|
||||||
url: "https://github.com/jellyfin/jellyfin"
|
url: "https://github.com/jellyfin/jellyfin"
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'album':
|
case "album":
|
||||||
appRouter.showItem(item.AlbumId, item.ServerId);
|
appRouter.showItem(item.AlbumId, item.ServerId);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'artist':
|
case "artist":
|
||||||
appRouter.showItem(item.ArtistItems[0].Id, item.ServerId);
|
appRouter.showItem(item.ArtistItems[0].Id, item.ServerId);
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'playallfromhere':
|
case "playallfromhere":
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'queueallfromhere':
|
case "queueallfromhere":
|
||||||
getResolveFunction(resolve, id)();
|
getResolveFunction(resolve, id)();
|
||||||
break;
|
break;
|
||||||
case 'removefromplaylist':
|
case "removefromplaylist":
|
||||||
apiClient.ajax({
|
apiClient.ajax({
|
||||||
url: apiClient.getUrl('Playlists/' + options.playlistId + '/Items', {
|
url: apiClient.getUrl("Playlists/" + options.playlistId + "/Items", {
|
||||||
EntryIds: [item.PlaylistItemId].join(',')
|
EntryIds: [item.PlaylistItemId].join(",")
|
||||||
}),
|
}),
|
||||||
type: 'DELETE'
|
type: "DELETE"
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
getResolveFunction(resolve, id, true)();
|
getResolveFunction(resolve, id, true)();
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'removefromcollection':
|
case "removefromcollection":
|
||||||
apiClient.ajax({
|
apiClient.ajax({
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
url: apiClient.getUrl("Collections/" + options.collectionId + "/Items", {
|
url: apiClient.getUrl("Collections/" + options.collectionId + "/Items", {
|
||||||
|
|
||||||
Ids: [item.Id].join(',')
|
Ids: [item.Id].join(",")
|
||||||
})
|
})
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
getResolveFunction(resolve, id, true)();
|
getResolveFunction(resolve, id, true)();
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'canceltimer':
|
case "canceltimer":
|
||||||
deleteTimer(apiClient, item, resolve, id);
|
deleteTimer(apiClient, item, resolve, id);
|
||||||
break;
|
break;
|
||||||
case 'cancelseriestimer':
|
case "cancelseriestimer":
|
||||||
deleteSeriesTimer(apiClient, item, resolve, id);
|
deleteSeriesTimer(apiClient, item, resolve, id);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -452,7 +487,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteTimer(apiClient, item, resolve, command) {
|
function deleteTimer(apiClient, item, resolve, command) {
|
||||||
require(['recordingHelper'], function (recordingHelper) {
|
require(["recordingHelper"], function (recordingHelper) {
|
||||||
var timerId = item.TimerId || item.Id;
|
var timerId = item.TimerId || item.Id;
|
||||||
recordingHelper.cancelTimerWithConfirmation(timerId, item.ServerId).then(function () {
|
recordingHelper.cancelTimerWithConfirmation(timerId, item.ServerId).then(function () {
|
||||||
getResolveFunction(resolve, command, true)();
|
getResolveFunction(resolve, command, true)();
|
||||||
|
@ -461,7 +496,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteSeriesTimer(apiClient, item, resolve, command) {
|
function deleteSeriesTimer(apiClient, item, resolve, command) {
|
||||||
require(['recordingHelper'], function (recordingHelper) {
|
require(["recordingHelper"], function (recordingHelper) {
|
||||||
recordingHelper.cancelSeriesTimerWithConfirmation(item.Id, item.ServerId).then(function () {
|
recordingHelper.cancelSeriesTimerWithConfirmation(item.Id, item.ServerId).then(function () {
|
||||||
getResolveFunction(resolve, command, true)();
|
getResolveFunction(resolve, command, true)();
|
||||||
});
|
});
|
||||||
|
@ -469,14 +504,14 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
}
|
}
|
||||||
|
|
||||||
function play(item, resume, queue, queueNext) {
|
function play(item, resume, queue, queueNext) {
|
||||||
var method = queue ? (queueNext ? 'queueNext' : 'queue') : 'play';
|
var method = queue ? (queueNext ? "queueNext" : "queue") : "play";
|
||||||
|
|
||||||
var startPosition = 0;
|
var startPosition = 0;
|
||||||
if (resume && item.UserData && item.UserData.PlaybackPositionTicks) {
|
if (resume && item.UserData && item.UserData.PlaybackPositionTicks) {
|
||||||
startPosition = item.UserData.PlaybackPositionTicks;
|
startPosition = item.UserData.PlaybackPositionTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Type === 'Program') {
|
if (item.Type === "Program") {
|
||||||
playbackManager[method]({
|
playbackManager[method]({
|
||||||
ids: [item.ChannelId],
|
ids: [item.ChannelId],
|
||||||
startPositionTicks: startPosition,
|
startPositionTicks: startPosition,
|
||||||
|
@ -494,16 +529,16 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
var serverId = apiClient.serverInfo().Id;
|
var serverId = apiClient.serverInfo().Id;
|
||||||
|
|
||||||
if (item.Type === 'Timer') {
|
if (item.Type === "Timer") {
|
||||||
require(['recordingEditor'], function (recordingEditor) {
|
require(["recordingEditor"], function (recordingEditor) {
|
||||||
recordingEditor.show(item.Id, serverId).then(resolve, reject);
|
recordingEditor.show(item.Id, serverId).then(resolve, reject);
|
||||||
});
|
});
|
||||||
} else if (item.Type === 'SeriesTimer') {
|
} else if (item.Type === "SeriesTimer") {
|
||||||
require(['seriesRecordingEditor'], function (recordingEditor) {
|
require(["seriesRecordingEditor"], function (recordingEditor) {
|
||||||
recordingEditor.show(item.Id, serverId).then(resolve, reject);
|
recordingEditor.show(item.Id, serverId).then(resolve, reject);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
require(['metadataEditor'], function (metadataEditor) {
|
require(["metadataEditor"], function (metadataEditor) {
|
||||||
metadataEditor.show(item.Id, serverId).then(resolve, reject);
|
metadataEditor.show(item.Id, serverId).then(resolve, reject);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -512,7 +547,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
|
|
||||||
function deleteItem(apiClient, item) {
|
function deleteItem(apiClient, item) {
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
require(['deleteHelper'], function (deleteHelper) {
|
require(["deleteHelper"], function (deleteHelper) {
|
||||||
deleteHelper.deleteItem({
|
deleteHelper.deleteItem({
|
||||||
item: item,
|
item: item,
|
||||||
navigate: false
|
navigate: false
|
||||||
|
@ -524,11 +559,11 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
}
|
}
|
||||||
|
|
||||||
function refresh(apiClient, item) {
|
function refresh(apiClient, item) {
|
||||||
require(['refreshDialog'], function (refreshDialog) {
|
require(["refreshDialog"], function (refreshDialog) {
|
||||||
new refreshDialog({
|
new refreshDialog({
|
||||||
itemIds: [item.Id],
|
itemIds: [item.Id],
|
||||||
serverId: apiClient.serverInfo().Id,
|
serverId: apiClient.serverInfo().Id,
|
||||||
mode: item.Type === 'CollectionFolder' ? 'scan' : null
|
mode: item.Type === "CollectionFolder" ? "scan" : null
|
||||||
}).show();
|
}).show();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -542,7 +577,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
|
||||||
return actionsheet.show({
|
return actionsheet.show({
|
||||||
items: commands,
|
items: commands,
|
||||||
positionTo: options.positionTo,
|
positionTo: options.positionTo,
|
||||||
resolveOnClick: ['share']
|
resolveOnClick: ["share"]
|
||||||
}).then(function (id) {
|
}).then(function (id) {
|
||||||
return executeCommand(options.item, id, options);
|
return executeCommand(options.item, id, options);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['inputmanager', 'focusManager'], function(inputmanager, focusManager) {
|
define(['inputManager', 'focusManager'], function(inputManager, focusManager) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
console.log("keyboardnavigation");
|
console.log("keyboardnavigation");
|
||||||
|
@ -9,16 +9,16 @@ define(['inputmanager', 'focusManager'], function(inputmanager, focusManager) {
|
||||||
|
|
||||||
switch (e.keyCode) {
|
switch (e.keyCode) {
|
||||||
case 37: // ArrowLeft
|
case 37: // ArrowLeft
|
||||||
inputmanager.handle('left');
|
inputManager.handle('left');
|
||||||
break;
|
break;
|
||||||
case 38: // ArrowUp
|
case 38: // ArrowUp
|
||||||
inputmanager.handle('up');
|
inputManager.handle('up');
|
||||||
break;
|
break;
|
||||||
case 39: // ArrowRight
|
case 39: // ArrowRight
|
||||||
inputmanager.handle('right');
|
inputManager.handle('right');
|
||||||
break;
|
break;
|
||||||
case 40: // ArrowDown
|
case 40: // ArrowDown
|
||||||
inputmanager.handle('down');
|
inputManager.handle('down');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
capture = false;
|
capture = false;
|
||||||
|
|
|
@ -511,7 +511,9 @@ define(["browser", "datetime", "backdrop", "libraryBrowser", "listView", "imageL
|
||||||
|
|
||||||
function getSaveablePlaylistItems() {
|
function getSaveablePlaylistItems() {
|
||||||
return getPlaylistItems(currentPlayer).then(function (items) {
|
return getPlaylistItems(currentPlayer).then(function (items) {
|
||||||
return i.Id && i.ServerId
|
return items.filter(function (i) {
|
||||||
|
return i.Id && i.ServerId;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'dom'], function (inputmanager, focusManager, browser, layoutManager, events, dom) {
|
define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'dom'], function (inputManager, focusManager, browser, layoutManager, events, dom) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var self = {};
|
var self = {};
|
||||||
|
@ -12,7 +12,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd
|
||||||
|
|
||||||
function notifyApp() {
|
function notifyApp() {
|
||||||
|
|
||||||
inputmanager.notifyMouseMove();
|
inputManager.notifyMouseMove();
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeIdleClasses() {
|
function removeIdleClasses() {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'focusManager', 'browser', 'apphost', 'loading', 'css!./style', 'material-icons', 'paper-icon-button-light'], function (dialogHelper, inputmanager, connectionManager, layoutManager, focusManager, browser, appHost, loading) {
|
define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'focusManager', 'browser', 'apphost', 'loading', 'css!./style', 'material-icons', 'paper-icon-button-light'], function (dialogHelper, inputManager, connectionManager, layoutManager, focusManager, browser, appHost, loading) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
function getImageUrl(item, options, apiClient) {
|
function getImageUrl(item, options, apiClient) {
|
||||||
|
@ -189,7 +189,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
|
||||||
stopInterval();
|
stopInterval();
|
||||||
});
|
});
|
||||||
|
|
||||||
inputmanager.on(window, onInputCommand);
|
inputManager.on(window, onInputCommand);
|
||||||
document.addEventListener((window.PointerEvent ? 'pointermove' : 'mousemove'), onPointerMove);
|
document.addEventListener((window.PointerEvent ? 'pointermove' : 'mousemove'), onPointerMove);
|
||||||
|
|
||||||
dlg.addEventListener('close', onDialogClosed);
|
dlg.addEventListener('close', onDialogClosed);
|
||||||
|
@ -207,7 +207,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
|
||||||
dlg.querySelector('.swiper-wrapper').innerHTML = currentOptions.items.map(getSwiperSlideHtmlFromItem).join('');
|
dlg.querySelector('.swiper-wrapper').innerHTML = currentOptions.items.map(getSwiperSlideHtmlFromItem).join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
require(['swiper'], function (swiper) {
|
require(['swiper'], function (Swiper) {
|
||||||
|
|
||||||
swiperInstance = new Swiper(dlg.querySelector('.slideshowSwiperContainer'), {
|
swiperInstance = new Swiper(dlg.querySelector('.slideshowSwiperContainer'), {
|
||||||
// Optional parameters
|
// Optional parameters
|
||||||
|
@ -372,7 +372,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
|
||||||
swiperInstance = null;
|
swiperInstance = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
inputmanager.off(window, onInputCommand);
|
inputManager.off(window, onInputCommand);
|
||||||
document.removeEventListener((window.PointerEvent ? 'pointermove' : 'mousemove'), onPointerMove);
|
document.removeEventListener((window.PointerEvent ? 'pointermove' : 'mousemove'), onPointerMove);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,11 +44,11 @@ define(["browser", "dom", "layoutManager", "css!components/viewManager/viewConta
|
||||||
|
|
||||||
|
|
||||||
if (isPluginpage) {
|
if (isPluginpage) {
|
||||||
require(["legacy/dashboard"]);
|
require(["legacyDashboard"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newViewInfo.hasjQuerySelect) {
|
if (newViewInfo.hasjQuerySelect) {
|
||||||
require(["legacy/selectmenu"]);
|
require(["legacySelectMenu"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newViewInfo.hasjQueryChecked) {
|
if (newViewInfo.hasjQueryChecked) {
|
||||||
|
|
|
@ -304,7 +304,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
html += '<div class="flex align-items-center justify-content-center">';
|
html += '<div class="flex align-items-center justify-content-center">';
|
||||||
var userImage = DashboardPage.getUserImage(session);
|
var userImage = DashboardPage.getUserImage(session);
|
||||||
html += userImage ? '<img style="height:1.71em;border-radius:50px;margin-right:.5em;" src="' + userImage + '" />' : '<div style="height:1.71em;"></div>';
|
html += userImage ? '<div class="activitylogUserPhoto" style="background-image:url(\'' + userImage + "');\"></div>" : '<div style="height:1.71em;"></div>';
|
||||||
html += '<div class="sessionUserName">';
|
html += '<div class="sessionUserName">';
|
||||||
html += DashboardPage.getUsersHtml(session);
|
html += DashboardPage.getUsersHtml(session);
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
|
|
|
@ -429,31 +429,24 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
|
||||||
detectRatio = !1;
|
detectRatio = !1;
|
||||||
imageTags.Primary ? (url = apiClient.getScaledImageUrl(item.Id, {
|
imageTags.Primary ? (url = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
maxHeight: 460,
|
|
||||||
tag: item.ImageTags.Primary
|
tag: item.ImageTags.Primary
|
||||||
}), detectRatio = !0) : item.BackdropImageTags && item.BackdropImageTags.length ? (url = apiClient.getScaledImageUrl(item.Id, {
|
}), detectRatio = !0) : item.BackdropImageTags && item.BackdropImageTags.length ? (url = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Backdrop",
|
type: "Backdrop",
|
||||||
maxHeight: 360,
|
|
||||||
tag: item.BackdropImageTags[0]
|
tag: item.BackdropImageTags[0]
|
||||||
}), shape = "thumb") : imageTags.Thumb ? (url = apiClient.getScaledImageUrl(item.Id, {
|
}), shape = "thumb") : imageTags.Thumb ? (url = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Thumb",
|
type: "Thumb",
|
||||||
maxHeight: 360,
|
|
||||||
tag: item.ImageTags.Thumb
|
tag: item.ImageTags.Thumb
|
||||||
}), shape = "thumb") : imageTags.Disc ? (url = apiClient.getScaledImageUrl(item.Id, {
|
}), shape = "thumb") : imageTags.Disc ? (url = apiClient.getScaledImageUrl(item.Id, {
|
||||||
type: "Disc",
|
type: "Disc",
|
||||||
maxHeight: 360,
|
|
||||||
tag: item.ImageTags.Disc
|
tag: item.ImageTags.Disc
|
||||||
}), shape = "square") : item.AlbumId && item.AlbumPrimaryImageTag ? (url = apiClient.getScaledImageUrl(item.AlbumId, {
|
}), shape = "square") : item.AlbumId && item.AlbumPrimaryImageTag ? (url = apiClient.getScaledImageUrl(item.AlbumId, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
maxHeight: 360,
|
|
||||||
tag: item.AlbumPrimaryImageTag
|
tag: item.AlbumPrimaryImageTag
|
||||||
}), shape = "square") : item.SeriesId && item.SeriesPrimaryImageTag ? url = apiClient.getScaledImageUrl(item.SeriesId, {
|
}), shape = "square") : item.SeriesId && item.SeriesPrimaryImageTag ? url = apiClient.getScaledImageUrl(item.SeriesId, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
maxHeight: 360,
|
|
||||||
tag: item.SeriesPrimaryImageTag
|
tag: item.SeriesPrimaryImageTag
|
||||||
}) : item.ParentPrimaryImageItemId && item.ParentPrimaryImageTag && (url = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, {
|
}) : item.ParentPrimaryImageItemId && item.ParentPrimaryImageTag && (url = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, {
|
||||||
type: "Primary",
|
type: "Primary",
|
||||||
maxHeight: 360,
|
|
||||||
tag: item.ParentPrimaryImageTag
|
tag: item.ParentPrimaryImageTag
|
||||||
})), html += '<div style="position:relative;">', editable && (html += "<a class='itemDetailGalleryLink' is='emby-linkbutton' style='display:block;padding:2px;margin:0;' href='#'>"), detectRatio && item.PrimaryImageAspectRatio && (item.PrimaryImageAspectRatio >= 1.48 ? shape = "thumb" : item.PrimaryImageAspectRatio >= .85 && item.PrimaryImageAspectRatio <= 1.34 && (shape = "square")), html += "<img class='itemDetailImage lazy' src='data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=' />", editable && (html += "</a>");
|
})), html += '<div style="position:relative;">', editable && (html += "<a class='itemDetailGalleryLink' is='emby-linkbutton' style='display:block;padding:2px;margin:0;' href='#'>"), detectRatio && item.PrimaryImageAspectRatio && (item.PrimaryImageAspectRatio >= 1.48 ? shape = "thumb" : item.PrimaryImageAspectRatio >= .85 && item.PrimaryImageAspectRatio <= 1.34 && (shape = "square")), html += "<img class='itemDetailImage lazy' src='data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=' />", editable && (html += "</a>");
|
||||||
var progressHtml = item.IsFolder || !item.UserData ? "" : indicators.getProgressBarHtml(item);
|
var progressHtml = item.IsFolder || !item.UserData ? "" : indicators.getProgressBarHtml(item);
|
||||||
|
|
|
@ -168,17 +168,12 @@ define(["jQuery", "globalize", "scripts/taskbutton", "dom", "libraryMenu", "layo
|
||||||
}), menuItems.push({
|
}), menuItems.push({
|
||||||
name: "Xml TV",
|
name: "Xml TV",
|
||||||
id: "xmltv"
|
id: "xmltv"
|
||||||
}), menuItems.push({
|
|
||||||
name: globalize.translate("ButtonOther"),
|
|
||||||
id: "other"
|
|
||||||
}), require(["actionsheet"], function(actionsheet) {
|
}), require(["actionsheet"], function(actionsheet) {
|
||||||
actionsheet.show({
|
actionsheet.show({
|
||||||
items: menuItems,
|
items: menuItems,
|
||||||
positionTo: button,
|
positionTo: button,
|
||||||
callback: function(id) {
|
callback: function(id) {
|
||||||
"other" == id ? Dashboard.alert({
|
Dashboard.navigate(getProviderConfigurationUrl(id))
|
||||||
message: globalize.translate("ForAdditionalLiveTvOptions")
|
|
||||||
}) : Dashboard.navigate(getProviderConfigurationUrl(id))
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -114,7 +114,7 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button
|
||||||
suppportsSubmit = "other" !== value,
|
suppportsSubmit = "other" !== value,
|
||||||
supportsSelectablePath = supportsTunerFileOrUrl,
|
supportsSelectablePath = supportsTunerFileOrUrl,
|
||||||
txtDevicePath = view.querySelector(".txtDevicePath");
|
txtDevicePath = view.querySelector(".txtDevicePath");
|
||||||
supportsTunerIpAddress ? (txtDevicePath.label(globalize.translate("LabelTunerIpAddress")), view.querySelector(".fldPath").classList.remove("hide")) : supportsTunerFileOrUrl ? (txtDevicePath.label(globalize.translate("LabelFileOrUrl")), view.querySelector(".fldPath").classList.remove("hide")) : view.querySelector(".fldPath").classList.add("hide"), supportsSelectablePath ? (view.querySelector(".btnSelectPath").classList.remove("hide"), view.querySelector(".txtDevicePath").setAttribute("required", "required")) : (view.querySelector(".btnSelectPath").classList.add("hide"), view.querySelector(".txtDevicePath").removeAttribute("required")), supportsUserAgent ? view.querySelector(".fldUserAgent").classList.remove("hide") : view.querySelector(".fldUserAgent").classList.add("hide"), supportsFavorites ? view.querySelector(".fldFavorites").classList.remove("hide") : view.querySelector(".fldFavorites").classList.add("hide"), supportsTranscoding ? view.querySelector(".fldTranscode").classList.remove("hide") : view.querySelector(".fldTranscode").classList.add("hide"), supportsStreamLooping ? view.querySelector(".fldStreamLoop").classList.remove("hide") : view.querySelector(".fldStreamLoop").classList.add("hide"), supportsTunerCount ? (view.querySelector(".fldTunerCount").classList.remove("hide"), view.querySelector(".txtTunerCount").setAttribute("required", "required")) : (view.querySelector(".fldTunerCount").classList.add("hide"), view.querySelector(".txtTunerCount").removeAttribute("required")), mayIncludeUnsupportedDrmChannels ? view.querySelector(".drmMessage").classList.remove("hide") : view.querySelector(".drmMessage").classList.add("hide"), suppportsSubmit ? (view.querySelector(".button-submit").classList.remove("hide"), view.querySelector(".otherOptionsMessage").classList.add("hide")) : (view.querySelector(".button-submit").classList.add("hide"), view.querySelector(".otherOptionsMessage").classList.remove("hide"))
|
supportsTunerIpAddress ? (txtDevicePath.label(globalize.translate("LabelTunerIpAddress")), view.querySelector(".fldPath").classList.remove("hide")) : supportsTunerFileOrUrl ? (txtDevicePath.label(globalize.translate("LabelFileOrUrl")), view.querySelector(".fldPath").classList.remove("hide")) : view.querySelector(".fldPath").classList.add("hide"), supportsSelectablePath ? (view.querySelector(".btnSelectPath").classList.remove("hide"), view.querySelector(".txtDevicePath").setAttribute("required", "required")) : (view.querySelector(".btnSelectPath").classList.add("hide"), view.querySelector(".txtDevicePath").removeAttribute("required")), supportsUserAgent ? view.querySelector(".fldUserAgent").classList.remove("hide") : view.querySelector(".fldUserAgent").classList.add("hide"), supportsFavorites ? view.querySelector(".fldFavorites").classList.remove("hide") : view.querySelector(".fldFavorites").classList.add("hide"), supportsTranscoding ? view.querySelector(".fldTranscode").classList.remove("hide") : view.querySelector(".fldTranscode").classList.add("hide"), supportsStreamLooping ? view.querySelector(".fldStreamLoop").classList.remove("hide") : view.querySelector(".fldStreamLoop").classList.add("hide"), supportsTunerCount ? (view.querySelector(".fldTunerCount").classList.remove("hide"), view.querySelector(".txtTunerCount").setAttribute("required", "required")) : (view.querySelector(".fldTunerCount").classList.add("hide"), view.querySelector(".txtTunerCount").removeAttribute("required")), mayIncludeUnsupportedDrmChannels ? view.querySelector(".drmMessage").classList.remove("hide") : view.querySelector(".drmMessage").classList.add("hide"), suppportsSubmit ? view.querySelector(".button-submit").classList.remove("hide") : view.querySelector(".button-submit").classList.add("hide")
|
||||||
}
|
}
|
||||||
return function(view, params) {
|
return function(view, params) {
|
||||||
params.id || view.querySelector(".btnDetect").classList.remove("hide"), view.addEventListener("viewshow", function() {
|
params.id || view.querySelector(".btnDetect").classList.remove("hide"), view.addEventListener("viewshow", function() {
|
||||||
|
|
|
@ -14,7 +14,7 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio
|
||||||
page.querySelector(".lnkMyProfile").setAttribute("href", "myprofile.html?userId=" + userId);
|
page.querySelector(".lnkMyProfile").setAttribute("href", "myprofile.html?userId=" + userId);
|
||||||
page.querySelector(".lnkDisplayPreferences").setAttribute("href", "mypreferencesdisplay.html?userId=" + userId);
|
page.querySelector(".lnkDisplayPreferences").setAttribute("href", "mypreferencesdisplay.html?userId=" + userId);
|
||||||
page.querySelector(".lnkHomePreferences").setAttribute("href", "mypreferenceshome.html?userId=" + userId);
|
page.querySelector(".lnkHomePreferences").setAttribute("href", "mypreferenceshome.html?userId=" + userId);
|
||||||
page.querySelector(".lnkLanguagePreferences").setAttribute("href", "mypreferenceslanguages.html?userId=" + userId);
|
page.querySelector(".lnkPlaybackPreferences").setAttribute("href", "mypreferencesplayback.html?userId=" + userId);
|
||||||
page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId);
|
page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId);
|
||||||
|
|
||||||
if (appHost.supports("multiserver")) {
|
if (appHost.supports("multiserver")) {
|
|
@ -11,14 +11,13 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "em
|
||||||
var imageUrl = "img/logindefault.png";
|
var imageUrl = "img/logindefault.png";
|
||||||
if (user.PrimaryImageTag) {
|
if (user.PrimaryImageTag) {
|
||||||
imageUrl = ApiClient.getUserImageUrl(user.Id, {
|
imageUrl = ApiClient.getUserImageUrl(user.Id, {
|
||||||
height: 200,
|
|
||||||
tag: user.PrimaryImageTag,
|
tag: user.PrimaryImageTag,
|
||||||
type: "Primary"
|
type: "Primary"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var userImage = page.querySelector("#image");
|
var userImage = page.querySelector("#image");
|
||||||
userImage.src = imageUrl;
|
userImage.style.backgroundImage = "url(" + imageUrl + ")";
|
||||||
|
|
||||||
Dashboard.getCurrentUser().then(function (loggedInUser) {
|
Dashboard.getCurrentUser().then(function (loggedInUser) {
|
||||||
if (user.PrimaryImageTag) {
|
if (user.PrimaryImageTag) {
|
||||||
|
@ -71,7 +70,7 @@ define(["controllers/userpasswordpage", "loading", "libraryMenu", "apphost", "em
|
||||||
reader.onerror = onFileReaderError;
|
reader.onerror = onFileReaderError;
|
||||||
reader.onabort = onFileReaderAbort;
|
reader.onabort = onFileReaderAbort;
|
||||||
reader.onload = function (evt) {
|
reader.onload = function (evt) {
|
||||||
userImage.src = evt.target.result;
|
userImage.style.backgroundImage = "url(" + evt.target.result + ")";
|
||||||
var userId = getParameterByName("userId");
|
var userId = getParameterByName("userId");
|
||||||
ApiClient.uploadUserImage(userId, "Primary", file).then(function () {
|
ApiClient.uploadUserImage(userId, "Primary", file).then(function () {
|
||||||
loading.hide();
|
loading.hide();
|
|
@ -1,4 +1,4 @@
|
||||||
define(["playbackManager", "dom", "inputmanager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings) {
|
define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "mediaInfo", "focusManager", "imageLoader", "scrollHelper", "events", "connectionManager", "browser", "globalize", "apphost", "layoutManager", "userSettings", "scrollStyles", "emby-slider", "paper-icon-button-light", "css!css/videoosd"], function (playbackManager, dom, inputManager, datetime, itemHelper, mediaInfo, focusManager, imageLoader, scrollHelper, events, connectionManager, browser, globalize, appHost, layoutManager, userSettings) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
function seriesImageUrl(item, options) {
|
function seriesImageUrl(item, options) {
|
||||||
|
|
|
@ -6,19 +6,13 @@ define(["loading"], function (loading) {
|
||||||
ApiClient.ajax({
|
ApiClient.ajax({
|
||||||
url: ApiClient.getUrl("Startup/Complete"),
|
url: ApiClient.getUrl("Startup/Complete"),
|
||||||
type: "POST"
|
type: "POST"
|
||||||
}).then(function () {
|
}).then(function() {
|
||||||
Dashboard.navigate("dashboard.html");
|
|
||||||
loading.hide();
|
loading.hide();
|
||||||
|
window.location.href = "index.html";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return function (view, params) {
|
return function (view, params) {
|
||||||
view.querySelector(".btnWizardNext").addEventListener("click", onFinish);
|
view.querySelector(".btnWizardNext").addEventListener("click", onFinish);
|
||||||
view.addEventListener("viewshow", function () {
|
|
||||||
document.querySelector(".skinHeader").classList.add("noHomeButtonHeader");
|
|
||||||
});
|
|
||||||
view.addEventListener("viewhide", function () {
|
|
||||||
document.querySelector(".skinHeader").classList.remove("noHomeButtonHeader");
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
@ -252,6 +252,16 @@ div[data-role=controlgroup] a.ui-btn-active {
|
||||||
width: 100% !important
|
width: 100% !important
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.activitylogUserPhoto {
|
||||||
|
height:1.71em;
|
||||||
|
width:1.71em;
|
||||||
|
border-radius:100%;
|
||||||
|
margin-right:.5em;
|
||||||
|
background-size:cover;
|
||||||
|
background-repeat:no-repeat;
|
||||||
|
background-position:center;
|
||||||
|
}
|
||||||
|
|
||||||
@media all and (min-width:40em) {
|
@media all and (min-width:40em) {
|
||||||
.activeSession {
|
.activeSession {
|
||||||
width: 100% !important
|
width: 100% !important
|
||||||
|
|
|
@ -67,9 +67,12 @@
|
||||||
display: inline-block
|
display: inline-block
|
||||||
}
|
}
|
||||||
|
|
||||||
.headerUserButtonRound img {
|
.headerUserButtonRound div {
|
||||||
-webkit-border-radius: 100em;
|
-webkit-border-radius: 100em;
|
||||||
border-radius: 100em
|
border-radius: 100em;
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.headerButton {
|
.headerButton {
|
||||||
|
|
|
@ -63,7 +63,6 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="drmMessage hide">${DrmChannelsNotImported}</p>
|
<p class="drmMessage hide">${DrmChannelsNotImported}</p>
|
||||||
<p class="otherOptionsMessage hide" style="margin:2em 0;">${ForAdditionalLiveTvOptions}</p>
|
|
||||||
<br />
|
<br />
|
||||||
<input type="hidden" class="fldDeviceId" />
|
<input type="hidden" class="fldDeviceId" />
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a is="emby-linkbutton" data-ripple="false" href="#" class="lnkLanguagePreferences listItem-border">
|
<a is="emby-linkbutton" data-ripple="false" href="#" class="lnkPlaybackPreferences listItem-border">
|
||||||
<div class="listItem">
|
<div class="listItem">
|
||||||
<i class="md-icon listItemIcon listItemIcon-transparent">play_circle_filled</i>
|
<i class="md-icon listItemIcon listItemIcon-transparent">play_circle_filled</i>
|
||||||
<div class="listItemBody">
|
<div class="listItemBody">
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="padded-left padded-right padded-bottom-page">
|
<div class="padded-left padded-right padded-bottom-page">
|
||||||
<div class="readOnlyContent" style="margin: 0 auto; padding: 0 1em;">
|
<div class="readOnlyContent" style="margin: 0 auto; padding: 0 1em;">
|
||||||
<div style="position:relative;display:inline-block;max-width:200px;">
|
<div style="position:relative;display:inline-block;max-width:200px;">
|
||||||
<img id="image" width="200px" />
|
<div id="image" style="width:200px;height:200px;background-repeat:no-repeat;background-position:center;border-radius:100%;background-size:cover;"></div>
|
||||||
<input id="uploadImage" type="file" accept="image/*" style="position:absolute;right:0;width:100%;height:100%;opacity:0;" />
|
<input id="uploadImage" type="file" accept="image/*" style="position:absolute;right:0;width:100%;height:100%;opacity:0;" />
|
||||||
</div>
|
</div>
|
||||||
<div style="vertical-align:top;margin:1em 2em;display:inline-block;">
|
<div style="vertical-align:top;margin:1em 2em;display:inline-block;">
|
||||||
|
|
|
@ -80,7 +80,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
|
||||||
function updateHeaderUserButton(src) {
|
function updateHeaderUserButton(src) {
|
||||||
if (src) {
|
if (src) {
|
||||||
headerUserButton.classList.add("headerUserButtonRound");
|
headerUserButton.classList.add("headerUserButtonRound");
|
||||||
headerUserButton.innerHTML = '<img src="' + src + '" />';
|
headerUserButton.innerHTML = '<div class="headerButton headerButtonRight paper-icon-button-light headerUserButtonRound" style="background-image:url(\'' + src + "');\"></div>";
|
||||||
} else {
|
} else {
|
||||||
headerUserButton.classList.remove("headerUserButtonRound");
|
headerUserButton.classList.remove("headerUserButtonRound");
|
||||||
headerUserButton.innerHTML = '<i class="md-icon"></i>';
|
headerUserButton.innerHTML = '<i class="md-icon"></i>';
|
||||||
|
|
|
@ -229,41 +229,41 @@ define([
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
transition: "fade"
|
transition: "fade"
|
||||||
});
|
});
|
||||||
defineRoute({
|
|
||||||
path: "/mypreferencesdisplay.html",
|
|
||||||
autoFocus: false,
|
|
||||||
transition: "fade",
|
|
||||||
controller: "mypreferencesdisplay"
|
|
||||||
});
|
|
||||||
defineRoute({
|
|
||||||
path: "/mypreferenceshome.html",
|
|
||||||
autoFocus: false,
|
|
||||||
transition: "fade",
|
|
||||||
controller: "mypreferenceshome"
|
|
||||||
});
|
|
||||||
defineRoute({
|
|
||||||
path: "/mypreferencessubtitles.html",
|
|
||||||
autoFocus: false,
|
|
||||||
transition: "fade",
|
|
||||||
controller: "mypreferencessubtitles"
|
|
||||||
});
|
|
||||||
defineRoute({
|
|
||||||
path: "/mypreferenceslanguages.html",
|
|
||||||
autoFocus: false,
|
|
||||||
transition: "fade",
|
|
||||||
controller: "mypreferenceslanguages"
|
|
||||||
});
|
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: "/mypreferencesmenu.html",
|
path: "/mypreferencesmenu.html",
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
transition: "fade",
|
transition: "fade",
|
||||||
controller: "mypreferencescommon"
|
controller: "user/menu"
|
||||||
});
|
});
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: "/myprofile.html",
|
path: "/myprofile.html",
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
transition: "fade",
|
transition: "fade",
|
||||||
controller: "myprofile"
|
controller: "user/profile"
|
||||||
|
});
|
||||||
|
defineRoute({
|
||||||
|
path: "/mypreferencesdisplay.html",
|
||||||
|
autoFocus: false,
|
||||||
|
transition: "fade",
|
||||||
|
controller: "user/display"
|
||||||
|
});
|
||||||
|
defineRoute({
|
||||||
|
path: "/mypreferenceshome.html",
|
||||||
|
autoFocus: false,
|
||||||
|
transition: "fade",
|
||||||
|
controller: "user/home"
|
||||||
|
});
|
||||||
|
defineRoute({
|
||||||
|
path: "/mypreferencesplayback.html",
|
||||||
|
autoFocus: false,
|
||||||
|
transition: "fade",
|
||||||
|
controller: "user/playback"
|
||||||
|
});
|
||||||
|
defineRoute({
|
||||||
|
path: "/mypreferencessubtitles.html",
|
||||||
|
autoFocus: false,
|
||||||
|
transition: "fade",
|
||||||
|
controller: "user/subtitles"
|
||||||
});
|
});
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: "/notificationsetting.html",
|
path: "/notificationsetting.html",
|
||||||
|
|
|
@ -223,7 +223,9 @@ var Dashboard = {
|
||||||
return capabilities = Object.assign(capabilities, appHost.getPushTokenInfo());
|
return capabilities = Object.assign(capabilities, appHost.getPushTokenInfo());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var AppInfo = {};
|
var AppInfo = {};
|
||||||
|
|
||||||
!function () {
|
!function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
@ -309,6 +311,10 @@ var AppInfo = {};
|
||||||
return "bower_components";
|
return "bower_components";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getComponentsPath() {
|
||||||
|
return "components";
|
||||||
|
}
|
||||||
|
|
||||||
function getPlaybackManager(playbackManager) {
|
function getPlaybackManager(playbackManager) {
|
||||||
window.addEventListener("beforeunload", function () {
|
window.addEventListener("beforeunload", function () {
|
||||||
try {
|
try {
|
||||||
|
@ -381,14 +387,13 @@ var AppInfo = {};
|
||||||
return self.ResizeObserver;
|
return self.ResizeObserver;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
define("ResizeObserver", ["thirdparty/resize-observer-polyfill/ResizeObserver"], returnFirstDependency);
|
define("ResizeObserver", [getBowerPath() + "/resize-observer-polyfill/ResizeObserver"], returnFirstDependency);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function initRequireWithBrowser(browser) {
|
function initRequireWithBrowser(browser) {
|
||||||
var bowerPath = getBowerPath();
|
var bowerPath = getBowerPath();
|
||||||
var apiClientBowerPath = bowerPath + "/apiclient";
|
var componentsPath = getComponentsPath();
|
||||||
var componentsPath = "components";
|
|
||||||
|
|
||||||
define("filesystem", [componentsPath + "/filesystem"], returnFirstDependency);
|
define("filesystem", [componentsPath + "/filesystem"], returnFirstDependency);
|
||||||
|
|
||||||
|
@ -400,7 +405,7 @@ var AppInfo = {};
|
||||||
|
|
||||||
define("shell", [componentsPath + "/shell"], returnFirstDependency);
|
define("shell", [componentsPath + "/shell"], returnFirstDependency);
|
||||||
|
|
||||||
define("apiclient", [apiClientBowerPath + "/apiclient"], returnFirstDependency);
|
define("apiclient", [bowerPath + "/apiclient/apiclient"], returnFirstDependency);
|
||||||
|
|
||||||
if ("registerElement" in document) {
|
if ("registerElement" in document) {
|
||||||
define("registerElement", []);
|
define("registerElement", []);
|
||||||
|
@ -434,7 +439,7 @@ var AppInfo = {};
|
||||||
define("loading", [componentsPath + "/loading/loading"], returnFirstDependency);
|
define("loading", [componentsPath + "/loading/loading"], returnFirstDependency);
|
||||||
define("multi-download", [componentsPath + "/multidownload"], returnFirstDependency);
|
define("multi-download", [componentsPath + "/multidownload"], returnFirstDependency);
|
||||||
define("fileDownloader", [componentsPath + "/filedownloader"], returnFirstDependency);
|
define("fileDownloader", [componentsPath + "/filedownloader"], returnFirstDependency);
|
||||||
define("localassetmanager", [apiClientBowerPath + "/localassetmanager"], returnFirstDependency);
|
define("localassetmanager", [bowerPath + "/apiclient/localassetmanager"], returnFirstDependency);
|
||||||
|
|
||||||
if ("cordova" === self.appMode || "android" === self.appMode) {
|
if ("cordova" === self.appMode || "android" === self.appMode) {
|
||||||
define("castSenderApiLoader", [], getDummyCastSenderApiLoader);
|
define("castSenderApiLoader", [], getDummyCastSenderApiLoader);
|
||||||
|
@ -442,9 +447,9 @@ var AppInfo = {};
|
||||||
define("castSenderApiLoader", [], getCastSenderApiLoader);
|
define("castSenderApiLoader", [], getCastSenderApiLoader);
|
||||||
}
|
}
|
||||||
|
|
||||||
define("transfermanager", [apiClientBowerPath + "/sync/transfermanager"], returnFirstDependency);
|
define("transfermanager", [bowerPath + "/apiclient/sync/transfermanager"], returnFirstDependency);
|
||||||
define("filerepository", [apiClientBowerPath + "/sync/filerepository"], returnFirstDependency);
|
define("filerepository", [bowerPath + "/apiclient/sync/filerepository"], returnFirstDependency);
|
||||||
define("localsync", [apiClientBowerPath + "/sync/localsync"], returnFirstDependency);
|
define("localsync", [bowerPath + "/apiclient/sync/localsync"], returnFirstDependency);
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
|
@ -560,16 +565,9 @@ var AppInfo = {};
|
||||||
|
|
||||||
// ensure that appHost is loaded in this point
|
// ensure that appHost is loaded in this point
|
||||||
require(['apphost', 'appRouter'], function (appHost, appRouter) {
|
require(['apphost', 'appRouter'], function (appHost, appRouter) {
|
||||||
var isInBackground = -1 !== self.location.href.toString().toLowerCase().indexOf("start=backgroundsync");
|
|
||||||
|
|
||||||
window.Emby = {};
|
window.Emby = {};
|
||||||
|
|
||||||
console.log("onAppReady - loading dependencies");
|
console.log("onAppReady - loading dependencies");
|
||||||
|
|
||||||
if (isInBackground) {
|
|
||||||
syncNow();
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if (browser.iOS) {
|
if (browser.iOS) {
|
||||||
require(['css!css/ios.css']);
|
require(['css!css/ios.css']);
|
||||||
}
|
}
|
||||||
|
@ -609,15 +607,10 @@ var AppInfo = {};
|
||||||
|
|
||||||
require(["playerSelectionMenu", "fullscreenManager"]);
|
require(["playerSelectionMenu", "fullscreenManager"]);
|
||||||
|
|
||||||
if (appHost.supports("sync")) {
|
|
||||||
initLocalSyncEvents();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!AppInfo.isNativeApp && window.ApiClient) {
|
if (!AppInfo.isNativeApp && window.ApiClient) {
|
||||||
require(["css!" + ApiClient.getUrl("Branding/Css")]);
|
require(["css!" + ApiClient.getUrl("Branding/Css")]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -631,20 +624,6 @@ var AppInfo = {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncNow() {
|
|
||||||
require(["localsync"], function (localSync) {
|
|
||||||
localSync.sync();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function initLocalSyncEvents() {
|
|
||||||
require(["serverNotifications", "events"], function (serverNotifications, events) {
|
|
||||||
events.on(serverNotifications, "SyncJobItemReady", syncNow);
|
|
||||||
events.on(serverNotifications, "SyncJobCancelled", syncNow);
|
|
||||||
events.on(serverNotifications, "SyncJobItemCancelled", syncNow);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function onWebComponentsReady(browser) {
|
function onWebComponentsReady(browser) {
|
||||||
initRequireWithBrowser(browser);
|
initRequireWithBrowser(browser);
|
||||||
|
|
||||||
|
@ -653,7 +632,7 @@ var AppInfo = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!window.Promise || browser.web0s) {
|
if (!window.Promise || browser.web0s) {
|
||||||
require(["thirdparty/native-promise-only/lib/npo.src"], init);
|
require([getBowerPath() + "/native-promise-only/lib/npo.src"], init);
|
||||||
} else {
|
} else {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
@ -664,27 +643,24 @@ var AppInfo = {};
|
||||||
(function () {
|
(function () {
|
||||||
var urlArgs = "v=" + (window.dashboardVersion || new Date().getDate());
|
var urlArgs = "v=" + (window.dashboardVersion || new Date().getDate());
|
||||||
var bowerPath = getBowerPath();
|
var bowerPath = getBowerPath();
|
||||||
var apiClientBowerPath = bowerPath + "/apiclient";
|
var componentsPath = getComponentsPath();
|
||||||
var componentsPath = "components";
|
|
||||||
var paths = {
|
var paths = {
|
||||||
|
browserdeviceprofile: "scripts/browserdeviceprofile",
|
||||||
|
browser: "scripts/browser",
|
||||||
|
libraryBrowser: "scripts/librarybrowser",
|
||||||
|
inputManager: "scripts/inputManager",
|
||||||
|
datetime: "scripts/datetime",
|
||||||
|
globalize: "scripts/globalize",
|
||||||
|
libraryMenu: "scripts/librarymenu",
|
||||||
playlisteditor: componentsPath + "/playlisteditor/playlisteditor",
|
playlisteditor: componentsPath + "/playlisteditor/playlisteditor",
|
||||||
medialibrarycreator: componentsPath + "/medialibrarycreator/medialibrarycreator",
|
medialibrarycreator: componentsPath + "/medialibrarycreator/medialibrarycreator",
|
||||||
medialibraryeditor: componentsPath + "/medialibraryeditor/medialibraryeditor",
|
medialibraryeditor: componentsPath + "/medialibraryeditor/medialibraryeditor",
|
||||||
imageoptionseditor: componentsPath + "/imageoptionseditor/imageoptionseditor",
|
imageoptionseditor: componentsPath + "/imageoptionseditor/imageoptionseditor",
|
||||||
humanedate: componentsPath + "/humanedate",
|
humanedate: componentsPath + "/humanedate",
|
||||||
libraryBrowser: "scripts/librarybrowser",
|
apphost: componentsPath + "/apphost",
|
||||||
events: apiClientBowerPath + "/events",
|
|
||||||
credentialprovider: apiClientBowerPath + "/credentialprovider",
|
|
||||||
connectionManagerFactory: bowerPath + "/apiclient/connectionmanager",
|
|
||||||
visibleinviewport: componentsPath + "/visibleinviewport",
|
visibleinviewport: componentsPath + "/visibleinviewport",
|
||||||
browserdeviceprofile: componentsPath + "/browserdeviceprofile",
|
|
||||||
browser: componentsPath + "/browser",
|
|
||||||
inputManager: componentsPath + "/inputManager",
|
|
||||||
qualityoptions: componentsPath + "/qualityoptions",
|
qualityoptions: componentsPath + "/qualityoptions",
|
||||||
page: "thirdparty/page",
|
|
||||||
focusManager: componentsPath + "/focusManager",
|
focusManager: componentsPath + "/focusManager",
|
||||||
datetime: componentsPath + "/datetime",
|
|
||||||
globalize: componentsPath + "/globalize",
|
|
||||||
itemHelper: componentsPath + "/itemhelper",
|
itemHelper: componentsPath + "/itemhelper",
|
||||||
itemShortcuts: componentsPath + "/shortcuts",
|
itemShortcuts: componentsPath + "/shortcuts",
|
||||||
playQueueManager: componentsPath + "/playback/playqueuemanager",
|
playQueueManager: componentsPath + "/playback/playqueuemanager",
|
||||||
|
@ -693,10 +669,8 @@ var AppInfo = {};
|
||||||
pluginManager: componentsPath + "/pluginManager",
|
pluginManager: componentsPath + "/pluginManager",
|
||||||
packageManager: componentsPath + "/packagemanager"
|
packageManager: componentsPath + "/packagemanager"
|
||||||
};
|
};
|
||||||
paths.flvjs = "thirdparty/flvjs/flv.min";
|
|
||||||
paths.shaka = "thirdparty/shaka/shaka-player.compiled";
|
|
||||||
paths.apphost = componentsPath + "/apphost";
|
|
||||||
|
|
||||||
|
requirejs.onError = onRequireJsError;
|
||||||
requirejs.config({
|
requirejs.config({
|
||||||
waitSeconds: 0,
|
waitSeconds: 0,
|
||||||
map: {
|
map: {
|
||||||
|
@ -706,13 +680,22 @@ var AppInfo = {};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
bundles: {
|
bundles: {
|
||||||
bundle: ["jstree", "jQuery", "hlsjs", "howler", "swiper", "sortable", "libjass"]
|
bundle: [
|
||||||
|
"flvjs",
|
||||||
|
"jstree",
|
||||||
|
"jQuery",
|
||||||
|
"hlsjs",
|
||||||
|
"howler",
|
||||||
|
"shaka",
|
||||||
|
"swiper",
|
||||||
|
"sortable",
|
||||||
|
"libjass"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
urlArgs: urlArgs,
|
urlArgs: urlArgs,
|
||||||
paths: paths,
|
paths: paths,
|
||||||
onError: onRequireJsError
|
onError: onRequireJsError
|
||||||
});
|
});
|
||||||
requirejs.onError = onRequireJsError;
|
|
||||||
|
|
||||||
// Expose jQuery globally
|
// Expose jQuery globally
|
||||||
require(["jQuery"], function(jQuery) {
|
require(["jQuery"], function(jQuery) {
|
||||||
|
@ -720,13 +703,57 @@ var AppInfo = {};
|
||||||
window.jQuery = jQuery;
|
window.jQuery = jQuery;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
require(["css!css/site"]);
|
||||||
|
|
||||||
|
// define styles
|
||||||
|
// TODO determine which of these files can be moved to the components themselves
|
||||||
|
define("material-icons", ["css!css/material-icons/style"], returnFirstDependency);
|
||||||
|
define("systemFontsCss", ["css!css/fonts"], returnFirstDependency);
|
||||||
|
define("systemFontsSizedCss", ["css!css/fonts.sized"], returnFirstDependency);
|
||||||
|
define("scrollStyles", ["css!css/scrollstyles"], returnFirstDependency);
|
||||||
|
define("dashboardcss", ["css!css/dashboard"], returnFirstDependency);
|
||||||
|
define("programStyles", ["css!" + componentsPath + "/guide/programs"], returnFirstDependency);
|
||||||
|
define("listViewStyle", ["css!" + componentsPath + "/listview/listview"], returnFirstDependency);
|
||||||
|
define("formDialogStyle", ["css!" + componentsPath + "/formdialog"], returnFirstDependency);
|
||||||
|
define("clearButtonStyle", ["css!" + componentsPath + "/clearbutton"], returnFirstDependency);
|
||||||
|
define("cardStyle", ["css!" + componentsPath + "/cardbuilder/card"], returnFirstDependency);
|
||||||
|
define("flexStyles", ["css!" + componentsPath + "/flexstyles"], returnFirstDependency);
|
||||||
|
|
||||||
|
// define legacy features
|
||||||
|
// TODO delete the rest of these
|
||||||
|
define("fnchecked", ["legacy/fnchecked"], returnFirstDependency);
|
||||||
|
define("legacyDashboard", ["legacy/dashboard"], returnFirstDependency);
|
||||||
|
define("legacySelectMenu", ["legacy/selectmenu"], returnFirstDependency);
|
||||||
|
|
||||||
|
// there are several objects that need to be instantiated
|
||||||
|
// TODO find a better way to do this
|
||||||
|
define("appFooter", [componentsPath + "/appfooter/appfooter"], returnFirstDependency);
|
||||||
|
define("appFooter-shared", ["appFooter"], createSharedAppFooter);
|
||||||
|
|
||||||
|
// TODO pull apiclient out of this repository
|
||||||
|
define('events', [bowerPath + "/apiclient/events"], returnFirstDependency);
|
||||||
|
define('credentialprovider', [bowerPath + "/apiclient/credentialprovider"], returnFirstDependency);
|
||||||
|
define('connectionManagerFactory', [bowerPath + "/apiclient/connectionmanager"], returnFirstDependency);
|
||||||
|
define('appStorage', [bowerPath + "/apiclient/appStorage"], returnFirstDependency);
|
||||||
|
define("serversync", [bowerPath + "/apiclient/sync/serversync"], returnFirstDependency);
|
||||||
|
define("multiserversync", [bowerPath + "/apiclient/sync/multiserversync"], returnFirstDependency);
|
||||||
|
define("mediasync", [bowerPath + "/apiclient/sync/mediasync"], returnFirstDependency);
|
||||||
|
define("itemrepository", [bowerPath + "/apiclient/sync/itemrepository"], returnFirstDependency);
|
||||||
|
define("useractionrepository", [bowerPath + "/apiclient/sync/useractionrepository"], returnFirstDependency);
|
||||||
|
|
||||||
|
// also pull out these libs
|
||||||
|
define("page", [bowerPath + "/page"], returnFirstDependency);
|
||||||
|
define("fetch", [bowerPath + "/fetch/fetch"], returnFirstDependency);
|
||||||
|
define("queryString", [bowerPath + "/query-string/index"], function () {
|
||||||
|
return queryString;
|
||||||
|
});
|
||||||
|
|
||||||
define("chromecastHelper", [componentsPath + "/chromecast/chromecasthelpers"], returnFirstDependency);
|
define("chromecastHelper", [componentsPath + "/chromecast/chromecasthelpers"], returnFirstDependency);
|
||||||
define("mediaSession", [componentsPath + "/playback/mediasession"], returnFirstDependency);
|
define("mediaSession", [componentsPath + "/playback/mediasession"], returnFirstDependency);
|
||||||
define("actionsheet", [componentsPath + "/actionsheet/actionsheet"], returnFirstDependency);
|
define("actionsheet", [componentsPath + "/actionsheet/actionsheet"], returnFirstDependency);
|
||||||
define("tunerPicker", [componentsPath + "/tunerpicker"], returnFirstDependency);
|
define("tunerPicker", [componentsPath + "/tunerpicker"], returnFirstDependency);
|
||||||
define("mainTabsManager", [componentsPath + "/maintabsmanager"], returnFirstDependency);
|
define("mainTabsManager", [componentsPath + "/maintabsmanager"], returnFirstDependency);
|
||||||
define("imageLoader", [componentsPath + "/images/imageLoader"], returnFirstDependency);
|
define("imageLoader", [componentsPath + "/images/imageLoader"], returnFirstDependency);
|
||||||
define("appFooter", [componentsPath + "/appfooter/appfooter"], returnFirstDependency);
|
|
||||||
define("directorybrowser", [componentsPath + "/directorybrowser/directorybrowser"], returnFirstDependency);
|
define("directorybrowser", [componentsPath + "/directorybrowser/directorybrowser"], returnFirstDependency);
|
||||||
define("metadataEditor", [componentsPath + "/metadataeditor/metadataeditor"], returnFirstDependency);
|
define("metadataEditor", [componentsPath + "/metadataeditor/metadataeditor"], returnFirstDependency);
|
||||||
define("personEditor", [componentsPath + "/metadataeditor/personeditor"], returnFirstDependency);
|
define("personEditor", [componentsPath + "/metadataeditor/personeditor"], returnFirstDependency);
|
||||||
|
@ -734,7 +761,6 @@ var AppInfo = {};
|
||||||
define("playerSettingsMenu", [componentsPath + "/playback/playersettingsmenu"], returnFirstDependency);
|
define("playerSettingsMenu", [componentsPath + "/playback/playersettingsmenu"], returnFirstDependency);
|
||||||
define("playMethodHelper", [componentsPath + "/playback/playmethodhelper"], returnFirstDependency);
|
define("playMethodHelper", [componentsPath + "/playback/playmethodhelper"], returnFirstDependency);
|
||||||
define("brightnessOsd", [componentsPath + "/playback/brightnessosd"], returnFirstDependency);
|
define("brightnessOsd", [componentsPath + "/playback/brightnessosd"], returnFirstDependency);
|
||||||
define("libraryMenu", ["scripts/librarymenu"], returnFirstDependency);
|
|
||||||
define("emby-collapse", [componentsPath + "/emby-collapse/emby-collapse"], returnFirstDependency);
|
define("emby-collapse", [componentsPath + "/emby-collapse/emby-collapse"], returnFirstDependency);
|
||||||
define("emby-button", [componentsPath + "/emby-button/emby-button"], returnFirstDependency);
|
define("emby-button", [componentsPath + "/emby-button/emby-button"], returnFirstDependency);
|
||||||
define("emby-itemscontainer", [componentsPath + "/emby-itemscontainer/emby-itemscontainer"], returnFirstDependency);
|
define("emby-itemscontainer", [componentsPath + "/emby-itemscontainer/emby-itemscontainer"], returnFirstDependency);
|
||||||
|
@ -793,14 +819,11 @@ var AppInfo = {};
|
||||||
define("refreshDialog", [componentsPath + "/refreshdialog/refreshdialog"], returnFirstDependency);
|
define("refreshDialog", [componentsPath + "/refreshdialog/refreshdialog"], returnFirstDependency);
|
||||||
define("backdrop", [componentsPath + "/backdrop/backdrop"], returnFirstDependency);
|
define("backdrop", [componentsPath + "/backdrop/backdrop"], returnFirstDependency);
|
||||||
define("fetchHelper", [componentsPath + "/fetchhelper"], returnFirstDependency);
|
define("fetchHelper", [componentsPath + "/fetchhelper"], returnFirstDependency);
|
||||||
define("cardStyle", ["css!" + componentsPath + "/cardbuilder/card"], returnFirstDependency);
|
|
||||||
define("cardBuilder", [componentsPath + "/cardbuilder/cardBuilder"], returnFirstDependency);
|
define("cardBuilder", [componentsPath + "/cardbuilder/cardBuilder"], returnFirstDependency);
|
||||||
define("peoplecardbuilder", [componentsPath + "/cardbuilder/peoplecardbuilder"], returnFirstDependency);
|
define("peoplecardbuilder", [componentsPath + "/cardbuilder/peoplecardbuilder"], returnFirstDependency);
|
||||||
define("chaptercardbuilder", [componentsPath + "/cardbuilder/chaptercardbuilder"], returnFirstDependency);
|
define("chaptercardbuilder", [componentsPath + "/cardbuilder/chaptercardbuilder"], returnFirstDependency);
|
||||||
define("flexStyles", ["css!" + componentsPath + "/flexstyles"], returnFirstDependency);
|
|
||||||
define("deleteHelper", [componentsPath + "/deletehelper"], returnFirstDependency);
|
define("deleteHelper", [componentsPath + "/deletehelper"], returnFirstDependency);
|
||||||
define("tvguide", [componentsPath + "/guide/guide"], returnFirstDependency);
|
define("tvguide", [componentsPath + "/guide/guide"], returnFirstDependency);
|
||||||
define("programStyles", ["css!" + componentsPath + "/guide/programs"], returnFirstDependency);
|
|
||||||
define("guide-settings-dialog", [componentsPath + "/guide/guide-settings"], returnFirstDependency);
|
define("guide-settings-dialog", [componentsPath + "/guide/guide-settings"], returnFirstDependency);
|
||||||
define("loadingDialog", [componentsPath + "/loadingdialog/loadingdialog"], returnFirstDependency);
|
define("loadingDialog", [componentsPath + "/loadingdialog/loadingdialog"], returnFirstDependency);
|
||||||
define("viewManager", [componentsPath + "/viewManager/viewManager"], function (viewManager) {
|
define("viewManager", [componentsPath + "/viewManager/viewManager"], function (viewManager) {
|
||||||
|
@ -808,29 +831,18 @@ var AppInfo = {};
|
||||||
viewManager.dispatchPageEvents(true);
|
viewManager.dispatchPageEvents(true);
|
||||||
return viewManager;
|
return viewManager;
|
||||||
});
|
});
|
||||||
define('appStorage', [apiClientBowerPath + '/appStorage'], returnFirstDependency);
|
|
||||||
define("dashboardcss", ["css!css/dashboard"], returnFirstDependency);
|
|
||||||
define("slideshow", [componentsPath + "/slideshow/slideshow"], returnFirstDependency);
|
define("slideshow", [componentsPath + "/slideshow/slideshow"], returnFirstDependency);
|
||||||
define("fetch", [bowerPath + "/fetch/fetch"], returnFirstDependency);
|
|
||||||
define("objectassign", [componentsPath + "/polyfills/objectassign"], returnFirstDependency);
|
define("objectassign", [componentsPath + "/polyfills/objectassign"], returnFirstDependency);
|
||||||
define("clearButtonStyle", ["css!" + componentsPath + "/clearbutton"], returnFirstDependency);
|
|
||||||
define("userdataButtons", [componentsPath + "/userdatabuttons/userdatabuttons"], returnFirstDependency);
|
define("userdataButtons", [componentsPath + "/userdatabuttons/userdatabuttons"], returnFirstDependency);
|
||||||
define("emby-playstatebutton", [componentsPath + "/userdatabuttons/emby-playstatebutton"], returnFirstDependency);
|
define("emby-playstatebutton", [componentsPath + "/userdatabuttons/emby-playstatebutton"], returnFirstDependency);
|
||||||
define("emby-ratingbutton", [componentsPath + "/userdatabuttons/emby-ratingbutton"], returnFirstDependency);
|
define("emby-ratingbutton", [componentsPath + "/userdatabuttons/emby-ratingbutton"], returnFirstDependency);
|
||||||
define("listView", [componentsPath + "/listview/listview"], returnFirstDependency);
|
define("listView", [componentsPath + "/listview/listview"], returnFirstDependency);
|
||||||
define("listViewStyle", ["css!" + componentsPath + "/listview/listview"], returnFirstDependency);
|
|
||||||
define("formDialogStyle", ["css!" + componentsPath + "/formdialog"], returnFirstDependency);
|
|
||||||
define("indicators", [componentsPath + "/indicators/indicators"], returnFirstDependency);
|
define("indicators", [componentsPath + "/indicators/indicators"], returnFirstDependency);
|
||||||
define("viewSettings", [componentsPath + "/viewsettings/viewsettings"], returnFirstDependency);
|
define("viewSettings", [componentsPath + "/viewsettings/viewsettings"], returnFirstDependency);
|
||||||
define("filterMenu", [componentsPath + "/filtermenu/filtermenu"], returnFirstDependency);
|
define("filterMenu", [componentsPath + "/filtermenu/filtermenu"], returnFirstDependency);
|
||||||
define("sortMenu", [componentsPath + "/sortmenu/sortmenu"], returnFirstDependency);
|
define("sortMenu", [componentsPath + "/sortmenu/sortmenu"], returnFirstDependency);
|
||||||
define("serversync", [apiClientBowerPath + "/sync/serversync"], returnFirstDependency);
|
|
||||||
define("multiserversync", [apiClientBowerPath + "/sync/multiserversync"], returnFirstDependency);
|
|
||||||
define("mediasync", [apiClientBowerPath + "/sync/mediasync"], returnFirstDependency);
|
|
||||||
define("idb", [componentsPath + "/idb"], returnFirstDependency);
|
define("idb", [componentsPath + "/idb"], returnFirstDependency);
|
||||||
define("sanitizefilename", [componentsPath + "/sanitizefilename"], returnFirstDependency);
|
define("sanitizefilename", [componentsPath + "/sanitizefilename"], returnFirstDependency);
|
||||||
define("itemrepository", [apiClientBowerPath + "/sync/itemrepository"], returnFirstDependency);
|
|
||||||
define("useractionrepository", [apiClientBowerPath + "/sync/useractionrepository"], returnFirstDependency);
|
|
||||||
define("scroller", [componentsPath + "/scroller"], returnFirstDependency);
|
define("scroller", [componentsPath + "/scroller"], returnFirstDependency);
|
||||||
define("toast", [componentsPath + "/toast/toast"], returnFirstDependency);
|
define("toast", [componentsPath + "/toast/toast"], returnFirstDependency);
|
||||||
define("scrollHelper", [componentsPath + "/scrollhelper"], returnFirstDependency);
|
define("scrollHelper", [componentsPath + "/scrollhelper"], returnFirstDependency);
|
||||||
|
@ -838,22 +850,12 @@ var AppInfo = {};
|
||||||
define("appSettings", [componentsPath + "/appSettings"], returnFirstDependency);
|
define("appSettings", [componentsPath + "/appSettings"], returnFirstDependency);
|
||||||
define("userSettings", [componentsPath + "/usersettings/usersettings"], returnFirstDependency);
|
define("userSettings", [componentsPath + "/usersettings/usersettings"], returnFirstDependency);
|
||||||
define("userSettingsBuilder", [componentsPath + "/usersettings/usersettingsbuilder", "layoutManager", "browser"], returnFirstDependency);
|
define("userSettingsBuilder", [componentsPath + "/usersettings/usersettingsbuilder", "layoutManager", "browser"], returnFirstDependency);
|
||||||
define("material-icons", ["css!css/material-icons/style"], returnFirstDependency);
|
|
||||||
define("systemFontsCss", ["css!css/fonts"], returnFirstDependency);
|
|
||||||
define("systemFontsSizedCss", ["css!css/fonts.sized"], returnFirstDependency);
|
|
||||||
define("scrollStyles", ["css!" + componentsPath + "/scrollstyles"], returnFirstDependency);
|
|
||||||
define("imageUploader", [componentsPath + "/imageuploader/imageuploader"], returnFirstDependency);
|
define("imageUploader", [componentsPath + "/imageuploader/imageuploader"], returnFirstDependency);
|
||||||
define("navdrawer", [componentsPath + "/navdrawer/navdrawer"], returnFirstDependency);
|
define("navdrawer", [componentsPath + "/navdrawer/navdrawer"], returnFirstDependency);
|
||||||
define("htmlMediaHelper", [componentsPath + "/htmlMediaHelper"], returnFirstDependency);
|
define("htmlMediaHelper", [componentsPath + "/htmlMediaHelper"], returnFirstDependency);
|
||||||
define("viewContainer", [componentsPath + "/viewContainer"], returnFirstDependency);
|
define("viewContainer", [componentsPath + "/viewContainer"], returnFirstDependency);
|
||||||
define("queryString", [bowerPath + "/query-string/index"], function () {
|
|
||||||
return queryString;
|
|
||||||
});
|
|
||||||
define("fnchecked", ["legacy/fnchecked"], returnFirstDependency);
|
|
||||||
define("dialogHelper", [componentsPath + "/dialogHelper/dialogHelper"], returnFirstDependency);
|
define("dialogHelper", [componentsPath + "/dialogHelper/dialogHelper"], returnFirstDependency);
|
||||||
define("inputmanager", ["inputManager"], returnFirstDependency);
|
|
||||||
define("serverNotifications", [componentsPath + "/serverNotifications/serverNotifications"], returnFirstDependency);
|
define("serverNotifications", [componentsPath + "/serverNotifications/serverNotifications"], returnFirstDependency);
|
||||||
define("appFooter-shared", ["appFooter"], createSharedAppFooter);
|
|
||||||
define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency);
|
define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency);
|
||||||
define("keyboardnavigation", [componentsPath + "/keyboardnavigation"], returnFirstDependency);
|
define("keyboardnavigation", [componentsPath + "/keyboardnavigation"], returnFirstDependency);
|
||||||
define("connectionManager", [], function () {
|
define("connectionManager", [], function () {
|
||||||
|
@ -1129,13 +1131,13 @@ var AppInfo = {};
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
||||||
require(["css!css/site"]);
|
|
||||||
|
|
||||||
return require(["browser"], onWebComponentsReady);
|
return require(["browser"], onWebComponentsReady);
|
||||||
}();
|
}();
|
||||||
|
|
||||||
pageClassOn("viewshow", "standalonePage", function () {
|
pageClassOn("viewshow", "standalonePage", function () {
|
||||||
document.querySelector(".skinHeader").classList.add("noHeaderRight");
|
document.querySelector(".skinHeader").classList.add("noHeaderRight");
|
||||||
});
|
});
|
||||||
|
|
||||||
pageClassOn("viewhide", "standalonePage", function () {
|
pageClassOn("viewhide", "standalonePage", function () {
|
||||||
document.querySelector(".skinHeader").classList.remove("noHeaderRight");
|
document.querySelector(".skinHeader").classList.remove("noHeaderRight");
|
||||||
});
|
});
|
||||||
|
|
|
@ -50,7 +50,6 @@
|
||||||
"ButtonOff": "إيقاف التشغيل",
|
"ButtonOff": "إيقاف التشغيل",
|
||||||
"ButtonOk": "موافق",
|
"ButtonOk": "موافق",
|
||||||
"ButtonOpen": "إفتح",
|
"ButtonOpen": "إفتح",
|
||||||
"ButtonOther": "أخرى",
|
|
||||||
"ButtonParentalControl": "التحكم الأبوي",
|
"ButtonParentalControl": "التحكم الأبوي",
|
||||||
"ButtonPause": "توقف مؤقت",
|
"ButtonPause": "توقف مؤقت",
|
||||||
"ButtonPlay": "تشغيل",
|
"ButtonPlay": "تشغيل",
|
||||||
|
|
|
@ -785,5 +785,14 @@
|
||||||
"Wednesday": "Сряда",
|
"Wednesday": "Сряда",
|
||||||
"WelcomeToProject": "Добре дошли в Емби!",
|
"WelcomeToProject": "Добре дошли в Емби!",
|
||||||
"WizardCompleted": "Това е всичко от което се нуждаем за момента. Емби започна да събира данни за медийната ви библиотека. Разгледайте някои от нашите приложения, после натиснете <b>Готово</b>, за да видите <b>таблото на сървъра</b>.",
|
"WizardCompleted": "Това е всичко от което се нуждаем за момента. Емби започна да събира данни за медийната ви библиотека. Разгледайте някои от нашите приложения, после натиснете <b>Готово</b>, за да видите <b>таблото на сървъра</b>.",
|
||||||
"Writer": "Писател"
|
"Writer": "Писател",
|
||||||
|
"AllowMediaConversion": "Разрешаване на медиини преобразувания",
|
||||||
|
"AllLanguages": "Всички езици",
|
||||||
|
"AllEpisodes": "Всички епизоди",
|
||||||
|
"AllComplexFormats": "Всички комплексни формати (ASS, SSA, VOBSUB, PGS, SUB/IDX, и т.н.)",
|
||||||
|
"AllChannels": "Всички канали",
|
||||||
|
"Alerts": "Известия",
|
||||||
|
"AdditionalNotificationServices": "Разгледайте каталога с добавки за допълнителни услуги за известяване.",
|
||||||
|
"AddToPlayQueue": "Добавяне към опашка",
|
||||||
|
"AccessRestrictedTryAgainLater": "Достъпът е временно ограничен. Моля опитайте отново по-късно."
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,6 @@
|
||||||
"ButtonNextTrack": "Pista següent",
|
"ButtonNextTrack": "Pista següent",
|
||||||
"ButtonOk": "D'acord",
|
"ButtonOk": "D'acord",
|
||||||
"ButtonOpen": "Obre",
|
"ButtonOpen": "Obre",
|
||||||
"ButtonOther": "Altres",
|
|
||||||
"ButtonParentalControl": "Control parental",
|
"ButtonParentalControl": "Control parental",
|
||||||
"ButtonPause": "Pausa",
|
"ButtonPause": "Pausa",
|
||||||
"ButtonPlay": "Reprodueix",
|
"ButtonPlay": "Reprodueix",
|
||||||
|
|
|
@ -72,7 +72,6 @@
|
||||||
"ButtonNextTrack": "Následující stopa",
|
"ButtonNextTrack": "Následující stopa",
|
||||||
"ButtonOff": "Vypnout",
|
"ButtonOff": "Vypnout",
|
||||||
"ButtonOpen": "Otevřít",
|
"ButtonOpen": "Otevřít",
|
||||||
"ButtonOther": "Další",
|
|
||||||
"ButtonParentalControl": "Rodičovská kontrola",
|
"ButtonParentalControl": "Rodičovská kontrola",
|
||||||
"ButtonPause": "Pozastavit",
|
"ButtonPause": "Pozastavit",
|
||||||
"ButtonPlay": "Přehrát",
|
"ButtonPlay": "Přehrát",
|
||||||
|
@ -1298,7 +1297,6 @@
|
||||||
"Features": "Funkce",
|
"Features": "Funkce",
|
||||||
"Filters": "Filtry",
|
"Filters": "Filtry",
|
||||||
"Folders": "Složky",
|
"Folders": "Složky",
|
||||||
"ForAdditionalLiveTvOptions": "Pro další poskytovatele živého TV vysílání klikněte na záložku Služby a zobrazte dostupné možnosti.",
|
|
||||||
"General": "Hlavní",
|
"General": "Hlavní",
|
||||||
"GenreValue": "Žánr: {0}",
|
"GenreValue": "Žánr: {0}",
|
||||||
"GenresValue": "Žánry: {0}",
|
"GenresValue": "Žánry: {0}",
|
||||||
|
|
|
@ -67,7 +67,6 @@
|
||||||
"ButtonNextTrack": "Næste spor",
|
"ButtonNextTrack": "Næste spor",
|
||||||
"ButtonOff": "Fra",
|
"ButtonOff": "Fra",
|
||||||
"ButtonOpen": "Åben",
|
"ButtonOpen": "Åben",
|
||||||
"ButtonOther": "Andre",
|
|
||||||
"ButtonParentalControl": "Forældrekontrol",
|
"ButtonParentalControl": "Forældrekontrol",
|
||||||
"ButtonPlay": "Afspil",
|
"ButtonPlay": "Afspil",
|
||||||
"ButtonPreviousTrack": "Forrige spor",
|
"ButtonPreviousTrack": "Forrige spor",
|
||||||
|
@ -174,7 +173,6 @@
|
||||||
"FolderTypeMusicVideos": "Musikvideoer",
|
"FolderTypeMusicVideos": "Musikvideoer",
|
||||||
"FolderTypeTvShows": "TV",
|
"FolderTypeTvShows": "TV",
|
||||||
"FolderTypeUnset": "Ikke valgt (blandet indhold)",
|
"FolderTypeUnset": "Ikke valgt (blandet indhold)",
|
||||||
"ForAdditionalLiveTvOptions": "For ekstra Live TV udbydere, klik på Tjenester fanen for at se muligheder.",
|
|
||||||
"Friday": "Fredag",
|
"Friday": "Fredag",
|
||||||
"Fullscreen": "Fuldskærm",
|
"Fullscreen": "Fuldskærm",
|
||||||
"General": "Generel",
|
"General": "Generel",
|
||||||
|
@ -1297,7 +1295,6 @@
|
||||||
"LabelHomeNetworkQuality": "Hjemme netværk kvalitet:",
|
"LabelHomeNetworkQuality": "Hjemme netværk kvalitet:",
|
||||||
"LabelHomeScreenSectionValue": "Hjemmeskærm sektion {0}:",
|
"LabelHomeScreenSectionValue": "Hjemmeskærm sektion {0}:",
|
||||||
"LabelInternetQuality": "Internet kvalitet:",
|
"LabelInternetQuality": "Internet kvalitet:",
|
||||||
"LabelLocalSyncStatusValue": "Status: {0}",
|
|
||||||
"LabelLogs": "Log:",
|
"LabelLogs": "Log:",
|
||||||
"LabelMatchType": "Passer til type:",
|
"LabelMatchType": "Passer til type:",
|
||||||
"LabelMaxBitrate": "Maks bitrate:",
|
"LabelMaxBitrate": "Maks bitrate:",
|
||||||
|
|
|
@ -95,7 +95,6 @@
|
||||||
"ButtonNextTrack": "Nächstes Stück",
|
"ButtonNextTrack": "Nächstes Stück",
|
||||||
"ButtonOff": "Ausschalten",
|
"ButtonOff": "Ausschalten",
|
||||||
"ButtonOpen": "Öffnen",
|
"ButtonOpen": "Öffnen",
|
||||||
"ButtonOther": "Andere",
|
|
||||||
"ButtonParentalControl": "Kindersicherung",
|
"ButtonParentalControl": "Kindersicherung",
|
||||||
"ButtonPlay": "Abspielen",
|
"ButtonPlay": "Abspielen",
|
||||||
"ButtonPreviousTrack": "Vorheriges Stück",
|
"ButtonPreviousTrack": "Vorheriges Stück",
|
||||||
|
@ -200,10 +199,10 @@
|
||||||
"EditSubtitles": "Untertitel bearbeiten",
|
"EditSubtitles": "Untertitel bearbeiten",
|
||||||
"EnableBackdrops": "Aktiviere Hintergründe",
|
"EnableBackdrops": "Aktiviere Hintergründe",
|
||||||
"EnableBackdropsHelp": "Wenn aktiviert, werden während des Browsens durch die Bibliothek auf einigen Seiten passende Hintergründe angezeigt.",
|
"EnableBackdropsHelp": "Wenn aktiviert, werden während des Browsens durch die Bibliothek auf einigen Seiten passende Hintergründe angezeigt.",
|
||||||
"EnableCinemaMode": "Aktiviere den Kino-Modus",
|
"EnableCinemaMode": "Kino-Modus",
|
||||||
"EnableColorCodedBackgrounds": "Aktiviere farbige Hintergründe",
|
"EnableColorCodedBackgrounds": "Aktiviere farbige Hintergründe",
|
||||||
"EnableDisplayMirroring": "Aktiviere Display-Weiterleitung",
|
"EnableDisplayMirroring": "Display-Spiegelung",
|
||||||
"EnableExternalVideoPlayers": "Aktiviere externe Videoplayer",
|
"EnableExternalVideoPlayers": "Externe Videoplayer",
|
||||||
"EnableExternalVideoPlayersHelp": "Ein Menü für externe Videoplayer wird beim Start der Videowiedergabe angezeigt.",
|
"EnableExternalVideoPlayersHelp": "Ein Menü für externe Videoplayer wird beim Start der Videowiedergabe angezeigt.",
|
||||||
"EnableHardwareEncoding": "Aktiviere Hardware-Encoding",
|
"EnableHardwareEncoding": "Aktiviere Hardware-Encoding",
|
||||||
"EnableNextVideoInfoOverlay": "Aktiviere \"Next-Video-Info\" während der Wiedergabe",
|
"EnableNextVideoInfoOverlay": "Aktiviere \"Next-Video-Info\" während der Wiedergabe",
|
||||||
|
@ -248,7 +247,6 @@
|
||||||
"FolderTypeMusicVideos": "Musikvideos",
|
"FolderTypeMusicVideos": "Musikvideos",
|
||||||
"FolderTypeUnset": "Keine Auswahl (gemischter Inhalt)",
|
"FolderTypeUnset": "Keine Auswahl (gemischter Inhalt)",
|
||||||
"Folders": "Verzeichnisse",
|
"Folders": "Verzeichnisse",
|
||||||
"ForAdditionalLiveTvOptions": "Für weitere TV Quellen klicke auf den \"Dienste\"-Reiter um weitere Optionen anzuzeigen.",
|
|
||||||
"Friday": "Freitag",
|
"Friday": "Freitag",
|
||||||
"Fullscreen": "Vollbild",
|
"Fullscreen": "Vollbild",
|
||||||
"General": "Allgemein",
|
"General": "Allgemein",
|
||||||
|
|
|
@ -80,7 +80,6 @@
|
||||||
"ButtonNew": "Νέο",
|
"ButtonNew": "Νέο",
|
||||||
"ButtonNextTrack": "Επομενο",
|
"ButtonNextTrack": "Επομενο",
|
||||||
"ButtonOpen": "Άνοιγμα",
|
"ButtonOpen": "Άνοιγμα",
|
||||||
"ButtonOther": "Άλλα",
|
|
||||||
"ButtonParentalControl": "Γονικός έλεγχος",
|
"ButtonParentalControl": "Γονικός έλεγχος",
|
||||||
"ButtonPause": "Παύση",
|
"ButtonPause": "Παύση",
|
||||||
"ButtonPlay": "Αναπαραγωγή",
|
"ButtonPlay": "Αναπαραγωγή",
|
||||||
|
|
|
@ -142,7 +142,6 @@
|
||||||
"ButtonOff": "Off",
|
"ButtonOff": "Off",
|
||||||
"ButtonOk": "Ok",
|
"ButtonOk": "Ok",
|
||||||
"ButtonOpen": "Open",
|
"ButtonOpen": "Open",
|
||||||
"ButtonOther": "Other",
|
|
||||||
"ButtonParentalControl": "Parental control",
|
"ButtonParentalControl": "Parental control",
|
||||||
"ButtonPause": "Pause",
|
"ButtonPause": "Pause",
|
||||||
"ButtonPlay": "Play",
|
"ButtonPlay": "Play",
|
||||||
|
@ -296,7 +295,6 @@
|
||||||
"FolderTypeMusicVideos": "Music videos",
|
"FolderTypeMusicVideos": "Music videos",
|
||||||
"FolderTypeTvShows": "TV Shows",
|
"FolderTypeTvShows": "TV Shows",
|
||||||
"FolderTypeUnset": "Mixed content",
|
"FolderTypeUnset": "Mixed content",
|
||||||
"ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.",
|
|
||||||
"FormatValue": "Format: {0}",
|
"FormatValue": "Format: {0}",
|
||||||
"Friday": "Friday",
|
"Friday": "Friday",
|
||||||
"Fullscreen": "Full screen",
|
"Fullscreen": "Full screen",
|
||||||
|
|
|
@ -96,7 +96,6 @@
|
||||||
"ButtonOff": "Off",
|
"ButtonOff": "Off",
|
||||||
"ButtonOk": "Ok",
|
"ButtonOk": "Ok",
|
||||||
"ButtonOpen": "Open",
|
"ButtonOpen": "Open",
|
||||||
"ButtonOther": "Other",
|
|
||||||
"ButtonParentalControl": "Parental control",
|
"ButtonParentalControl": "Parental control",
|
||||||
"ButtonPause": "Pause",
|
"ButtonPause": "Pause",
|
||||||
"ButtonPlay": "Play",
|
"ButtonPlay": "Play",
|
||||||
|
@ -263,7 +262,6 @@
|
||||||
"FolderTypeTvShows": "TV Shows",
|
"FolderTypeTvShows": "TV Shows",
|
||||||
"FolderTypeUnset": "Mixed Content",
|
"FolderTypeUnset": "Mixed Content",
|
||||||
"Folders": "Folders",
|
"Folders": "Folders",
|
||||||
"ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.",
|
|
||||||
"FormatValue": "Format: {0}",
|
"FormatValue": "Format: {0}",
|
||||||
"Friday": "Friday",
|
"Friday": "Friday",
|
||||||
"Fullscreen": "Full screen",
|
"Fullscreen": "Full screen",
|
||||||
|
@ -1093,7 +1091,7 @@
|
||||||
"OptionDownloadBoxImage": "Box",
|
"OptionDownloadBoxImage": "Box",
|
||||||
"OptionDownloadDiscImage": "Disc",
|
"OptionDownloadDiscImage": "Disc",
|
||||||
"OptionDownloadImagesInAdvance": "Download images in advance",
|
"OptionDownloadImagesInAdvance": "Download images in advance",
|
||||||
"OptionDownloadImagesInAdvanceHelp": "By default, most images are only downloaded when requested by an Jellyfin app. Enable this option to download all images in advance, as new media is imported. This may cause significantly longer library scans.",
|
"OptionDownloadImagesInAdvanceHelp": "By default, most images are only downloaded when requested by a Jellyfin app. Enable this option to download all images in advance, as new media is imported. This may cause significantly longer library scans.",
|
||||||
"OptionDownloadLogoImage": "Logo",
|
"OptionDownloadLogoImage": "Logo",
|
||||||
"OptionDownloadMenuImage": "Menu",
|
"OptionDownloadMenuImage": "Menu",
|
||||||
"OptionDownloadPrimaryImage": "Primary",
|
"OptionDownloadPrimaryImage": "Primary",
|
||||||
|
|
|
@ -166,7 +166,6 @@
|
||||||
"ButtonOff": "Desactivado",
|
"ButtonOff": "Desactivado",
|
||||||
"ButtonOk": "Aceptar",
|
"ButtonOk": "Aceptar",
|
||||||
"ButtonOpen": "Abrir",
|
"ButtonOpen": "Abrir",
|
||||||
"ButtonOther": "Otro",
|
|
||||||
"ButtonParentalControl": "Control parental",
|
"ButtonParentalControl": "Control parental",
|
||||||
"ButtonPause": "Pausar",
|
"ButtonPause": "Pausar",
|
||||||
"ButtonPlay": "Reproducir",
|
"ButtonPlay": "Reproducir",
|
||||||
|
@ -395,7 +394,6 @@
|
||||||
"FolderTypeMusic": "Música",
|
"FolderTypeMusic": "Música",
|
||||||
"FolderTypeMusicVideos": "Videos Musicales",
|
"FolderTypeMusicVideos": "Videos Musicales",
|
||||||
"FolderTypeUnset": "Sin especificar (Contenido Mixto)",
|
"FolderTypeUnset": "Sin especificar (Contenido Mixto)",
|
||||||
"ForAdditionalLiveTvOptions": "Para proveedores adicionales de TV en Vivo, hacé click en la pestaña Servicios para ver las opciones disponibles.",
|
|
||||||
"FormatValue": "Formato: {0}",
|
"FormatValue": "Formato: {0}",
|
||||||
"Friday": "Viernes",
|
"Friday": "Viernes",
|
||||||
"Fullscreen": "Pantalla Completa",
|
"Fullscreen": "Pantalla Completa",
|
||||||
|
|
|
@ -93,7 +93,6 @@
|
||||||
"ButtonNextTrack": "Pista siguiente",
|
"ButtonNextTrack": "Pista siguiente",
|
||||||
"ButtonOff": "Apagar",
|
"ButtonOff": "Apagar",
|
||||||
"ButtonOpen": "Abrir",
|
"ButtonOpen": "Abrir",
|
||||||
"ButtonOther": "Otros",
|
|
||||||
"ButtonParentalControl": "Control parental",
|
"ButtonParentalControl": "Control parental",
|
||||||
"ButtonPause": "Pausar",
|
"ButtonPause": "Pausar",
|
||||||
"ButtonPlay": "Reproducir",
|
"ButtonPlay": "Reproducir",
|
||||||
|
@ -253,7 +252,6 @@
|
||||||
"FolderTypeTvShows": "Series de TV",
|
"FolderTypeTvShows": "Series de TV",
|
||||||
"FolderTypeUnset": "Contenido variado",
|
"FolderTypeUnset": "Contenido variado",
|
||||||
"Folders": "Carpetas",
|
"Folders": "Carpetas",
|
||||||
"ForAdditionalLiveTvOptions": "Para proveedores adicionales de TV en Vivo, de clic en la pestaña de Servicios para ver las opciones disponibles.",
|
|
||||||
"FormatValue": "Formato: {0}",
|
"FormatValue": "Formato: {0}",
|
||||||
"Friday": "Viernes",
|
"Friday": "Viernes",
|
||||||
"Fullscreen": "Pantalla Completa",
|
"Fullscreen": "Pantalla Completa",
|
||||||
|
|
|
@ -79,7 +79,6 @@
|
||||||
"ButtonOff": "Apagado",
|
"ButtonOff": "Apagado",
|
||||||
"ButtonOk": "OK",
|
"ButtonOk": "OK",
|
||||||
"ButtonOpen": "Abrir",
|
"ButtonOpen": "Abrir",
|
||||||
"ButtonOther": "Otro",
|
|
||||||
"ButtonParentalControl": "Control parental",
|
"ButtonParentalControl": "Control parental",
|
||||||
"ButtonPause": "Pausa",
|
"ButtonPause": "Pausa",
|
||||||
"ButtonPlay": "Reproducir",
|
"ButtonPlay": "Reproducir",
|
||||||
|
@ -175,7 +174,7 @@
|
||||||
"EnableNextVideoInfoOverlay": "Muestra la información del siguiente video durante la reproducción",
|
"EnableNextVideoInfoOverlay": "Muestra la información del siguiente video durante la reproducción",
|
||||||
"EnablePhotos": "Mostrar fotos",
|
"EnablePhotos": "Mostrar fotos",
|
||||||
"EnablePhotosHelp": "Las imágenes se detectarán y se mostrarán junto con otros archivos multimedia.",
|
"EnablePhotosHelp": "Las imágenes se detectarán y se mostrarán junto con otros archivos multimedia.",
|
||||||
"EnableStreamLooping": "Bucle automático de los streams en directo",
|
"EnableStreamLooping": "Bucle automático de las emisiones en directo",
|
||||||
"EnableStreamLoopingHelp": "Habilite esto si las emisiones en directo sólo contienen unos pocos segundos de datos y necesitan ser solicitados continuamente.",
|
"EnableStreamLoopingHelp": "Habilite esto si las emisiones en directo sólo contienen unos pocos segundos de datos y necesitan ser solicitados continuamente.",
|
||||||
"EnableThemeVideos": "Vídeos temáticos",
|
"EnableThemeVideos": "Vídeos temáticos",
|
||||||
"Ended": "Finalizado",
|
"Ended": "Finalizado",
|
||||||
|
@ -207,7 +206,6 @@
|
||||||
"FolderTypeMusicVideos": "Vídeos Musicales",
|
"FolderTypeMusicVideos": "Vídeos Musicales",
|
||||||
"FolderTypeTvShows": "Programas de TV",
|
"FolderTypeTvShows": "Programas de TV",
|
||||||
"FolderTypeUnset": "Contenido Mixto",
|
"FolderTypeUnset": "Contenido Mixto",
|
||||||
"ForAdditionalLiveTvOptions": "Para proveedores adicionales de televisión en directo, haga clic en la pestaña Servicios para ver las opciones disponibles.",
|
|
||||||
"FormatValue": "Formato: {0}",
|
"FormatValue": "Formato: {0}",
|
||||||
"Friday": "Viernes",
|
"Friday": "Viernes",
|
||||||
"Fullscreen": "Pantalla completa",
|
"Fullscreen": "Pantalla completa",
|
||||||
|
@ -228,7 +226,7 @@
|
||||||
"HeaderActivity": "Actividad",
|
"HeaderActivity": "Actividad",
|
||||||
"HeaderAddScheduledTaskTrigger": "Agregar Activador",
|
"HeaderAddScheduledTaskTrigger": "Agregar Activador",
|
||||||
"HeaderAddToCollection": "Agregar a la colección",
|
"HeaderAddToCollection": "Agregar a la colección",
|
||||||
"HeaderAddToPlaylist": "Añadir a la lista",
|
"HeaderAddToPlaylist": "Añadir a la lista de reproducción",
|
||||||
"HeaderAddUpdateImage": "Añadir/Actualizar imagen",
|
"HeaderAddUpdateImage": "Añadir/Actualizar imagen",
|
||||||
"HeaderAddUser": "Agregar usuario",
|
"HeaderAddUser": "Agregar usuario",
|
||||||
"HeaderAdditionalParts": "Partes adicionales",
|
"HeaderAdditionalParts": "Partes adicionales",
|
||||||
|
@ -325,7 +323,7 @@
|
||||||
"HeaderMediaFolders": "Carpetas de medios",
|
"HeaderMediaFolders": "Carpetas de medios",
|
||||||
"HeaderMediaInfo": "Información multimedia",
|
"HeaderMediaInfo": "Información multimedia",
|
||||||
"HeaderMetadataSettings": "Ajustes de metadatos",
|
"HeaderMetadataSettings": "Ajustes de metadatos",
|
||||||
"HeaderMoreLikeThis": "Más como éste",
|
"HeaderMoreLikeThis": "Más como este",
|
||||||
"HeaderMovies": "Películas",
|
"HeaderMovies": "Películas",
|
||||||
"HeaderMusicVideos": "Vídeos musicales",
|
"HeaderMusicVideos": "Vídeos musicales",
|
||||||
"HeaderMyDevice": "Mi dispositivo",
|
"HeaderMyDevice": "Mi dispositivo",
|
||||||
|
@ -334,7 +332,7 @@
|
||||||
"HeaderNewApiKey": "Nueva clave API",
|
"HeaderNewApiKey": "Nueva clave API",
|
||||||
"HeaderNewDevices": "Nuevos dispositivos",
|
"HeaderNewDevices": "Nuevos dispositivos",
|
||||||
"HeaderNextEpisodePlayingInValue": "Siguiente episodio empezará en {0}",
|
"HeaderNextEpisodePlayingInValue": "Siguiente episodio empezará en {0}",
|
||||||
"HeaderNextUp": "Siguiendo",
|
"HeaderNextUp": "Siguiente",
|
||||||
"HeaderNextVideoPlayingInValue": "Siguiente vídeo empezará en {0}",
|
"HeaderNextVideoPlayingInValue": "Siguiente vídeo empezará en {0}",
|
||||||
"HeaderOnNow": "Transmitiendo ahora",
|
"HeaderOnNow": "Transmitiendo ahora",
|
||||||
"HeaderOtherItems": "Otros elementos",
|
"HeaderOtherItems": "Otros elementos",
|
||||||
|
@ -647,7 +645,7 @@
|
||||||
"LabelPersonRole": "Rol:",
|
"LabelPersonRole": "Rol:",
|
||||||
"LabelPlaceOfBirth": "Lugar de nacimiento:",
|
"LabelPlaceOfBirth": "Lugar de nacimiento:",
|
||||||
"LabelPlayDefaultAudioTrack": "Reproducir pista de audio predeterminado, independientemente del idioma",
|
"LabelPlayDefaultAudioTrack": "Reproducir pista de audio predeterminado, independientemente del idioma",
|
||||||
"LabelPlaylist": "Lista:",
|
"LabelPlaylist": "Lista de reproducción:",
|
||||||
"LabelPostProcessor": "Aplicación de post-procesamiento:",
|
"LabelPostProcessor": "Aplicación de post-procesamiento:",
|
||||||
"LabelPostProcessorArguments": "Argumentos de línea de comandos posprocesador:",
|
"LabelPostProcessorArguments": "Argumentos de línea de comandos posprocesador:",
|
||||||
"LabelPostProcessorArgumentsHelp": "Utilice {path} como ruta del archivo de grabación.",
|
"LabelPostProcessorArgumentsHelp": "Utilice {path} como ruta del archivo de grabación.",
|
||||||
|
@ -1055,7 +1053,7 @@
|
||||||
"ReleaseDate": "Fecha de lanzamiento",
|
"ReleaseDate": "Fecha de lanzamiento",
|
||||||
"RememberMe": "Recuérdame",
|
"RememberMe": "Recuérdame",
|
||||||
"RemoveFromCollection": "Quitar de la colección",
|
"RemoveFromCollection": "Quitar de la colección",
|
||||||
"RemoveFromPlaylist": "Quitar de la lista",
|
"RemoveFromPlaylist": "Quitar de la lista de reproducción",
|
||||||
"Repeat": "Repetir",
|
"Repeat": "Repetir",
|
||||||
"RepeatAll": "Repetir todo",
|
"RepeatAll": "Repetir todo",
|
||||||
"RepeatEpisodes": "Repetir episodios",
|
"RepeatEpisodes": "Repetir episodios",
|
||||||
|
@ -1421,7 +1419,7 @@
|
||||||
"TV": "Televisión",
|
"TV": "Televisión",
|
||||||
"TabInfo": "Info",
|
"TabInfo": "Info",
|
||||||
"TabLogs": "Registros",
|
"TabLogs": "Registros",
|
||||||
"TabPlugins": "Plugins",
|
"TabPlugins": "Complementos",
|
||||||
"TabSeries": "Series",
|
"TabSeries": "Series",
|
||||||
"TabTrailers": "Tráilers",
|
"TabTrailers": "Tráilers",
|
||||||
"TagsValue": "Etiquetas: {0}",
|
"TagsValue": "Etiquetas: {0}",
|
||||||
|
|
|
@ -164,7 +164,6 @@
|
||||||
"ButtonOff": "Pois päältä",
|
"ButtonOff": "Pois päältä",
|
||||||
"ButtonOk": "Ok",
|
"ButtonOk": "Ok",
|
||||||
"ButtonOpen": "Avoin",
|
"ButtonOpen": "Avoin",
|
||||||
"ButtonOther": "Muu",
|
|
||||||
"BurnSubtitlesHelp": "Määrittää jos palvelimen pitäisi upottaa tekstitykset suoraan videotiedostoon muuntamisvaiheessa tekstitysformaatista riippuen. Upottamisen välttäminen parantaa palvelimen suorituskykyä. Valitse Automaattinen upottaaksesi sekä kuvapohjaiset- (esim. VOBSUB, PGS, SUB/IDX, jne.) että ASS/SSA tekstitysmuodot",
|
"BurnSubtitlesHelp": "Määrittää jos palvelimen pitäisi upottaa tekstitykset suoraan videotiedostoon muuntamisvaiheessa tekstitysformaatista riippuen. Upottamisen välttäminen parantaa palvelimen suorituskykyä. Valitse Automaattinen upottaaksesi sekä kuvapohjaiset- (esim. VOBSUB, PGS, SUB/IDX, jne.) että ASS/SSA tekstitysmuodot",
|
||||||
"ButtonParentalControl": "Lapsilukko",
|
"ButtonParentalControl": "Lapsilukko",
|
||||||
"ButtonPause": "Tauko",
|
"ButtonPause": "Tauko",
|
||||||
|
|
|
@ -90,7 +90,6 @@
|
||||||
"ButtonOff": "Arrêt",
|
"ButtonOff": "Arrêt",
|
||||||
"ButtonOk": "OK",
|
"ButtonOk": "OK",
|
||||||
"ButtonOpen": "Ouvrir",
|
"ButtonOpen": "Ouvrir",
|
||||||
"ButtonOther": "Autre",
|
|
||||||
"ButtonParentalControl": "Contrôle parental",
|
"ButtonParentalControl": "Contrôle parental",
|
||||||
"ButtonPlay": "Lire",
|
"ButtonPlay": "Lire",
|
||||||
"ButtonPreviousTrack": "Piste précédente",
|
"ButtonPreviousTrack": "Piste précédente",
|
||||||
|
@ -251,7 +250,6 @@
|
||||||
"FolderTypeTvShows": "TV",
|
"FolderTypeTvShows": "TV",
|
||||||
"FolderTypeUnset": "Contenu mixte",
|
"FolderTypeUnset": "Contenu mixte",
|
||||||
"Folders": "Dossiers",
|
"Folders": "Dossiers",
|
||||||
"ForAdditionalLiveTvOptions": "Pour d'autres fournisseurs de TV en direct, cliquez sur l'onglet Services afin de voir les options disponibles.",
|
|
||||||
"FormatValue": "Format : {0}",
|
"FormatValue": "Format : {0}",
|
||||||
"Friday": "Vendredi",
|
"Friday": "Vendredi",
|
||||||
"Fullscreen": "Plein écran",
|
"Fullscreen": "Plein écran",
|
||||||
|
@ -309,7 +307,7 @@
|
||||||
"HeaderContainerProfile": "Profil de conteneur",
|
"HeaderContainerProfile": "Profil de conteneur",
|
||||||
"HeaderContainerProfileHelp": "Les profils de conteneur indiquent les limites d'un appareil lors de la lecture de formats spécifiques. Si la limite s'applique au média, ce dernier sera transcodé, même si le format est configuré pour la lecture directe.",
|
"HeaderContainerProfileHelp": "Les profils de conteneur indiquent les limites d'un appareil lors de la lecture de formats spécifiques. Si la limite s'applique au média, ce dernier sera transcodé, même si le format est configuré pour la lecture directe.",
|
||||||
"HeaderContinueListening": "Reprendre l'écoute",
|
"HeaderContinueListening": "Reprendre l'écoute",
|
||||||
"HeaderContinueWatching": "Reprendre",
|
"HeaderContinueWatching": "Continuer à regarder",
|
||||||
"HeaderCustomDlnaProfiles": "Profils personnalisés",
|
"HeaderCustomDlnaProfiles": "Profils personnalisés",
|
||||||
"HeaderDateIssued": "Date de publication",
|
"HeaderDateIssued": "Date de publication",
|
||||||
"HeaderDefaultRecordingSettings": "Paramètres d'enregistrement par défaut",
|
"HeaderDefaultRecordingSettings": "Paramètres d'enregistrement par défaut",
|
||||||
|
|
|
@ -54,7 +54,6 @@
|
||||||
"ButtonOff": "Isključi",
|
"ButtonOff": "Isključi",
|
||||||
"ButtonOk": "U redu",
|
"ButtonOk": "U redu",
|
||||||
"ButtonOpen": "Otvori",
|
"ButtonOpen": "Otvori",
|
||||||
"ButtonOther": "Ostalo",
|
|
||||||
"ButtonParentalControl": "Roditeljska kontrola",
|
"ButtonParentalControl": "Roditeljska kontrola",
|
||||||
"ButtonPause": "Pauza",
|
"ButtonPause": "Pauza",
|
||||||
"ButtonPlay": "Pokreni",
|
"ButtonPlay": "Pokreni",
|
||||||
|
|
|
@ -621,7 +621,6 @@
|
||||||
"ButtonLearnMore": "Tudj meg többet",
|
"ButtonLearnMore": "Tudj meg többet",
|
||||||
"ButtonNetwork": "Hálózat",
|
"ButtonNetwork": "Hálózat",
|
||||||
"ButtonOk": "Ok",
|
"ButtonOk": "Ok",
|
||||||
"ButtonOther": "Egyéb",
|
|
||||||
"ButtonRevoke": "Visszavon",
|
"ButtonRevoke": "Visszavon",
|
||||||
"ButtonSelectView": "Válassz nézetet",
|
"ButtonSelectView": "Válassz nézetet",
|
||||||
"ButtonStart": "Start",
|
"ButtonStart": "Start",
|
||||||
|
@ -697,7 +696,6 @@
|
||||||
"File": "Fájl",
|
"File": "Fájl",
|
||||||
"FileReadCancelled": "Az olvasott fájl törlése megtörtént.",
|
"FileReadCancelled": "Az olvasott fájl törlése megtörtént.",
|
||||||
"FileReadError": "Hiba történt a fájl olvasása közben.",
|
"FileReadError": "Hiba történt a fájl olvasása közben.",
|
||||||
"ForAdditionalLiveTvOptions": "A további Élő TV szolgáltatókhoz kattints a Szolgáltatások fülre a rendelkezésre álló lehetőségek megtekintéséhez.",
|
|
||||||
"GroupBySeries": "Csoportosítás sorozatonként",
|
"GroupBySeries": "Csoportosítás sorozatonként",
|
||||||
"GuestStar": "Vendég sztár",
|
"GuestStar": "Vendég sztár",
|
||||||
"GuideProviderLogin": "Bejelentkezés",
|
"GuideProviderLogin": "Bejelentkezés",
|
||||||
|
@ -1319,7 +1317,7 @@
|
||||||
"H264CrfHelp": "A Constant Rate Factor (CRF) az alapértelmezett minőségi beállítás az x264 enkóderhez. Az értékek 0 és 51 között állíthatók, ahol az alacsonyabb érték jobb minőséget eredményez (nagyobb fájl méret mellett). Az ajánlott érték 18 és 28 között van. Az x264 alapértelmezett beállítása 23, ez lehet kiindulási alap.",
|
"H264CrfHelp": "A Constant Rate Factor (CRF) az alapértelmezett minőségi beállítás az x264 enkóderhez. Az értékek 0 és 51 között állíthatók, ahol az alacsonyabb érték jobb minőséget eredményez (nagyobb fájl méret mellett). Az ajánlott érték 18 és 28 között van. Az x264 alapértelmezett beállítása 23, ez lehet kiindulási alap.",
|
||||||
"HeaderAddScheduledTaskTrigger": "Vezérlő Hozzáadása",
|
"HeaderAddScheduledTaskTrigger": "Vezérlő Hozzáadása",
|
||||||
"HeaderApiKeysHelp": "A külső alkalmazásoknak egy API kulcsra van szükésge, hogy kommunikáljanak a Jellyfin szerverrel. A kulcsokat egy Jellyfin fiókkal történő belépéssel lehet megkapni, vagy kézileg felvenni egy alkalmazáshoz tartozó kulcsot.",
|
"HeaderApiKeysHelp": "A külső alkalmazásoknak egy API kulcsra van szükésge, hogy kommunikáljanak a Jellyfin szerverrel. A kulcsokat egy Jellyfin fiókkal történő belépéssel lehet megkapni, vagy kézileg felvenni egy alkalmazáshoz tartozó kulcsot.",
|
||||||
"HeaderBranding": "Személyes Márka",
|
"HeaderBranding": "Személyes védjegy",
|
||||||
"HeaderContinueListening": "Folyamatban lévő zenék",
|
"HeaderContinueListening": "Folyamatban lévő zenék",
|
||||||
"HeaderDeleteTaskTrigger": "Feladatvezérlő törlése",
|
"HeaderDeleteTaskTrigger": "Feladatvezérlő törlése",
|
||||||
"HeaderFavoriteMovies": "Kedvenc Filmek",
|
"HeaderFavoriteMovies": "Kedvenc Filmek",
|
||||||
|
|
|
@ -81,7 +81,6 @@
|
||||||
"ButtonNextTrack": "Traccia Successiva",
|
"ButtonNextTrack": "Traccia Successiva",
|
||||||
"ButtonOff": "Spento",
|
"ButtonOff": "Spento",
|
||||||
"ButtonOpen": "Apri",
|
"ButtonOpen": "Apri",
|
||||||
"ButtonOther": "Altro",
|
|
||||||
"ButtonParentalControl": "Controllo parentale",
|
"ButtonParentalControl": "Controllo parentale",
|
||||||
"ButtonPause": "Pausa",
|
"ButtonPause": "Pausa",
|
||||||
"ButtonPlay": "Riproduci",
|
"ButtonPlay": "Riproduci",
|
||||||
|
@ -238,7 +237,6 @@
|
||||||
"FolderTypeMusicVideos": "Video musicali",
|
"FolderTypeMusicVideos": "Video musicali",
|
||||||
"FolderTypeUnset": "Contenuto Misto",
|
"FolderTypeUnset": "Contenuto Misto",
|
||||||
"Folders": "Cartelle",
|
"Folders": "Cartelle",
|
||||||
"ForAdditionalLiveTvOptions": "Per ulteriori provider Live TV, fare clic sulla scheda Servizi per vedere le opzioni disponibili.",
|
|
||||||
"FormatValue": "Formato: {0}",
|
"FormatValue": "Formato: {0}",
|
||||||
"Friday": "Venerdì",
|
"Friday": "Venerdì",
|
||||||
"Fullscreen": "Schermo Intero",
|
"Fullscreen": "Schermo Intero",
|
||||||
|
|
|
@ -91,7 +91,6 @@
|
||||||
"ButtonNextTrack": "次のトラック",
|
"ButtonNextTrack": "次のトラック",
|
||||||
"ButtonOk": "OK",
|
"ButtonOk": "OK",
|
||||||
"ButtonOpen": "開く",
|
"ButtonOpen": "開く",
|
||||||
"ButtonOther": "その他",
|
|
||||||
"ButtonParentalControl": "ペアレンタルコントロール",
|
"ButtonParentalControl": "ペアレンタルコントロール",
|
||||||
"ButtonPause": "一時停止",
|
"ButtonPause": "一時停止",
|
||||||
"ButtonPlay": "再生",
|
"ButtonPlay": "再生",
|
||||||
|
@ -263,7 +262,6 @@
|
||||||
"FolderTypeTvShows": "テレビ番組",
|
"FolderTypeTvShows": "テレビ番組",
|
||||||
"FolderTypeUnset": "ミックスコンテンツ",
|
"FolderTypeUnset": "ミックスコンテンツ",
|
||||||
"Folders": "フォルダー",
|
"Folders": "フォルダー",
|
||||||
"ForAdditionalLiveTvOptions": "その他のLive TV プロバイダーの場合は、[サービス]タブをクリックして利用可能なオプションを確認してください。",
|
|
||||||
"FormatValue": "フォーマット: {0}",
|
"FormatValue": "フォーマット: {0}",
|
||||||
"Friday": "金曜日",
|
"Friday": "金曜日",
|
||||||
"Fullscreen": "フルスクリーン",
|
"Fullscreen": "フルスクリーン",
|
||||||
|
@ -505,5 +503,6 @@
|
||||||
"Shows": "番組",
|
"Shows": "番組",
|
||||||
"Songs": "曲",
|
"Songs": "曲",
|
||||||
"Sync": "同期",
|
"Sync": "同期",
|
||||||
"ValueSpecialEpisodeName": "スペシャル - {0}"
|
"ValueSpecialEpisodeName": "スペシャル - {0}",
|
||||||
|
"ButtonAddImage": "イメージの追加"
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,6 @@
|
||||||
"ButtonOff": "Óshir",
|
"ButtonOff": "Óshir",
|
||||||
"ButtonOk": "Jaraıdy",
|
"ButtonOk": "Jaraıdy",
|
||||||
"ButtonOpen": "Ashý",
|
"ButtonOpen": "Ashý",
|
||||||
"ButtonOther": "Basqa",
|
|
||||||
"ButtonParentalControl": "Mazmundy basqarý",
|
"ButtonParentalControl": "Mazmundy basqarý",
|
||||||
"ButtonPause": "Úzý",
|
"ButtonPause": "Úzý",
|
||||||
"ButtonPlay": "Oınatý",
|
"ButtonPlay": "Oınatý",
|
||||||
|
@ -264,7 +263,6 @@
|
||||||
"FolderTypeTvShows": "TD-kórsetimder",
|
"FolderTypeTvShows": "TD-kórsetimder",
|
||||||
"FolderTypeUnset": "Aralas mazmun",
|
"FolderTypeUnset": "Aralas mazmun",
|
||||||
"Folders": "Qaltalar",
|
"Folders": "Qaltalar",
|
||||||
"ForAdditionalLiveTvOptions": "Qosymsha efırlik TD jetkizýshiler úshin, Qyzmetter qoıyndysyn nuqyp, qoljetimdi opsıalarben tanysyńyz.",
|
|
||||||
"FormatValue": "Pishim: {0}",
|
"FormatValue": "Pishim: {0}",
|
||||||
"Friday": "juma",
|
"Friday": "juma",
|
||||||
"Fullscreen": "Tolyq ekran",
|
"Fullscreen": "Tolyq ekran",
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -569,7 +569,6 @@
|
||||||
"ButtonNetwork": "Tinklas",
|
"ButtonNetwork": "Tinklas",
|
||||||
"ButtonOff": "Išjungti",
|
"ButtonOff": "Išjungti",
|
||||||
"ButtonOpen": "Atidaryti",
|
"ButtonOpen": "Atidaryti",
|
||||||
"ButtonOther": "Kita",
|
|
||||||
"ButtonParentalControl": "Tėvų kontrolė",
|
"ButtonParentalControl": "Tėvų kontrolė",
|
||||||
"ButtonProfile": "Profilis",
|
"ButtonProfile": "Profilis",
|
||||||
"ButtonRename": "Pervadinti",
|
"ButtonRename": "Pervadinti",
|
||||||
|
|
1247
src/strings/nb.json
1247
src/strings/nb.json
File diff suppressed because it is too large
Load diff
|
@ -86,7 +86,6 @@
|
||||||
"ButtonNextTrack": "Volgende track",
|
"ButtonNextTrack": "Volgende track",
|
||||||
"ButtonOff": "Uit",
|
"ButtonOff": "Uit",
|
||||||
"ButtonOpen": "Openen",
|
"ButtonOpen": "Openen",
|
||||||
"ButtonOther": "Andere",
|
|
||||||
"ButtonParentalControl": "Ouderlijk toezicht",
|
"ButtonParentalControl": "Ouderlijk toezicht",
|
||||||
"ButtonPause": "Pauze",
|
"ButtonPause": "Pauze",
|
||||||
"ButtonPlay": "Afspelen",
|
"ButtonPlay": "Afspelen",
|
||||||
|
@ -242,7 +241,6 @@
|
||||||
"FolderTypeTvShows": "TV Series",
|
"FolderTypeTvShows": "TV Series",
|
||||||
"FolderTypeUnset": "Gemengde inhoud",
|
"FolderTypeUnset": "Gemengde inhoud",
|
||||||
"Folders": "Mappen",
|
"Folders": "Mappen",
|
||||||
"ForAdditionalLiveTvOptions": "Voor extra Live TV providers, klik op de Diensten tab om de mogelijke opties te zien.",
|
|
||||||
"FormatValue": "Formaat: {0}",
|
"FormatValue": "Formaat: {0}",
|
||||||
"Friday": "Vrijdag",
|
"Friday": "Vrijdag",
|
||||||
"Fullscreen": "Volledig scherm",
|
"Fullscreen": "Volledig scherm",
|
||||||
|
|
|
@ -93,7 +93,6 @@
|
||||||
"ButtonNextTrack": "Następna utwór",
|
"ButtonNextTrack": "Następna utwór",
|
||||||
"ButtonOff": "Wyłącz",
|
"ButtonOff": "Wyłącz",
|
||||||
"ButtonOpen": "Otwórz",
|
"ButtonOpen": "Otwórz",
|
||||||
"ButtonOther": "Inne",
|
|
||||||
"ButtonParentalControl": "Kontrola rodzicielska",
|
"ButtonParentalControl": "Kontrola rodzicielska",
|
||||||
"ButtonPause": "Pauza",
|
"ButtonPause": "Pauza",
|
||||||
"ButtonPlay": "Odtwarzaj",
|
"ButtonPlay": "Odtwarzaj",
|
||||||
|
@ -256,7 +255,6 @@
|
||||||
"FolderTypeTvShows": "Seriale",
|
"FolderTypeTvShows": "Seriale",
|
||||||
"FolderTypeUnset": "Zawartość mieszana",
|
"FolderTypeUnset": "Zawartość mieszana",
|
||||||
"Folders": "Foldery",
|
"Folders": "Foldery",
|
||||||
"ForAdditionalLiveTvOptions": "Dla większej liczby dostawców telewizji, kliknij Usługi aby zobaczyć pozostałe opcje.",
|
|
||||||
"Friday": "Piątek",
|
"Friday": "Piątek",
|
||||||
"Fullscreen": "Pełny ekran",
|
"Fullscreen": "Pełny ekran",
|
||||||
"General": "Ogólne",
|
"General": "Ogólne",
|
||||||
|
|
|
@ -88,7 +88,6 @@
|
||||||
"ButtonOff": "Desligado",
|
"ButtonOff": "Desligado",
|
||||||
"ButtonOk": "OK",
|
"ButtonOk": "OK",
|
||||||
"ButtonOpen": "Abrir",
|
"ButtonOpen": "Abrir",
|
||||||
"ButtonOther": "Outro",
|
|
||||||
"ButtonParentalControl": "Controle etário",
|
"ButtonParentalControl": "Controle etário",
|
||||||
"ButtonPause": "Pausar",
|
"ButtonPause": "Pausar",
|
||||||
"ButtonPlay": "Reproduzir",
|
"ButtonPlay": "Reproduzir",
|
||||||
|
@ -245,7 +244,6 @@
|
||||||
"FolderTypeTvShows": "Séries",
|
"FolderTypeTvShows": "Séries",
|
||||||
"FolderTypeUnset": "Conteúdo misto",
|
"FolderTypeUnset": "Conteúdo misto",
|
||||||
"Folders": "Pastas",
|
"Folders": "Pastas",
|
||||||
"ForAdditionalLiveTvOptions": "Para provedores de TV ao Vivo adicionais, clique na guia Serviços para ver as opções disponíveis.",
|
|
||||||
"FormatValue": "Formato: {0}",
|
"FormatValue": "Formato: {0}",
|
||||||
"Friday": "Sexta-feira",
|
"Friday": "Sexta-feira",
|
||||||
"Fullscreen": "Tela cheia",
|
"Fullscreen": "Tela cheia",
|
||||||
|
|
|
@ -340,8 +340,6 @@
|
||||||
"LabelEpisodeNumber": "Número do episódio:",
|
"LabelEpisodeNumber": "Número do episódio:",
|
||||||
"LabelEvent": "Evento:",
|
"LabelEvent": "Evento:",
|
||||||
"LabelEveryXMinutes": "A cada:",
|
"LabelEveryXMinutes": "A cada:",
|
||||||
"LabelExtractChaptersDuringLibraryScan": "Extrair imagens dos capítulos durante o rastreamento da biblioteca",
|
|
||||||
"LabelExtractChaptersDuringLibraryScanHelp": "Se ativado, as imagens dos capítulos serão extraídas quando os vídeos forem importados durante a pesquisa na biblioteca. Se desativado, elas serão extraídas durante a tarefa agendada de imagens dos capítulos, permitindo que a pesquisa na biblioteca seja mais rápida.",
|
|
||||||
"LabelExtractChaptersDuringLibraryScan": "Extrair imagens dos capítulos durante a atualização da biblioteca",
|
"LabelExtractChaptersDuringLibraryScan": "Extrair imagens dos capítulos durante a atualização da biblioteca",
|
||||||
"LabelExtractChaptersDuringLibraryScanHelp": "Se ativado, as imagens dos capítulos serão extraídas quando os vídeos forem importados durante a atualização da biblioteca. Se desativado, serão extraídas durante a tarefa agendada de extração de imagens dos capítulos, permitindo que a atualização da biblioteca seja mais rápida.",
|
"LabelExtractChaptersDuringLibraryScanHelp": "Se ativado, as imagens dos capítulos serão extraídas quando os vídeos forem importados durante a atualização da biblioteca. Se desativado, serão extraídas durante a tarefa agendada de extração de imagens dos capítulos, permitindo que a atualização da biblioteca seja mais rápida.",
|
||||||
"LabelFailed": "Falhou",
|
"LabelFailed": "Falhou",
|
||||||
|
@ -824,7 +822,6 @@
|
||||||
"ButtonSelectServer": "Selecionar servidor",
|
"ButtonSelectServer": "Selecionar servidor",
|
||||||
"ButtonRename": "Alterar o nome",
|
"ButtonRename": "Alterar o nome",
|
||||||
"ButtonParentalControl": "Controlo parental",
|
"ButtonParentalControl": "Controlo parental",
|
||||||
"ButtonOther": "Outro",
|
|
||||||
"ButtonOk": "OK",
|
"ButtonOk": "OK",
|
||||||
"ButtonLibraryAccess": "Acesso à biblioteca",
|
"ButtonLibraryAccess": "Acesso à biblioteca",
|
||||||
"ButtonGuide": "Programação",
|
"ButtonGuide": "Programação",
|
||||||
|
@ -835,7 +832,7 @@
|
||||||
"Browse": "Procurar",
|
"Browse": "Procurar",
|
||||||
"BoxRear": "Caixa (verso)",
|
"BoxRear": "Caixa (verso)",
|
||||||
"Box": "Caixa",
|
"Box": "Caixa",
|
||||||
"BookLibraryHelp": "Livros de texto e áudio são suportados. Consulte o Guia de Nomenclatura de Livros Jellyfin {1}.",
|
"BookLibraryHelp": "Livros de texto e áudio são suportados. Consulte o guia de nomenclatura de livros{1}.",
|
||||||
"BirthLocation": "Local de nascimento",
|
"BirthLocation": "Local de nascimento",
|
||||||
"AsManyAsPossible": "Tantos quanto possível",
|
"AsManyAsPossible": "Tantos quanto possível",
|
||||||
"Art": "Capa",
|
"Art": "Capa",
|
||||||
|
@ -881,14 +878,13 @@
|
||||||
"GenreValue": "Género: {0}",
|
"GenreValue": "Género: {0}",
|
||||||
"General": "Geral",
|
"General": "Geral",
|
||||||
"FormatValue": "Formato: {0}",
|
"FormatValue": "Formato: {0}",
|
||||||
"ForAdditionalLiveTvOptions": "Para encontrar provedores de serviços de TV, clique no separador Serviços para ver os provedores disponíveis.",
|
"FolderTypeUnset": "Conteúdo Misto",
|
||||||
"FolderTypeUnset": "Conteúdo misto",
|
|
||||||
"Filters": "Filtros",
|
"Filters": "Filtros",
|
||||||
"File": "Ficheiro",
|
"File": "Ficheiro",
|
||||||
"Favorite": "Favoritos",
|
"Favorite": "Favoritos",
|
||||||
"FFmpegSavePathNotFound": "Não foi possível encontrar o binário FFmpeg na localização que introduziu. O binário FFprobe também é necessário, e deve estar na mesma pasta. Estes componentes são, por norma, instalados em conjunto. Por favor, verifique o caminho da localização e tente de novo.",
|
"FFmpegSavePathNotFound": "Não foi possível encontrar o binário FFmpeg na localização que introduziu. O binário FFprobe também é necessário, e deve estar na mesma pasta. Estes componentes são, por norma, instalados em conjunto. Por favor, verifique o caminho da localização e tente de novo.",
|
||||||
"Extras": "Extras",
|
"Extras": "Extras",
|
||||||
"ExtraLarge": "Extra grande",
|
"ExtraLarge": "Extra Grande",
|
||||||
"EveryNDays": "A cada {0} dias",
|
"EveryNDays": "A cada {0} dias",
|
||||||
"ErrorSavingTvProvider": "Ocorreu um erro ao guardar o provedor do serviços de TV. Por favor, garanta que está acessível e tente de novo.",
|
"ErrorSavingTvProvider": "Ocorreu um erro ao guardar o provedor do serviços de TV. Por favor, garanta que está acessível e tente de novo.",
|
||||||
"ErrorMessageStartHourGreaterThanEnd": "A hora de fim deve ser superior à hora de início.",
|
"ErrorMessageStartHourGreaterThanEnd": "A hora de fim deve ser superior à hora de início.",
|
||||||
|
@ -897,15 +893,15 @@
|
||||||
"ErrorAddingXmlTvFile": "Ocorreu um erro ao aceder ao ficheiro XmlTV. Por favor, garanta que o ficheiro está acessível e tente de novo.",
|
"ErrorAddingXmlTvFile": "Ocorreu um erro ao aceder ao ficheiro XmlTV. Por favor, garanta que o ficheiro está acessível e tente de novo.",
|
||||||
"Episodes": "Episódios",
|
"Episodes": "Episódios",
|
||||||
"EndsAtValue": "Termina às {0}",
|
"EndsAtValue": "Termina às {0}",
|
||||||
"EnablePhotosHelp": "Fotografias serão detetadas e mostradas em conjunto com outros ficheiros multimédia.",
|
"EnablePhotosHelp": "Imagens serão detetadas e mostradas em conjunto com outros ficheiros multimédia.",
|
||||||
"EnablePhotos": "Ativar fotografias",
|
"EnablePhotos": "Mostrar fotografias",
|
||||||
"EnableNextVideoInfoOverlayHelp": "No final de um vídeo, mostrar informação sobre o próximo vídeo da lista de reprodução.",
|
"EnableNextVideoInfoOverlayHelp": "No final de um vídeo, mostrar informação sobre o próximo vídeo da lista de reprodução.",
|
||||||
"EnableNextVideoInfoOverlay": "Ativar informação sobre o próximo vídeo durante a reprodução",
|
"EnableNextVideoInfoOverlay": "Mostrar informação sobre o próximo vídeo durante a reprodução",
|
||||||
"EnableHardwareEncoding": "Ativar codificação por hardware",
|
"EnableHardwareEncoding": "Ativar codificação por hardware",
|
||||||
"EnableExternalVideoPlayersHelp": "O menu de um reprodutor externo será mostrado no início da reprodução de vídeo.",
|
"EnableExternalVideoPlayersHelp": "O menu de um reprodutor externo será mostrado no início da reprodução de vídeo.",
|
||||||
"EnableExternalVideoPlayers": "Ativar reprodutores de vídeo externos",
|
"EnableExternalVideoPlayers": "Reprodutores de vídeo externos",
|
||||||
"EnableDisplayMirroring": "Ativar espelho de ecrã",
|
"EnableDisplayMirroring": "Duplicação de ecrã",
|
||||||
"EnableColorCodedBackgrounds": "Ativar código de cores para o fundo",
|
"EnableColorCodedBackgrounds": "Código de cores para o fundo",
|
||||||
"EditSubtitles": "Editar legendas",
|
"EditSubtitles": "Editar legendas",
|
||||||
"EditMetadata": "Editar metadados",
|
"EditMetadata": "Editar metadados",
|
||||||
"EditImages": "Editar imagens",
|
"EditImages": "Editar imagens",
|
||||||
|
@ -914,7 +910,7 @@
|
||||||
"Download": "Transferir",
|
"Download": "Transferir",
|
||||||
"DoNotRecord": "Não gravar",
|
"DoNotRecord": "Não gravar",
|
||||||
"DisplayModeHelp": "Selecione o tipo de ecrã onde o Jellyfin será utilizado.",
|
"DisplayModeHelp": "Selecione o tipo de ecrã onde o Jellyfin será utilizado.",
|
||||||
"DisplayMissingEpisodesWithinSeasonsHelp": "Deve também ser ativado para as bibliotecas de TV no Painel Principal do Servidor Jellyfin.",
|
"DisplayMissingEpisodesWithinSeasonsHelp": "Deve também ser ativado para as bibliotecas de TV nas configurações do servidor.",
|
||||||
"DisplayMissingEpisodesWithinSeasons": "Mostrar episódios em falta numa série",
|
"DisplayMissingEpisodesWithinSeasons": "Mostrar episódios em falta numa série",
|
||||||
"DisplayInOtherHomeScreenSections": "Mostrar no ecrã principal em secções como multimédia recente ou continue a ver",
|
"DisplayInOtherHomeScreenSections": "Mostrar no ecrã principal em secções como multimédia recente ou continue a ver",
|
||||||
"DisplayInMyMedia": "Mostrar no ecrã principal",
|
"DisplayInMyMedia": "Mostrar no ecrã principal",
|
||||||
|
@ -971,7 +967,7 @@
|
||||||
"Items": "Itens",
|
"Items": "Itens",
|
||||||
"InstallingPackage": "A instalar {0}",
|
"InstallingPackage": "A instalar {0}",
|
||||||
"HttpsRequiresCert": "Para ativar ligações seguras, é necessário fornecer um certificado SSL confiável. Forneça um certificado SSL ou desative as ligações seguras.",
|
"HttpsRequiresCert": "Para ativar ligações seguras, é necessário fornecer um certificado SSL confiável. Forneça um certificado SSL ou desative as ligações seguras.",
|
||||||
"DirectStreamHelp1": "O tipo de multimédia (H.264, AC3, etc.) e a sua resolução são compatíveis com o dispositivo, no entanto, o formato (.mkv, .avi, .wmv, etc.) não é. O conteúdo é reempacotado em tempo real antes de ser enviado para o dispositivo.",
|
"DirectStreamHelp1": "O tipo de multimédia (H.264, AC3, etc.) e a sua resolução são compatíveis com o dispositivo, no entanto, o formato (mkv, avi, wmv, etc.) não é. O conteúdo é reempacotado em tempo real antes de ser enviado para o dispositivo.",
|
||||||
"DirectPlaying": "Reprodução direta",
|
"DirectPlaying": "Reprodução direta",
|
||||||
"Backdrop": "Imagem de Fundo",
|
"Backdrop": "Imagem de Fundo",
|
||||||
"SortChannelsBy": "Ordenar canais por:",
|
"SortChannelsBy": "Ordenar canais por:",
|
||||||
|
@ -1052,9 +1048,9 @@
|
||||||
"Display": "Visualização",
|
"Display": "Visualização",
|
||||||
"ManageLibrary": "Gerir biblioteca",
|
"ManageLibrary": "Gerir biblioteca",
|
||||||
"HeaderLibraryOrder": "Ordenação da Biblioteca",
|
"HeaderLibraryOrder": "Ordenação da Biblioteca",
|
||||||
"EnableThemeVideosHelp": "Se ativado, serão reproduzidos vídeos do tema em plano de fundo durante a navegação pela Biblioteca.",
|
"EnableThemeVideosHelp": "Reproduzir vídeos do tema em plano de fundo durante a navegação pela Biblioteca.",
|
||||||
"EnableThemeSongsHelp": "Se ativado, serão reproduzidas músicas do tema em plano de fundo durante a navegação pela Biblioteca.",
|
"EnableThemeSongsHelp": "Reproduzir músicas do tema em plano de fundo durante a navegação pela Biblioteca.",
|
||||||
"EnableBackdropsHelp": "Se ativado, serão mostradas imagens de fundo em algumas páginas durante a navegação pela Biblioteca.",
|
"EnableBackdropsHelp": "Mostrar imagens de fundo em algumas páginas durante a navegação pela Biblioteca.",
|
||||||
"MediaInfoSize": "Tamanho",
|
"MediaInfoSize": "Tamanho",
|
||||||
"LabelTextSize": "Tamanho do Texto:",
|
"LabelTextSize": "Tamanho do Texto:",
|
||||||
"HeaderSubtitleAppearance": "Aparência das Legendas",
|
"HeaderSubtitleAppearance": "Aparência das Legendas",
|
||||||
|
@ -1084,5 +1080,6 @@
|
||||||
"HeaderMovies": "Filmes",
|
"HeaderMovies": "Filmes",
|
||||||
"DirectorsValue": "Realização: {0}",
|
"DirectorsValue": "Realização: {0}",
|
||||||
"DirectorValue": "Realizador: {0}",
|
"DirectorValue": "Realizador: {0}",
|
||||||
"ButtonOff": "Desligado"
|
"ButtonOff": "Desligado",
|
||||||
|
"ButtonAddImage": "Adicionar Imagem"
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,6 @@
|
||||||
"ButtonOff": "Откл",
|
"ButtonOff": "Откл",
|
||||||
"ButtonOk": "Ок",
|
"ButtonOk": "Ок",
|
||||||
"ButtonOpen": "Открыть",
|
"ButtonOpen": "Открыть",
|
||||||
"ButtonOther": "Другое",
|
|
||||||
"ButtonParentalControl": "Управлять содержанием",
|
"ButtonParentalControl": "Управлять содержанием",
|
||||||
"ButtonPause": "Пауза",
|
"ButtonPause": "Пауза",
|
||||||
"ButtonPlay": "Воспр.",
|
"ButtonPlay": "Воспр.",
|
||||||
|
@ -257,7 +256,6 @@
|
||||||
"FolderTypeTvShows": "ТВ-передачи",
|
"FolderTypeTvShows": "ТВ-передачи",
|
||||||
"FolderTypeUnset": "Разнородное содержание",
|
"FolderTypeUnset": "Разнородное содержание",
|
||||||
"Folders": "Папки",
|
"Folders": "Папки",
|
||||||
"ForAdditionalLiveTvOptions": "Для дополнительных ТВ-поставщиков, ознакомьтесь с имеющимися опциями, щёлкнув по вкладке Компоненты.",
|
|
||||||
"FormatValue": "Формат: {0}",
|
"FormatValue": "Формат: {0}",
|
||||||
"Friday": "пятница",
|
"Friday": "пятница",
|
||||||
"Fullscreen": "Полный экран",
|
"Fullscreen": "Полный экран",
|
||||||
|
|
|
@ -60,7 +60,6 @@
|
||||||
"ButtonNew": "Nové",
|
"ButtonNew": "Nové",
|
||||||
"ButtonNextTrack": "Nasledujúca stopa",
|
"ButtonNextTrack": "Nasledujúca stopa",
|
||||||
"ButtonOpen": "Otvoriť",
|
"ButtonOpen": "Otvoriť",
|
||||||
"ButtonOther": "Iné",
|
|
||||||
"ButtonParentalControl": "Rodičovská kontrola",
|
"ButtonParentalControl": "Rodičovská kontrola",
|
||||||
"ButtonPause": "Pauza",
|
"ButtonPause": "Pauza",
|
||||||
"ButtonPlay": "Prehrať",
|
"ButtonPlay": "Prehrať",
|
||||||
|
|
|
@ -81,11 +81,11 @@
|
||||||
"AllEpisodes": "Vse epizode",
|
"AllEpisodes": "Vse epizode",
|
||||||
"AllLanguages": "Vsi jeziki",
|
"AllLanguages": "Vsi jeziki",
|
||||||
"AllLibraries": "Vse knjižnice",
|
"AllLibraries": "Vse knjižnice",
|
||||||
"AllowHWTranscodingHelp": "Omogoči predvajalniku sprotno pretvarjanje videa. To lahko pomaga zmanjšati potrebo po pretvarjanju na strežniku.",
|
"AllowHWTranscodingHelp": "Omogoči predvajalniku sprotno prekodiranje videa. To lahko pomaga zmanjšati potrebo po prekodiranju na strežniku.",
|
||||||
"AllowMediaConversion": "Dovoli pretvarjanje predstavnosti",
|
"AllowMediaConversion": "Dovoli pretvarjanje predstavnosti",
|
||||||
"AllowMediaConversionHelp": "Dovoli ali zavrni dostop do pretvarjanja predstavnosti.",
|
"AllowMediaConversionHelp": "Dovoli ali zavrni dostop do pretvarjanja predstavnosti.",
|
||||||
"AllowOnTheFlySubtitleExtraction": "Dovoli sprotno izluščenje podnapisov",
|
"AllowOnTheFlySubtitleExtraction": "Dovoli sprotno izluščenje podnapisov",
|
||||||
"AllowOnTheFlySubtitleExtractionHelp": "Vgrajeni podnapisi so lahko izluščeni iz videa in poslani odjemalcem kot navaden tekst, kar zmanjša potrebo po pretvarjanju. Na nekaterih napravah lahko to traja dalj časa in povzroča zatikanje med predvajanjem. Onemogočite za vžig vgrajenih podnapisov v video med pretvarjanjem za naprave ki ne podpirajo podnapisov.",
|
"AllowOnTheFlySubtitleExtractionHelp": "Vdelani podnapisi so lahko izluščeni iz videa in poslani odjemalcem kot navaden tekst, kar zmanjša potrebo po prekodiranju. Na nekaterih napravah lahko to traja dalj časa in povzroča zatikanje med predvajanjem. Onemogočite, za vžig vdelanih podnapisov v video med prekodiranjem, za naprave ki ne podpirajo podnapisov.",
|
||||||
"AllowRemoteAccess": "Dovoli oddaljene povezave s tem Jellyfin strežnikom.",
|
"AllowRemoteAccess": "Dovoli oddaljene povezave s tem Jellyfin strežnikom.",
|
||||||
"AllowRemoteAccessHelp": "Če ni označeno, bodo vse oddaljene povezave blokirane.",
|
"AllowRemoteAccessHelp": "Če ni označeno, bodo vse oddaljene povezave blokirane.",
|
||||||
"Artists": "Izvajalci",
|
"Artists": "Izvajalci",
|
||||||
|
@ -194,7 +194,6 @@
|
||||||
"ButtonOff": "Izključi",
|
"ButtonOff": "Izključi",
|
||||||
"ButtonOk": "Ok",
|
"ButtonOk": "Ok",
|
||||||
"ButtonOpen": "Odpri",
|
"ButtonOpen": "Odpri",
|
||||||
"ButtonOther": "Ostalo",
|
|
||||||
"ButtonParentalControl": "Starševski nadzor",
|
"ButtonParentalControl": "Starševski nadzor",
|
||||||
"ButtonPause": "Premor",
|
"ButtonPause": "Premor",
|
||||||
"ButtonPlay": "Predvajaj",
|
"ButtonPlay": "Predvajaj",
|
||||||
|
@ -422,7 +421,7 @@
|
||||||
"HeaderConfirmProfileDeletion": "Potrdi brisanje profila",
|
"HeaderConfirmProfileDeletion": "Potrdi brisanje profila",
|
||||||
"HeaderConfirmPluginInstallation": "Potrdi namestitev dodatka",
|
"HeaderConfirmPluginInstallation": "Potrdi namestitev dodatka",
|
||||||
"HeaderConfigureRemoteAccess": "Nastavi oddaljen dostop",
|
"HeaderConfigureRemoteAccess": "Nastavi oddaljen dostop",
|
||||||
"HeaderCodecProfileHelp": "Profili kodeka določajo omejitve naprave pri predvajanju specifičnih kodekov. Če je omejitev dosežena bo predstavnost pretvarjana, tudi če je kodek nastavljen za neposredno predvajanje.",
|
"HeaderCodecProfileHelp": "Profili kodeka določajo omejitve naprave pri predvajanju specifičnih kodekov. Če je omejitev dosežena bo predstavnost prekodirana, tudi če je kodek nastavljen za neposredno predvajanje.",
|
||||||
"HeaderCodecProfile": "Profil kodeka",
|
"HeaderCodecProfile": "Profil kodeka",
|
||||||
"HeaderChapterImages": "Slike poglavij",
|
"HeaderChapterImages": "Slike poglavij",
|
||||||
"HeaderChannels": "Kanali",
|
"HeaderChannels": "Kanali",
|
||||||
|
@ -521,5 +520,99 @@
|
||||||
"EnableCinemaMode": "Kino način",
|
"EnableCinemaMode": "Kino način",
|
||||||
"EnableBackdropsHelp": "Prikaži ozadja na nekaterih straneh med brskanjem knjižnice.",
|
"EnableBackdropsHelp": "Prikaži ozadja na nekaterih straneh med brskanjem knjižnice.",
|
||||||
"EnableBackdrops": "Ozadja",
|
"EnableBackdrops": "Ozadja",
|
||||||
"EasyPasswordHelp": "Vaša enostavna PIN koda je uporabna za dostop brez povezave na podprtih napravah in za enostavno prijavo v lokalnem omrežju."
|
"EasyPasswordHelp": "Vaša enostavna PIN koda je uporabna za dostop brez povezave na podprtih napravah in za enostavno prijavo v lokalnem omrežju.",
|
||||||
|
"Images": "Slike",
|
||||||
|
"Identify": "Identificiraj",
|
||||||
|
"HttpsRequiresCert": "Za omogočanje varnih povezav potrebujete zaupanja vreden SSL certifikat, npr. Lets Encrypt. Prosimo priskrbite ustrezen certifikat ali onemogočite varne povezave.",
|
||||||
|
"Horizontal": "Vodoravno",
|
||||||
|
"Home": "Domov",
|
||||||
|
"HideWatchedContentFromLatestMedia": "Skrij ogledane vsebine iz razdelka Najnovejša predstavnost",
|
||||||
|
"Hide": "Skrij",
|
||||||
|
"Help": "Pomoč",
|
||||||
|
"HeadersFolders": "Mape",
|
||||||
|
"HeaderYears": "Leta",
|
||||||
|
"HeaderXmlSettings": "Xml nastavitve",
|
||||||
|
"HeaderXmlDocumentAttributes": "Xml lastnosti dokumenta",
|
||||||
|
"HeaderXmlDocumentAttribute": "Xml lastnost dokumenta",
|
||||||
|
"HeaderVideos": "Videi",
|
||||||
|
"HeaderVideoTypes": "Tipi videa",
|
||||||
|
"HeaderVideoType": "Tip videa",
|
||||||
|
"HeaderVideoQuality": "Kvaliteta videa",
|
||||||
|
"HeaderUsers": "Uporabniki",
|
||||||
|
"HeaderUploadImage": "Naloži sliko",
|
||||||
|
"HeaderUpcomingOnTV": "Prihaja na TV",
|
||||||
|
"HeaderTypeText": "Vnesi besedilo",
|
||||||
|
"HeaderTypeImageFetchers": "{0} prejemniki slik",
|
||||||
|
"HeaderTuners": "Sprejemniki",
|
||||||
|
"HeaderTunerDevices": "Sprejemniki",
|
||||||
|
"LabelAllowHWTranscoding": "Dovoli strojno pospešeno prekodiranje",
|
||||||
|
"HeaderSelectTranscodingPathHelp": "Izberite ali vnesite pot za začasne datoteka prekodiranja. Mapa mora dovoliti zapisovanje.",
|
||||||
|
"HeaderContainerProfileHelp": "Profil kontejnerja določa omejitve naprave pri predvajanju določenih formatov. Če je omejitev dosežena, bo predstavnost prekodirana, tudi če je format sicer nastavljen za neposredno predvajanje.",
|
||||||
|
"HeaderTranscodingProfileHelp": "Dodaj profil prekodiranja za izbiro uporabljenih formatov, ko je potrebno prekodiranje.",
|
||||||
|
"HeaderTranscodingProfile": "Profil prekodiranja",
|
||||||
|
"HeaderTracks": "Skladbe",
|
||||||
|
"HeaderThisUserIsCurrentlyDisabled": "Ta uporabnik je trenutno onemogočen",
|
||||||
|
"HeaderTaskTriggers": "Sprožilci dejanj",
|
||||||
|
"HeaderTags": "Oznake",
|
||||||
|
"HeaderSystemDlnaProfiles": "Sistemski profili",
|
||||||
|
"HeaderSubtitleProfilesHelp": "Profili podnapisov določajo formate podnapisov, ki je naprava podpira.",
|
||||||
|
"HeaderSubtitleProfiles": "Profili podnapisov",
|
||||||
|
"HeaderSubtitleProfile": "Profil podnapisov",
|
||||||
|
"HeaderSubtitleDownloads": "Prenosi podnapisov",
|
||||||
|
"HeaderSubtitleAppearance": "Izgled podnapisov",
|
||||||
|
"HeaderStopRecording": "Ustavi snemanje",
|
||||||
|
"HeaderStatus": "Status",
|
||||||
|
"HeaderStartNow": "Začni zdaj",
|
||||||
|
"HeaderSpecialFeatures": "Posebne lastnosti",
|
||||||
|
"HeaderSpecialEpisodeInfo": "Informacije o posebni epizodi",
|
||||||
|
"HeaderSortOrder": "Vrstni red",
|
||||||
|
"HeaderSortBy": "Uredi po",
|
||||||
|
"HeaderShutdown": "Ugasni",
|
||||||
|
"HeaderSetupLibrary": "Nastavite vaše knjižnjice predstavnosti",
|
||||||
|
"HeaderServerSettings": "Nastavitve strežnika",
|
||||||
|
"HeaderSeriesStatus": "Status serije",
|
||||||
|
"HeaderSeriesOptions": "Možnosti serije",
|
||||||
|
"HeaderSendMessage": "Pošlji sporočilo",
|
||||||
|
"HeaderSelectTranscodingPath": "Izberi pot začasnih datotek prekodiranja",
|
||||||
|
"HeaderRevisionHistory": "Pregled zgodovine",
|
||||||
|
"HeaderFeatures": "Funkcije",
|
||||||
|
"HeaderFeatureAccess": "Dostop funkcij",
|
||||||
|
"HeaderDeviceAccess": "Dostop naprav",
|
||||||
|
"HeaderContainerProfile": "Profil kontejnerja",
|
||||||
|
"Kids": "Otroci",
|
||||||
|
"LabelAbortedByServerShutdown": "(Prekinjeno zaradi zaustavitve strežnika)",
|
||||||
|
"LabelAirsBeforeEpisode": "Predvajanje pred epizodo:",
|
||||||
|
"LabelAlbumArtMaxWidth": "Največja širina slike albuma:",
|
||||||
|
"LabelAlbumArtMaxWidthHelp": "Največja ločljivost slike albuma dostopna preko UPnP:albumArtURI.",
|
||||||
|
"LabelAlbumArtPN": "Slika albuma PN:",
|
||||||
|
"LabelAlbum": "Album:",
|
||||||
|
"LabelAlbumArtMaxHeight": "Največja višina slike albuma:",
|
||||||
|
"LabelAlbumArtMaxHeightHelp": "Največja ločljivost slike albuma dostopna preko UPnP:albumArtURI.",
|
||||||
|
"LabelAudioBitDepth": "Bitna globina zvoka:",
|
||||||
|
"LabelAllowServerAutoRestart": "Dovoli, da se strežnik samodejno znova zažene in uveljavi posodobitve",
|
||||||
|
"LabelAllowServerAutoRestartHelp": "Strežnik se bo samodejno zagnal zgolj v času mirovanja, ko ne bo aktivnih uporabnikov.",
|
||||||
|
"LabelAllowedRemoteAddresses": "Filter oddaljenih IP naslovov:",
|
||||||
|
"LabelAllowedRemoteAddressesMode": "Način filtra oddaljenih IP naslovov:",
|
||||||
|
"LabelAppName": "Ime aplikacije",
|
||||||
|
"LabelAppNameExample": "Primer: Sickbeard, NzbDrone",
|
||||||
|
"LabelArtistsHelp": "Loči več z ;",
|
||||||
|
"LabelAudio": "Zvok:",
|
||||||
|
"LabelAudioBitrate": "Bitna hitrost zvoka:",
|
||||||
|
"LabelAudioChannels": "Kanali zvoka:",
|
||||||
|
"LabelAudioCodec": "Zvočni kodek:",
|
||||||
|
"LabelAudioSampleRate": "Hitrost vzorčenja zvoka:",
|
||||||
|
"LabelAuthProvider": "Ponudnik preverjanja pristnosti:",
|
||||||
|
"LabelBindToLocalNetworkAddress": "Poveži na lokalni omrežni naslov:",
|
||||||
|
"LabelAudioLanguagePreference": "Zaželen jezik zvoka:",
|
||||||
|
"LabelAutomaticallyRefreshInternetMetadataEvery": "Samodejno posodobi metapodatke z interneta:",
|
||||||
|
"Label3DFormat": "Format 3D:",
|
||||||
|
"LabelAccessDay": "Dan v tednu:",
|
||||||
|
"LabelAccessEnd": "Čas konca:",
|
||||||
|
"LabelAccessStart": "Čas začetka:",
|
||||||
|
"LabelAirDays": "Dnevi predvajanja:",
|
||||||
|
"LabelAirTime": "Čas predvajanja:",
|
||||||
|
"LabelAirsAfterSeason": "Predvajanje po sezoni:",
|
||||||
|
"LabelAirsBeforeSeason": "Predvajanje pred sezono:",
|
||||||
|
"LabelAlbumArtists": "Izvajalci albuma:",
|
||||||
|
"LabelAll": "Vse"
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,6 @@
|
||||||
"ButtonOff": "Av",
|
"ButtonOff": "Av",
|
||||||
"ButtonOk": "OK",
|
"ButtonOk": "OK",
|
||||||
"ButtonOpen": "Öppna",
|
"ButtonOpen": "Öppna",
|
||||||
"ButtonOther": "Annan",
|
|
||||||
"ButtonParentalControl": "Föräldralås",
|
"ButtonParentalControl": "Föräldralås",
|
||||||
"ButtonPause": "Paus",
|
"ButtonPause": "Paus",
|
||||||
"ButtonPlay": "Spela upp",
|
"ButtonPlay": "Spela upp",
|
||||||
|
@ -1277,7 +1276,6 @@
|
||||||
"Guide": "Guide",
|
"Guide": "Guide",
|
||||||
"GenreValue": "Genre: {0}",
|
"GenreValue": "Genre: {0}",
|
||||||
"General": "Allmänt",
|
"General": "Allmänt",
|
||||||
"ForAdditionalLiveTvOptions": "Klicka på \"Tjänster\" fliken för ytterligare Live TV leverantörer.",
|
|
||||||
"FastForward": "Snabbspola",
|
"FastForward": "Snabbspola",
|
||||||
"Extras": "Mer",
|
"Extras": "Mer",
|
||||||
"ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XmlTV filen. Kontrollera att filen är tillgänglig och försök igen.",
|
"ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XmlTV filen. Kontrollera att filen är tillgänglig och försök igen.",
|
||||||
|
|
|
@ -286,5 +286,148 @@
|
||||||
"AllComplexFormats": "Bütün karmaşık formatlar (ASS, SSA, VOBSUB, PGS, SUB/IDX, vb.)",
|
"AllComplexFormats": "Bütün karmaşık formatlar (ASS, SSA, VOBSUB, PGS, SUB/IDX, vb.)",
|
||||||
"AllEpisodes": "Bütün bölümler",
|
"AllEpisodes": "Bütün bölümler",
|
||||||
"AllLanguages": "Bütün diller",
|
"AllLanguages": "Bütün diller",
|
||||||
"AllowMediaConversion": "Medya dönüşümüne izin ver"
|
"AllowMediaConversion": "Medya dönüşümüne izin ver",
|
||||||
|
"AddItemToCollectionHelp": "Ögeleri koleksiyona eklemek için arama yapın ve üzerine sağ tıklayın veya sekme menüsünden koleksiyona ekleyin.",
|
||||||
|
"AllowHWTranscodingHelp": "Ayarlayıcının anında akışları dönüştürmesine izin verin. Bu, sunucunun gerektirdiği kodlamanın azaltılmasına yardımcı olabilir.",
|
||||||
|
"ColorSpace": "Renk Uzayı",
|
||||||
|
"ButtonConnect": "Bağlan",
|
||||||
|
"ColorTransfer": "Renk transferi",
|
||||||
|
"ButtonPreviousTrack": "Önceki parça",
|
||||||
|
"ButtonProfile": "Profil",
|
||||||
|
"ButtonRefresh": "Yenile",
|
||||||
|
"ButtonRename": "Yeniden Adlandır",
|
||||||
|
"ButtonRepeat": "Tekrar",
|
||||||
|
"ButtonResume": "Devam Et",
|
||||||
|
"ButtonRevoke": "geri al",
|
||||||
|
"ChannelNumber": "Kanal Numarası",
|
||||||
|
"ContinueWatching": "İzlemeye devam et",
|
||||||
|
"CriticRating": "Kritik değerlendirme",
|
||||||
|
"CustomDlnaProfilesHelp": "Yeni bir cihazı hedeflemek veya bir sistem profilini geçersiz kılmak için özel bir profil oluşturun.",
|
||||||
|
"Descending": "Azalan",
|
||||||
|
"DetectingDevices": "Cihazları tespit",
|
||||||
|
"DirectPlaying": "Doğrudan oynatma",
|
||||||
|
"CommunityRating": "Topluluk değerlendirmesi",
|
||||||
|
"Composer": "Besteci",
|
||||||
|
"ConfigureDateAdded": "Eklenen tarihin, Kitaplık ayarları altındaki Jellyfin Sunucu kontrol panelinde nasıl belirleneceğini yapılandırın",
|
||||||
|
"ConfirmDeleteImage": "Resmi Sil?",
|
||||||
|
"ButtonResetEasyPassword": "Kolay pin kodunu sıfırla",
|
||||||
|
"ColorPrimaries": "Renk primerleri",
|
||||||
|
"DirectStreamHelp2": "Doğrudan Akış, video kalitesinde herhangi bir kayıp olmadan çok az işlem gücü kullanır.",
|
||||||
|
"DirectStreaming": "Doğrudan akış",
|
||||||
|
"Director": "yönetmen",
|
||||||
|
"DirectorValue": "Yönetmen: {0}",
|
||||||
|
"DirectorsValue": "Yöneticiler: {0}",
|
||||||
|
"Disabled": "Deaktif",
|
||||||
|
"DisplayModeHelp": "Jellyfin’i çalıştırdığınız ekran türünü seçin.",
|
||||||
|
"DoNotRecord": "Kaydetme",
|
||||||
|
"Down": "Aşağı",
|
||||||
|
"Download": "İndir",
|
||||||
|
"DownloadsValue": "{0} indirme",
|
||||||
|
"EditImages": "Resimleri düzenle",
|
||||||
|
"EditMetadata": "Meta verileri düzenle",
|
||||||
|
"EditSubtitles": "Altyazıları düzenle",
|
||||||
|
"EnableBackdropsHelp": "Kütüphaneye göz atarken arka plandaki bazı sayfaların arka planında görüntüleyin.",
|
||||||
|
"AllowMediaConversionHelp": "Dönüştürme özelliğine erişim izni verme veya reddetme.",
|
||||||
|
"AllowOnTheFlySubtitleExtraction": "Anında altyazı çıkartmaya izin ver",
|
||||||
|
"ButtonSelectServer": "Sunucu Seç",
|
||||||
|
"Disc": "Disk",
|
||||||
|
"ButtonAddImage": "Resim ekle",
|
||||||
|
"ButtonAddScheduledTaskTrigger": "Tetikleyici ekle",
|
||||||
|
"ButtonAddServer": "Sunucu ekle",
|
||||||
|
"ButtonAudioTracks": "Ses Parçalari",
|
||||||
|
"ButtonChangeServer": "Sunucu Değiştir",
|
||||||
|
"ButtonGotIt": "Anladım",
|
||||||
|
"ButtonMore": "Daha",
|
||||||
|
"ButtonOpen": "Açık",
|
||||||
|
"ButtonArrowUp": "Yukarı",
|
||||||
|
"ButtonNetwork": "Ağ",
|
||||||
|
"ButtonDownload": "İndir",
|
||||||
|
"ButtonNextTrack": "Sonraki parça",
|
||||||
|
"ButtonOff": "Kapalı",
|
||||||
|
"ButtonParentalControl": "Ebeveyn Kontrolü",
|
||||||
|
"ButtonArrowDown": "Aşağı",
|
||||||
|
"ButtonArrowLeft": "Sol",
|
||||||
|
"ButtonDown": "Aşağı",
|
||||||
|
"ButtonGuide": "Rehber",
|
||||||
|
"ButtonLearnMore": "Daha fazla bilgi edin",
|
||||||
|
"ButtonLibraryAccess": "Kütüphane erişimi",
|
||||||
|
"ButtonScanAllLibraries": "Tüm Kütüphaneleri Tara",
|
||||||
|
"ButtonSelectView": "Görünüm seç",
|
||||||
|
"ButtonShuffle": "Karıştır",
|
||||||
|
"ButtonShutdown": "Kapat",
|
||||||
|
"ChannelNameOnly": "Yalnızca {0} kanalı",
|
||||||
|
"ConfirmDeleteItems": "Bu öğeleri silmek, onları hem dosya sisteminden hem de medya kitaplığınızdan siler. Devam etmek istediğinize emin misiniz?",
|
||||||
|
"ConfirmDeletion": "Silmeyi onayla",
|
||||||
|
"ConfirmEndPlayerSession": "Jellyfin'i {0} tarihinde kapatmak ister misiniz?",
|
||||||
|
"Connect": "Bağlan",
|
||||||
|
"Disconnect": "Bağlantısız",
|
||||||
|
"Dislike": "Beğenmemek",
|
||||||
|
"Display": "Görüntüle",
|
||||||
|
"DisplayInMyMedia": "Ana ekranda görüntüleme",
|
||||||
|
"DisplayInOtherHomeScreenSections": "En son medya gibi ana ekran bölümlerinde görüntüleyin ve izlemeye devam edin",
|
||||||
|
"EnableBackdrops": "Arka planında",
|
||||||
|
"BurnSubtitlesHelp": "Altyazı formatına bağlı olarak video dönüştürülürken sunucunun altyazılarda yazıp yazmayacağını belirler. Altyazılarda yanmaktan kaçınmak, sunucu performansını iyileştirir. Görüntü tabanlı biçimleri (VOBSUB, PGS, SUB / IDX, vb.) Ve bazı ASS / SSA altyazılarını yazmak için Otomatik'i seçin.",
|
||||||
|
"ConfirmDeleteItem": "Bu öğeyi silmek, onu hem dosya sisteminden hem de medya kütüphanenizden siler. Devam etmek istediğinize emin misiniz?",
|
||||||
|
"ValueSpecialEpisodeName": "Özel -{0}",
|
||||||
|
"DeviceAccessHelp": "Bu, yalnızca benzersiz şekilde tanımlanabilen ve tarayıcı erişimini engellemeyen cihazlar için geçerlidir. Kullanıcı cihazlarına erişimin filtrelenmesi, burada onaylanana kadar yeni cihazları kullanmalarını önler.",
|
||||||
|
"DirectStreamHelp1": "Medya, çözünürlük ve medya türüyle (H.264, AC3, vb.) İlgili cihazla uyumludur, ancak uyumsuz bir dosya konteynerinde (mkv, avi, wmv, vb.) Bulunur. Video, cihaza aktarılmadan önce anında yeniden paketlenecek.",
|
||||||
|
"DisplayMissingEpisodesWithinSeasonsHelp": "Bu, sunucu yapılandırmasındaki TV kütüphaneleri için de etkinleştirilmelidir.",
|
||||||
|
"EasyPasswordHelp": "Kolay pin kodunuz, desteklenen istemcilerde çevrimdışı erişim için kullanılır ve ayrıca ağ içinde oturum açmak için de kullanılabilir.",
|
||||||
|
"ChangingMetadataImageSettingsNewContent": "Meta veri veya resim indirme ayarlarında yapılan değişiklikler yalnızca kitaplığınıza eklenen yeni içerikler için geçerli olacaktır. Değişiklikleri mevcut başlıklara uygulamak için meta verilerini el ile yenilemeniz gerekir.",
|
||||||
|
"CinemaModeConfigurationHelp": "Sinema modu, ana özellikten önce fragmanlar ve özel tanıtımlar oynatabilen tiyatro deneyimini doğrudan oturma odanıza getirir.",
|
||||||
|
"Browse": "Gözat",
|
||||||
|
"AllowOnTheFlySubtitleExtractionHelp": "Gömülü alt yazılar, videoların kodlanmasını önlemek için videolardan çıkarılabilir ve istemcilere düz metin olarak gönderilebilir. Bazı sistemlerde bu uzun zaman alabilir ve çıkarma işlemi sırasında video oynatmanın durmasına neden olabilir. İstemci cihaz tarafından doğal olarak desteklenmiyorsa, video kod kodlaması ile birlikte yakılmış gömülü altyazılara sahip olmak için bunu devre dışı bırakın.",
|
||||||
|
"AllowedRemoteAddressesHelp": "Uzaktan bağlanmasına izin verilecek ağlar için virgülle ayrılmış IP adresleri listesi veya IP / ağ maskesi girişleri. Boş bırakılırsa, tüm uzak adreslere izin verilir.",
|
||||||
|
"AlwaysPlaySubtitlesHelp": "Dil tercihi ile eşleşen altyazılar, ses diline bakılmaksızın yüklenir.",
|
||||||
|
"AnyLanguage": "Herhangi bir dil",
|
||||||
|
"Anytime": "İstediğin zaman",
|
||||||
|
"AroundTime": "{0} civarında",
|
||||||
|
"Art": "Sanat",
|
||||||
|
"AsManyAsPossible": "Mümkün olduğunca",
|
||||||
|
"Ascending": "yükselen",
|
||||||
|
"AspectRatio": "Boy oranı",
|
||||||
|
"Audio": "Ses",
|
||||||
|
"AuthProviderHelp": "Bu kullanıcının şifresini doğrulamak için kullanılacak bir Kimlik Doğrulama Sağlayıcısı seçin.",
|
||||||
|
"AutoBasedOnLanguageSetting": "Otomatik (dil ayarına göre)",
|
||||||
|
"Backdrop": "zemin",
|
||||||
|
"Backdrops": "Zeminler",
|
||||||
|
"Banner": "afiş",
|
||||||
|
"BirthDateValue": "Doğan: {0}",
|
||||||
|
"BirthLocation": "Doğum yeri",
|
||||||
|
"BirthPlaceValue": "Doğum yeri: {0}",
|
||||||
|
"Auto": "Oto",
|
||||||
|
"Blacklist": "kara liste",
|
||||||
|
"BoxRear": "Kutu (arka)",
|
||||||
|
"ButtonAddMediaLibrary": "Medya Kitaplığı Ekle",
|
||||||
|
"ButtonSubmit": "Sunmak",
|
||||||
|
"ButtonStart": "Başlat",
|
||||||
|
"ButtonTrailer": "Fragman",
|
||||||
|
"Box": "Kutu",
|
||||||
|
"ButtonViewWebsite": "Web sitesini görüntüle",
|
||||||
|
"CancelRecording": "Kaydı iptal et",
|
||||||
|
"CancelSeries": "Serileri iptal et",
|
||||||
|
"ButtonUninstall": "Kaldır",
|
||||||
|
"ButtonUp": "Yukarı",
|
||||||
|
"ButtonWebsite": "Website",
|
||||||
|
"Categories": "Kategoriler",
|
||||||
|
"DrmChannelsNotImported": "DRM'li kanallar içe aktarılmayacak.",
|
||||||
|
"DropShadow": "Düşen gölge",
|
||||||
|
"CopyStreamURL": "Akış URL’sini kopyala",
|
||||||
|
"DefaultSubtitlesHelp": "Altyazılar, gömülü meta verilerdeki varsayılan ve zorunlu bayraklara göre yüklenir. Birden fazla seçenek olduğunda dil tercihleri göz önünde bulundurulur.",
|
||||||
|
"DeleteDeviceConfirmation": "Bu cihazı silmek istediğinden emin misin? Bir kullanıcı bir sonraki oturum açışında yeniden görünecektir.",
|
||||||
|
"DisplayMissingEpisodesWithinSeasons": "Sezonlardaki eksik bölümleri görüntüleme",
|
||||||
|
"AlwaysPlaySubtitles": "Her zaman altyazıları oynat",
|
||||||
|
"CopyStreamURLSuccess": "URL başarıyla kopyalandı.",
|
||||||
|
"DateAdded": "Ekleme Tarihi",
|
||||||
|
"DatePlayed": "Oynanan tarih",
|
||||||
|
"DeathDateValue": "Öldü: {0}",
|
||||||
|
"Default": "Varsayılan",
|
||||||
|
"DefaultErrorMessage": "İsteğin işlenmesi sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.",
|
||||||
|
"DefaultMetadataLangaugeDescription": "Bunlar varsayılan ayarlarınızdır ve kitaplık bazında özelleştirilebilir.",
|
||||||
|
"DeleteUserConfirmation": "Bu kullanıcıyı silmek istediğinden emin misin?",
|
||||||
|
"Depressed": "Bunalımlı",
|
||||||
|
"Desktop": "Masaüstü",
|
||||||
|
"HeaderFavoriteShows": "Favori Diziler",
|
||||||
|
"HeaderFavoriteEpisodes": "Favori Bölümler",
|
||||||
|
"BookLibraryHelp": "Ses ve ders kitapları desteklenir. {0} kitap adlandırma kılavuzunu {1} gözden geçirin."
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,5 +91,23 @@
|
||||||
"ValueOneSeries": "1 серія",
|
"ValueOneSeries": "1 серія",
|
||||||
"ValueOneSong": "1 пісня",
|
"ValueOneSong": "1 пісня",
|
||||||
"ValueSeriesCount": "{0} серій",
|
"ValueSeriesCount": "{0} серій",
|
||||||
"ValueSongCount": "{0} пісень"
|
"ValueSongCount": "{0} пісень",
|
||||||
|
"AddToPlaylist": "Додати до списку відтворення",
|
||||||
|
"AccessRestrictedTryAgainLater": "Доступ тимчасово заборонений. Спробуйте пізніше.",
|
||||||
|
"Actor": "Виконавець",
|
||||||
|
"AllLanguages": "Всі мови",
|
||||||
|
"AllLibraries": "Всі бібліотеки",
|
||||||
|
"AddToCollection": "Додати до колекції",
|
||||||
|
"AddToPlayQueue": "Додати до черги відтворення",
|
||||||
|
"All": "Всі",
|
||||||
|
"AllChannels": "Всі канали",
|
||||||
|
"AllEpisodes": "Всі епізоди",
|
||||||
|
"AllowRemoteAccess": "Дозволити віддалене підключення до цього сервера Jellyfin",
|
||||||
|
"AlwaysPlaySubtitles": "Завжди відтворювати субтитри",
|
||||||
|
"AnyLanguage": "Будь-яка мова",
|
||||||
|
"Anytime": "Завжди",
|
||||||
|
"Add": "Додати",
|
||||||
|
"AddedOnValue": "Додано",
|
||||||
|
"Albums": "Альбоми",
|
||||||
|
"Absolute": "Абсолютний"
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,5 +115,8 @@
|
||||||
"TellUsAboutYourself": "Nói cho chúng tôi biết đôi điều về Bạn",
|
"TellUsAboutYourself": "Nói cho chúng tôi biết đôi điều về Bạn",
|
||||||
"ThisWizardWillGuideYou": "Thủ thuật này sẽ hướng dẫn quá trình cài đặt cho bạn. Để bắt đầu, vui lòng lựa chọn ngôn ngữ bạn ưa thích.",
|
"ThisWizardWillGuideYou": "Thủ thuật này sẽ hướng dẫn quá trình cài đặt cho bạn. Để bắt đầu, vui lòng lựa chọn ngôn ngữ bạn ưa thích.",
|
||||||
"UninstallPluginConfirmation": "Bạn có chắc muốn gỡ bỏ{0}?",
|
"UninstallPluginConfirmation": "Bạn có chắc muốn gỡ bỏ{0}?",
|
||||||
"UninstallPluginHeader": "Gỡ bỏ Plugin"
|
"UninstallPluginHeader": "Gỡ bỏ Plugin",
|
||||||
|
"AccessRestrictedTryAgainLater": "Truy cập hiện đang hạn chế. Hãy thử lại sau.",
|
||||||
|
"AddToCollection": "Thêm vào bộ sưu tập",
|
||||||
|
"Actor": "Diễn viên"
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,6 @@
|
||||||
"ButtonOff": "关",
|
"ButtonOff": "关",
|
||||||
"ButtonOk": "确定",
|
"ButtonOk": "确定",
|
||||||
"ButtonOpen": "打开",
|
"ButtonOpen": "打开",
|
||||||
"ButtonOther": "其他",
|
|
||||||
"ButtonParentalControl": "家长控制",
|
"ButtonParentalControl": "家长控制",
|
||||||
"ButtonPause": "暂停",
|
"ButtonPause": "暂停",
|
||||||
"ButtonPlay": "播放",
|
"ButtonPlay": "播放",
|
||||||
|
@ -207,7 +206,7 @@
|
||||||
"Ended": "结束",
|
"Ended": "结束",
|
||||||
"EndsAtValue": "结束于 {0}",
|
"EndsAtValue": "结束于 {0}",
|
||||||
"Episodes": "剧集",
|
"Episodes": "剧集",
|
||||||
"ErrorAddingListingsToSchedulesDirect": "将阵容添加到您的计划直接帐户时出错。计划直接只允许每帐户数量有限的阵容。您可能需要登录到时间表直接网站和删除其他清单, 从您的帐户 proceeeding 之前。",
|
"ErrorAddingListingsToSchedulesDirect": "我们将阵容添加到您的Schedules Direct帐户时出错。 Schedules Direct只允许有限的账号排序。 您可能需要在继续前直接登入Schedules Direct 网站并删除其他列表。",
|
||||||
"ErrorAddingMediaPathToVirtualFolder": "添加媒体路径时发生错误。请确认路径是有效的,并且你的 Jellyfin 服务器进程有对该位置的访问权。",
|
"ErrorAddingMediaPathToVirtualFolder": "添加媒体路径时发生错误。请确认路径是有效的,并且你的 Jellyfin 服务器进程有对该位置的访问权。",
|
||||||
"ErrorAddingTunerDevice": "添加协调器设备时发生错误。请确认它是可访问的然后再试一次。",
|
"ErrorAddingTunerDevice": "添加协调器设备时发生错误。请确认它是可访问的然后再试一次。",
|
||||||
"ErrorAddingXmlTvFile": "访问 XmlTV 文件时发生错误。请确认该文件是否存在然后再试一次。",
|
"ErrorAddingXmlTvFile": "访问 XmlTV 文件时发生错误。请确认该文件是否存在然后再试一次。",
|
||||||
|
@ -236,7 +235,6 @@
|
||||||
"FolderTypeTvShows": "电视节目",
|
"FolderTypeTvShows": "电视节目",
|
||||||
"FolderTypeUnset": "混合内容",
|
"FolderTypeUnset": "混合内容",
|
||||||
"Folders": "文件夹",
|
"Folders": "文件夹",
|
||||||
"ForAdditionalLiveTvOptions": "要查看额外的电视直播提供商,点击“服务”标签以查看可用的选项。",
|
|
||||||
"FormatValue": "格式:{0}",
|
"FormatValue": "格式:{0}",
|
||||||
"Friday": "星期五",
|
"Friday": "星期五",
|
||||||
"Fullscreen": "全屏",
|
"Fullscreen": "全屏",
|
||||||
|
@ -495,7 +493,7 @@
|
||||||
"LabelBirthDate": "出生日期:",
|
"LabelBirthDate": "出生日期:",
|
||||||
"LabelBirthYear": "出生年份:",
|
"LabelBirthYear": "出生年份:",
|
||||||
"LabelBlastMessageInterval": "活动信号的时间间隔(秒)",
|
"LabelBlastMessageInterval": "活动信号的时间间隔(秒)",
|
||||||
"LabelBlastMessageIntervalHelp": "确定由服务器活动信号的间隔秒数。",
|
"LabelBlastMessageIntervalHelp": "确定爆炸活动消息之间的持续时间(以秒为单位)。",
|
||||||
"LabelBlockContentWithTags": "通过标签锁定内容:",
|
"LabelBlockContentWithTags": "通过标签锁定内容:",
|
||||||
"LabelBurnSubtitles": "烧录字幕:",
|
"LabelBurnSubtitles": "烧录字幕:",
|
||||||
"LabelCache": "缓存:",
|
"LabelCache": "缓存:",
|
||||||
|
@ -556,9 +554,9 @@
|
||||||
"LabelEnableDlnaDebugLogging": "启用 DLNA 调试日志",
|
"LabelEnableDlnaDebugLogging": "启用 DLNA 调试日志",
|
||||||
"LabelEnableDlnaDebugLoggingHelp": "创建一个很大的日志文件,仅应在排除故障时使用。",
|
"LabelEnableDlnaDebugLoggingHelp": "创建一个很大的日志文件,仅应在排除故障时使用。",
|
||||||
"LabelEnableDlnaPlayTo": "启用 DLNA 播放",
|
"LabelEnableDlnaPlayTo": "启用 DLNA 播放",
|
||||||
"LabelEnableDlnaPlayToHelp": "Jellyfin 可以侦测你网络里的设备并能远程控制它们。",
|
"LabelEnableDlnaPlayToHelp": "侦测你网络里的设备并远程控制它们。",
|
||||||
"LabelEnableDlnaServer": "启用 DLNA 服务器",
|
"LabelEnableDlnaServer": "启用 DLNA 服务器",
|
||||||
"LabelEnableDlnaServerHelp": "允许你网络上的 UPnP 设备浏览并播放 Jellyfin 内容。",
|
"LabelEnableDlnaServerHelp": "允许你网络上的 UPnP 设备浏览并播放内容。",
|
||||||
"LabelEnableHardwareDecodingFor": "启用硬件解码:",
|
"LabelEnableHardwareDecodingFor": "启用硬件解码:",
|
||||||
"LabelEnableRealtimeMonitor": "启用实时监控",
|
"LabelEnableRealtimeMonitor": "启用实时监控",
|
||||||
"LabelEnableRealtimeMonitorHelp": "文件更改将立即在支持的文件系统上处理。",
|
"LabelEnableRealtimeMonitorHelp": "文件更改将立即在支持的文件系统上处理。",
|
||||||
|
@ -569,7 +567,7 @@
|
||||||
"LabelEvent": "事件:",
|
"LabelEvent": "事件:",
|
||||||
"LabelEveryXMinutes": "每:",
|
"LabelEveryXMinutes": "每:",
|
||||||
"LabelExtractChaptersDuringLibraryScan": "媒体库扫描过程中解压章节图像",
|
"LabelExtractChaptersDuringLibraryScan": "媒体库扫描过程中解压章节图像",
|
||||||
"LabelExtractChaptersDuringLibraryScanHelp": "如果启用,当媒体库导入视频并扫描时,将提取章节图像。如果禁用,章节图像将在之后的计划任务提取,而媒体库会更快完成扫描。",
|
"LabelExtractChaptersDuringLibraryScanHelp": "当媒体库导入视频并扫描时,将提取章节图像。否则,章节图像将在之后的计划任务提取,而媒体库会更快完成扫描。",
|
||||||
"LabelFailed": "失败",
|
"LabelFailed": "失败",
|
||||||
"LabelFileOrUrl": "文件或网址:",
|
"LabelFileOrUrl": "文件或网址:",
|
||||||
"LabelFinish": "完成",
|
"LabelFinish": "完成",
|
||||||
|
@ -583,7 +581,7 @@
|
||||||
"LabelH264Crf": "H264 CRF 编码质量等级:",
|
"LabelH264Crf": "H264 CRF 编码质量等级:",
|
||||||
"LabelH264EncodingPreset": "H264 编码预设:",
|
"LabelH264EncodingPreset": "H264 编码预设:",
|
||||||
"LabelHardwareAccelerationType": "硬件加速:",
|
"LabelHardwareAccelerationType": "硬件加速:",
|
||||||
"LabelHardwareAccelerationTypeHelp": "只能在支持的系统上使用。",
|
"LabelHardwareAccelerationTypeHelp": "此特性只能在支持的系统上使用。",
|
||||||
"LabelHomeNetworkQuality": "家庭网络质量:",
|
"LabelHomeNetworkQuality": "家庭网络质量:",
|
||||||
"LabelHomeScreenSectionValue": "主屏幕模块{0}:",
|
"LabelHomeScreenSectionValue": "主屏幕模块{0}:",
|
||||||
"LabelHttpsPort": "本地 HTTPS 端口号:",
|
"LabelHttpsPort": "本地 HTTPS 端口号:",
|
||||||
|
@ -601,15 +599,15 @@
|
||||||
"LabelInternetQuality": "网络质量:",
|
"LabelInternetQuality": "网络质量:",
|
||||||
"LabelKidsCategories": "儿童分类:",
|
"LabelKidsCategories": "儿童分类:",
|
||||||
"LabelKodiMetadataDateFormat": "发行日期格式:",
|
"LabelKodiMetadataDateFormat": "发行日期格式:",
|
||||||
"LabelKodiMetadataDateFormatHelp": "Nfo的所有日期将使用这种格式被读取和写入。",
|
"LabelKodiMetadataDateFormatHelp": "Nfo的所有日期将使用这种格式。",
|
||||||
"LabelKodiMetadataEnableExtraThumbs": "复制同人画到extrathumbs文件夹",
|
"LabelKodiMetadataEnableExtraThumbs": "复制同人画到extrathumbs文件夹",
|
||||||
"LabelKodiMetadataEnableExtraThumbsHelp": "为了最大化兼容Kodi皮肤,下载的图片同时保存在 extrafanart 和 extrathumbs 文件夹。",
|
"LabelKodiMetadataEnableExtraThumbsHelp": "为了最大化兼容Kodi皮肤,下载的图片同时保存在 extrafanart 和 extrathumbs 文件夹。",
|
||||||
"LabelKodiMetadataEnablePathSubstitution": "启用路径替换",
|
"LabelKodiMetadataEnablePathSubstitution": "启用路径替换",
|
||||||
"LabelKodiMetadataEnablePathSubstitutionHelp": "允许图像的路径替换使用服务器的路径替换设置。",
|
"LabelKodiMetadataEnablePathSubstitutionHelp": "允许图像的路径替换使用服务器的路径替换设置。",
|
||||||
"LabelKodiMetadataSaveImagePaths": "保存图像路径在NFO文件",
|
"LabelKodiMetadataSaveImagePaths": "保存图像路径在NFO文件",
|
||||||
"LabelKodiMetadataSaveImagePathsHelp": "如果你的图像文件名不符合Kodi的规范,推荐使用。",
|
"LabelKodiMetadataSaveImagePathsHelp": "如果你的图像文件名不符合Kodi的规范,推荐使用。",
|
||||||
"LabelKodiMetadataUser": "为以下用户保存观看历史数据:",
|
"LabelKodiMetadataUser": "为以下用户保存观看历史数据到NFO文件中:",
|
||||||
"LabelKodiMetadataUserHelp": "启用此项以保存观看历史数据至 Nfo 文件中以供其他应用程序利用。",
|
"LabelKodiMetadataUserHelp": "保存观看历史数据至 NFO 文件中以供其他应用程序利用。",
|
||||||
"LabelLanNetworks": "LAN网络:",
|
"LabelLanNetworks": "LAN网络:",
|
||||||
"LabelLanguage": "语言:",
|
"LabelLanguage": "语言:",
|
||||||
"LabelLineup": "排队:",
|
"LabelLineup": "排队:",
|
||||||
|
@ -617,7 +615,7 @@
|
||||||
"LabelLocalHttpServerPortNumberHelp": "Jellyfin HTTP 服务器监听的 TCP 端口。",
|
"LabelLocalHttpServerPortNumberHelp": "Jellyfin HTTP 服务器监听的 TCP 端口。",
|
||||||
"LabelLockItemToPreventChanges": "锁定此项目防止改动",
|
"LabelLockItemToPreventChanges": "锁定此项目防止改动",
|
||||||
"LabelLoginDisclaimer": "登录声明:",
|
"LabelLoginDisclaimer": "登录声明:",
|
||||||
"LabelLoginDisclaimerHelp": "这将在登录页面底部显示。",
|
"LabelLoginDisclaimerHelp": "将在登录页面底部显示的信息。",
|
||||||
"LabelLogs": "日志:",
|
"LabelLogs": "日志:",
|
||||||
"LabelManufacturer": "制造商",
|
"LabelManufacturer": "制造商",
|
||||||
"LabelManufacturerUrl": "厂商网址",
|
"LabelManufacturerUrl": "厂商网址",
|
||||||
|
@ -626,9 +624,9 @@
|
||||||
"LabelMaxChromecastBitrate": "最大 Chromecast 比特率:",
|
"LabelMaxChromecastBitrate": "最大 Chromecast 比特率:",
|
||||||
"LabelMaxParentalRating": "最大允许的家长评级:",
|
"LabelMaxParentalRating": "最大允许的家长评级:",
|
||||||
"LabelMaxResumePercentage": "恢复播放最大百分比:",
|
"LabelMaxResumePercentage": "恢复播放最大百分比:",
|
||||||
"LabelMaxResumePercentageHelp": "如果在此时间之后停止播放,媒体会标记为“已播放”",
|
"LabelMaxResumePercentageHelp": "如果在此时间之后停止播放,媒体会标记为“已播放”。",
|
||||||
"LabelMaxScreenshotsPerItem": "每个项目最大截图数目:",
|
"LabelMaxScreenshotsPerItem": "每个项目最大截图数目:",
|
||||||
"LabelMaxStreamingBitrate": "最大串流质量",
|
"LabelMaxStreamingBitrate": "最大串流质量:",
|
||||||
"LabelMaxStreamingBitrateHelp": "请指定一个流媒体串流时的最大比特率。",
|
"LabelMaxStreamingBitrateHelp": "请指定一个流媒体串流时的最大比特率。",
|
||||||
"LabelMessageText": "消息文本:",
|
"LabelMessageText": "消息文本:",
|
||||||
"LabelMessageTitle": "消息标题:",
|
"LabelMessageTitle": "消息标题:",
|
||||||
|
@ -636,17 +634,17 @@
|
||||||
"LabelMetadataDownloadLanguage": "首选下载语言:",
|
"LabelMetadataDownloadLanguage": "首选下载语言:",
|
||||||
"LabelMetadataDownloadersHelp": "启用媒体资料下载器的优先级排序,低优先级的下载器只会用来填补缺少的信息。",
|
"LabelMetadataDownloadersHelp": "启用媒体资料下载器的优先级排序,低优先级的下载器只会用来填补缺少的信息。",
|
||||||
"LabelMetadataPath": "媒体资料路径:",
|
"LabelMetadataPath": "媒体资料路径:",
|
||||||
"LabelMetadataPathHelp": "为下载的图像和元数据指定自定义路径",
|
"LabelMetadataPathHelp": "为下载的图像和元数据指定自定义路径。",
|
||||||
"LabelMetadataReaders": "媒体资料读取器:",
|
"LabelMetadataReaders": "媒体资料读取器:",
|
||||||
"LabelMetadataReadersHelp": "为你首选的本地媒体资料源按优先级排序。找到的第一个文件将被读取。",
|
"LabelMetadataReadersHelp": "为你首选的本地媒体资料源按优先级排序。找到的第一个文件将被读取。",
|
||||||
"LabelMetadataSavers": "媒体资料储存方式:",
|
"LabelMetadataSavers": "媒体资料储存方式:",
|
||||||
"LabelMetadataSaversHelp": "选择储存媒体资料的文件格式。",
|
"LabelMetadataSaversHelp": "选择储存媒体资料的文件格式。",
|
||||||
"LabelMethod": "方法:",
|
"LabelMethod": "方法:",
|
||||||
"LabelMinBackdropDownloadWidth": "下载背景图的最小宽度:",
|
"LabelMinBackdropDownloadWidth": "下载背景图的最小宽度:",
|
||||||
"LabelMinResumeDuration": "恢复播放最小时间(秒):",
|
"LabelMinResumeDuration": "恢复播放最小时间:",
|
||||||
"LabelMinResumeDurationHelp": "媒体播放时间过短,不可恢复播放",
|
"LabelMinResumeDurationHelp": "以秒为单位保存播放视频位置并允许您继续播放。",
|
||||||
"LabelMinResumePercentage": "恢复播放最小百分比:",
|
"LabelMinResumePercentage": "恢复播放最小百分比:",
|
||||||
"LabelMinResumePercentageHelp": "如果在此时间之前停止播放,媒体会标记为“未播放”",
|
"LabelMinResumePercentageHelp": "如果在此时间之前停止播放,媒体会标记为“未播放”。",
|
||||||
"LabelMinScreenshotDownloadWidth": "下载截图的最小宽度:",
|
"LabelMinScreenshotDownloadWidth": "下载截图的最小宽度:",
|
||||||
"LabelModelDescription": "型号描述",
|
"LabelModelDescription": "型号描述",
|
||||||
"LabelModelName": "型号名称",
|
"LabelModelName": "型号名称",
|
||||||
|
@ -655,7 +653,7 @@
|
||||||
"LabelMonitorUsers": "监控活动:",
|
"LabelMonitorUsers": "监控活动:",
|
||||||
"LabelMovieCategories": "电影分类:",
|
"LabelMovieCategories": "电影分类:",
|
||||||
"LabelMoviePrefix": "电影前缀:",
|
"LabelMoviePrefix": "电影前缀:",
|
||||||
"LabelMoviePrefixHelp": "如果将前缀应用于影片标题, 请在此处输入它, 以便 Jellyfin 可以正确处理它。",
|
"LabelMoviePrefixHelp": "如果将前缀应用于影片标题, 请在此处输入它, 以便服务器可以正确处理它。",
|
||||||
"LabelMovieRecordingPath": "电影录制路径 (可选的):",
|
"LabelMovieRecordingPath": "电影录制路径 (可选的):",
|
||||||
"LabelMusicStreamingTranscodingBitrate": "音乐转码的比特率:",
|
"LabelMusicStreamingTranscodingBitrate": "音乐转码的比特率:",
|
||||||
"LabelMusicStreamingTranscodingBitrateHelp": "请指定一个音乐媒体串流时的最大比特率",
|
"LabelMusicStreamingTranscodingBitrateHelp": "请指定一个音乐媒体串流时的最大比特率",
|
||||||
|
@ -1111,7 +1109,7 @@
|
||||||
"RecordSeries": "录制电视剧",
|
"RecordSeries": "录制电视剧",
|
||||||
"RecordingCancelled": "录制已取消。",
|
"RecordingCancelled": "录制已取消。",
|
||||||
"RecordingPathChangeMessage": "更改录制文件夹不会将现有录制从旧位置迁移到新的。您需要手动移动它们 (如果需要)。",
|
"RecordingPathChangeMessage": "更改录制文件夹不会将现有录制从旧位置迁移到新的。您需要手动移动它们 (如果需要)。",
|
||||||
"RecordingScheduled": "录制预设",
|
"RecordingScheduled": "录制预设。",
|
||||||
"Refresh": "刷新",
|
"Refresh": "刷新",
|
||||||
"RefreshMetadata": "刷新元数据",
|
"RefreshMetadata": "刷新元数据",
|
||||||
"RefreshQueued": "列队已刷新。",
|
"RefreshQueued": "列队已刷新。",
|
||||||
|
@ -1299,7 +1297,7 @@
|
||||||
"XmlTvSportsCategoriesHelp": "这些类别的节目将显示为体育节目。用 \"|\" 分隔多个。",
|
"XmlTvSportsCategoriesHelp": "这些类别的节目将显示为体育节目。用 \"|\" 分隔多个。",
|
||||||
"Yes": "是",
|
"Yes": "是",
|
||||||
"Yesterday": "昨天",
|
"Yesterday": "昨天",
|
||||||
"Absolute": "绝对路径",
|
"Absolute": "绝对",
|
||||||
"AnyLanguage": "任何语言",
|
"AnyLanguage": "任何语言",
|
||||||
"Art": "图像",
|
"Art": "图像",
|
||||||
"AspectRatio": "长宽比",
|
"AspectRatio": "长宽比",
|
||||||
|
@ -1339,7 +1337,7 @@
|
||||||
"GroupBySeries": "按系列分组",
|
"GroupBySeries": "按系列分组",
|
||||||
"HeaderApp": "应用程序",
|
"HeaderApp": "应用程序",
|
||||||
"DirectStreamHelp1": "该媒体文件的分辨率和编码(H.264、AC3 等)与您的设备兼容,但容器格式(.mkv、.avi、.wmv 等)不受支持。因此,视频在串流至您的设备之前将会被即时封装为另一种格式。",
|
"DirectStreamHelp1": "该媒体文件的分辨率和编码(H.264、AC3 等)与您的设备兼容,但容器格式(.mkv、.avi、.wmv 等)不受支持。因此,视频在串流至您的设备之前将会被即时封装为另一种格式。",
|
||||||
"HeaderAppearsOn": "出现于",
|
"HeaderAppearsOn": "同时出现于",
|
||||||
"HeaderCancelSeries": "取消系列",
|
"HeaderCancelSeries": "取消系列",
|
||||||
"HeaderFavoriteEpisodes": "最爱的剧集",
|
"HeaderFavoriteEpisodes": "最爱的剧集",
|
||||||
"HeaderFavoriteArtists": "最爱的艺术家",
|
"HeaderFavoriteArtists": "最爱的艺术家",
|
||||||
|
@ -1350,11 +1348,11 @@
|
||||||
"HeaderNextVideoPlayingInValue": "下一部影片在 {0} 后播放",
|
"HeaderNextVideoPlayingInValue": "下一部影片在 {0} 后播放",
|
||||||
"HeaderPlayOn": "播放在",
|
"HeaderPlayOn": "播放在",
|
||||||
"HeaderRestartingServer": "服务器重启中",
|
"HeaderRestartingServer": "服务器重启中",
|
||||||
"HeaderSeriesStatus": "剧集状态",
|
"HeaderSeriesStatus": "系列状态",
|
||||||
"HeaderStopRecording": "停止录制",
|
"HeaderStopRecording": "停止录制",
|
||||||
"Horizontal": "横向",
|
"Horizontal": "横向",
|
||||||
"LabelAuthProvider": "认证提供者:",
|
"LabelAuthProvider": "认证提供者:",
|
||||||
"LabelKeepUpTo": "跟上:",
|
"LabelKeepUpTo": "保持:",
|
||||||
"LabelPasswordResetProvider": "密码重置提供者:",
|
"LabelPasswordResetProvider": "密码重置提供者:",
|
||||||
"LabelPersonRoleHelp": "示例:冰淇淋卡车司机",
|
"LabelPersonRoleHelp": "示例:冰淇淋卡车司机",
|
||||||
"LabelSelectFolderGroups": "自动将下列文件夹中的内容分组到视图中,如电影、音乐、剧集:",
|
"LabelSelectFolderGroups": "自动将下列文件夹中的内容分组到视图中,如电影、音乐、剧集:",
|
||||||
|
@ -1452,5 +1450,10 @@
|
||||||
"FetchingData": "提取其他数据",
|
"FetchingData": "提取其他数据",
|
||||||
"CopyStreamURLSuccess": "已成功复制URL地址。",
|
"CopyStreamURLSuccess": "已成功复制URL地址。",
|
||||||
"CopyStreamURL": "复制串流URL地址",
|
"CopyStreamURL": "复制串流URL地址",
|
||||||
"ButtonAddImage": "添加图片"
|
"ButtonAddImage": "添加图片",
|
||||||
|
"LabelPlayer": "播放器:",
|
||||||
|
"LabelBaseUrl": "基础 URL:",
|
||||||
|
"LabelBaseUrlHelp": "您可以在此处添加自定义子目录,以便从更唯一的 URL 访问服务器。",
|
||||||
|
"MoreMediaInfo": "媒体信息",
|
||||||
|
"MusicLibraryHelp": "重播 {0}音乐命名指南{1}。"
|
||||||
}
|
}
|
||||||
|
|
|
@ -379,7 +379,6 @@
|
||||||
"ButtonNextTrack": "下一首",
|
"ButtonNextTrack": "下一首",
|
||||||
"ButtonOff": "關",
|
"ButtonOff": "關",
|
||||||
"ButtonOpen": "開",
|
"ButtonOpen": "開",
|
||||||
"ButtonOther": "其他",
|
|
||||||
"ButtonParentalControl": "家庭管理",
|
"ButtonParentalControl": "家庭管理",
|
||||||
"ButtonPause": "暫停",
|
"ButtonPause": "暫停",
|
||||||
"ButtonPreviousTrack": "上一首",
|
"ButtonPreviousTrack": "上一首",
|
||||||
|
@ -536,7 +535,6 @@
|
||||||
"FolderTypeMixed": "混合媒體",
|
"FolderTypeMixed": "混合媒體",
|
||||||
"FolderTypeUnset": "混合內容",
|
"FolderTypeUnset": "混合內容",
|
||||||
"Folders": "資料夾",
|
"Folders": "資料夾",
|
||||||
"ForAdditionalLiveTvOptions": "以查看額外的電視直播供應商,點擊“服務”以查看可用的選項。",
|
|
||||||
"FormatValue": "格式:{0}",
|
"FormatValue": "格式:{0}",
|
||||||
"FreeAppsFeatureDescription": "享受免費的Jellyfin應用程式。",
|
"FreeAppsFeatureDescription": "享受免費的Jellyfin應用程式。",
|
||||||
"Fullscreen": "全螢幕",
|
"Fullscreen": "全螢幕",
|
||||||
|
|
7
src/thirdparty/flvjs/flv.min.js
vendored
7
src/thirdparty/flvjs/flv.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -10,8 +10,14 @@
|
||||||
<p style="margin:2em 0;">${WizardCompleted}</p>
|
<p style="margin:2em 0;">${WizardCompleted}</p>
|
||||||
|
|
||||||
<div class="wizardNavigation">
|
<div class="wizardNavigation">
|
||||||
<button is="emby-button" type="button" class="raised button-cancel" onclick="history.back();"><i class="md-icon">arrow_back</i><span>${LabelPrevious}</span></button>
|
<button is="emby-button" type="button" class="raised button-cancel" onclick="history.back();">
|
||||||
<button is="emby-button" type="button" class="raised btnWizardNext button-submit"><i class="md-icon">check</i><span>${LabelFinish}</span></button>
|
<i class="md-icon">arrow_back</i>
|
||||||
|
<span>${LabelPrevious}</span>
|
||||||
|
</button>
|
||||||
|
<button is="emby-button" type="button" class="raised btnWizardNext button-submit">
|
||||||
|
<i class="md-icon">check</i>
|
||||||
|
<span>${LabelFinish}</span>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue