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"],
'quotes': ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": false }],
'semi': ["error"],
'space-before-blocks': ["error"]
'space-before-blocks': ["error"],
"space-infix-ops": "error"
},
overrides: [
{

View File

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

View File

@ -15,6 +15,8 @@ print(langlst)
input('press enter to continue')
keysus = []
missing = []
with open(langdir + '/' + 'en-us.json') as en:
langus = json.load(en)
for key in langus:
@ -32,10 +34,19 @@ for lang in langlst:
for key in langjson:
if key in keysus:
langjnew[key] = langjson[key]
elif key not in missing:
missing.append(key)
f.seek(0)
f.write(json.dumps(langjnew, indent=inde, sort_keys=False, ensure_ascii=False))
f.write('\n')
f.truncate()
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')

View File

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

View File

@ -50,7 +50,7 @@ define(['dialogHelper', 'datetime', 'globalize', 'emby-select', 'paper-icon-butt
show: function (options) {
return new Promise(function (resolve, reject) {
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) {
var template = this.response;

View File

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

View File

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

View File

@ -54,7 +54,13 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', '
// production version registered with google
// 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';

View File

@ -269,7 +269,7 @@ define(['require', 'browser', 'layoutManager', 'appSettings', 'pluginManager', '
}
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.querySelector('form').addEventListener('submit', onSubmit.bind(self));
if (options.enableSaveButton) {

View File

@ -470,7 +470,7 @@ define(['require', 'apphost', 'layoutManager', 'focusManager', 'globalize', 'loa
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++) {
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) {
loading.show();
require(['text!./imagedownloader.template.html'], function (template) {
require(['text!./imageDownloader.template.html'], function (template) {
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) {
return new Promise(function (resolve, reject) {
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) {
var template = this.response;

View File

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

View File

@ -182,7 +182,7 @@ define(['loading', 'dialogHelper', 'dom', 'jQuery', 'components/libraryoptionsed
currentResolve = resolve;
hasChanges = false;
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) {
var template = this.response;

View File

@ -199,7 +199,7 @@ define(['jQuery', 'loading', 'dialogHelper', 'dom', 'components/libraryoptionsed
currentDeferred = deferred;
hasChanges = false;
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) {
var template = this.response;

View File

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

View File

@ -11,7 +11,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'require', 'paper-icon-but
function show(person) {
return new Promise(function (resolve, reject) {
require(['text!./personeditor.template.html'], function (template) {
require(['text!./personEditor.template.html'], function (template) {
var dialogOptions = {
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';
var selectedItems = [];

View File

@ -244,7 +244,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader',
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;
nowPlayingBarElement = parentContainer.querySelector('.nowPlayingBar');

View File

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

View File

@ -204,6 +204,9 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality
fillChromecastQuality(context.querySelector('.selectChromecastVideoQuality'));
var selectChromecastVersion = context.querySelector('.selectChromecastVersion');
selectChromecastVersion.value = userSettings.chromecastVersion();
var selectSkipForwardLength = context.querySelector('.selectSkipForwardLength');
fillSkipLengths(selectSkipForwardLength);
selectSkipForwardLength.value = userSettings.skipForwardLength();
@ -234,6 +237,7 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality
userSettingsInstance.enableCinemaMode(context.querySelector('.chkEnableCinemaMode').checked);
userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector('.chkEnableNextVideoOverlay').checked);
userSettingsInstance.chromecastVersion(context.querySelector('.selectChromecastVersion').value);
userSettingsInstance.skipForwardLength(context.querySelector('.selectSkipForwardLength').value);
userSettingsInstance.skipBackLength(context.querySelector('.selectSkipBackLength').value);
@ -285,7 +289,7 @@ define(['require', 'browser', 'appSettings', 'apphost', 'focusManager', 'quality
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');

View File

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

View File

@ -5,6 +5,13 @@ define(['globalize'], function (globalize) {
var maxStreamingBitrate = options.currentMaxBitrate;
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 maxAllowedHeight = videoHeight || 2304;

View File

@ -140,7 +140,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL
}
if (item.SeriesName != null) {
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>`;
} else {
context.querySelector('.nowPlayingSerie').innerHTML = seriesName;

View File

@ -92,7 +92,7 @@ import layoutManager from 'layoutManager';
* @return {number} Eased value in range [0, 1].
*/
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);
const x = ox + dx*k;
const y = oy + dy*k;
const x = ox + dx * k;
const y = oy + dy * k;
builtinScroll(xScroller, x, yScroller, y, false);

View File

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

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

View File

@ -803,9 +803,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti
}
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) {
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) {
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) {
require(['components/channelmapper/channelmapper'], function (channelmapper) {
require(['components/channelMapper/channelMapper'], function (channelmapper) {
new channelmapper({
serverId: ApiClient.serverInfo().Id,
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';
function reloadUser(page) {

View File

@ -8,23 +8,73 @@
<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 class="inputContainer">
<input is="emby-input" type="text" id="txtLanNetworks" label="${LabelLanNetworks}" />
<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>
<fieldset class='verticalSection verticalSection-extrabottompadding'>
<legend><h3>${HeaderServerAddressSettings}</h3></legend>
<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="checkboxContainer checkboxContainer-withDescription">
<label>
<input type="checkbox" is="emby-checkbox" id="chkEnableHttps" />
<span>${LabelEnableHttps}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${LabelEnableHttpsHelp}</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="inputContainer fldBaseUrl">
<input is="emby-input" id="txtBaseUrl" type="text" label="${LabelBaseUrl}" />
<div class="fieldDescription">${LabelBaseUrlHelp}</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="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" />
@ -42,43 +92,6 @@
<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 class="fieldDescription">${LabelCustomCertificatePathHelp}</div>
</div>
<div class="inputContainer fldCertPassword hide">
<input is="emby-input" id="txtCertPassword" type="password" label="${LabelCertificatePassword}" autocomplete="new-password" />
<div class="fieldDescription">${LabelCertificatePasswordHelp}</div>
</div>
<div class="selectContainer fldHttpsMode hide">
<select is="emby-select" id="selectHttpsMode" label="${LabelSecureConnectionsMode}">
<option value="disabled">${Disabled}</option>
<option value="enabled">${PreferredNotRequired}</option>
<option value="required">${RequiredForAllRemoteConnections}</option>
<option value="proxy">${HandledByProxy}</option>
</select>
</div>
<div class="checkboxContainer checkboxContainer-withDescription fldEnableUpnp hide">
<label>
@ -87,6 +100,15 @@
</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>
<button is="emby-button" type="submit" class="raised button-submit block">

View File

@ -131,13 +131,13 @@ define([
path: '/dlnaprofile.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/dlna/dlnaprofile'
controller: 'dashboard/dlna/profile'
});
defineRoute({
path: '/dlnaprofiles.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/dlna/dlnaprofiles'
controller: 'dashboard/dlna/profiles'
});
defineRoute({
path: '/addplugin.html',
@ -149,7 +149,7 @@ define([
path: '/library.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/medialibrarypage'
controller: 'dashboard/mediaLibrary'
});
defineRoute({
path: '/librarydisplay.html',
@ -161,7 +161,7 @@ define([
path: '/dlnasettings.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/dlna/dlnasettings'
controller: 'dashboard/dlna/settings'
});
defineRoute({
path: '/edititemmetadata.html',
@ -174,6 +174,47 @@ define([
roles: 'admin',
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({
path: '/home.html',
@ -194,7 +235,7 @@ define([
});
defineRoute({
path: '/itemdetails.html',
controller: 'itemdetailpage',
controller: 'itemDetails',
autoFocus: false,
transition: 'fade'
});
@ -227,23 +268,6 @@ define([
roles: 'admin',
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({
path: '/movies.html',
autoFocus: false,
@ -256,30 +280,6 @@ define([
autoFocus: false,
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({
path: '/installedplugins.html',
autoFocus: false,
@ -314,7 +314,7 @@ define([
path: '/streamingsettings.html',
autoFocus: false,
roles: 'admin',
controller: 'dashboard/streamingsettings'
controller: 'dashboard/streaming'
});
defineRoute({
path: '/tv.html',
@ -327,36 +327,36 @@ define([
path: '/useredit.html',
autoFocus: false,
roles: 'admin',
controller: 'useredit'
controller: 'dashboard/users/useredit'
});
defineRoute({
path: '/userlibraryaccess.html',
autoFocus: false,
roles: 'admin',
controller: 'userlibraryaccess'
controller: 'dashboard/users/userlibraryaccess'
});
defineRoute({
path: '/usernew.html',
autoFocus: false,
roles: 'admin',
controller: 'usernew'
controller: 'dashboard/users/usernew'
});
defineRoute({
path: '/userparentalcontrol.html',
autoFocus: false,
roles: 'admin',
controller: 'userparentalcontrol'
controller: 'dashboard/users/userparentalcontrol'
});
defineRoute({
path: '/userpassword.html',
autoFocus: false,
controller: 'userpasswordpage'
controller: 'dashboard/users/userpasswordpage'
});
defineRoute({
path: '/userprofiles.html',
autoFocus: false,
roles: 'admin',
controller: 'userprofilespage'
controller: 'dashboard/users/userprofilespage'
});
defineRoute({
@ -375,7 +375,7 @@ define([
path: '/wizardlibrary.html',
autoFocus: false,
anonymous: true,
controller: 'dashboard/medialibrarypage'
controller: 'dashboard/mediaLibrary'
});
defineRoute({
path: '/wizardsettings.html',

View File

@ -153,6 +153,14 @@ import events from 'events';
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) {
if (val !== undefined) {
return this.set('skipBackLength', val.toString());

View File

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

View File

@ -24,13 +24,13 @@
"AspectRatio": "Poměr stran",
"AttributeNew": "Nové",
"Audio": "Zvuk",
"Auto": "Automatizovat",
"Auto": "Automaticky",
"Backdrop": "Pozadí",
"Backdrops": "Pozadí",
"BirthDateValue": "Narozen: {0}",
"BirthLocation": "Místo narození",
"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",
"Box": "Pouzdro",
"BoxRear": "Zadní část pouzdra",
@ -167,7 +167,7 @@
"DownloadingDots": "Stahování...",
"Downloads": "Stahová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.",
"Edit": "Upravit",
"EditImages": "Editace obrázků",
@ -197,8 +197,6 @@
"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.",
"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.",
"ExitFullscreen": "Opustit celou obrazovku",
"ExtraLarge": "Extra velký",
@ -436,7 +434,6 @@
"LabelAccessDay": "Den týdne:",
"LabelAccessEnd": "Konec:",
"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}",
"LabelAirDate": "Dny vysílání:",
"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.",
"LabelDownloadLanguages": "Stahované jazyky:",
"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:",
"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.",
@ -546,8 +543,6 @@
"LabelFormat": "Formát:",
"LabelFree": "Zdarma",
"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)",
"LabelGroupMoviesIntoCollections": "Seskupit filmy do kolekcí",
"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.",
"LabelLanguage": "Jazyk:",
"LabelLastResult": "Poslední výsledky:",
"LabelLimitIntrosToUnwatchedContent": "Přehrávat trailery pouze u nezhlédnutého obsahu",
"LabelLineup": "Hlavní linie:",
"LabelLocalHttpServerPortNumber": "Lokální HTTP port:",
"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.",
"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.",
"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.",
"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í",
@ -959,7 +951,7 @@
"OptionMissingEpisode": "Chybějící episody",
"OptionMonday": "Pondělí",
"OptionNameSort": "Název",
"OptionNew": "Nový...",
"OptionNew": "Nový",
"OptionNone": "Žádný",
"OptionOnAppStartup": "Při spuštění aplikace",
"OptionOnInterval": "V intervalu",
@ -977,7 +969,7 @@
"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.",
"OptionRequirePerfectSubtitleMatch": "Stahovat jen titulky, které perfektně sedí k mým video souborům",
"OptionResElement": "Zdrojový element",
"OptionResElement": "Prvek \"res\"",
"OptionResumable": "Pozastavavitelný",
"OptionRuntime": "Délka",
"OptionSaturday": "Sobota",
@ -1219,7 +1211,6 @@
"Yes": "Ano",
"Yesterday": "Včera",
"Absolute": "Absolutní",
"AddUserByManually": "Přidat místního uživatele ručním zadáním informací.",
"AirDate": "Datum vysílání",
"Aired": "Vysíláno",
"Alerts": "Upozornění",
@ -1229,26 +1220,22 @@
"AllowMediaConversion": "Povolit konverzi médií",
"AllowMediaConversionHelp": "Povolit nebo zakázat přístup k funkci konverze médií.",
"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.",
"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.",
"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",
"Ascending": "Vzestupně",
"AudioBitDepthNotSupported": "Bitová hloubka zvuku není podporována",
"AudioSampleRateNotSupported": "Frekvence vzorkování zvuku není podporována",
"AutoBasedOnLanguageSetting": "Automaticky (na základě jazykového nastavení)",
"AutomaticallyConvertNewContent": "Automaticky zkonvertovat nový obsah",
"AutomaticallyConvertNewContentHelp": "Nový obsah přidaný do této složky bude automaticky zkonvertován.",
"Banner": "Banner",
"Banner": "Výřez plakátu",
"BestFit": "Nejvhodnější",
"Blacklist": "Černá listina",
"BobAndWeaveWithHelp": "Bob and weave (vyšší kvalita, ale pomalejší)",
"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",
"ButtonMenu": "Menu",
"ButtonOk": "Ok",
@ -1271,7 +1258,7 @@
"ConvertingDots": "Konverze...",
"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.",
"Depressed": "Stlačený",
"Depressed": "Vytlačené",
"Descending": "Klesající",
"DetectingDevices": "Hledání zařízení",
"DirectPlayError": "Chyba přímého přehrávání",
@ -1317,7 +1304,6 @@
"HeaderFetcherSettings": "Nastavení načítání",
"HeaderImageLogo": "Logo",
"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.",
"HeaderLiveTV": "Živá TV",
"HeaderLiveTv": "Živá TV",
@ -1335,14 +1321,10 @@
"HeaderTV": "TV",
"HeaderTypeImageFetchers": "{0} stahovačů obrázků",
"HeaderUpcomingEpisodes": "Následující epizody",
"HeaderUpcomingNews": "Následující novinky",
"HeaderVideo": "Video",
"HeaderVideoType": "Formát videa",
"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í.",
"Invitations": "Pozvánky",
"InviteAnJellyfinConnectUser": "Přidejte uživatele odesláním e-mailové pozvánky.",
"KeepDownload": "Zachovat stahování",
"LabelAlbum": "Album:",
"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.",
"LabelCertificatePassword": "Heslo certifikátu:",
"LabelCertificatePasswordHelp": "Pokud certifikát vyžaduje heslo, zadejte jej prosím zde.",
"LabelConvertTo": "Konvertovat na:",
"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ě.",
"LabelDateTimeLocale": "Místní nastavení data:",
@ -1385,7 +1366,6 @@
"LabelSortOrder": "Pořadí řazení:",
"LabelSpecialSeasonsDisplayName": "Zobrazovaný název pro zvláštní sezónu:",
"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:",
"LabelTag": "Tag:",
"LabelTypeMetadataDownloaders": "{0} stahovače metadat:",
@ -1469,7 +1449,7 @@
"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.",
"PreferredNotRequired": "Preferováno, ale není vyžadováno",
"Raised": "Vyvolané",
"Raised": "Vystupující",
"Rate": "Hodnocení",
"RequiredForAllRemoteConnections": "Požadováno pro všechna vzdálená připojení",
"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í.",
"ServerRestartNeededAfterPluginInstall": "Jellyfin server bude nutné po instalaci pluginu restartovat.",
"ShowAdvancedSettings": "Zobrazit rozšířená nastavení",
"ShowTitle": "Ukázat název",
"ShowYear": "Ukázat rok",
"ShowTitle": "Zobrazit název",
"ShowYear": "Zobrazit rok",
"SimultaneousConnectionLimitHelp": "Maximální počet povolených současných streamů. Pro vypnutí omezení zadejte 0.",
"SmallCaps": "Malá písmena",
"Smaller": "Menší",
"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.",
"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.",
@ -1502,7 +1481,7 @@
"ThemeVideos": "Tematická videa",
"Trailers": "Trailery",
"TvLibraryHelp": "Podívejte se na {0}průvodce pojmenováním TV pořadů{1}.",
"Uniform": "Uniformní",
"Uniform": "Obrys",
"Unplayed": "Nepřehrané",
"UserAgentHelp": "Zadejte vlastní HTTP hlavičku user agenta.",
"ValueMinutes": "{0} min",
@ -1608,5 +1587,9 @@
"Filter": "Filtr",
"New": "Nové",
"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",
"LabelSubtitlePlaybackMode": "Underteksttilstand:",
"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:",
"LabelTime": "Tid:",
"LabelTimeLimitHours": "Tidsgrænse (timer):",
@ -1099,7 +1094,6 @@
"HeaderLiveTV": "Live-TV",
"Shows": "Serier",
"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",
"Art": "Kunst",
"Ascending": "Stigende",
@ -1111,10 +1105,6 @@
"AudioSampleRateNotSupported": "Lydens samplerate ikke understøttet",
"Auto": "Auto",
"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",
"Backdrops": "Baggrunde",
"Banner": "Banner",
@ -1198,8 +1188,6 @@
"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}.",
"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.",
"ExtraLarge": "Ekstra Stor",
"Extras": "Bonusmateriale",
@ -1236,7 +1224,6 @@
"HeaderNavigation": "Navigation",
"HeaderNextEpisodePlayingInValue": "Næste afsnit afspilles om {0}",
"HeaderNextVideoPlayingInValue": "Næste video afspilles om {0}",
"HeaderOffline": "Offline",
"HeaderPhotoAlbums": "Foto Albummer",
"HeaderPlayOn": "Afspil På",
"HeaderProgram": "Program",
@ -1252,18 +1239,15 @@
"HeaderTags": "Mærker",
"HeaderTopPlugins": "Bedste Plugins",
"HeaderType": "Type",
"HeaderUpcomingNews": "Kommende Nyheder",
"HeaderVideo": "Video",
"HeaderVideoQuality": "Video Kvalitet",
"HeaderVideoType": "Video Type",
"HeaderWaitingForWifi": "Venter på Wifi",
"Hide": "Skjul",
"HideWatchedContentFromLatestMedia": "Skjul set indhold fra seneste medier",
"Home": "Hjem",
"Horizontal": "Horisontalt",
"ImdbRating": "IMDb bedømmelse",
"InterlacedVideoNotSupported": "Interlaced video ikke understøttet",
"InviteAnJellyfinConnectUser": "Tilføj en bruger ved at sende en email invitation.",
"KeepDownload": "Behold hentning",
"Label3DFormat": "3D format:",
"LabelAlbum": "Album:",
@ -1275,7 +1259,6 @@
"LabelCache": "Cache:",
"LabelCertificatePassword": "Adgangskode til certifikat:",
"LabelCertificatePasswordHelp": "Hvis dit certifikat kræver en adgangskode, skriv det venligst her.",
"LabelConvertTo": "Konvertér til:",
"LabelDashboardTheme": "Server dashboard tema:",
"LabelDateTimeLocale": "Dato og tid område:",
"LabelDefaultScreen": "Standard skærm:",
@ -1314,7 +1297,6 @@
"LabelSoundEffects": "Lydeffekter:",
"LabelStatus": "Status:",
"LabelSubtitles": "Undertekster",
"LabelSyncNoTargetsHelp": "Det ser ud til at du ikke har nogen apps der understøtter offline hentning.",
"LabelTVHomeScreen": "TV modus hjemmeskærm:",
"LabelTag": "Mærke:",
"LabelTagline": "Taglinje:",
@ -1333,7 +1315,6 @@
"LabelXDlnaCap": "X-DLNA begrænsning:",
"LabelXDlnaDoc": "X-DLNA dokumentation:",
"LabelYear": "År:",
"LabelffmpegVersion": "FFmpeg version:",
"Large": "Stor",
"LearnHowYouCanContribute": "Lær hvordan du kan bidrage.",
"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.",
"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.",
"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.",
"Metadata": "Metadata",
"Mobile": "Mobil",
@ -1379,10 +1359,7 @@
"OnlyForcedSubtitles": "Kun tvungne undertekster",
"OnlyForcedSubtitlesHelp": "Kun undertekster markeret som tvungne vil blive indlæst.",
"OnlyImageFormats": "Kun billedformater (VOBSUB, PGS, SUB)",
"Option2Player": "2+",
"Option3D": "3D",
"Option3Player": "3+",
"Option4Player": "4+",
"OptionAlbum": "Album",
"OptionArtist": "Kunstner",
"OptionAuto": "Automatisk",
@ -1426,7 +1403,6 @@
"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.",
"Playlists": "Afspilningslister",
"PleaseSelectDeviceToSyncTo": "Vælg venligst en enhed at hente til.",
"Previous": "Forrige",
"Primary": "Primær",
"PrivacyPolicy": "Privatlivs politik",
@ -1455,16 +1431,12 @@
"Sort": "Sortér",
"SortByValue": "Sortér efter {0}",
"Standard": "Standard",
"StatsForNerds": "Stats for nørder",
"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.",
"SubtitleCodecNotSupported": "Undertekst format ikke understøttet",
"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.",
"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",
"TabAlbums": "Albummer",
"TabCodecs": "Codeks",
@ -1478,7 +1450,6 @@
"TabPlaylist": "Afspilningsliste",
"TabServer": "Server",
"TabStreaming": "Streamer",
"TabSync": "Sync",
"TabTV": "TV",
"Tags": "Mærker",
"TagsValue": "Mærker: {0}",
@ -1489,7 +1460,6 @@
"TitleLiveTV": "Live TV",
"TitleServer": "Server",
"TitleSupport": "Support",
"TitleSync": "Sync",
"Trailer": "Forfilm",
"Trailers": "Forfilm",
"Transcoding": "Omkodning",
@ -1519,7 +1489,6 @@
"ViewTypeTvShows": "TV",
"Watched": "Set",
"Whitelist": "Hvidliste",
"WifiRequiredToDownload": "En Wifi forbindelse er påkrævet for at forsætte hentning.",
"Yes": "Ja",
"HeaderFavoriteMovies": "Favoritfilm",
"HeaderFavoriteShows": "Favoritserier",

View File

@ -9,7 +9,6 @@
"AddToPlayQueue": "Zur Warteschlange hinzufügen",
"AddToPlaylist": "Zur Wiedergabeliste hinzufügen",
"AddUser": "Benutzer anlegen",
"AddUserByManually": "Lege einen lokalen User durch manuelle Eingabe der User-Informationen an.",
"AddedOnValue": "{0} hinzugefügt",
"AdditionalNotificationServices": "Durchsuche den Pluginkatalog, um weitere Benachrichtigungsdienste zu installieren.",
"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.",
"AllowRemoteAccess": "Erlaube externe Verbindungen zu diesem Jellyfin Server.",
"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.",
"AlwaysPlaySubtitles": "Immer anzeigen",
"AlwaysPlaySubtitlesHelp": "Untertitel die den Spracheinstellungen entsprechen werden unabhängig von der Tonspursprache geladen.",
@ -666,7 +663,7 @@
"LabelMoviePrefix": "Filmpräfix:",
"LabelMoviePrefixHelp": "Wenn ein Präfix in Filmtiteln angewendet wird, gib es hier ein damit Jellyfin es korrekt behandeln kann.",
"LabelMovieRecordingPath": "Film Aufnahmepfad (Optional):",
"LabelMusicStreamingTranscodingBitrate": "Musik Transkodier Bitrate:",
"LabelMusicStreamingTranscodingBitrate": "Musik-Transkodierung Bitrate:",
"LabelMusicStreamingTranscodingBitrateHelp": "Wähle die maximale Bitrate für das streamen von Musik.",
"LabelNewName": "Neuer Name:",
"LabelNewPassword": "Neues Passwort:",
@ -1529,5 +1526,8 @@
"HeaderFavoritePlaylists": "Lieblings-Wiedergabeliste",
"ButtonTogglePlaylist": "Wiedergabeliste",
"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.",
"EncoderPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.",
"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.",
"HeaderAccessSchedule": "Access Schedule",
"HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.",
@ -384,6 +383,7 @@
"HeaderGuideProviders": "TV Guide Data Providers",
"HeaderHome": "Home",
"HeaderHttpHeaders": "HTTP Headers",
"HeaderHttpsSettings": "HTTPS Settings",
"HeaderIdentification": "Identification",
"HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.",
"HeaderIdentificationHeader": "Identification Header",
@ -450,6 +450,7 @@
"HeaderRecentlyPlayed": "Recently Played",
"HeaderRecordingOptions": "Recording Options",
"HeaderRecordingPostProcessing": "Recording Post Processing",
"HeaderRemoteAccessSettings": "Remote Access Settings",
"HeaderRemoteControl": "Remote Control",
"HeaderRemoveMediaFolder": "Remove Media Folder",
"HeaderRemoveMediaLocation": "Remove Media Location",
@ -476,6 +477,7 @@
"HeaderSeries": "Series",
"HeaderSeriesOptions": "Series Options",
"HeaderSeriesStatus": "Series Status",
"HeaderServerAddressSettings": "Server Address Settings",
"HeaderServerSettings": "Server Settings",
"HeaderSettings": "Settings",
"HeaderSetupLibrary": "Setup your media libraries",
@ -630,7 +632,7 @@
"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.",
"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",
"LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.",
"LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)",
@ -642,6 +644,8 @@
"LabelEnableDlnaServer": "Enable DLNA server",
"LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play content.",
"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",
"LabelEnableRealtimeMonitorHelp": "Changes to files will be processed immediately, on supported file systems.",
"LabelEnableSingleImageInDidlLimit": "Limit to single embedded image",
@ -651,7 +655,7 @@
"LabelEvent": "Event:",
"LabelEveryXMinutes": "Every:",
"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",
"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",
@ -748,6 +752,9 @@
"LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:",
"LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music.",
"LabelName": "Name:",
"LabelChromecastVersion": "Chromecast Version",
"LabelStable": "Stable",
"LabelNightly": "Nightly",
"LabelNewName": "New name:",
"LabelNewPassword": "New password:",
"LabelNewPasswordConfirm": "New password confirm:",
@ -807,6 +814,8 @@
"LabelReleaseDate": "Release date:",
"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.",
"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):",
"LabelSaveLocalMetadata": "Save artwork into media folders",
"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",
"EnableFastImageFadeInHelp": "Enable faster fade-in animation for loaded images",
"LabelSeasonNumber": "Season number:",
"LabelSecureConnectionsMode": "Secure connection mode:",
"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.",
"LabelSelectUsers": "Select users:",
@ -1257,7 +1265,6 @@
"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.",
"PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode information over filenames",
"PreferredNotRequired": "Preferred, but not required",
"Premiere": "Premiere",
"Premieres": "Premieres",
"Previous": "Previous",
@ -1296,7 +1303,6 @@
"RepeatOne": "Repeat one",
"ReplaceAllMetadata": "Replace all metadata",
"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.",
"ResumeAt": "Resume from {0}",
"Rewind": "Rewind",

View File

@ -1,6 +1,6 @@
{
"ButtonQuickStartGuide": "Guía de inicio rápido",
"ButtonSignOut": "Sign out",
"ButtonSignOut": "Cerrar sesión",
"EnableHardwareEncoding": "Habilitar la codificación de hardware",
"FolderTypeTvShows": "TV",
"HeaderAddUser": "Agregar Usuario",
@ -39,7 +39,7 @@
"Genres": "Géneros",
"HeaderAlbumArtists": "Artistas de álbum",
"HeaderContinueWatching": "Seguir viendo",
"HeaderNextUp": "A Continuación",
"HeaderNextUp": "Siguiente",
"Movies": "Películas",
"Photos": "Fotos",
"Playlists": "Listas de reproducción",
@ -47,19 +47,19 @@
"Sync": "Sincronizar",
"ValueSpecialEpisodeName": "Especial - {0}",
"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",
"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",
"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",
"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",
"Aired": "Emitido",
"Alerts": "Alertas",
"All": "Todo",
"All": "Todos",
"AllChannels": "Todos los canales",
"AllComplexFormats": "Todos los formatos complejos (ASS, SSA, VOBSUB, PGS, SUB, IDX, ...)",
"AllEpisodes": "Todos los capítulos",
@ -69,9 +69,9 @@
"AllowMediaConversionHelp": "Permitir o denegar acceso a la opción de convertir medios.",
"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.",
"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.",
"AlwaysPlaySubtitles": "Siempre mostrar subtítulos",
"AlwaysPlaySubtitles": "Reproducir siempre",
"AnyLanguage": "Cualquier idioma",
"Anytime": "Cualquier fecha",
"Ascending": "Ascendente",
@ -79,21 +79,16 @@
"Audio": "Audio",
"Auto": "Auto",
"AutoBasedOnLanguageSetting": "Auto (basado en configuración de idioma)",
"AutomaticallyConvertNewContent": "Convertir contenido nuevo automáticamente",
"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.",
"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.",
"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.",
"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}",
"Art": "Arte",
"AsManyAsPossible": "Tantos como sea posible",
"AspectRatio": "Relación de aspecto",
"AudioBitrateNotSupported": "Tasa de bits de audio no soportado",
"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",
"Banner": "Cartel",
"BestFit": "Mejor ajuste",
@ -128,7 +123,6 @@
"ButtonConfigurePassword": "Configurar contraseña",
"ButtonConfigurePinCode": "Configurar clave PIN",
"ButtonConnect": "Conectar",
"ButtonConvertMedia": "Convertir medios",
"ButtonCreate": "Crear",
"ButtonDelete": "Eliminar",
"ButtonDeleteImage": "Eliminar imagen",
@ -169,7 +163,6 @@
"ButtonParentalControl": "Control parental",
"ButtonPause": "Pausar",
"ButtonPlay": "Reproducir",
"ButtonPlayOneMinute": "Reproducir un minuto",
"ButtonPlayTrailer": "Tráiler",
"ButtonPlaylist": "Lista de reproducción",
"ButtonPreferences": "Preferencias",
@ -178,10 +171,8 @@
"ButtonPrivacyPolicy": "Política de privacidad",
"ButtonProfile": "Perfil",
"ButtonProfileHelp": "Definir imagen de perfil y contraseña",
"ButtonPurchase": "Comprar",
"ButtonQuality": "Calidad",
"ButtonRecord": "Grabar",
"ButtonReenable": "Reactivar",
"ButtonRefresh": "Actualizar",
"ButtonRefreshGuideData": "Actualizar datos de la guía",
"ButtonReject": "Rechazar",
@ -192,12 +183,11 @@
"ButtonRepeat": "Repetir",
"ButtonReports": "Reportes",
"ButtonReset": "Restablecer",
"ButtonResetEasyPassword": "Restablecer codigo PIN",
"ButtonResetEasyPassword": "Restablecer código PIN",
"ButtonResetPassword": "Restablecer contraseña",
"ButtonResetTuner": "Restablecer sintonizador",
"ButtonRestart": "Reiniciar",
"ButtonRestartNow": "Reiniciar ahora",
"ButtonRestorePreviousPurchase": "Recuperar compra",
"ButtonResume": "Resumir",
"ButtonRevoke": "Revocar",
"ButtonSave": "Guardar",
@ -213,12 +203,11 @@
"ButtonSendInvitation": "Enviar invitación",
"ButtonServer": "Servidor",
"ButtonServerDashboard": "Panel del servidor",
"ButtonSettings": "Ajustes",
"ButtonSettings": "Configuraciones",
"ButtonShare": "Compartir",
"ButtonShuffle": "Aleatorio",
"ButtonShutdown": "Apagar",
"ButtonSignIn": "Iniciar sesión",
"ButtonSignUp": "Registrarse",
"ButtonSkip": "Saltear",
"ButtonSort": "Ordenar",
"ButtonStart": "Iniciar",
@ -230,8 +219,6 @@
"ButtonTrailer": "Tráiler",
"ButtonTryAgain": "Intentar de nuevo",
"ButtonUninstall": "Desinstalar",
"ButtonUnlockPrice": "Desbloquear {0}",
"ButtonUnlockWithPurchase": "Desbloquear con compra",
"ButtonUnmute": "Desilenciar",
"ButtonUp": "Arriba",
"ButtonUpdateNow": "Actualizar ahora",
@ -251,11 +238,10 @@
"CategorySystem": "Sistema",
"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.",
"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}",
"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.",
"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.",
"CloudSyncFeatureDescription": "Sincroniza tus medios a la nube para respaldos, archivados y conversiones más fáciles.",
"ColorPrimaries": "Colores primarios",
@ -265,8 +251,8 @@
"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",
"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?",
"ConfirmDeleteItems": "Eliminar estos elementos los 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 eliminará tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?",
"ConfirmDeletion": "Confirmar eliminación",
"ConfirmEndPlayerSession": "¿Desea apagar Jellyfin en {0}?",
"ConfirmRemoveDownload": "¿Quitar descarga?",
@ -286,20 +272,20 @@
"CoverArt": "Arte de portada",
"CustomDlnaProfilesHelp": "Crear un perfil personalizado para apuntar un nuevo dispositivo o sobre-escribir el perfil del sistema.",
"DateAdded": "Fecha agregada",
"DatePlayed": "Fecha reproducido",
"DatePlayed": "Fecha de reproducción",
"Days": "Dias",
"DeathDateValue": "Muerte: {0}",
"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.",
"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",
"DeleteDeviceConfirmation": "Estas seguro que quieres borrar este dispositivo? Este va a volver a aparecer cuando una persona se registre.",
"DeleteImage": "Borrar Imagen",
"DeleteImageConfirmation": "Estas seguro que quieres borrar esta imagen?",
"DeleteImageConfirmation": "Estás seguro que quieres borrar esta imagen?",
"DeleteMedia": "Borrar medio",
"DeleteUser": "Borrar Usuario",
"DeleteUserConfirmation": "Estas seguro que quieres borrar este usuario?",
"DeleteUser": "Borrar usuario",
"DeleteUserConfirmation": "Estás seguro que quieres borrar este usuario?",
"Depressed": "Deprimido",
"Descending": "Descendiente",
"Desktop": "Escritorio",
@ -308,9 +294,9 @@
"DeviceLastUsedByUserName": "Usado ultima vez por {0}",
"DirectPlayError": "Error en la 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.",
"DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco procesamiento, esto sin perdida en la calidad de video.",
"DirectStreaming": "Transmisión en directo",
"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": "La transmisión directa de un archivo utiliza muy poca potencia de procesamiento sin pérdida de calidad de video.",
"DirectStreaming": "Transmisión directa",
"Director": "Director",
"Directors": "Directores",
"Disabled": "Deshabilitado",
@ -345,8 +331,8 @@
"EnableCinemaMode": "Modo cine",
"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.",
"CriticRating": "Calificación de la 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.",
"CriticRating": "Valoración crítica",
"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",
"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",
@ -409,10 +395,10 @@
"HeaderFavoriteEpisodes": "Episodios favoritos",
"HeaderFavoriteArtists": "Artistas favoritos",
"HeaderFavoriteAlbums": "Álbumes favoritos",
"Shows": "Series",
"Shows": "Programas",
"CopyStreamURLError": "Hubo un error copiando la URL.",
"CopyStreamURLSuccess": "URL copiada con éxito.",
"CopyStreamURL": "Copiar la URL de la transmisión",
"CopyStreamURL": "Copiar URL de transmisión",
"ButtonSplit": "Dividir",
"ButtonAddImage": "Agregar imagen",
"AskAdminToCreateLibrary": "Preguntar al administrador para crear una biblioteca.",
@ -454,8 +440,8 @@
"ClientSettings": "Configuración de cliente",
"BoxSet": "Colección",
"Artist": "Artista",
"AlbumArtist": "Artista del Album",
"Album": "Album",
"AlbumArtist": "Artista del álbum",
"Album": "Álbum",
"HeaderDateIssued": "Fecha de Emisión",
"HeaderCustomDlnaProfiles": "Perfiles personalizados",
"HeaderContinueListening": "Seguir escuchando",
@ -540,5 +526,28 @@
"HeaderFeatureAccess": "Acceso a características",
"HeaderFavoritePlaylists": "Listas de reproducción favoritas",
"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