mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge remote-tracking branch 'upstream/master' into metadata-editor
This commit is contained in:
commit
8562054a23
95 changed files with 1239 additions and 975 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -9,3 +9,6 @@ node_modules
|
||||||
# ide
|
# ide
|
||||||
.idea
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
|
|
||||||
|
#log
|
||||||
|
yarn-error.log
|
||||||
|
|
12
package.json
12
package.json
|
@ -49,7 +49,7 @@
|
||||||
"webpack": "^4.41.5",
|
"webpack": "^4.41.5",
|
||||||
"webpack-cli": "^3.3.10",
|
"webpack-cli": "^3.3.10",
|
||||||
"webpack-concat-plugin": "^3.0.0",
|
"webpack-concat-plugin": "^3.0.0",
|
||||||
"webpack-dev-server": "^3.10.3",
|
"webpack-dev-server": "^3.11.0",
|
||||||
"webpack-merge": "^4.2.2",
|
"webpack-merge": "^4.2.2",
|
||||||
"webpack-stream": "^5.2.1"
|
"webpack-stream": "^5.2.1"
|
||||||
},
|
},
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
"alameda": "^1.4.0",
|
"alameda": "^1.4.0",
|
||||||
"classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz",
|
"classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz",
|
||||||
"core-js": "^3.6.5",
|
"core-js": "^3.6.5",
|
||||||
"date-fns": "^2.12.0",
|
"date-fns": "^2.13.0",
|
||||||
"document-register-element": "^1.14.3",
|
"document-register-element": "^1.14.3",
|
||||||
"fast-text-encoding": "^1.0.1",
|
"fast-text-encoding": "^1.0.1",
|
||||||
"flv.js": "^1.5.0",
|
"flv.js": "^1.5.0",
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
"intersection-observer": "^0.10.0",
|
"intersection-observer": "^0.10.0",
|
||||||
"jellyfin-apiclient": "^1.1.1",
|
"jellyfin-apiclient": "^1.1.1",
|
||||||
"jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto",
|
"jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto",
|
||||||
"jquery": "^3.5.0",
|
"jquery": "^3.5.1",
|
||||||
"jstree": "^3.3.7",
|
"jstree": "^3.3.7",
|
||||||
"libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv",
|
"libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv",
|
||||||
"material-design-icons-iconfont": "^5.0.1",
|
"material-design-icons-iconfont": "^5.0.1",
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
"query-string": "^6.11.1",
|
"query-string": "^6.11.1",
|
||||||
"resize-observer-polyfill": "^1.5.1",
|
"resize-observer-polyfill": "^1.5.1",
|
||||||
"screenfull": "^5.0.2",
|
"screenfull": "^5.0.2",
|
||||||
"shaka-player": "^2.5.10",
|
"shaka-player": "^2.5.11",
|
||||||
"sortablejs": "^1.10.2",
|
"sortablejs": "^1.10.2",
|
||||||
"swiper": "^5.3.7",
|
"swiper": "^5.3.7",
|
||||||
"webcomponents.js": "^0.7.24",
|
"webcomponents.js": "^0.7.24",
|
||||||
|
@ -102,6 +102,10 @@
|
||||||
"src/scripts/filesystem.js",
|
"src/scripts/filesystem.js",
|
||||||
"src/scripts/imagehelper.js",
|
"src/scripts/imagehelper.js",
|
||||||
"src/scripts/inputManager.js",
|
"src/scripts/inputManager.js",
|
||||||
|
"src/components/deletehelper.js",
|
||||||
|
"src/components/actionsheet/actionsheet.js",
|
||||||
|
"src/components/playmenu.js",
|
||||||
|
"src/components/indicators/indicators.js",
|
||||||
"src/scripts/keyboardnavigation.js",
|
"src/scripts/keyboardnavigation.js",
|
||||||
"src/scripts/settings/appSettings.js",
|
"src/scripts/settings/appSettings.js",
|
||||||
"src/scripts/settings/userSettings.js",
|
"src/scripts/settings/userSettings.js",
|
||||||
|
|
|
@ -5,8 +5,10 @@ const cssnano = require('cssnano');
|
||||||
|
|
||||||
const config = () => ({
|
const config = () => ({
|
||||||
plugins: [
|
plugins: [
|
||||||
|
// Explicitly specify browserslist to override ones from node_modules
|
||||||
|
// For example, Swiper has it in its package.json
|
||||||
postcssPresetEnv({browsers: packageConfig.browserslist}),
|
postcssPresetEnv({browsers: packageConfig.browserslist}),
|
||||||
autoprefixer(),
|
autoprefixer({overrideBrowserslist: packageConfig.browserslist}),
|
||||||
cssnano()
|
cssnano()
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h1 class="sectionTitle pluginName"></h1>
|
<h1 class="sectionTitle pluginName"></h1>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/plugins/index.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/plugins/index.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p id="overview" style="font-style: italic;"></p>
|
<p id="overview" style="font-style: italic;"></p>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<form class="addServerForm" style="margin: 0 auto;">
|
<form class="addServerForm" style="margin: 0 auto;">
|
||||||
<h1>${HeaderConnectToServer}</h1>
|
<h1>${HeaderConnectToServer}</h1>
|
||||||
<div class="inputContainer">
|
<div class="inputContainer">
|
||||||
<input is="emby-input" type="text" id="txtServerHost" required="required" label="${LabelServerHost}" autocomplete="off" spellcheck="false" autocapitalize="none" autocorrect="off" />
|
<input is="emby-input" type="url" id="txtServerHost" required="required" label="${LabelServerHost}"/>
|
||||||
<div class="fieldDescription">${LabelServerHostHelp}</div>
|
<div class="fieldDescription">${LabelServerHostHelp}</div>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -4,18 +4,19 @@
|
||||||
<div class="detailSectionHeader">
|
<div class="detailSectionHeader">
|
||||||
<h2 style="margin:.6em 0;vertical-align:middle;display:inline-block;">${HeaderApiKeys}</h2>
|
<h2 style="margin:.6em 0;vertical-align:middle;display:inline-block;">${HeaderApiKeys}</h2>
|
||||||
<button is="emby-button" type="button" class="fab btnNewKey submit" style="margin-left:1em;" title="${ButtonAdd}">
|
<button is="emby-button" type="button" class="fab btnNewKey submit" style="margin-left:1em;" title="${ButtonAdd}">
|
||||||
<span class="material-icons add"></span>
|
<span class="material-icons add" aria-hidden="true"></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<p>${HeaderApiKeysHelp}</p>
|
<p>${HeaderApiKeysHelp}</p>
|
||||||
<br />
|
<br />
|
||||||
<table class="tblApiKeys detailTable">
|
<table class="tblApiKeys detailTable">
|
||||||
|
<caption class="clipForScreenReader">${ApiKeysCaption}</caption>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="detailTableHeaderCell"></th>
|
<th scope="col" class="detailTableHeaderCell"></th>
|
||||||
<th class="detailTableHeaderCell">${HeaderApiKey}</th>
|
<th scope="col" class="detailTableHeaderCell">${HeaderApiKey}</th>
|
||||||
<th class="detailTableHeaderCell">${HeaderApp}</th>
|
<th scope="col" class="detailTableHeaderCell">${HeaderApp}</th>
|
||||||
<th class="detailTableHeaderCell">${HeaderDateIssued}</th>
|
<th scope="col" class="detailTableHeaderCell">${HeaderDateIssued}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="resultBody"></tbody>
|
<tbody class="resultBody"></tbody>
|
||||||
|
|
|
@ -5,6 +5,17 @@ html {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.clipForScreenReader {
|
||||||
|
clip: rect(1px, 1px, 1px, 1px);
|
||||||
|
clip-path: inset(50%);
|
||||||
|
height: 1px;
|
||||||
|
width: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
.material-icons {
|
.material-icons {
|
||||||
/* Fix font ligatures on older WebOS versions */
|
/* Fix font ligatures on older WebOS versions */
|
||||||
-webkit-font-feature-settings: "liga";
|
-webkit-font-feature-settings: "liga";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="formDialogHeader">
|
<div class="formDialogHeader">
|
||||||
<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1">
|
<button is="paper-icon-button-light" class="btnCancel autoSize" title="${LabelPrevious}" tabindex="-1">
|
||||||
<span class="material-icons arrow_back"></span>
|
<span class="material-icons arrow_back" aria-hidden="true"></span>
|
||||||
</button>
|
</button>
|
||||||
<h3 class="formDialogHeaderTitle">
|
<h3 class="formDialogHeaderTitle">
|
||||||
${HeaderAccessSchedule}
|
${HeaderAccessSchedule}
|
||||||
|
|
|
@ -1,21 +1,23 @@
|
||||||
define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-button', 'css!./actionsheet', 'material-icons', 'scrollStyles', 'listViewStyle'], function (dialogHelper, layoutManager, globalize, browser, dom) {
|
import dialogHelper from 'dialogHelper';
|
||||||
'use strict';
|
import layoutManager from 'layoutManager';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
import dom from 'dom';
|
||||||
|
import 'emby-button';
|
||||||
|
import 'css!./actionsheet';
|
||||||
|
import 'material-icons';
|
||||||
|
import 'scrollStyles';
|
||||||
|
import 'listViewStyle';
|
||||||
|
|
||||||
function getOffsets(elems) {
|
function getOffsets(elems) {
|
||||||
|
|
||||||
var doc = document;
|
let results = [];
|
||||||
var results = [];
|
|
||||||
|
|
||||||
if (!doc) {
|
if (!document) {
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
var box;
|
let box;
|
||||||
var elem;
|
for (let elem of elems) {
|
||||||
|
|
||||||
for (var i = 0, length = elems.length; i < length; i++) {
|
|
||||||
|
|
||||||
elem = elems[i];
|
|
||||||
// Support: BlackBerry 5, iOS 3 (original iPhone)
|
// Support: BlackBerry 5, iOS 3 (original iPhone)
|
||||||
// If we don't have gBCR, just use 0,0 rather than error
|
// If we don't have gBCR, just use 0,0 rather than error
|
||||||
if (elem.getBoundingClientRect) {
|
if (elem.getBoundingClientRect) {
|
||||||
|
@ -24,24 +26,24 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
box = { top: 0, left: 0 };
|
box = { top: 0, left: 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
results[i] = {
|
results.push({
|
||||||
top: box.top,
|
top: box.top,
|
||||||
left: box.left,
|
left: box.left,
|
||||||
width: box.width,
|
width: box.width,
|
||||||
height: box.height
|
height: box.height
|
||||||
};
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPosition(options, dlg) {
|
function getPosition(options, dlg) {
|
||||||
|
|
||||||
var windowSize = dom.getWindowSize();
|
const windowSize = dom.getWindowSize();
|
||||||
var windowHeight = windowSize.innerHeight;
|
const windowHeight = windowSize.innerHeight;
|
||||||
var windowWidth = windowSize.innerWidth;
|
const windowWidth = windowSize.innerWidth;
|
||||||
|
|
||||||
var pos = getOffsets([options.positionTo])[0];
|
let pos = getOffsets([options.positionTo])[0];
|
||||||
|
|
||||||
if (options.positionY !== 'top') {
|
if (options.positionY !== 'top') {
|
||||||
pos.top += (pos.height || 0) / 2;
|
pos.top += (pos.height || 0) / 2;
|
||||||
|
@ -49,16 +51,16 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
|
|
||||||
pos.left += (pos.width || 0) / 2;
|
pos.left += (pos.width || 0) / 2;
|
||||||
|
|
||||||
var height = dlg.offsetHeight || 300;
|
const height = dlg.offsetHeight || 300;
|
||||||
var width = dlg.offsetWidth || 160;
|
const width = dlg.offsetWidth || 160;
|
||||||
|
|
||||||
// Account for popup size
|
// Account for popup size
|
||||||
pos.top -= height / 2;
|
pos.top -= height / 2;
|
||||||
pos.left -= width / 2;
|
pos.left -= width / 2;
|
||||||
|
|
||||||
// Avoid showing too close to the bottom
|
// Avoid showing too close to the bottom
|
||||||
var overflowX = pos.left + width - windowWidth;
|
const overflowX = pos.left + width - windowWidth;
|
||||||
var overflowY = pos.top + height - windowHeight;
|
const overflowY = pos.top + height - windowHeight;
|
||||||
|
|
||||||
if (overflowX > 0) {
|
if (overflowX > 0) {
|
||||||
pos.left -= (overflowX + 20);
|
pos.left -= (overflowX + 20);
|
||||||
|
@ -75,34 +77,32 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
pos.left = Math.max(pos.left, 10);
|
pos.left = Math.max(pos.left, 10);
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
function centerFocus(elem, horiz, on) {
|
function centerFocus(elem, horiz, on) {
|
||||||
require(['scrollHelper'], function (scrollHelper) {
|
require(['scrollHelper'], function (scrollHelper) {
|
||||||
var fn = on ? 'on' : 'off';
|
const fn = on ? 'on' : 'off';
|
||||||
scrollHelper.centerFocus[fn](elem, horiz);
|
scrollHelper.centerFocus[fn](elem, horiz);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function show(options) {
|
export function show(options) {
|
||||||
|
|
||||||
// items
|
// items
|
||||||
// positionTo
|
// positionTo
|
||||||
// showCancel
|
// showCancel
|
||||||
// title
|
// title
|
||||||
var dialogOptions = {
|
let dialogOptions = {
|
||||||
removeOnClose: true,
|
removeOnClose: true,
|
||||||
enableHistory: options.enableHistory,
|
enableHistory: options.enableHistory,
|
||||||
scrollY: false
|
scrollY: false
|
||||||
};
|
};
|
||||||
|
|
||||||
var backButton = false;
|
let isFullscreen;
|
||||||
var isFullscreen;
|
|
||||||
|
|
||||||
if (layoutManager.tv) {
|
if (layoutManager.tv) {
|
||||||
dialogOptions.size = 'fullscreen';
|
dialogOptions.size = 'fullscreen';
|
||||||
isFullscreen = true;
|
isFullscreen = true;
|
||||||
backButton = true;
|
|
||||||
dialogOptions.autoFocus = true;
|
dialogOptions.autoFocus = true;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
dialogOptions.autoFocus = false;
|
dialogOptions.autoFocus = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var dlg = dialogHelper.createDialog(dialogOptions);
|
let dlg = dialogHelper.createDialog(dialogOptions);
|
||||||
|
|
||||||
if (isFullscreen) {
|
if (isFullscreen) {
|
||||||
dlg.classList.add('actionsheet-fullscreen');
|
dlg.classList.add('actionsheet-fullscreen');
|
||||||
|
@ -128,28 +128,23 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
dlg.classList.add(options.dialogClass);
|
dlg.classList.add(options.dialogClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
var html = '';
|
let html = '';
|
||||||
|
|
||||||
var scrollClassName = layoutManager.tv ? 'scrollY smoothScrollY hiddenScrollY' : 'scrollY';
|
const scrollClassName = layoutManager.tv ? 'scrollY smoothScrollY hiddenScrollY' : 'scrollY';
|
||||||
var style = '';
|
let style = '';
|
||||||
|
|
||||||
// Admittedly a hack but right now the scrollbar is being factored into the width which is causing truncation
|
// Admittedly a hack but right now the scrollbar is being factored into the width which is causing truncation
|
||||||
if (options.items.length > 20) {
|
if (options.items.length > 20) {
|
||||||
var minWidth = dom.getWindowSize().innerWidth >= 300 ? 240 : 200;
|
const minWidth = dom.getWindowSize().innerWidth >= 300 ? 240 : 200;
|
||||||
style += 'min-width:' + minWidth + 'px;';
|
style += 'min-width:' + minWidth + 'px;';
|
||||||
}
|
}
|
||||||
|
|
||||||
var i;
|
let renderIcon = false;
|
||||||
var length;
|
let icons = [];
|
||||||
var option;
|
let itemIcon;
|
||||||
var renderIcon = false;
|
for (let item of options.items) {
|
||||||
var icons = [];
|
|
||||||
var itemIcon;
|
|
||||||
for (i = 0, length = options.items.length; i < length; i++) {
|
|
||||||
|
|
||||||
option = options.items[i];
|
itemIcon = item.icon || (item.selected ? 'check' : null);
|
||||||
|
|
||||||
itemIcon = option.icon || (option.selected ? 'check' : null);
|
|
||||||
|
|
||||||
if (itemIcon) {
|
if (itemIcon) {
|
||||||
renderIcon = true;
|
renderIcon = true;
|
||||||
|
@ -162,7 +157,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
}
|
}
|
||||||
|
|
||||||
// If any items have an icon, give them all an icon just to make sure they're all lined up evenly
|
// If any items have an icon, give them all an icon just to make sure they're all lined up evenly
|
||||||
var center = options.title && (!renderIcon /*|| itemsWithIcons.length != options.items.length*/);
|
const center = options.title && (!renderIcon /*|| itemsWithIcons.length != options.items.length*/);
|
||||||
|
|
||||||
if (center || layoutManager.tv) {
|
if (center || layoutManager.tv) {
|
||||||
html += '<div class="actionSheetContent actionSheetContent-centered">';
|
html += '<div class="actionSheetContent actionSheetContent-centered">';
|
||||||
|
@ -172,23 +167,19 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
|
|
||||||
if (options.title) {
|
if (options.title) {
|
||||||
|
|
||||||
html += '<h1 class="actionSheetTitle">';
|
html += '<h1 class="actionSheetTitle">' + options.title + '</h1>';
|
||||||
html += options.title;
|
|
||||||
html += '</h1>';
|
|
||||||
}
|
}
|
||||||
if (options.text) {
|
if (options.text) {
|
||||||
html += '<p class="actionSheetText">';
|
html += '<p class="actionSheetText">' + options.text + '</p>';
|
||||||
html += options.text;
|
|
||||||
html += '</p>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var scrollerClassName = 'actionSheetScroller';
|
let scrollerClassName = 'actionSheetScroller';
|
||||||
if (layoutManager.tv) {
|
if (layoutManager.tv) {
|
||||||
scrollerClassName += ' actionSheetScroller-tv focuscontainer-x focuscontainer-y';
|
scrollerClassName += ' actionSheetScroller-tv focuscontainer-x focuscontainer-y';
|
||||||
}
|
}
|
||||||
html += '<div class="' + scrollerClassName + ' ' + scrollClassName + '" style="' + style + '">';
|
html += '<div class="' + scrollerClassName + ' ' + scrollClassName + '" style="' + style + '">';
|
||||||
|
|
||||||
var menuItemClass = 'listItem listItem-button actionSheetMenuItem';
|
let menuItemClass = 'listItem listItem-button actionSheetMenuItem';
|
||||||
|
|
||||||
if (options.border || options.shaded) {
|
if (options.border || options.shaded) {
|
||||||
menuItemClass += ' listItem-border';
|
menuItemClass += ' listItem-border';
|
||||||
|
@ -206,26 +197,23 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
menuItemClass += ' actionsheet-xlargeFont';
|
menuItemClass += ' actionsheet-xlargeFont';
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0, length = options.items.length; i < length; i++) {
|
for (let [i, item] of options.items.entries()) {
|
||||||
|
|
||||||
option = options.items[i];
|
if (item.divider) {
|
||||||
|
|
||||||
if (option.divider) {
|
|
||||||
|
|
||||||
html += '<div class="actionsheetDivider"></div>';
|
html += '<div class="actionsheetDivider"></div>';
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var autoFocus = option.selected && layoutManager.tv ? ' autoFocus' : '';
|
const autoFocus = item.selected && layoutManager.tv ? ' autoFocus' : '';
|
||||||
|
|
||||||
// Check for null in case int 0 was passed in
|
// Check for null in case int 0 was passed in
|
||||||
var optionId = option.id == null || option.id === '' ? option.value : option.id;
|
const optionId = item.id == null || item.id === '' ? item.value : item.id;
|
||||||
html += '<button' + autoFocus + ' is="emby-button" type="button" class="' + menuItemClass + '" data-id="' + optionId + '">';
|
html += '<button' + autoFocus + ' is="emby-button" type="button" class="' + menuItemClass + '" data-id="' + optionId + '">';
|
||||||
|
|
||||||
itemIcon = icons[i];
|
itemIcon = icons[i];
|
||||||
|
|
||||||
if (itemIcon) {
|
if (itemIcon) {
|
||||||
|
|
||||||
html += '<span class="actionsheetMenuItemIcon listItemIcon listItemIcon-transparent material-icons ' + itemIcon + '"></span>';
|
html += '<span class="actionsheetMenuItemIcon listItemIcon listItemIcon-transparent material-icons ' + itemIcon + '"></span>';
|
||||||
} else if (renderIcon && !center) {
|
} else if (renderIcon && !center) {
|
||||||
html += '<span class="actionsheetMenuItemIcon listItemIcon listItemIcon-transparent material-icons check" style="visibility:hidden;"></span>';
|
html += '<span class="actionsheetMenuItemIcon listItemIcon listItemIcon-transparent material-icons check" style="visibility:hidden;"></span>';
|
||||||
|
@ -234,21 +222,17 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
html += '<div class="listItemBody actionsheetListItemBody">';
|
html += '<div class="listItemBody actionsheetListItemBody">';
|
||||||
|
|
||||||
html += '<div class="listItemBodyText actionSheetItemText">';
|
html += '<div class="listItemBodyText actionSheetItemText">';
|
||||||
html += (option.name || option.textContent || option.innerText);
|
html += (item.name || item.textContent || item.innerText);
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
if (option.secondaryText) {
|
if (item.secondaryText) {
|
||||||
html += '<div class="listItemBodyText secondary">';
|
html += '<div class="listItemBodyText secondary">' + item.secondaryText + '</div>';
|
||||||
html += option.secondaryText;
|
|
||||||
html += '</div>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
if (option.asideText) {
|
if (item.asideText) {
|
||||||
html += '<div class="listItemAside actionSheetItemAsideText">';
|
html += '<div class="listItemAside actionSheetItemAsideText">' + item.asideText + '</div>';
|
||||||
html += option.asideText;
|
|
||||||
html += '</div>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '</button>';
|
html += '</button>';
|
||||||
|
@ -267,18 +251,18 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
centerFocus(dlg.querySelector('.actionSheetScroller'), false, true);
|
centerFocus(dlg.querySelector('.actionSheetScroller'), false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
var btnCloseActionSheet = dlg.querySelector('.btnCloseActionSheet');
|
let btnCloseActionSheet = dlg.querySelector('.btnCloseActionSheet');
|
||||||
if (btnCloseActionSheet) {
|
if (btnCloseActionSheet) {
|
||||||
dlg.querySelector('.btnCloseActionSheet').addEventListener('click', function () {
|
btnCloseActionSheet.addEventListener('click', function () {
|
||||||
dialogHelper.close(dlg);
|
dialogHelper.close(dlg);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Seeing an issue in some non-chrome browsers where this is requiring a double click
|
// Seeing an issue in some non-chrome browsers where this is requiring a double click
|
||||||
//var eventName = browser.firefox ? 'mousedown' : 'click';
|
//var eventName = browser.firefox ? 'mousedown' : 'click';
|
||||||
var selectedId;
|
let selectedId;
|
||||||
|
|
||||||
var timeout;
|
let timeout;
|
||||||
if (options.timeout) {
|
if (options.timeout) {
|
||||||
timeout = setTimeout(function () {
|
timeout = setTimeout(function () {
|
||||||
dialogHelper.close(dlg);
|
dialogHelper.close(dlg);
|
||||||
|
@ -287,11 +271,11 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
var isResolved;
|
let isResolved;
|
||||||
|
|
||||||
dlg.addEventListener('click', function (e) {
|
dlg.addEventListener('click', function (e) {
|
||||||
|
|
||||||
var actionSheetMenuItem = dom.parentWithClass(e.target, 'actionSheetMenuItem');
|
const actionSheetMenuItem = dom.parentWithClass(e.target, 'actionSheetMenuItem');
|
||||||
|
|
||||||
if (actionSheetMenuItem) {
|
if (actionSheetMenuItem) {
|
||||||
selectedId = actionSheetMenuItem.getAttribute('data-id');
|
selectedId = actionSheetMenuItem.getAttribute('data-id');
|
||||||
|
@ -343,7 +327,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
|
|
||||||
dialogHelper.open(dlg);
|
dialogHelper.open(dlg);
|
||||||
|
|
||||||
var pos = options.positionTo && dialogOptions.size !== 'fullscreen' ? getPosition(options, dlg) : null;
|
const pos = options.positionTo && dialogOptions.size !== 'fullscreen' ? getPosition(options, dlg) : null;
|
||||||
|
|
||||||
if (pos) {
|
if (pos) {
|
||||||
dlg.style.position = 'fixed';
|
dlg.style.position = 'fixed';
|
||||||
|
@ -352,9 +336,8 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu
|
||||||
dlg.style.top = pos.top + 'px';
|
dlg.style.top = pos.top + 'px';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
export default {
|
||||||
show: show
|
show: show
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
|
|
@ -359,7 +359,6 @@ define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'g
|
||||||
return -1 !== supportedFeatures.indexOf(command.toLowerCase());
|
return -1 !== supportedFeatures.indexOf(command.toLowerCase());
|
||||||
},
|
},
|
||||||
preferVisualCards: browser.android || browser.chrome,
|
preferVisualCards: browser.android || browser.chrome,
|
||||||
moreIcon: browser.android ? 'more_vert' : 'more_horiz',
|
|
||||||
getSyncProfile: getSyncProfile,
|
getSyncProfile: getSyncProfile,
|
||||||
getDefaultLayout: function () {
|
getDefaultLayout: function () {
|
||||||
if (window.NativeShell) {
|
if (window.NativeShell) {
|
||||||
|
|
|
@ -869,7 +869,7 @@ import 'programStyles';
|
||||||
if (isOuterFooter && options.cardLayout && layoutManager.mobile) {
|
if (isOuterFooter && options.cardLayout && layoutManager.mobile) {
|
||||||
|
|
||||||
if (options.cardFooterAside !== 'none') {
|
if (options.cardFooterAside !== 'none') {
|
||||||
html += '<button is="paper-icon-button-light" class="itemAction btnCardOptions cardText-secondary" data-action="menu"><span class="material-icons more_horiz"></span></button>';
|
html += '<button is="paper-icon-button-light" class="itemAction btnCardOptions cardText-secondary" data-action="menu"><span class="material-icons more_vert"></span></button>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1426,7 +1426,7 @@ import 'programStyles';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.overlayMoreButton) {
|
if (options.overlayMoreButton) {
|
||||||
overlayButtons += '<button is="paper-icon-button-light" class="' + btnCssClass + '" data-action="menu"><span class="material-icons cardOverlayButtonIcon more_horiz"></span></button>';
|
overlayButtons += '<button is="paper-icon-button-light" class="' + btnCssClass + '" data-action="menu"><span class="material-icons cardOverlayButtonIcon more_vert"></span></button>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1580,7 +1580,7 @@ import 'programStyles';
|
||||||
html += '<button is="emby-ratingbutton" type="button" data-action="none" class="' + btnCssClass + '" data-id="' + item.Id + '" data-serverid="' + item.ServerId + '" data-itemtype="' + item.Type + '" data-likes="' + likes + '" data-isfavorite="' + (userData.IsFavorite) + '"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover favorite"></span></button>';
|
html += '<button is="emby-ratingbutton" type="button" data-action="none" class="' + btnCssClass + '" data-id="' + item.Id + '" data-serverid="' + item.ServerId + '" data-itemtype="' + item.Type + '" data-likes="' + likes + '" data-isfavorite="' + (userData.IsFavorite) + '"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover favorite"></span></button>';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '<button is="paper-icon-button-light" class="' + btnCssClass + '" data-action="menu"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover more_horiz"></span></button>';
|
html += '<button is="paper-icon-button-light" class="' + btnCssClass + '" data-action="menu"><span class="material-icons cardOverlayButtonIcon cardOverlayButtonIcon-hover more_vert"></span></button>';
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
define(['connectionManager', 'confirm', 'appRouter', 'globalize'], function (connectionManager, confirm, appRouter, globalize) {
|
import connectionManager from 'connectionManager';
|
||||||
'use strict';
|
import confirm from 'confirm';
|
||||||
|
import appRouter from 'appRouter';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
|
||||||
function alertText(options) {
|
function alertText(options) {
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
|
@ -9,49 +11,44 @@ define(['connectionManager', 'confirm', 'appRouter', 'globalize'], function (con
|
||||||
alert(options).then(resolve, resolve);
|
alert(options).then(resolve, resolve);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteItem(options) {
|
export function deleteItem(options) {
|
||||||
|
|
||||||
var item = options.item;
|
const item = options.item;
|
||||||
var itemId = item.Id;
|
const parentId = item.SeasonId || item.SeriesId || item.ParentId;
|
||||||
var parentId = item.SeasonId || item.SeriesId || item.ParentId;
|
|
||||||
var serverId = item.ServerId;
|
|
||||||
|
|
||||||
var msg = globalize.translate('ConfirmDeleteItem');
|
let apiClient = connectionManager.getApiClient(item.ServerId);
|
||||||
var title = globalize.translate('HeaderDeleteItem');
|
|
||||||
var apiClient = connectionManager.getApiClient(item.ServerId);
|
|
||||||
|
|
||||||
return confirm({
|
return confirm({
|
||||||
|
|
||||||
title: title,
|
title: globalize.translate('HeaderDeleteItem'),
|
||||||
text: msg,
|
text: globalize.translate('ConfirmDeleteItem'),
|
||||||
confirmText: globalize.translate('Delete'),
|
confirmText: globalize.translate('Delete'),
|
||||||
primary: 'delete'
|
primary: 'delete'
|
||||||
|
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
|
|
||||||
return apiClient.deleteItem(itemId).then(function () {
|
return apiClient.deleteItem(item.Id).then(function () {
|
||||||
|
|
||||||
if (options.navigate) {
|
if (options.navigate) {
|
||||||
if (parentId) {
|
if (parentId) {
|
||||||
appRouter.showItem(parentId, serverId);
|
appRouter.showItem(parentId, item.ServerId);
|
||||||
} else {
|
} else {
|
||||||
appRouter.goHome();
|
appRouter.goHome();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, function (err) {
|
}, function (err) {
|
||||||
|
|
||||||
var result = function () {
|
let result = function () {
|
||||||
return Promise.reject(err);
|
return Promise.reject(err);
|
||||||
};
|
};
|
||||||
|
|
||||||
return alertText(globalize.translate('ErrorDeletingItem')).then(result, result);
|
return alertText(globalize.translate('ErrorDeletingItem')).then(result, result);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
export default {
|
||||||
deleteItem: deleteItem
|
deleteItem: deleteItem
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
<div class="fieldDescription">
|
<div class="fieldDescription">
|
||||||
<div>${LabelDisplayLanguageHelp}</div>
|
<div>${LabelDisplayLanguageHelp}</div>
|
||||||
<div class="learnHowToContributeContainer hide" style="margin-top: .25em;">
|
<div class="learnHowToContributeContainer hide" style="margin-top: .25em;">
|
||||||
<a is="emby-linkbutton" class="button-link" href="https://github.com/jellyfin/jellyfin" target="_blank">${LearnHowYouCanContribute}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="button-link" href="https://github.com/jellyfin/jellyfin" target="_blank">${LearnHowYouCanContribute}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<div class="formDialogHeader">
|
<div class="formDialogHeader">
|
||||||
<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><span class="material-icons arrow_back"></span></button>
|
<button is="paper-icon-button-light" class="btnCancel autoSize" title="${LabelPrevious}" tabindex="-1">
|
||||||
|
<span class="material-icons arrow_back" aria-hidden="true"></span>
|
||||||
|
</button>
|
||||||
<h3 class="formDialogHeaderTitle">
|
<h3 class="formDialogHeaderTitle">
|
||||||
${Settings}
|
${Settings}
|
||||||
</h3>
|
</h3>
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
|
|
||||||
<div class="guide-headerTimeslots">
|
<div class="guide-headerTimeslots">
|
||||||
<div class="guide-channelTimeslotHeader">
|
<div class="guide-channelTimeslotHeader">
|
||||||
<button is="paper-icon-button-light" type="button" class="btnGuideViewSettings">
|
<button is="paper-icon-button-light" type="button" class="btnGuideViewSettings" title="${ButtonMore}">
|
||||||
<span class="material-icons btnGuideViewSettingsIcon more_horiz"></span>
|
<span class="material-icons btnGuideViewSettingsIcon more_vert" aria-hidden="true"></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="timeslotHeaders scrollX guideScroller"></div>
|
<div class="timeslotHeaders scrollX guideScroller"></div>
|
||||||
|
@ -29,10 +29,10 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="guideOptions hide">
|
<div class="guideOptions hide">
|
||||||
<button is="paper-icon-button-light" type="button" class="btnPreviousPage">
|
<button is="paper-icon-button-light" type="button" class="btnPreviousPage" title="${LabelPrevious}">
|
||||||
<span class="material-icons arrow_back"></span>
|
<span class="material-icons arrow_back" aria-hidden="true"></span>
|
||||||
</button>
|
</button>
|
||||||
<button is="paper-icon-button-light" type="button" class="btnNextPage">
|
<button is="paper-icon-button-light" type="button" class="btnNextPage" title="${LabelNext}">
|
||||||
<span class="material-icons arrow_forward"></span>
|
<span class="material-icons arrow_forward" aria-hidden="true"></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -194,7 +194,7 @@ define(['appSettings', 'browser', 'events'], function (appSettings, browser, eve
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
events.map(function (name) {
|
events.map(function (name) {
|
||||||
element.addEventListener(name, onMediaChange);
|
return element.addEventListener(name, onMediaChange);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,7 +136,10 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp
|
||||||
|
|
||||||
requireHlsPlayer(function () {
|
requireHlsPlayer(function () {
|
||||||
var hls = new Hls({
|
var hls = new Hls({
|
||||||
manifestLoadingTimeOut: 20000
|
manifestLoadingTimeOut: 20000,
|
||||||
|
xhrSetup: function(xhr, url) {
|
||||||
|
xhr.withCredentials = true;
|
||||||
|
}
|
||||||
//appendErrorMaxRetry: 6,
|
//appendErrorMaxRetry: 6,
|
||||||
//debug: true
|
//debug: true
|
||||||
});
|
});
|
||||||
|
@ -155,6 +158,9 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp
|
||||||
|
|
||||||
elem.autoplay = true;
|
elem.autoplay = true;
|
||||||
|
|
||||||
|
// Safari will not send cookies without this
|
||||||
|
elem.crossOrigin = 'use-credentials';
|
||||||
|
|
||||||
return htmlMediaHelper.applySrc(elem, val, options).then(function () {
|
return htmlMediaHelper.applySrc(elem, val, options).then(function () {
|
||||||
|
|
||||||
self._currentSrc = val;
|
self._currentSrc = val;
|
||||||
|
|
|
@ -106,10 +106,16 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hidePrePlaybackPage() {
|
||||||
|
let animatedPage = document.querySelector('.page:not(.hide)');
|
||||||
|
animatedPage.classList.add('hide');
|
||||||
|
}
|
||||||
|
|
||||||
function zoomIn(elem) {
|
function zoomIn(elem) {
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
var duration = 240;
|
var duration = 240;
|
||||||
elem.style.animation = 'htmlvideoplayer-zoomin ' + duration + 'ms ease-in normal';
|
elem.style.animation = 'htmlvideoplayer-zoomin ' + duration + 'ms ease-in normal';
|
||||||
|
hidePrePlaybackPage();
|
||||||
dom.addEventListener(elem, dom.whichAnimationEvent(), resolve, {
|
dom.addEventListener(elem, dom.whichAnimationEvent(), resolve, {
|
||||||
once: true
|
once: true
|
||||||
});
|
});
|
||||||
|
@ -290,7 +296,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
|
|
||||||
return createMediaElement(options).then(function (elem) {
|
return createMediaElement(options).then(function (elem) {
|
||||||
|
|
||||||
return updateVideoUrl(options, options.mediaSource).then(function () {
|
return updateVideoUrl(options).then(function () {
|
||||||
return setCurrentSrc(elem, options);
|
return setCurrentSrc(elem, options);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -330,7 +336,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
requireHlsPlayer(function () {
|
requireHlsPlayer(function () {
|
||||||
|
|
||||||
var hls = new Hls({
|
var hls = new Hls({
|
||||||
manifestLoadingTimeOut: 20000
|
manifestLoadingTimeOut: 20000,
|
||||||
|
xhrSetup: function(xhr, xhr_url) {
|
||||||
|
xhr.withCredentials = true;
|
||||||
|
}
|
||||||
//appendErrorMaxRetry: 6,
|
//appendErrorMaxRetry: 6,
|
||||||
//debug: true
|
//debug: true
|
||||||
});
|
});
|
||||||
|
@ -551,6 +560,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
|
|
||||||
elem.autoplay = true;
|
elem.autoplay = true;
|
||||||
|
|
||||||
|
// Safari will not send cookies without this
|
||||||
|
elem.crossOrigin = 'use-credentials';
|
||||||
|
|
||||||
return htmlMediaHelper.applySrc(elem, val, options).then(function () {
|
return htmlMediaHelper.applySrc(elem, val, options).then(function () {
|
||||||
|
|
||||||
self._currentSrc = val;
|
self._currentSrc = val;
|
||||||
|
@ -836,7 +848,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
function onNavigatedToOsd() {
|
function onNavigatedToOsd() {
|
||||||
var dlg = videoDialog;
|
var dlg = videoDialog;
|
||||||
if (dlg) {
|
if (dlg) {
|
||||||
dlg.classList.remove('videoPlayerContainer-withBackdrop');
|
|
||||||
dlg.classList.remove('videoPlayerContainer-onTop');
|
dlg.classList.remove('videoPlayerContainer-onTop');
|
||||||
|
|
||||||
onStartedAndNavigatedToOsd();
|
onStartedAndNavigatedToOsd();
|
||||||
|
@ -873,7 +884,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
appRouter.setTransparency('backdrop');
|
appRouter.setTransparency('backdrop');
|
||||||
videoDialog.classList.remove('videoPlayerContainer-withBackdrop');
|
|
||||||
videoDialog.classList.remove('videoPlayerContainer-onTop');
|
videoDialog.classList.remove('videoPlayerContainer-onTop');
|
||||||
|
|
||||||
onStartedAndNavigatedToOsd();
|
onStartedAndNavigatedToOsd();
|
||||||
|
@ -1290,12 +1300,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
|
|
||||||
function createMediaElement(options) {
|
function createMediaElement(options) {
|
||||||
|
|
||||||
if (browser.tv || browser.iOS || browser.mobile) {
|
|
||||||
// too slow
|
|
||||||
// also on iOS, the backdrop image doesn't look right
|
|
||||||
// on android mobile, it works, but can be slow to have the video surface fully cover the backdrop
|
|
||||||
options.backdropUrl = null;
|
|
||||||
}
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
|
||||||
var dlg = document.querySelector('.videoPlayerContainer');
|
var dlg = document.querySelector('.videoPlayerContainer');
|
||||||
|
@ -1310,11 +1314,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
|
|
||||||
dlg.classList.add('videoPlayerContainer');
|
dlg.classList.add('videoPlayerContainer');
|
||||||
|
|
||||||
if (options.backdropUrl) {
|
|
||||||
dlg.classList.add('videoPlayerContainer-withBackdrop');
|
|
||||||
dlg.style.backgroundImage = "url('" + options.backdropUrl + "')";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.fullscreen) {
|
if (options.fullscreen) {
|
||||||
dlg.classList.add('videoPlayerContainer-onTop');
|
dlg.classList.add('videoPlayerContainer-onTop');
|
||||||
}
|
}
|
||||||
|
@ -1348,6 +1347,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
videoElement.addEventListener('play', onPlay);
|
videoElement.addEventListener('play', onPlay);
|
||||||
videoElement.addEventListener('click', onClick);
|
videoElement.addEventListener('click', onClick);
|
||||||
videoElement.addEventListener('dblclick', onDblClick);
|
videoElement.addEventListener('dblclick', onDblClick);
|
||||||
|
if (options.backdropUrl) {
|
||||||
|
videoElement.poster = options.backdropUrl;
|
||||||
|
}
|
||||||
|
|
||||||
document.body.insertBefore(dlg, document.body.firstChild);
|
document.body.insertBefore(dlg, document.body.firstChild);
|
||||||
videoDialog = dlg;
|
videoDialog = dlg;
|
||||||
|
@ -1367,15 +1369,11 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
||||||
resolve(videoElement);
|
resolve(videoElement);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
hidePrePlaybackPage();
|
||||||
resolve(videoElement);
|
resolve(videoElement);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (options.backdropUrl) {
|
|
||||||
dlg.classList.add('videoPlayerContainer-withBackdrop');
|
|
||||||
dlg.style.backgroundImage = "url('" + options.backdropUrl + "')";
|
|
||||||
}
|
|
||||||
|
|
||||||
resolve(dlg.querySelector('video'));
|
resolve(dlg.querySelector('video'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,20 +6,9 @@
|
||||||
right: 0;
|
right: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
|
||||||
|
|
||||||
.videoPlayerContainer:not(.videoPlayerContainer-withBackdrop) {
|
|
||||||
background: #000 !important;
|
background: #000 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.videoPlayerContainer-withBackdrop {
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center center;
|
|
||||||
background-size: cover;
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.videoPlayerContainer-onTop {
|
.videoPlayerContainer-onTop {
|
||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,51 +1,49 @@
|
||||||
define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'material-icons'], function (datetime, itemHelper) {
|
import datetime from 'datetime';
|
||||||
'use strict';
|
import itemHelper from 'itemHelper';
|
||||||
|
import 'emby-progressbar';
|
||||||
|
import 'css!./indicators.css';
|
||||||
|
import 'material-icons';
|
||||||
|
|
||||||
function enableProgressIndicator(item) {
|
export function enableProgressIndicator(item) {
|
||||||
if (item.MediaType === 'Video') {
|
if (item.MediaType === 'Video' && item.Type !== 'TvChannel') {
|
||||||
if (item.Type !== 'TvChannel') {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (item.Type === 'AudioBook' || item.Type === 'AudioPodcast') {
|
if (item.Type === 'AudioBook' || item.Type === 'AudioPodcast') {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getProgressHtml(pct, options) {
|
export function getProgressHtml(pct, options) {
|
||||||
var containerClass = 'itemProgressBar';
|
let containerClass = 'itemProgressBar';
|
||||||
if (options) {
|
if (options && options.containerClass) {
|
||||||
if (options.containerClass) {
|
|
||||||
containerClass += ' ' + options.containerClass;
|
containerClass += ' ' + options.containerClass;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return '<div class="' + containerClass + '"><div class="itemProgressBarForeground" style="width:' + pct + '%;"></div></div>';
|
return '<div class="' + containerClass + '"><div class="itemProgressBarForeground" style="width:' + pct + '%;"></div></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAutoTimeProgressHtml(pct, options, isRecording, start, end) {
|
function getAutoTimeProgressHtml(pct, options, isRecording, start, end) {
|
||||||
var containerClass = 'itemProgressBar';
|
let containerClass = 'itemProgressBar';
|
||||||
if (options) {
|
if (options && options.containerClass) {
|
||||||
if (options.containerClass) {
|
|
||||||
containerClass += ' ' + options.containerClass;
|
containerClass += ' ' + options.containerClass;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
var foregroundClass = 'itemProgressBarForeground';
|
let foregroundClass = 'itemProgressBarForeground';
|
||||||
if (isRecording) {
|
if (isRecording) {
|
||||||
foregroundClass += ' itemProgressBarForeground-recording';
|
foregroundClass += ' itemProgressBarForeground-recording';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '<div is="emby-progressbar" data-automode="time" data-starttime="' + start + '" data-endtime="' + end + '" class="' + containerClass + '"><div class="' + foregroundClass + '" style="width:' + pct + '%;"></div></div>';
|
return '<div is="emby-progressbar" data-automode="time" data-starttime="' + start + '" data-endtime="' + end + '" class="' + containerClass + '"><div class="' + foregroundClass + '" style="width:' + pct + '%;"></div></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getProgressBarHtml(item, options) {
|
export function getProgressBarHtml(item, options) {
|
||||||
var pct;
|
let pct;
|
||||||
if (enableProgressIndicator(item) && item.Type !== 'Recording') {
|
if (enableProgressIndicator(item) && item.Type !== 'Recording') {
|
||||||
var userData = options ? (options.userData || item.UserData) : item.UserData;
|
const userData = options && options.userData ? options.userData : item.UserData;
|
||||||
|
|
||||||
if (userData) {
|
if (userData) {
|
||||||
pct = userData.PlayedPercentage;
|
pct = userData.PlayedPercentage;
|
||||||
if (pct && pct < 100) {
|
if (pct && pct < 100) {
|
||||||
|
@ -55,8 +53,8 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'Recording') && item.StartDate && item.EndDate) {
|
if ((item.Type === 'Program' || item.Type === 'Timer' || item.Type === 'Recording') && item.StartDate && item.EndDate) {
|
||||||
var startDate = 0;
|
let startDate = 0;
|
||||||
var endDate = 1;
|
let endDate = 1;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
startDate = datetime.parseISO8601Date(item.StartDate).getTime();
|
startDate = datetime.parseISO8601Date(item.StartDate).getTime();
|
||||||
|
@ -65,26 +63,26 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
var now = new Date().getTime();
|
const now = new Date().getTime();
|
||||||
var total = endDate - startDate;
|
const total = endDate - startDate;
|
||||||
pct = 100 * ((now - startDate) / total);
|
pct = 100 * ((now - startDate) / total);
|
||||||
|
|
||||||
if (pct > 0 && pct < 100) {
|
if (pct > 0 && pct < 100) {
|
||||||
var isRecording = item.Type === 'Timer' || item.Type === 'Recording' || item.TimerId;
|
const isRecording = item.Type === 'Timer' || item.Type === 'Recording' || item.TimerId;
|
||||||
return getAutoTimeProgressHtml(pct, options, isRecording, startDate, endDate);
|
return getAutoTimeProgressHtml(pct, options, isRecording, startDate, endDate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function enablePlayedIndicator(item) {
|
export function enablePlayedIndicator(item) {
|
||||||
return itemHelper.canMarkPlayed(item);
|
return itemHelper.canMarkPlayed(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPlayedIndicator(item) {
|
export function getPlayedIndicatorHtml(item) {
|
||||||
if (enablePlayedIndicator(item)) {
|
if (enablePlayedIndicator(item)) {
|
||||||
var userData = item.UserData || {};
|
let userData = item.UserData || {};
|
||||||
if (userData.UnplayedItemCount) {
|
if (userData.UnplayedItemCount) {
|
||||||
return '<div class="countIndicator indicator">' + userData.UnplayedItemCount + '</div>';
|
return '<div class="countIndicator indicator">' + userData.UnplayedItemCount + '</div>';
|
||||||
}
|
}
|
||||||
|
@ -95,27 +93,20 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCountIndicatorHtml(count) {
|
export function getChildCountIndicatorHtml(item, options) {
|
||||||
return '<div class="countIndicator indicator">' + count + '</div>';
|
const minCount = options && options.minCount ? options.minCount : 0;
|
||||||
}
|
|
||||||
|
|
||||||
function getChildCountIndicatorHtml(item, options) {
|
|
||||||
var minCount = 0;
|
|
||||||
if (options) {
|
|
||||||
minCount = options.minCount || minCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item.ChildCount && item.ChildCount > minCount) {
|
if (item.ChildCount && item.ChildCount > minCount) {
|
||||||
return getCountIndicatorHtml(item.ChildCount);
|
return '<div class="countIndicator indicator">' + item.ChildCount + '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTimerIndicator(item) {
|
export function getTimerIndicator(item) {
|
||||||
var status;
|
let status;
|
||||||
|
|
||||||
if (item.Type === 'SeriesTimer') {
|
if (item.Type === 'SeriesTimer') {
|
||||||
return '<span class="material-icons timerIndicator indicatorIcon fiber_smart_record"></span>';
|
return '<span class="material-icons timerIndicator indicatorIcon fiber_smart_record"></span>';
|
||||||
|
@ -136,9 +127,9 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm
|
||||||
}
|
}
|
||||||
|
|
||||||
return '<span class="material-icons timerIndicator indicatorIcon fiber_manual_record"></span>';
|
return '<span class="material-icons timerIndicator indicatorIcon fiber_manual_record"></span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSyncIndicator(item) {
|
export function getSyncIndicator(item) {
|
||||||
if (item.SyncPercent === 100) {
|
if (item.SyncPercent === 100) {
|
||||||
return '<div class="syncIndicator indicator fullSyncIndicator"><span class="material-icons indicatorIcon file_download"></span></div>';
|
return '<div class="syncIndicator indicator fullSyncIndicator"><span class="material-icons indicatorIcon file_download"></span></div>';
|
||||||
} else if (item.SyncPercent != null) {
|
} else if (item.SyncPercent != null) {
|
||||||
|
@ -146,30 +137,25 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTypeIndicator(item) {
|
export function getTypeIndicator(item) {
|
||||||
if (item.Type === 'Video') {
|
const iconT = {
|
||||||
return '<div class="indicator videoIndicator"><span class="material-icons indicatorIcon videocam"></span></div>';
|
'Video' : 'videocam',
|
||||||
}
|
'Folder' : 'folder',
|
||||||
if (item.Type === 'Folder') {
|
'PhotoAlbum' : 'photo_album',
|
||||||
return '<div class="indicator videoIndicator"><span class="material-icons indicatorIcon folder"></span></div>';
|
'Photo' : 'photo'
|
||||||
}
|
};
|
||||||
if (item.Type === 'PhotoAlbum') {
|
|
||||||
return '<div class="indicator videoIndicator"><span class="material-icons indicatorIcon photo_album"></span></div>';
|
|
||||||
}
|
|
||||||
if (item.Type === 'Photo') {
|
|
||||||
return '<div class="indicator videoIndicator"><span class="material-icons indicatorIcon photo"></span></div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
return '';
|
const icon = iconT[item.Type];
|
||||||
}
|
return icon ? '<div class="indicator videoIndicator"><span class="material-icons indicatorIcon '+ icon +'"></span></div>' : '';
|
||||||
|
}
|
||||||
|
|
||||||
function getMissingIndicator(item) {
|
export function getMissingIndicator(item) {
|
||||||
if (item.Type === 'Episode' && item.LocationType === 'Virtual') {
|
if (item.Type === 'Episode' && item.LocationType === 'Virtual') {
|
||||||
if (item.PremiereDate) {
|
if (item.PremiereDate) {
|
||||||
try {
|
try {
|
||||||
var premiereDate = datetime.parseISO8601Date(item.PremiereDate).getTime();
|
const premiereDate = datetime.parseISO8601Date(item.PremiereDate).getTime();
|
||||||
if (premiereDate > new Date().getTime()) {
|
if (premiereDate > new Date().getTime()) {
|
||||||
return '<div class="unairedIndicator">Unaired</div>';
|
return '<div class="unairedIndicator">Unaired</div>';
|
||||||
}
|
}
|
||||||
|
@ -181,12 +167,12 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
export default {
|
||||||
getProgressHtml: getProgressHtml,
|
getProgressHtml: getProgressHtml,
|
||||||
getProgressBarHtml: getProgressBarHtml,
|
getProgressBarHtml: getProgressBarHtml,
|
||||||
getPlayedIndicatorHtml: getPlayedIndicator,
|
getPlayedIndicatorHtml: getPlayedIndicatorHtml,
|
||||||
getChildCountIndicatorHtml: getChildCountIndicatorHtml,
|
getChildCountIndicatorHtml: getChildCountIndicatorHtml,
|
||||||
enableProgressIndicator: enableProgressIndicator,
|
enableProgressIndicator: enableProgressIndicator,
|
||||||
getTimerIndicator: getTimerIndicator,
|
getTimerIndicator: getTimerIndicator,
|
||||||
|
@ -194,5 +180,4 @@ define(['datetime', 'itemHelper', 'emby-progressbar', 'css!./indicators.css', 'm
|
||||||
getSyncIndicator: getSyncIndicator,
|
getSyncIndicator: getSyncIndicator,
|
||||||
getTypeIndicator: getTypeIndicator,
|
getTypeIndicator: getTypeIndicator,
|
||||||
getMissingIndicator: getMissingIndicator
|
getMissingIndicator: getMissingIndicator
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
|
|
@ -109,8 +109,8 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
|
||||||
html += '<div class="metadataFetcher" data-type="' + availableTypeOptions.Type + '">';
|
html += '<div class="metadataFetcher" data-type="' + availableTypeOptions.Type + '">';
|
||||||
html += '<h3 class="checkboxListLabel">' + globalize.translate('LabelTypeMetadataDownloaders', globalize.translate(availableTypeOptions.Type)) + '</h3>';
|
html += '<h3 class="checkboxListLabel">' + globalize.translate('LabelTypeMetadataDownloaders', globalize.translate(availableTypeOptions.Type)) + '</h3>';
|
||||||
html += '<div class="checkboxList paperList checkboxList-paperList">';
|
html += '<div class="checkboxList paperList checkboxList-paperList">';
|
||||||
for (var i = 0; i < plugins.length; i++) {
|
|
||||||
var plugin = plugins[i];
|
plugins.forEach((plugin, index) => {
|
||||||
html += '<div class="listItem metadataFetcherItem sortableOption" data-pluginname="' + plugin.Name + '">';
|
html += '<div class="listItem metadataFetcherItem sortableOption" data-pluginname="' + plugin.Name + '">';
|
||||||
var isChecked = libraryOptionsForType.MetadataFetchers ? -1 !== libraryOptionsForType.MetadataFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled;
|
var isChecked = libraryOptionsForType.MetadataFetchers ? -1 !== libraryOptionsForType.MetadataFetchers.indexOf(plugin.Name) : plugin.DefaultEnabled;
|
||||||
var checkedHtml = isChecked ? ' checked="checked"' : '';
|
var checkedHtml = isChecked ? ' checked="checked"' : '';
|
||||||
|
@ -120,8 +120,9 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
|
||||||
html += plugin.Name;
|
html += plugin.Name;
|
||||||
html += '</h3>';
|
html += '</h3>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
i > 0 ? html += '<button type="button" is="paper-icon-button-light" title="' + globalize.translate('ButtonUp') + '" class="btnSortableMoveUp btnSortable" data-pluginindex="' + i + '"><span class="material-icons keyboard_arrow_up"></span></button>' : plugins.length > 1 && (html += '<button type="button" is="paper-icon-button-light" title="' + globalize.translate('ButtonDown') + '" class="btnSortableMoveDown btnSortable" data-pluginindex="' + i + '"><span class="material-icons keyboard_arrow_down"></span></button>'), html += '</div>';
|
index > 0 ? html += '<button type="button" is="paper-icon-button-light" title="' + globalize.translate('ButtonUp') + '" class="btnSortableMoveUp btnSortable" data-pluginindex="' + index + '"><span class="material-icons keyboard_arrow_up"></span></button>' : plugins.length > 1 && (html += '<button type="button" is="paper-icon-button-light" title="' + globalize.translate('ButtonDown') + '" class="btnSortableMoveDown btnSortable" data-pluginindex="' + index + '"><span class="material-icons keyboard_arrow_down"></span></button>'), html += '</div>';
|
||||||
}
|
});
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<div class="fieldDescription">' + globalize.translate('LabelMetadataDownloadersHelp') + '</div>';
|
html += '<div class="fieldDescription">' + globalize.translate('LabelMetadataDownloadersHelp') + '</div>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
@ -292,11 +293,15 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
|
||||||
function showImageOptionsForType(type) {
|
function showImageOptionsForType(type) {
|
||||||
require(['imageoptionseditor'], function(ImageOptionsEditor) {
|
require(['imageoptionseditor'], function(ImageOptionsEditor) {
|
||||||
var typeOptions = getTypeOptions(currentLibraryOptions, type);
|
var typeOptions = getTypeOptions(currentLibraryOptions, type);
|
||||||
typeOptions || (typeOptions = {
|
if (!typeOptions) {
|
||||||
|
typeOptions = {
|
||||||
Type: type
|
Type: type
|
||||||
}, currentLibraryOptions.TypeOptions.push(typeOptions));
|
};
|
||||||
|
currentLibraryOptions.TypeOptions.push(typeOptions);
|
||||||
|
}
|
||||||
var availableOptions = getTypeOptions(currentAvailableOptions || {}, type);
|
var availableOptions = getTypeOptions(currentAvailableOptions || {}, type);
|
||||||
(new ImageOptionsEditor).show(type, typeOptions, availableOptions);
|
var imageOptionsEditor = new ImageOptionsEditor();
|
||||||
|
imageOptionsEditor.show(type, typeOptions, availableOptions);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -315,10 +320,16 @@ define(['globalize', 'dom', 'emby-checkbox', 'emby-select', 'emby-input'], funct
|
||||||
var list = dom.parentWithClass(li, 'paperList');
|
var list = dom.parentWithClass(li, 'paperList');
|
||||||
if (btnSortable.classList.contains('btnSortableMoveDown')) {
|
if (btnSortable.classList.contains('btnSortableMoveDown')) {
|
||||||
var next = li.nextSibling;
|
var next = li.nextSibling;
|
||||||
next && (li.parentNode.removeChild(li), next.parentNode.insertBefore(li, next.nextSibling));
|
if (next) {
|
||||||
|
li.parentNode.removeChild(li);
|
||||||
|
next.parentNode.insertBefore(li, next.nextSibling);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
var prev = li.previousSibling;
|
var prev = li.previousSibling;
|
||||||
prev && (li.parentNode.removeChild(li), prev.parentNode.insertBefore(li, prev));
|
if (prev) {
|
||||||
|
li.parentNode.removeChild(li);
|
||||||
|
prev.parentNode.insertBefore(li, prev);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Array.prototype.forEach.call(list.querySelectorAll('.sortableOption'), adjustSortableListElement);
|
Array.prototype.forEach.call(list.querySelectorAll('.sortableOption'), adjustSortableListElement);
|
||||||
}
|
}
|
||||||
|
|
|
@ -426,7 +426,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
|
||||||
|
|
||||||
html += '<div class="' + cssClass + '">';
|
html += '<div class="' + cssClass + '">';
|
||||||
|
|
||||||
const moreIcon = 'more_horiz';
|
const moreIcon = 'more_vert';
|
||||||
|
|
||||||
html += getTextLinesHtml(textlines, isLargeStyle);
|
html += getTextLinesHtml(textlines, isLargeStyle);
|
||||||
|
|
||||||
|
|
|
@ -490,26 +490,26 @@ define(['datetime', 'globalize', 'appRouter', 'itemHelper', 'indicators', 'mater
|
||||||
if (i.IsInterlaced) {
|
if (i.IsInterlaced) {
|
||||||
return '1440i';
|
return '1440i';
|
||||||
}
|
}
|
||||||
return '1440P';
|
return '1440p';
|
||||||
}
|
}
|
||||||
if (width >= 1800 || height >= 1000) {
|
if (width >= 1800 || height >= 1000) {
|
||||||
if (i.IsInterlaced) {
|
if (i.IsInterlaced) {
|
||||||
return '1080i';
|
return '1080i';
|
||||||
}
|
}
|
||||||
return '1080P';
|
return '1080p';
|
||||||
}
|
}
|
||||||
if (width >= 1200 || height >= 700) {
|
if (width >= 1200 || height >= 700) {
|
||||||
if (i.IsInterlaced) {
|
if (i.IsInterlaced) {
|
||||||
return '720i';
|
return '720i';
|
||||||
}
|
}
|
||||||
return '720P';
|
return '720p';
|
||||||
}
|
}
|
||||||
if (width >= 700 || height >= 400) {
|
if (width >= 700 || height >= 400) {
|
||||||
|
|
||||||
if (i.IsInterlaced) {
|
if (i.IsInterlaced) {
|
||||||
return '480i';
|
return '480i';
|
||||||
}
|
}
|
||||||
return '480P';
|
return '480p';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -750,11 +750,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
|
||||||
return a.Name;
|
return a.Name;
|
||||||
}).join(';');
|
}).join(';');
|
||||||
|
|
||||||
if (item.Type === 'Series') {
|
|
||||||
context.querySelector('#selectDisplayOrder').value = item.DisplayOrder || '';
|
context.querySelector('#selectDisplayOrder').value = item.DisplayOrder || '';
|
||||||
} else {
|
|
||||||
context.querySelector('#selectDisplayOrder').value = item.DisplayOrder || '';
|
|
||||||
}
|
|
||||||
|
|
||||||
context.querySelector('#txtArtist').value = (item.ArtistItems || []).map(function (a) {
|
context.querySelector('#txtArtist').value = (item.ArtistItems || []).map(function (a) {
|
||||||
return a.Name;
|
return a.Name;
|
||||||
|
|
|
@ -129,7 +129,7 @@ define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'glo
|
||||||
html += '<button is="paper-icon-button-light" class="btnCloseSelectionPanel autoSize"><span class="material-icons close"></span></button>';
|
html += '<button is="paper-icon-button-light" class="btnCloseSelectionPanel autoSize"><span class="material-icons close"></span></button>';
|
||||||
html += '<h1 class="itemSelectionCount"></h1>';
|
html += '<h1 class="itemSelectionCount"></h1>';
|
||||||
|
|
||||||
const moreIcon = 'more_horiz';
|
const moreIcon = 'more_vert';
|
||||||
html += '<button is="paper-icon-button-light" class="btnSelectionPanelOptions autoSize" style="margin-left:auto;"><span class="material-icons ' + moreIcon + '"></span></button>';
|
html += '<button is="paper-icon-button-light" class="btnSelectionPanelOptions autoSize" style="margin-left:auto;"><span class="material-icons ' + moreIcon + '"></span></button>';
|
||||||
|
|
||||||
selectionCommandsPanel.innerHTML = html;
|
selectionCommandsPanel.innerHTML = html;
|
||||||
|
|
|
@ -309,13 +309,11 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
|
||||||
if (codecProfile.Type === 'Audio') {
|
if (codecProfile.Type === 'Audio') {
|
||||||
(codecProfile.Conditions || []).map(function (condition) {
|
(codecProfile.Conditions || []).map(function (condition) {
|
||||||
if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioBitDepth') {
|
if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioBitDepth') {
|
||||||
maxAudioBitDepth = condition.Value;
|
return maxAudioBitDepth = condition.Value;
|
||||||
}
|
} else if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioSampleRate') {
|
||||||
if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioSampleRate') {
|
return maxAudioSampleRate = condition.Value;
|
||||||
maxAudioSampleRate = condition.Value;
|
} else if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioBitrate') {
|
||||||
}
|
return maxAudioBitrate = condition.Value;
|
||||||
if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioBitrate') {
|
|
||||||
maxAudioBitrate = condition.Value;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +1,20 @@
|
||||||
define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings'], function (actionsheet, datetime, playbackManager, globalize, appSettings) {
|
import actionsheet from 'actionsheet';
|
||||||
'use strict';
|
import datetime from 'datetime';
|
||||||
|
import playbackManager from 'playbackManager';
|
||||||
|
import globalize from 'globalize';
|
||||||
|
|
||||||
function show(options) {
|
export function show(options) {
|
||||||
|
|
||||||
var item = options.item;
|
var item = options.item;
|
||||||
|
|
||||||
var itemType = item.Type;
|
|
||||||
var isFolder = item.IsFolder;
|
|
||||||
var itemId = item.Id;
|
|
||||||
var channelId = item.ChannelId;
|
|
||||||
var serverId = item.ServerId;
|
|
||||||
var resumePositionTicks = item.UserData ? item.UserData.PlaybackPositionTicks : null;
|
var resumePositionTicks = item.UserData ? item.UserData.PlaybackPositionTicks : null;
|
||||||
|
|
||||||
var playableItemId = itemType === 'Program' ? channelId : itemId;
|
var playableItemId = item.Type === 'Program' ? item.ChannelId : item.Id;
|
||||||
|
|
||||||
if (!resumePositionTicks || isFolder) {
|
if (!resumePositionTicks || item.IsFolder) {
|
||||||
playbackManager.play({
|
playbackManager.play({
|
||||||
ids: [playableItemId],
|
ids: [playableItemId],
|
||||||
serverId: serverId
|
serverId: item.ServerId
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -45,14 +42,14 @@ define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings'
|
||||||
case 'play':
|
case 'play':
|
||||||
playbackManager.play({
|
playbackManager.play({
|
||||||
ids: [playableItemId],
|
ids: [playableItemId],
|
||||||
serverId: serverId
|
serverId: item.ServerId
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'resume':
|
case 'resume':
|
||||||
playbackManager.play({
|
playbackManager.play({
|
||||||
ids: [playableItemId],
|
ids: [playableItemId],
|
||||||
startPositionTicks: resumePositionTicks,
|
startPositionTicks: resumePositionTicks,
|
||||||
serverId: serverId
|
serverId: item.ServerId
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'queue':
|
case 'queue':
|
||||||
|
@ -67,9 +64,8 @@ define(['actionsheet', 'datetime', 'playbackManager', 'globalize', 'appSettings'
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
export default {
|
||||||
show: show
|
show: show
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
|
|
@ -232,11 +232,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings',
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
}
|
}
|
||||||
html += '<h2>' + provider + '</h2>';
|
html += '<h2>' + provider + '</h2>';
|
||||||
if (layoutManager.tv) {
|
|
||||||
html += '<div>';
|
html += '<div>';
|
||||||
} else {
|
|
||||||
html += '<div>';
|
|
||||||
}
|
|
||||||
lastProvider = provider;
|
lastProvider = provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><span class="material-icons arrow_back"></span></button>
|
<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><span class="material-icons arrow_back"></span></button>
|
||||||
<h3 class="formDialogHeaderTitle">${Subtitles}</h3>
|
<h3 class="formDialogHeaderTitle">${Subtitles}</h3>
|
||||||
|
|
||||||
<a is="emby-linkbutton" data-autohide="true" class="button-link btnHelp flex align-items-center" href="https://docs.jellyfin.org/general/server/media/subtitles.html" target="_blank" style="margin-left:auto;margin-right:.5em;padding:.25em;" title="${Help}"><span class="material-icons info"></span><span style="margin-left:.25em;">${Help}</span></a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" data-autohide="true" class="button-link btnHelp flex align-items-center" href="https://docs.jellyfin.org/general/server/media/subtitles.html" target="_blank" style="margin-left:auto;margin-right:.5em;padding:.25em;" title="${Help}"><span class="material-icons info"></span><span style="margin-left:.25em;">${Help}</span></a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="formDialogContent smoothScrollY">
|
<div class="formDialogContent smoothScrollY">
|
||||||
<div class="dialogContentInner dialog-content-centered">
|
<div class="dialogContentInner dialog-content-centered">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h1 class="sectionTitle">Schedules Direct</h1>
|
<h1 class="sectionTitle">Schedules Direct</h1>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/setup-guide.html#adding-guide-data">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/setup-guide.html#adding-guide-data">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
<p class="createAccountHelp"></p>
|
<p class="createAccountHelp"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h1 class="sectionTitle">Xml TV</h1>
|
<h1 class="sectionTitle">Xml TV</h1>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/setup-guide.html#adding-guide-data">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/setup-guide.html#adding-guide-data">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -63,8 +63,8 @@
|
||||||
height: auto;
|
height: auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37);
|
box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37);
|
||||||
border: 0;
|
|
||||||
user-drag: none;
|
user-drag: none;
|
||||||
|
border: 0;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-moz-user-select: none;
|
-moz-user-select: none;
|
||||||
-webkit-user-drag: none;
|
-webkit-user-drag: none;
|
||||||
|
|
|
@ -89,7 +89,7 @@ define(['loading', 'dom', 'libraryMenu', 'globalize', 'scripts/imagehelper', 'da
|
||||||
|
|
||||||
if (canEdit || canDelete(device.Id)) {
|
if (canEdit || canDelete(device.Id)) {
|
||||||
deviceHtml += '<div style="text-align:right; float:right;padding-top:5px;">';
|
deviceHtml += '<div style="text-align:right; float:right;padding-top:5px;">';
|
||||||
deviceHtml += '<button type="button" is="paper-icon-button-light" data-id="' + device.Id + '" title="' + globalize.translate('Menu') + '" class="btnDeviceMenu"><span class="material-icons more_horiz"></span></button>';
|
deviceHtml += '<button type="button" is="paper-icon-button-light" data-id="' + device.Id + '" title="' + globalize.translate('Menu') + '" class="btnDeviceMenu"><span class="material-icons more_vert"></span></button>';
|
||||||
deviceHtml += '</div>';
|
deviceHtml += '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -298,7 +298,7 @@ define(['jQuery', 'apphost', 'scripts/taskbutton', 'loading', 'libraryMenu', 'gl
|
||||||
|
|
||||||
if (virtualFolder.showMenu !== false) {
|
if (virtualFolder.showMenu !== false) {
|
||||||
html += '<div style="text-align:right; float:right;padding-top:5px;">';
|
html += '<div style="text-align:right; float:right;padding-top:5px;">';
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><span class="material-icons more_horiz"></span></button>';
|
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><span class="material-icons more_vert"></span></button>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button'
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<div class="cardFooter">';
|
html += '<div class="cardFooter">';
|
||||||
html += '<div style="text-align:right; float:right;padding-top:5px;">';
|
html += '<div style="text-align:right; float:right;padding-top:5px;">';
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><span class="material-icons more_horiz"></span></button>';
|
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><span class="material-icons more_vert"></span></button>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += "<div class='cardText'>";
|
html += "<div class='cardText'>";
|
||||||
html += configPage.DisplayName || plugin.Name;
|
html += configPage.DisplayName || plugin.Name;
|
||||||
|
|
|
@ -1016,7 +1016,6 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager'
|
||||||
if ('Programs' === params.type) {
|
if ('Programs' === params.type) {
|
||||||
filters.push('Genres');
|
filters.push('Genres');
|
||||||
} else {
|
} else {
|
||||||
params.type;
|
|
||||||
filters.push('IsUnplayed');
|
filters.push('IsUnplayed');
|
||||||
filters.push('IsPlayed');
|
filters.push('IsPlayed');
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||||
html += '<button is="paper-icon-button-light" class="itemAction btnCardOptions autoSize" data-action="menu"><span class="material-icons more_horiz"></span></button>';
|
html += '<button is="paper-icon-button-light" class="itemAction btnCardOptions autoSize" data-action="menu"><span class="material-icons more_vert"></span></button>';
|
||||||
html += '<div class="cardText">' + (device.FriendlyName || getTunerName(device.Type)) + '</div>';
|
html += '<div class="cardText">' + (device.FriendlyName || getTunerName(device.Type)) + '</div>';
|
||||||
html += '<div class="cardText cardText-secondary">';
|
html += '<div class="cardText cardText-secondary">';
|
||||||
html += device.Url || ' ';
|
html += device.Url || ' ';
|
||||||
|
@ -112,7 +112,7 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '</a>';
|
html += '</a>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="btnOptions" data-id="' + provider.Id + '"><span class="material-icons listItemAside more_horiz"></span></button>';
|
html += '<button type="button" is="paper-icon-button-light" class="btnOptions" data-id="' + provider.Id + '"><span class="material-icons listItemAside more_vert"></span></button>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,6 @@ define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button
|
||||||
info.Id = id;
|
info.Id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
info.Id;
|
|
||||||
ApiClient.ajax({
|
ApiClient.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: ApiClient.getUrl('LiveTv/TunerHosts'),
|
url: ApiClient.getUrl('LiveTv/TunerHosts'),
|
||||||
|
|
|
@ -1112,6 +1112,14 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
||||||
playbackManager.playPause(currentPlayer);
|
playbackManager.playPause(currentPlayer);
|
||||||
showOsd();
|
showOsd();
|
||||||
break;
|
break;
|
||||||
|
case 'ArrowUp':
|
||||||
|
case 'Up':
|
||||||
|
playbackManager.volumeUp(currentPlayer);
|
||||||
|
break;
|
||||||
|
case 'ArrowDown':
|
||||||
|
case 'Down':
|
||||||
|
playbackManager.volumeDown(currentPlayer);
|
||||||
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
case 'ArrowRight':
|
case 'ArrowRight':
|
||||||
case 'Right':
|
case 'Right':
|
||||||
|
@ -1134,6 +1142,18 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
||||||
playbackManager.toggleMute(currentPlayer);
|
playbackManager.toggleMute(currentPlayer);
|
||||||
showOsd();
|
showOsd();
|
||||||
break;
|
break;
|
||||||
|
case 'p':
|
||||||
|
case 'P':
|
||||||
|
if (e.shiftKey) {
|
||||||
|
playbackManager.previousTrack(currentPlayer);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
case 'N':
|
||||||
|
if (e.shiftKey) {
|
||||||
|
playbackManager.nextTrack(currentPlayer);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'NavigationLeft':
|
case 'NavigationLeft':
|
||||||
case 'GamepadDPadLeft':
|
case 'GamepadDPadLeft':
|
||||||
case 'GamepadLeftThumbstickLeft':
|
case 'GamepadLeftThumbstickLeft':
|
||||||
|
@ -1151,6 +1171,26 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med
|
||||||
playbackManager.fastForward(currentPlayer);
|
playbackManager.fastForward(currentPlayer);
|
||||||
showOsd();
|
showOsd();
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case 'Home':
|
||||||
|
playbackManager.seekPercent(0, currentPlayer);
|
||||||
|
break;
|
||||||
|
case 'End':
|
||||||
|
playbackManager.seekPercent(100, currentPlayer);
|
||||||
|
break;
|
||||||
|
case '0':
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
var percent = parseInt(key, 10) * 10;
|
||||||
|
playbackManager.seekPercent(percent, currentPlayer);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,12 @@ define(['jQuery', 'loading', 'globalize', 'fnchecked', 'emby-checkbox'], functio
|
||||||
|
|
||||||
for (var i = 0; i < mediaFolders.length; i++) {
|
for (var i = 0; i < mediaFolders.length; i++) {
|
||||||
var folder = mediaFolders[i];
|
var folder = mediaFolders[i];
|
||||||
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '" checked="checked"/><span>' + folder.Name + '</span></label>';
|
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '"/><span>' + folder.Name + '</span></label>';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
$('.folderAccess', page).html(html).trigger('create');
|
$('.folderAccess', page).html(html).trigger('create');
|
||||||
$('#chkEnableAllFolders', page).checked(true).trigger('change');
|
$('#chkEnableAllFolders', page).checked(false).trigger('change');
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadChannels(page, channels) {
|
function loadChannels(page, channels) {
|
||||||
|
@ -23,7 +23,7 @@ define(['jQuery', 'loading', 'globalize', 'fnchecked', 'emby-checkbox'], functio
|
||||||
|
|
||||||
for (var i = 0; i < channels.length; i++) {
|
for (var i = 0; i < channels.length; i++) {
|
||||||
var folder = channels[i];
|
var folder = channels[i];
|
||||||
html += '<label><input type="checkbox" is="emby-checkbox" class="chkChannel" data-id="' + folder.Id + '" checked="checked"/><span>' + folder.Name + '</span></label>';
|
html += '<label><input type="checkbox" is="emby-checkbox" class="chkChannel" data-id="' + folder.Id + '"/><span>' + folder.Name + '</span></label>';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
@ -35,7 +35,7 @@ define(['jQuery', 'loading', 'globalize', 'fnchecked', 'emby-checkbox'], functio
|
||||||
$('.channelAccessContainer', page).hide();
|
$('.channelAccessContainer', page).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#chkEnableAllChannels', page).checked(true).trigger('change');
|
$('#chkEnableAllChannels', page).checked(false).trigger('change');
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadUser(page) {
|
function loadUser(page) {
|
||||||
|
|
|
@ -115,7 +115,7 @@ define(['loading', 'dom', 'globalize', 'date-fns', 'dfnshelper', 'paper-icon-but
|
||||||
html += '<div class="flex-grow" style="overflow:hidden;text-overflow:ellipsis;">';
|
html += '<div class="flex-grow" style="overflow:hidden;text-overflow:ellipsis;">';
|
||||||
html += user.Name;
|
html += user.Name;
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="btnUserMenu flex-shrink-zero"><span class="material-icons more_horiz"></span></button>';
|
html += '<button type="button" is="paper-icon-button-light" class="btnUserMenu flex-shrink-zero"><span class="material-icons more_vert"></span></button>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<div class="cardText cardText-secondary">';
|
html += '<div class="cardText cardText-secondary">';
|
||||||
var lastSeen = getLastSeenText(user.LastActivityDate);
|
var lastSeen = getLastSeenText(user.LastActivityDate);
|
||||||
|
@ -189,7 +189,7 @@ define(['loading', 'dom', 'globalize', 'date-fns', 'dfnshelper', 'paper-icon-but
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||||
html += '<div class="cardText" style="text-align:right; float:right;padding:0;">';
|
html += '<div class="cardText" style="text-align:right; float:right;padding:0;">';
|
||||||
html += '<button type="button" is="paper-icon-button-light" class="btnUserMenu"><span class="material-icons more_horiz"></span></button>';
|
html += '<button type="button" is="paper-icon-button-light" class="btnUserMenu"><span class="material-icons more_vert"></span></button>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
html += '<div class="cardText" style="padding-top:10px;padding-bottom:10px;">';
|
html += '<div class="cardText" style="padding-top:10px;padding-bottom:10px;">';
|
||||||
html += user.UserName;
|
html += user.UserName;
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
<div class="dashboardFooter">
|
<div class="dashboardFooter">
|
||||||
<div style="height:1px;" class="ui-bar-inherit"></div>
|
<div style="height:1px;" class="ui-bar-inherit"></div>
|
||||||
<div style="margin-top:1em;">
|
<div style="margin-top:1em;">
|
||||||
<a is="emby-linkbutton" class="button-link" href="https://jellyfin.org" target="_blank">Jellyfin</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="button-link" href="https://jellyfin.org" target="_blank">Jellyfin</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle">${TabSettings}</h2>
|
<h2 class="sectionTitle">${TabSettings}</h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/settings.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/settings.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
<div class="fieldDescription">
|
<div class="fieldDescription">
|
||||||
<div>${LabelPreferredDisplayLanguageHelp}</div>
|
<div>${LabelPreferredDisplayLanguageHelp}</div>
|
||||||
<div style="margin-top: .25em;">
|
<div style="margin-top: .25em;">
|
||||||
<a is="emby-linkbutton" class="button-link" href="https://docs.jellyfin.org/general/contributing/index.html" target="_blank">${LabelReadHowYouCanContribute}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="button-link" href="https://docs.jellyfin.org/general/contributing/index.html" target="_blank">${LabelReadHowYouCanContribute}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="verticalSection verticalSection-extrabottompadding">
|
<div class="verticalSection verticalSection-extrabottompadding">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle reportedName"></h2>
|
<h2 class="sectionTitle reportedName"></h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/devices.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/devices.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="inputContainer">
|
<div class="inputContainer">
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="verticalSection verticalSection">
|
<div class="verticalSection verticalSection">
|
||||||
<div class="sectionTitleContainer sectionTitleContainer-cards flex align-items-center">
|
<div class="sectionTitleContainer sectionTitleContainer-cards flex align-items-center">
|
||||||
<h2 class="sectionTitle sectionTitle-cards">${TabDevices}</h2>
|
<h2 class="sectionTitle sectionTitle-cards">${TabDevices}</h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/devices.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/devices.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div is="emby-itemscontainer" class="devicesList vertical-wrap" data-multiselect="false"></div>
|
<div is="emby-itemscontainer" class="devicesList vertical-wrap" data-multiselect="false"></div>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle">${HeaderProfileInformation}</h2>
|
<h2 class="sectionTitle">${HeaderProfileInformation}</h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://web.archive.org/web/20181216120305/https://github.com/MediaBrowser/Wiki/wiki/Dlna-profiles">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://web.archive.org/web/20181216120305/https://github.com/MediaBrowser/Wiki/wiki/Dlna-profiles">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-role="controlgroup" data-type="horizontal" data-mini="true">
|
<div data-role="controlgroup" data-type="horizontal" data-mini="true">
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle">${TabSettings}</h2>
|
<h2 class="sectionTitle">${TabSettings}</h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/networking/dlna.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/networking/dlna.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -87,10 +87,6 @@
|
||||||
transform: scale(1.3);
|
transform: scale(1.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.slider-no-webkit-thumb::-webkit-slider-thumb {
|
|
||||||
opacity: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mdl-slider::-moz-range-thumb {
|
.mdl-slider::-moz-range-thumb {
|
||||||
-moz-appearance: none;
|
-moz-appearance: none;
|
||||||
width: 1.08em;
|
width: 1.08em;
|
||||||
|
|
|
@ -148,9 +148,6 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli
|
||||||
this.classList.add('mdl-slider');
|
this.classList.add('mdl-slider');
|
||||||
this.classList.add('mdl-js-slider');
|
this.classList.add('mdl-js-slider');
|
||||||
|
|
||||||
if (browser.noFlex) {
|
|
||||||
this.classList.add('slider-no-webkit-thumb');
|
|
||||||
}
|
|
||||||
if (browser.edge || browser.msie) {
|
if (browser.edge || browser.msie) {
|
||||||
this.classList.add('slider-browser-edge');
|
this.classList.add('slider-browser-edge');
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle">${TabTranscoding}</h2>
|
<h2 class="sectionTitle">${TabTranscoding}</h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/transcoding.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/transcoding.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
<option value="h264_v4l2m2m">Exynos V4L2 MFC</option>
|
<option value="h264_v4l2m2m">Exynos V4L2 MFC</option>
|
||||||
</select>
|
</select>
|
||||||
<div class="fieldDescription">
|
<div class="fieldDescription">
|
||||||
<a is="emby-linkbutton" class="button-link" href="https://docs.jellyfin.org/general/administration/hardware-acceleration.html" target="_blank">${LabelHardwareAccelerationTypeHelp}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="button-link" href="https://docs.jellyfin.org/general/administration/hardware-acceleration.html" target="_blank">${LabelHardwareAccelerationTypeHelp}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,7 @@
|
||||||
|
|
||||||
<button is="emby-button" type="button" class="button-flat btnMoreCommands hide detailButton">
|
<button is="emby-button" type="button" class="button-flat btnMoreCommands hide detailButton">
|
||||||
<div class="detailButton-content">
|
<div class="detailButton-content">
|
||||||
<span class="material-icons detailButton-icon more_horiz"></span>
|
<span class="material-icons detailButton-icon more_vert"></span>
|
||||||
<div class="detailButton-text">${ButtonMore}</div>
|
<div class="detailButton-text">${ButtonMore}</div>
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -260,7 +260,6 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
|
|
||||||
TouchMenuLA.prototype.showMask = function () {
|
TouchMenuLA.prototype.showMask = function () {
|
||||||
mask.classList.remove("hide");
|
mask.classList.remove("hide");
|
||||||
mask.offsetWidth;
|
|
||||||
mask.classList.add("backdrop");
|
mask.classList.add("backdrop");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<span>${ButtonScanAllLibraries}</span>
|
<span>${ButtonScanAllLibraries}</span>
|
||||||
</button>
|
</button>
|
||||||
<progress max="100" min="0" style="display: inline-block; vertical-align: middle;" class="refreshProgress"></progress>
|
<progress max="100" min="0" style="display: inline-block; vertical-align: middle;" class="refreshProgress"></progress>
|
||||||
<a is="emby-linkbutton" class="raised button-alt" target="_blank" href="https://docs.jellyfin.org/general/server/libraries.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt" target="_blank" href="https://docs.jellyfin.org/general/server/libraries.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="divVirtualFolders"></div>
|
<div id="divVirtualFolders"></div>
|
||||||
|
|
|
@ -42,10 +42,10 @@
|
||||||
<span class="material-icons filter_list"></span>
|
<span class="material-icons filter_list"></span>
|
||||||
</button>
|
</button>
|
||||||
<button is="emby-button" class="btnViewSettings button-flat listTextButton-autohide">
|
<button is="emby-button" class="btnViewSettings button-flat listTextButton-autohide">
|
||||||
<span class="material-icons more_horiz"></span>
|
<span class="material-icons more_vert"></span>
|
||||||
</button>
|
</button>
|
||||||
<button is="paper-icon-button-light" class="btnViewSettings listIconButton-autohide">
|
<button is="paper-icon-button-light" class="btnViewSettings listIconButton-autohide">
|
||||||
<span class="material-icons more_horiz"></span>
|
<span class="material-icons more_vert"></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div is="emby-itemscontainer" class="vertical-wrap itemsContainer centered" style="padding: 0 0 10vh 0;">
|
<div is="emby-itemscontainer" class="vertical-wrap itemsContainer centered" style="padding: 0 0 10vh 0;">
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle">DVR</h2>
|
<h2 class="sectionTitle">DVR</h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/index.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/index.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<button is="emby-button" type="button" class="fab btnAddDevice submit sectionTitleButton" style="margin-left:1em;" title="${ButtonAdd}">
|
<button is="emby-button" type="button" class="fab btnAddDevice submit sectionTitleButton" style="margin-left:1em;" title="${ButtonAdd}">
|
||||||
<span class="material-icons add"></span>
|
<span class="material-icons add"></span>
|
||||||
</button>
|
</button>
|
||||||
<a style="margin-left:2em!important;" is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/index.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" style="margin-left:2em!important;" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/index.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="devicesList itemsContainer vertical-wrap" data-hovermenu="false" data-multiselect="false" style="margin-top: .5em;"></div>
|
<div class="devicesList itemsContainer vertical-wrap" data-hovermenu="false" data-multiselect="false" style="margin-top: .5em;"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h1 class="sectionTitle">${HeaderLiveTvTunerSetup}</h1>
|
<h1 class="sectionTitle">${HeaderLiveTvTunerSetup}</h1>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/index.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/live-tv/index.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="verticalSection verticalSection-extrabottompadding">
|
<div class="verticalSection verticalSection-extrabottompadding">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle">${TabNetworking}</h2>
|
<h2 class="sectionTitle">${TabNetworking}</h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/networking/index.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/networking/index.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="inputContainer">
|
<div class="inputContainer">
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="notificationType sectionTitle"></h2>
|
<h2 class="notificationType sectionTitle"></h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/notifications.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/notifications.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle taskName"></h2>
|
<h2 class="sectionTitle taskName"></h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/tasks.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/tasks.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
<p id="pTaskDescription"></p>
|
<p id="pTaskDescription"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -53,45 +53,6 @@ define([], function () {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function isStyleSupported(prop, value) {
|
|
||||||
|
|
||||||
if (typeof window === 'undefined') {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If no value is supplied, use "inherit"
|
|
||||||
value = arguments.length === 2 ? value : 'inherit';
|
|
||||||
// Try the native standard method first
|
|
||||||
if ('CSS' in window && 'supports' in window.CSS) {
|
|
||||||
return window.CSS.supports(prop, value);
|
|
||||||
}
|
|
||||||
// Check Opera's native method
|
|
||||||
if ('supportsCSS' in window) {
|
|
||||||
return window.supportsCSS(prop, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
// need try/catch because it's failing on tizen
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Convert to camel-case for DOM interactions
|
|
||||||
var camel = prop.replace(/-([a-z]|[0-9])/ig, function (all, letter) {
|
|
||||||
return (letter + '').toUpperCase();
|
|
||||||
});
|
|
||||||
// Create test element
|
|
||||||
var el = document.createElement('div');
|
|
||||||
// Check if the property is supported
|
|
||||||
var support = (camel in el.style);
|
|
||||||
// Assign the property and value to invoke
|
|
||||||
// the CSS interpreter
|
|
||||||
el.style.cssText = prop + ':' + value;
|
|
||||||
// Ensure both the property and value are
|
|
||||||
// supported and return
|
|
||||||
return support && (el.style[camel] !== '');
|
|
||||||
} catch (err) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function hasKeyboard(browser) {
|
function hasKeyboard(browser) {
|
||||||
|
|
||||||
if (browser.touch) {
|
if (browser.touch) {
|
||||||
|
@ -283,10 +244,6 @@ define([], function () {
|
||||||
browser.tv = isTv();
|
browser.tv = isTv();
|
||||||
browser.operaTv = browser.tv && userAgent.toLowerCase().indexOf('opr/') !== -1;
|
browser.operaTv = browser.tv && userAgent.toLowerCase().indexOf('opr/') !== -1;
|
||||||
|
|
||||||
if (!isStyleSupported('display', 'flex')) {
|
|
||||||
browser.noFlex = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (browser.mobile || browser.tv) {
|
if (browser.mobile || browser.tv) {
|
||||||
browser.slow = true;
|
browser.slow = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,14 @@ define([
|
||||||
controller: 'auth/selectserver',
|
controller: 'auth/selectserver',
|
||||||
type: 'selectserver'
|
type: 'selectserver'
|
||||||
});
|
});
|
||||||
|
defineRoute({
|
||||||
|
path: '/login.html',
|
||||||
|
autoFocus: false,
|
||||||
|
anonymous: true,
|
||||||
|
startup: true,
|
||||||
|
controller: 'auth/login',
|
||||||
|
type: 'login'
|
||||||
|
});
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/forgotpassword.html',
|
path: '/forgotpassword.html',
|
||||||
anonymous: true,
|
anonymous: true,
|
||||||
|
@ -52,12 +60,6 @@ define([
|
||||||
controller: 'auth/forgotpasswordpin'
|
controller: 'auth/forgotpasswordpin'
|
||||||
});
|
});
|
||||||
|
|
||||||
defineRoute({
|
|
||||||
path: '/addplugin.html',
|
|
||||||
autoFocus: false,
|
|
||||||
roles: 'admin',
|
|
||||||
controller: 'dashboard/plugins/add'
|
|
||||||
});
|
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/mypreferencesmenu.html',
|
path: '/mypreferencesmenu.html',
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
|
@ -137,6 +139,24 @@ define([
|
||||||
roles: 'admin',
|
roles: 'admin',
|
||||||
controller: 'dashboard/dlna/dlnaprofiles'
|
controller: 'dashboard/dlna/dlnaprofiles'
|
||||||
});
|
});
|
||||||
|
defineRoute({
|
||||||
|
path: '/addplugin.html',
|
||||||
|
autoFocus: false,
|
||||||
|
roles: 'admin',
|
||||||
|
controller: 'dashboard/plugins/add'
|
||||||
|
});
|
||||||
|
defineRoute({
|
||||||
|
path: '/library.html',
|
||||||
|
autoFocus: false,
|
||||||
|
roles: 'admin',
|
||||||
|
controller: 'dashboard/medialibrarypage'
|
||||||
|
});
|
||||||
|
defineRoute({
|
||||||
|
path: '/librarydisplay.html',
|
||||||
|
autoFocus: false,
|
||||||
|
roles: 'admin',
|
||||||
|
controller: 'dashboard/librarydisplay'
|
||||||
|
});
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/dlnasettings.html',
|
path: '/dlnasettings.html',
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
|
@ -154,6 +174,7 @@ define([
|
||||||
roles: 'admin',
|
roles: 'admin',
|
||||||
controller: 'dashboard/encodingsettings'
|
controller: 'dashboard/encodingsettings'
|
||||||
});
|
});
|
||||||
|
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/home.html',
|
path: '/home.html',
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
|
@ -161,6 +182,10 @@ define([
|
||||||
transition: 'fade',
|
transition: 'fade',
|
||||||
type: 'home'
|
type: 'home'
|
||||||
});
|
});
|
||||||
|
defineRoute({
|
||||||
|
path: '/search.html',
|
||||||
|
controller: 'searchpage'
|
||||||
|
});
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/list.html',
|
path: '/list.html',
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
|
@ -173,18 +198,6 @@ define([
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
transition: 'fade'
|
transition: 'fade'
|
||||||
});
|
});
|
||||||
defineRoute({
|
|
||||||
path: '/library.html',
|
|
||||||
autoFocus: false,
|
|
||||||
roles: 'admin',
|
|
||||||
controller: 'dashboard/medialibrarypage'
|
|
||||||
});
|
|
||||||
defineRoute({
|
|
||||||
path: '/librarydisplay.html',
|
|
||||||
autoFocus: false,
|
|
||||||
roles: 'admin',
|
|
||||||
controller: 'dashboard/librarydisplay'
|
|
||||||
});
|
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/livetv.html',
|
path: '/livetv.html',
|
||||||
controller: 'livetv/livetvsuggested',
|
controller: 'livetv/livetvsuggested',
|
||||||
|
@ -219,14 +232,6 @@ define([
|
||||||
roles: 'admin',
|
roles: 'admin',
|
||||||
controller: 'dashboard/logs'
|
controller: 'dashboard/logs'
|
||||||
});
|
});
|
||||||
defineRoute({
|
|
||||||
path: '/login.html',
|
|
||||||
autoFocus: false,
|
|
||||||
anonymous: true,
|
|
||||||
startup: true,
|
|
||||||
controller: 'auth/login',
|
|
||||||
type: 'login'
|
|
||||||
});
|
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/metadataimages.html',
|
path: '/metadataimages.html',
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
|
@ -293,10 +298,6 @@ define([
|
||||||
roles: 'admin',
|
roles: 'admin',
|
||||||
controller: 'dashboard/scheduledtasks/scheduledtasks'
|
controller: 'dashboard/scheduledtasks/scheduledtasks'
|
||||||
});
|
});
|
||||||
defineRoute({
|
|
||||||
path: '/search.html',
|
|
||||||
controller: 'searchpage'
|
|
||||||
});
|
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/serveractivity.html',
|
path: '/serveractivity.html',
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
|
@ -321,6 +322,7 @@ define([
|
||||||
controller: 'shows/tvrecommended',
|
controller: 'shows/tvrecommended',
|
||||||
transition: 'fade'
|
transition: 'fade'
|
||||||
});
|
});
|
||||||
|
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/useredit.html',
|
path: '/useredit.html',
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
|
@ -373,7 +375,7 @@ define([
|
||||||
path: '/wizardlibrary.html',
|
path: '/wizardlibrary.html',
|
||||||
autoFocus: false,
|
autoFocus: false,
|
||||||
anonymous: true,
|
anonymous: true,
|
||||||
controller: 'medialibrarypage'
|
controller: 'dashboard/medialibrarypage'
|
||||||
});
|
});
|
||||||
defineRoute({
|
defineRoute({
|
||||||
path: '/wizardsettings.html',
|
path: '/wizardsettings.html',
|
||||||
|
|
|
@ -2,7 +2,17 @@ let data;
|
||||||
|
|
||||||
function getConfig() {
|
function getConfig() {
|
||||||
if (data) return Promise.resolve(data);
|
if (data) return Promise.resolve(data);
|
||||||
return fetch('/config.json?nocache=' + new Date().getUTCMilliseconds()).then(function (response) {
|
return fetch('/config.json?nocache=' + new Date().getUTCMilliseconds()).then(response => {
|
||||||
|
data = response.json();
|
||||||
|
return data;
|
||||||
|
}).catch(error => {
|
||||||
|
console.warn('web config file is missing so the template will be used');
|
||||||
|
return getDefaultConfig();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDefaultConfig() {
|
||||||
|
return fetch('/config.template.json').then(function (response) {
|
||||||
data = response.json();
|
data = response.json();
|
||||||
return data;
|
return data;
|
||||||
});
|
});
|
||||||
|
|
|
@ -962,7 +962,7 @@
|
||||||
"AllowMediaConversion": "السماح بتحويل الوسائظ",
|
"AllowMediaConversion": "السماح بتحويل الوسائظ",
|
||||||
"AllLanguages": "كل اللغات",
|
"AllLanguages": "كل اللغات",
|
||||||
"AllEpisodes": "كل الحلقات",
|
"AllEpisodes": "كل الحلقات",
|
||||||
"AllComplexFormats": "جميع التنسيقات المعقدة (ASS ، SSA ، VOBSUB ، PGS ، SUB / IDX ، إلخ.)",
|
"AllComplexFormats": "جميع التنسيقات المعقدة (ASS ، SSA ، VOBSUB ، PGS ، SUB / IDX ، ...)",
|
||||||
"AllChannels": "كل القنوات",
|
"AllChannels": "كل القنوات",
|
||||||
"Albums": "ألبومات",
|
"Albums": "ألبومات",
|
||||||
"Aired": "عرضت",
|
"Aired": "عرضت",
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
"Albums": "Alben",
|
"Albums": "Alben",
|
||||||
"All": "Alle",
|
"All": "Alle",
|
||||||
"AllChannels": "Alle Kanäle",
|
"AllChannels": "Alle Kanäle",
|
||||||
"AllComplexFormats": "Alle komplexen Formate (ASS, SSA, VOBSUB, PGS, SUB/IDX)",
|
"AllComplexFormats": "Alle komplexen Formate (ASS, SSA, VOBSUB, PGS, SUB/IDX, ...)",
|
||||||
"AllEpisodes": "Alle Folgen",
|
"AllEpisodes": "Alle Folgen",
|
||||||
"AllLanguages": "Alle Sprachen",
|
"AllLanguages": "Alle Sprachen",
|
||||||
"AllLibraries": "Alle Bibliotheken",
|
"AllLibraries": "Alle Bibliotheken",
|
||||||
|
@ -55,12 +55,12 @@
|
||||||
"BirthLocation": "Geburtsort",
|
"BirthLocation": "Geburtsort",
|
||||||
"BirthPlaceValue": "Geburtsort: {0}",
|
"BirthPlaceValue": "Geburtsort: {0}",
|
||||||
"BobAndWeaveWithHelp": "Bob & Weave (höhere Qualität, aber langsamer)",
|
"BobAndWeaveWithHelp": "Bob & Weave (höhere Qualität, aber langsamer)",
|
||||||
"BookLibraryHelp": "Hörbücher und E-Books werden unterstützt. Schaue in den {0}Book Naming Guide {1}.",
|
"BookLibraryHelp": "Hörbücher und E-Books werden unterstützt. Schaue in den {0} Book Naming Guide {1}.",
|
||||||
"Books": "Bücher",
|
"Books": "Bücher",
|
||||||
"BoxRear": "Box (Rückseite)",
|
"BoxRear": "Box (Rückseite)",
|
||||||
"Browse": "Blättern",
|
"Browse": "Blättern",
|
||||||
"BrowsePluginCatalogMessage": "Durchsuche unsere Bibliothek, um alle verfügbaren Plugins anzuzeigen.",
|
"BrowsePluginCatalogMessage": "Durchsuche unsere Bibliothek, um alle verfügbaren Plugins anzuzeigen.",
|
||||||
"BurnSubtitlesHelp": "Legt fest, ob der Server die Untertitel während der Videotranskodierung einbrennen soll. Deaktivieren verbessert die Serverperformance immens. Wähle Auto, um bildbasierte Formate (z.B. VOBSUB, PGS, SUB, IDX) sowie bestimmte ASS- oder SSA-Untertitel einbrennen zu lassen.",
|
"BurnSubtitlesHelp": "Legt fest, ob der Server die Untertitel während der Videotranskodierung einbrennen soll. Deaktivieren verbessert die Serverperformance immens. Wähle Auto, um bildbasierte Formate (z.B. VOBSUB, PGS, SUB, IDX, ...) sowie bestimmte ASS- oder SSA-Untertitel einbrennen zu lassen.",
|
||||||
"ButtonAdd": "Hinzufügen",
|
"ButtonAdd": "Hinzufügen",
|
||||||
"ButtonAddMediaLibrary": "Füge Medienbibliothek hinzu",
|
"ButtonAddMediaLibrary": "Füge Medienbibliothek hinzu",
|
||||||
"ButtonAddScheduledTaskTrigger": "Auslöser hinzufügen",
|
"ButtonAddScheduledTaskTrigger": "Auslöser hinzufügen",
|
||||||
|
@ -1000,7 +1000,7 @@
|
||||||
"OptionLikes": "Mag ich",
|
"OptionLikes": "Mag ich",
|
||||||
"OptionMissingEpisode": "Fehlende Episoden",
|
"OptionMissingEpisode": "Fehlende Episoden",
|
||||||
"OptionMonday": "Montag",
|
"OptionMonday": "Montag",
|
||||||
"OptionNew": "Neu...",
|
"OptionNew": "Neu…",
|
||||||
"OptionNone": "Keines",
|
"OptionNone": "Keines",
|
||||||
"OptionOnAppStartup": "Bei Anwendungsstart",
|
"OptionOnAppStartup": "Bei Anwendungsstart",
|
||||||
"OptionOnInterval": "Nach einem Intervall",
|
"OptionOnInterval": "Nach einem Intervall",
|
||||||
|
@ -1528,5 +1528,6 @@
|
||||||
"MessageUnauthorizedUser": "Sie sind im Moment nicht berechtigt, auf den Server zuzugreifen. Bitte kontaktieren Sie Ihren Server-Administrator für weitere Informationen.",
|
"MessageUnauthorizedUser": "Sie sind im Moment nicht berechtigt, auf den Server zuzugreifen. Bitte kontaktieren Sie Ihren Server-Administrator für weitere Informationen.",
|
||||||
"HeaderFavoritePlaylists": "Lieblings-Wiedergabeliste",
|
"HeaderFavoritePlaylists": "Lieblings-Wiedergabeliste",
|
||||||
"ButtonTogglePlaylist": "Wiedergabeliste",
|
"ButtonTogglePlaylist": "Wiedergabeliste",
|
||||||
"ButtonToggleContextMenu": "Mehr"
|
"ButtonToggleContextMenu": "Mehr",
|
||||||
|
"ApiKeysCaption": "Liste der aktuell aktivierten API-Schlüssel"
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
"Alerts": "Alerts",
|
"Alerts": "Alerts",
|
||||||
"All": "All",
|
"All": "All",
|
||||||
"AllChannels": "All channels",
|
"AllChannels": "All channels",
|
||||||
"AllComplexFormats": "All Complex Formats (ASS, SSA, VOBSUB, PGS, SUB, IDX)",
|
"AllComplexFormats": "All Complex Formats (ASS, SSA, VOBSUB, PGS, SUB, IDX, …)",
|
||||||
"AllEpisodes": "All episodes",
|
"AllEpisodes": "All episodes",
|
||||||
"AllLanguages": "All languages",
|
"AllLanguages": "All languages",
|
||||||
"AllLibraries": "All libraries",
|
"AllLibraries": "All libraries",
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
"AllowMediaConversion": "Allow media conversion",
|
"AllowMediaConversion": "Allow media conversion",
|
||||||
"AllowMediaConversionHelp": "Grant or deny access to the convert media feature.",
|
"AllowMediaConversionHelp": "Grant or deny access to the convert media feature.",
|
||||||
"AllowOnTheFlySubtitleExtraction": "Allow subtitle extraction on the fly",
|
"AllowOnTheFlySubtitleExtraction": "Allow subtitle extraction on the fly",
|
||||||
"AllowOnTheFlySubtitleExtractionHelp": "Embedded subtitles can be extracted from videos and delivered to clients in plain text in order to help prevent video transcoding. On some systems this can take a long time and cause video playback to stall during the extraction process. Disable this to have embedded subtitles burned in with video transcoding when they are not natively supported by the client device.",
|
"AllowOnTheFlySubtitleExtractionHelp": "Embedded subtitles can be extracted from videos and delivered to clients in plain text, in order to help prevent video transcoding. On some systems this can take a long time and cause video playback to stall during the extraction process. Disable this to have embedded subtitles burned in with video transcoding when they are not natively supported by the client device.",
|
||||||
"AllowFfmpegThrottling": "Throttle Transcodes",
|
"AllowFfmpegThrottling": "Throttle Transcodes",
|
||||||
"AllowFfmpegThrottlingHelp": "When a transcode or remux gets far enough ahead from the current playback position, pause the process so it will consume less resources. This is most useful when watching without seeking often. Turn this off if you experience playback issues.",
|
"AllowFfmpegThrottlingHelp": "When a transcode or remux gets far enough ahead from the current playback position, pause the process so it will consume less resources. This is most useful when watching without seeking often. Turn this off if you experience playback issues.",
|
||||||
"AllowRemoteAccess": "Allow remote connections to this Jellyfin Server.",
|
"AllowRemoteAccess": "Allow remote connections to this Jellyfin Server.",
|
||||||
|
@ -55,14 +55,14 @@
|
||||||
"BirthLocation": "Birth location",
|
"BirthLocation": "Birth location",
|
||||||
"BirthPlaceValue": "Birth place: {0}",
|
"BirthPlaceValue": "Birth place: {0}",
|
||||||
"Blacklist": "Blacklist",
|
"Blacklist": "Blacklist",
|
||||||
"BookLibraryHelp": "Audio and text books are supported. Review the {0}book naming guide{1}.",
|
"BookLibraryHelp": "Audio and text books are supported. Review the {0} book naming guide {1}.",
|
||||||
"Books": "Books",
|
"Books": "Books",
|
||||||
"Box": "Box",
|
"Box": "Box",
|
||||||
"BoxSet": "Box Set",
|
"BoxSet": "Box Set",
|
||||||
"BoxRear": "Box (rear)",
|
"BoxRear": "Box (rear)",
|
||||||
"Browse": "Browse",
|
"Browse": "Browse",
|
||||||
"BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins.",
|
"BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins.",
|
||||||
"BurnSubtitlesHelp": "Determines if the server should burn in subtitles when transcoding videos. Avoiding this will greatly improve performance. Select Auto to burn image based formats (VOBSUB, PGS, SUB, IDX) and certain ASS or SSA subtitles.",
|
"BurnSubtitlesHelp": "Determines if the server should burn in subtitles when transcoding videos. Avoiding this will greatly improve performance. Select Auto to burn image based formats (VOBSUB, PGS, SUB, IDX, …) and certain ASS or SSA subtitles.",
|
||||||
"ButtonAdd": "Add",
|
"ButtonAdd": "Add",
|
||||||
"ButtonAddImage": "Add Image",
|
"ButtonAddImage": "Add Image",
|
||||||
"ButtonAddMediaLibrary": "Add Media Library",
|
"ButtonAddMediaLibrary": "Add Media Library",
|
||||||
|
@ -311,6 +311,7 @@
|
||||||
"HeaderApiKey": "API Key",
|
"HeaderApiKey": "API Key",
|
||||||
"HeaderApiKeys": "API Keys",
|
"HeaderApiKeys": "API Keys",
|
||||||
"HeaderApiKeysHelp": "External applications are required to have an API key in order to communicate with Jellyfin Server. Keys are issued by logging in with a Jellyfin account, or by manually granting the application a key.",
|
"HeaderApiKeysHelp": "External applications are required to have an API key in order to communicate with Jellyfin Server. Keys are issued by logging in with a Jellyfin account, or by manually granting the application a key.",
|
||||||
|
"ApiKeysCaption": "List of the currently enabled API keys",
|
||||||
"HeaderApp": "App",
|
"HeaderApp": "App",
|
||||||
"HeaderAppearsOn": "Appears On",
|
"HeaderAppearsOn": "Appears On",
|
||||||
"HeaderAudioBooks": "Audio Books",
|
"HeaderAudioBooks": "Audio Books",
|
||||||
|
@ -1166,7 +1167,7 @@
|
||||||
"OptionMissingEpisode": "Missing Episodes",
|
"OptionMissingEpisode": "Missing Episodes",
|
||||||
"OptionMonday": "Monday",
|
"OptionMonday": "Monday",
|
||||||
"OptionNameSort": "Name",
|
"OptionNameSort": "Name",
|
||||||
"OptionNew": "New...",
|
"OptionNew": "New…",
|
||||||
"OptionNone": "None",
|
"OptionNone": "None",
|
||||||
"OptionOnAppStartup": "On application startup",
|
"OptionOnAppStartup": "On application startup",
|
||||||
"OptionOnInterval": "On an interval",
|
"OptionOnInterval": "On an interval",
|
||||||
|
|
5
src/strings/eo.json
Normal file
5
src/strings/eo.json
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"AddToCollection": "Aldoni al kolekto",
|
||||||
|
"Actor": "Aktoro",
|
||||||
|
"Absolute": "Absoluto"
|
||||||
|
}
|
|
@ -61,7 +61,7 @@
|
||||||
"Alerts": "Alertas",
|
"Alerts": "Alertas",
|
||||||
"All": "Todo",
|
"All": "Todo",
|
||||||
"AllChannels": "Todos los canales",
|
"AllChannels": "Todos los canales",
|
||||||
"AllComplexFormats": "Todos los formatos complejos (ASS, SSA, VOBSUB, PGS, SUB, IDX)",
|
"AllComplexFormats": "Todos los formatos complejos (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)",
|
||||||
"AllEpisodes": "Todos los capítulos",
|
"AllEpisodes": "Todos los capítulos",
|
||||||
"AllLanguages": "Todos los idiomas",
|
"AllLanguages": "Todos los idiomas",
|
||||||
"AllLibraries": "Todas las bibliotecas",
|
"AllLibraries": "Todas las bibliotecas",
|
||||||
|
@ -500,5 +500,45 @@
|
||||||
"HeaderDeleteItem": "Eliminar ítem",
|
"HeaderDeleteItem": "Eliminar ítem",
|
||||||
"HeaderDeleteDevice": "Eliminar dispositivo",
|
"HeaderDeleteDevice": "Eliminar dispositivo",
|
||||||
"HeaderDefaultRecordingSettings": "Ajustes de grabación por defecto",
|
"HeaderDefaultRecordingSettings": "Ajustes de grabación por defecto",
|
||||||
"UnsupportedPlayback": "Jellyfin no puede descifrar contenido protegido por DRM pero a pesar de esto lo intentará con todo el contenido, incluyendo títulos protegidos. Algunos archivos pueden aparecer completamente en negro por estar cifrados o por otras características no soportadas, como títulos interactivos."
|
"UnsupportedPlayback": "Jellyfin no puede descifrar contenido protegido por DRM pero a pesar de esto lo intentará con todo el contenido, incluyendo títulos protegidos. Algunos archivos pueden aparecer completamente en negro por estar cifrados o por otras características no soportadas, como títulos interactivos.",
|
||||||
|
"HeaderMediaFolders": "Carpetas de medios",
|
||||||
|
"HeaderMedia": "Medios",
|
||||||
|
"HeaderLoginFailure": "Error al iniciar sesión",
|
||||||
|
"HeaderLiveTvTunerSetup": "Configuración del sintonizador de TV en vivo",
|
||||||
|
"HeaderLiveTv": "TV en vivo",
|
||||||
|
"HeaderLibrarySettings": "Configuraciones de biblioteca",
|
||||||
|
"HeaderLibraryOrder": "Orden de biblioteca",
|
||||||
|
"HeaderLibraryFolders": "Carpetas de biblioteca",
|
||||||
|
"HeaderLibraryAccess": "Acceso a la biblioteca",
|
||||||
|
"HeaderLibraries": "Bibliotecas",
|
||||||
|
"HeaderLatestRecordings": "Grabaciones recientes",
|
||||||
|
"HeaderLatestMusic": "Música reciente",
|
||||||
|
"HeaderLatestMovies": "Películas recientes",
|
||||||
|
"HeaderLatestMedia": "Medios recientes",
|
||||||
|
"HeaderKeepSeries": "Mantener serie",
|
||||||
|
"HeaderKeepRecording": "Mantener grabación",
|
||||||
|
"HeaderItems": "Artículos",
|
||||||
|
"HeaderInstantMix": "Mezcla instantánea",
|
||||||
|
"HeaderInstall": "Instalar",
|
||||||
|
"HeaderImageSettings": "Configuraciones de imagen",
|
||||||
|
"HeaderImageOptions": "Opciones de imagen",
|
||||||
|
"HeaderIdentifyItemHelp": "Ingrese uno o más criterios de búsqueda. Eliminar criterios para aumentar los resultados de búsqueda.",
|
||||||
|
"HeaderIdentificationHeader": "Encabezado de identificación",
|
||||||
|
"HeaderIdentificationCriteriaHelp": "Ingrese al menos un criterio de identificación.",
|
||||||
|
"HeaderIdentification": "Identificación",
|
||||||
|
"HeaderHttpHeaders": "Encabezados HTTP",
|
||||||
|
"HeaderHome": "Inicio",
|
||||||
|
"HeaderGuideProviders": "Proveedores de datos de guías de TV",
|
||||||
|
"HeaderGenres": "Géneros",
|
||||||
|
"HeaderFrequentlyPlayed": "Reproducido con frecuencia",
|
||||||
|
"HeaderForgotPassword": "Olvidé la contraseña",
|
||||||
|
"HeaderForKids": "Para niños",
|
||||||
|
"HeaderFilters": "Filtros",
|
||||||
|
"HeaderFetcherSettings": "Configuración del recuperador",
|
||||||
|
"HeaderFetchImages": "Obtener imágenes:",
|
||||||
|
"HeaderFeatures": "Caracteristicas",
|
||||||
|
"HeaderFeatureAccess": "Acceso a características",
|
||||||
|
"HeaderFavoritePlaylists": "Listas de reproducción favoritas",
|
||||||
|
"ButtonTogglePlaylist": "Lista de reproducción",
|
||||||
|
"ButtonToggleContextMenu": "Más"
|
||||||
}
|
}
|
||||||
|
|
|
@ -957,7 +957,7 @@
|
||||||
"OptionMissingEpisode": "Episodios que faltan",
|
"OptionMissingEpisode": "Episodios que faltan",
|
||||||
"OptionMonday": "Lunes",
|
"OptionMonday": "Lunes",
|
||||||
"OptionNameSort": "Nombre",
|
"OptionNameSort": "Nombre",
|
||||||
"OptionNew": "Nuevo...",
|
"OptionNew": "Nuevo…",
|
||||||
"OptionNone": "Nada",
|
"OptionNone": "Nada",
|
||||||
"OptionOnAppStartup": "Al iniciar la aplicación",
|
"OptionOnAppStartup": "Al iniciar la aplicación",
|
||||||
"OptionOnInterval": "En un intervalo",
|
"OptionOnInterval": "En un intervalo",
|
||||||
|
@ -1513,5 +1513,6 @@
|
||||||
"ButtonToggleContextMenu": "Más",
|
"ButtonToggleContextMenu": "Más",
|
||||||
"Filter": "Filtro",
|
"Filter": "Filtro",
|
||||||
"New": "Nuevo",
|
"New": "Nuevo",
|
||||||
"HeaderFavoritePlaylists": "Lista reproducción favorita"
|
"HeaderFavoritePlaylists": "Lista reproducción favorita",
|
||||||
|
"ApiKeysCaption": "Lista de las claves API actuales"
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
"ButtonQuickStartGuide": "Schnellstart Instruktione",
|
"ButtonQuickStartGuide": "Schnellstart Instruktione",
|
||||||
"ButtonResetPassword": "Passwort zrug setze",
|
"ButtonResetPassword": "Passwort zrug setze",
|
||||||
"ButtonSave": "Speichere",
|
"ButtonSave": "Speichere",
|
||||||
"ButtonSignOut": "Sign out",
|
"ButtonSignOut": "Uslogge",
|
||||||
"ButtonSort": "Sortiere",
|
"ButtonSort": "Sortiere",
|
||||||
"ChannelAccessHelp": "Wähl en Kanal us, um de mit dem User z'teile. Administratore werded immer d'Möglichkeit ha alli Kanäl mitm Metadate Manager z'bearbeite.",
|
"ChannelAccessHelp": "Wähl en Kanal us, um de mit dem User z'teile. Administratore werded immer d'Möglichkeit ha alli Kanäl mitm Metadate Manager z'bearbeite.",
|
||||||
"Continuing": "Fortlaufend",
|
"Continuing": "Fortlaufend",
|
||||||
|
|
|
@ -770,5 +770,7 @@
|
||||||
"Raised": "מורם",
|
"Raised": "מורם",
|
||||||
"LabelSpecialSeasonsDisplayName": "שם תצוגת \"עונה מיוחדת\":",
|
"LabelSpecialSeasonsDisplayName": "שם תצוגת \"עונה מיוחדת\":",
|
||||||
"LabelSource": "מקור:",
|
"LabelSource": "מקור:",
|
||||||
"LabelSoundEffects": "אפקטי סאונד:"
|
"LabelSoundEffects": "אפקטי סאונד:",
|
||||||
|
"ButtonTogglePlaylist": "רשימת ניגון",
|
||||||
|
"ButtonToggleContextMenu": "עוד"
|
||||||
}
|
}
|
||||||
|
|
|
@ -424,7 +424,7 @@
|
||||||
"OptionMissingEpisode": "Hiányzó Epizódok",
|
"OptionMissingEpisode": "Hiányzó Epizódok",
|
||||||
"OptionMonday": "Hétfő",
|
"OptionMonday": "Hétfő",
|
||||||
"OptionNameSort": "Név",
|
"OptionNameSort": "Név",
|
||||||
"OptionNew": "Új...",
|
"OptionNew": "Új…",
|
||||||
"OptionParentalRating": "Korhatár besorolás",
|
"OptionParentalRating": "Korhatár besorolás",
|
||||||
"OptionPlayCount": "Lejátszások száma",
|
"OptionPlayCount": "Lejátszások száma",
|
||||||
"OptionPlayed": "Megnézett",
|
"OptionPlayed": "Megnézett",
|
||||||
|
@ -584,7 +584,7 @@
|
||||||
"Aired": "Adásban",
|
"Aired": "Adásban",
|
||||||
"Albums": "Albumok",
|
"Albums": "Albumok",
|
||||||
"AllChannels": "Minden csatorna",
|
"AllChannels": "Minden csatorna",
|
||||||
"AllComplexFormats": "Minden összetett formátum (ASS, SSA, VOBSUB, PGS, SUB, IDX)",
|
"AllComplexFormats": "Minden összetett formátum (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)",
|
||||||
"AllowMediaConversion": "Média konvertálás engedélyezése",
|
"AllowMediaConversion": "Média konvertálás engedélyezése",
|
||||||
"AllowMediaConversionHelp": "Add meg vagy tiltsd le a média konvertálás funkcióhoz való hozzáférést.",
|
"AllowMediaConversionHelp": "Add meg vagy tiltsd le a média konvertálás funkcióhoz való hozzáférést.",
|
||||||
"AllowRemoteAccess": "Engedélyezze a távoli kapcsolatokat a Jellyfin szerverhez.",
|
"AllowRemoteAccess": "Engedélyezze a távoli kapcsolatokat a Jellyfin szerverhez.",
|
||||||
|
@ -1511,5 +1511,6 @@
|
||||||
"ButtonToggleContextMenu": "Továbbiak",
|
"ButtonToggleContextMenu": "Továbbiak",
|
||||||
"Filter": "Szűrés",
|
"Filter": "Szűrés",
|
||||||
"New": "Új",
|
"New": "Új",
|
||||||
"HeaderFavoritePlaylists": "Kedvenc lejátszási listák"
|
"HeaderFavoritePlaylists": "Kedvenc lejátszási listák",
|
||||||
|
"ApiKeysCaption": "A jelenleg engedélyezett API kulcsok listája"
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,13 +14,13 @@
|
||||||
"Albums": "Album",
|
"Albums": "Album",
|
||||||
"All": "Tutto",
|
"All": "Tutto",
|
||||||
"AllChannels": "Tutti i canali",
|
"AllChannels": "Tutti i canali",
|
||||||
"AllComplexFormats": "Tutti i formati complessi (ASS, SSA, VOBSUB, PGS, SUB, IDX)",
|
"AllComplexFormats": "Tutti i formati complessi (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)",
|
||||||
"AllEpisodes": "Tutti gli episodi",
|
"AllEpisodes": "Tutti gli episodi",
|
||||||
"AllLanguages": "Tutte le lingue",
|
"AllLanguages": "Tutte le lingue",
|
||||||
"AllLibraries": "Tutte le librerie",
|
"AllLibraries": "Tutte le librerie",
|
||||||
"AllowHWTranscodingHelp": "Abilita il sintonizzatore per codificare i flussi al volo. Ciò potrebbe contribuire a ridurre la transcodifica richiesta dal server.",
|
"AllowHWTranscodingHelp": "Abilita il sintonizzatore per codificare i flussi al volo. Ciò potrebbe contribuire a ridurre la transcodifica richiesta dal server.",
|
||||||
"AllowOnTheFlySubtitleExtraction": "Consenti l'estrazione sottotitoli al volo",
|
"AllowOnTheFlySubtitleExtraction": "Consenti l'estrazione sottotitoli al volo",
|
||||||
"AllowOnTheFlySubtitleExtractionHelp": "I sottotitoli incorporati possono essere estratti dai video e consegnati ad applicazioni in testo semplice per evitare la transcodifica dei video. In alcuni sistemi questo può richiedere molto tempo e causare un rallentamento della riproduzione video durante il processo di estrazione. Disattivare questa opzione per avere i sottotitoli incorporati con la transcodifica video quando non sono supportati nativamente dal dispositivo client.",
|
"AllowOnTheFlySubtitleExtractionHelp": "I sottotitoli incorporati possono essere estratti dai video e consegnati ai client in testo semplice per evitare la transcodifica dei video. In alcuni sistemi questo può richiedere molto tempo e causare un rallentamento della riproduzione video durante il processo di estrazione. Disattivare questa opzione per avere i sottotitoli incorporati con la transcodifica video quando non sono supportati nativamente dal dispositivo client.",
|
||||||
"AllowRemoteAccess": "Abilita connessioni remote a questo Server Jellyfin.",
|
"AllowRemoteAccess": "Abilita connessioni remote a questo Server Jellyfin.",
|
||||||
"AllowRemoteAccessHelp": "Se deselezionato, tutte le connessioni remote saranno bloccate.",
|
"AllowRemoteAccessHelp": "Se deselezionato, tutte le connessioni remote saranno bloccate.",
|
||||||
"AllowedRemoteAddressesHelp": "Elenco separato da virgola di indirizzi IP o voci IP / maschera di rete per reti che potranno connettersi da remoto. Se lasciato vuoto, saranno consentiti tutti gli indirizzi remoti.",
|
"AllowedRemoteAddressesHelp": "Elenco separato da virgola di indirizzi IP o voci IP / maschera di rete per reti che potranno connettersi da remoto. Se lasciato vuoto, saranno consentiti tutti gli indirizzi remoti.",
|
||||||
|
@ -40,12 +40,12 @@
|
||||||
"BirthDateValue": "Nato il: {0}",
|
"BirthDateValue": "Nato il: {0}",
|
||||||
"BirthLocation": "Luogo di nascita",
|
"BirthLocation": "Luogo di nascita",
|
||||||
"BirthPlaceValue": "nato a: {0}",
|
"BirthPlaceValue": "nato a: {0}",
|
||||||
"BookLibraryHelp": "Libri e audiolibri sono supportati. Rivedere {0}la guida ai nomi dei libri di Jellyfin{1}.",
|
"BookLibraryHelp": "Libri e audiolibri sono supportati. Rivedi la guida {0} ai nomi dei libri {1} di Jellyfin.",
|
||||||
"Books": "Libri",
|
"Books": "Libri",
|
||||||
"BoxRear": "Box (retro)",
|
"BoxRear": "Box (retro)",
|
||||||
"Browse": "Esplora",
|
"Browse": "Esplora",
|
||||||
"BrowsePluginCatalogMessage": "Sfoglia il catalogo dei Plugins.",
|
"BrowsePluginCatalogMessage": "Sfoglia il catalogo dei Plugins.",
|
||||||
"BurnSubtitlesHelp": "Determina se il server deve imprimere i sottotitoli quando i video vengono convertiti. Evitare ciò migliorerà di molto le prestazioni. Selezionare Auto per imprimere formati basati sull'immagine (VOBSUB, PGS, SUB, IDX) e alcuni sottotitoli ASS o SSA.",
|
"BurnSubtitlesHelp": "Determina se il server deve imprimere i sottotitoli quando i video vengono convertiti. Evitare ciò migliorerà di molto le prestazioni. Selezionare Auto per imprimere formati basati sull'immagine (VOBSUB, PGS, SUB, IDX, ...) e alcuni sottotitoli ASS o SSA.",
|
||||||
"ButtonAdd": "Aggiungi",
|
"ButtonAdd": "Aggiungi",
|
||||||
"ButtonAddMediaLibrary": "Aggiungi raccolta multimediale",
|
"ButtonAddMediaLibrary": "Aggiungi raccolta multimediale",
|
||||||
"ButtonAddScheduledTaskTrigger": "Aggiungi operazione",
|
"ButtonAddScheduledTaskTrigger": "Aggiungi operazione",
|
||||||
|
@ -995,7 +995,7 @@
|
||||||
"OptionMissingEpisode": "Episodi mancanti",
|
"OptionMissingEpisode": "Episodi mancanti",
|
||||||
"OptionMonday": "Lunedì",
|
"OptionMonday": "Lunedì",
|
||||||
"OptionNameSort": "Nome",
|
"OptionNameSort": "Nome",
|
||||||
"OptionNew": "Nuovo...",
|
"OptionNew": "Nuovo…",
|
||||||
"OptionNone": "Nessuno",
|
"OptionNone": "Nessuno",
|
||||||
"OptionOnAppStartup": "All'avvio",
|
"OptionOnAppStartup": "All'avvio",
|
||||||
"OptionOnInterval": "Su intervallo",
|
"OptionOnInterval": "Su intervallo",
|
||||||
|
@ -1504,5 +1504,8 @@
|
||||||
"MessageUnauthorizedUser": "Non sei autorizzato ad accedere in questo momento al server. Contatta l'amministratore per ulteriori dettagli.",
|
"MessageUnauthorizedUser": "Non sei autorizzato ad accedere in questo momento al server. Contatta l'amministratore per ulteriori dettagli.",
|
||||||
"ButtonTogglePlaylist": "Playlist",
|
"ButtonTogglePlaylist": "Playlist",
|
||||||
"ButtonToggleContextMenu": "Altro",
|
"ButtonToggleContextMenu": "Altro",
|
||||||
"HeaderFavoritePlaylists": "Playlist Favorite"
|
"HeaderFavoritePlaylists": "Playlist Favorite",
|
||||||
|
"Filter": "Filtro",
|
||||||
|
"New": "Nuovo",
|
||||||
|
"ApiKeysCaption": "Elenco chiavi API abilitate"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1325,7 +1325,7 @@
|
||||||
"MediaInfoPixelFormat": "픽셀 형식",
|
"MediaInfoPixelFormat": "픽셀 형식",
|
||||||
"MapChannels": "채널 매핑",
|
"MapChannels": "채널 매핑",
|
||||||
"LaunchWebAppOnStartupHelp": "서버가 처음 시작되면 웹 브라우저에서 웹 클라이언트를 실행하십시오. 서버 재시작의 경우에는 적용되지 않습니다.",
|
"LaunchWebAppOnStartupHelp": "서버가 처음 시작되면 웹 브라우저에서 웹 클라이언트를 실행하십시오. 서버 재시작의 경우에는 적용되지 않습니다.",
|
||||||
"Large": "큰",
|
"Large": "크게",
|
||||||
"LanNetworksHelp": "대역폭을 강제로 제한할 때 로컬 네트워크로 간주되는 쉼표로 구분된 IP 주소 및 IP/서브넷 마스크 목록입니다. 지정될 경우 모든 다른 IP 주소는 외부 네트워크로 간주되며 외부 대역폭 제한이 적용됩니다. 공백일 경우 서버의 서브넷만이 로컬 네트워크로 간주됩니다.",
|
"LanNetworksHelp": "대역폭을 강제로 제한할 때 로컬 네트워크로 간주되는 쉼표로 구분된 IP 주소 및 IP/서브넷 마스크 목록입니다. 지정될 경우 모든 다른 IP 주소는 외부 네트워크로 간주되며 외부 대역폭 제한이 적용됩니다. 공백일 경우 서버의 서브넷만이 로컬 네트워크로 간주됩니다.",
|
||||||
"LabelffmpegPathHelp": "ffmpeg 실행 파일 혹은 ffmpeg를 포함하는 폴더 경로입니다.",
|
"LabelffmpegPathHelp": "ffmpeg 실행 파일 혹은 ffmpeg를 포함하는 폴더 경로입니다.",
|
||||||
"LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 네임스페이스에 포함된 X_DLNADOC 요소의 내용을 결정합니다.",
|
"LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 네임스페이스에 포함된 X_DLNADOC 요소의 내용을 결정합니다.",
|
||||||
|
@ -1430,5 +1430,8 @@
|
||||||
"MessageUnauthorizedUser": "현재 서버에 접속할 권한이 없습니다. 자세한 정보는 서버 관리자에게 문의하십시오.",
|
"MessageUnauthorizedUser": "현재 서버에 접속할 권한이 없습니다. 자세한 정보는 서버 관리자에게 문의하십시오.",
|
||||||
"HeaderFavoritePlaylists": "즐겨찾는 플레이리스트",
|
"HeaderFavoritePlaylists": "즐겨찾는 플레이리스트",
|
||||||
"ButtonTogglePlaylist": "플레이리스트",
|
"ButtonTogglePlaylist": "플레이리스트",
|
||||||
"ButtonToggleContextMenu": "더보기"
|
"ButtonToggleContextMenu": "더보기",
|
||||||
|
"Rate": "평",
|
||||||
|
"PerfectMatch": "정확히 일치",
|
||||||
|
"OtherArtist": "다른 아티스트"
|
||||||
}
|
}
|
||||||
|
|
|
@ -239,7 +239,7 @@
|
||||||
"Kids": "Bērni",
|
"Kids": "Bērni",
|
||||||
"Items": "Vienumi",
|
"Items": "Vienumi",
|
||||||
"ItemCount": "{0} vienumi",
|
"ItemCount": "{0} vienumi",
|
||||||
"InstallingPackage": "Instalē {0}",
|
"InstallingPackage": "Instalē {0} (versija {1})",
|
||||||
"Images": "Attēli",
|
"Images": "Attēli",
|
||||||
"Identify": "Identificēt",
|
"Identify": "Identificēt",
|
||||||
"Horizontal": "Horizontāls",
|
"Horizontal": "Horizontāls",
|
||||||
|
@ -455,7 +455,7 @@
|
||||||
"DrmChannelsNotImported": "Kanāli ar DRM netiks importēti.",
|
"DrmChannelsNotImported": "Kanāli ar DRM netiks importēti.",
|
||||||
"DownloadsValue": "{0} lejupielādes",
|
"DownloadsValue": "{0} lejupielādes",
|
||||||
"Download": "Lejupielādēt",
|
"Download": "Lejupielādēt",
|
||||||
"DisplayModeHelp": "Izvēlies ekrāna veidu, uz kura tu izmanto Jellyfin.",
|
"DisplayModeHelp": "Izvēlies izkārtojuma veidu, kuru tu gribi priekš šī interfeisa.",
|
||||||
"DoNotRecord": "Neierakstīt",
|
"DoNotRecord": "Neierakstīt",
|
||||||
"DisplayInOtherHomeScreenSections": "Rādīt mājas ekrāna sadaļās kā jaunākā multvide un turpini skatīties",
|
"DisplayInOtherHomeScreenSections": "Rādīt mājas ekrāna sadaļās kā jaunākā multvide un turpini skatīties",
|
||||||
"DisplayInMyMedia": "Rādīt mājas ekrānā",
|
"DisplayInMyMedia": "Rādīt mājas ekrānā",
|
||||||
|
@ -605,8 +605,8 @@
|
||||||
"Art": "Māksla",
|
"Art": "Māksla",
|
||||||
"AroundTime": "Ap {0}",
|
"AroundTime": "Ap {0}",
|
||||||
"Anytime": "Jebkad",
|
"Anytime": "Jebkad",
|
||||||
"AnyLanguage": "Jebkura valoda",
|
"AnyLanguage": "Jebkura Valoda",
|
||||||
"AlwaysPlaySubtitles": "Vienmēr rādīt subtitrus",
|
"AlwaysPlaySubtitles": "Vienmēr Rādīt",
|
||||||
"AllowedRemoteAddressesHelp": "Ar komatiem atdalīts IP adrešu vai IP/tīkla masku saraksts, kas norāda uz tīkliem, kas var pieslēgties attālināti. Ja atstāts tukšs, visas attālinātās adreses tiks atļautas.",
|
"AllowedRemoteAddressesHelp": "Ar komatiem atdalīts IP adrešu vai IP/tīkla masku saraksts, kas norāda uz tīkliem, kas var pieslēgties attālināti. Ja atstāts tukšs, visas attālinātās adreses tiks atļautas.",
|
||||||
"AllowRemoteAccessHelp": "Ja atķeksēts, visi attālinātie savienojumi tiks bloķēti.",
|
"AllowRemoteAccessHelp": "Ja atķeksēts, visi attālinātie savienojumi tiks bloķēti.",
|
||||||
"AllowRemoteAccess": "Atļaut attālinātus savienojumus šim Jellyfin Serverim.",
|
"AllowRemoteAccess": "Atļaut attālinātus savienojumus šim Jellyfin Serverim.",
|
||||||
|
@ -615,7 +615,7 @@
|
||||||
"AllLibraries": "Visas bibliotēkas",
|
"AllLibraries": "Visas bibliotēkas",
|
||||||
"AllLanguages": "Visas valodas",
|
"AllLanguages": "Visas valodas",
|
||||||
"AllEpisodes": "Visas epizodes",
|
"AllEpisodes": "Visas epizodes",
|
||||||
"AllComplexFormats": "Visi sarezģītie formāti (ASS, SSA, VOBSUB, PGS, SUB/IDX, utt.)",
|
"AllComplexFormats": "Visi Sarežģītie formāti (ASS, SSA, VOBSUB, PGS, SUB, IDX, …)",
|
||||||
"AllChannels": "Visi kanāli",
|
"AllChannels": "Visi kanāli",
|
||||||
"All": "Viss",
|
"All": "Viss",
|
||||||
"Alerts": "Paziņojumi",
|
"Alerts": "Paziņojumi",
|
||||||
|
@ -951,8 +951,8 @@
|
||||||
"HeaderCustomDlnaProfiles": "Pielāgoti Profili",
|
"HeaderCustomDlnaProfiles": "Pielāgoti Profili",
|
||||||
"HeaderConfirmProfileDeletion": "Apstiprināt Profila Dzēšanu",
|
"HeaderConfirmProfileDeletion": "Apstiprināt Profila Dzēšanu",
|
||||||
"HeaderChapterImages": "Nodaļu Attēli",
|
"HeaderChapterImages": "Nodaļu Attēli",
|
||||||
"HeaderCastCrew": "Lomas/Apkalpe",
|
"HeaderCastCrew": "Lomas & Apkalpe",
|
||||||
"HeaderCastAndCrew": "Lomas/Apkalpe",
|
"HeaderCastAndCrew": "Lomas un Apkalpe",
|
||||||
"HeaderAppearsOn": "Redzams",
|
"HeaderAppearsOn": "Redzams",
|
||||||
"FFmpegSavePathNotFound": "Mēs nespējām atrast FFmpeg norādītajā ceļā. FFprobe arī ir vajadzīgs, un tam ir jāatrodas tajā pašā mapē. Šīs komponentes parasti tiek apvienotas vienā un tajā pašā lejupielādē. Lūdzu pārbaudiet ceļu un mēģiniet vēlreiz.",
|
"FFmpegSavePathNotFound": "Mēs nespējām atrast FFmpeg norādītajā ceļā. FFprobe arī ir vajadzīgs, un tam ir jāatrodas tajā pašā mapē. Šīs komponentes parasti tiek apvienotas vienā un tajā pašā lejupielādē. Lūdzu pārbaudiet ceļu un mēģiniet vēlreiz.",
|
||||||
"HeaderAdditionalParts": "Papildus Ceļi",
|
"HeaderAdditionalParts": "Papildus Ceļi",
|
||||||
|
@ -1001,7 +1001,7 @@
|
||||||
"ButtonArrowLeft": "Kreisi",
|
"ButtonArrowLeft": "Kreisi",
|
||||||
"ButtonArrowDown": "Lejup",
|
"ButtonArrowDown": "Lejup",
|
||||||
"ButtonAddScheduledTaskTrigger": "Pievienot Trigeru",
|
"ButtonAddScheduledTaskTrigger": "Pievienot Trigeru",
|
||||||
"BookLibraryHelp": "Audio un teksta grāmatas tiek atbalstītas. Pārskati {0}grāmatu nosaukumu instrukciju{1}.",
|
"BookLibraryHelp": "Audio un teksta grāmatas tiek atbalstītas. Pārskati {0} grāmatu nosaukumu instrukciju {1}.",
|
||||||
"Blacklist": "Melnais saraksts",
|
"Blacklist": "Melnais saraksts",
|
||||||
"AuthProviderHelp": "Izvēlies Autentifikācijas Nodrošinājumu, kas tiks izmantots lai autentificētu šī lietotāja paroli.",
|
"AuthProviderHelp": "Izvēlies Autentifikācijas Nodrošinājumu, kas tiks izmantots lai autentificētu šī lietotāja paroli.",
|
||||||
"AspectRatio": "Attēla Proporcijas",
|
"AspectRatio": "Attēla Proporcijas",
|
||||||
|
@ -1081,5 +1081,58 @@
|
||||||
"OptionAllowBrowsingLiveTv": "Atļaut Tiešraides TV piekļuvi",
|
"OptionAllowBrowsingLiveTv": "Atļaut Tiešraides TV piekļuvi",
|
||||||
"MediaInfoForced": "Piespiests",
|
"MediaInfoForced": "Piespiests",
|
||||||
"LabelPublicHttpPortHelp": "Publiskai porta numurs, kas tiks kartēts uz vietējo HTTP portu.",
|
"LabelPublicHttpPortHelp": "Publiskai porta numurs, kas tiks kartēts uz vietējo HTTP portu.",
|
||||||
"LabelOptionalNetworkPath": "(Neobligāts) Koplietota tīkla mape:"
|
"LabelOptionalNetworkPath": "(Neobligāts) Koplietota tīkla mape:",
|
||||||
|
"LabelLibraryPageSizeHelp": "Uzstāda vienumu daudzumu, ko rādīt bibliotēkas lapā. Uzstādi uz 0 lai atspējotu lapošanu.",
|
||||||
|
"LabelLibraryPageSize": "Bibliotēkas lapu lielums:",
|
||||||
|
"LabelKodiMetadataUserHelp": "Saglabāt skatīšanās datus uz NFO datnēm, lai tos varētu izmantot citas lietotnes.",
|
||||||
|
"LabelKodiMetadataDateFormatHelp": "Visi datumi iekš NFO datnēm tiks parsēti ar šo formātu.",
|
||||||
|
"LabelInNetworkSignInWithEasyPasswordHelp": "Izmanto vieglo pin kodu lai piekļūtu klientiem savā vietējā tīklā. Tava parastā parole būs vajadzīga ārpus mājām. Ja pin kods ir atstāts tukšs, tev nevajadzēs paroli savā vietējā mājas tīklā.",
|
||||||
|
"LabelInNetworkSignInWithEasyPassword": "Iespējot iekštīkla piekļuvi ar manu vieglo pin kodu",
|
||||||
|
"LabelImportOnlyFavoriteChannels": "Ierobežot uz kanāliem, kas atzīmēti kā favorīti",
|
||||||
|
"LabelGroupMoviesIntoCollectionsHelp": "Kad tiks rādīti filmu saraksti, filmas kas pieder pie kolekcijas tiks attēlotas kā viens grupēts vienums.",
|
||||||
|
"LabelServerNameHelp": "Šis vārds tiks izmantots lai identificētu tavu serveri un noklusējumā ir servera datora vārds.",
|
||||||
|
"LabelExtractChaptersDuringLibraryScan": "Izvilkt sadaļu attēlus bibliotēkas skenēšanas laikā",
|
||||||
|
"LabelBaseUrlHelp": "Šeit tu vari pievienot pielāgotas apakš-mapes lai piekļūtu serverim no unikālāka URL.",
|
||||||
|
"LabelBaseUrl": "Pamata URL:",
|
||||||
|
"LabelEnableSingleImageInDidlLimitHelp": "Dažas ierīces pareizi neatskaņos ja vairāki attēli ir iegulti iekš Didl.",
|
||||||
|
"LabelEnableSingleImageInDidlLimit": "Ierobežot uz vienu iegulto attēlu",
|
||||||
|
"LabelEnableDlnaClientDiscoveryIntervalHelp": "Nosaka laiku sekundēs starp Jellyfin veiktajiem SSDP meklējumiem.",
|
||||||
|
"LabelEmbedAlbumArtDidlHelp": "Dažas ierīces labprātāk izmanto šo metodi lai saņemtu albumu vākus. Citas var neatskaņot ar šo opciju ieslēgtu.",
|
||||||
|
"LabelDroppedFrames": "Nomestie kadri:",
|
||||||
|
"LabelDownMixAudioScaleHelp": "Pastiprināt audio lejupmiksēšanas laikā. Vērtība viens paturēs oriģinālo skaļumu.",
|
||||||
|
"LabelDownMixAudioScale": "Audio pastiprinājums lejupmiksējot:",
|
||||||
|
"LabelDisplayMissingEpisodesWithinSeasons": "Rādīt trūkstošās epizodes sezonās",
|
||||||
|
"LabelDateAddedBehaviorHelp": "Ja atrodas metadatu vērtība, tā vienmēr tiks izmantota pirms jebkuras no šīm opcijām.",
|
||||||
|
"LabelDashboardTheme": "Servera vadības paneļa tēma:",
|
||||||
|
"LabelCustomDeviceDisplayNameHelp": "Ievadi pielāgotu displeja vārdu vai atstāj tukšu lai izmantotu ierīces noteikto.",
|
||||||
|
"LabelCachePathHelp": "Nosaki pielāgotu atrašanās vietu priekš keša datnēm kā attēliem. Atstāj tukšu lai izmantotu servera noklusējumu.",
|
||||||
|
"LabelAllowedRemoteAddressesMode": "Attālās IP adreses filtra režīms:",
|
||||||
|
"LabelAllowedRemoteAddresses": "Attālās IP adreses filtrs:",
|
||||||
|
"LabelAlbumArtPN": "Albumu vāku PN:",
|
||||||
|
"LabelAirsBeforeSeason": "Tiešraidē pirms sezonas:",
|
||||||
|
"LabelAirsBeforeEpisode": "Tiešraidē pirms epizodes:",
|
||||||
|
"LabelAirsAfterSeason": "Tiešraidē pēc sezonas:",
|
||||||
|
"HeaderSubtitleProfilesHelp": "Subtitru profili apraksta ierīces atbalstītos subtitru formātus.",
|
||||||
|
"HeaderPendingInvitations": "Gaidošie Uzaicinājumi",
|
||||||
|
"HeaderKeepSeries": "Paturēt Sēriju",
|
||||||
|
"HeaderFavoritePlaylists": "Atskaņošanas Sarakstu Favorīti",
|
||||||
|
"ApiKeysCaption": "Saraksts ar pašlaik iespējotajām API atslēgām",
|
||||||
|
"EncoderPresetHelp": "Izvēlies ātrāku vērtību lai uzlabotu veiktspēju, vai lēnāku vērtību lai uzlabotu kvalitāti.",
|
||||||
|
"FetchingData": "Iegūst papildu datus",
|
||||||
|
"ErrorDeletingItem": "Notika kļūda dzēšot vienumu no Jellyfin Servera. Lūdzu pārliecinies vai Jellyfin Server ir rakstoša piekļuve pie satura mapes un mēģini vēlreiz.",
|
||||||
|
"ErrorAddingTunerDevice": "Kļūda pievienojot tūnera ierīci. Lūdzu pārliecinies ka tā ir pieejama un mēģini vēlreiz.",
|
||||||
|
"ErrorAddingMediaPathToVirtualFolder": "Notika kļūda pievienojot satura ceļu. Lūdzu pārliecinies ka ceļš ir derīgs un ka Jellyfin Servera procesam ir piekļuve tai vietai.",
|
||||||
|
"Episode": "Epizode",
|
||||||
|
"DeviceAccessHelp": "Tas attiecas tikai uz ierīcēm, kas var tikt unikāli identificētas un neaizliegs piekļuvi no pārlūka. Filtrējot lietotāju ierīču piekļuvi neatļaus tiem izmantot jaunas ierīces, līdz tās nav tikušas šeit atļautas.",
|
||||||
|
"DeinterlaceMethodHelp": "Izvēlies rindpārlēces sakļaušanas (deinterlacing) metodi kad tiek trans-kodēts rindpārlēces izvērsts (interlaced) saturs.",
|
||||||
|
"CustomDlnaProfilesHelp": "Izveido pielāgotu profilu priekš jaunas ierīces, vai pārraksti sistēmas profilu.",
|
||||||
|
"ColorTransfer": "Krāsu pārsūtīšana",
|
||||||
|
"ClientSettings": "Klientu Iestatījumi",
|
||||||
|
"ButtonTogglePlaylist": "Atskaņošanas Saraksts",
|
||||||
|
"ButtonToggleContextMenu": "Vairāk",
|
||||||
|
"BurnSubtitlesHelp": "Nosaka, vai serverim ir jāiededzina subtitri video trans-kodēšanas laikā. To nedarot tiks stipri palielināta veiktspēja. Izvēlies Auto lai iededzinātu uz attēliem bāzētus formātus (VOBSUB, PGS, SUB, IDX, …) un noteiktus ASS vai SSA subtitrus.",
|
||||||
|
"Artist": "Izpildītājs",
|
||||||
|
"AllowOnTheFlySubtitleExtractionHelp": "Iegultie subtitri var tikt izvilkto no video un nogādāti klientiem kā parasts teksts, lai nevajadzētu veikt lieku video trans kodēšanu. Uz dažām sistēmām tas var aizņemt ilgu laiku un likt video atskaņošanai uzkārties izvilkšanas procesa laikā. Atspējo šo lai iegultos subtitrus iededzinātu video trans kodēšanas veidā, kad tos noklusēti neatbalsta klienta ierīce.",
|
||||||
|
"AlbumArtist": "Albuma Izpildītājs",
|
||||||
|
"Album": "Albums"
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
"BoxRear": "Pudełko (tył)",
|
"BoxRear": "Pudełko (tył)",
|
||||||
"Browse": "Przeglądaj",
|
"Browse": "Przeglądaj",
|
||||||
"BrowsePluginCatalogMessage": "Przejrzyj nasz katalog wtyczek żeby zobaczyć dostępne wtyczki.",
|
"BrowsePluginCatalogMessage": "Przejrzyj nasz katalog wtyczek żeby zobaczyć dostępne wtyczki.",
|
||||||
"BurnSubtitlesHelp": "Określa czy serwer powinien wypalać napisy podczas konwersji wideo, w zależności od formatu napisów. Unikanie wypalania napisów poprawia wydajność serwera. Wybierz Automatycznie, w celu wypalania zarówno napisów w formatach graficznych (np. VOBSUB, PGS, SUB/IDX, itp.), jak i pewnych napisów ASS/SSA.",
|
"BurnSubtitlesHelp": "Określa czy serwer powinien wypalać napisy podczas konwersji wideo, w zależności od formatu napisów. Unikanie wypalania napisów znacząco poprawia wydajność serwera. Wybierz Automatycznie, w celu wypalania zarówno napisów w formatach graficznych (np. VOBSUB, PGS, SUB/IDX), jak i pewnych napisów ASS lub SSA.",
|
||||||
"ButtonAdd": "Dodaj",
|
"ButtonAdd": "Dodaj",
|
||||||
"ButtonAddMediaLibrary": "Dodaj media do biblioteki",
|
"ButtonAddMediaLibrary": "Dodaj media do biblioteki",
|
||||||
"ButtonAddScheduledTaskTrigger": "Dodaj wyzwalacz",
|
"ButtonAddScheduledTaskTrigger": "Dodaj wyzwalacz",
|
||||||
|
@ -190,7 +190,7 @@
|
||||||
"DisplayInOtherHomeScreenSections": "Wyświetlaj na ekranie startowym sekcje Ostatnio dodane i Kontynuuj odtwarzanie",
|
"DisplayInOtherHomeScreenSections": "Wyświetlaj na ekranie startowym sekcje Ostatnio dodane i Kontynuuj odtwarzanie",
|
||||||
"DisplayMissingEpisodesWithinSeasons": "Wyświetlaj w sezonach brakujące odcinki",
|
"DisplayMissingEpisodesWithinSeasons": "Wyświetlaj w sezonach brakujące odcinki",
|
||||||
"DisplayMissingEpisodesWithinSeasonsHelp": "Ta opcja musi zostać dodatkowo aktywowana w bibliotece seriali, w konfiguracji serwera.",
|
"DisplayMissingEpisodesWithinSeasonsHelp": "Ta opcja musi zostać dodatkowo aktywowana w bibliotece seriali, w konfiguracji serwera.",
|
||||||
"DisplayModeHelp": "Określa typ urządzenia, na którym uruchomiono Jellyfin.",
|
"DisplayModeHelp": "Wybierz styl układu interfejsu.",
|
||||||
"DoNotRecord": "Nie nagrywaj",
|
"DoNotRecord": "Nie nagrywaj",
|
||||||
"Down": "W dół",
|
"Down": "W dół",
|
||||||
"Download": "Pobierz",
|
"Download": "Pobierz",
|
||||||
|
@ -490,7 +490,7 @@
|
||||||
"Images": "Obrazy",
|
"Images": "Obrazy",
|
||||||
"ImportFavoriteChannelsHelp": "Jeśli aktywne, tylko kanały oznaczone jako ulubione na tunerze, będą importowane.",
|
"ImportFavoriteChannelsHelp": "Jeśli aktywne, tylko kanały oznaczone jako ulubione na tunerze, będą importowane.",
|
||||||
"ImportMissingEpisodesHelp": "W przypadku aktywacji tej opcji, informacje o brakujących odcinkach zostaną zaimportowane do bazy Jellyfin i będą wyświetlane na listach sezonów i seriali. Może to jednak znacznie wydłużyć czas skanowania biblioteki.",
|
"ImportMissingEpisodesHelp": "W przypadku aktywacji tej opcji, informacje o brakujących odcinkach zostaną zaimportowane do bazy Jellyfin i będą wyświetlane na listach sezonów i seriali. Może to jednak znacznie wydłużyć czas skanowania biblioteki.",
|
||||||
"InstallingPackage": "Instalowanie {0}",
|
"InstallingPackage": "Instalowanie {0} (wersja {1})",
|
||||||
"InstantMix": "Szybki remiks",
|
"InstantMix": "Szybki remiks",
|
||||||
"ItemCount": "{0} pozycje",
|
"ItemCount": "{0} pozycje",
|
||||||
"Items": "Pozycje",
|
"Items": "Pozycje",
|
||||||
|
@ -953,16 +953,16 @@
|
||||||
"NoNextUpItemsMessage": "Nie znaleziono niczego. Zacznij oglądać swoje seriale!",
|
"NoNextUpItemsMessage": "Nie znaleziono niczego. Zacznij oglądać swoje seriale!",
|
||||||
"NoPluginConfigurationMessage": "Ta wtyczka nie ma żadnych ustawień.",
|
"NoPluginConfigurationMessage": "Ta wtyczka nie ma żadnych ustawień.",
|
||||||
"NoSubtitleSearchResultsFound": "Brak wyników wyszukiwania.",
|
"NoSubtitleSearchResultsFound": "Brak wyników wyszukiwania.",
|
||||||
"NoSubtitles": "Brak napisów",
|
"NoSubtitles": "Brak",
|
||||||
"NoSubtitlesHelp": "Domyślnie napisy nie będą wczytywane. Można je ciągle włączyć ręcznie podczas odtwarzania.",
|
"NoSubtitlesHelp": "Domyślnie napisy nie będą wczytywane. Można je ciągle włączyć ręcznie podczas odtwarzania.",
|
||||||
"None": "Brak",
|
"None": "Brak",
|
||||||
"Normal": "Normalny",
|
"Normal": "Normalny",
|
||||||
"NumLocationsValue": "{0} foldery",
|
"NumLocationsValue": "{0} foldery",
|
||||||
"Off": "Wyłączone",
|
"Off": "Wyłączone",
|
||||||
"OneChannel": "Jeden kanał",
|
"OneChannel": "Jeden kanał",
|
||||||
"OnlyForcedSubtitles": "Tylko wymuszone napisy",
|
"OnlyForcedSubtitles": "Tylko wymuszone",
|
||||||
"OnlyForcedSubtitlesHelp": "Tylko napisy oznaczone jako wymuszone będą wczytywane.",
|
"OnlyForcedSubtitlesHelp": "Tylko napisy oznaczone jako wymuszone będą wczytywane.",
|
||||||
"OnlyImageFormats": "Tylko formaty graficzne (VOBSUB, PGS, SUB, itp.)",
|
"OnlyImageFormats": "Tylko Formaty Graficzne (VOBSUB, PGS, SUB)",
|
||||||
"OptionAdminUsers": "Administratorzy",
|
"OptionAdminUsers": "Administratorzy",
|
||||||
"OptionAlbumArtist": "Wykonawca albumu",
|
"OptionAlbumArtist": "Wykonawca albumu",
|
||||||
"OptionAllUsers": "Wszyscy użytkownicy",
|
"OptionAllUsers": "Wszyscy użytkownicy",
|
||||||
|
@ -1100,7 +1100,7 @@
|
||||||
"OptionWeekly": "Cotygodniowo",
|
"OptionWeekly": "Cotygodniowo",
|
||||||
"OriginalAirDateValue": "Data pierwszej emisji: {0}",
|
"OriginalAirDateValue": "Data pierwszej emisji: {0}",
|
||||||
"Overview": "Opis",
|
"Overview": "Opis",
|
||||||
"PackageInstallCancelled": "Instalacja {0} anulowana.",
|
"PackageInstallCancelled": "Instalacja {0} (wersja {1}) anulowana.",
|
||||||
"PackageInstallCompleted": "Instalacja {0} zakończona.",
|
"PackageInstallCompleted": "Instalacja {0} zakończona.",
|
||||||
"PackageInstallFailed": "Instalacja {0} nieudana.",
|
"PackageInstallFailed": "Instalacja {0} nieudana.",
|
||||||
"ParentalRating": "Kategoria wiekowa",
|
"ParentalRating": "Kategoria wiekowa",
|
||||||
|
@ -1470,5 +1470,18 @@
|
||||||
"EnableFastImageFadeIn": "Szybkie pojawianie się obrazów",
|
"EnableFastImageFadeIn": "Szybkie pojawianie się obrazów",
|
||||||
"Artist": "Artysta",
|
"Artist": "Artysta",
|
||||||
"AlbumArtist": "Album artysty",
|
"AlbumArtist": "Album artysty",
|
||||||
"Album": "Album"
|
"Album": "Album",
|
||||||
|
"Person": "Osoba",
|
||||||
|
"OtherArtist": "Inny artysta",
|
||||||
|
"Movie": "Film",
|
||||||
|
"MessageUnauthorizedUser": "Nie masz dostępu do zasobów serwera. Skontaktuj się z administratorem sieci, aby uzyskać więcej informacji.",
|
||||||
|
"LabelLibraryPageSizeHelp": "Ustaw liczbę pozycji pokazywanych na stronie biblioteki. Ustaw 0, aby wyłączyć podział na strony.",
|
||||||
|
"LabelLibraryPageSize": "Rozmiar strony biblioteki:",
|
||||||
|
"LabelDeinterlaceMethod": "Metoda usuwania przeplotu:",
|
||||||
|
"HeaderFavoritePlaylists": "Ulubione Playlisty",
|
||||||
|
"Episode": "Odcinek",
|
||||||
|
"DeinterlaceMethodHelp": "Wybierz metodę usuwania przeplotu używaną podczas transkodowania.",
|
||||||
|
"ClientSettings": "Ustawienia klienta",
|
||||||
|
"ButtonTogglePlaylist": "Playlista",
|
||||||
|
"ButtonToggleContextMenu": "Więcej"
|
||||||
}
|
}
|
||||||
|
|
|
@ -182,7 +182,7 @@
|
||||||
"DisplayInOtherHomeScreenSections": "Exibir nas seções da tela inicial como mídia recente e continuar assistindo",
|
"DisplayInOtherHomeScreenSections": "Exibir nas seções da tela inicial como mídia recente e continuar assistindo",
|
||||||
"DisplayMissingEpisodesWithinSeasons": "Exibir episódios em falta nas temporadas",
|
"DisplayMissingEpisodesWithinSeasons": "Exibir episódios em falta nas temporadas",
|
||||||
"DisplayMissingEpisodesWithinSeasonsHelp": "Isto também deve ser ativado para as bibliotecas de TV na configuração do servidor.",
|
"DisplayMissingEpisodesWithinSeasonsHelp": "Isto também deve ser ativado para as bibliotecas de TV na configuração do servidor.",
|
||||||
"DisplayModeHelp": "Seleciona o tipo de tela para executar o Jellyfin.",
|
"DisplayModeHelp": "Selecione o estilo de layout que deseje para a interface.",
|
||||||
"DoNotRecord": "Não gravar",
|
"DoNotRecord": "Não gravar",
|
||||||
"Down": "Baixo",
|
"Down": "Baixo",
|
||||||
"DrmChannelsNotImported": "Canais com DRM não serão importados.",
|
"DrmChannelsNotImported": "Canais com DRM não serão importados.",
|
||||||
|
@ -626,7 +626,7 @@
|
||||||
"LabelKodiMetadataEnablePathSubstitution": "Ativar substituição de local",
|
"LabelKodiMetadataEnablePathSubstitution": "Ativar substituição de local",
|
||||||
"LabelKodiMetadataEnablePathSubstitutionHelp": "Ativa a substituição do local das imagens usando as configurações de substituição de local do servidor.",
|
"LabelKodiMetadataEnablePathSubstitutionHelp": "Ativa a substituição do local das imagens usando as configurações de substituição de local do servidor.",
|
||||||
"LabelKodiMetadataSaveImagePaths": "Salvar o local das imagens dentro dos arquivos nfo",
|
"LabelKodiMetadataSaveImagePaths": "Salvar o local das imagens dentro dos arquivos nfo",
|
||||||
"LabelKodiMetadataSaveImagePathsHelp": "Isto é recomendado se os nomes dos arquivos de imagem não estão de acordo com as recomendações do Kodi.",
|
"LabelKodiMetadataSaveImagePathsHelp": "Isto é recomendado se os nomes dos arquivos de imagem não estão de acordo com as exigências do Kodi.",
|
||||||
"LabelKodiMetadataUser": "Salvar informações do que o usuário assiste aos NFO's para:",
|
"LabelKodiMetadataUser": "Salvar informações do que o usuário assiste aos NFO's para:",
|
||||||
"LabelKodiMetadataUserHelp": "Salva os dados para arquivos NFO para que outras aplicações possam usar.",
|
"LabelKodiMetadataUserHelp": "Salva os dados para arquivos NFO para que outras aplicações possam usar.",
|
||||||
"LabelLanNetworks": "Redes LAN:",
|
"LabelLanNetworks": "Redes LAN:",
|
||||||
|
@ -1021,7 +1021,7 @@
|
||||||
"OptionMissingEpisode": "Episódios em Falta",
|
"OptionMissingEpisode": "Episódios em Falta",
|
||||||
"OptionMonday": "Segunda-feira",
|
"OptionMonday": "Segunda-feira",
|
||||||
"OptionNameSort": "Nome",
|
"OptionNameSort": "Nome",
|
||||||
"OptionNew": "Novo...",
|
"OptionNew": "Novo…",
|
||||||
"OptionNone": "Nenhum",
|
"OptionNone": "Nenhum",
|
||||||
"OptionOnAppStartup": "Ao iniciar a aplicação",
|
"OptionOnAppStartup": "Ao iniciar a aplicação",
|
||||||
"OptionOnInterval": "Em um intervalo",
|
"OptionOnInterval": "Em um intervalo",
|
||||||
|
@ -1503,5 +1503,9 @@
|
||||||
"UnsupportedPlayback": "O Jellyfin não pode descriptografar conteúdo protegido por DRM, porém mesmo assim fará uma tentativa para todo tipo de conteúdo, incluindo títulos protegidos. A imagem de alguns arquivos pode aparecer completamente preta devido a criptografia ou outros recursos não suportados, como títulos interativos.",
|
"UnsupportedPlayback": "O Jellyfin não pode descriptografar conteúdo protegido por DRM, porém mesmo assim fará uma tentativa para todo tipo de conteúdo, incluindo títulos protegidos. A imagem de alguns arquivos pode aparecer completamente preta devido a criptografia ou outros recursos não suportados, como títulos interativos.",
|
||||||
"MessageUnauthorizedUser": "Você não está autorizado a acessar o servidor neste momento. Por favor, contate o administrador do servidor para mais informações.",
|
"MessageUnauthorizedUser": "Você não está autorizado a acessar o servidor neste momento. Por favor, contate o administrador do servidor para mais informações.",
|
||||||
"ButtonTogglePlaylist": "Playlist",
|
"ButtonTogglePlaylist": "Playlist",
|
||||||
"ButtonToggleContextMenu": "Mais"
|
"ButtonToggleContextMenu": "Mais",
|
||||||
|
"Filter": "Filtro",
|
||||||
|
"New": "Novo",
|
||||||
|
"HeaderFavoritePlaylists": "Playlists Favoritas",
|
||||||
|
"ApiKeysCaption": "Lista de chaves API ativadas no momento"
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,7 +249,7 @@
|
||||||
"ButtonStop": "Stop",
|
"ButtonStop": "Stop",
|
||||||
"ButtonSubmit": "Trimite",
|
"ButtonSubmit": "Trimite",
|
||||||
"Collections": "Colecții",
|
"Collections": "Colecții",
|
||||||
"AllowRemoteAccess": "Permite conexiuni externe către serverul Jellyfin.",
|
"AllowRemoteAccess": "Permite conexiuni externe către acest server Jellyfin.",
|
||||||
"AllowRemoteAccessHelp": "Dacă este nebifat, toate conexiunile externe vor fi blocate.",
|
"AllowRemoteAccessHelp": "Dacă este nebifat, toate conexiunile externe vor fi blocate.",
|
||||||
"AlwaysPlaySubtitles": "Întotdeauna arată",
|
"AlwaysPlaySubtitles": "Întotdeauna arată",
|
||||||
"AnyLanguage": "Orice Limbă",
|
"AnyLanguage": "Orice Limbă",
|
||||||
|
@ -288,7 +288,7 @@
|
||||||
"Director": "Regizor",
|
"Director": "Regizor",
|
||||||
"AllowOnTheFlySubtitleExtractionHelp": "Subtitrările încorporate pot fi extrase din video și transmise către client în mod text pentru a preveni transcodarea videoului. Pe unele sisteme acest lucru poate dura mult timp și poate cauza oprirea redării video în timpul procesului de extragere. Dezactivează opțiunea pentru a avea subtitrările încorporate incluse în videoul transcodat atunci când nu sunt nativ suportate de către dispozitivul client.",
|
"AllowOnTheFlySubtitleExtractionHelp": "Subtitrările încorporate pot fi extrase din video și transmise către client în mod text pentru a preveni transcodarea videoului. Pe unele sisteme acest lucru poate dura mult timp și poate cauza oprirea redării video în timpul procesului de extragere. Dezactivează opțiunea pentru a avea subtitrările încorporate incluse în videoul transcodat atunci când nu sunt nativ suportate de către dispozitivul client.",
|
||||||
"BirthLocation": "Locul nașterii",
|
"BirthLocation": "Locul nașterii",
|
||||||
"BurnSubtitlesHelp": "Determină dacă serverul ar trebui să includă subtitrări când face transcodarea video. Evitând acest lucru va îmbunătăți performanța serverului. Selectează Auto pentru includerea formaturilor bazate pe imagini (VOBSUB, PGS, SUB, IDX) și anumitor subtitrări ASS sau SSA.",
|
"BurnSubtitlesHelp": "Determină dacă serverul ar trebui să includă subtitrări când face transcodarea video. Evitând acest lucru va îmbunătăți performanța serverului. Selectează Auto pentru includerea formaturilor bazate pe imagini (VOBSUB, PGS, SUB, IDX, ...) și anumitor subtitrări ASS sau SSA.",
|
||||||
"ButtonPreviousTrack": "Calea anterioară",
|
"ButtonPreviousTrack": "Calea anterioară",
|
||||||
"ButtonRevoke": "Revocă",
|
"ButtonRevoke": "Revocă",
|
||||||
"ButtonSettings": "Setări",
|
"ButtonSettings": "Setări",
|
||||||
|
@ -304,14 +304,14 @@
|
||||||
"Delete": "Șterge",
|
"Delete": "Șterge",
|
||||||
"DeleteImage": "Șterge Imaginea",
|
"DeleteImage": "Șterge Imaginea",
|
||||||
"DeleteUserConfirmation": "Sigur doriți să ștergeți acest utilizator?",
|
"DeleteUserConfirmation": "Sigur doriți să ștergeți acest utilizator?",
|
||||||
"Depressed": "Depresat",
|
"Depressed": "Deprimat",
|
||||||
"Descending": "Descendent",
|
"Descending": "Descendent",
|
||||||
"DetectingDevices": "Detectez dispozitive",
|
"DetectingDevices": "Detectez dispozitive",
|
||||||
"DirectPlaying": "Redare directă",
|
"DirectPlaying": "Redare directă",
|
||||||
"DirectStreamHelp2": "Transmiterea directă a unui fișier utilizează foarte puțină putere de procesare fără pierderi în calitatea video.",
|
"DirectStreamHelp2": "Transmiterea directă a unui fișier utilizează foarte puțină putere de procesare fără pierderi în calitatea video.",
|
||||||
"DirectStreaming": "Transmitere directă",
|
"DirectStreaming": "Transmitere directă",
|
||||||
"Artists": "Artiști",
|
"Artists": "Artiști",
|
||||||
"BookLibraryHelp": "Cărți audio și text sunt suportate. Verifică {0}ghidul numirii cărților{1}.",
|
"BookLibraryHelp": "Cărți audio și text sunt suportate. Verifică {0} ghidul numirii cărților{1}.",
|
||||||
"ButtonAddImage": "Adaugă Imagine",
|
"ButtonAddImage": "Adaugă Imagine",
|
||||||
"ButtonArrowUp": "Sus",
|
"ButtonArrowUp": "Sus",
|
||||||
"ButtonAudioTracks": "Cale Audio",
|
"ButtonAudioTracks": "Cale Audio",
|
||||||
|
@ -511,7 +511,7 @@
|
||||||
"GuestStar": "Vedeta invitata",
|
"GuestStar": "Vedeta invitata",
|
||||||
"GuideProviderSelectListings": "Selectați Listări",
|
"GuideProviderSelectListings": "Selectați Listări",
|
||||||
"EncoderPresetHelp": "Alegeți o valoare mai rapidă pentru a îmbunătăți performanța sau o valoare mai lentă pentru a îmbunătăți calitatea.",
|
"EncoderPresetHelp": "Alegeți o valoare mai rapidă pentru a îmbunătăți performanța sau o valoare mai lentă pentru a îmbunătăți calitatea.",
|
||||||
"HardwareAccelerationWarning": "Activarea accelerării hardware poate provoca instabilitate în anumite medii. Asigurați-vă că sistemul de operare și driverele video sunt complet actualizate. Dacă întâmpinați dificultăți pentru a reda video după activarea acestei opțiuni, va trebui să schimbați setarea la Nimic.",
|
"HardwareAccelerationWarning": "Activarea accelerării hardware poate provoca instabilitate în anumite medii. Asigurați-vă că sistemul de operare și driverele video sunt complet actualizate. Dacă întâmpinați dificultăți pentru a reda video după activarea acestei opțiuni, va trebui să schimbați setarea la inapoi la Nimic.",
|
||||||
"HeaderAccessSchedule": "Program de Acces",
|
"HeaderAccessSchedule": "Program de Acces",
|
||||||
"HeaderAccessScheduleHelp": "Creați un program de acces pentru a limita accesul la anumite ore.",
|
"HeaderAccessScheduleHelp": "Creați un program de acces pentru a limita accesul la anumite ore.",
|
||||||
"HeaderActiveDevices": "Dispozitive active",
|
"HeaderActiveDevices": "Dispozitive active",
|
||||||
|
@ -1334,7 +1334,7 @@
|
||||||
"OptionOnInterval": "La un interval",
|
"OptionOnInterval": "La un interval",
|
||||||
"OptionOnAppStartup": "La pornirea aplicației",
|
"OptionOnAppStartup": "La pornirea aplicației",
|
||||||
"OptionNone": "Nici unul",
|
"OptionNone": "Nici unul",
|
||||||
"OptionNew": "Nou...",
|
"OptionNew": "Nou…",
|
||||||
"OptionMissingEpisode": "Episoade lipsă",
|
"OptionMissingEpisode": "Episoade lipsă",
|
||||||
"OptionMax": "Max",
|
"OptionMax": "Max",
|
||||||
"OptionLoginAttemptsBeforeLockoutHelp": "O valoare zero înseamnă că va moșteni valoarea implicită de trei încercări pentru utilizatorii normali și cinci pentru administratori. Setarea acestei opțiuni la -1 va dezactiva funcția.",
|
"OptionLoginAttemptsBeforeLockoutHelp": "O valoare zero înseamnă că va moșteni valoarea implicită de trei încercări pentru utilizatorii normali și cinci pentru administratori. Setarea acestei opțiuni la -1 va dezactiva funcția.",
|
||||||
|
@ -1359,9 +1359,9 @@
|
||||||
"OptionEnableExternalContentInSuggestions": "Activați conținut extern în sugestii",
|
"OptionEnableExternalContentInSuggestions": "Activați conținut extern în sugestii",
|
||||||
"OptionEmbedSubtitles": "Inclus în container",
|
"OptionEmbedSubtitles": "Inclus în container",
|
||||||
"OptionDownloadLogoImage": "Siglă",
|
"OptionDownloadLogoImage": "Siglă",
|
||||||
"OptionDownloadImagesInAdvanceHelp": "În mod implicit, majoritatea imaginilor sunt descărcate numai la cererea unei aplicații din Jellyfin. Activați această opțiune pentru a descărca în prealabil toate imaginile, în timp ce fișierele media noi sunt importate. Acest lucru poate provoca scanări ale bibliotecii semnificativ mai lungi.",
|
"OptionDownloadImagesInAdvanceHelp": "În mod implicit, majoritatea imaginilor sunt descărcate numai la cererea unei aplicații din Jellyfin. Activați această opțiune pentru a descărca în prealabil toate imaginile, pe măsură ce fișierele media sunt importate. Acest lucru poate provoca scanări ale bibliotecii semnificativ mai lungi.",
|
||||||
"OptionDownloadImagesInAdvance": "Descărcați imaginile în avans",
|
"OptionDownloadImagesInAdvance": "Descărcați imaginile în avans",
|
||||||
"OptionDownloadDiscImage": "Placă",
|
"OptionDownloadDiscImage": "Disc",
|
||||||
"OptionDisplayFolderViewHelp": "Afișați dosarele alături de celelalte biblioteci media. Acest lucru poate fi util dacă doriți să aveți o vizualizare direct în dosar.",
|
"OptionDisplayFolderViewHelp": "Afișați dosarele alături de celelalte biblioteci media. Acest lucru poate fi util dacă doriți să aveți o vizualizare direct în dosar.",
|
||||||
"OptionDisplayFolderView": "Afișați o vizualizare de dosar pentru a afișa dosarele media simple",
|
"OptionDisplayFolderView": "Afișați o vizualizare de dosar pentru a afișa dosarele media simple",
|
||||||
"OptionDateAddedImportTime": "Utilizați data scanării în bibliotecă",
|
"OptionDateAddedImportTime": "Utilizați data scanării în bibliotecă",
|
||||||
|
@ -1465,8 +1465,8 @@
|
||||||
"NoCreatedLibraries": "Se pare că nu ați creat încă biblioteci. {0} Doriți să creați una acum? {1}",
|
"NoCreatedLibraries": "Se pare că nu ați creat încă biblioteci. {0} Doriți să creați una acum? {1}",
|
||||||
"AskAdminToCreateLibrary": "Cereți unui administrator să creeze o bibliotecă.",
|
"AskAdminToCreateLibrary": "Cereți unui administrator să creeze o bibliotecă.",
|
||||||
"PlaybackErrorNoCompatibleStream": "Clientul nu este compatibil cu formatul media, iar serverul nu trimite un format media compatibil.",
|
"PlaybackErrorNoCompatibleStream": "Clientul nu este compatibil cu formatul media, iar serverul nu trimite un format media compatibil.",
|
||||||
"AllowFfmpegThrottlingHelp": "Când un transcod sau un remux se află destul de departe înainte de poziția actuală de redare, întrerupeți procesul, astfel încât să consume mai puține resurse. Acest lucru este cel mai util când priviți fără a derula des. Dezactivați acestă opțiune dacă întâmpinați probleme de redare.",
|
"AllowFfmpegThrottlingHelp": "Când un transcod sau un remux se află destul de departe înainte de poziția actuală de redare, întrerupeți procesul, astfel încât să consume mai puține resurse. Acest lucru este util atunci când priviți fără a derula des. Dezactivați acestă opțiune dacă întâmpinați probleme de redare.",
|
||||||
"AllowFfmpegThrottling": "Accelerare Transcod-uri",
|
"AllowFfmpegThrottling": "Limitare Transcod-uri",
|
||||||
"Track": "Cale",
|
"Track": "Cale",
|
||||||
"Season": "Sezon",
|
"Season": "Sezon",
|
||||||
"ReleaseGroup": "Gruparea lansării",
|
"ReleaseGroup": "Gruparea lansării",
|
||||||
|
@ -1493,7 +1493,7 @@
|
||||||
"ListPaging": "{0}-{1} din {2}",
|
"ListPaging": "{0}-{1} din {2}",
|
||||||
"WriteAccessRequired": "Jellyfin Server necesită acces de scriere la acest folder. Vă rugăm să vă asigurați accesul la scriere și încercați din nou.",
|
"WriteAccessRequired": "Jellyfin Server necesită acces de scriere la acest folder. Vă rugăm să vă asigurați accesul la scriere și încercați din nou.",
|
||||||
"PathNotFound": "Calea nu a fost găsită. Vă rugăm să vă asigurați de validitatea căii și încercați din nou.",
|
"PathNotFound": "Calea nu a fost găsită. Vă rugăm să vă asigurați de validitatea căii și încercați din nou.",
|
||||||
"YadifBob": "YADIF Bob",
|
"YadifBob": "Gigi Bob",
|
||||||
"Yadif": "YADIF",
|
"Yadif": "YADIF",
|
||||||
"LabelDeinterlaceMethod": "Metoda de intercalare:",
|
"LabelDeinterlaceMethod": "Metoda de intercalare:",
|
||||||
"DeinterlaceMethodHelp": "Selectați metoda de intercalat pe care să o utilizați la transcodarea conținutului intercalat.",
|
"DeinterlaceMethodHelp": "Selectați metoda de intercalat pe care să o utilizați la transcodarea conținutului intercalat.",
|
||||||
|
@ -1505,5 +1505,6 @@
|
||||||
"ButtonToggleContextMenu": "Mai mult",
|
"ButtonToggleContextMenu": "Mai mult",
|
||||||
"Filter": "Filtru",
|
"Filter": "Filtru",
|
||||||
"New": "Nou",
|
"New": "Nou",
|
||||||
"HeaderFavoritePlaylists": "Listă Favorită"
|
"HeaderFavoritePlaylists": "Listă Favorită",
|
||||||
|
"ApiKeysCaption": "Lista cheilor API active"
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"Albums": "Albumy",
|
"Albums": "Albumy",
|
||||||
"All": "Všetko",
|
"All": "Všetko",
|
||||||
"AllChannels": "Všetky kanály",
|
"AllChannels": "Všetky kanály",
|
||||||
"AllComplexFormats": "Všetky komplexné formáty (ASS, SSA, VOBSUB, PGS, SUB, IDX)",
|
"AllComplexFormats": "Všetky komplexné formáty (ASS, SSA, VOBSUB, PGS, SUB, IDX, …)",
|
||||||
"AllEpisodes": "Všetky epizódy",
|
"AllEpisodes": "Všetky epizódy",
|
||||||
"AllLanguages": "Všetky jazyky",
|
"AllLanguages": "Všetky jazyky",
|
||||||
"AllLibraries": "Všetky knižnice",
|
"AllLibraries": "Všetky knižnice",
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
"BirthDateValue": "Narodený/á: {0}",
|
"BirthDateValue": "Narodený/á: {0}",
|
||||||
"BirthLocation": "Miesto narodenia",
|
"BirthLocation": "Miesto narodenia",
|
||||||
"BirthPlaceValue": "Miesto narodenia: {0}",
|
"BirthPlaceValue": "Miesto narodenia: {0}",
|
||||||
"BookLibraryHelp": "Audioknihy a učebnice sú podporované. Prečítajte si {0}pravidlá pre názvy kníh v Jellyfine{1}.",
|
"BookLibraryHelp": "Audioknihy a učebnice sú podporované. Prečítajte si {0} pravidlá pre názvy kníh v Jellyfine {1}.",
|
||||||
"Books": "Knihy",
|
"Books": "Knihy",
|
||||||
"ButtonAdd": "Pridať",
|
"ButtonAdd": "Pridať",
|
||||||
"ButtonAddMediaLibrary": "Pridať knižnicu médií",
|
"ButtonAddMediaLibrary": "Pridať knižnicu médií",
|
||||||
|
@ -648,7 +648,7 @@
|
||||||
"OptionMissingEpisode": "Chýbajúce epizódy",
|
"OptionMissingEpisode": "Chýbajúce epizódy",
|
||||||
"OptionMonday": "Pondelok",
|
"OptionMonday": "Pondelok",
|
||||||
"OptionNameSort": "Názov",
|
"OptionNameSort": "Názov",
|
||||||
"OptionNew": "Nové...",
|
"OptionNew": "Nové…",
|
||||||
"OptionNone": "Žiadne",
|
"OptionNone": "Žiadne",
|
||||||
"OptionOnAppStartup": "Pri spustení aplikácie",
|
"OptionOnAppStartup": "Pri spustení aplikácie",
|
||||||
"OptionParentalRating": "Rodičovské hodnotenie",
|
"OptionParentalRating": "Rodičovské hodnotenie",
|
||||||
|
@ -1180,7 +1180,7 @@
|
||||||
"CancelSeries": "Ukončiť seriál",
|
"CancelSeries": "Ukončiť seriál",
|
||||||
"ButtonSplit": "Rozdeliť",
|
"ButtonSplit": "Rozdeliť",
|
||||||
"ButtonAddImage": "Pridať obrázok",
|
"ButtonAddImage": "Pridať obrázok",
|
||||||
"BurnSubtitlesHelp": "Určuje, či má server vpáliť titulky počas transkódovania videa. Vynechanie tejto možnosti výrazne zvýši výkon. Vyberte možnosť Auto, pokiaľ chcete vpáliť do obrazu titulky v grafickom formáte (VOBSUB, PGS, SUB, IDX) a niektoré ASS alebo SSA titulky.",
|
"BurnSubtitlesHelp": "Určuje, či má server vpáliť titulky počas transkódovania videa. Vynechanie tejto možnosti výrazne zvýši výkon. Vyberte možnosť Auto, pokiaľ chcete vpáliť do obrazu titulky v grafickom formáte (VOBSUB, PGS, SUB, IDX, …) a niektoré ASS alebo SSA titulky.",
|
||||||
"BrowsePluginCatalogMessage": "Prehliadnite si náš katalóg dostupných zásuvných modulov.",
|
"BrowsePluginCatalogMessage": "Prehliadnite si náš katalóg dostupných zásuvných modulov.",
|
||||||
"Browse": "Prechádzať",
|
"Browse": "Prechádzať",
|
||||||
"Blacklist": "Blacklist",
|
"Blacklist": "Blacklist",
|
||||||
|
@ -1189,7 +1189,7 @@
|
||||||
"Art": "Umenie",
|
"Art": "Umenie",
|
||||||
"AlwaysPlaySubtitlesHelp": "Titulky odpovedajúce jazykovej preferencií sa načítajú bez ohľadu na jazyk zvuku.",
|
"AlwaysPlaySubtitlesHelp": "Titulky odpovedajúce jazykovej preferencií sa načítajú bez ohľadu na jazyk zvuku.",
|
||||||
"AllowedRemoteAddressesHelp": "Zoznam IP adries alebo IP/netmask záznamov pre siete oddelené čiarkami z ktorých sa dá vzdialene pripojiť. Pokiaľ zoznam bude prázdny, všetky adresy budú povolené.",
|
"AllowedRemoteAddressesHelp": "Zoznam IP adries alebo IP/netmask záznamov pre siete oddelené čiarkami z ktorých sa dá vzdialene pripojiť. Pokiaľ zoznam bude prázdny, všetky adresy budú povolené.",
|
||||||
"AllowOnTheFlySubtitleExtractionHelp": "Vložené titulky môžu byť extrahované z videa a prenesené na klienta vo forme jednoduchého textu aby sa zabránilo transkódovaniu videa. Na niektorých systémoch táto operácia môže trvať dlhší čas a a spôsobiť sekanie videa počas počas extrahovania. Vypnutie tejto funkcie bude mať za následok, že titulky budú počas transkódovania vypálené do samotného videa pokiaľ klientské zariadenie natívne nepodporuje ich formát.",
|
"AllowOnTheFlySubtitleExtractionHelp": "Vložené titulky môžu byť extrahované z videa a prenesené na klienta vo forme jednoduchého textu, aby sa zabránilo transkódovaniu videa. Na niektorých systémoch táto operácia môže trvať dlhší čas a a spôsobiť sekanie videa počas počas extrahovania. Vypnutie tejto funkcie bude mať za následok, že titulky budú počas transkódovania vypálené do samotného videa pokiaľ klientské zariadenie natívne nepodporuje ich formát.",
|
||||||
"Watched": "Pozreté",
|
"Watched": "Pozreté",
|
||||||
"TvLibraryHelp": "Pozrite sa na {0}sprievodcu pomenovania TV programov{1}.",
|
"TvLibraryHelp": "Pozrite sa na {0}sprievodcu pomenovania TV programov{1}.",
|
||||||
"LabelLineup": "Lineup:",
|
"LabelLineup": "Lineup:",
|
||||||
|
@ -1507,5 +1507,6 @@
|
||||||
"New": "Nové",
|
"New": "Nové",
|
||||||
"HeaderFavoritePlaylists": "Obľúbené playlisty",
|
"HeaderFavoritePlaylists": "Obľúbené playlisty",
|
||||||
"ButtonTogglePlaylist": "Playlist",
|
"ButtonTogglePlaylist": "Playlist",
|
||||||
"ButtonToggleContextMenu": "Viac"
|
"ButtonToggleContextMenu": "Viac",
|
||||||
|
"ApiKeysCaption": "Zoznam v súčasnosti povolených API kľúčov"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"AccessRestrictedTryAgainLater": "För närvarande är åtkomsten begränsad. Försök igen senare.",
|
"AccessRestrictedTryAgainLater": "För närvarande är åtkomsten begränsad. Försök igen senare.",
|
||||||
"Actor": "Skådespelare",
|
"Actor": "Skådespelare",
|
||||||
"Add": "Lägg till",
|
"Add": "Lägg till",
|
||||||
"AddItemToCollectionHelp": "Lägg till objekt i samlingar genom att söka efter dem och använda deras högerklick- eller knackmeny",
|
"AddItemToCollectionHelp": "Lägg till objekt i samlingar genom att söka efter dem och använda deras högerklick- eller pekmeny för att lägga till dem i en samling.",
|
||||||
"AddToCollection": "Lägg till i samling",
|
"AddToCollection": "Lägg till i samling",
|
||||||
"AddToPlayQueue": "Lägg till i spelkö",
|
"AddToPlayQueue": "Lägg till i spelkö",
|
||||||
"AddToPlaylist": "Lägg till i spellista",
|
"AddToPlaylist": "Lägg till i spellista",
|
||||||
|
@ -898,7 +898,7 @@
|
||||||
"NumLocationsValue": "{0} mappar",
|
"NumLocationsValue": "{0} mappar",
|
||||||
"Off": "Av",
|
"Off": "Av",
|
||||||
"OneChannel": "En kanal",
|
"OneChannel": "En kanal",
|
||||||
"OnlyForcedSubtitles": "Endast tvingande undertexter",
|
"OnlyForcedSubtitles": "Endast påtvingad",
|
||||||
"OnlyForcedSubtitlesHelp": "Endast undertexter markerade som tvingande kommer att laddas.",
|
"OnlyForcedSubtitlesHelp": "Endast undertexter markerade som tvingande kommer att laddas.",
|
||||||
"OnlyImageFormats": "Endast bildbaserade format (VOBSUB, PGS, SUB, etc)",
|
"OnlyImageFormats": "Endast bildbaserade format (VOBSUB, PGS, SUB, etc)",
|
||||||
"OptionAdminUsers": "Administratörer",
|
"OptionAdminUsers": "Administratörer",
|
||||||
|
@ -1492,5 +1492,20 @@
|
||||||
"Artist": "Artist",
|
"Artist": "Artist",
|
||||||
"ButtonTogglePlaylist": "Spellista",
|
"ButtonTogglePlaylist": "Spellista",
|
||||||
"ButtonToggleContextMenu": "Mer",
|
"ButtonToggleContextMenu": "Mer",
|
||||||
"AlbumArtist": "Albumartist"
|
"AlbumArtist": "Albumartist",
|
||||||
|
"LabelLibraryPageSize": "Bibliotekets sidstorlek:",
|
||||||
|
"LabelDeinterlaceMethod": "Deinterlacing-metod:",
|
||||||
|
"WeeklyAt": "{0}s vid {1}",
|
||||||
|
"LastSeen": "Senast sedd {0}",
|
||||||
|
"YadifBob": "YADIF Bob",
|
||||||
|
"Yadif": "YADIF",
|
||||||
|
"Filter": "Filter",
|
||||||
|
"New": "Ny",
|
||||||
|
"MessageUnauthorizedUser": "Du har inte behörighet att komma åt servern just nu. Kontakta din serveradministratör för mer information.",
|
||||||
|
"HeaderFavoritePlaylists": "Favoritspellista",
|
||||||
|
"OnWakeFromSleep": "Vid start från vilande läge",
|
||||||
|
"UnsupportedPlayback": "Jellyfin kan inte dekryptera inehåll skyddat av DRM men allt inehåll kommer ändå försökas, även skyddade titlar. Vissa filer kan se helt svart ut på grund av kryptering eller andra funktioner som inte stöds, till exempel interaktiva titlar.",
|
||||||
|
"LabelLibraryPageSizeHelp": "Sätter en begränsad sidstorlek i bibliotek. Sätt 0 för att avaktivera begränsad sidstorlek.",
|
||||||
|
"ApiKeysCaption": "Lista av aktiva API-nycklar",
|
||||||
|
"DeinterlaceMethodHelp": "Välj metod för borttagning av inflätning vid konvertering av inflätat inehåll."
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,17 +93,17 @@
|
||||||
"ValueSeriesCount": "{0} серій",
|
"ValueSeriesCount": "{0} серій",
|
||||||
"ValueSongCount": "{0} пісень",
|
"ValueSongCount": "{0} пісень",
|
||||||
"AddToPlaylist": "Додати до списку відтворення",
|
"AddToPlaylist": "Додати до списку відтворення",
|
||||||
"AccessRestrictedTryAgainLater": "На даний момент доступ заборонений. Будь ласка спробуйте пізніше.",
|
"AccessRestrictedTryAgainLater": "На цей момент доступ заборонений. Повторіть спробу пізніше.",
|
||||||
"Actor": "Виконавець",
|
"Actor": "Виконавець",
|
||||||
"AllLanguages": "Всі мови",
|
"AllLanguages": "Усі мови",
|
||||||
"AllLibraries": "Всі бібліотеки",
|
"AllLibraries": "Усі бібліотеки",
|
||||||
"AddToCollection": "Додати до колекції",
|
"AddToCollection": "Додати до колекції",
|
||||||
"AddToPlayQueue": "Додати до черги відтворення",
|
"AddToPlayQueue": "Додати до черги відтворення",
|
||||||
"All": "Всі",
|
"All": "Всі",
|
||||||
"AllChannels": "Всі канали",
|
"AllChannels": "Всі канали",
|
||||||
"AllEpisodes": "Всі епізоди",
|
"AllEpisodes": "Всі епізоди",
|
||||||
"AllowRemoteAccess": "Дозволити віддалене підключення до цього сервера Jellyfin.",
|
"AllowRemoteAccess": "Дозволити віддалене підключення до цього сервера Jellyfin.",
|
||||||
"AlwaysPlaySubtitles": "Завжди відтворювати субтитри",
|
"AlwaysPlaySubtitles": "Завжди вмикати субтитри",
|
||||||
"AnyLanguage": "Будь-яка мова",
|
"AnyLanguage": "Будь-яка мова",
|
||||||
"Anytime": "Завжди",
|
"Anytime": "Завжди",
|
||||||
"Add": "Додати",
|
"Add": "Додати",
|
||||||
|
@ -136,5 +136,28 @@
|
||||||
"Alerts": "Термінові сповіщення",
|
"Alerts": "Термінові сповіщення",
|
||||||
"AlbumArtist": "Виконавець альбому",
|
"AlbumArtist": "Виконавець альбому",
|
||||||
"Album": "Альбом",
|
"Album": "Альбом",
|
||||||
"AdditionalNotificationServices": "Пошук у каталозі плагінів для встановлення додаткових сервісів сповіщень."
|
"AdditionalNotificationServices": "Пошук у каталозі плагінів для встановлення додаткових сервісів сповіщень.",
|
||||||
|
"ShowYear": "Відобразити рік",
|
||||||
|
"ShowTitle": "Відобразити назву",
|
||||||
|
"Raised": "Піднятий",
|
||||||
|
"OptionResElement": "кожний елемент",
|
||||||
|
"DropShadow": "Тінь",
|
||||||
|
"Blacklist": "Чорний список",
|
||||||
|
"BirthLocation": "Місце народження",
|
||||||
|
"Banner": "Обкладинка",
|
||||||
|
"AutoBasedOnLanguageSetting": "Автоматично (на основі поточної мови)",
|
||||||
|
"Auto": "Автоматично",
|
||||||
|
"AuthProviderHelp": "Оберіть сервіс аутентифікації, який буде використаний з поточним паролем користувача.",
|
||||||
|
"Audio": "Аудіо",
|
||||||
|
"AttributeNew": "Новий",
|
||||||
|
"AspectRatio": "Відношення сторін",
|
||||||
|
"AskAdminToCreateLibrary": "Попросіть адміністратора створити бібліотеку.",
|
||||||
|
"Ascending": "У порядку зростання",
|
||||||
|
"AsManyAsPossible": "Настільки багато наскільки можливо",
|
||||||
|
"Artist": "Виконавець",
|
||||||
|
"Art": "Мистецтво",
|
||||||
|
"AllowOnTheFlySubtitleExtractionHelp": "Вбудовані субтитри можуть бути експортовані з відео і надіслані, по черзі, клієнтам у вигляді тексту. Це допоможе уникнути перекодування відео. На деяких системах, перекодування може зайняти тривалий час і зупинити відтворення відео, для того щоб забезпечити експортування. Вимкнення цієї функції дозволить вбудованим субтитрам бути інтегрованим у відео, під час перекодування, якщо вбудовані субтитри не підтримуються на стороні клієнта.",
|
||||||
|
"AllowOnTheFlySubtitleExtraction": "Дозволити експортування субтитрів «на льоту»",
|
||||||
|
"AllowHWTranscodingHelp": "Дозволити клієнту перекодування на «на льоту». Це дозволить відмикати перекодування, якщо вона вимагається сервером.",
|
||||||
|
"AllComplexFormats": "Усі складні формати (ASS, SSA, VOBSUB, PGS, SUB, IDX, …)"
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,11 +167,11 @@
|
||||||
"ButtonAddScheduledTaskTrigger": "Thêm kích hoạt",
|
"ButtonAddScheduledTaskTrigger": "Thêm kích hoạt",
|
||||||
"ButtonAddMediaLibrary": "Thêm thư viện Media",
|
"ButtonAddMediaLibrary": "Thêm thư viện Media",
|
||||||
"ButtonAddImage": "Thêm hình ảnh",
|
"ButtonAddImage": "Thêm hình ảnh",
|
||||||
"BurnSubtitlesHelp": "Xác định xem máy chủ có nên ghi phụ đề khi chuyển đổi video hay không. Tránh thực hiện việc này sẽ cải thiện hiệu suất máy chủ đáng kể. Chọn Tự động để ghi các phụ đề có định dạng dựa trên hình ảnh (VOBSUB, PGS, SUB, IDX) và một vài phụ đề ASS/SSA nhất định.",
|
"BurnSubtitlesHelp": "Xác định xem máy chủ có nên ghi phụ đề khi chuyển đổi video hay không. Tránh thực hiện việc này sẽ cải thiện hiệu suất máy chủ đáng kể. Chọn Tự động để ghi các phụ đề có định dạng dựa trên hình ảnh (VOBSUB, PGS, SUB, IDX, ...) và một vài phụ đề ASS/SSA nhất định.",
|
||||||
"Browse": "Duyệt",
|
"Browse": "Duyệt",
|
||||||
"BoxRear": "Hộp (mặt sau)",
|
"BoxRear": "Hộp (mặt sau)",
|
||||||
"Books": "Sách",
|
"Books": "Sách",
|
||||||
"BookLibraryHelp": "Âm thanh và sách văn bản được hỗ trợ. Xem lại {0}hướng dẫn đặt tên sách{1}.",
|
"BookLibraryHelp": "Âm thanh và sách văn bản được hỗ trợ. Xem lại {0} hướng dẫn đặt tên sách {1}.",
|
||||||
"Blacklist": "Danh sách đen",
|
"Blacklist": "Danh sách đen",
|
||||||
"BirthPlaceValue": "Nơi sinh: {0}",
|
"BirthPlaceValue": "Nơi sinh: {0}",
|
||||||
"BirthLocation": "Nơi sinh",
|
"BirthLocation": "Nơi sinh",
|
||||||
|
@ -196,7 +196,7 @@
|
||||||
"AllowedRemoteAddressesHelp": "Danh sách địa chỉ IP được phân tách bằng dấu phẩy hoặc các mục IP/netmask cho các mạng sẽ được phép kết nối từ xa. Nếu để trống, tất cả các địa chỉ sẽ được cho phép.",
|
"AllowedRemoteAddressesHelp": "Danh sách địa chỉ IP được phân tách bằng dấu phẩy hoặc các mục IP/netmask cho các mạng sẽ được phép kết nối từ xa. Nếu để trống, tất cả các địa chỉ sẽ được cho phép.",
|
||||||
"AllowRemoteAccessHelp": "Nếu không được chọn, tất cả các kết nối từ xa sẽ bị chặn.",
|
"AllowRemoteAccessHelp": "Nếu không được chọn, tất cả các kết nối từ xa sẽ bị chặn.",
|
||||||
"AllowRemoteAccess": "Cho phép kết nối từ xa đến Máy chủ Jellyfin.",
|
"AllowRemoteAccess": "Cho phép kết nối từ xa đến Máy chủ Jellyfin.",
|
||||||
"AllowOnTheFlySubtitleExtractionHelp": "Phụ đề nhúng có thể được trích xuất từ video và dùng như văn bản thuần túy để giúp ngăn chặn chuyển mã video. Trên một số hệ thống, việc này có thể mất nhiều thời gian và khiến quá trình phát video bị đình trệ trong quá trình trích xuất. Vô hiệu hóa điều này để có phụ đề nhúng được ghi trong chuyển mã video khi chúng không được thiết bị khách hỗ trợ.",
|
"AllowOnTheFlySubtitleExtractionHelp": "Phụ đề nhúng có thể được trích xuất từ video và dùng như văn bản thuần túy để giúp ngăn chặn chuyển mã video. Trên một số hệ thống, việc này có thể mất nhiều thời gian và khiến quá trình phát video bị đình trệ trong quá trình trích xuất. Vô hiệu hóa điều này để có phụ đề nhúng được ghi trong video khi chuyển mã trong trường hợp chúng không được hỗ trợ trên thiết bị phát.",
|
||||||
"AllowOnTheFlySubtitleExtraction": "Cho phép trích xuất phụ đề trực tiếp",
|
"AllowOnTheFlySubtitleExtraction": "Cho phép trích xuất phụ đề trực tiếp",
|
||||||
"AllowMediaConversionHelp": "Cấp hoặc từ chối truy cập vào tính năng chuyển đổi media.",
|
"AllowMediaConversionHelp": "Cấp hoặc từ chối truy cập vào tính năng chuyển đổi media.",
|
||||||
"AllowMediaConversion": "Cho phép chuyển đổi media",
|
"AllowMediaConversion": "Cho phép chuyển đổi media",
|
||||||
|
@ -204,7 +204,7 @@
|
||||||
"AllLibraries": "Tất cả các thư viện",
|
"AllLibraries": "Tất cả các thư viện",
|
||||||
"AllLanguages": "Tất cả các ngôn ngữ",
|
"AllLanguages": "Tất cả các ngôn ngữ",
|
||||||
"AllEpisodes": "Tất cả các tập phim",
|
"AllEpisodes": "Tất cả các tập phim",
|
||||||
"AllComplexFormats": "Tất cả các định dạng phức tạp (ASS, SSA, VOBSUB, PGS, SUB, IDX)",
|
"AllComplexFormats": "Tất cả các định dạng phức tạp (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)",
|
||||||
"AllChannels": "Tất cả các kênh",
|
"AllChannels": "Tất cả các kênh",
|
||||||
"Alerts": "Cảnh Báo",
|
"Alerts": "Cảnh Báo",
|
||||||
"Albums": "Albums",
|
"Albums": "Albums",
|
||||||
|
@ -564,5 +564,147 @@
|
||||||
"HeaderSortOrder": "Thứ tự Sắp xếp",
|
"HeaderSortOrder": "Thứ tự Sắp xếp",
|
||||||
"HeaderSortBy": "Sắp xếp theo",
|
"HeaderSortBy": "Sắp xếp theo",
|
||||||
"HeaderStartNow": "Bắt đầu",
|
"HeaderStartNow": "Bắt đầu",
|
||||||
"HeaderSetupLibrary": "Thiết lập thư viện nội dung của bạn"
|
"HeaderSetupLibrary": "Thiết lập thư viện nội dung của bạn",
|
||||||
|
"HeaderTracks": "Bài Hát",
|
||||||
|
"HeaderThisUserIsCurrentlyDisabled": "Người dùng này hiện tại đang bị khoá",
|
||||||
|
"HeaderTaskTriggers": "Kích Hoạt Tác Vụ",
|
||||||
|
"HeaderTags": "Nhãn",
|
||||||
|
"HeaderSubtitleProfilesHelp": "Hồ sơ phụ đề chỉ ra những định dạng phụ đề được hỗ trợ bởi thiết bị phát.",
|
||||||
|
"HeaderSubtitleProfiles": "Hồ Sơ Phụ Đề",
|
||||||
|
"HeaderSubtitleProfile": "Hồ Sơ Phụ Đề",
|
||||||
|
"HeaderSubtitleDownloads": "Tải Phụ Đề",
|
||||||
|
"HeaderSubtitleAppearance": "Giao Diện Phụ Đề",
|
||||||
|
"HeaderStopRecording": "Ngừng Ghi Hình/Ghi Âm",
|
||||||
|
"HeaderSpecialFeatures": "Những Phần Đặc Biệt Nổi Bật",
|
||||||
|
"HeaderSpecialEpisodeInfo": "Thông Tin Tập Đặc Biệt",
|
||||||
|
"HeaderShutdown": "Tắt Máy Chủ",
|
||||||
|
"LabelCustomDeviceDisplayNameHelp": "Cung cấp một tên hiển thị riêng hoặc bỏ trống để sử dụng tên có sẵn của thiết bị.",
|
||||||
|
"LabelCustomDeviceDisplayName": "Tên hiển thị:",
|
||||||
|
"LabelCustomCssHelp": "Áp dụng tuỳ chỉnh riêng của bạn vào giao diện trang web.",
|
||||||
|
"LabelCustomCss": "CSS tuỳ chọn:",
|
||||||
|
"LabelCustomCertificatePathHelp": "Đường dẫn đến tập tin PKCS #12 chứa chứng chỉ (certificate) và khoá riêng (private key) để bật tính năng TLS trên một tên miền tuỳ chọn.",
|
||||||
|
"LabelCustomCertificatePath": "Đường dẫn đến chứng chỉ SSL:",
|
||||||
|
"LabelCriticRating": "Đánh giá phê bình:",
|
||||||
|
"LabelCorruptedFrames": "Những khung hình bị lỗi:",
|
||||||
|
"LabelContentType": "Loại nội dung:",
|
||||||
|
"LabelCommunityRating": "Đánh giá của cộng đồng:",
|
||||||
|
"LabelCollection": "Bộ Sưu Tập:",
|
||||||
|
"LabelChannels": "Kênh:",
|
||||||
|
"LabelCertificatePasswordHelp": "Nếu chứng chỉ của bạn cần mật khẩu, hãy nhập nó ở đây.",
|
||||||
|
"LabelCertificatePassword": "Mật khẩu chứng chỉ:",
|
||||||
|
"LabelCancelled": "Đã Huỷ",
|
||||||
|
"LabelCachePathHelp": "Chọn một đường dẫn cho những tập tin lưu tạm như là hình ảnh. Bỏ trống để sử dụng cài đặt mặc định của máy chủ.",
|
||||||
|
"LabelCachePath": "Đường dẫn cache:",
|
||||||
|
"LabelCache": "Cache:",
|
||||||
|
"LabelBurnSubtitles": "Nhúng phụ đề:",
|
||||||
|
"LabelBlockContentWithTags": "Chặn những mục có nhãn:",
|
||||||
|
"LabelBlastMessageIntervalHelp": "Xác định thời gian tồn tại giữa các tin nhắn (tính bằng giây).",
|
||||||
|
"LabelBlastMessageInterval": "Thời gian tồn tại của tin nhắn (giây)",
|
||||||
|
"LabelBitrate": "Bitrate:",
|
||||||
|
"LabelBirthYear": "Năm sinh:",
|
||||||
|
"LabelBirthDate": "Ngày sinh:",
|
||||||
|
"LabelBindToLocalNetworkAddressHelp": "Không bắt buộc. Cài đặt đè địa chỉ IP nội bộ để kết nối đến máy chủ HTTP. Nếu bỏ trống, máy chủ sẽ cài đặt vào toàn bộ những địa chỉ nội bộ có sẵn. Nếu thay đổi tuỳ chọn này, cần phải khởi động lại máy chủ Jellyfin để có tác dụng.",
|
||||||
|
"LabelBindToLocalNetworkAddress": "Cài đặt vào địa chỉ nội bộ:",
|
||||||
|
"LabelAutomaticallyRefreshInternetMetadataEvery": "Tự động cập nhật dữ liệu bổ trợ từ Internet:",
|
||||||
|
"LabelAuthProvider": "Nhà Cung Cấp Xác Thực:",
|
||||||
|
"LabelAudioSampleRate": "Sample rate âm thanh:",
|
||||||
|
"LabelAudioCodec": "Bộ giải mã âm thanh:",
|
||||||
|
"LabelAudioChannels": "Các kênh âm thanh:",
|
||||||
|
"LabelAudioBitrate": "Bitrate của âm thanh:",
|
||||||
|
"LabelAudioBitDepth": "Chiều sâu của âm thanh:",
|
||||||
|
"LabelAudio": "Âm Thanh",
|
||||||
|
"LabelArtistsHelp": "Sử dụng dấu ; để tách rời nhiều nghệ",
|
||||||
|
"LabelArtists": "Nghệ sĩ:",
|
||||||
|
"LabelAppNameExample": "Ví dụ: Sickbeard, Sonarr",
|
||||||
|
"LabelAppName": "Tên ứng dụng",
|
||||||
|
"LabelAllowedRemoteAddressesMode": "Chế độ bộ lọc địa chỉ IP từ xa:",
|
||||||
|
"LabelAllowedRemoteAddresses": "Bộ lọc địa chỉ IP từ xa:",
|
||||||
|
"LabelAllowServerAutoRestartHelp": "Máy chủ chỉ khởi động lại trong thời gian rỗi khi không có người dùng đang sử dụng.",
|
||||||
|
"LabelAllowHWTranscoding": "Cho phép chuyển mã bằng phần cứng",
|
||||||
|
"LabelAll": "Tất Cả",
|
||||||
|
"LabelAlbumArtists": "Nghệ sĩ album:",
|
||||||
|
"LabelAlbumArtPN": "Bìa album PN:",
|
||||||
|
"LabelAlbumArtMaxWidthHelp": "Độ phân giải cao nhất của bìa album thông qua upnp:albumArtURI.",
|
||||||
|
"LabelAlbumArtMaxWidth": "Chiều ngang lớn nhất của bìa album:",
|
||||||
|
"LabelAlbumArtMaxHeightHelp": "Độ phân giải cao nhất của bìa album thông qua upnp:albumArtURI.",
|
||||||
|
"LabelAlbumArtMaxHeight": "Chiều cao lớn nhất của bìa album:",
|
||||||
|
"LabelAlbumArtHelp": "PN được sử dụng cho bìa album, trong dlna:profileID thuộc tính upnp:albumArtURI. Một vài thiết bị phát cần một giá trị đặc biệt, không ảnh hưởng đến kích thước của hình ảnh.",
|
||||||
|
"LabelAlbum": "Album:",
|
||||||
|
"LabelAirsBeforeSeason": "Phát sóng trước mùa:",
|
||||||
|
"LabelAirsBeforeEpisode": "Phát sóng trước tập:",
|
||||||
|
"LabelAirsAfterSeason": "Phát sóng sau mùa:",
|
||||||
|
"LabelAirTime": "Thời gian phát sóng:",
|
||||||
|
"LabelAirDays": "Ngày phát sóng:",
|
||||||
|
"LabelAccessStart": "Thời gian bắt đầu:",
|
||||||
|
"LabelAccessEnd": "Thời gian kết thúc:",
|
||||||
|
"LabelAccessDay": "Ngày trong tuần:",
|
||||||
|
"LabelAbortedByServerShutdown": "(Đã huỷ bởi máy chủ ngừng hoạt động)",
|
||||||
|
"Label3DFormat": "Định dạng 3D:",
|
||||||
|
"Kids": "Trẻ Em",
|
||||||
|
"Items": "Mục",
|
||||||
|
"ItemCount": "{0} mục",
|
||||||
|
"InstantMix": "Trộn Lẫn Nhanh",
|
||||||
|
"InstallingPackage": "Đang cài đặt {0} (phiên bản {1})",
|
||||||
|
"ImportMissingEpisodesHelp": "Nếu bật tuỳ chọn này, thông tin bị thiếu trong các tập phim sẽ được nhập vào cơ sở dữ liệu của máy chủ Jellyfin và hiển thị trong các phần và series. Điều này có thể làm việc quét thư viện lâu hơn rất nhiều.",
|
||||||
|
"ImportFavoriteChannelsHelp": "Nếu bật tuỳ chọn này, chỉ những kênh yêu thích trong thiết bị bắt sóng sẽ được nhập vào.",
|
||||||
|
"Images": "Hình Ảnh",
|
||||||
|
"Identify": "Nhận Dạng",
|
||||||
|
"HttpsRequiresCert": "Để bật kết nối bảo mật, bạn cần phải cung cấp một Chứng Chỉ SSL đáng tin cậy, ví dụ như \"Let's Encrypt\". Hãy cung cấp Chứng Chỉ SSL hoặc là tắt tính năng kết nối bảo mật.",
|
||||||
|
"Horizontal": "Nằm Ngang",
|
||||||
|
"Home": "Trang Chủ",
|
||||||
|
"HideWatchedContentFromLatestMedia": "Ẩn những nội dung đã xem khỏi phần nội dung mới nhất",
|
||||||
|
"Hide": "Ẩn",
|
||||||
|
"Help": "Trợ Giúp",
|
||||||
|
"HeadersFolders": "Thư Mục",
|
||||||
|
"HeaderYears": "Năm",
|
||||||
|
"HeaderXmlSettings": "Cài Đặt XML",
|
||||||
|
"HeaderXmlDocumentAttributes": "Những Thuộc Tính Tài Liệu XML",
|
||||||
|
"HeaderXmlDocumentAttribute": "Thuộc Tính Tài Liệu XML",
|
||||||
|
"HeaderVideos": "Videos",
|
||||||
|
"HeaderVideoTypes": "Kiểu Video",
|
||||||
|
"HeaderVideoType": "Kiểu Video",
|
||||||
|
"HeaderVideoQuality": "Chất Lượng Video",
|
||||||
|
"HeaderUser": "Người Dùng",
|
||||||
|
"HeaderUploadImage": "Tải Lên Hình Ảnh",
|
||||||
|
"HeaderUpcomingOnTV": "Sắp Phát Sóng Trên TV",
|
||||||
|
"HeaderTypeText": "Nhập nội dung",
|
||||||
|
"HeaderTypeImageFetchers": "{0} Trình Tải Hình Ảnh",
|
||||||
|
"HeaderTuners": "Bộ Điều Khiển Thu Phát Sóng",
|
||||||
|
"HeaderTunerDevices": "Thiết Bị Bắt Sóng",
|
||||||
|
"HeaderTranscodingProfileHelp": "Thêm hồ sơ chuyển mã để chỉ ra những định dạng nên dùng khi cần chuyển mã.",
|
||||||
|
"HeaderTranscodingProfile": "Hồ Sơ Chuyển Mã",
|
||||||
|
"LabelEnableAutomaticPortMap": "Kích hoạt tính năng tự động kết nối các port",
|
||||||
|
"LabelEmbedAlbumArtDidlHelp": "Một vài thiết bị ưu tiên phương pháp này để tải bìa album. Một số thiết bị khác có thể không phát được nếu tuỳ chọn này được kích hoạt.",
|
||||||
|
"LabelEmbedAlbumArtDidl": "Bìa album trong Didl",
|
||||||
|
"LabelEasyPinCode": "Mã PIN đơn giản:",
|
||||||
|
"LabelDynamicExternalId": "{0} Id:",
|
||||||
|
"LabelDropShadow": "Đổ bóng:",
|
||||||
|
"LabelDroppedFrames": "Những khung hình bị loại bỏ:",
|
||||||
|
"LabelDropImageHere": "Kéo thả hình ảnh vào đây, hoặc click để lựa chọn hình ảnh.",
|
||||||
|
"LabelDownloadLanguages": "Ngôn ngữ tải xuống:",
|
||||||
|
"LabelDownMixAudioScaleHelp": "Tăng cường âm lượng khi trộn âm thanh. Giá trị bằng 1 sẽ giữ nguyên âm lượng gốc.",
|
||||||
|
"LabelDownMixAudioScale": "Tăng cường âm lượng khi trộn âm thanh:",
|
||||||
|
"LabelDisplaySpecialsWithinSeasons": "Hiển thị những tập đặc biệt trong phần mà nó được phát sóng",
|
||||||
|
"LabelDisplayOrder": "Thứ tự hiển thị:",
|
||||||
|
"LabelDisplayName": "Tên hiển thị:",
|
||||||
|
"LabelDisplayMode": "Chế độ hiển thị:",
|
||||||
|
"LabelDisplayMissingEpisodesWithinSeasons": "Hiển thị những tập bị thiếu",
|
||||||
|
"LabelDisplayLanguageHelp": "Dự án chuyển ngữ Jellyfin là một dự án diễn ra ra liên tục.",
|
||||||
|
"LabelDisplayLanguage": "Ngôn ngữ hiển thị:",
|
||||||
|
"LabelDiscNumber": "Đĩa số:",
|
||||||
|
"LabelDidlMode": "Chế độ DIDL:",
|
||||||
|
"LabelDeviceDescription": "Mô tả thiết bị",
|
||||||
|
"LabelDeinterlaceMethod": "Phương pháp khử xen kẽ:",
|
||||||
|
"LabelDefaultUserHelp": "Xác định thư viện được hiển thị trên những thiết bị đã kết nối. Tuỳ chọn này có thể được ghi đè trên hồ sơ của từng thiết bị.",
|
||||||
|
"LabelDefaultUser": "Người dùng mặc định:",
|
||||||
|
"LabelDefaultScreen": "Màn hình mặc định:",
|
||||||
|
"LabelDeathDate": "Ngày mất:",
|
||||||
|
"LabelDateTimeLocale": "Ngày giờ địa phương:",
|
||||||
|
"LabelDateAddedBehaviorHelp": "Nếu có giá trị dữ liệu bổ trợ, nó sẽ luôn được sử dụng trước một trong các tùy chọn này.",
|
||||||
|
"LabelDateAddedBehavior": "Ngày thêm hành vi cho nội dung mới:",
|
||||||
|
"LabelDateAdded": "Ngày thêm vào:",
|
||||||
|
"LabelDashboardTheme": "Chủ đề bảng điều khiển máy chủ:",
|
||||||
|
"LabelCustomRating": "Đánh giá tuỳ chọn:",
|
||||||
|
"HeaderFavoritePlaylists": "Danh Sách Phát Yêu Thích",
|
||||||
|
"ApiKeysCaption": "Danh sách các mã API đang hoạt động"
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,7 +212,7 @@
|
||||||
"OptionMissingEpisode": "缺少了的單元",
|
"OptionMissingEpisode": "缺少了的單元",
|
||||||
"OptionMonday": "星期一",
|
"OptionMonday": "星期一",
|
||||||
"OptionNameSort": "名字",
|
"OptionNameSort": "名字",
|
||||||
"OptionNew": "新增...",
|
"OptionNew": "新增…",
|
||||||
"OptionOnAppStartup": "在伺服器啟動",
|
"OptionOnAppStartup": "在伺服器啟動",
|
||||||
"OptionOnInterval": "每時段",
|
"OptionOnInterval": "每時段",
|
||||||
"OptionParentalRating": "家長評級",
|
"OptionParentalRating": "家長評級",
|
||||||
|
@ -1678,5 +1678,10 @@
|
||||||
"DeinterlaceMethodHelp": "選擇對隔行掃描內容進行轉碼時所用的反交錯方法。",
|
"DeinterlaceMethodHelp": "選擇對隔行掃描內容進行轉碼時所用的反交錯方法。",
|
||||||
"BoxSet": "套裝",
|
"BoxSet": "套裝",
|
||||||
"UnsupportedPlayback": "Jellyfin 無法解密受 DRM 保護的內容,但仍然會嘗試播放所有內容。某些檔案由於被加密或包含如互動標題等不受支援的內容,在播放時可能會沒有畫面。",
|
"UnsupportedPlayback": "Jellyfin 無法解密受 DRM 保護的內容,但仍然會嘗試播放所有內容。某些檔案由於被加密或包含如互動標題等不受支援的內容,在播放時可能會沒有畫面。",
|
||||||
"MessageUnauthorizedUser": "您目前無權存取伺服器,請與您的伺服器管理員聯繫以獲取更多訊息。"
|
"MessageUnauthorizedUser": "您目前無權存取伺服器,請與您的伺服器管理員聯繫以獲取更多訊息。",
|
||||||
|
"Filter": "篩選器",
|
||||||
|
"New": "新增",
|
||||||
|
"ApiKeysCaption": "目前已啟用的API金鑰列表",
|
||||||
|
"ButtonTogglePlaylist": "播放清單",
|
||||||
|
"ButtonToggleContextMenu": "更多"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle username"></h2>
|
<h2 class="sectionTitle username"></h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle username"></h2>
|
<h2 class="sectionTitle username"></h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle">${HeaderAddUser}</h2>
|
<h2 class="sectionTitle">${HeaderAddUser}</h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="inputContainer">
|
<div class="inputContainer">
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle username"></h2>
|
<h2 class="sectionTitle username"></h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="verticalSection">
|
<div class="verticalSection">
|
||||||
<div class="sectionTitleContainer flex align-items-center">
|
<div class="sectionTitleContainer flex align-items-center">
|
||||||
<h2 class="sectionTitle username"></h2>
|
<h2 class="sectionTitle username"></h2>
|
||||||
<a is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<button is="emby-button" type="button" class="fab btnAddUser submit sectionTitleButton" style="margin-left:1em;" title="${ButtonAddUser}">
|
<button is="emby-button" type="button" class="fab btnAddUser submit sectionTitleButton" style="margin-left:1em;" title="${ButtonAddUser}">
|
||||||
<span class="material-icons add"></span>
|
<span class="material-icons add"></span>
|
||||||
</button>
|
</button>
|
||||||
<a style="margin-left:2em!important;" is="emby-linkbutton" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/adding-managing-users.html">${Help}</a>
|
<a is="emby-linkbutton" rel="noopener noreferrer" style="margin-left:2em!important;" class="raised button-alt headerHelpButton" target="_blank" href="https://docs.jellyfin.org/general/server/users/adding-managing-users.html">${Help}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="localUsers itemsContainer vertical-wrap"></div>
|
<div class="localUsers itemsContainer vertical-wrap"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="ui-corner-all ui-shadow wizardContent">
|
<div class="ui-corner-all ui-shadow wizardContent">
|
||||||
<div>
|
<div>
|
||||||
<h1 style="display:inline-block;">${HeaderSetupLibrary}</h1>
|
<h1 style="display:inline-block;">${HeaderSetupLibrary}</h1>
|
||||||
<a href="https://docs.jellyfin.org/general/server/libraries.html" target="_blank" class="clearLink" style="margin-top:-10px;display:inline-block;vertical-align:middle;margin-left:2em;"><button is="emby-button" type="button" class="raised"><span class="material-icons info"></span><span>${ButtonHelp}</span></button></a>
|
<a href="https://docs.jellyfin.org/general/server/libraries.html" rel="noopener noreferrer" target="_blank" class="clearLink" style="margin-top:-10px;display:inline-block;vertical-align:middle;margin-left:2em;"><button is="emby-button" type="button" class="raised"><span class="material-icons info"></span><span>${ButtonHelp}</span></button></a>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<div id="divVirtualFolders"></div>
|
<div id="divVirtualFolders"></div>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<form class="wizardStartForm">
|
<form class="wizardStartForm">
|
||||||
<div>
|
<div>
|
||||||
<h1 style="float:left;">${WelcomeToProject}</h1>
|
<h1 style="float:left;">${WelcomeToProject}</h1>
|
||||||
<a is="emby-linkbutton" href="https://docs.jellyfin.org/general/quick-start.html" target="_blank" class="raised raised-alt" style="float:right;margin-top:20px;">
|
<a is="emby-linkbutton" rel="noopener noreferrer" href="https://docs.jellyfin.org/general/quick-start.html" target="_blank" class="raised raised-alt" style="float:right;margin-top:20px;">
|
||||||
<span>${ButtonQuickStartGuide}</span>
|
<span>${ButtonQuickStartGuide}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,7 +2,6 @@ const path = require('path');
|
||||||
const common = require('./webpack.common');
|
const common = require('./webpack.common');
|
||||||
const merge = require('webpack-merge');
|
const merge = require('webpack-merge');
|
||||||
const packageConfig = require('./package.json');
|
const packageConfig = require('./package.json');
|
||||||
const postcssConfig = require('./postcss.config.js');
|
|
||||||
|
|
||||||
module.exports = merge(common, {
|
module.exports = merge(common, {
|
||||||
mode: 'development',
|
mode: 'development',
|
||||||
|
@ -31,7 +30,11 @@ module.exports = merge(common, {
|
||||||
'css-loader',
|
'css-loader',
|
||||||
{
|
{
|
||||||
loader: 'postcss-loader',
|
loader: 'postcss-loader',
|
||||||
options: postcssConfig()
|
options: {
|
||||||
|
config: {
|
||||||
|
path: __dirname
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
const common = require('./webpack.common');
|
const common = require('./webpack.common');
|
||||||
const merge = require('webpack-merge');
|
const merge = require('webpack-merge');
|
||||||
const packageConfig = require('./package.json');
|
const packageConfig = require('./package.json');
|
||||||
const postcssConfig = require('./postcss.config.js');
|
|
||||||
|
|
||||||
module.exports = merge(common, {
|
module.exports = merge(common, {
|
||||||
mode: 'production',
|
mode: 'production',
|
||||||
|
@ -24,7 +23,11 @@ module.exports = merge(common, {
|
||||||
'css-loader',
|
'css-loader',
|
||||||
{
|
{
|
||||||
loader: 'postcss-loader',
|
loader: 'postcss-loader',
|
||||||
options: postcssConfig()
|
options: {
|
||||||
|
config: {
|
||||||
|
path: __dirname
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
117
yarn.lock
117
yarn.lock
|
@ -2436,15 +2436,6 @@ cliui@^3.2.0:
|
||||||
strip-ansi "^3.0.1"
|
strip-ansi "^3.0.1"
|
||||||
wrap-ansi "^2.0.0"
|
wrap-ansi "^2.0.0"
|
||||||
|
|
||||||
cliui@^4.0.0:
|
|
||||||
version "4.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
|
|
||||||
integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
|
|
||||||
dependencies:
|
|
||||||
string-width "^2.1.1"
|
|
||||||
strip-ansi "^4.0.0"
|
|
||||||
wrap-ansi "^2.0.0"
|
|
||||||
|
|
||||||
cliui@^5.0.0:
|
cliui@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
|
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
|
||||||
|
@ -3174,10 +3165,10 @@ dashdash@^1.12.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
assert-plus "^1.0.0"
|
assert-plus "^1.0.0"
|
||||||
|
|
||||||
date-fns@^2.12.0:
|
date-fns@^2.13.0:
|
||||||
version "2.12.0"
|
version "2.13.0"
|
||||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.12.0.tgz#01754c8a2f3368fc1119cf4625c3dad8c1845ee6"
|
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.13.0.tgz#d7b8a0a2d392e8d88a8024d0a46b980bbfdbd708"
|
||||||
integrity sha512-qJgn99xxKnFgB1qL4jpxU7Q2t0LOn1p8KMIveef3UZD7kqjT3tpFNNdXJelEHhE+rUgffriXriw/sOSU+cS1Hw==
|
integrity sha512-xm0c61mevGF7f0XpCGtDTGpzEFC/1fpLXHbmFpxZZQJuvByIK2ozm6cSYuU+nxFYOPh2EuCfzUwlTEFwKG+h5w==
|
||||||
|
|
||||||
dateformat@^2.0.0:
|
dateformat@^2.0.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
|
@ -5642,7 +5633,7 @@ html-comment-regex@^1.1.0, html-comment-regex@^1.1.2:
|
||||||
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
|
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
|
||||||
integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
|
integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
|
||||||
|
|
||||||
html-entities@^1.2.1:
|
html-entities@^1.3.1:
|
||||||
version "1.3.1"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
|
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
|
||||||
integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==
|
integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==
|
||||||
|
@ -6572,10 +6563,10 @@ jellyfin-apiclient@^1.1.1:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://github.com/jellyfin/jellyfin-noto#b784602db063734c721a46563ae5d6577ec2b35d"
|
resolved "https://github.com/jellyfin/jellyfin-noto#b784602db063734c721a46563ae5d6577ec2b35d"
|
||||||
|
|
||||||
jquery@>=1.9.1, jquery@^3.5.0:
|
jquery@>=1.9.1, jquery@^3.5.1:
|
||||||
version "3.5.0"
|
version "3.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.0.tgz#9980b97d9e4194611c36530e7dc46a58d7340fc9"
|
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5"
|
||||||
integrity sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==
|
integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==
|
||||||
|
|
||||||
js-base64@^2.1.8, js-base64@^2.1.9:
|
js-base64@^2.1.8, js-base64@^2.1.9:
|
||||||
version "2.5.2"
|
version "2.5.2"
|
||||||
|
@ -6807,10 +6798,6 @@ levn@^0.3.0, levn@~0.3.0:
|
||||||
prelude-ls "~1.1.2"
|
prelude-ls "~1.1.2"
|
||||||
type-check "~0.3.2"
|
type-check "~0.3.2"
|
||||||
|
|
||||||
"libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-cordova":
|
|
||||||
version "4.0.0"
|
|
||||||
resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#b38056588bfaebc18a8353cb1757de0a815ac879"
|
|
||||||
|
|
||||||
"libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv":
|
"libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv":
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#58e9a3f1a7f7883556ee002545f445a430120639"
|
resolved "https://github.com/jellyfin/JavascriptSubtitlesOctopus#58e9a3f1a7f7883556ee002545f445a430120639"
|
||||||
|
@ -7113,7 +7100,7 @@ logalot@^2.0.0, logalot@^2.1.0:
|
||||||
figures "^1.3.5"
|
figures "^1.3.5"
|
||||||
squeak "^1.0.0"
|
squeak "^1.0.0"
|
||||||
|
|
||||||
loglevel@^1.6.6:
|
loglevel@^1.6.8:
|
||||||
version "1.6.8"
|
version "1.6.8"
|
||||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171"
|
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171"
|
||||||
integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==
|
integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==
|
||||||
|
@ -8182,7 +8169,7 @@ os-locale@^1.4.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
lcid "^1.0.0"
|
lcid "^1.0.0"
|
||||||
|
|
||||||
os-locale@^3.0.0, os-locale@^3.1.0:
|
os-locale@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
|
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
|
||||||
integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
|
integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
|
||||||
|
@ -8702,7 +8689,7 @@ plur@^3.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
irregular-plurals "^2.0.0"
|
irregular-plurals "^2.0.0"
|
||||||
|
|
||||||
portfinder@^1.0.25:
|
portfinder@^1.0.26:
|
||||||
version "1.0.26"
|
version "1.0.26"
|
||||||
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70"
|
resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70"
|
||||||
integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==
|
integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==
|
||||||
|
@ -10595,10 +10582,10 @@ sha.js@^2.4.0, sha.js@^2.4.8:
|
||||||
inherits "^2.0.1"
|
inherits "^2.0.1"
|
||||||
safe-buffer "^5.0.1"
|
safe-buffer "^5.0.1"
|
||||||
|
|
||||||
shaka-player@^2.5.10:
|
shaka-player@^2.5.11:
|
||||||
version "2.5.10"
|
version "2.5.11"
|
||||||
resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-2.5.10.tgz#6f4e72e2433002d11824a223b02edd5004e30e2b"
|
resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-2.5.11.tgz#af550a0ee3aadf7be4e64e1a4d615c8d728e0b0f"
|
||||||
integrity sha512-kS9TQL6bWODo4XNnozERZWsEiWlLZ6huspPx4ZjmMjeOBL9gwqlULLfLyO+5gA3CYV/dk9LaAi1WAEaLWckGpA==
|
integrity sha512-SiZd/vCUPeKXNPnfWcBdraskdUYLtm+DITWceCZvRP4eoxxQuRI0MekVJTGqu5d7B2yW9TdQh5ojyRAjbQPFGA==
|
||||||
dependencies:
|
dependencies:
|
||||||
eme-encryption-scheme-polyfill "^2.0.1"
|
eme-encryption-scheme-polyfill "^2.0.1"
|
||||||
|
|
||||||
|
@ -10767,13 +10754,14 @@ sockjs-client@1.4.0:
|
||||||
json3 "^3.3.2"
|
json3 "^3.3.2"
|
||||||
url-parse "^1.4.3"
|
url-parse "^1.4.3"
|
||||||
|
|
||||||
sockjs@0.3.19:
|
sockjs@0.3.20:
|
||||||
version "0.3.19"
|
version "0.3.20"
|
||||||
resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
|
resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855"
|
||||||
integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==
|
integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==
|
||||||
dependencies:
|
dependencies:
|
||||||
faye-websocket "^0.10.0"
|
faye-websocket "^0.10.0"
|
||||||
uuid "^3.0.1"
|
uuid "^3.4.0"
|
||||||
|
websocket-driver "0.6.5"
|
||||||
|
|
||||||
sort-keys-length@^1.0.0:
|
sort-keys-length@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
|
@ -10890,7 +10878,7 @@ spdy-transport@^3.0.0:
|
||||||
readable-stream "^3.0.6"
|
readable-stream "^3.0.6"
|
||||||
wbuf "^1.7.3"
|
wbuf "^1.7.3"
|
||||||
|
|
||||||
spdy@^4.0.1:
|
spdy@^4.0.2:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
|
resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
|
||||||
integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
|
integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
|
||||||
|
@ -11088,7 +11076,7 @@ string-width@^1.0.1, string-width@^1.0.2:
|
||||||
is-fullwidth-code-point "^1.0.0"
|
is-fullwidth-code-point "^1.0.0"
|
||||||
strip-ansi "^3.0.0"
|
strip-ansi "^3.0.0"
|
||||||
|
|
||||||
"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
|
"string-width@^1.0.2 || 2":
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
||||||
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
||||||
|
@ -12302,7 +12290,7 @@ utils-merge@1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
|
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
|
||||||
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
|
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
|
||||||
|
|
||||||
uuid@^3.0.1, uuid@^3.3.2:
|
uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0:
|
||||||
version "3.4.0"
|
version "3.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||||
|
@ -12539,10 +12527,10 @@ webpack-dev-middleware@^3.7.2:
|
||||||
range-parser "^1.2.1"
|
range-parser "^1.2.1"
|
||||||
webpack-log "^2.0.0"
|
webpack-log "^2.0.0"
|
||||||
|
|
||||||
webpack-dev-server@^3.10.3:
|
webpack-dev-server@^3.11.0:
|
||||||
version "3.10.3"
|
version "3.11.0"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0"
|
resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c"
|
||||||
integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==
|
integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-html "0.0.7"
|
ansi-html "0.0.7"
|
||||||
bonjour "^3.5.0"
|
bonjour "^3.5.0"
|
||||||
|
@ -12552,31 +12540,31 @@ webpack-dev-server@^3.10.3:
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
del "^4.1.1"
|
del "^4.1.1"
|
||||||
express "^4.17.1"
|
express "^4.17.1"
|
||||||
html-entities "^1.2.1"
|
html-entities "^1.3.1"
|
||||||
http-proxy-middleware "0.19.1"
|
http-proxy-middleware "0.19.1"
|
||||||
import-local "^2.0.0"
|
import-local "^2.0.0"
|
||||||
internal-ip "^4.3.0"
|
internal-ip "^4.3.0"
|
||||||
ip "^1.1.5"
|
ip "^1.1.5"
|
||||||
is-absolute-url "^3.0.3"
|
is-absolute-url "^3.0.3"
|
||||||
killable "^1.0.1"
|
killable "^1.0.1"
|
||||||
loglevel "^1.6.6"
|
loglevel "^1.6.8"
|
||||||
opn "^5.5.0"
|
opn "^5.5.0"
|
||||||
p-retry "^3.0.1"
|
p-retry "^3.0.1"
|
||||||
portfinder "^1.0.25"
|
portfinder "^1.0.26"
|
||||||
schema-utils "^1.0.0"
|
schema-utils "^1.0.0"
|
||||||
selfsigned "^1.10.7"
|
selfsigned "^1.10.7"
|
||||||
semver "^6.3.0"
|
semver "^6.3.0"
|
||||||
serve-index "^1.9.1"
|
serve-index "^1.9.1"
|
||||||
sockjs "0.3.19"
|
sockjs "0.3.20"
|
||||||
sockjs-client "1.4.0"
|
sockjs-client "1.4.0"
|
||||||
spdy "^4.0.1"
|
spdy "^4.0.2"
|
||||||
strip-ansi "^3.0.1"
|
strip-ansi "^3.0.1"
|
||||||
supports-color "^6.1.0"
|
supports-color "^6.1.0"
|
||||||
url "^0.11.0"
|
url "^0.11.0"
|
||||||
webpack-dev-middleware "^3.7.2"
|
webpack-dev-middleware "^3.7.2"
|
||||||
webpack-log "^2.0.0"
|
webpack-log "^2.0.0"
|
||||||
ws "^6.2.1"
|
ws "^6.2.1"
|
||||||
yargs "12.0.5"
|
yargs "^13.3.2"
|
||||||
|
|
||||||
webpack-log@^2.0.0:
|
webpack-log@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
|
@ -12645,6 +12633,13 @@ webpack@^4.26.1, webpack@^4.41.5:
|
||||||
watchpack "^1.6.1"
|
watchpack "^1.6.1"
|
||||||
webpack-sources "^1.4.1"
|
webpack-sources "^1.4.1"
|
||||||
|
|
||||||
|
websocket-driver@0.6.5:
|
||||||
|
version "0.6.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36"
|
||||||
|
integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=
|
||||||
|
dependencies:
|
||||||
|
websocket-extensions ">=0.1.1"
|
||||||
|
|
||||||
websocket-driver@>=0.5.1:
|
websocket-driver@>=0.5.1:
|
||||||
version "0.7.3"
|
version "0.7.3"
|
||||||
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"
|
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"
|
||||||
|
@ -12797,7 +12792,7 @@ y18n@^3.2.1:
|
||||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
|
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
|
||||||
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
|
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
|
||||||
|
|
||||||
"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
|
y18n@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||||
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
||||||
|
@ -12826,14 +12821,6 @@ yargs-parser@^10.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
camelcase "^4.1.0"
|
camelcase "^4.1.0"
|
||||||
|
|
||||||
yargs-parser@^11.1.1:
|
|
||||||
version "11.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
|
|
||||||
integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
|
|
||||||
dependencies:
|
|
||||||
camelcase "^5.0.0"
|
|
||||||
decamelize "^1.2.0"
|
|
||||||
|
|
||||||
yargs-parser@^13.1.0, yargs-parser@^13.1.2:
|
yargs-parser@^13.1.0, yargs-parser@^13.1.2:
|
||||||
version "13.1.2"
|
version "13.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
|
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
|
||||||
|
@ -12864,24 +12851,6 @@ yargs-parser@^5.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
camelcase "^3.0.0"
|
camelcase "^3.0.0"
|
||||||
|
|
||||||
yargs@12.0.5:
|
|
||||||
version "12.0.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
|
|
||||||
integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
|
|
||||||
dependencies:
|
|
||||||
cliui "^4.0.0"
|
|
||||||
decamelize "^1.2.0"
|
|
||||||
find-up "^3.0.0"
|
|
||||||
get-caller-file "^1.0.1"
|
|
||||||
os-locale "^3.0.0"
|
|
||||||
require-directory "^2.1.1"
|
|
||||||
require-main-filename "^1.0.1"
|
|
||||||
set-blocking "^2.0.0"
|
|
||||||
string-width "^2.0.0"
|
|
||||||
which-module "^2.0.0"
|
|
||||||
y18n "^3.2.1 || ^4.0.0"
|
|
||||||
yargs-parser "^11.1.1"
|
|
||||||
|
|
||||||
yargs@13.2.4:
|
yargs@13.2.4:
|
||||||
version "13.2.4"
|
version "13.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
|
resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue