Merge remote-tracking branch 'upstream/master' into metadata-editor

This commit is contained in:
MrTimscampi 2020-05-18 19:15:20 +02:00
commit 9f14bde2cb
117 changed files with 560 additions and 563 deletions

View File

@ -42,7 +42,8 @@ module.exports = {
'one-var': ["error", "never"], 'one-var': ["error", "never"],
'quotes': ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": false }], 'quotes': ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": false }],
'semi': ["error"], 'semi': ["error"],
'space-before-blocks': ["error"] 'space-before-blocks': ["error"],
"space-infix-ops": "error"
}, },
overrides: [ overrides: [
{ {

View File

@ -9,7 +9,7 @@
"@babel/plugin-transform-modules-amd": "^7.9.6", "@babel/plugin-transform-modules-amd": "^7.9.6",
"@babel/polyfill": "^7.8.7", "@babel/polyfill": "^7.8.7",
"@babel/preset-env": "^7.8.6", "@babel/preset-env": "^7.8.6",
"autoprefixer": "^9.7.6", "autoprefixer": "^9.8.0",
"babel-loader": "^8.0.6", "babel-loader": "^8.0.6",
"browser-sync": "^2.26.7", "browser-sync": "^2.26.7",
"clean-webpack-plugin": "^3.0.0", "clean-webpack-plugin": "^3.0.0",
@ -78,7 +78,7 @@
"screenfull": "^5.0.2", "screenfull": "^5.0.2",
"shaka-player": "^2.5.11", "shaka-player": "^2.5.11",
"sortablejs": "^1.10.2", "sortablejs": "^1.10.2",
"swiper": "^5.3.7", "swiper": "^5.4.0",
"webcomponents.js": "^0.7.24", "webcomponents.js": "^0.7.24",
"whatwg-fetch": "^3.0.0" "whatwg-fetch": "^3.0.0"
}, },
@ -91,9 +91,9 @@
"test": [ "test": [
"src/components/autoFocuser.js", "src/components/autoFocuser.js",
"src/components/cardbuilder/cardBuilder.js", "src/components/cardbuilder/cardBuilder.js",
"src/components/filedownloader.js", "src/scripts/fileDownloader.js",
"src/components/images/imageLoader.js", "src/components/images/imageLoader.js",
"src/components/lazyloader/lazyloader-intersectionobserver.js", "src/components/lazyLoader/lazyLoaderIntersectionObserver.js",
"src/components/playback/mediasession.js", "src/components/playback/mediasession.js",
"src/components/sanatizefilename.js", "src/components/sanatizefilename.js",
"src/components/scrollManager.js", "src/components/scrollManager.js",
@ -102,11 +102,11 @@
"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/scripts/deleteHelper.js",
"src/components/actionsheet/actionsheet.js", "src/components/actionSheet/actionSheet.js",
"src/components/playmenu.js", "src/components/playmenu.js",
"src/components/indicators/indicators.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",
"src/scripts/settings/webSettings.js" "src/scripts/settings/webSettings.js"

View File

@ -15,6 +15,8 @@ print(langlst)
input('press enter to continue') input('press enter to continue')
keysus = [] keysus = []
missing = []
with open(langdir + '/' + 'en-us.json') as en: with open(langdir + '/' + 'en-us.json') as en:
langus = json.load(en) langus = json.load(en)
for key in langus: for key in langus:
@ -32,10 +34,19 @@ for lang in langlst:
for key in langjson: for key in langjson:
if key in keysus: if key in keysus:
langjnew[key] = langjson[key] langjnew[key] = langjson[key]
elif key not in missing:
missing.append(key)
f.seek(0) f.seek(0)
f.write(json.dumps(langjnew, indent=inde, sort_keys=False, ensure_ascii=False)) f.write(json.dumps(langjnew, indent=inde, sort_keys=False, ensure_ascii=False))
f.write('\n') f.write('\n')
f.truncate() f.truncate()
f.close() f.close()
print(missing)
print('LENGTH: ' + str(len(missing)))
with open('missing.txt', 'w') as out:
for item in missing:
out.write(item + '\n')
out.close()
print('DONE') print('DONE')

View File

@ -34,7 +34,7 @@ for lang in langlst:
print(dep) print(dep)
print('LENGTH: ' + str(len(dep))) print('LENGTH: ' + str(len(dep)))
with open('scout.txt', 'w') as out: with open('unused.txt', 'w') as out:
for item in dep: for item in dep:
out.write(item + '\n') out.write(item + '\n')
out.close() out.close()

View File

@ -50,7 +50,7 @@ define(['dialogHelper', 'datetime', 'globalize', 'emby-select', 'paper-icon-butt
show: function (options) { show: function (options) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.open('GET', 'components/accessschedule/accessschedule.template.html', true); xhr.open('GET', 'components/accessSchedule/accessSchedule.template.html', true);
xhr.onload = function (e) { xhr.onload = function (e) {
var template = this.response; var template = this.response;

View File

@ -3,7 +3,7 @@ import layoutManager from 'layoutManager';
import globalize from 'globalize'; import globalize from 'globalize';
import dom from 'dom'; import dom from 'dom';
import 'emby-button'; import 'emby-button';
import 'css!./actionsheet'; import 'css!./actionSheet';
import 'material-icons'; import 'material-icons';
import 'scrollStyles'; import 'scrollStyles';
import 'listViewStyle'; import 'listViewStyle';

View File

@ -1,4 +1,4 @@
define(['browser', 'css!./appfooter'], function (browser) { define(['browser', 'css!./appFooter'], function (browser) {
'use strict'; 'use strict';
function render(options) { function render(options) {

View File

@ -54,7 +54,13 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', '
// production version registered with google // production version registered with google
// replace this value if you want to test changes on another instance // replace this value if you want to test changes on another instance
var applicationID = 'F007D354'; var applicationStable = 'F007D354';
var applicationNightly = '6F511C87';
var applicationID = applicationStable;
if (userSettings.chromecastVersion === 'nightly') {
applicationID = applicationNightly;
}
var messageNamespace = 'urn:x-cast:com.connectsdk'; var messageNamespace = 'urn:x-cast:com.connectsdk';

View File

@ -269,7 +269,7 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
} }
function embed(options, self) { function embed(options, self) {
require(['text!./displaysettings.template.html'], function (template) { require(['text!./displaySettings.template.html'], function (template) {
options.element.innerHTML = globalize.translateDocument(template, 'core'); options.element.innerHTML = globalize.translateDocument(template, 'core');
options.element.querySelector('form').addEventListener('submit', onSubmit.bind(self)); options.element.querySelector('form').addEventListener('submit', onSubmit.bind(self));
if (options.enableSaveButton) { if (options.enableSaveButton) {

View File

@ -470,7 +470,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
function embed(options, self) { function embed(options, self) {
require(['text!./homescreensettings.template.html'], function (template) { require(['text!./homeScreenSettings.template.html'], function (template) {
for (var i = 1; i <= numConfigurableSections; i++) { for (var i = 1; i <= numConfigurableSections; i++) {
template = template.replace('{section' + i + 'label}', globalize.translate('LabelHomeScreenSectionValue', i)); template = template.replace('{section' + i + 'label}', globalize.translate('LabelHomeScreenSectionValue', i));

View File

@ -320,7 +320,7 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'image
function showEditor(itemId, serverId, itemType) { function showEditor(itemId, serverId, itemType) {
loading.show(); loading.show();
require(['text!./imagedownloader.template.html'], function (template) { require(['text!./imageDownloader.template.html'], function (template) {
var apiClient = connectionManager.getApiClient(serverId); var apiClient = connectionManager.getApiClient(serverId);

View File

@ -82,7 +82,7 @@ define(['globalize', 'dom', 'dialogHelper', 'emby-checkbox', 'emby-select', 'emb
this.show = function (itemType, options, availableOptions) { this.show = function (itemType, options, availableOptions) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.open('GET', 'components/imageoptionseditor/imageoptionseditor.template.html', true); xhr.open('GET', 'components/imageOptionsEditor/imageOptionsEditor.template.html', true);
xhr.onload = function (e) { xhr.onload = function (e) {
var template = this.response; var template = this.response;

View File

@ -125,7 +125,7 @@ define(['dialogHelper', 'connectionManager', 'dom', 'loading', 'scrollHelper', '
options = options || {}; options = options || {};
require(['text!./imageuploader.template.html'], function (template) { require(['text!./imageUploader.template.html'], function (template) {
currentItemId = options.itemId; currentItemId = options.itemId;
currentServerId = options.serverId; currentServerId = options.serverId;

View File

@ -1,38 +0,0 @@
define(['dom'], function (dom) {
'use strict';
function loadImage(elem, url) {
if (!elem) {
return Promise.reject('elem cannot be null');
}
if (elem.tagName !== 'IMG') {
elem.style.backgroundImage = "url('" + url + "')";
return Promise.resolve();
//return loadImageIntoImg(document.createElement('img'), url).then(function () {
// elem.style.backgroundImage = "url('" + url + "')";
// return Promise.resolve();
//});
}
return loadImageIntoImg(elem, url);
}
function loadImageIntoImg(elem, url) {
return new Promise(function (resolve, reject) {
dom.addEventListener(elem, 'load', resolve, {
once: true
});
elem.setAttribute('src', url);
});
}
return {
loadImage: loadImage
};
});

View File

@ -148,7 +148,7 @@ export function getTypeIndicator(item) {
}; };
const icon = iconT[item.Type]; const icon = iconT[item.Type];
return icon ? '<div class="indicator videoIndicator"><span class="material-icons indicatorIcon '+ icon +'"></span></div>' : ''; return icon ? '<div class="indicator videoIndicator"><span class="material-icons indicatorIcon ' + icon + '"></span></div>' : '';
} }
export function getMissingIndicator(item) { export function getMissingIndicator(item) {

View File

@ -182,7 +182,7 @@ define(['loading', 'dialogHelper', 'dom', 'jQuery', 'components/libraryoptionsed
currentResolve = resolve; currentResolve = resolve;
hasChanges = false; hasChanges = false;
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.open('GET', 'components/medialibrarycreator/medialibrarycreator.template.html', true); xhr.open('GET', 'components/mediaLibraryCreator/mediaLibraryCreator.template.html', true);
xhr.onload = function (e) { xhr.onload = function (e) {
var template = this.response; var template = this.response;

View File

@ -199,7 +199,7 @@ define(['jQuery', 'loading', 'dialogHelper', 'dom', 'components/libraryoptionsed
currentDeferred = deferred; currentDeferred = deferred;
hasChanges = false; hasChanges = false;
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.open('GET', 'components/medialibraryeditor/medialibraryeditor.template.html', true); xhr.open('GET', 'components/mediaLibraryEditor/mediaLibraryEditor.template.html', true);
xhr.onload = function (e) { xhr.onload = function (e) {
var template = this.response; var template = this.response;

View File

@ -1026,7 +1026,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
function show(itemId, serverId, resolve, reject) { function show(itemId, serverId, resolve, reject) {
loading.show(); loading.show();
require(['text!./metadataeditor.template.html'], function (template) { require(['text!./metadataEditor.template.html'], function (template) {
var dialogOptions = { var dialogOptions = {
removeOnClose: true, removeOnClose: true,
@ -1083,7 +1083,7 @@ define(['itemHelper', 'dom', 'layoutManager', 'dialogHelper', 'datetime', 'loadi
loading.show(); loading.show();
require(['text!./metadataeditor.template.html'], function (template) { require(['text!./metadataEditor.template.html'], function (template) {
elem.innerHTML = globalize.translateDocument(template, 'core'); elem.innerHTML = globalize.translateDocument(template, 'core');

View File

@ -11,7 +11,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'require', 'paper-icon-but
function show(person) { function show(person) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
require(['text!./personeditor.template.html'], function (template) { require(['text!./personEditor.template.html'], function (template) {
var dialogOptions = { var dialogOptions = {
removeOnClose: true, removeOnClose: true,

View File

@ -1,4 +1,4 @@
define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'globalize', 'appRouter', 'dom', 'css!./multiselect'], function (browser, appStorage, appHost, loading, connectionManager, globalize, appRouter, dom) { define(['browser', 'appStorage', 'apphost', 'loading', 'connectionManager', 'globalize', 'appRouter', 'dom', 'css!./multiSelect'], function (browser, appStorage, appHost, loading, connectionManager, globalize, appRouter, dom) {
'use strict'; 'use strict';
var selectedItems = []; var selectedItems = [];

View File

@ -244,7 +244,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
require(['appFooter-shared', 'itemShortcuts', 'css!./nowplayingbar.css', 'emby-slider'], function (appfooter, itemShortcuts) { require(['appFooter-shared', 'itemShortcuts', 'css!./nowPlayingBar.css', 'emby-slider'], function (appfooter, itemShortcuts) {
var parentContainer = appfooter.element; var parentContainer = appfooter.element;
nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar'); nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar');

View File

@ -7,11 +7,13 @@ define(['connectionManager', 'actionsheet', 'datetime', 'playbackManager', 'glob
return stream.Type === 'Video'; return stream.Type === 'Video';
})[0]; })[0];
var videoWidth = videoStream ? videoStream.Width : null; var videoWidth = videoStream ? videoStream.Width : null;
var videoHeight = videoStream ? videoStream.Height : null;
var options = qualityoptions.getVideoQualityOptions({ var options = qualityoptions.getVideoQualityOptions({
currentMaxBitrate: playbackManager.getMaxStreamingBitrate(player), currentMaxBitrate: playbackManager.getMaxStreamingBitrate(player),
isAutomaticBitrateEnabled: playbackManager.enableAutomaticBitrateDetection(player), isAutomaticBitrateEnabled: playbackManager.enableAutomaticBitrateDetection(player),
videoWidth: videoWidth, videoWidth: videoWidth,
videoHeight: videoHeight,
enableAuto: true enableAuto: true
}); });
@ -91,11 +93,13 @@ define(['connectionManager', 'actionsheet', 'datetime', 'playbackManager', 'glob
})[0]; })[0];
var videoWidth = videoStream ? videoStream.Width : null; var videoWidth = videoStream ? videoStream.Width : null;
var videoHeight = videoStream ? videoStream.Height : null;
var options = qualityoptions.getVideoQualityOptions({ var options = qualityoptions.getVideoQualityOptions({
currentMaxBitrate: playbackManager.getMaxStreamingBitrate(player), currentMaxBitrate: playbackManager.getMaxStreamingBitrate(player),
isAutomaticBitrateEnabled: playbackManager.enableAutomaticBitrateDetection(player), isAutomaticBitrateEnabled: playbackManager.enableAutomaticBitrateDetection(player),
videoWidth: videoWidth, videoWidth: videoWidth,
videoHeight: videoHeight,
enableAuto: true enableAuto: true
}); });

View File

@ -204,6 +204,9 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality
fillChromecastQuality(context.querySelector('.selectChromecastVideoQuality')); fillChromecastQuality(context.querySelector('.selectChromecastVideoQuality'));
var selectChromecastVersion = context.querySelector('.selectChromecastVersion');
selectChromecastVersion.value = userSettings.chromecastVersion();
var selectSkipForwardLength = context.querySelector('.selectSkipForwardLength'); var selectSkipForwardLength = context.querySelector('.selectSkipForwardLength');
fillSkipLengths(selectSkipForwardLength); fillSkipLengths(selectSkipForwardLength);
selectSkipForwardLength.value = userSettings.skipForwardLength(); selectSkipForwardLength.value = userSettings.skipForwardLength();
@ -234,6 +237,7 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality
userSettingsInstance.enableCinemaMode(context.querySelector('.chkEnableCinemaMode').checked); userSettingsInstance.enableCinemaMode(context.querySelector('.chkEnableCinemaMode').checked);
userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector('.chkEnableNextVideoOverlay').checked); userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector('.chkEnableNextVideoOverlay').checked);
userSettingsInstance.chromecastVersion(context.querySelector('.selectChromecastVersion').value);
userSettingsInstance.skipForwardLength(context.querySelector('.selectSkipForwardLength').value); userSettingsInstance.skipForwardLength(context.querySelector('.selectSkipForwardLength').value);
userSettingsInstance.skipBackLength(context.querySelector('.selectSkipBackLength').value); userSettingsInstance.skipBackLength(context.querySelector('.selectSkipBackLength').value);
@ -285,7 +289,7 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality
function embed(options, self) { function embed(options, self) {
require(['text!./playbacksettings.template.html'], function (template) { require(['text!./playbackSettings.template.html'], function (template) {
options.element.innerHTML = globalize.translateDocument(template, 'core'); options.element.innerHTML = globalize.translateDocument(template, 'core');

View File

@ -1,12 +1,13 @@
<form style="margin: 0 auto;"> <form style="margin: 0 auto;">
<div class="verticalSection verticalSection-extrabottompadding"> <div class="verticalSection verticalSection-extrabottompadding">
<h2 class="sectionTitle"> <h2 class="sectionTitle">
${HeaderAudioSettings} ${HeaderAudioSettings}
</h2> </h2>
<div class="selectContainer"> <div class="selectContainer">
<select is="emby-select" id="selectAudioLanguage" label="${LabelAudioLanguagePreference}"></select> <select is="emby-select" id="selectAudioLanguage" label="${LabelAudioLanguagePreference}"></select>
</div> </div>
<label class="checkboxContainer"> <label class="checkboxContainer">
<input type="checkbox" is="emby-checkbox" class="chkPlayDefaultAudioTrack" /> <input type="checkbox" is="emby-checkbox" class="chkPlayDefaultAudioTrack" />
<span>${LabelPlayDefaultAudioTrack}</span> <span>${LabelPlayDefaultAudioTrack}</span>
@ -18,12 +19,15 @@
<h2 class="sectionTitle"> <h2 class="sectionTitle">
${HeaderVideoQuality} ${HeaderVideoQuality}
</h2> </h2>
<div class="selectContainer fldVideoInNetworkQuality hide"> <div class="selectContainer fldVideoInNetworkQuality hide">
<select is="emby-select" class="selectVideoInNetworkQuality" label="${LabelHomeNetworkQuality}"></select> <select is="emby-select" class="selectVideoInNetworkQuality" label="${LabelHomeNetworkQuality}"></select>
</div> </div>
<div class="selectContainer fldVideoInternetQuality hide"> <div class="selectContainer fldVideoInternetQuality hide">
<select is="emby-select" class="selectVideoInternetQuality" label="${LabelInternetQuality}"></select> <select is="emby-select" class="selectVideoInternetQuality" label="${LabelInternetQuality}"></select>
</div> </div>
<div class="selectContainer fldChromecastQuality hide"> <div class="selectContainer fldChromecastQuality hide">
<select is="emby-select" class="selectChromecastVideoQuality" label="${LabelMaxChromecastBitrate}"></select> <select is="emby-select" class="selectChromecastVideoQuality" label="${LabelMaxChromecastBitrate}"></select>
</div> </div>
@ -33,6 +37,7 @@
<h2> <h2>
${HeaderMusicQuality} ${HeaderMusicQuality}
</h2> </h2>
<div class="selectContainer"> <div class="selectContainer">
<select is="emby-select" class="selectMusicInternetQuality" label="${LabelInternetQuality}"></select> <select is="emby-select" class="selectMusicInternetQuality" label="${LabelInternetQuality}"></select>
</div> </div>
@ -43,6 +48,7 @@
<h2 class="sectionTitle"> <h2 class="sectionTitle">
${TabAdvanced} ${TabAdvanced}
</h2> </h2>
<div class="checkboxContainer checkboxContainer-withDescription cinemaModeOptions"> <div class="checkboxContainer checkboxContainer-withDescription cinemaModeOptions">
<label> <label>
<input type="checkbox" is="emby-checkbox" class="chkEnableCinemaMode" /> <input type="checkbox" is="emby-checkbox" class="chkEnableCinemaMode" />
@ -50,12 +56,14 @@
</label> </label>
<div class="fieldDescription checkboxFieldDescription">${CinemaModeConfigurationHelp}</div> <div class="fieldDescription checkboxFieldDescription">${CinemaModeConfigurationHelp}</div>
</div> </div>
<div class="checkboxContainer fldEpisodeAutoPlay hide"> <div class="checkboxContainer fldEpisodeAutoPlay hide">
<label> <label>
<input type="checkbox" is="emby-checkbox" class="chkEpisodeAutoPlay" /> <input type="checkbox" is="emby-checkbox" class="chkEpisodeAutoPlay" />
<span>${PlayNextEpisodeAutomatically}</span> <span>${PlayNextEpisodeAutomatically}</span>
</label> </label>
</div> </div>
<div class="checkboxContainer checkboxContainer-withDescription fldEnableNextVideoOverlay hide"> <div class="checkboxContainer checkboxContainer-withDescription fldEnableNextVideoOverlay hide">
<label> <label>
<input type="checkbox" is="emby-checkbox" class="chkEnableNextVideoOverlay" /> <input type="checkbox" is="emby-checkbox" class="chkEnableNextVideoOverlay" />
@ -74,6 +82,13 @@
</div> </div>
</div> </div>
<div class="selectContainer">
<select is="emby-select" class="selectChromecastVersion" label="${LabelChromecastVersion}">
<option value="stable">${LabelStable}</option>
<option value="nightly">${LabelNightly}</option>
</select>
</div>
<div class="selectContainer"> <div class="selectContainer">
<select is="emby-select" class="selectSkipForwardLength" label="${LabelSkipForwardLength}"></select> <select is="emby-select" class="selectSkipForwardLength" label="${LabelSkipForwardLength}"></select>
</div> </div>

View File

@ -5,6 +5,13 @@ define(['globalize'], function (globalize) {
var maxStreamingBitrate = options.currentMaxBitrate; var maxStreamingBitrate = options.currentMaxBitrate;
var videoWidth = options.videoWidth; var videoWidth = options.videoWidth;
var videoHeight = options.videoHeight;
// If the aspect ratio is less than 16/9 (1.77), set the width as if it were pillarboxed.
// 4:3 1440x1080 -> 1920x1080
if (videoWidth / videoHeight < 16 / 9) {
videoWidth = videoHeight * (16 / 9);
}
var maxAllowedWidth = videoWidth || 4096; var maxAllowedWidth = videoWidth || 4096;
//var maxAllowedHeight = videoHeight || 2304; //var maxAllowedHeight = videoHeight || 2304;

View File

@ -140,7 +140,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
} }
if (item.SeriesName != null) { if (item.SeriesName != null) {
var seriesName = item.SeriesName; var seriesName = item.SeriesName;
if (item.SeriesId !=null) { if (item.SeriesId != null) {
context.querySelector('.nowPlayingSerie').innerHTML = '<a class="button-link emby-button" is="emby-linkbutton" href="itemdetails.html?id=' + item.SeriesId + `&amp;serverId=${nowPlayingServerId}">${seriesName}</a>`; context.querySelector('.nowPlayingSerie').innerHTML = '<a class="button-link emby-button" is="emby-linkbutton" href="itemdetails.html?id=' + item.SeriesId + `&amp;serverId=${nowPlayingServerId}">${seriesName}</a>`;
} else { } else {
context.querySelector('.nowPlayingSerie').innerHTML = seriesName; context.querySelector('.nowPlayingSerie').innerHTML = seriesName;

View File

@ -92,7 +92,7 @@ import layoutManager from 'layoutManager';
* @return {number} Eased value in range [0, 1]. * @return {number} Eased value in range [0, 1].
*/ */
function ease(t) { function ease(t) {
return t*(2 - t); // easeOutQuad === ease-out return t * (2 - t); // easeOutQuad === ease-out
} }
/** /**
@ -402,8 +402,8 @@ import layoutManager from 'layoutManager';
k = ease(k); k = ease(k);
const x = ox + dx*k; const x = ox + dx * k;
const y = oy + dy*k; const y = oy + dy * k;
builtinScroll(xScroller, x, yScroller, y, false); builtinScroll(xScroller, x, yScroller, y, false);

View File

@ -9,7 +9,7 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
var validationResult = getValidationAlert(form); var validationResult = getValidationAlert(form);
if (validationResult) { if (validationResult) {
alertText(validationResult); showAlertText(validationResult);
return; return;
} }
@ -29,35 +29,10 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
config.IsRemoteIPFilterBlacklist = 'blacklist' === form.querySelector('#selectExternalAddressFilterMode').value; config.IsRemoteIPFilterBlacklist = 'blacklist' === form.querySelector('#selectExternalAddressFilterMode').value;
config.PublicPort = form.querySelector('#txtPublicPort').value; config.PublicPort = form.querySelector('#txtPublicPort').value;
config.PublicHttpsPort = form.querySelector('#txtPublicHttpsPort').value; config.PublicHttpsPort = form.querySelector('#txtPublicHttpsPort').value;
var httpsMode = form.querySelector('#selectHttpsMode').value;
switch (httpsMode) {
case 'proxy':
config.EnableHttps = true;
config.RequireHttps = false;
config.IsBehindProxy = true;
break;
case 'required':
config.EnableHttps = true;
config.RequireHttps = true;
config.IsBehindProxy = false;
break;
case 'enabled':
config.EnableHttps = true;
config.RequireHttps = false;
config.IsBehindProxy = false;
break;
default:
config.EnableHttps = false;
config.RequireHttps = false;
config.IsBehindProxy = false;
}
config.HttpsPortNumber = form.querySelector('#txtHttpsPort').value;
config.HttpServerPortNumber = form.querySelector('#txtPortNumber').value; config.HttpServerPortNumber = form.querySelector('#txtPortNumber').value;
config.HttpsPortNumber = form.querySelector('#txtHttpsPort').value;
config.EnableHttps = form.querySelector('#chkEnableHttps').checked;
config.RequireHttps = form.querySelector('#chkRequireHttps').checked;
config.EnableUPnP = enableUpnp; config.EnableUPnP = enableUpnp;
config.BaseUrl = form.querySelector('#txtBaseUrl').value; config.BaseUrl = form.querySelector('#txtBaseUrl').value;
config.EnableRemoteAccess = form.querySelector('#chkRemoteAccess').checked; config.EnableRemoteAccess = form.querySelector('#chkRemoteAccess').checked;
@ -90,23 +65,20 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
} }
function validateHttps(form) { function validateHttps(form) {
var remoteAccess = form.querySelector('#chkRemoteAccess').checked;
var certPath = form.querySelector('#txtCertificatePath').value || null; var certPath = form.querySelector('#txtCertificatePath').value || null;
var httpsMode = form.querySelector('#selectHttpsMode').value; var httpsEnabled = form.querySelector('#chkEnableHttps').checked;
if (!remoteAccess || ('enabled' !== httpsMode && 'required' !== httpsMode || certPath)) { if (httpsEnabled && !certPath) {
return Promise.resolve(); return showAlertText({
}
return new Promise(function (resolve, reject) {
return alertText({
title: globalize.translate('TitleHostingSettings'), title: globalize.translate('TitleHostingSettings'),
text: globalize.translate('HttpsRequiresCert') text: globalize.translate('HttpsRequiresCert')
}).then(reject, reject); }).then(Promise.reject);
}); }
return Promise.resolve();
} }
function alertText(options) { function showAlertText(options) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
require(['alert'], function (alert) { require(['alert'], function (alert) {
alert(options).then(resolve, reject); alert(options).then(resolve, reject);
@ -116,7 +88,7 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
function confirmSelections(localAddress, enableUpnp, callback) { function confirmSelections(localAddress, enableUpnp, callback) {
if (localAddress || !enableUpnp) { if (localAddress || !enableUpnp) {
alertText({ showAlertText({
title: globalize.translate('TitleHostingSettings'), title: globalize.translate('TitleHostingSettings'),
text: globalize.translate('SettingsWarning') text: globalize.translate('SettingsWarning')
}).then(callback); }).then(callback);
@ -135,19 +107,9 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
page.querySelector('#txtExternalAddressFilter').value = (config.RemoteIPFilter || []).join(', '); page.querySelector('#txtExternalAddressFilter').value = (config.RemoteIPFilter || []).join(', ');
page.querySelector('#selectExternalAddressFilterMode').value = config.IsRemoteIPFilterBlacklist ? 'blacklist' : 'whitelist'; page.querySelector('#selectExternalAddressFilterMode').value = config.IsRemoteIPFilterBlacklist ? 'blacklist' : 'whitelist';
page.querySelector('#chkRemoteAccess').checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; page.querySelector('#chkRemoteAccess').checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess;
var selectHttpsMode = page.querySelector('#selectHttpsMode');
if (config.IsBehindProxy) {
selectHttpsMode.value = 'proxy';
} else if (config.RequireHttps) {
selectHttpsMode.value = 'required';
} else if (config.EnableHttps) {
selectHttpsMode.value = 'enabled';
} else {
selectHttpsMode.value = 'disabled';
}
page.querySelector('#txtHttpsPort').value = config.HttpsPortNumber; page.querySelector('#txtHttpsPort').value = config.HttpsPortNumber;
page.querySelector('#chkEnableHttps').checked = config.EnableHttps;
page.querySelector('#chkRequireHttps').checked = config.RequireHttps;
page.querySelector('#txtBaseUrl').value = config.BaseUrl || ''; page.querySelector('#txtBaseUrl').value = config.BaseUrl || '';
var txtCertificatePath = page.querySelector('#txtCertificatePath'); var txtCertificatePath = page.querySelector('#txtCertificatePath');
txtCertificatePath.value = config.CertificatePath || ''; txtCertificatePath.value = config.CertificatePath || '';
@ -163,18 +125,12 @@ define(['loading', 'libraryMenu', 'globalize', 'emby-checkbox', 'emby-select'],
view.querySelector('.fldExternalAddressFilterMode').classList.remove('hide'); view.querySelector('.fldExternalAddressFilterMode').classList.remove('hide');
view.querySelector('.fldPublicPort').classList.remove('hide'); view.querySelector('.fldPublicPort').classList.remove('hide');
view.querySelector('.fldPublicHttpsPort').classList.remove('hide'); view.querySelector('.fldPublicHttpsPort').classList.remove('hide');
view.querySelector('.fldCertificatePath').classList.remove('hide');
view.querySelector('.fldCertPassword').classList.remove('hide');
view.querySelector('.fldHttpsMode').classList.remove('hide');
view.querySelector('.fldEnableUpnp').classList.remove('hide'); view.querySelector('.fldEnableUpnp').classList.remove('hide');
} else { } else {
view.querySelector('.fldExternalAddressFilter').classList.add('hide'); view.querySelector('.fldExternalAddressFilter').classList.add('hide');
view.querySelector('.fldExternalAddressFilterMode').classList.add('hide'); view.querySelector('.fldExternalAddressFilterMode').classList.add('hide');
view.querySelector('.fldPublicPort').classList.add('hide'); view.querySelector('.fldPublicPort').classList.add('hide');
view.querySelector('.fldPublicHttpsPort').classList.add('hide'); view.querySelector('.fldPublicHttpsPort').classList.add('hide');
view.querySelector('.fldCertificatePath').classList.add('hide');
view.querySelector('.fldCertPassword').classList.add('hide');
view.querySelector('.fldHttpsMode').classList.add('hide');
view.querySelector('.fldEnableUpnp').classList.add('hide'); view.querySelector('.fldEnableUpnp').classList.add('hide');
} }
}); });

View File

@ -191,7 +191,7 @@ define(['jQuery', 'datetime', 'loading', 'libraryMenu', 'globalize', 'listViewSt
function showSchedulePopup(page, schedule, index) { function showSchedulePopup(page, schedule, index) {
schedule = schedule || {}; schedule = schedule || {};
require(['components/accessschedule/accessschedule'], function (accessschedule) { require(['components/accessSchedule/accessSchedule'], function (accessschedule) {
accessschedule.show({ accessschedule.show({
schedule: schedule schedule: schedule
}).then(function (updatedSchedule) { }).then(function (updatedSchedule) {

View File

@ -803,9 +803,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
} }
if (editable && url === undefined) { if (editable && url === undefined) {
html += "<a class='itemDetailGalleryLink itemDetailImage defaultCardBackground defaultCardBackground"+ cardBuilder.getDefaultBackgroundClass(item.Name) + "' is='emby-linkbutton' style='display:block;margin:0;padding:0;' href='#'>"; html += "<a class='itemDetailGalleryLink itemDetailImage defaultCardBackground defaultCardBackground" + cardBuilder.getDefaultBackgroundClass(item.Name) + "' is='emby-linkbutton' style='display:block;margin:0;padding:0;' href='#'>";
} else if (!editable && url === undefined) { } else if (!editable && url === undefined) {
html += "<div class='itemDetailGalleryLink itemDetailImage defaultCardBackground defaultCardBackground"+ cardBuilder.getDefaultBackgroundClass(item.Name) + "' is='emby-linkbutton' style='display:block;margin:0;padding:0;' href='#'>"; html += "<div class='itemDetailGalleryLink itemDetailImage defaultCardBackground defaultCardBackground" + cardBuilder.getDefaultBackgroundClass(item.Name) + "' is='emby-linkbutton' style='display:block;margin:0;padding:0;' href='#'>";
} else if (editable) { } else if (editable) {
html += "<a class='itemDetailGalleryLink' is='emby-linkbutton' style='display:block;margin:0;padding:0;' href='#'>"; html += "<a class='itemDetailGalleryLink' is='emby-linkbutton' style='display:block;margin:0;padding:0;' href='#'>";
} }

View File

@ -155,7 +155,7 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo
} }
function mapChannels(page, providerId) { function mapChannels(page, providerId) {
require(['components/channelmapper/channelmapper'], function (channelmapper) { require(['components/channelMapper/channelMapper'], function (channelmapper) {
new channelmapper({ new channelmapper({
serverId: ApiClient.serverInfo().Id, serverId: ApiClient.serverInfo().Id,
providerId: providerId providerId: providerId

View File

@ -1,4 +1,4 @@
define(['controllers/userpasswordpage', 'loading', 'libraryMenu', 'apphost', 'globalize', 'emby-button'], function (UserPasswordPage, loading, libraryMenu, appHost, globalize) { define(['controllers/dashboard/users/userpasswordpage', 'loading', 'libraryMenu', 'apphost', 'globalize', 'emby-button'], function (UserPasswordPage, loading, libraryMenu, appHost, globalize) {
'use strict'; 'use strict';
function reloadUser(page) { function reloadUser(page) {

View File

@ -8,85 +8,107 @@
<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> <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"> <fieldset class='verticalSection verticalSection-extrabottompadding'>
<input is="emby-input" type="text" id="txtLanNetworks" label="${LabelLanNetworks}" /> <legend><h3>${HeaderServerAddressSettings}</h3></legend>
<div class="fieldDescription">${LanNetworksHelp}</div>
</div>
<div class="inputContainer">
<input is="emby-input" type="text" id="txtLocalAddress" label="${LabelBindToLocalNetworkAddress}" />
<div class="fieldDescription">${LabelBindToLocalNetworkAddressHelp}</div>
</div>
<div class="inputContainer">
<input is="emby-input" type="number" id="txtPortNumber" label="${LabelLocalHttpServerPortNumber}" pattern="[0-9]*" required="required" min="1" max="65535" />
<div class="fieldDescription">${LabelLocalHttpServerPortNumberHelp}</div>
</div>
<div class="inputContainer">
<input is="emby-input" type="number" id="txtHttpsPort" pattern="[0-9]*" required="required" min="1" max="65535" label="${LabelHttpsPort}" />
<div class="fieldDescription">${LabelHttpsPortHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription"> <div class="inputContainer">
<label> <input is="emby-input" type="number" id="txtPortNumber" label="${LabelLocalHttpServerPortNumber}" pattern="[0-9]*" required="required" min="1" max="65535" />
<input type="checkbox" is="emby-checkbox" id="chkRemoteAccess" /> <div class="fieldDescription">${LabelLocalHttpServerPortNumberHelp}</div>
<span>${AllowRemoteAccess}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${AllowRemoteAccessHelp}</div>
</div>
<div class="inputContainer fldExternalAddressFilter hide">
<input is="emby-input" type="text" id="txtExternalAddressFilter" label="${LabelAllowedRemoteAddresses}" />
<div class="fieldDescription">${AllowedRemoteAddressesHelp}</div>
</div>
<div class="selectContainer fldExternalAddressFilterMode hide">
<select is="emby-select" id="selectExternalAddressFilterMode" label="${LabelAllowedRemoteAddressesMode}">
<option value="whitelist">${Whitelist}</option>
<option value="blacklist">${Blacklist}</option>
</select>
</div>
<div class="inputContainer fldPublicPort hide">
<input is="emby-input" type="number" label="${LabelPublicHttpPort}" id="txtPublicPort" pattern="[0-9]*" required="required" min="1" max="65535" />
<div class="fieldDescription">${LabelPublicHttpPortHelp}</div>
</div>
<div class="inputContainer fldPublicHttpsPort hide">
<input is="emby-input" type="number" id="txtPublicHttpsPort" pattern="[0-9]*" required="required" min="1" max="65535" label="${LabelPublicHttpsPort}" />
<div class="fieldDescription">${LabelPublicHttpsPortHelp}</div>
</div>
<div class="inputContainer fldBaseUrl">
<input is="emby-input" id="txtBaseUrl" type="text" label="${LabelBaseUrl}" />
<div class="fieldDescription">${LabelBaseUrlHelp}</div>
</div>
<div class="inputContainer fldCertificatePath hide">
<div style="display: flex; align-items: center;">
<div style="flex-grow:1;">
<input is="emby-input" type="text" id="txtCertificatePath" label="${LabelCustomCertificatePath}" autocomplete="off" />
</div>
<button type="button" is="paper-icon-button-light" id="btnSelectCertPath" title="${ButtonSelectDirectory}" class="emby-input-iconbutton"><span class="material-icons search"></span></button>
</div> </div>
<div class="fieldDescription">${LabelCustomCertificatePathHelp}</div>
</div>
<div class="inputContainer fldCertPassword hide"> <div class="checkboxContainer checkboxContainer-withDescription">
<input is="emby-input" id="txtCertPassword" type="password" label="${LabelCertificatePassword}" autocomplete="new-password" /> <label>
<div class="fieldDescription">${LabelCertificatePasswordHelp}</div> <input type="checkbox" is="emby-checkbox" id="chkEnableHttps" />
</div> <span>${LabelEnableHttps}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${LabelEnableHttpsHelp}</div>
</div>
<div class="selectContainer fldHttpsMode hide"> <div class="inputContainer">
<select is="emby-select" id="selectHttpsMode" label="${LabelSecureConnectionsMode}"> <input is="emby-input" type="number" id="txtHttpsPort" pattern="[0-9]*" required="required" min="1" max="65535" label="${LabelHttpsPort}" />
<option value="disabled">${Disabled}</option> <div class="fieldDescription">${LabelHttpsPortHelp}</div>
<option value="enabled">${PreferredNotRequired}</option> </div>
<option value="required">${RequiredForAllRemoteConnections}</option>
<option value="proxy">${HandledByProxy}</option>
</select>
</div>
<div class="checkboxContainer checkboxContainer-withDescription fldEnableUpnp hide"> <div class="inputContainer fldBaseUrl">
<label> <input is="emby-input" id="txtBaseUrl" type="text" label="${LabelBaseUrl}" />
<input type="checkbox" is="emby-checkbox" id="chkEnableUpnp" /> <div class="fieldDescription">${LabelBaseUrlHelp}</div>
<span>${LabelEnableAutomaticPortMap}</span> </div>
</label>
<div class="fieldDescription checkboxFieldDescription">${LabelEnableAutomaticPortMapHelp}</div> <div class="inputContainer">
</div> <input is="emby-input" type="text" id="txtLocalAddress" label="${LabelBindToLocalNetworkAddress}" />
<div class="fieldDescription">${LabelBindToLocalNetworkAddressHelp}</div>
</div>
<div class="inputContainer">
<input is="emby-input" type="text" id="txtLanNetworks" label="${LabelLanNetworks}" />
<div class="fieldDescription">${LanNetworksHelp}</div>
</div>
</fieldset>
<fieldset class='verticalSection verticalSection-extrabottompadding'>
<legend><h3>${HeaderHttpsSettings}</h3></legend>
<div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input type="checkbox" is="emby-checkbox" id="chkRequireHttps" />
<span>${LabelRequireHttps}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${LabelRequireHttpsHelp}</div>
</div>
<div class="inputContainer fldCertificatePath">
<div style="display: flex; align-items: center;">
<div style="flex-grow:1;">
<input is="emby-input" type="text" id="txtCertificatePath" label="${LabelCustomCertificatePath}" autocomplete="off" />
</div>
<button type="button" is="paper-icon-button-light" id="btnSelectCertPath" title="${ButtonSelectDirectory}" class="emby-input-iconbutton"><span class="material-icons search"></span></button>
</div>
<div class="fieldDescription">${LabelCustomCertificatePathHelp}</div>
</div>
<div class="inputContainer fldCertPassword">
<input is="emby-input" id="txtCertPassword" type="password" label="${LabelCertificatePassword}" autocomplete="new-password" />
<div class="fieldDescription">${LabelCertificatePasswordHelp}</div>
</div>
</fieldset>
<fieldset class='verticalSection verticalSection-extrabottompadding'>
<legend><h3>${HeaderRemoteAccessSettings}</h3></legend>
<div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input type="checkbox" is="emby-checkbox" id="chkRemoteAccess" />
<span>${AllowRemoteAccess}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${AllowRemoteAccessHelp}</div>
</div>
<div class="inputContainer fldExternalAddressFilter hide">
<input is="emby-input" type="text" id="txtExternalAddressFilter" label="${LabelAllowedRemoteAddresses}" />
<div class="fieldDescription">${AllowedRemoteAddressesHelp}</div>
</div>
<div class="selectContainer fldExternalAddressFilterMode hide">
<select is="emby-select" id="selectExternalAddressFilterMode" label="${LabelAllowedRemoteAddressesMode}">
<option value="whitelist">${Whitelist}</option>
<option value="blacklist">${Blacklist}</option>
</select>
</div>
<div class="checkboxContainer checkboxContainer-withDescription fldEnableUpnp hide">
<label>
<input type="checkbox" is="emby-checkbox" id="chkEnableUpnp" />
<span>${LabelEnableAutomaticPortMap}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${LabelEnableAutomaticPortMapHelp}</div>
</div>
<div class="inputContainer fldPublicPort hide">
<input is="emby-input" type="number" label="${LabelPublicHttpPort}" id="txtPublicPort" pattern="[0-9]*" required="required" min="1" max="65535" />
<div class="fieldDescription">${LabelPublicHttpPortHelp}</div>
</div>
<div class="inputContainer fldPublicHttpsPort hide">
<input is="emby-input" type="number" id="txtPublicHttpsPort" pattern="[0-9]*" required="required" min="1" max="65535" label="${LabelPublicHttpsPort}" />
<div class="fieldDescription">${LabelPublicHttpsPortHelp}</div>
</div>
</fieldset>
</div> </div>
<div> <div>
<button is="emby-button" type="submit" class="raised button-submit block"> <button is="emby-button" type="submit" class="raised button-submit block">

View File

@ -131,13 +131,13 @@ define([
path: '/dlnaprofile.html', path: '/dlnaprofile.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'dashboard/dlna/dlnaprofile' controller: 'dashboard/dlna/profile'
}); });
defineRoute({ defineRoute({
path: '/dlnaprofiles.html', path: '/dlnaprofiles.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'dashboard/dlna/dlnaprofiles' controller: 'dashboard/dlna/profiles'
}); });
defineRoute({ defineRoute({
path: '/addplugin.html', path: '/addplugin.html',
@ -149,7 +149,7 @@ define([
path: '/library.html', path: '/library.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'dashboard/medialibrarypage' controller: 'dashboard/mediaLibrary'
}); });
defineRoute({ defineRoute({
path: '/librarydisplay.html', path: '/librarydisplay.html',
@ -161,7 +161,7 @@ define([
path: '/dlnasettings.html', path: '/dlnasettings.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'dashboard/dlna/dlnasettings' controller: 'dashboard/dlna/settings'
}); });
defineRoute({ defineRoute({
path: '/edititemmetadata.html', path: '/edititemmetadata.html',
@ -174,6 +174,47 @@ define([
roles: 'admin', roles: 'admin',
controller: 'dashboard/encodingsettings' controller: 'dashboard/encodingsettings'
}); });
defineRoute({
path: '/log.html',
roles: 'admin',
controller: 'dashboard/logs'
});
defineRoute({
path: '/metadataimages.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/metadataImages'
});
defineRoute({
path: '/metadatanfo.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/metadatanfo'
});
defineRoute({
path: '/notificationsetting.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/notifications/notification'
});
defineRoute({
path: '/notificationsettings.html',
controller: 'dashboard/notifications/notifications',
autoFocus: false,
roles: 'admin'
});
defineRoute({
path: '/playbackconfiguration.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/playback'
});
defineRoute({
path: '/availableplugins.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/plugins/available'
});
defineRoute({ defineRoute({
path: '/home.html', path: '/home.html',
@ -194,7 +235,7 @@ define([
}); });
defineRoute({ defineRoute({
path: '/itemdetails.html', path: '/itemdetails.html',
controller: 'itemdetailpage', controller: 'itemDetails',
autoFocus: false, autoFocus: false,
transition: 'fade' transition: 'fade'
}); });
@ -227,23 +268,6 @@ define([
roles: 'admin', roles: 'admin',
controller: 'livetvtuner' controller: 'livetvtuner'
}); });
defineRoute({
path: '/log.html',
roles: 'admin',
controller: 'dashboard/logs'
});
defineRoute({
path: '/metadataimages.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/metadataimagespage'
});
defineRoute({
path: '/metadatanfo.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/metadatanfo'
});
defineRoute({ defineRoute({
path: '/movies.html', path: '/movies.html',
autoFocus: false, autoFocus: false,
@ -256,30 +280,6 @@ define([
autoFocus: false, autoFocus: false,
transition: 'fade' transition: 'fade'
}); });
defineRoute({
path: '/notificationsetting.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/notifications/notification'
});
defineRoute({
path: '/notificationsettings.html',
controller: 'dashboard/notifications/notifications',
autoFocus: false,
roles: 'admin'
});
defineRoute({
path: '/playbackconfiguration.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/playbackconfiguration'
});
defineRoute({
path: '/availableplugins.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/plugins/available'
});
defineRoute({ defineRoute({
path: '/installedplugins.html', path: '/installedplugins.html',
autoFocus: false, autoFocus: false,
@ -314,7 +314,7 @@ define([
path: '/streamingsettings.html', path: '/streamingsettings.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'dashboard/streamingsettings' controller: 'dashboard/streaming'
}); });
defineRoute({ defineRoute({
path: '/tv.html', path: '/tv.html',
@ -327,36 +327,36 @@ define([
path: '/useredit.html', path: '/useredit.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'useredit' controller: 'dashboard/users/useredit'
}); });
defineRoute({ defineRoute({
path: '/userlibraryaccess.html', path: '/userlibraryaccess.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'userlibraryaccess' controller: 'dashboard/users/userlibraryaccess'
}); });
defineRoute({ defineRoute({
path: '/usernew.html', path: '/usernew.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'usernew' controller: 'dashboard/users/usernew'
}); });
defineRoute({ defineRoute({
path: '/userparentalcontrol.html', path: '/userparentalcontrol.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'userparentalcontrol' controller: 'dashboard/users/userparentalcontrol'
}); });
defineRoute({ defineRoute({
path: '/userpassword.html', path: '/userpassword.html',
autoFocus: false, autoFocus: false,
controller: 'userpasswordpage' controller: 'dashboard/users/userpasswordpage'
}); });
defineRoute({ defineRoute({
path: '/userprofiles.html', path: '/userprofiles.html',
autoFocus: false, autoFocus: false,
roles: 'admin', roles: 'admin',
controller: 'userprofilespage' controller: 'dashboard/users/userprofilespage'
}); });
defineRoute({ defineRoute({
@ -375,7 +375,7 @@ define([
path: '/wizardlibrary.html', path: '/wizardlibrary.html',
autoFocus: false, autoFocus: false,
anonymous: true, anonymous: true,
controller: 'dashboard/medialibrarypage' controller: 'dashboard/mediaLibrary'
}); });
defineRoute({ defineRoute({
path: '/wizardsettings.html', path: '/wizardsettings.html',

View File

@ -153,6 +153,14 @@ import events from 'events';
return this.get('datetimelocale', false); return this.get('datetimelocale', false);
} }
export function chromecastVersion(val) {
if (val !== undefined) {
return this.set('chromecastVersion', val.toString());
}
return this.get('chromecastVersion') || 'stable';
}
export function skipBackLength(val) { export function skipBackLength(val) {
if (val !== undefined) { if (val !== undefined) {
return this.set('skipBackLength', val.toString()); return this.set('skipBackLength', val.toString());

View File

@ -375,8 +375,8 @@ var AppInfo = {};
define('filesystem', [scriptsPath + '/filesystem'], returnFirstDependency); define('filesystem', [scriptsPath + '/filesystem'], returnFirstDependency);
define('lazyLoader', [componentsPath + '/lazyloader/lazyloader-intersectionobserver'], returnFirstDependency); define('lazyLoader', [componentsPath + '/lazyLoader/lazyLoaderIntersectionObserver'], returnFirstDependency);
define('shell', [componentsPath + '/shell'], returnFirstDependency); define('shell', [scriptsPath + '/shell'], returnFirstDependency);
if ('registerElement' in document) { if ('registerElement' in document) {
define('registerElement', []); define('registerElement', []);
@ -397,8 +397,8 @@ var AppInfo = {};
define('prompt', [componentsPath + '/prompt/prompt'], returnFirstDependency); define('prompt', [componentsPath + '/prompt/prompt'], returnFirstDependency);
define('loading', [componentsPath + '/loading/loading'], returnFirstDependency); define('loading', [componentsPath + '/loading/loading'], returnFirstDependency);
define('multi-download', [componentsPath + '/multidownload'], returnFirstDependency); define('multi-download', [scriptsPath + '/multiDownload'], returnFirstDependency);
define('fileDownloader', [componentsPath + '/filedownloader'], returnFirstDependency); define('fileDownloader', [scriptsPath + '/fileDownloader'], returnFirstDependency);
define('castSenderApiLoader', [componentsPath + '/castSenderApi'], returnFirstDependency); define('castSenderApiLoader', [componentsPath + '/castSenderApi'], returnFirstDependency);
} }
@ -481,16 +481,16 @@ var AppInfo = {};
var list = [ var list = [
'components/playback/playaccessvalidation', 'components/playback/playaccessvalidation',
'components/playback/experimentalwarnings', 'components/playback/experimentalwarnings',
'components/htmlaudioplayer/plugin', 'components/htmlAudioPlayer/plugin',
'components/htmlvideoplayer/plugin', 'components/htmlVideoPlayer/plugin',
'components/photoplayer/plugin', 'components/photoPlayer/plugin',
'components/youtubeplayer/plugin', 'components/youtubeplayer/plugin',
'components/backdropscreensaver/plugin', 'components/backdropScreensaver/plugin',
'components/logoscreensaver/plugin' 'components/logoScreensaver/plugin'
]; ];
if (appHost.supports('remotecontrol')) { if (appHost.supports('remotecontrol')) {
list.push('components/sessionplayer'); list.push('components/sessionPlayer');
if (browser.chrome || browser.opera) { if (browser.chrome || browser.opera) {
list.push('components/chromecast/chromecastplayer'); list.push('components/chromecast/chromecastplayer');
@ -532,16 +532,16 @@ var AppInfo = {};
window.Emby.Page = appRouter; window.Emby.Page = appRouter;
require(['emby-button', 'scripts/themeloader', 'libraryMenu', 'scripts/routes'], function () { require(['emby-button', 'scripts/themeLoader', 'libraryMenu', 'scripts/routes'], function () {
Emby.Page.start({ Emby.Page.start({
click: false, click: false,
hashbang: true hashbang: true
}); });
require(['components/thememediaplayer', 'scripts/autobackdrops']); require(['components/themeMediaPlayer', 'scripts/autoBackdrops']);
if (!browser.tv && !browser.xboxOne && !browser.ps4) { if (!browser.tv && !browser.xboxOne && !browser.ps4) {
require(['components/nowplayingbar/nowplayingbar']); require(['components/nowPlayingBar/nowPlayingBar']);
} }
if (appHost.supports('remotecontrol')) { if (appHost.supports('remotecontrol')) {
@ -630,23 +630,23 @@ var AppInfo = {};
var scriptsPath = getScriptsPath(); var scriptsPath = getScriptsPath();
var paths = { var paths = {
browserdeviceprofile: 'scripts/browserdeviceprofile', browserdeviceprofile: 'scripts/browserDeviceProfile',
browser: 'scripts/browser', browser: 'scripts/browser',
libraryBrowser: 'scripts/librarybrowser', libraryBrowser: 'scripts/libraryBrowser',
inputManager: 'scripts/inputManager', inputManager: 'scripts/inputManager',
datetime: 'scripts/datetime', datetime: 'scripts/datetime',
globalize: 'scripts/globalize', globalize: 'scripts/globalize',
dfnshelper: 'scripts/dfnshelper', dfnshelper: 'scripts/dfnshelper',
libraryMenu: 'scripts/librarymenu', libraryMenu: 'scripts/libraryMenu',
playlisteditor: componentsPath + '/playlisteditor/playlisteditor', playlisteditor: componentsPath + '/playlisteditor/playlisteditor',
medialibrarycreator: componentsPath + '/medialibrarycreator/medialibrarycreator', medialibrarycreator: componentsPath + '/mediaLibraryCreator/mediaLibraryCreator',
medialibraryeditor: componentsPath + '/medialibraryeditor/medialibraryeditor', medialibraryeditor: componentsPath + '/mediaLibraryEditor/mediaLibraryEditor',
imageoptionseditor: componentsPath + '/imageoptionseditor/imageoptionseditor', imageoptionseditor: componentsPath + '/imageOptionsEditor/imageOptionsEditor',
apphost: componentsPath + '/apphost', apphost: componentsPath + '/apphost',
visibleinviewport: bowerPath + '/visibleinviewport', visibleinviewport: bowerPath + '/visibleinviewport',
qualityoptions: componentsPath + '/qualityoptions', qualityoptions: componentsPath + '/qualityOptions',
focusManager: componentsPath + '/focusManager', focusManager: componentsPath + '/focusManager',
itemHelper: componentsPath + '/itemhelper', itemHelper: componentsPath + '/itemHelper',
itemShortcuts: componentsPath + '/shortcuts', itemShortcuts: componentsPath + '/shortcuts',
playQueueManager: componentsPath + '/playback/playqueuemanager', playQueueManager: componentsPath + '/playback/playqueuemanager',
nowPlayingHelper: componentsPath + '/playback/nowplayinghelper', nowPlayingHelper: componentsPath + '/playback/nowplayinghelper',
@ -738,7 +738,7 @@ var AppInfo = {};
// there are several objects that need to be instantiated // there are several objects that need to be instantiated
// TODO find a better way to do this // TODO find a better way to do this
define('appFooter', [componentsPath + '/appfooter/appfooter'], returnFirstDependency); define('appFooter', [componentsPath + '/appFooter/appFooter'], returnFirstDependency);
define('appFooter-shared', ['appFooter'], createSharedAppFooter); define('appFooter-shared', ['appFooter'], createSharedAppFooter);
// TODO remove these libraries // TODO remove these libraries
@ -773,23 +773,23 @@ var AppInfo = {};
define('chromecastHelper', [componentsPath + '/chromecast/chromecasthelpers'], returnFirstDependency); define('chromecastHelper', [componentsPath + '/chromecast/chromecasthelpers'], returnFirstDependency);
define('mediaSession', [componentsPath + '/playback/mediasession'], returnFirstDependency); define('mediaSession', [componentsPath + '/playback/mediasession'], returnFirstDependency);
define('actionsheet', [componentsPath + '/actionsheet/actionsheet'], returnFirstDependency); define('actionsheet', [componentsPath + '/actionSheet/actionSheet'], returnFirstDependency);
define('tunerPicker', [componentsPath + '/tunerpicker'], returnFirstDependency); define('tunerPicker', [componentsPath + '/tunerPicker'], returnFirstDependency);
define('mainTabsManager', [componentsPath + '/maintabsmanager'], returnFirstDependency); define('mainTabsManager', [componentsPath + '/maintabsmanager'], returnFirstDependency);
define('imageLoader', [componentsPath + '/images/imageLoader'], returnFirstDependency); define('imageLoader', [componentsPath + '/images/imageLoader'], returnFirstDependency);
define('directorybrowser', [componentsPath + '/directorybrowser/directorybrowser'], returnFirstDependency); define('directorybrowser', [componentsPath + '/directorybrowser/directorybrowser'], returnFirstDependency);
define('metadataEditor', [componentsPath + '/metadataeditor/metadataeditor'], returnFirstDependency); define('metadataEditor', [componentsPath + '/metadataEditor/metadataEditor'], returnFirstDependency);
define('personEditor', [componentsPath + '/metadataeditor/personeditor'], returnFirstDependency); define('personEditor', [componentsPath + '/metadataEditor/personEditor'], returnFirstDependency);
define('playerSelectionMenu', [componentsPath + '/playback/playerSelectionMenu'], returnFirstDependency); define('playerSelectionMenu', [componentsPath + '/playback/playerSelectionMenu'], returnFirstDependency);
define('playerSettingsMenu', [componentsPath + '/playback/playersettingsmenu'], returnFirstDependency); define('playerSettingsMenu', [componentsPath + '/playback/playersettingsmenu'], returnFirstDependency);
define('playMethodHelper', [componentsPath + '/playback/playmethodhelper'], returnFirstDependency); define('playMethodHelper', [componentsPath + '/playback/playmethodhelper'], returnFirstDependency);
define('brightnessOsd', [componentsPath + '/playback/brightnessosd'], returnFirstDependency); define('brightnessOsd', [componentsPath + '/playback/brightnessosd'], returnFirstDependency);
define('alphaNumericShortcuts', [scriptsPath + '/alphanumericshortcuts'], returnFirstDependency); define('alphaNumericShortcuts', [scriptsPath + '/alphanumericshortcuts'], returnFirstDependency);
define('multiSelect', [componentsPath + '/multiselect/multiselect'], returnFirstDependency); define('multiSelect', [componentsPath + '/multiSelect/multiSelect'], returnFirstDependency);
define('alphaPicker', [componentsPath + '/alphapicker/alphapicker'], returnFirstDependency); define('alphaPicker', [componentsPath + '/alphaPicker/alphaPicker'], returnFirstDependency);
define('tabbedView', [componentsPath + '/tabbedview/tabbedview'], returnFirstDependency); define('tabbedView', [componentsPath + '/tabbedview/tabbedview'], returnFirstDependency);
define('itemsTab', [componentsPath + '/tabbedview/itemstab'], returnFirstDependency); define('itemsTab', [componentsPath + '/tabbedview/itemstab'], returnFirstDependency);
define('collectionEditor', [componentsPath + '/collectioneditor/collectioneditor'], returnFirstDependency); define('collectionEditor', [componentsPath + '/collectionEditor/collectionEditor'], returnFirstDependency);
define('serverRestartDialog', [componentsPath + '/serverRestartDialog'], returnFirstDependency); define('serverRestartDialog', [componentsPath + '/serverRestartDialog'], returnFirstDependency);
define('playlistEditor', [componentsPath + '/playlisteditor/playlisteditor'], returnFirstDependency); define('playlistEditor', [componentsPath + '/playlisteditor/playlisteditor'], returnFirstDependency);
define('recordingCreator', [componentsPath + '/recordingcreator/recordingcreator'], returnFirstDependency); define('recordingCreator', [componentsPath + '/recordingcreator/recordingcreator'], returnFirstDependency);
@ -803,9 +803,9 @@ var AppInfo = {};
define('itemIdentifier', [componentsPath + '/itemidentifier/itemidentifier'], returnFirstDependency); define('itemIdentifier', [componentsPath + '/itemidentifier/itemidentifier'], returnFirstDependency);
define('itemMediaInfo', [componentsPath + '/itemMediaInfo/itemMediaInfo'], returnFirstDependency); define('itemMediaInfo', [componentsPath + '/itemMediaInfo/itemMediaInfo'], returnFirstDependency);
define('mediaInfo', [componentsPath + '/mediainfo/mediainfo'], returnFirstDependency); define('mediaInfo', [componentsPath + '/mediainfo/mediainfo'], returnFirstDependency);
define('itemContextMenu', [componentsPath + '/itemcontextmenu'], returnFirstDependency); define('itemContextMenu', [componentsPath + '/itemContextMenu'], returnFirstDependency);
define('imageEditor', [componentsPath + '/imageeditor/imageeditor'], returnFirstDependency); define('imageEditor', [componentsPath + '/imageeditor/imageeditor'], returnFirstDependency);
define('imageDownloader', [componentsPath + '/imagedownloader/imagedownloader'], returnFirstDependency); define('imageDownloader', [componentsPath + '/imageDownloader/imageDownloader'], returnFirstDependency);
define('dom', [scriptsPath + '/dom'], returnFirstDependency); define('dom', [scriptsPath + '/dom'], returnFirstDependency);
define('playerStats', [componentsPath + '/playerstats/playerstats'], returnFirstDependency); define('playerStats', [componentsPath + '/playerstats/playerstats'], returnFirstDependency);
define('searchFields', [componentsPath + '/search/searchfields'], returnFirstDependency); define('searchFields', [componentsPath + '/search/searchfields'], returnFirstDependency);
@ -813,9 +813,9 @@ var AppInfo = {};
define('upNextDialog', [componentsPath + '/upnextdialog/upnextdialog'], returnFirstDependency); define('upNextDialog', [componentsPath + '/upnextdialog/upnextdialog'], returnFirstDependency);
define('subtitleAppearanceHelper', [componentsPath + '/subtitlesettings/subtitleappearancehelper'], returnFirstDependency); define('subtitleAppearanceHelper', [componentsPath + '/subtitlesettings/subtitleappearancehelper'], returnFirstDependency);
define('subtitleSettings', [componentsPath + '/subtitlesettings/subtitlesettings'], returnFirstDependency); define('subtitleSettings', [componentsPath + '/subtitlesettings/subtitlesettings'], returnFirstDependency);
define('displaySettings', [componentsPath + '/displaysettings/displaysettings'], returnFirstDependency); define('displaySettings', [componentsPath + '/displaySettings/displaySettings'], returnFirstDependency);
define('playbackSettings', [componentsPath + '/playbacksettings/playbacksettings'], returnFirstDependency); define('playbackSettings', [componentsPath + '/playbackSettings/playbackSettings'], returnFirstDependency);
define('homescreenSettings', [componentsPath + '/homescreensettings/homescreensettings'], returnFirstDependency); define('homescreenSettings', [componentsPath + '/homeScreenSettings/homeScreenSettings'], returnFirstDependency);
define('playbackManager', [componentsPath + '/playback/playbackmanager'], getPlaybackManager); define('playbackManager', [componentsPath + '/playback/playbackmanager'], getPlaybackManager);
define('layoutManager', [componentsPath + '/layoutManager', 'apphost'], getLayoutManager); define('layoutManager', [componentsPath + '/layoutManager', 'apphost'], getLayoutManager);
define('homeSections', [componentsPath + '/homesections/homesections'], returnFirstDependency); define('homeSections', [componentsPath + '/homesections/homesections'], returnFirstDependency);
@ -826,10 +826,10 @@ var AppInfo = {};
define('cardBuilder', [componentsPath + '/cardbuilder/cardBuilder'], returnFirstDependency); define('cardBuilder', [componentsPath + '/cardbuilder/cardBuilder'], returnFirstDependency);
define('peoplecardbuilder', [componentsPath + '/cardbuilder/peoplecardbuilder'], returnFirstDependency); define('peoplecardbuilder', [componentsPath + '/cardbuilder/peoplecardbuilder'], returnFirstDependency);
define('chaptercardbuilder', [componentsPath + '/cardbuilder/chaptercardbuilder'], returnFirstDependency); define('chaptercardbuilder', [componentsPath + '/cardbuilder/chaptercardbuilder'], returnFirstDependency);
define('deleteHelper', [componentsPath + '/deletehelper'], returnFirstDependency); define('deleteHelper', [componentsPath + '/deleteHelper'], returnFirstDependency);
define('tvguide', [componentsPath + '/guide/guide'], returnFirstDependency); define('tvguide', [componentsPath + '/guide/guide'], returnFirstDependency);
define('guide-settings-dialog', [componentsPath + '/guide/guide-settings'], returnFirstDependency); define('guide-settings-dialog', [componentsPath + '/guide/guide-settings'], returnFirstDependency);
define('loadingDialog', [componentsPath + '/loadingdialog/loadingdialog'], returnFirstDependency); define('loadingDialog', [componentsPath + '/loadingDialog/loadingDialog'], returnFirstDependency);
define('viewManager', [componentsPath + '/viewManager/viewManager'], function (viewManager) { define('viewManager', [componentsPath + '/viewManager/viewManager'], function (viewManager) {
window.ViewManager = viewManager; window.ViewManager = viewManager;
viewManager.dispatchPageEvents(true); viewManager.dispatchPageEvents(true);
@ -843,18 +843,17 @@ var AppInfo = {};
define('viewSettings', [componentsPath + '/viewsettings/viewsettings'], returnFirstDependency); define('viewSettings', [componentsPath + '/viewsettings/viewsettings'], returnFirstDependency);
define('filterMenu', [componentsPath + '/filtermenu/filtermenu'], returnFirstDependency); define('filterMenu', [componentsPath + '/filtermenu/filtermenu'], returnFirstDependency);
define('sortMenu', [componentsPath + '/sortmenu/sortmenu'], returnFirstDependency); define('sortMenu', [componentsPath + '/sortmenu/sortmenu'], returnFirstDependency);
define('idb', [componentsPath + '/idb'], returnFirstDependency); define('sanitizefilename', [componentsPath + '/sanitizeFilename'], returnFirstDependency);
define('sanitizefilename', [componentsPath + '/sanitizefilename'], returnFirstDependency);
define('toast', [componentsPath + '/toast/toast'], returnFirstDependency); define('toast', [componentsPath + '/toast/toast'], returnFirstDependency);
define('scrollHelper', [componentsPath + '/scrollhelper'], returnFirstDependency); define('scrollHelper', [componentsPath + '/scrollHelper'], returnFirstDependency);
define('touchHelper', [componentsPath + '/touchhelper'], returnFirstDependency); define('touchHelper', [scriptsPath + '/touchHelper'], returnFirstDependency);
define('imageUploader', [componentsPath + '/imageuploader/imageuploader'], returnFirstDependency); define('imageUploader', [componentsPath + '/imageUploader/imageUploader'], returnFirstDependency);
define('htmlMediaHelper', [componentsPath + '/htmlMediaHelper'], returnFirstDependency); define('htmlMediaHelper', [componentsPath + '/htmlMediaHelper'], returnFirstDependency);
define('viewContainer', [componentsPath + '/viewContainer'], returnFirstDependency); define('viewContainer', [componentsPath + '/viewContainer'], returnFirstDependency);
define('dialogHelper', [componentsPath + '/dialogHelper/dialogHelper'], returnFirstDependency); define('dialogHelper', [componentsPath + '/dialogHelper/dialogHelper'], returnFirstDependency);
define('serverNotifications', [componentsPath + '/serverNotifications'], returnFirstDependency); define('serverNotifications', [scriptsPath + '/serverNotifications'], returnFirstDependency);
define('skinManager', [componentsPath + '/skinManager'], returnFirstDependency); define('skinManager', [componentsPath + '/skinManager'], returnFirstDependency);
define('keyboardnavigation', [scriptsPath + '/keyboardnavigation'], returnFirstDependency); define('keyboardnavigation', [scriptsPath + '/keyboardNavigation'], returnFirstDependency);
define('mouseManager', [scriptsPath + '/mouseManager'], returnFirstDependency); define('mouseManager', [scriptsPath + '/mouseManager'], returnFirstDependency);
define('scrollManager', [componentsPath + '/scrollManager'], returnFirstDependency); define('scrollManager', [componentsPath + '/scrollManager'], returnFirstDependency);
define('autoFocuser', [componentsPath + '/autoFocuser'], returnFirstDependency); define('autoFocuser', [componentsPath + '/autoFocuser'], returnFirstDependency);

View File

@ -24,13 +24,13 @@
"AspectRatio": "Poměr stran", "AspectRatio": "Poměr stran",
"AttributeNew": "Nové", "AttributeNew": "Nové",
"Audio": "Zvuk", "Audio": "Zvuk",
"Auto": "Automatizovat", "Auto": "Automaticky",
"Backdrop": "Pozadí", "Backdrop": "Pozadí",
"Backdrops": "Pozadí", "Backdrops": "Pozadí",
"BirthDateValue": "Narozen: {0}", "BirthDateValue": "Narozen: {0}",
"BirthLocation": "Místo narození", "BirthLocation": "Místo narození",
"BirthPlaceValue": "Místo narození: {0}", "BirthPlaceValue": "Místo narození: {0}",
"BookLibraryHelp": "Audio a textové knihy jsou podporovány. Přečtěte si {0}pravidla pro názvy knih {1}.", "BookLibraryHelp": "Audio a textové knihy jsou podporovány. Přečtěte si {0} pravidla pojmenování knih {1}.",
"Books": "Knihy", "Books": "Knihy",
"Box": "Pouzdro", "Box": "Pouzdro",
"BoxRear": "Zadní část pouzdra", "BoxRear": "Zadní část pouzdra",
@ -167,7 +167,7 @@
"DownloadingDots": "Stahování...", "DownloadingDots": "Stahování...",
"Downloads": "Stahování", "Downloads": "Stahování",
"DrmChannelsNotImported": "Kanál s DRM nebude importován.", "DrmChannelsNotImported": "Kanál s DRM nebude importován.",
"DropShadow": "Vrhat stín", "DropShadow": "Stín",
"EasyPasswordHelp": "Váš PIN kód je snadné používat pro přístup v režimu offline s podporovanými Jellyfin aplikacemi, může být také použit pro snadné přihlášení v lokální síti.", "EasyPasswordHelp": "Váš PIN kód je snadné používat pro přístup v režimu offline s podporovanými Jellyfin aplikacemi, může být také použit pro snadné přihlášení v lokální síti.",
"Edit": "Upravit", "Edit": "Upravit",
"EditImages": "Editace obrázků", "EditImages": "Editace obrázků",
@ -197,8 +197,6 @@
"ErrorMessageStartHourGreaterThanEnd": "Čas ukončení musí být větší než čas startu.", "ErrorMessageStartHourGreaterThanEnd": "Čas ukončení musí být větší než čas startu.",
"ErrorMessageUsernameInUse": "Uživatelské jméno se již používá. Prosím, vyberte nový název a zkuste to znovu.", "ErrorMessageUsernameInUse": "Uživatelské jméno se již používá. Prosím, vyberte nový název a zkuste to znovu.",
"ErrorPleaseSelectLineup": "Vyberte prosím sestavu a zkuste to znovu. Pokud nejsou k dispozici žádné sestavy, zkontrolujte, zda je vaše uživatelské jméno, heslo a poštovní směrovací číslo správné.", "ErrorPleaseSelectLineup": "Vyberte prosím sestavu a zkuste to znovu. Pokud nejsou k dispozici žádné sestavy, zkontrolujte, zda je vaše uživatelské jméno, heslo a poštovní směrovací číslo správné.",
"ErrorReachingJellyfinConnect": "Došlo k chybě při navázání spojení k serveru Jellyfin Connect. Ujistěte se, zda je funkční připojení k internetu a zkuste to znovu.",
"ErrorRemovingJellyfinConnectAccount": "Nastala chyba při odebrání účtu Jellyfin Connect. Zkontrolujte zda máte aktivní internetové připojení a zkuste znovu.",
"ErrorSavingTvProvider": "Při ukládání poskytovatele TV došlo k chybě. Prosím, ujistěte se, že je přístupný a zkuste to znovu.", "ErrorSavingTvProvider": "Při ukládání poskytovatele TV došlo k chybě. Prosím, ujistěte se, že je přístupný a zkuste to znovu.",
"ExitFullscreen": "Opustit celou obrazovku", "ExitFullscreen": "Opustit celou obrazovku",
"ExtraLarge": "Extra velký", "ExtraLarge": "Extra velký",
@ -436,7 +434,6 @@
"LabelAccessDay": "Den týdne:", "LabelAccessDay": "Den týdne:",
"LabelAccessEnd": "Konec:", "LabelAccessEnd": "Konec:",
"LabelAccessStart": "Začátek:", "LabelAccessStart": "Začátek:",
"LabelAddConnectSupporterHelp": "Chcete-li přidat uživatele, který není uveden v seznamu, budete muset nejprve propojit svůj účet Jellyfin Connect ze strany profilu uživatele.",
"LabelAddedOnDate": "Přidáno {0}", "LabelAddedOnDate": "Přidáno {0}",
"LabelAirDate": "Dny vysílání:", "LabelAirDate": "Dny vysílání:",
"LabelAirDays": "Vysíláno:", "LabelAirDays": "Vysíláno:",
@ -511,7 +508,7 @@
"LabelDownloadInternetMetadataHelp": "Jellyfin server může stahovat informace o vašich médiích, aby umožnil vylepšené prezentace.", "LabelDownloadInternetMetadataHelp": "Jellyfin server může stahovat informace o vašich médiích, aby umožnil vylepšené prezentace.",
"LabelDownloadLanguages": "Stahované jazyky:", "LabelDownloadLanguages": "Stahované jazyky:",
"LabelDropImageHere": "Sem přetáhněte obrázek nebo klikněte pro procházení.", "LabelDropImageHere": "Sem přetáhněte obrázek nebo klikněte pro procházení.",
"LabelDropShadow": "Vrhat stín:", "LabelDropShadow": "Typ zvýraznění titulků:",
"LabelEasyPinCode": "Kód Easy pin:", "LabelEasyPinCode": "Kód Easy pin:",
"LabelEmbedAlbumArtDidl": "Vložit alba do DIDL", "LabelEmbedAlbumArtDidl": "Vložit alba do DIDL",
"LabelEmbedAlbumArtDidlHelp": "Některá zařízení preferují tento způsob pro získání alba. Jiné mohou selhat pokud máte tuto volbu povolenu.", "LabelEmbedAlbumArtDidlHelp": "Některá zařízení preferují tento způsob pro získání alba. Jiné mohou selhat pokud máte tuto volbu povolenu.",
@ -546,8 +543,6 @@
"LabelFormat": "Formát:", "LabelFormat": "Formát:",
"LabelFree": "Zdarma", "LabelFree": "Zdarma",
"LabelFriendlyName": "Přívětivý název:", "LabelFriendlyName": "Přívětivý název:",
"LabelFriendlyServerName": "Název serveru:",
"LabelFriendlyServerNameHelp": "Toto jméno bude použito jako identifikace serveru, ponecháte-li prázdné bude použit název počítače.",
"LabelFromHelp": "Například: {0} (na serveru)", "LabelFromHelp": "Například: {0} (na serveru)",
"LabelGroupMoviesIntoCollections": "Seskupit filmy do kolekcí", "LabelGroupMoviesIntoCollections": "Seskupit filmy do kolekcí",
"LabelGroupMoviesIntoCollectionsHelp": "Při zobrazení seznamů filmu, budou filmy patřící do kolekce, zobrazeny jako jedna položka.", "LabelGroupMoviesIntoCollectionsHelp": "Při zobrazení seznamů filmu, budou filmy patřící do kolekce, zobrazeny jako jedna položka.",
@ -580,7 +575,6 @@
"LabelKodiMetadataSaveImagePathsHelp": "Toto nastavení je doporučeno, pokud používáte názvy souborů (obrázků), které nejsou v souladu s pokyny Kodi.", "LabelKodiMetadataSaveImagePathsHelp": "Toto nastavení je doporučeno, pokud používáte názvy souborů (obrázků), které nejsou v souladu s pokyny Kodi.",
"LabelLanguage": "Jazyk:", "LabelLanguage": "Jazyk:",
"LabelLastResult": "Poslední výsledky:", "LabelLastResult": "Poslední výsledky:",
"LabelLimitIntrosToUnwatchedContent": "Přehrávat trailery pouze u nezhlédnutého obsahu",
"LabelLineup": "Hlavní linie:", "LabelLineup": "Hlavní linie:",
"LabelLocalHttpServerPortNumber": "Lokální HTTP port:", "LabelLocalHttpServerPortNumber": "Lokální HTTP port:",
"LabelLocalHttpServerPortNumberHelp": "Číslo portu TCP, ke kterému by se měl připojit HTTP server Jellyfin.", "LabelLocalHttpServerPortNumberHelp": "Číslo portu TCP, ke kterému by se měl připojit HTTP server Jellyfin.",
@ -823,8 +817,6 @@
"MessagePasswordResetForUsers": "Obnovení hesla bylo provedeno následujícími uživateli. Nyní se mohou přihlásit pomocí kódů PIN, které byly použity k provedení resetu.", "MessagePasswordResetForUsers": "Obnovení hesla bylo provedeno následujícími uživateli. Nyní se mohou přihlásit pomocí kódů PIN, které byly použity k provedení resetu.",
"MessagePlayAccessRestricted": "Přehrávání tohoto obsahu je aktuálně omezeno. Další informace získáte od správce serveru.", "MessagePlayAccessRestricted": "Přehrávání tohoto obsahu je aktuálně omezeno. Další informace získáte od správce serveru.",
"MessagePleaseEnsureInternetMetadata": "Prosím zkontrolujte, zda máte povoleno stahování metadat z internetu.", "MessagePleaseEnsureInternetMetadata": "Prosím zkontrolujte, zda máte povoleno stahování metadat z internetu.",
"MessagePleaseRestart": "Pro dokončení aktualizací, prosím, restartujte.",
"MessagePleaseRestartServerToFinishUpdating": "Restartujte, prosím, server pro aplikaci aktualizací.",
"MessagePluginConfigurationRequiresLocalAccess": "Pro konfiguraci zásuvného modulu se přihlaste přímo na lokální server.", "MessagePluginConfigurationRequiresLocalAccess": "Pro konfiguraci zásuvného modulu se přihlaste přímo na lokální server.",
"MessagePluginInstallDisclaimer": "Zasuvné moduly vytvořené členy Jellyfin komunity jsou skvělý způsob, jak zvýšit svůj Jellyfin prožitek pomocí doplňkových funkcí :-) Před instalací, se prosím seznamte se všemi dopady, které mohou mít na Jellyfin Server, jako je například delší prohledávání knihovny, další zpracování na pozadí, a snížení stability systému.", "MessagePluginInstallDisclaimer": "Zasuvné moduly vytvořené členy Jellyfin komunity jsou skvělý způsob, jak zvýšit svůj Jellyfin prožitek pomocí doplňkových funkcí :-) Před instalací, se prosím seznamte se všemi dopady, které mohou mít na Jellyfin Server, jako je například delší prohledávání knihovny, další zpracování na pozadí, a snížení stability systému.",
"MessageReenableUser": "Viz níže pro znovuzapnutí", "MessageReenableUser": "Viz níže pro znovuzapnutí",
@ -959,7 +951,7 @@
"OptionMissingEpisode": "Chybějící episody", "OptionMissingEpisode": "Chybějící episody",
"OptionMonday": "Pondělí", "OptionMonday": "Pondělí",
"OptionNameSort": "Název", "OptionNameSort": "Název",
"OptionNew": "Nový...", "OptionNew": "Nový",
"OptionNone": "Žádný", "OptionNone": "Žádný",
"OptionOnAppStartup": "Při spuštění aplikace", "OptionOnAppStartup": "Při spuštění aplikace",
"OptionOnInterval": "V intervalu", "OptionOnInterval": "V intervalu",
@ -977,7 +969,7 @@
"OptionReportByteRangeSeekingWhenTranscoding": "Hlásit, že server podporuje vyhledávání bajtů při překódování", "OptionReportByteRangeSeekingWhenTranscoding": "Hlásit, že server podporuje vyhledávání bajtů při překódování",
"OptionReportByteRangeSeekingWhenTranscodingHelp": "Tento krok je nutný pro některá zařízení, které nemají moc dobrý time seek.", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Tento krok je nutný pro některá zařízení, které nemají moc dobrý time seek.",
"OptionRequirePerfectSubtitleMatch": "Stahovat jen titulky, které perfektně sedí k mým video souborům", "OptionRequirePerfectSubtitleMatch": "Stahovat jen titulky, které perfektně sedí k mým video souborům",
"OptionResElement": "Zdrojový element", "OptionResElement": "Prvek \"res\"",
"OptionResumable": "Pozastavavitelný", "OptionResumable": "Pozastavavitelný",
"OptionRuntime": "Délka", "OptionRuntime": "Délka",
"OptionSaturday": "Sobota", "OptionSaturday": "Sobota",
@ -1219,7 +1211,6 @@
"Yes": "Ano", "Yes": "Ano",
"Yesterday": "Včera", "Yesterday": "Včera",
"Absolute": "Absolutní", "Absolute": "Absolutní",
"AddUserByManually": "Přidat místního uživatele ručním zadáním informací.",
"AirDate": "Datum vysílání", "AirDate": "Datum vysílání",
"Aired": "Vysíláno", "Aired": "Vysíláno",
"Alerts": "Upozornění", "Alerts": "Upozornění",
@ -1229,26 +1220,22 @@
"AllowMediaConversion": "Povolit konverzi médií", "AllowMediaConversion": "Povolit konverzi médií",
"AllowMediaConversionHelp": "Povolit nebo zakázat přístup k funkci konverze médií.", "AllowMediaConversionHelp": "Povolit nebo zakázat přístup k funkci konverze médií.",
"AllowOnTheFlySubtitleExtraction": "Povolit extrahování titulků za běhu", "AllowOnTheFlySubtitleExtraction": "Povolit extrahování titulků za běhu",
"AllowOnTheFlySubtitleExtractionHelp": "Vložené titulky mohou být extrahovány z videa a dodávány do aplikací ve formě prostého textu, aby se zabránilo překódování videa. V některých systémech to může trvat dlouho a způsobit zasekávání přehrávání videa. Při vypnutí funkce budou během překódování obsažené titulky vypáleny do obrazu, pokud je klientské zařízení nativně nepodporuje.", "AllowOnTheFlySubtitleExtractionHelp": "Vložené titulky je možné vytáhnout z videa a dodat klientům v textové podobě, aby nebylo nutné video překódovat. Na některých systémech to může trvat dlouho a způsobit zasekávání videa. Pokud tuto funkci vypnete, při překódování budou vložené titulky vypáleny do obrazu, pokud je klientské zařízení nativně nepodporuje.",
"AllowRemoteAccess": "Povolit vzdálené připojení na tento Jellyfin server.", "AllowRemoteAccess": "Povolit vzdálené připojení na tento Jellyfin server.",
"AllowRemoteAccessHelp": "Pokud není zapnuto, všechna vzdálená připojení budou blokována.", "AllowRemoteAccessHelp": "Pokud není zapnuto, všechna vzdálená připojení budou blokována.",
"AllowSeasonalThemesHelp": "Pokud je povoleno, sezónní motivy občas přepíšou nastavení vašeho motivu.",
"AllowedRemoteAddressesHelp": "Seznam IP adres nebo síťových masek oddělených čárkou pro sítě, ze kterých se lze vzdáleně připojit. Pokud necháte prázdné, všechny adresy budou povoleny.", "AllowedRemoteAddressesHelp": "Seznam IP adres nebo síťových masek oddělených čárkou pro sítě, ze kterých se lze vzdáleně připojit. Pokud necháte prázdné, všechny adresy budou povoleny.",
"AnamorphicVideoNotSupported": "Anamorfní video není podporováno", "AnamorphicVideoNotSupported": "Anamorfní video není podporováno",
"AndroidUnlockRestoreHelp": "Chcete-li obnovit předchozí nákup, ujistěte se, že jste přihlášeni do zařízení se stejným účtem Google (nebo Amazon), na kterém byl nákup původně proveden. Ujistěte se, že je povolen přístup k úložišti aplikací a není omezen žádnou rodičovskou kontrolou a ujistěte se, že máte aktivní připojení k internetu. Toto budete muset provést pouze jednou, abyste tento předchozí nákup obnovili.",
"AnyLanguage": "Jakýkoli jazyk", "AnyLanguage": "Jakýkoli jazyk",
"Ascending": "Vzestupně", "Ascending": "Vzestupně",
"AudioBitDepthNotSupported": "Bitová hloubka zvuku není podporována", "AudioBitDepthNotSupported": "Bitová hloubka zvuku není podporována",
"AudioSampleRateNotSupported": "Frekvence vzorkování zvuku není podporována", "AudioSampleRateNotSupported": "Frekvence vzorkování zvuku není podporována",
"AutoBasedOnLanguageSetting": "Automaticky (na základě jazykového nastavení)", "AutoBasedOnLanguageSetting": "Automaticky (na základě jazykového nastavení)",
"AutomaticallyConvertNewContent": "Automaticky zkonvertovat nový obsah", "Banner": "Výřez plakátu",
"AutomaticallyConvertNewContentHelp": "Nový obsah přidaný do této složky bude automaticky zkonvertován.",
"Banner": "Banner",
"BestFit": "Nejvhodnější", "BestFit": "Nejvhodnější",
"Blacklist": "Černá listina", "Blacklist": "Černá listina",
"BobAndWeaveWithHelp": "Bob and weave (vyšší kvalita, ale pomalejší)", "BobAndWeaveWithHelp": "Bob and weave (vyšší kvalita, ale pomalejší)",
"Browse": "Procházet", "Browse": "Procházet",
"BurnSubtitlesHelp": "Určuje, zda má server vypalovat titulky při překódování videa. Vynechání tohoto zlepší výkon serveru. Chcete-li vypálit grafické formáty (VOBSUB, PGS, SUB / IDX atd.) a některé titulky ASS nebo SSA, vyberte možnost Auto.", "BurnSubtitlesHelp": "Určuje, zda má server při překódování videa vypálit titulky do obrazu. Tato funkce má velký negativní vliv na výkon. Chcete-li vypálit grafické formáty titulků (VOBSUB, PGS, SUB, IDX, atd.) a některé titulky ASS nebo SSA, vyberte možnost Automaticky.",
"ButtonInfo": "Info", "ButtonInfo": "Info",
"ButtonMenu": "Menu", "ButtonMenu": "Menu",
"ButtonOk": "Ok", "ButtonOk": "Ok",
@ -1271,7 +1258,7 @@
"ConvertingDots": "Konverze...", "ConvertingDots": "Konverze...",
"CriticRating": "Kritické hodnocení", "CriticRating": "Kritické hodnocení",
"DefaultCameraUploadPathHelp": "Vyberte vlastní cestu nahrávání. Pokud zůstane prázdné, bude použita výchozí složka. Pokud použijete vlastní cestu, bude třeba ji přidat jako knihovnu v nastavení knihovny Jellyfin.", "DefaultCameraUploadPathHelp": "Vyberte vlastní cestu nahrávání. Pokud zůstane prázdné, bude použita výchozí složka. Pokud použijete vlastní cestu, bude třeba ji přidat jako knihovnu v nastavení knihovny Jellyfin.",
"Depressed": "Stlačený", "Depressed": "Vytlačené",
"Descending": "Klesající", "Descending": "Klesající",
"DetectingDevices": "Hledání zařízení", "DetectingDevices": "Hledání zařízení",
"DirectPlayError": "Chyba přímého přehrávání", "DirectPlayError": "Chyba přímého přehrávání",
@ -1317,7 +1304,6 @@
"HeaderFetcherSettings": "Nastavení načítání", "HeaderFetcherSettings": "Nastavení načítání",
"HeaderImageLogo": "Logo", "HeaderImageLogo": "Logo",
"HeaderImageOptions": "Volby obrázku", "HeaderImageOptions": "Volby obrázku",
"HeaderInviteWithJellyfinConnect": "Pozvat s Jellyfin Connect",
"HeaderKodiMetadataHelp": "Chcete-li povolit nebo zakázat Nfo metadata, upravte nastavení knihovny v sekci ukládání metadat.", "HeaderKodiMetadataHelp": "Chcete-li povolit nebo zakázat Nfo metadata, upravte nastavení knihovny v sekci ukládání metadat.",
"HeaderLiveTV": "Živá TV", "HeaderLiveTV": "Živá TV",
"HeaderLiveTv": "Živá TV", "HeaderLiveTv": "Živá TV",
@ -1335,14 +1321,10 @@
"HeaderTV": "TV", "HeaderTV": "TV",
"HeaderTypeImageFetchers": "{0} stahovačů obrázků", "HeaderTypeImageFetchers": "{0} stahovačů obrázků",
"HeaderUpcomingEpisodes": "Následující epizody", "HeaderUpcomingEpisodes": "Následující epizody",
"HeaderUpcomingNews": "Následující novinky",
"HeaderVideo": "Video", "HeaderVideo": "Video",
"HeaderVideoType": "Formát videa", "HeaderVideoType": "Formát videa",
"Horizontal": "Vodorovně", "Horizontal": "Vodorovně",
"HowWouldYouLikeToAddUser": "Jak chcete přidat uživatele?",
"HttpsRequiresCert": "Chcete-li povolit zabezpečená připojení, budete muset zadat důvěryhodný certifikát SSL, například Let's Encrypt. Zadejte prosím certifikát nebo zakažte zabezpečená připojení.", "HttpsRequiresCert": "Chcete-li povolit zabezpečená připojení, budete muset zadat důvěryhodný certifikát SSL, například Let's Encrypt. Zadejte prosím certifikát nebo zakažte zabezpečená připojení.",
"Invitations": "Pozvánky",
"InviteAnJellyfinConnectUser": "Přidejte uživatele odesláním e-mailové pozvánky.",
"KeepDownload": "Zachovat stahování", "KeepDownload": "Zachovat stahování",
"LabelAlbum": "Album:", "LabelAlbum": "Album:",
"LabelAllowedRemoteAddresses": "Filtr vzdálené IP adresy:", "LabelAllowedRemoteAddresses": "Filtr vzdálené IP adresy:",
@ -1355,7 +1337,6 @@
"LabelCameraUploadPathHelp": "Vyberte vlastní umístění nahraných souborů. Toto přepíše jakékoli výchozí nastavení v sekci nahrávání souborů z fotoaparátu. Pokud použijete vlastní umístění, bude potřeba jej také přidat jako knihovnu v nastavení Jellyfin.", "LabelCameraUploadPathHelp": "Vyberte vlastní umístění nahraných souborů. Toto přepíše jakékoli výchozí nastavení v sekci nahrávání souborů z fotoaparátu. Pokud použijete vlastní umístění, bude potřeba jej také přidat jako knihovnu v nastavení Jellyfin.",
"LabelCertificatePassword": "Heslo certifikátu:", "LabelCertificatePassword": "Heslo certifikátu:",
"LabelCertificatePasswordHelp": "Pokud certifikát vyžaduje heslo, zadejte jej prosím zde.", "LabelCertificatePasswordHelp": "Pokud certifikát vyžaduje heslo, zadejte jej prosím zde.",
"LabelConvertTo": "Konvertovat na:",
"LabelCustomCertificatePath": "Vlastní umístění SSL certifikátu:", "LabelCustomCertificatePath": "Vlastní umístění SSL certifikátu:",
"LabelCustomCertificatePathHelp": "Umístění souboru PKCS #12, který obsahuje certifikát a soukromý klíč k povolení podpory TLS na vlastní doméně.", "LabelCustomCertificatePathHelp": "Umístění souboru PKCS #12, který obsahuje certifikát a soukromý klíč k povolení podpory TLS na vlastní doméně.",
"LabelDateTimeLocale": "Místní nastavení data:", "LabelDateTimeLocale": "Místní nastavení data:",
@ -1385,7 +1366,6 @@
"LabelSortOrder": "Pořadí řazení:", "LabelSortOrder": "Pořadí řazení:",
"LabelSpecialSeasonsDisplayName": "Zobrazovaný název pro zvláštní sezónu:", "LabelSpecialSeasonsDisplayName": "Zobrazovaný název pro zvláštní sezónu:",
"LabelSubtitleDownloaders": "Stahovače titulků:", "LabelSubtitleDownloaders": "Stahovače titulků:",
"LabelSyncNoTargetsHelp": "Vypadá to, že v současné době nemáte žádné aplikace, které podporují stahování offline.",
"LabelTVHomeScreen": "Hlavní obrazovka TV režimu:", "LabelTVHomeScreen": "Hlavní obrazovka TV režimu:",
"LabelTag": "Tag:", "LabelTag": "Tag:",
"LabelTypeMetadataDownloaders": "{0} stahovače metadat:", "LabelTypeMetadataDownloaders": "{0} stahovače metadat:",
@ -1469,7 +1449,7 @@
"PreferEmbeddedTitlesOverFileNames": "Preferovat vložené názvy nad názvy souborů", "PreferEmbeddedTitlesOverFileNames": "Preferovat vložené názvy nad názvy souborů",
"PreferEmbeddedTitlesOverFileNamesHelp": "Toto určuje výchozí název zobrazení, pokud nejsou k dispozici žádná metadata z internetu nebo místní metadata.", "PreferEmbeddedTitlesOverFileNamesHelp": "Toto určuje výchozí název zobrazení, pokud nejsou k dispozici žádná metadata z internetu nebo místní metadata.",
"PreferredNotRequired": "Preferováno, ale není vyžadováno", "PreferredNotRequired": "Preferováno, ale není vyžadováno",
"Raised": "Vyvolané", "Raised": "Vystupující",
"Rate": "Hodnocení", "Rate": "Hodnocení",
"RequiredForAllRemoteConnections": "Požadováno pro všechna vzdálená připojení", "RequiredForAllRemoteConnections": "Požadováno pro všechna vzdálená připojení",
"SaveSubtitlesIntoMediaFolders": "Titulky ukládat do mediálních složek", "SaveSubtitlesIntoMediaFolders": "Titulky ukládat do mediálních složek",
@ -1478,13 +1458,12 @@
"SeriesDisplayOrderHelp": "Seřadit epizody podle data vysílání, pořadí DVD nebo absolutního číslování.", "SeriesDisplayOrderHelp": "Seřadit epizody podle data vysílání, pořadí DVD nebo absolutního číslování.",
"ServerRestartNeededAfterPluginInstall": "Jellyfin server bude nutné po instalaci pluginu restartovat.", "ServerRestartNeededAfterPluginInstall": "Jellyfin server bude nutné po instalaci pluginu restartovat.",
"ShowAdvancedSettings": "Zobrazit rozšířená nastavení", "ShowAdvancedSettings": "Zobrazit rozšířená nastavení",
"ShowTitle": "Ukázat název", "ShowTitle": "Zobrazit název",
"ShowYear": "Ukázat rok", "ShowYear": "Zobrazit rok",
"SimultaneousConnectionLimitHelp": "Maximální počet povolených současných streamů. Pro vypnutí omezení zadejte 0.", "SimultaneousConnectionLimitHelp": "Maximální počet povolených současných streamů. Pro vypnutí omezení zadejte 0.",
"SmallCaps": "Malá písmena", "SmallCaps": "Malá písmena",
"Smaller": "Menší", "Smaller": "Menší",
"Sort": "Třídit", "Sort": "Třídit",
"StatsForNerds": "Statistiky pro šprty",
"SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Tato nastavení platí také pro jakékoli přehrávání na Chromecastu spuštěné tímto zařízením.", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Tato nastavení platí také pro jakékoli přehrávání na Chromecastu spuštěné tímto zařízením.",
"SubtitleAppearanceSettingsDisclaimer": "Tato nastavení se nevztahuje na grafické titulky (PGS, DVD atd.) nebo ASS/SSA titulky, které mají vlastní vložené styly.", "SubtitleAppearanceSettingsDisclaimer": "Tato nastavení se nevztahuje na grafické titulky (PGS, DVD atd.) nebo ASS/SSA titulky, které mají vlastní vložené styly.",
"SubtitleDownloadersHelp": "Povolte a zařaďte preferované stahovače titulků v pořadí podle priority.", "SubtitleDownloadersHelp": "Povolte a zařaďte preferované stahovače titulků v pořadí podle priority.",
@ -1502,7 +1481,7 @@
"ThemeVideos": "Tematická videa", "ThemeVideos": "Tematická videa",
"Trailers": "Trailery", "Trailers": "Trailery",
"TvLibraryHelp": "Podívejte se na {0}průvodce pojmenováním TV pořadů{1}.", "TvLibraryHelp": "Podívejte se na {0}průvodce pojmenováním TV pořadů{1}.",
"Uniform": "Uniformní", "Uniform": "Obrys",
"Unplayed": "Nepřehrané", "Unplayed": "Nepřehrané",
"UserAgentHelp": "Zadejte vlastní HTTP hlavičku user agenta.", "UserAgentHelp": "Zadejte vlastní HTTP hlavičku user agenta.",
"ValueMinutes": "{0} min", "ValueMinutes": "{0} min",
@ -1608,5 +1587,9 @@
"Filter": "Filtr", "Filter": "Filtr",
"New": "Nové", "New": "Nové",
"ButtonTogglePlaylist": "Playlist", "ButtonTogglePlaylist": "Playlist",
"ButtonToggleContextMenu": "Více" "ButtonToggleContextMenu": "Více",
"LabelNightly": "Nightly",
"LabelStable": "Stabilní",
"LabelChromecastVersion": "Verze Chromecastu",
"ApiKeysCaption": "Seznam povolených API klíčů"
} }

View File

@ -632,11 +632,6 @@
"LabelSubtitleFormatHelp": "F. eks: srt", "LabelSubtitleFormatHelp": "F. eks: srt",
"LabelSubtitlePlaybackMode": "Underteksttilstand:", "LabelSubtitlePlaybackMode": "Underteksttilstand:",
"LabelSupportedMediaTypes": "Understøttede medieformater:", "LabelSupportedMediaTypes": "Understøttede medieformater:",
"LabelSyncJobName": "Navn til synkroniserings job:",
"LabelSyncPath": "Synked indholdssti:",
"LabelSyncTempPath": "Sti for midlertidige filer:",
"LabelSyncTempPathHelp": "Specificér en brugerdefineret synkroniserings arbejds-mappe. Konverterede filer vil under synkroniseringsprocessen blive gemt her.",
"LabelSyncTo": "Synkroniser til:",
"LabelTheme": "Tema:", "LabelTheme": "Tema:",
"LabelTime": "Tid:", "LabelTime": "Tid:",
"LabelTimeLimitHours": "Tidsgrænse (timer):", "LabelTimeLimitHours": "Tidsgrænse (timer):",
@ -1099,7 +1094,6 @@
"HeaderLiveTV": "Live-TV", "HeaderLiveTV": "Live-TV",
"Shows": "Serier", "Shows": "Serier",
"Songs": "Sange", "Songs": "Sange",
"AndroidUnlockRestoreHelp": "For at gendanne dit tidligere køb skal du sørge for, at du er logget ind på enheden med den samme Google- eller Amazon-konto, som oprindeligt gjorde købet. Sørg for, at app store er aktiveret og ikke begrænset af forældrekontrol, og sørg for, at du har en aktiv internetforbindelse. Du skal kun gøre dette én gang for at gendanne dit tidligere køb.",
"AnyLanguage": "Hvilken som helst sprog", "AnyLanguage": "Hvilken som helst sprog",
"Art": "Kunst", "Art": "Kunst",
"Ascending": "Stigende", "Ascending": "Stigende",
@ -1111,10 +1105,6 @@
"AudioSampleRateNotSupported": "Lydens samplerate ikke understøttet", "AudioSampleRateNotSupported": "Lydens samplerate ikke understøttet",
"Auto": "Auto", "Auto": "Auto",
"AutoBasedOnLanguageSetting": "Automatisk (baseret på sprogindstilling)", "AutoBasedOnLanguageSetting": "Automatisk (baseret på sprogindstilling)",
"AutomaticallyConvertNewContent": "Konverter automatisk nyt indhold",
"AutomaticallyConvertNewContentHelp": "Nyt indhold tilføjet til denne mappe vil blive konverteret automatisk.",
"AutomaticallySyncNewContent": "Download nyt indhold automatisk",
"AutomaticallySyncNewContentHelp": "Nyt indhold tilføjet til denne mappe vil automatisk blive downloadet til enheden.",
"Backdrop": "Baggrund", "Backdrop": "Baggrund",
"Backdrops": "Baggrunde", "Backdrops": "Baggrunde",
"Banner": "Banner", "Banner": "Banner",
@ -1198,8 +1188,6 @@
"Episodes": "Afsnit", "Episodes": "Afsnit",
"ErrorAddingGuestAccount1": "Der skete en fejl ved tilføjelsen af Jellyfin Connect kontoen. Har din gæst lavet en Jellyfin konto? De kan regsistrere sig på {0}.", "ErrorAddingGuestAccount1": "Der skete en fejl ved tilføjelsen af Jellyfin Connect kontoen. Har din gæst lavet en Jellyfin konto? De kan regsistrere sig på {0}.",
"ErrorAddingGuestAccount2": "Hvis du stadig har problemer, så send venligst en email til {0}, og inkludér din email adresse såvel som deres.", "ErrorAddingGuestAccount2": "Hvis du stadig har problemer, så send venligst en email til {0}, og inkludér din email adresse såvel som deres.",
"ErrorAddingJellyfinConnectAccount1": "Der skete en fejl ved tilføjelsen af Jellyfin Connect kontoen. Har du lavet en Jellyfin konto? Registrer dig på {0}.",
"ErrorAddingJellyfinConnectAccount2": "Hvis du stadig har et problem, så send venligst en email til {0} fra den email adresse tilknyttet Jellyfin kontoen.",
"ErrorDeletingItem": "Der skete en fejl ved sletningen af mediet fra Jellyfin Server. Tjek venligst at Jellyfin Server har skrive adgang til mediemappen og prøv igen.", "ErrorDeletingItem": "Der skete en fejl ved sletningen af mediet fra Jellyfin Server. Tjek venligst at Jellyfin Server har skrive adgang til mediemappen og prøv igen.",
"ExtraLarge": "Ekstra Stor", "ExtraLarge": "Ekstra Stor",
"Extras": "Bonusmateriale", "Extras": "Bonusmateriale",
@ -1236,7 +1224,6 @@
"HeaderNavigation": "Navigation", "HeaderNavigation": "Navigation",
"HeaderNextEpisodePlayingInValue": "Næste afsnit afspilles om {0}", "HeaderNextEpisodePlayingInValue": "Næste afsnit afspilles om {0}",
"HeaderNextVideoPlayingInValue": "Næste video afspilles om {0}", "HeaderNextVideoPlayingInValue": "Næste video afspilles om {0}",
"HeaderOffline": "Offline",
"HeaderPhotoAlbums": "Foto Albummer", "HeaderPhotoAlbums": "Foto Albummer",
"HeaderPlayOn": "Afspil På", "HeaderPlayOn": "Afspil På",
"HeaderProgram": "Program", "HeaderProgram": "Program",
@ -1252,18 +1239,15 @@
"HeaderTags": "Mærker", "HeaderTags": "Mærker",
"HeaderTopPlugins": "Bedste Plugins", "HeaderTopPlugins": "Bedste Plugins",
"HeaderType": "Type", "HeaderType": "Type",
"HeaderUpcomingNews": "Kommende Nyheder",
"HeaderVideo": "Video", "HeaderVideo": "Video",
"HeaderVideoQuality": "Video Kvalitet", "HeaderVideoQuality": "Video Kvalitet",
"HeaderVideoType": "Video Type", "HeaderVideoType": "Video Type",
"HeaderWaitingForWifi": "Venter på Wifi",
"Hide": "Skjul", "Hide": "Skjul",
"HideWatchedContentFromLatestMedia": "Skjul set indhold fra seneste medier", "HideWatchedContentFromLatestMedia": "Skjul set indhold fra seneste medier",
"Home": "Hjem", "Home": "Hjem",
"Horizontal": "Horisontalt", "Horizontal": "Horisontalt",
"ImdbRating": "IMDb bedømmelse", "ImdbRating": "IMDb bedømmelse",
"InterlacedVideoNotSupported": "Interlaced video ikke understøttet", "InterlacedVideoNotSupported": "Interlaced video ikke understøttet",
"InviteAnJellyfinConnectUser": "Tilføj en bruger ved at sende en email invitation.",
"KeepDownload": "Behold hentning", "KeepDownload": "Behold hentning",
"Label3DFormat": "3D format:", "Label3DFormat": "3D format:",
"LabelAlbum": "Album:", "LabelAlbum": "Album:",
@ -1275,7 +1259,6 @@
"LabelCache": "Cache:", "LabelCache": "Cache:",
"LabelCertificatePassword": "Adgangskode til certifikat:", "LabelCertificatePassword": "Adgangskode til certifikat:",
"LabelCertificatePasswordHelp": "Hvis dit certifikat kræver en adgangskode, skriv det venligst her.", "LabelCertificatePasswordHelp": "Hvis dit certifikat kræver en adgangskode, skriv det venligst her.",
"LabelConvertTo": "Konvertér til:",
"LabelDashboardTheme": "Server dashboard tema:", "LabelDashboardTheme": "Server dashboard tema:",
"LabelDateTimeLocale": "Dato og tid område:", "LabelDateTimeLocale": "Dato og tid område:",
"LabelDefaultScreen": "Standard skærm:", "LabelDefaultScreen": "Standard skærm:",
@ -1314,7 +1297,6 @@
"LabelSoundEffects": "Lydeffekter:", "LabelSoundEffects": "Lydeffekter:",
"LabelStatus": "Status:", "LabelStatus": "Status:",
"LabelSubtitles": "Undertekster", "LabelSubtitles": "Undertekster",
"LabelSyncNoTargetsHelp": "Det ser ud til at du ikke har nogen apps der understøtter offline hentning.",
"LabelTVHomeScreen": "TV modus hjemmeskærm:", "LabelTVHomeScreen": "TV modus hjemmeskærm:",
"LabelTag": "Mærke:", "LabelTag": "Mærke:",
"LabelTagline": "Taglinje:", "LabelTagline": "Taglinje:",
@ -1333,7 +1315,6 @@
"LabelXDlnaCap": "X-DLNA begrænsning:", "LabelXDlnaCap": "X-DLNA begrænsning:",
"LabelXDlnaDoc": "X-DLNA dokumentation:", "LabelXDlnaDoc": "X-DLNA dokumentation:",
"LabelYear": "År:", "LabelYear": "År:",
"LabelffmpegVersion": "FFmpeg version:",
"Large": "Stor", "Large": "Stor",
"LearnHowYouCanContribute": "Lær hvordan du kan bidrage.", "LearnHowYouCanContribute": "Lær hvordan du kan bidrage.",
"LeaveBlankToNotSetAPassword": "Du kan lade dette felt være tomt hvis du ikke ønsker adgangskode.", "LeaveBlankToNotSetAPassword": "Du kan lade dette felt være tomt hvis du ikke ønsker adgangskode.",
@ -1365,7 +1346,6 @@
"MessageImageFileTypeAllowed": "Kun JPEG og PNG filer er understøttet.", "MessageImageFileTypeAllowed": "Kun JPEG og PNG filer er understøttet.",
"MessageImageTypeNotSelected": "Vælg venligst en type af billede i drop-down menuen.", "MessageImageTypeNotSelected": "Vælg venligst en type af billede i drop-down menuen.",
"MessageNoDownloadsFound": "Ingen offline hentninger. Hent dine medier til offline brug ved at klikke Hent igennem app'en.", "MessageNoDownloadsFound": "Ingen offline hentninger. Hent dine medier til offline brug ved at klikke Hent igennem app'en.",
"MessageNoSyncJobsFound": "Ingen hentninger fundet. Opret hent job ved at bruge Hent knapperne igennem app'en.",
"MessagePlayAccessRestricted": "Afspilning af dette indhold er begrænset. Kontakt venligst server administratoren for mere information.", "MessagePlayAccessRestricted": "Afspilning af dette indhold er begrænset. Kontakt venligst server administratoren for mere information.",
"Metadata": "Metadata", "Metadata": "Metadata",
"Mobile": "Mobil", "Mobile": "Mobil",
@ -1379,10 +1359,7 @@
"OnlyForcedSubtitles": "Kun tvungne undertekster", "OnlyForcedSubtitles": "Kun tvungne undertekster",
"OnlyForcedSubtitlesHelp": "Kun undertekster markeret som tvungne vil blive indlæst.", "OnlyForcedSubtitlesHelp": "Kun undertekster markeret som tvungne vil blive indlæst.",
"OnlyImageFormats": "Kun billedformater (VOBSUB, PGS, SUB)", "OnlyImageFormats": "Kun billedformater (VOBSUB, PGS, SUB)",
"Option2Player": "2+",
"Option3D": "3D", "Option3D": "3D",
"Option3Player": "3+",
"Option4Player": "4+",
"OptionAlbum": "Album", "OptionAlbum": "Album",
"OptionArtist": "Kunstner", "OptionArtist": "Kunstner",
"OptionAuto": "Automatisk", "OptionAuto": "Automatisk",
@ -1426,7 +1403,6 @@
"PlaybackSettings": "Afspilningsindstillinger", "PlaybackSettings": "Afspilningsindstillinger",
"PlaybackSettingsIntro": "For at indstille standard afspilningsindstillingerne, stop video afspilning, herefter klik på dit bruger ikon i øverste højre sektion af denne app.", "PlaybackSettingsIntro": "For at indstille standard afspilningsindstillingerne, stop video afspilning, herefter klik på dit bruger ikon i øverste højre sektion af denne app.",
"Playlists": "Afspilningslister", "Playlists": "Afspilningslister",
"PleaseSelectDeviceToSyncTo": "Vælg venligst en enhed at hente til.",
"Previous": "Forrige", "Previous": "Forrige",
"Primary": "Primær", "Primary": "Primær",
"PrivacyPolicy": "Privatlivs politik", "PrivacyPolicy": "Privatlivs politik",
@ -1455,16 +1431,12 @@
"Sort": "Sortér", "Sort": "Sortér",
"SortByValue": "Sortér efter {0}", "SortByValue": "Sortér efter {0}",
"Standard": "Standard", "Standard": "Standard",
"StatsForNerds": "Stats for nørder",
"SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Disse indstilinger bliver aktiveret på enhver Chromecast afspilning på denne enhed.", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Disse indstilinger bliver aktiveret på enhver Chromecast afspilning på denne enhed.",
"SubtitleAppearanceSettingsDisclaimer": "Disse indstillinger bliver ikke aktiveret på grafiske undertekster (PGS, DVD, etc) eller ASS/SSA undertekster der har deres egen indbyggede stil.", "SubtitleAppearanceSettingsDisclaimer": "Disse indstillinger bliver ikke aktiveret på grafiske undertekster (PGS, DVD, etc) eller ASS/SSA undertekster der har deres egen indbyggede stil.",
"SubtitleCodecNotSupported": "Undertekst format ikke understøttet", "SubtitleCodecNotSupported": "Undertekst format ikke understøttet",
"SubtitleSettings": "Undertekst indstillinger", "SubtitleSettings": "Undertekst indstillinger",
"SubtitleSettingsIntro": "For at konfigurere standard undertekst udseende og sprog indstillinger, stop video afspilning, herefter klik på dit bruger ikon i øverste højre sektion af denne app.", "SubtitleSettingsIntro": "For at konfigurere standard undertekst udseende og sprog indstillinger, stop video afspilning, herefter klik på dit bruger ikon i øverste højre sektion af denne app.",
"Suggestions": "Forslag", "Suggestions": "Forslag",
"SyncUnwatchedVideosOnly": "Hent kun usete videoer",
"SyncUnwatchedVideosOnlyHelp": "Kun usete videoer vil blive hentet, og videoer vil bliver slettet fra enheden når de er set.",
"SyncingDots": "Synkroniserer...",
"TV": "TV", "TV": "TV",
"TabAlbums": "Albummer", "TabAlbums": "Albummer",
"TabCodecs": "Codeks", "TabCodecs": "Codeks",
@ -1478,7 +1450,6 @@
"TabPlaylist": "Afspilningsliste", "TabPlaylist": "Afspilningsliste",
"TabServer": "Server", "TabServer": "Server",
"TabStreaming": "Streamer", "TabStreaming": "Streamer",
"TabSync": "Sync",
"TabTV": "TV", "TabTV": "TV",
"Tags": "Mærker", "Tags": "Mærker",
"TagsValue": "Mærker: {0}", "TagsValue": "Mærker: {0}",
@ -1489,7 +1460,6 @@
"TitleLiveTV": "Live TV", "TitleLiveTV": "Live TV",
"TitleServer": "Server", "TitleServer": "Server",
"TitleSupport": "Support", "TitleSupport": "Support",
"TitleSync": "Sync",
"Trailer": "Forfilm", "Trailer": "Forfilm",
"Trailers": "Forfilm", "Trailers": "Forfilm",
"Transcoding": "Omkodning", "Transcoding": "Omkodning",
@ -1519,7 +1489,6 @@
"ViewTypeTvShows": "TV", "ViewTypeTvShows": "TV",
"Watched": "Set", "Watched": "Set",
"Whitelist": "Hvidliste", "Whitelist": "Hvidliste",
"WifiRequiredToDownload": "En Wifi forbindelse er påkrævet for at forsætte hentning.",
"Yes": "Ja", "Yes": "Ja",
"HeaderFavoriteMovies": "Favoritfilm", "HeaderFavoriteMovies": "Favoritfilm",
"HeaderFavoriteShows": "Favoritserier", "HeaderFavoriteShows": "Favoritserier",

View File

@ -9,7 +9,6 @@
"AddToPlayQueue": "Zur Warteschlange hinzufügen", "AddToPlayQueue": "Zur Warteschlange hinzufügen",
"AddToPlaylist": "Zur Wiedergabeliste hinzufügen", "AddToPlaylist": "Zur Wiedergabeliste hinzufügen",
"AddUser": "Benutzer anlegen", "AddUser": "Benutzer anlegen",
"AddUserByManually": "Lege einen lokalen User durch manuelle Eingabe der User-Informationen an.",
"AddedOnValue": "{0} hinzugefügt", "AddedOnValue": "{0} hinzugefügt",
"AdditionalNotificationServices": "Durchsuche den Pluginkatalog, um weitere Benachrichtigungsdienste zu installieren.", "AdditionalNotificationServices": "Durchsuche den Pluginkatalog, um weitere Benachrichtigungsdienste zu installieren.",
"AirDate": "Erstausstrahlung", "AirDate": "Erstausstrahlung",
@ -29,8 +28,6 @@
"AllowOnTheFlySubtitleExtractionHelp": "Eingebettete Untertitel können aus Videos extrahiert und in Reintext an Clients gesendet werden, um eine Videotranskodierung zu vermeiden. Auf manchen Systemen kann dieser Vorgang eine lange Zeit in Anspruch nehmen und deswegen währenddessen die Videowiedergabe stoppen. Deaktiviere diese Option, um eingebettete Untertitel während des Videotranskodierens einbrennen zu lassen, wenn sie nicht nativ vom Client unterstützt werden.", "AllowOnTheFlySubtitleExtractionHelp": "Eingebettete Untertitel können aus Videos extrahiert und in Reintext an Clients gesendet werden, um eine Videotranskodierung zu vermeiden. Auf manchen Systemen kann dieser Vorgang eine lange Zeit in Anspruch nehmen und deswegen währenddessen die Videowiedergabe stoppen. Deaktiviere diese Option, um eingebettete Untertitel während des Videotranskodierens einbrennen zu lassen, wenn sie nicht nativ vom Client unterstützt werden.",
"AllowRemoteAccess": "Erlaube externe Verbindungen zu diesem Jellyfin Server.", "AllowRemoteAccess": "Erlaube externe Verbindungen zu diesem Jellyfin Server.",
"AllowRemoteAccessHelp": "Wenn deaktiviert werden alle externen Verbindungen blockiert.", "AllowRemoteAccessHelp": "Wenn deaktiviert werden alle externen Verbindungen blockiert.",
"AllowSeasonalThemes": "Erlaube automatische Jahreszeitenmotive",
"AllowSeasonalThemesHelp": "Wenn aktiviert, werden Jahreszeitenmotive von Zeit zu Zeit deine Motiveinstellungen überschreiben.",
"AllowedRemoteAddressesHelp": "Kommagetrennte Liste von IP Adressen oder IP/Netzmasken für Netzwerke, für die externe Verbindungen erlaubt sind. Wenn leer, sind alle Adressen erlaubt.", "AllowedRemoteAddressesHelp": "Kommagetrennte Liste von IP Adressen oder IP/Netzmasken für Netzwerke, für die externe Verbindungen erlaubt sind. Wenn leer, sind alle Adressen erlaubt.",
"AlwaysPlaySubtitles": "Immer anzeigen", "AlwaysPlaySubtitles": "Immer anzeigen",
"AlwaysPlaySubtitlesHelp": "Untertitel die den Spracheinstellungen entsprechen werden unabhängig von der Tonspursprache geladen.", "AlwaysPlaySubtitlesHelp": "Untertitel die den Spracheinstellungen entsprechen werden unabhängig von der Tonspursprache geladen.",
@ -666,7 +663,7 @@
"LabelMoviePrefix": "Filmpräfix:", "LabelMoviePrefix": "Filmpräfix:",
"LabelMoviePrefixHelp": "Wenn ein Präfix in Filmtiteln angewendet wird, gib es hier ein damit Jellyfin es korrekt behandeln kann.", "LabelMoviePrefixHelp": "Wenn ein Präfix in Filmtiteln angewendet wird, gib es hier ein damit Jellyfin es korrekt behandeln kann.",
"LabelMovieRecordingPath": "Film Aufnahmepfad (Optional):", "LabelMovieRecordingPath": "Film Aufnahmepfad (Optional):",
"LabelMusicStreamingTranscodingBitrate": "Musik Transkodier Bitrate:", "LabelMusicStreamingTranscodingBitrate": "Musik-Transkodierung Bitrate:",
"LabelMusicStreamingTranscodingBitrateHelp": "Wähle die maximale Bitrate für das streamen von Musik.", "LabelMusicStreamingTranscodingBitrateHelp": "Wähle die maximale Bitrate für das streamen von Musik.",
"LabelNewName": "Neuer Name:", "LabelNewName": "Neuer Name:",
"LabelNewPassword": "Neues Passwort:", "LabelNewPassword": "Neues Passwort:",
@ -1529,5 +1526,8 @@
"HeaderFavoritePlaylists": "Lieblings-Wiedergabeliste", "HeaderFavoritePlaylists": "Lieblings-Wiedergabeliste",
"ButtonTogglePlaylist": "Wiedergabeliste", "ButtonTogglePlaylist": "Wiedergabeliste",
"ButtonToggleContextMenu": "Mehr", "ButtonToggleContextMenu": "Mehr",
"ApiKeysCaption": "Liste der aktuell aktivierten API-Schlüssel" "ApiKeysCaption": "Liste der aktuell aktivierten API-Schlüssel",
"LabelNightly": "Nightly",
"LabelStable": "Stable",
"LabelChromecastVersion": "Chromecast Version"
} }

View File

@ -290,7 +290,6 @@
"H264CrfHelp": "The Constant Rate Factor (CRF) is the default quality setting for the x264 encoder. You can set the values between 0 and 51, where lower values would result in better quality (at the expense of higher file sizes). Sane values are between 18 and 28. The default for x264 is 23, so you can use this as a starting point.", "H264CrfHelp": "The Constant Rate Factor (CRF) is the default quality setting for the x264 encoder. You can set the values between 0 and 51, where lower values would result in better quality (at the expense of higher file sizes). Sane values are between 18 and 28. The default for x264 is 23, so you can use this as a starting point.",
"EncoderPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", "EncoderPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.",
"HDPrograms": "HD programs", "HDPrograms": "HD programs",
"HandledByProxy": "Handled by reverse proxy",
"HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. Ensure that your operating system and video drivers are fully up to date. If you have difficulty playing video after enabling this, you'll need to change the setting back to None.", "HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. Ensure that your operating system and video drivers are fully up to date. If you have difficulty playing video after enabling this, you'll need to change the setting back to None.",
"HeaderAccessSchedule": "Access Schedule", "HeaderAccessSchedule": "Access Schedule",
"HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.",
@ -384,6 +383,7 @@
"HeaderGuideProviders": "TV Guide Data Providers", "HeaderGuideProviders": "TV Guide Data Providers",
"HeaderHome": "Home", "HeaderHome": "Home",
"HeaderHttpHeaders": "HTTP Headers", "HeaderHttpHeaders": "HTTP Headers",
"HeaderHttpsSettings": "HTTPS Settings",
"HeaderIdentification": "Identification", "HeaderIdentification": "Identification",
"HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.", "HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.",
"HeaderIdentificationHeader": "Identification Header", "HeaderIdentificationHeader": "Identification Header",
@ -450,6 +450,7 @@
"HeaderRecentlyPlayed": "Recently Played", "HeaderRecentlyPlayed": "Recently Played",
"HeaderRecordingOptions": "Recording Options", "HeaderRecordingOptions": "Recording Options",
"HeaderRecordingPostProcessing": "Recording Post Processing", "HeaderRecordingPostProcessing": "Recording Post Processing",
"HeaderRemoteAccessSettings": "Remote Access Settings",
"HeaderRemoteControl": "Remote Control", "HeaderRemoteControl": "Remote Control",
"HeaderRemoveMediaFolder": "Remove Media Folder", "HeaderRemoveMediaFolder": "Remove Media Folder",
"HeaderRemoveMediaLocation": "Remove Media Location", "HeaderRemoveMediaLocation": "Remove Media Location",
@ -476,6 +477,7 @@
"HeaderSeries": "Series", "HeaderSeries": "Series",
"HeaderSeriesOptions": "Series Options", "HeaderSeriesOptions": "Series Options",
"HeaderSeriesStatus": "Series Status", "HeaderSeriesStatus": "Series Status",
"HeaderServerAddressSettings": "Server Address Settings",
"HeaderServerSettings": "Server Settings", "HeaderServerSettings": "Server Settings",
"HeaderSettings": "Settings", "HeaderSettings": "Settings",
"HeaderSetupLibrary": "Setup your media libraries", "HeaderSetupLibrary": "Setup your media libraries",
@ -630,7 +632,7 @@
"LabelEmbedAlbumArtDidl": "Embed album art in Didl", "LabelEmbedAlbumArtDidl": "Embed album art in Didl",
"LabelEmbedAlbumArtDidlHelp": "Some devices prefer this method for obtaining album art. Others may fail to play with this option enabled.", "LabelEmbedAlbumArtDidlHelp": "Some devices prefer this method for obtaining album art. Others may fail to play with this option enabled.",
"LabelEnableAutomaticPortMap": "Enable automatic port mapping", "LabelEnableAutomaticPortMap": "Enable automatic port mapping",
"LabelEnableAutomaticPortMapHelp": "Attempt to automatically map the public port to the local port via UPnP. This may not work with some router models. Changes will not apply until after a server restart.", "LabelEnableAutomaticPortMapHelp": "Automatically forward public ports on your router to local ports on your server via UPnP. This may not work with some router models or network configurations. Changes will not apply until after a server restart.",
"LabelEnableBlastAliveMessages": "Blast alive messages", "LabelEnableBlastAliveMessages": "Blast alive messages",
"LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.",
"LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)", "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)",
@ -642,6 +644,8 @@
"LabelEnableDlnaServer": "Enable DLNA server", "LabelEnableDlnaServer": "Enable DLNA server",
"LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play content.", "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play content.",
"LabelEnableHardwareDecodingFor": "Enable hardware decoding for:", "LabelEnableHardwareDecodingFor": "Enable hardware decoding for:",
"LabelEnableHttps": "Enable HTTPS",
"LabelEnableHttpsHelp": "Enables the server to listen on the configured HTTPS post. A valid certificate must also be configured in order for this to take effect.",
"LabelEnableRealtimeMonitor": "Enable real time monitoring", "LabelEnableRealtimeMonitor": "Enable real time monitoring",
"LabelEnableRealtimeMonitorHelp": "Changes to files will be processed immediately, on supported file systems.", "LabelEnableRealtimeMonitorHelp": "Changes to files will be processed immediately, on supported file systems.",
"LabelEnableSingleImageInDidlLimit": "Limit to single embedded image", "LabelEnableSingleImageInDidlLimit": "Limit to single embedded image",
@ -651,7 +655,7 @@
"LabelEvent": "Event:", "LabelEvent": "Event:",
"LabelEveryXMinutes": "Every:", "LabelEveryXMinutes": "Every:",
"LabelBaseUrl": "Base URL:", "LabelBaseUrl": "Base URL:",
"LabelBaseUrlHelp": "You can add a custom subdirectory here to access the server from a more unique URL.", "LabelBaseUrlHelp": "Adds a custom subdirectory to the server URL. For example: <code>http://example.com/<b>&lt;baseurl&gt;</b></code>",
"LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan",
"LabelExtractChaptersDuringLibraryScanHelp": "Generate chapter images when videos are imported during the library scan. Otherwise, they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", "LabelExtractChaptersDuringLibraryScanHelp": "Generate chapter images when videos are imported during the library scan. Otherwise, they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.",
"LabelFailed": "Failed", "LabelFailed": "Failed",
@ -748,6 +752,9 @@
"LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:", "LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:",
"LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music.", "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music.",
"LabelName": "Name:", "LabelName": "Name:",
"LabelChromecastVersion": "Chromecast Version",
"LabelStable": "Stable",
"LabelNightly": "Nightly",
"LabelNewName": "New name:", "LabelNewName": "New name:",
"LabelNewPassword": "New password:", "LabelNewPassword": "New password:",
"LabelNewPasswordConfirm": "New password confirm:", "LabelNewPasswordConfirm": "New password confirm:",
@ -807,6 +814,8 @@
"LabelReleaseDate": "Release date:", "LabelReleaseDate": "Release date:",
"LabelRemoteClientBitrateLimit": "Internet streaming bitrate limit (Mbps):", "LabelRemoteClientBitrateLimit": "Internet streaming bitrate limit (Mbps):",
"LabelRemoteClientBitrateLimitHelp": "An optional per-stream bitrate limit for all out of network devices. This is useful to prevent devices from requesting a higher bitrate than your internet connection can handle. This may result in increased CPU load on your server in order to transcode videos on the fly to a lower bitrate.", "LabelRemoteClientBitrateLimitHelp": "An optional per-stream bitrate limit for all out of network devices. This is useful to prevent devices from requesting a higher bitrate than your internet connection can handle. This may result in increased CPU load on your server in order to transcode videos on the fly to a lower bitrate.",
"LabelRequireHttps": "Require HTTPS",
"LabelRequireHttpsHelp": "If checked, the server will automatically redirect all requests over HTTP to HTTPS. This has no effect if the server is not listening on HTTPS.",
"LabelRuntimeMinutes": "Run time (minutes):", "LabelRuntimeMinutes": "Run time (minutes):",
"LabelSaveLocalMetadata": "Save artwork into media folders", "LabelSaveLocalMetadata": "Save artwork into media folders",
"LabelSaveLocalMetadataHelp": "Saving artwork into media folders will put them in a place where they can be easily edited.", "LabelSaveLocalMetadataHelp": "Saving artwork into media folders will put them in a place where they can be easily edited.",
@ -815,7 +824,6 @@
"EnableFastImageFadeIn": "Fast image fade-in", "EnableFastImageFadeIn": "Fast image fade-in",
"EnableFastImageFadeInHelp": "Enable faster fade-in animation for loaded images", "EnableFastImageFadeInHelp": "Enable faster fade-in animation for loaded images",
"LabelSeasonNumber": "Season number:", "LabelSeasonNumber": "Season number:",
"LabelSecureConnectionsMode": "Secure connection mode:",
"LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:",
"LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.",
"LabelSelectUsers": "Select users:", "LabelSelectUsers": "Select users:",
@ -1257,7 +1265,6 @@
"PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.", "PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "This uses the episode information from the embedded metadata if available.", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "This uses the episode information from the embedded metadata if available.",
"PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode information over filenames", "PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode information over filenames",
"PreferredNotRequired": "Preferred, but not required",
"Premiere": "Premiere", "Premiere": "Premiere",
"Premieres": "Premieres", "Premieres": "Premieres",
"Previous": "Previous", "Previous": "Previous",
@ -1296,7 +1303,6 @@
"RepeatOne": "Repeat one", "RepeatOne": "Repeat one",
"ReplaceAllMetadata": "Replace all metadata", "ReplaceAllMetadata": "Replace all metadata",
"ReplaceExistingImages": "Replace existing images", "ReplaceExistingImages": "Replace existing images",
"RequiredForAllRemoteConnections": "Required for all remote connections",
"RestartPleaseWaitMessage": "Please wait while Jellyfin Server shuts down and restarts. This may take a minute or two.", "RestartPleaseWaitMessage": "Please wait while Jellyfin Server shuts down and restarts. This may take a minute or two.",
"ResumeAt": "Resume from {0}", "ResumeAt": "Resume from {0}",
"Rewind": "Rewind", "Rewind": "Rewind",

View File

@ -1,6 +1,6 @@
{ {
"ButtonQuickStartGuide": "Guía de inicio rápido", "ButtonQuickStartGuide": "Guía de inicio rápido",
"ButtonSignOut": "Sign out", "ButtonSignOut": "Cerrar sesión",
"EnableHardwareEncoding": "Habilitar la codificación de hardware", "EnableHardwareEncoding": "Habilitar la codificación de hardware",
"FolderTypeTvShows": "TV", "FolderTypeTvShows": "TV",
"HeaderAddUser": "Agregar Usuario", "HeaderAddUser": "Agregar Usuario",
@ -39,7 +39,7 @@
"Genres": "Géneros", "Genres": "Géneros",
"HeaderAlbumArtists": "Artistas de álbum", "HeaderAlbumArtists": "Artistas de álbum",
"HeaderContinueWatching": "Seguir viendo", "HeaderContinueWatching": "Seguir viendo",
"HeaderNextUp": "A Continuación", "HeaderNextUp": "Siguiente",
"Movies": "Películas", "Movies": "Películas",
"Photos": "Fotos", "Photos": "Fotos",
"Playlists": "Listas de reproducción", "Playlists": "Listas de reproducción",
@ -47,19 +47,19 @@
"Sync": "Sincronizar", "Sync": "Sincronizar",
"ValueSpecialEpisodeName": "Especial - {0}", "ValueSpecialEpisodeName": "Especial - {0}",
"Absolute": "Absoluto", "Absolute": "Absoluto",
"AccessRestrictedTryAgainLater": "El acceso está actualmente restringido. Por favor intente nuevamente mas tarde.", "AccessRestrictedTryAgainLater": "El acceso está actualmente restringido. Por favor intente nuevamente más tarde.",
"Actor": "Actor", "Actor": "Actor",
"Add": "Agregar", "Add": "Agregar",
"AddItemToCollectionHelp": "Agregue items a las colecciones buscándolas y usando el click derecho o tocando el menu para añadirlas a una colección.", "AddItemToCollectionHelp": "Agregue elementos a las colecciones buscándolos y usando el click derecho o tocando el menú para añadirlos a una colección.",
"AddToCollection": "Añadir a la colección", "AddToCollection": "Añadir a la colección",
"AddToPlayQueue": "Añadir a la lista de reproducción", "AddToPlayQueue": "Añadir a la cola de reproducción",
"AddToPlaylist": "Añadir a la lista de reproducción", "AddToPlaylist": "Añadir a la lista de reproducción",
"AddedOnValue": "Añadidos {0}", "AddedOnValue": "Añadidos {0}",
"AdditionalNotificationServices": "Navegue el catálogo de plugins para instalar servicios de notificación adicionales.", "AdditionalNotificationServices": "Navegue el catálogo de complementos para instalar servicios de notificación adicionales.",
"AirDate": "Fecha de emisión", "AirDate": "Fecha de emisión",
"Aired": "Emitido", "Aired": "Emitido",
"Alerts": "Alertas", "Alerts": "Alertas",
"All": "Todo", "All": "Todos",
"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",
@ -69,9 +69,9 @@
"AllowMediaConversionHelp": "Permitir o denegar acceso a la opción de convertir medios.", "AllowMediaConversionHelp": "Permitir o denegar acceso a la opción de convertir medios.",
"AllowOnTheFlySubtitleExtraction": "Permitir extracción de subtítulos al vuelo", "AllowOnTheFlySubtitleExtraction": "Permitir extracción de subtítulos al vuelo",
"AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden extraerse de los videos y entregarse a los reproductores en texto plano para ayudar a evitar la transcodificación de video. En algunos sistemas, esto puede tardar mucho tiempo y provocar que la reproducción de video se detenga durante el proceso de extracción. Deshabilite esta opción para que los subtítulos incrustados se graben con transcodificación de video cuando no estén soportados de forma nativa por el dispositivo cliente.", "AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden extraerse de los videos y entregarse a los reproductores en texto plano para ayudar a evitar la transcodificación de video. En algunos sistemas, esto puede tardar mucho tiempo y provocar que la reproducción de video se detenga durante el proceso de extracción. Deshabilite esta opción para que los subtítulos incrustados se graben con transcodificación de video cuando no estén soportados de forma nativa por el dispositivo cliente.",
"AllowRemoteAccess": "Permitir conexiones remotas a este Servidor Jellyfin.", "AllowRemoteAccess": "Permitir conexiones remotas a este servidor Jellyfin.",
"AllowRemoteAccessHelp": "Si no está tildado, todas las conexiones remotas serán bloqueadas.", "AllowRemoteAccessHelp": "Si no está tildado, todas las conexiones remotas serán bloqueadas.",
"AlwaysPlaySubtitles": "Siempre mostrar subtítulos", "AlwaysPlaySubtitles": "Reproducir siempre",
"AnyLanguage": "Cualquier idioma", "AnyLanguage": "Cualquier idioma",
"Anytime": "Cualquier fecha", "Anytime": "Cualquier fecha",
"Ascending": "Ascendente", "Ascending": "Ascendente",
@ -79,21 +79,16 @@
"Audio": "Audio", "Audio": "Audio",
"Auto": "Auto", "Auto": "Auto",
"AutoBasedOnLanguageSetting": "Auto (basado en configuración de idioma)", "AutoBasedOnLanguageSetting": "Auto (basado en configuración de idioma)",
"AutomaticallyConvertNewContent": "Convertir contenido nuevo automáticamente",
"Backdrop": "Fondo", "Backdrop": "Fondo",
"AllowHWTranscodingHelp": "Permite que el sintonizador transcodifique las transmisiones sobre la marcha. Esto puede ayudar a reducir la transcodificación requerida por el servidor.", "AllowHWTranscodingHelp": "Permita que el sintonizador transcodifique transmisiones sobre la marcha. Esto puede ayudar a reducir la transcodificación requerida por el servidor.",
"AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP o IP/máscara-de-red para redes a las que se les permitirá conectarse de forma remota. Si se deja vacía, todas las direcciones remotas serán permitidas.", "AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP o IP/máscara de red para redes a las que se les permitirá conectarse de forma remota. Si se deja vacía, todas las direcciones remotas serán permitidas.",
"AlwaysPlaySubtitlesHelp": "Los subtítulos que concuerden con la preferencia de idioma se cargarán independientemente del idioma del audio.", "AlwaysPlaySubtitlesHelp": "Los subtítulos que concuerden con la preferencia de idioma se cargarán independientemente del idioma del audio.",
"AndroidUnlockRestoreHelp": "Para recuperar tu compra anterior, por favor asegurate que iniciaste sesión en el dispositivo con la misma cuenta de Google (o Amazon) que hizo la compra originalmente. Asegurate de que la tienda de aplicaciones esté habilitada y no posea control parental alguno, y que tiene una conexión a Internet activa. Solo tendrás que hacer esto una sola vez para recuperar tu compra anterior.",
"AroundTime": "Alrededor de {0}", "AroundTime": "Alrededor de {0}",
"Art": "Arte", "Art": "Arte",
"AsManyAsPossible": "Tantos como sea posible", "AsManyAsPossible": "Tantos como sea posible",
"AspectRatio": "Relación de aspecto", "AspectRatio": "Relación de aspecto",
"AudioBitrateNotSupported": "Tasa de bits de audio no soportado", "AudioBitrateNotSupported": "Tasa de bits de audio no soportado",
"AudioSampleRateNotSupported": "Frecuencia de muestreo de audio no soportada", "AudioSampleRateNotSupported": "Frecuencia de muestreo de audio no soportada",
"AutomaticallyConvertNewContentHelp": "El contenido nuevo que se agregue a esta carpeta va a convertirse automáticamente.",
"AutomaticallySyncNewContent": "Descargar contenido nuevo automáticamente",
"AutomaticallySyncNewContentHelp": "El contenido nuevo agregado a esta carpeta va a ser descargado automáticamente al dispositivo.",
"Backdrops": "Imágenes de fondo", "Backdrops": "Imágenes de fondo",
"Banner": "Cartel", "Banner": "Cartel",
"BestFit": "Mejor ajuste", "BestFit": "Mejor ajuste",
@ -128,7 +123,6 @@
"ButtonConfigurePassword": "Configurar contraseña", "ButtonConfigurePassword": "Configurar contraseña",
"ButtonConfigurePinCode": "Configurar clave PIN", "ButtonConfigurePinCode": "Configurar clave PIN",
"ButtonConnect": "Conectar", "ButtonConnect": "Conectar",
"ButtonConvertMedia": "Convertir medios",
"ButtonCreate": "Crear", "ButtonCreate": "Crear",
"ButtonDelete": "Eliminar", "ButtonDelete": "Eliminar",
"ButtonDeleteImage": "Eliminar imagen", "ButtonDeleteImage": "Eliminar imagen",
@ -169,7 +163,6 @@
"ButtonParentalControl": "Control parental", "ButtonParentalControl": "Control parental",
"ButtonPause": "Pausar", "ButtonPause": "Pausar",
"ButtonPlay": "Reproducir", "ButtonPlay": "Reproducir",
"ButtonPlayOneMinute": "Reproducir un minuto",
"ButtonPlayTrailer": "Tráiler", "ButtonPlayTrailer": "Tráiler",
"ButtonPlaylist": "Lista de reproducción", "ButtonPlaylist": "Lista de reproducción",
"ButtonPreferences": "Preferencias", "ButtonPreferences": "Preferencias",
@ -178,10 +171,8 @@
"ButtonPrivacyPolicy": "Política de privacidad", "ButtonPrivacyPolicy": "Política de privacidad",
"ButtonProfile": "Perfil", "ButtonProfile": "Perfil",
"ButtonProfileHelp": "Definir imagen de perfil y contraseña", "ButtonProfileHelp": "Definir imagen de perfil y contraseña",
"ButtonPurchase": "Comprar",
"ButtonQuality": "Calidad", "ButtonQuality": "Calidad",
"ButtonRecord": "Grabar", "ButtonRecord": "Grabar",
"ButtonReenable": "Reactivar",
"ButtonRefresh": "Actualizar", "ButtonRefresh": "Actualizar",
"ButtonRefreshGuideData": "Actualizar datos de la guía", "ButtonRefreshGuideData": "Actualizar datos de la guía",
"ButtonReject": "Rechazar", "ButtonReject": "Rechazar",
@ -192,12 +183,11 @@
"ButtonRepeat": "Repetir", "ButtonRepeat": "Repetir",
"ButtonReports": "Reportes", "ButtonReports": "Reportes",
"ButtonReset": "Restablecer", "ButtonReset": "Restablecer",
"ButtonResetEasyPassword": "Restablecer codigo PIN", "ButtonResetEasyPassword": "Restablecer código PIN",
"ButtonResetPassword": "Restablecer contraseña", "ButtonResetPassword": "Restablecer contraseña",
"ButtonResetTuner": "Restablecer sintonizador", "ButtonResetTuner": "Restablecer sintonizador",
"ButtonRestart": "Reiniciar", "ButtonRestart": "Reiniciar",
"ButtonRestartNow": "Reiniciar ahora", "ButtonRestartNow": "Reiniciar ahora",
"ButtonRestorePreviousPurchase": "Recuperar compra",
"ButtonResume": "Resumir", "ButtonResume": "Resumir",
"ButtonRevoke": "Revocar", "ButtonRevoke": "Revocar",
"ButtonSave": "Guardar", "ButtonSave": "Guardar",
@ -213,12 +203,11 @@
"ButtonSendInvitation": "Enviar invitación", "ButtonSendInvitation": "Enviar invitación",
"ButtonServer": "Servidor", "ButtonServer": "Servidor",
"ButtonServerDashboard": "Panel del servidor", "ButtonServerDashboard": "Panel del servidor",
"ButtonSettings": "Ajustes", "ButtonSettings": "Configuraciones",
"ButtonShare": "Compartir", "ButtonShare": "Compartir",
"ButtonShuffle": "Aleatorio", "ButtonShuffle": "Aleatorio",
"ButtonShutdown": "Apagar", "ButtonShutdown": "Apagar",
"ButtonSignIn": "Iniciar sesión", "ButtonSignIn": "Iniciar sesión",
"ButtonSignUp": "Registrarse",
"ButtonSkip": "Saltear", "ButtonSkip": "Saltear",
"ButtonSort": "Ordenar", "ButtonSort": "Ordenar",
"ButtonStart": "Iniciar", "ButtonStart": "Iniciar",
@ -230,8 +219,6 @@
"ButtonTrailer": "Tráiler", "ButtonTrailer": "Tráiler",
"ButtonTryAgain": "Intentar de nuevo", "ButtonTryAgain": "Intentar de nuevo",
"ButtonUninstall": "Desinstalar", "ButtonUninstall": "Desinstalar",
"ButtonUnlockPrice": "Desbloquear {0}",
"ButtonUnlockWithPurchase": "Desbloquear con compra",
"ButtonUnmute": "Desilenciar", "ButtonUnmute": "Desilenciar",
"ButtonUp": "Arriba", "ButtonUp": "Arriba",
"ButtonUpdateNow": "Actualizar ahora", "ButtonUpdateNow": "Actualizar ahora",
@ -251,11 +238,10 @@
"CategorySystem": "Sistema", "CategorySystem": "Sistema",
"CategoryUser": "Usuario", "CategoryUser": "Usuario",
"ChangingMetadataImageSettingsNewContent": "Cambiar la configuración de descarga de metadatos o arte solo aplicará al contenido nuevo que se agregue a tu biblioteca. Para aplicar los cambios a los títulos existentes, tendrás que actualizar sus metadatos manualmente.", "ChangingMetadataImageSettingsNewContent": "Cambiar la configuración de descarga de metadatos o arte solo aplicará al contenido nuevo que se agregue a tu biblioteca. Para aplicar los cambios a los títulos existentes, tendrás que actualizar sus metadatos manualmente.",
"ChannelAccessHelp": "Selecciona los canales a compartir con este usuario. Los administradores podrán editar todos los canales con el administrador de metadatos", "ChannelAccessHelp": "Selecciona los canales a compartir con este usuario. Los administradores podrán editar todos los canales con el administrador de metadatos.",
"ChannelNameOnly": "Sólo canal {0}", "ChannelNameOnly": "Sólo canal {0}",
"ChannelNumber": "Número del canal", "ChannelNumber": "Número del canal",
"CinemaModeConfigurationHelp": "El modo cine trae la experiencia del cine directamente a tu living, con la posibilidad de reproducir tráilers e introducciones personalizadas antes de la función principal.", "CinemaModeConfigurationHelp": "El modo cine trae la experiencia del cine directamente a tu living, con la posibilidad de reproducir tráilers e introducciones personalizadas antes de la función principal.",
"CinemaModeConfigurationHelp2": "Las aplicaciones de Jellyfin tienen la opcion de habilitar o deshabilitar el modo cine. Las aplicaciones de TV activan el modo cine de forma predeterminada.",
"CinemaModeFeatureDescription": "El modo cine te da la verdadera experiencia del cine con tráilers e introducciones personalizadas antes de la función principal.", "CinemaModeFeatureDescription": "El modo cine te da la verdadera experiencia del cine con tráilers e introducciones personalizadas antes de la función principal.",
"CloudSyncFeatureDescription": "Sincroniza tus medios a la nube para respaldos, archivados y conversiones más fáciles.", "CloudSyncFeatureDescription": "Sincroniza tus medios a la nube para respaldos, archivados y conversiones más fáciles.",
"ColorPrimaries": "Colores primarios", "ColorPrimaries": "Colores primarios",
@ -265,8 +251,8 @@
"Composer": "Compositor", "Composer": "Compositor",
"ConfigureDateAdded": "Configura cómo se va a determinar las fechas de adición en la pestaña Bibliotecas del panel del servidor Jellyfin", "ConfigureDateAdded": "Configura cómo se va a determinar las fechas de adición en la pestaña Bibliotecas del panel del servidor Jellyfin",
"ConfirmDeleteImage": "¿Eliminar imagen?", "ConfirmDeleteImage": "¿Eliminar imagen?",
"ConfirmDeleteItem": "Eliminar este elemento lo eliminara tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?", "ConfirmDeleteItem": "Eliminar este elemento lo eliminará tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?",
"ConfirmDeleteItems": "Eliminar estos elementos los eliminara tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?", "ConfirmDeleteItems": "Eliminar estos elementos los eliminará tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?",
"ConfirmDeletion": "Confirmar eliminación", "ConfirmDeletion": "Confirmar eliminación",
"ConfirmEndPlayerSession": "¿Desea apagar Jellyfin en {0}?", "ConfirmEndPlayerSession": "¿Desea apagar Jellyfin en {0}?",
"ConfirmRemoveDownload": "¿Quitar descarga?", "ConfirmRemoveDownload": "¿Quitar descarga?",
@ -286,20 +272,20 @@
"CoverArt": "Arte de portada", "CoverArt": "Arte de portada",
"CustomDlnaProfilesHelp": "Crear un perfil personalizado para apuntar un nuevo dispositivo o sobre-escribir el perfil del sistema.", "CustomDlnaProfilesHelp": "Crear un perfil personalizado para apuntar un nuevo dispositivo o sobre-escribir el perfil del sistema.",
"DateAdded": "Fecha agregada", "DateAdded": "Fecha agregada",
"DatePlayed": "Fecha reproducido", "DatePlayed": "Fecha de reproducción",
"Days": "Dias", "Days": "Dias",
"DeathDateValue": "Muerte: {0}", "DeathDateValue": "Muerte: {0}",
"Default": "Predeterminado", "Default": "Predeterminado",
"DefaultCameraUploadPathHelp": "Selecciona un directorio personalizado. Si queda en blanco, una carpeta predeterminada va a ser usada. Si es una carpeta personalizada, esta va a necesitar ser agregada en la biblioteca, en la configuración de bibliotecas de Jellyfin.", "DefaultCameraUploadPathHelp": "Selecciona un directorio personalizado. Si queda en blanco, una carpeta predeterminada va a ser usada. Si es una carpeta personalizada, esta va a necesitar ser agregada en la biblioteca, en la configuración de bibliotecas de Jellyfin.",
"DefaultErrorMessage": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.", "DefaultErrorMessage": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.",
"DefaultMetadataLangaugeDescription": "Estos son tus predeterminados y pueden ser personalizados por librería unicamente.", "DefaultMetadataLangaugeDescription": "Estos son tus predeterminados y pueden ser personalizados por librería únicamente.",
"Delete": "Borrar", "Delete": "Borrar",
"DeleteDeviceConfirmation": "Estas seguro que quieres borrar este dispositivo? Este va a volver a aparecer cuando una persona se registre.", "DeleteDeviceConfirmation": "Estas seguro que quieres borrar este dispositivo? Este va a volver a aparecer cuando una persona se registre.",
"DeleteImage": "Borrar Imagen", "DeleteImage": "Borrar Imagen",
"DeleteImageConfirmation": "Estas seguro que quieres borrar esta imagen?", "DeleteImageConfirmation": "Estás seguro que quieres borrar esta imagen?",
"DeleteMedia": "Borrar medio", "DeleteMedia": "Borrar medio",
"DeleteUser": "Borrar Usuario", "DeleteUser": "Borrar usuario",
"DeleteUserConfirmation": "Estas seguro que quieres borrar este usuario?", "DeleteUserConfirmation": "Estás seguro que quieres borrar este usuario?",
"Depressed": "Deprimido", "Depressed": "Deprimido",
"Descending": "Descendiente", "Descending": "Descendiente",
"Desktop": "Escritorio", "Desktop": "Escritorio",
@ -308,9 +294,9 @@
"DeviceLastUsedByUserName": "Usado ultima vez por {0}", "DeviceLastUsedByUserName": "Usado ultima vez por {0}",
"DirectPlayError": "Error en la reproducción directa", "DirectPlayError": "Error en la reproducción directa",
"DirectPlaying": "Reproducción directa", "DirectPlaying": "Reproducción directa",
"DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video sera reempaquetado en el acto antes de transmitirlo al dispositivo.", "DirectStreamHelp1": "El medio es compatible con el dispositivo con respecto a la resolución y el tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivos incompatible (mkv, avi, wmv, etc.). El video se volverá a empaquetar sobre la marcha antes de transmitirlo al dispositivo.",
"DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco procesamiento, esto sin perdida en la calidad de video.", "DirectStreamHelp2": "La transmisión directa de un archivo utiliza muy poca potencia de procesamiento sin pérdida de calidad de video.",
"DirectStreaming": "Transmisión en directo", "DirectStreaming": "Transmisión directa",
"Director": "Director", "Director": "Director",
"Directors": "Directores", "Directors": "Directores",
"Disabled": "Deshabilitado", "Disabled": "Deshabilitado",
@ -345,8 +331,8 @@
"EnableCinemaMode": "Modo cine", "EnableCinemaMode": "Modo cine",
"EnableColorCodedBackgrounds": "Habilitar colores en el fondo del código", "EnableColorCodedBackgrounds": "Habilitar colores en el fondo del código",
"AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", "AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.",
"CriticRating": "Calificación de la crítica", "CriticRating": "Valoración crítica",
"DefaultSubtitlesHelp": "Los subtítulos se cargan en base a los indicadores por defecto y los indicadores forzados en los metadatos embebidos. Las preferencias de idioma son consideradas cuando existe más de una opción.", "DefaultSubtitlesHelp": "Los subtítulos se cargan según los indicadores predeterminados y forzados en los metadatos incrustados. Las preferencias de idioma se consideran cuando hay varias opciones disponibles.",
"Dislike": "No me gusta", "Dislike": "No me gusta",
"EnableDebugLoggingHelp": "El registro de depuración debería activarse solo a fin de solucionar problemas. El incremento en el acceso al sistema de archivos podría prevenir que el servidor entre en modo de suspensión en algunos entornos.", "EnableDebugLoggingHelp": "El registro de depuración debería activarse solo a fin de solucionar problemas. El incremento en el acceso al sistema de archivos podría prevenir que el servidor entre en modo de suspensión en algunos entornos.",
"EnableDisplayMirroring": "Habilitar duplicación de la pantalla", "EnableDisplayMirroring": "Habilitar duplicación de la pantalla",
@ -409,10 +395,10 @@
"HeaderFavoriteEpisodes": "Episodios favoritos", "HeaderFavoriteEpisodes": "Episodios favoritos",
"HeaderFavoriteArtists": "Artistas favoritos", "HeaderFavoriteArtists": "Artistas favoritos",
"HeaderFavoriteAlbums": "Álbumes favoritos", "HeaderFavoriteAlbums": "Álbumes favoritos",
"Shows": "Series", "Shows": "Programas",
"CopyStreamURLError": "Hubo un error copiando la URL.", "CopyStreamURLError": "Hubo un error copiando la URL.",
"CopyStreamURLSuccess": "URL copiada con éxito.", "CopyStreamURLSuccess": "URL copiada con éxito.",
"CopyStreamURL": "Copiar la URL de la transmisión", "CopyStreamURL": "Copiar URL de transmisión",
"ButtonSplit": "Dividir", "ButtonSplit": "Dividir",
"ButtonAddImage": "Agregar imagen", "ButtonAddImage": "Agregar imagen",
"AskAdminToCreateLibrary": "Preguntar al administrador para crear una biblioteca.", "AskAdminToCreateLibrary": "Preguntar al administrador para crear una biblioteca.",
@ -454,8 +440,8 @@
"ClientSettings": "Configuración de cliente", "ClientSettings": "Configuración de cliente",
"BoxSet": "Colección", "BoxSet": "Colección",
"Artist": "Artista", "Artist": "Artista",
"AlbumArtist": "Artista del Album", "AlbumArtist": "Artista del álbum",
"Album": "Album", "Album": "Álbum",
"HeaderDateIssued": "Fecha de Emisión", "HeaderDateIssued": "Fecha de Emisión",
"HeaderCustomDlnaProfiles": "Perfiles personalizados", "HeaderCustomDlnaProfiles": "Perfiles personalizados",
"HeaderContinueListening": "Seguir escuchando", "HeaderContinueListening": "Seguir escuchando",
@ -540,5 +526,28 @@
"HeaderFeatureAccess": "Acceso a características", "HeaderFeatureAccess": "Acceso a características",
"HeaderFavoritePlaylists": "Listas de reproducción favoritas", "HeaderFavoritePlaylists": "Listas de reproducción favoritas",
"ButtonTogglePlaylist": "Lista de reproducción", "ButtonTogglePlaylist": "Lista de reproducción",
"ButtonToggleContextMenu": "Más" "ButtonToggleContextMenu": "Más",
"HeaderPlaybackError": "Error de reproducción",
"HeaderPlayback": "Reproducción de medios",
"HeaderPlayOn": "Reproducir en",
"HeaderPlayAll": "Reproducir todo",
"HeaderPinCodeReset": "Restablecer código PIN",
"HeaderPhotoAlbums": "Álbumes de fotos",
"HeaderPeople": "Personas",
"HeaderPendingInvitations": "Invitaciones pendientes",
"HeaderPaths": "Rutas",
"HeaderPasswordReset": "Restablecer contraseña",
"HeaderPassword": "Contraseña",
"HeaderParentalRatings": "Calificaciones parentales",
"HeaderOtherItems": "Otros elementos",
"HeaderOnNow": "Ahora",
"HeaderNewDevices": "Nuevos dispositivos",
"HeaderNewApiKey": "Nueva clave de API",
"HeaderNavigation": "Navegación",
"HeaderMyMediaSmall": "Mis medios (pequeño)",
"HeaderMyMedia": "Mis medios",
"HeaderMyDevice": "Mi dispositivo",
"HeaderMusicVideos": "Videos musicales",
"HeaderMusicQuality": "Calidad de música",
"HeaderMovies": "Películas"
} }

Some files were not shown because too many files have changed in this diff Show More