mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge branch 'master' into migrate-to-ES6-61
This commit is contained in:
commit
abafddfd55
123 changed files with 4028 additions and 4527 deletions
|
@ -2,4 +2,3 @@ node_modules
|
|||
dist
|
||||
.idea
|
||||
.vscode
|
||||
src/libraries
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
- [Thibault Nocchi](https://github.com/ThibaultNocchi)
|
||||
- [MrTimscampi](https://github.com/MrTimscampi)
|
||||
- [Sarab Singh](https://github.com/sarab97)
|
||||
- [GuilhermeHideki](https://github.com/GuilhermeHideki)
|
||||
- [Andrei Oanca](https://github.com/OancaAndrei)
|
||||
- [Cromefire_](https://github.com/cromefire)
|
||||
|
||||
|
|
32
package.json
32
package.json
|
@ -5,7 +5,7 @@
|
|||
"repository": "https://github.com/jellyfin/jellyfin-web",
|
||||
"license": "GPL-2.0-or-later",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.11.0",
|
||||
"@babel/core": "^7.11.1",
|
||||
"@babel/eslint-parser": "^7.11.0",
|
||||
"@babel/eslint-plugin": "^7.11.0",
|
||||
"@babel/plugin-proposal-class-properties": "^7.10.1",
|
||||
|
@ -17,7 +17,7 @@
|
|||
"babel-loader": "^8.0.6",
|
||||
"browser-sync": "^2.26.12",
|
||||
"copy-webpack-plugin": "^5.1.1",
|
||||
"css-loader": "^4.2.0",
|
||||
"css-loader": "^4.2.1",
|
||||
"cssnano": "^4.1.10",
|
||||
"del": "^5.1.0",
|
||||
"eslint": "^7.6.0",
|
||||
|
@ -38,7 +38,7 @@
|
|||
"gulp-postcss": "^8.0.0",
|
||||
"gulp-sass": "^4.0.2",
|
||||
"gulp-sourcemaps": "^2.6.5",
|
||||
"gulp-terser": "^1.3.0",
|
||||
"gulp-terser": "^1.3.2",
|
||||
"html-webpack-plugin": "^4.3.0",
|
||||
"lazypipe": "^1.0.2",
|
||||
"node-sass": "^4.13.1",
|
||||
|
@ -80,7 +80,7 @@
|
|||
"sortablejs": "^1.10.2",
|
||||
"swiper": "^5.4.5",
|
||||
"webcomponents.js": "^0.7.24",
|
||||
"whatwg-fetch": "^3.2.0"
|
||||
"whatwg-fetch": "^3.3.1"
|
||||
},
|
||||
"babel": {
|
||||
"presets": [
|
||||
|
@ -110,6 +110,7 @@
|
|||
"src/components/favoriteitems.js",
|
||||
"src/components/fetchhelper.js",
|
||||
"src/components/filterdialog/filterdialog.js",
|
||||
"src/components/focusManager.js",
|
||||
"src/components/groupedcards.js",
|
||||
"src/components/homeScreenSettings/homeScreenSettings.js",
|
||||
"src/components/homesections/homesections.js",
|
||||
|
@ -152,6 +153,8 @@
|
|||
"src/components/playlisteditor/playlisteditor.js",
|
||||
"src/components/playmenu.js",
|
||||
"src/components/prompt/prompt.js",
|
||||
"src/components/recordingcreator/seriesrecordingeditor.js",
|
||||
"src/components/recordingcreator/recordinghelper.js",
|
||||
"src/components/refreshdialog/refreshdialog.js",
|
||||
"src/components/recordingcreator/recordingeditor.js",
|
||||
"src/components/recordingcreator/recordingfields.js",
|
||||
|
@ -168,7 +171,13 @@
|
|||
"src/components/syncPlay/playbackPermissionManager.js",
|
||||
"src/components/syncPlay/syncPlayManager.js",
|
||||
"src/components/syncPlay/timeSyncManager.js",
|
||||
"src/components/viewManager/viewManager.js",
|
||||
"src/components/tvproviders/schedulesdirect.js",
|
||||
"src/components/tvproviders/xmltv.js",
|
||||
"src/components/toast/toast.js",
|
||||
"src/components/upnextdialog/upnextdialog.js",
|
||||
"src/components/viewContainer.js",
|
||||
"src/components/castSenderApi.js",
|
||||
"src/controllers/session/addServer/index.js",
|
||||
"src/controllers/session/forgotPassword/index.js",
|
||||
"src/controllers/session/redeemPassword/index.js",
|
||||
|
@ -212,6 +221,11 @@
|
|||
"src/controllers/edititemmetadata.js",
|
||||
"src/controllers/favorites.js",
|
||||
"src/controllers/hometab.js",
|
||||
"src/controllers/movies/moviecollections.js",
|
||||
"src/controllers/movies/moviegenres.js",
|
||||
"src/controllers/movies/movies.js",
|
||||
"src/controllers/movies/moviesrecommended.js",
|
||||
"src/controllers/movies/movietrailers.js",
|
||||
"src/controllers/playback/nowplaying.js",
|
||||
"src/controllers/playback/videoosd.js",
|
||||
"src/controllers/itemDetails/index.js",
|
||||
|
@ -222,6 +236,10 @@
|
|||
"src/controllers/livetvstatus.js",
|
||||
"src/controllers/livetvguideprovider.js",
|
||||
"src/controllers/livetvsettings.js",
|
||||
"src/controllers/livetv/livetvrecordings.js",
|
||||
"src/controllers/livetv/livetvschedule.js",
|
||||
"src/controllers/livetv/livetvseriestimers.js",
|
||||
"src/controllers/livetv/livetvchannels.js",
|
||||
"src/controllers/shows/episodes.js",
|
||||
"src/controllers/shows/tvgenres.js",
|
||||
"src/controllers/shows/tvlatest.js",
|
||||
|
@ -260,6 +278,8 @@
|
|||
"src/elements/emby-tabs/emby-tabs.js",
|
||||
"src/elements/emby-textarea/emby-textarea.js",
|
||||
"src/elements/emby-toggle/emby-toggle.js",
|
||||
"src/libraries/navdrawer/navdrawer.js",
|
||||
"src/libraries/scroller.js",
|
||||
"src/plugins/backdropScreensaver/plugin.js",
|
||||
"src/plugins/bookPlayer/plugin.js",
|
||||
"src/plugins/bookPlayer/tableOfContents.js",
|
||||
|
@ -285,10 +305,13 @@
|
|||
"src/scripts/mouseManager.js",
|
||||
"src/scripts/multiDownload.js",
|
||||
"src/scripts/playlists.js",
|
||||
"src/scripts/scrollHelper.js",
|
||||
"src/scripts/serverNotifications.js",
|
||||
"src/scripts/routes.js",
|
||||
"src/scripts/settings/appSettings.js",
|
||||
"src/scripts/settings/userSettings.js",
|
||||
"src/scripts/settings/webSettings.js",
|
||||
"src/scripts/shell.js",
|
||||
"src/scripts/taskbutton.js",
|
||||
"src/scripts/themeLoader.js",
|
||||
"src/scripts/touchHelper.js"
|
||||
|
@ -318,6 +341,7 @@
|
|||
"Firefox ESR"
|
||||
],
|
||||
"scripts": {
|
||||
"start": "yarn serve",
|
||||
"serve": "gulp serve --development",
|
||||
"prepare": "gulp --production",
|
||||
"build:development": "gulp --development",
|
||||
|
|
33
scripts/duplicates.py
Normal file
33
scripts/duplicates.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
import sys
|
||||
import os
|
||||
import json
|
||||
|
||||
# load every string in the source language
|
||||
# print all duplicate values to a file
|
||||
|
||||
cwd = os.getcwd()
|
||||
source = cwd + '/../src/strings/en-us.json'
|
||||
|
||||
reverse = {}
|
||||
duplicates = {}
|
||||
|
||||
with open(source) as en:
|
||||
strings = json.load(en)
|
||||
for key, value in strings.items():
|
||||
if value not in reverse:
|
||||
reverse[value] = [key]
|
||||
else:
|
||||
reverse[value].append(key)
|
||||
|
||||
for key, value in reverse.items():
|
||||
if len(value) > 1:
|
||||
duplicates[key] = value
|
||||
|
||||
print('LENGTH: ' + str(len(duplicates)))
|
||||
with open('duplicates.txt', 'w') as out:
|
||||
for item in duplicates:
|
||||
out.write(json.dumps(item) + ': ')
|
||||
out.write(json.dumps(duplicates[item]) + '\n')
|
||||
out.close()
|
||||
|
||||
print('DONE')
|
|
@ -11,7 +11,7 @@ langlst = os.listdir(langdir)
|
|||
|
||||
keys = []
|
||||
|
||||
with open('scout.txt', 'r') as f:
|
||||
with open('unused.txt', 'r') as f:
|
||||
for line in f:
|
||||
keys.append(line.strip('\n'))
|
||||
|
|
@ -236,12 +236,6 @@
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
.layout-desktop .searchTabButton,
|
||||
.layout-mobile .searchTabButton,
|
||||
.layout-tv .headerSearchButton {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.mainDrawer-scrollContainer {
|
||||
padding-bottom: 10vh;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdrop', 'browser', 'page', 'appSettings', 'apphost', 'connectionManager'], function (loading, globalize, events, viewManager, skinManager, backdrop, browser, page, appSettings, appHost, connectionManager) {
|
||||
'use strict';
|
||||
|
||||
viewManager = viewManager.default || viewManager;
|
||||
browser = browser.default || browser;
|
||||
loading = loading.default || loading;
|
||||
|
||||
|
|
|
@ -1,23 +1,16 @@
|
|||
define([], function() {
|
||||
'use strict';
|
||||
|
||||
class CastSenderApi {
|
||||
load() {
|
||||
if (window.appMode === 'cordova' || window.appMode === 'android') {
|
||||
return {
|
||||
load: function () {
|
||||
window.chrome = window.chrome || {};
|
||||
return Promise.resolve();
|
||||
}
|
||||
};
|
||||
} else {
|
||||
var ccLoaded = false;
|
||||
return {
|
||||
load: function () {
|
||||
let ccLoaded = false;
|
||||
if (ccLoaded) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
var fileref = document.createElement('script');
|
||||
return new Promise(function (resolve) {
|
||||
const fileref = document.createElement('script');
|
||||
fileref.setAttribute('type', 'text/javascript');
|
||||
|
||||
fileref.onload = function () {
|
||||
|
@ -29,6 +22,7 @@ define([], function() {
|
|||
document.querySelector('head').appendChild(fileref);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export default CastSenderApi;
|
||||
|
|
|
@ -200,7 +200,7 @@ import 'flexStyles';
|
|||
}
|
||||
|
||||
function centerFocus(elem, horiz, on) {
|
||||
import('scrollHelper').then(scrollHelper => {
|
||||
import('scrollHelper').then((scrollHelper) => {
|
||||
const fn = on ? 'on' : 'off';
|
||||
scrollHelper.centerFocus[fn](elem, horiz);
|
||||
});
|
||||
|
|
|
@ -354,7 +354,7 @@ import 'scrollStyles';
|
|||
}
|
||||
|
||||
function centerFocus(elem, horiz, on) {
|
||||
import('scrollHelper').then(scrollHelper => {
|
||||
import('scrollHelper').then((scrollHelper) => {
|
||||
const fn = on ? 'on' : 'off';
|
||||
scrollHelper.centerFocus[fn](elem, horiz);
|
||||
});
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', 'inputManager', 'layoutManager', 'connectionManager', 'appRouter', 'globalize', 'userSettings', 'emby-checkbox', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button', 'flexStyles'], function (require, dom, focusManager, dialogHelper, loading, appHost, inputManager, layoutManager, connectionManager, appRouter, globalize, userSettings) {
|
||||
'use strict';
|
||||
focusManager = focusManager.default || focusManager;
|
||||
|
||||
function onSubmit(e) {
|
||||
e.preventDefault();
|
||||
|
@ -150,6 +151,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost',
|
|||
|
||||
function centerFocus(elem, horiz, on) {
|
||||
require(['scrollHelper'], function (scrollHelper) {
|
||||
scrollHelper = scrollHelper.default || scrollHelper;
|
||||
var fn = on ? 'on' : 'off';
|
||||
scrollHelper.centerFocus[fn](elem, horiz);
|
||||
});
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
define(['dom', 'scrollManager'], function (dom, scrollManager) {
|
||||
'use strict';
|
||||
/* eslint-disable indent */
|
||||
|
||||
import dom from 'dom';
|
||||
import scrollManager from 'scrollManager';
|
||||
|
||||
var scopes = [];
|
||||
function pushScope(elem) {
|
||||
|
@ -472,7 +474,9 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) {
|
|||
}
|
||||
}
|
||||
|
||||
return {
|
||||
/* eslint-enable indent */
|
||||
|
||||
export default {
|
||||
autoFocus: autoFocus,
|
||||
focus: focus,
|
||||
focusableParent: focusableParent,
|
||||
|
@ -504,5 +508,4 @@ define(['dom', 'scrollManager'], function (dom, scrollManager) {
|
|||
focusFirst: focusFirst,
|
||||
focusLast: focusLast,
|
||||
moveFocus: moveFocus
|
||||
};
|
||||
});
|
||||
};
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectionManager', 'require', 'loading', 'scrollHelper', 'emby-checkbox', 'emby-radio', 'css!./../formdialog', 'material-icons'], function (dialogHelper, globalize, userSettings, layoutManager, connectionManager, require, loading, scrollHelper) {
|
||||
'use strict';
|
||||
|
||||
scrollHelper = scrollHelper.default || scrollHelper;
|
||||
|
||||
function saveCategories(context, options) {
|
||||
var categories = [];
|
||||
|
||||
|
|
|
@ -4,6 +4,9 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager',
|
|||
playbackManager = playbackManager.default || playbackManager;
|
||||
browser = browser.default || browser;
|
||||
loading = loading.default || loading;
|
||||
focusManager = focusManager.default || focusManager;
|
||||
scrollHelper = scrollHelper.default || scrollHelper;
|
||||
serverNotifications = serverNotifications.default || serverNotifications;
|
||||
|
||||
function showViewSettings(instance) {
|
||||
require(['guide-settings-dialog'], function (guideSettingsDialog) {
|
||||
|
|
|
@ -59,8 +59,8 @@ import 'css!./imageeditor';
|
|||
currentItem = item;
|
||||
|
||||
apiClient.getRemoteImageProviders(getBaseRemoteOptions()).then(function (providers) {
|
||||
const btnBrowseAllImages = page.querySelectorAll('.btnBrowseAllImages');
|
||||
for (let i = 0, length = btnBrowseAllImages.length; i < length; i++) {
|
||||
var btnBrowseAllImages = page.querySelectorAll('.btnBrowseAllImages');
|
||||
for (var i = 0, length = btnBrowseAllImages.length; i < length; i++) {
|
||||
if (providers.length) {
|
||||
btnBrowseAllImages[i].classList.remove('hide');
|
||||
} else {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
define(['playbackManager', 'serverNotifications', 'events'], function (playbackManager, serverNotifications, events) {
|
||||
'use strict';
|
||||
|
||||
serverNotifications = serverNotifications.default || serverNotifications;
|
||||
playbackManager = playbackManager.default || playbackManager;
|
||||
|
||||
function onUserDataChanged(e, apiClient, userData) {
|
||||
|
|
|
@ -2,6 +2,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir
|
|||
'use strict';
|
||||
|
||||
playbackManager = playbackManager.default || playbackManager;
|
||||
serverNotifications = serverNotifications.default || serverNotifications;
|
||||
|
||||
function onOneDocumentClick() {
|
||||
document.removeEventListener('click', onOneDocumentClick);
|
||||
|
|
|
@ -210,7 +210,7 @@ import 'emby-button';
|
|||
}
|
||||
|
||||
function centerFocus(elem, horiz, on) {
|
||||
import('scrollHelper').then(scrollHelper => {
|
||||
import('scrollHelper').then((scrollHelper) => {
|
||||
const fn = on ? 'on' : 'off';
|
||||
scrollHelper.centerFocus[fn](elem, horiz);
|
||||
});
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'paper-icon-button-light', 'emby-button', 'css!./recordingfields'], function (globalize, connectionManager, require, loading, appHost, dom, recordingHelper, events) {
|
||||
'use strict';
|
||||
|
||||
recordingHelper = recordingHelper.default || recordingHelper;
|
||||
|
||||
function onRecordingButtonClick(e) {
|
||||
var item = this.item;
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'datetime', 'imageLoader', 'recordingFields', 'events', 'emby-checkbox', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, datetime, imageLoader, recordingFields, events) {
|
||||
'use strict';
|
||||
|
||||
scrollHelper = scrollHelper.default || scrollHelper;
|
||||
|
||||
var currentDialog;
|
||||
var closeAction;
|
||||
var currentRecordingFields;
|
||||
|
|
|
@ -40,7 +40,6 @@ function renderTimer(context, item, apiClient) {
|
|||
|
||||
function closeDialog(isDeleted) {
|
||||
recordingDeleted = isDeleted;
|
||||
|
||||
dialogHelper.close(currentDialog);
|
||||
}
|
||||
|
||||
|
@ -68,7 +67,8 @@ function init(context) {
|
|||
|
||||
context.querySelector('.btnCancelRecording').addEventListener('click', function () {
|
||||
const apiClient = connectionManager.getApiClient(currentServerId);
|
||||
deleteTimer(apiClient, currentItemId).then(function () {
|
||||
|
||||
(apiClient, currentItemId).then(function () {
|
||||
closeDialog(true);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
define(['globalize', 'loading', 'connectionManager'], function (globalize, loading, connectionManager) {
|
||||
'use strict';
|
||||
import globalize from 'globalize';
|
||||
import loading from 'loading';
|
||||
import connectionManager from 'connectionManager';
|
||||
|
||||
loading = loading.default || loading;
|
||||
/*eslint prefer-const: "error"*/
|
||||
|
||||
function changeRecordingToSeries(apiClient, timerId, programId, confirmTimerCancellation) {
|
||||
function changeRecordingToSeries(apiClient, timerId, programId, confirmTimerCancellation) {
|
||||
loading.show();
|
||||
|
||||
return apiClient.getItem(apiClient.getCurrentUserId(), programId).then(function (item) {
|
||||
|
@ -24,11 +25,11 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
return cancelTimer(apiClient.serverId(), timerId, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function cancelTimerWithConfirmation(timerId, serverId) {
|
||||
function cancelTimerWithConfirmation(timerId, serverId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
require(['confirm'], function (confirm) {
|
||||
import('confirm').then(({ default: confirm }) => {
|
||||
confirm.default({
|
||||
|
||||
text: globalize.translate('MessageConfirmRecordingCancellation'),
|
||||
|
@ -39,16 +40,16 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
}).then(function () {
|
||||
loading.show();
|
||||
|
||||
var apiClient = connectionManager.getApiClient(serverId);
|
||||
const apiClient = connectionManager.getApiClient(serverId);
|
||||
cancelTimer(apiClient, timerId, true).then(resolve, reject);
|
||||
}, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function cancelSeriesTimerWithConfirmation(timerId, serverId) {
|
||||
function cancelSeriesTimerWithConfirmation(timerId, serverId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
require(['confirm'], function (confirm) {
|
||||
import('confirm').then(({ default: confirm }) => {
|
||||
confirm.default({
|
||||
|
||||
text: globalize.translate('MessageConfirmRecordingCancellation'),
|
||||
|
@ -59,9 +60,9 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
}).then(function () {
|
||||
loading.show();
|
||||
|
||||
var apiClient = connectionManager.getApiClient(serverId);
|
||||
const apiClient = connectionManager.getApiClient(serverId);
|
||||
apiClient.cancelLiveTvSeriesTimer(timerId).then(function () {
|
||||
require(['toast'], function (toast) {
|
||||
import('toast').then(({default: toast}) => {
|
||||
toast(globalize.translate('SeriesCancelled'));
|
||||
});
|
||||
|
||||
|
@ -71,9 +72,9 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
}, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function cancelTimer(apiClient, timerId, hideLoading) {
|
||||
function cancelTimer(apiClient, timerId, hideLoading) {
|
||||
loading.show();
|
||||
return apiClient.cancelLiveTvTimer(timerId).then(function () {
|
||||
if (hideLoading !== false) {
|
||||
|
@ -81,12 +82,12 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
sendToast(globalize.translate('RecordingCancelled'));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function createRecording(apiClient, programId, isSeries) {
|
||||
function createRecording(apiClient, programId, isSeries) {
|
||||
loading.show();
|
||||
return apiClient.getNewLiveTvTimerDefaults({ programId: programId }).then(function (item) {
|
||||
var promise = isSeries ?
|
||||
const promise = isSeries ?
|
||||
apiClient.createLiveTvSeriesTimer(item) :
|
||||
apiClient.createLiveTvTimer(item);
|
||||
|
||||
|
@ -95,18 +96,18 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
sendToast(globalize.translate('RecordingScheduled'));
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function sendToast(msg) {
|
||||
require(['toast'], function (toast) {
|
||||
function sendToast(msg) {
|
||||
import('toast').then(({ default: toast }) => {
|
||||
toast(msg);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function showMultiCancellationPrompt(serverId, programId, timerId, timerStatus, seriesTimerId) {
|
||||
function showMultiCancellationPrompt(serverId, programId, timerId, timerStatus, seriesTimerId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
require(['dialog'], function (dialog) {
|
||||
var items = [];
|
||||
import('dialog').then(({ default: dialog }) => {
|
||||
const items = [];
|
||||
|
||||
items.push({
|
||||
name: globalize.translate('HeaderKeepRecording'),
|
||||
|
@ -140,7 +141,7 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
buttons: items
|
||||
|
||||
}).then(function (result) {
|
||||
var apiClient = connectionManager.getApiClient(serverId);
|
||||
const apiClient = connectionManager.getApiClient(serverId);
|
||||
|
||||
if (result === 'canceltimer') {
|
||||
loading.show();
|
||||
|
@ -150,7 +151,7 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
loading.show();
|
||||
|
||||
apiClient.cancelLiveTvSeriesTimer(seriesTimerId).then(function () {
|
||||
require(['toast'], function (toast) {
|
||||
import('toast').then(({ default: toast }) => {
|
||||
toast(globalize.translate('SeriesCancelled'));
|
||||
});
|
||||
|
||||
|
@ -163,11 +164,11 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
}, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function toggleRecording(serverId, programId, timerId, timerStatus, seriesTimerId) {
|
||||
var apiClient = connectionManager.getApiClient(serverId);
|
||||
var hasTimer = timerId && timerStatus !== 'Cancelled';
|
||||
function toggleRecording(serverId, programId, timerId, timerStatus, seriesTimerId) {
|
||||
const apiClient = connectionManager.getApiClient(serverId);
|
||||
const hasTimer = timerId && timerStatus !== 'Cancelled';
|
||||
if (seriesTimerId && hasTimer) {
|
||||
// cancel
|
||||
return showMultiCancellationPrompt(serverId, programId, timerId, timerStatus, seriesTimerId);
|
||||
|
@ -181,14 +182,14 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
|
|||
} else {
|
||||
return Promise.reject();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
export default {
|
||||
cancelTimer: cancelTimer,
|
||||
createRecording: createRecording,
|
||||
changeRecordingToSeries: changeRecordingToSeries,
|
||||
toggleRecording: toggleRecording,
|
||||
cancelTimerWithConfirmation: cancelTimerWithConfirmation,
|
||||
cancelSeriesTimerWithConfirmation: cancelSeriesTimerWithConfirmation
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -1,23 +1,38 @@
|
|||
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'datetime', 'scrollStyles', 'emby-button', 'emby-checkbox', 'emby-input', 'emby-select', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader, datetime) {
|
||||
'use strict';
|
||||
import dialogHelper from 'dialogHelper';
|
||||
import globalize from 'globalize';
|
||||
import layoutManager from 'layoutManager';
|
||||
import connectionManager from 'connectionManager';
|
||||
import loading from 'loading';
|
||||
import scrollHelper from 'scrollHelper';
|
||||
import datetime from 'datetime';
|
||||
import 'scrollStyles';
|
||||
import 'emby-button';
|
||||
import 'emby-checkbox';
|
||||
import 'emby-input';
|
||||
import 'emby-select';
|
||||
import 'paper-icon-button-light';
|
||||
import 'css!./../formdialog';
|
||||
import 'css!./recordingcreator';
|
||||
import 'material-icons';
|
||||
import 'flexStyles';
|
||||
|
||||
loading = loading.default || loading;
|
||||
/*eslint prefer-const: "error"*/
|
||||
|
||||
var currentDialog;
|
||||
var recordingUpdated = false;
|
||||
var recordingDeleted = false;
|
||||
var currentItemId;
|
||||
var currentServerId;
|
||||
let currentDialog;
|
||||
let recordingUpdated = false;
|
||||
let recordingDeleted = false;
|
||||
let currentItemId;
|
||||
let currentServerId;
|
||||
|
||||
function deleteTimer(apiClient, timerId) {
|
||||
function deleteTimer(apiClient, timerId) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
require(['recordingHelper'], function (recordingHelper) {
|
||||
import('recordingHelper').then(({ default: recordingHelper }) => {
|
||||
recordingHelper.cancelSeriesTimerWithConfirmation(timerId, apiClient.serverId()).then(resolve, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function renderTimer(context, item, apiClient) {
|
||||
function renderTimer(context, item) {
|
||||
context.querySelector('#txtPrePaddingMinutes').value = item.PrePaddingSeconds / 60;
|
||||
context.querySelector('#txtPostPaddingMinutes').value = item.PostPaddingSeconds / 60;
|
||||
|
||||
|
@ -37,19 +52,19 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
context.querySelector('.optionAroundTime').innerHTML = globalize.translate('AroundTime', datetime.getDisplayTime(datetime.parseISO8601Date(item.StartDate)));
|
||||
|
||||
loading.hide();
|
||||
}
|
||||
}
|
||||
|
||||
function closeDialog(isDeleted) {
|
||||
function closeDialog(isDeleted) {
|
||||
recordingUpdated = true;
|
||||
recordingDeleted = isDeleted;
|
||||
|
||||
dialogHelper.close(currentDialog);
|
||||
}
|
||||
}
|
||||
|
||||
function onSubmit(e) {
|
||||
var form = this;
|
||||
function onSubmit(e) {
|
||||
const form = this;
|
||||
|
||||
var apiClient = connectionManager.getApiClient(currentServerId);
|
||||
const apiClient = connectionManager.getApiClient(currentServerId);
|
||||
|
||||
apiClient.getLiveTvSeriesTimer(currentItemId).then(function (item) {
|
||||
item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60;
|
||||
|
@ -67,9 +82,9 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
|
||||
// Disable default form submission
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function init(context) {
|
||||
function init(context) {
|
||||
fillKeepUpTo(context);
|
||||
|
||||
context.querySelector('.btnCancel').addEventListener('click', function () {
|
||||
|
@ -77,39 +92,39 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
});
|
||||
|
||||
context.querySelector('.btnCancelRecording').addEventListener('click', function () {
|
||||
var apiClient = connectionManager.getApiClient(currentServerId);
|
||||
const apiClient = connectionManager.getApiClient(currentServerId);
|
||||
deleteTimer(apiClient, currentItemId).then(function () {
|
||||
closeDialog(true);
|
||||
});
|
||||
});
|
||||
|
||||
context.querySelector('form').addEventListener('submit', onSubmit);
|
||||
}
|
||||
}
|
||||
|
||||
function reload(context, id) {
|
||||
var apiClient = connectionManager.getApiClient(currentServerId);
|
||||
function reload(context, id) {
|
||||
const apiClient = connectionManager.getApiClient(currentServerId);
|
||||
|
||||
loading.show();
|
||||
if (typeof id === 'string') {
|
||||
currentItemId = id;
|
||||
|
||||
apiClient.getLiveTvSeriesTimer(id).then(function (result) {
|
||||
renderTimer(context, result, apiClient);
|
||||
renderTimer(context, result);
|
||||
loading.hide();
|
||||
});
|
||||
} else if (id) {
|
||||
currentItemId = id.Id;
|
||||
|
||||
renderTimer(context, id, apiClient);
|
||||
renderTimer(context, id);
|
||||
loading.hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function fillKeepUpTo(context) {
|
||||
var html = '';
|
||||
function fillKeepUpTo(context) {
|
||||
let html = '';
|
||||
|
||||
for (var i = 0; i <= 50; i++) {
|
||||
var text;
|
||||
for (let i = 0; i <= 50; i++) {
|
||||
let text;
|
||||
|
||||
if (i === 0) {
|
||||
text = globalize.translate('AsManyAsPossible');
|
||||
|
@ -123,21 +138,21 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
}
|
||||
|
||||
context.querySelector('.selectKeepUpTo').innerHTML = html;
|
||||
}
|
||||
}
|
||||
|
||||
function onFieldChange(e) {
|
||||
function onFieldChange() {
|
||||
this.querySelector('.btnSubmit').click();
|
||||
}
|
||||
}
|
||||
|
||||
function embed(itemId, serverId, options) {
|
||||
function embed(itemId, serverId, options) {
|
||||
recordingUpdated = false;
|
||||
recordingDeleted = false;
|
||||
currentServerId = serverId;
|
||||
loading.show();
|
||||
options = options || {};
|
||||
|
||||
require(['text!./seriesrecordingeditor.template.html'], function (template) {
|
||||
var dialogOptions = {
|
||||
import('text!./seriesrecordingeditor.template.html').then(({ default: template }) => {
|
||||
const dialogOptions = {
|
||||
removeOnClose: true,
|
||||
scrollY: false
|
||||
};
|
||||
|
@ -148,7 +163,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
dialogOptions.size = 'small';
|
||||
}
|
||||
|
||||
var dlg = options.context;
|
||||
const dlg = options.context;
|
||||
|
||||
dlg.classList.add('hide');
|
||||
dlg.innerHTML = globalize.translateHtml(template, 'core');
|
||||
|
@ -168,9 +183,9 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
|
||||
reload(dlg, itemId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function showEditor(itemId, serverId, options) {
|
||||
function showEditor(itemId, serverId, options) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
recordingUpdated = false;
|
||||
recordingDeleted = false;
|
||||
|
@ -178,8 +193,8 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
loading.show();
|
||||
options = options || {};
|
||||
|
||||
require(['text!./seriesrecordingeditor.template.html'], function (template) {
|
||||
var dialogOptions = {
|
||||
import('text!./seriesrecordingeditor.template.html').then(({ default: template }) => {
|
||||
const dialogOptions = {
|
||||
removeOnClose: true,
|
||||
scrollY: false
|
||||
};
|
||||
|
@ -190,7 +205,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
dialogOptions.size = 'small';
|
||||
}
|
||||
|
||||
var dlg = dialogHelper.createDialog(dialogOptions);
|
||||
const dlg = dialogHelper.createDialog(dialogOptions);
|
||||
|
||||
dlg.classList.add('formDialog');
|
||||
dlg.classList.add('recordingDialog');
|
||||
|
@ -199,7 +214,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
dlg.style['min-width'] = '20%';
|
||||
}
|
||||
|
||||
var html = '';
|
||||
let html = '';
|
||||
|
||||
html += globalize.translateHtml(template, 'core');
|
||||
|
||||
|
@ -239,10 +254,9 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c
|
|||
dialogHelper.open(dlg);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
export default {
|
||||
show: showEditor,
|
||||
embed: embed
|
||||
};
|
||||
});
|
||||
};
|
||||
|
|
|
@ -6,6 +6,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f
|
|||
'use strict';
|
||||
|
||||
browser = browser.default || browser;
|
||||
focusManager = focusManager.default || focusManager;
|
||||
|
||||
/**
|
||||
* Name of transition event.
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'globalize', 'userSettings', 'emby-select', 'paper-icon-button-light', 'material-icons', 'css!./../formdialog', 'emby-button', 'flexStyles'], function (require, dom, focusManager, dialogHelper, loading, layoutManager, connectionManager, globalize, userSettings) {
|
||||
'use strict';
|
||||
|
||||
focusManager = focusManager.default || focusManager;
|
||||
|
||||
function onSubmit(e) {
|
||||
e.preventDefault();
|
||||
return false;
|
||||
|
@ -15,6 +17,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'layoutMana
|
|||
|
||||
function centerFocus(elem, horiz, on) {
|
||||
require(['scrollHelper'], function (scrollHelper) {
|
||||
scrollHelper = scrollHelper.default || scrollHelper;
|
||||
var fn = on ? 'on' : 'off';
|
||||
scrollHelper.centerFocus[fn](elem, horiz);
|
||||
});
|
||||
|
|
|
@ -2,6 +2,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings',
|
|||
'use strict';
|
||||
|
||||
loading = loading.default || loading;
|
||||
focusManager = focusManager.default || focusManager;
|
||||
|
||||
var currentItem;
|
||||
var hasChanges;
|
||||
|
@ -336,6 +337,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings',
|
|||
|
||||
function centerFocus(elem, horiz, on) {
|
||||
require(['scrollHelper'], function (scrollHelper) {
|
||||
scrollHelper = scrollHelper.default || scrollHelper;
|
||||
var fn = on ? 'on' : 'off';
|
||||
scrollHelper.centerFocus[fn](elem, horiz);
|
||||
});
|
||||
|
|
|
@ -3,31 +3,9 @@
|
|||
* @module components/subtitleSettings/subtitleAppearanceHelper
|
||||
*/
|
||||
|
||||
function getTextStyles(settings, isCue) {
|
||||
function getTextStyles(settings, preview) {
|
||||
let list = [];
|
||||
|
||||
if (isCue) {
|
||||
switch (settings.textSize || '') {
|
||||
case 'smaller':
|
||||
list.push({ name: 'font-size', value: '.5em' });
|
||||
break;
|
||||
case 'small':
|
||||
list.push({ name: 'font-size', value: '.7em' });
|
||||
break;
|
||||
case 'large':
|
||||
list.push({ name: 'font-size', value: '1.3em' });
|
||||
break;
|
||||
case 'larger':
|
||||
list.push({ name: 'font-size', value: '1.72em' });
|
||||
break;
|
||||
case 'extralarge':
|
||||
list.push({ name: 'font-size', value: '2em' });
|
||||
break;
|
||||
default:
|
||||
case 'medium':
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (settings.textSize || '') {
|
||||
case 'smaller':
|
||||
list.push({ name: 'font-size', value: '.8em' });
|
||||
|
@ -49,7 +27,6 @@ function getTextStyles(settings, isCue) {
|
|||
list.push({ name: 'font-size', value: '1.36em' });
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (settings.dropShadow || '') {
|
||||
case 'raised':
|
||||
|
@ -111,13 +88,43 @@ function getTextStyles(settings, isCue) {
|
|||
break;
|
||||
}
|
||||
|
||||
if (!preview) {
|
||||
const pos = parseInt(settings.verticalPosition, 10);
|
||||
const lineHeight = 1.35; // FIXME: It is better to read this value from element
|
||||
const line = Math.abs(pos * lineHeight);
|
||||
if (pos < 0) {
|
||||
list.push({ name: 'min-height', value: `${line}em` });
|
||||
list.push({ name: 'margin-top', value: '' });
|
||||
} else {
|
||||
list.push({ name: 'min-height', value: '' });
|
||||
list.push({ name: 'margin-top', value: `${line}em` });
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
export function getStyles(settings, isCue) {
|
||||
function getWindowStyles(settings, preview) {
|
||||
const list = [];
|
||||
|
||||
if (!preview) {
|
||||
const pos = parseInt(settings.verticalPosition, 10);
|
||||
if (pos < 0) {
|
||||
list.push({ name: 'top', value: '' });
|
||||
list.push({ name: 'bottom', value: '0' });
|
||||
} else {
|
||||
list.push({ name: 'top', value: '0' });
|
||||
list.push({ name: 'bottom', value: '' });
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
export function getStyles(settings, preview) {
|
||||
return {
|
||||
text: getTextStyles(settings, isCue),
|
||||
window: []
|
||||
text: getTextStyles(settings, preview),
|
||||
window: getWindowStyles(settings, preview)
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -130,7 +137,7 @@ function applyStyleList(styles, elem) {
|
|||
}
|
||||
|
||||
export function applyStyles(elements, appearanceSettings) {
|
||||
let styles = getStyles(appearanceSettings);
|
||||
let styles = getStyles(appearanceSettings, !!elements.preview);
|
||||
|
||||
if (elements.text) {
|
||||
applyStyleList(styles.text, elements.text);
|
||||
|
|
26
src/components/subtitlesettings/subtitlesettings.css
Normal file
26
src/components/subtitlesettings/subtitlesettings.css
Normal file
|
@ -0,0 +1,26 @@
|
|||
.subtitleappearance-fullpreview {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1000;
|
||||
pointer-events: none;
|
||||
transition: 0.2s;
|
||||
}
|
||||
|
||||
.subtitleappearance-fullpreview-hide {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.subtitleappearance-fullpreview-window {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
font-size: 170%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.subtitleappearance-fullpreview-text {
|
||||
display: inline-block;
|
||||
max-width: 70%;
|
||||
}
|
|
@ -2,6 +2,7 @@ import globalize from 'globalize';
|
|||
import appHost from 'apphost';
|
||||
import appSettings from 'appSettings';
|
||||
import focusManager from 'focusManager';
|
||||
import layoutManager from 'layoutManager';
|
||||
import loading from 'loading';
|
||||
import connectionManager from 'connectionManager';
|
||||
import subtitleAppearanceHelper from 'subtitleAppearanceHelper';
|
||||
|
@ -10,9 +11,11 @@ import dom from 'dom';
|
|||
import events from 'events';
|
||||
import 'listViewStyle';
|
||||
import 'emby-select';
|
||||
import 'emby-slider';
|
||||
import 'emby-input';
|
||||
import 'emby-checkbox';
|
||||
import 'flexStyles';
|
||||
import 'css!./subtitlesettings';
|
||||
|
||||
/**
|
||||
* Subtitle settings.
|
||||
|
@ -27,6 +30,7 @@ function getSubtitleAppearanceObject(context) {
|
|||
appearanceSettings.font = context.querySelector('#selectFont').value;
|
||||
appearanceSettings.textBackground = context.querySelector('#inputTextBackground').value;
|
||||
appearanceSettings.textColor = context.querySelector('#inputTextColor').value;
|
||||
appearanceSettings.verticalPosition = context.querySelector('#sliderVerticalPosition').value;
|
||||
|
||||
return appearanceSettings;
|
||||
}
|
||||
|
@ -51,6 +55,7 @@ function loadForm(context, user, userSettings, appearanceSettings, apiClient) {
|
|||
context.querySelector('#inputTextBackground').value = appearanceSettings.textBackground || 'transparent';
|
||||
context.querySelector('#inputTextColor').value = appearanceSettings.textColor || '#ffffff';
|
||||
context.querySelector('#selectFont').value = appearanceSettings.font || '';
|
||||
context.querySelector('#sliderVerticalPosition').value = appearanceSettings.verticalPosition;
|
||||
|
||||
context.querySelector('#selectSubtitleBurnIn').value = appSettings.get('subtitleburnin') || '';
|
||||
|
||||
|
@ -112,10 +117,45 @@ function onAppearanceFieldChange(e) {
|
|||
|
||||
let elements = {
|
||||
window: view.querySelector('.subtitleappearance-preview-window'),
|
||||
text: view.querySelector('.subtitleappearance-preview-text')
|
||||
text: view.querySelector('.subtitleappearance-preview-text'),
|
||||
preview: true
|
||||
};
|
||||
|
||||
subtitleAppearanceHelper.applyStyles(elements, appearanceSettings);
|
||||
|
||||
subtitleAppearanceHelper.applyStyles({
|
||||
window: view.querySelector('.subtitleappearance-fullpreview-window'),
|
||||
text: view.querySelector('.subtitleappearance-fullpreview-text')
|
||||
}, appearanceSettings);
|
||||
}
|
||||
|
||||
const subtitlePreviewDelay = 1000;
|
||||
let subtitlePreviewTimer;
|
||||
|
||||
function showSubtitlePreview(persistent) {
|
||||
clearTimeout(subtitlePreviewTimer);
|
||||
|
||||
this._fullPreview.classList.remove('subtitleappearance-fullpreview-hide');
|
||||
|
||||
if (persistent) {
|
||||
this._refFullPreview++;
|
||||
}
|
||||
|
||||
if (this._refFullPreview === 0) {
|
||||
subtitlePreviewTimer = setTimeout(hideSubtitlePreview.bind(this), subtitlePreviewDelay);
|
||||
}
|
||||
}
|
||||
|
||||
function hideSubtitlePreview(persistent) {
|
||||
clearTimeout(subtitlePreviewTimer);
|
||||
|
||||
if (persistent) {
|
||||
this._refFullPreview--;
|
||||
}
|
||||
|
||||
if (this._refFullPreview === 0) {
|
||||
this._fullPreview.classList.add('subtitleappearance-fullpreview-hide');
|
||||
}
|
||||
}
|
||||
|
||||
function embed(options, self) {
|
||||
|
@ -138,6 +178,36 @@ function embed(options, self) {
|
|||
|
||||
if (appHost.supports('subtitleappearancesettings')) {
|
||||
options.element.querySelector('.subtitleAppearanceSection').classList.remove('hide');
|
||||
|
||||
self._fullPreview = options.element.querySelector('.subtitleappearance-fullpreview');
|
||||
self._refFullPreview = 0;
|
||||
|
||||
const sliderVerticalPosition = options.element.querySelector('#sliderVerticalPosition');
|
||||
sliderVerticalPosition.addEventListener('input', onAppearanceFieldChange);
|
||||
sliderVerticalPosition.addEventListener('input', () => showSubtitlePreview.call(self));
|
||||
|
||||
const eventPrefix = window.PointerEvent ? 'pointer' : 'mouse';
|
||||
sliderVerticalPosition.addEventListener(`${eventPrefix}enter`, () => showSubtitlePreview.call(self, true));
|
||||
sliderVerticalPosition.addEventListener(`${eventPrefix}leave`, () => hideSubtitlePreview.call(self, true));
|
||||
|
||||
if (layoutManager.tv) {
|
||||
sliderVerticalPosition.addEventListener('focus', () => showSubtitlePreview.call(self, true));
|
||||
sliderVerticalPosition.addEventListener('blur', () => hideSubtitlePreview.call(self, true));
|
||||
|
||||
// Give CustomElements time to attach
|
||||
setTimeout(() => {
|
||||
sliderVerticalPosition.classList.add('focusable');
|
||||
sliderVerticalPosition.enableKeyboardDragging();
|
||||
}, 0);
|
||||
}
|
||||
|
||||
options.element.querySelector('.chkPreview').addEventListener('change', (e) => {
|
||||
if (e.target.checked) {
|
||||
showSubtitlePreview.call(self, true);
|
||||
} else {
|
||||
hideSubtitlePreview.call(self, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
self.loadData();
|
||||
|
|
|
@ -38,6 +38,16 @@
|
|||
${HeaderSubtitleAppearance}
|
||||
</h2>
|
||||
|
||||
<div class="subtitleappearance-fullpreview subtitleappearance-fullpreview-hide">
|
||||
<div class="subtitleappearance-fullpreview-window">
|
||||
<div class="subtitleappearance-fullpreview-text">
|
||||
${HeaderSubtitleAppearance}
|
||||
<br>
|
||||
${TheseSettingsAffectSubtitlesOnThisDevice}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="margin: 2em 0 2em;">
|
||||
<div class="subtitleappearance-preview flex align-items-center justify-content-center" style="margin:2em 0;padding:1.6em;color:black;background:linear-gradient(140deg,#aa5cc3,#00a4dc);">
|
||||
<div class="subtitleappearance-preview-window flex align-items-center justify-content-center" style="width: 90%; padding: .25em;">
|
||||
|
@ -89,6 +99,20 @@
|
|||
<option value="">${DropShadow}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="sliderContainer-settings">
|
||||
<div class="sliderContainer">
|
||||
<input is="emby-slider" id="sliderVerticalPosition" label="${LabelSubtitleVerticalPosition}" type="range" min="-16" max="16" />
|
||||
</div>
|
||||
<div class="fieldDescription">${SubtitleVerticalPositionHelp}</div>
|
||||
</div>
|
||||
|
||||
<div class="checkboxContainer">
|
||||
<label>
|
||||
<input is="emby-checkbox" type="checkbox" class="chkPreview" />
|
||||
<span>${Preview}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button is="emby-button" type="submit" class="raised button-submit block btnSave hide">
|
||||
|
|
|
@ -1,27 +1,26 @@
|
|||
define(['css!./toast'], function () {
|
||||
'use strict';
|
||||
import 'css!./toast';
|
||||
|
||||
function remove(elem) {
|
||||
function remove(elem) {
|
||||
setTimeout(function () {
|
||||
elem.parentNode.removeChild(elem);
|
||||
}, 300);
|
||||
}
|
||||
}
|
||||
|
||||
function animateRemove(elem) {
|
||||
function animateRemove(elem) {
|
||||
setTimeout(function () {
|
||||
elem.classList.remove('toastVisible');
|
||||
remove(elem);
|
||||
}, 3300);
|
||||
}
|
||||
}
|
||||
|
||||
return function (options) {
|
||||
export default function (options) {
|
||||
if (typeof options === 'string') {
|
||||
options = {
|
||||
text: options
|
||||
};
|
||||
}
|
||||
|
||||
var elem = document.createElement('div');
|
||||
const elem = document.createElement('div');
|
||||
elem.classList.add('toast');
|
||||
elem.innerHTML = options.text;
|
||||
|
||||
|
@ -32,5 +31,4 @@ define(['css!./toast'], function () {
|
|||
|
||||
animateRemove(elem);
|
||||
}, 300);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@ define(['dialogHelper', 'dom', 'layoutManager', 'connectionManager', 'globalize'
|
|||
|
||||
browser = browser.default || browser;
|
||||
loading = loading.default || loading;
|
||||
focusManager = focusManager.default || focusManager;
|
||||
scrollHelper = scrollHelper.default || scrollHelper;
|
||||
|
||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
||||
|
||||
|
|
|
@ -1,13 +1,19 @@
|
|||
define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emby-input', 'emby-select', 'emby-button', 'flexStyles'], function ($, loading, globalize) {
|
||||
'use strict';
|
||||
import $ from 'jQuery';
|
||||
import loading from 'loading';
|
||||
import globalize from 'globalize';
|
||||
import 'emby-checkbox';
|
||||
import 'emby-input';
|
||||
import 'listViewStyle';
|
||||
import 'paper-icon-button-light';
|
||||
import 'emby-select';
|
||||
import 'emby-button';
|
||||
import 'flexStyles';
|
||||
|
||||
loading = loading.default || loading;
|
||||
|
||||
return function (page, providerId, options) {
|
||||
export default function (page, providerId, options) {
|
||||
function reload() {
|
||||
loading.show();
|
||||
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
||||
var info = config.ListingProviders.filter(function (i) {
|
||||
const info = config.ListingProviders.filter(function (i) {
|
||||
return i.Id === providerId;
|
||||
})[0] || {};
|
||||
listingsId = info.ListingsId;
|
||||
|
@ -37,12 +43,12 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
|||
|
||||
function setCountry(info) {
|
||||
ApiClient.getJSON(ApiClient.getUrl('LiveTv/ListingProviders/SchedulesDirect/Countries')).then(function (result) {
|
||||
var i;
|
||||
var length;
|
||||
var countryList = [];
|
||||
let i;
|
||||
let length;
|
||||
const countryList = [];
|
||||
|
||||
for (var region in result) {
|
||||
var countries = result[region];
|
||||
for (const region in result) {
|
||||
const countries = result[region];
|
||||
|
||||
if (countries.length && region !== 'ZZZ') {
|
||||
for (i = 0, length = countries.length; i < length; i++) {
|
||||
|
@ -82,20 +88,20 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
|||
return Promise.resolve('');
|
||||
}
|
||||
|
||||
var buffer = new TextEncoder('utf-8').encode(str);
|
||||
const buffer = new TextEncoder('utf-8').encode(str);
|
||||
return crypto.subtle.digest('SHA-256', buffer).then(function (hash) {
|
||||
return hex(hash);
|
||||
});
|
||||
}
|
||||
|
||||
function hex(buffer) {
|
||||
var hexCodes = [];
|
||||
var view = new DataView(buffer);
|
||||
const hexCodes = [];
|
||||
const view = new DataView(buffer);
|
||||
|
||||
for (var i = 0; i < view.byteLength; i += 4) {
|
||||
var value = view.getUint32(i);
|
||||
var stringValue = value.toString(16);
|
||||
var paddedValue = ('00000000' + stringValue).slice(-'00000000'.length);
|
||||
for (let i = 0; i < view.byteLength; i += 4) {
|
||||
const value = view.getUint32(i);
|
||||
const stringValue = value.toString(16);
|
||||
const paddedValue = ('00000000' + stringValue).slice(-'00000000'.length);
|
||||
hexCodes.push(paddedValue);
|
||||
}
|
||||
|
||||
|
@ -105,14 +111,14 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
|||
function submitLoginForm() {
|
||||
loading.show();
|
||||
sha256(page.querySelector('.txtPass').value).then(function (passwordHash) {
|
||||
var info = {
|
||||
const info = {
|
||||
Type: 'SchedulesDirect',
|
||||
Username: page.querySelector('.txtUser').value,
|
||||
EnableAllTuners: true,
|
||||
Password: passwordHash,
|
||||
Pw: page.querySelector('.txtPass').value
|
||||
};
|
||||
var id = providerId;
|
||||
const id = providerId;
|
||||
|
||||
if (id) {
|
||||
info.Id = id;
|
||||
|
@ -139,7 +145,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
|||
}
|
||||
|
||||
function submitListingsForm() {
|
||||
var selectedListingsId = $('#selectListing', page).val();
|
||||
const selectedListingsId = $('#selectListing', page).val();
|
||||
|
||||
if (!selectedListingsId) {
|
||||
return void Dashboard.alert({
|
||||
|
@ -148,9 +154,9 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
|||
}
|
||||
|
||||
loading.show();
|
||||
var id = providerId;
|
||||
const id = providerId;
|
||||
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
||||
var info = config.ListingProviders.filter(function (i) {
|
||||
const info = config.ListingProviders.filter(function (i) {
|
||||
return i.Id === id;
|
||||
})[0];
|
||||
info.ZipCode = page.querySelector('.txtZipCode').value;
|
||||
|
@ -233,14 +239,14 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
|||
}
|
||||
|
||||
function refreshTunerDevices(page, providerInfo, devices) {
|
||||
var html = '';
|
||||
let html = '';
|
||||
|
||||
for (var i = 0, length = devices.length; i < length; i++) {
|
||||
var device = devices[i];
|
||||
for (let i = 0, length = devices.length; i < length; i++) {
|
||||
const device = devices[i];
|
||||
html += '<div class="listItem">';
|
||||
var enabledTuners = providerInfo.EnabledTuners || [];
|
||||
var isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1;
|
||||
var checkedAttribute = isChecked ? ' checked' : '';
|
||||
const enabledTuners = providerInfo.EnabledTuners || [];
|
||||
const isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1;
|
||||
const checkedAttribute = isChecked ? ' checked' : '';
|
||||
html += '<label class="checkboxContainer listItemCheckboxContainer"><input type="checkbox" is="emby-checkbox" data-id="' + device.Id + '" class="chkTuner" ' + checkedAttribute + '/><span></span></label>';
|
||||
html += '<div class="listItemBody two-line">';
|
||||
html += '<div class="listItemBodyText">';
|
||||
|
@ -256,8 +262,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
|||
page.querySelector('.tunerList').innerHTML = html;
|
||||
}
|
||||
|
||||
var listingsId;
|
||||
var self = this;
|
||||
let listingsId;
|
||||
const self = this;
|
||||
|
||||
self.submit = function () {
|
||||
page.querySelector('.btnSubmitListingsContainer').click();
|
||||
|
@ -268,10 +274,10 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
|||
|
||||
// Only hide the buttons if explicitly set to false; default to showing if undefined or null
|
||||
// FIXME: rename this option to clarify logic
|
||||
var hideCancelButton = options.showCancelButton === false;
|
||||
const hideCancelButton = options.showCancelButton === false;
|
||||
page.querySelector('.btnCancel').classList.toggle('hide', hideCancelButton);
|
||||
|
||||
var hideSubmitButton = options.showSubmitButton === false;
|
||||
const hideSubmitButton = options.showSubmitButton === false;
|
||||
page.querySelector('.btnSubmitListings').classList.toggle('hide', hideSubmitButton);
|
||||
|
||||
$('.formLogin', page).on('submit', function () {
|
||||
|
@ -295,5 +301,4 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb
|
|||
$('.createAccountHelp', page).html(globalize.translate('MessageCreateAccountAt', '<a is="emby-linkbutton" class="button-link" href="http://www.schedulesdirect.org" target="_blank">http://www.schedulesdirect.org</a>'));
|
||||
reload();
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listViewStyle', 'paper-icon-button-light'], function ($, loading, globalize) {
|
||||
'use strict';
|
||||
import $ from 'jQuery';
|
||||
import loading from 'loading';
|
||||
import globalize from 'globalize';
|
||||
import 'emby-checkbox';
|
||||
import 'emby-input';
|
||||
import 'listViewStyle';
|
||||
import 'paper-icon-button-light';
|
||||
|
||||
loading = loading.default || loading;
|
||||
|
||||
return function (page, providerId, options) {
|
||||
export default function (page, providerId, options) {
|
||||
function getListingProvider(config, id) {
|
||||
if (config && id) {
|
||||
var result = config.ListingProviders.filter(function (provider) {
|
||||
const result = config.ListingProviders.filter(function (provider) {
|
||||
return provider.Id === id;
|
||||
})[0];
|
||||
|
||||
|
@ -46,7 +49,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi
|
|||
}
|
||||
|
||||
function getCategories(txtInput) {
|
||||
var value = txtInput.value;
|
||||
const value = txtInput.value;
|
||||
|
||||
if (value) {
|
||||
return value.split('|');
|
||||
|
@ -57,9 +60,9 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi
|
|||
|
||||
function submitListingsForm() {
|
||||
loading.show();
|
||||
var id = providerId;
|
||||
const id = providerId;
|
||||
ApiClient.getNamedConfiguration('livetv').then(function (config) {
|
||||
var info = config.ListingProviders.filter(function (provider) {
|
||||
const info = config.ListingProviders.filter(function (provider) {
|
||||
return provider.Id === id;
|
||||
})[0] || {};
|
||||
info.Type = 'xmltv';
|
||||
|
@ -114,14 +117,14 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi
|
|||
}
|
||||
|
||||
function refreshTunerDevices(page, providerInfo, devices) {
|
||||
var html = '';
|
||||
let html = '';
|
||||
|
||||
for (var i = 0, length = devices.length; i < length; i++) {
|
||||
var device = devices[i];
|
||||
for (let i = 0, length = devices.length; i < length; i++) {
|
||||
const device = devices[i];
|
||||
html += '<div class="listItem">';
|
||||
var enabledTuners = providerInfo.EnabledTuners || [];
|
||||
var isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1;
|
||||
var checkedAttribute = isChecked ? ' checked' : '';
|
||||
const enabledTuners = providerInfo.EnabledTuners || [];
|
||||
const isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1;
|
||||
const checkedAttribute = isChecked ? ' checked' : '';
|
||||
html += '<label class="listItemCheckboxContainer"><input type="checkbox" is="emby-checkbox" class="chkTuner" data-id="' + device.Id + '" ' + checkedAttribute + '><span></span></label>';
|
||||
html += '<div class="listItemBody two-line">';
|
||||
html += '<div class="listItemBodyText">';
|
||||
|
@ -138,15 +141,15 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi
|
|||
}
|
||||
|
||||
function onSelectPathClick(e) {
|
||||
var page = $(e.target).parents('.xmltvForm')[0];
|
||||
const page = $(e.target).parents('.xmltvForm')[0];
|
||||
|
||||
require(['directorybrowser'], function (directoryBrowser) {
|
||||
var picker = new directoryBrowser.default();
|
||||
import('directorybrowser').then(({default: directoryBrowser}) => {
|
||||
const picker = new directoryBrowser();
|
||||
picker.show({
|
||||
includeFiles: true,
|
||||
callback: function (path) {
|
||||
if (path) {
|
||||
var txtPath = page.querySelector('.txtPath');
|
||||
const txtPath = page.querySelector('.txtPath');
|
||||
txtPath.value = path;
|
||||
txtPath.focus();
|
||||
}
|
||||
|
@ -156,7 +159,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi
|
|||
});
|
||||
}
|
||||
|
||||
var self = this;
|
||||
const self = this;
|
||||
|
||||
self.submit = function () {
|
||||
page.querySelector('.btnSubmitListings').click();
|
||||
|
@ -167,10 +170,10 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi
|
|||
|
||||
// Only hide the buttons if explicitly set to false; default to showing if undefined or null
|
||||
// FIXME: rename this option to clarify logic
|
||||
var hideCancelButton = options.showCancelButton === false;
|
||||
const hideCancelButton = options.showCancelButton === false;
|
||||
page.querySelector('.btnCancel').classList.toggle('hide', hideCancelButton);
|
||||
|
||||
var hideSubmitButton = options.showSubmitButton === false;
|
||||
const hideSubmitButton = options.showSubmitButton === false;
|
||||
page.querySelector('.btnSubmitListings').classList.toggle('hide', hideSubmitButton);
|
||||
|
||||
$('form', page).on('submit', function () {
|
||||
|
@ -187,5 +190,4 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi
|
|||
});
|
||||
reload();
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,9 +1,19 @@
|
|||
define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'layoutManager', 'focusManager', 'globalize', 'itemHelper', 'css!./upnextdialog', 'emby-button', 'flexStyles'], function (dom, playbackManager, connectionManager, events, mediaInfo, layoutManager, focusManager, globalize, itemHelper) {
|
||||
'use strict';
|
||||
import dom from 'dom';
|
||||
import playbackManager from 'playbackManager';
|
||||
import connectionManager from 'connectionManager';
|
||||
import events from 'events';
|
||||
import mediaInfo from 'mediaInfo';
|
||||
import layoutManager from 'layoutManager';
|
||||
import focusManager from 'focusManager';
|
||||
import globalize from 'globalize';
|
||||
import itemHelper from 'itemHelper';
|
||||
import 'css!./upnextdialog';
|
||||
import 'emby-button';
|
||||
import 'flexStyles';
|
||||
|
||||
playbackManager = playbackManager.default || playbackManager;
|
||||
/* eslint-disable indent */
|
||||
|
||||
var transitionEndEventName = dom.whichTransitionEvent();
|
||||
const transitionEndEventName = dom.whichTransitionEvent();
|
||||
|
||||
function seriesImageUrl(item, options) {
|
||||
if (item.Type !== 'Episode') {
|
||||
|
@ -58,7 +68,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
|
||||
function setPoster(osdPoster, item, secondaryItem) {
|
||||
if (item) {
|
||||
var imgUrl = seriesImageUrl(item, { type: 'Primary' }) ||
|
||||
let imgUrl = seriesImageUrl(item, { type: 'Primary' }) ||
|
||||
seriesImageUrl(item, { type: 'Thumb' }) ||
|
||||
imageUrl(item, { type: 'Primary' });
|
||||
|
||||
|
@ -78,7 +88,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
function getHtml() {
|
||||
var html = '';
|
||||
let html = '';
|
||||
|
||||
html += '<div class="upNextDialog-poster">';
|
||||
html += '</div>';
|
||||
|
@ -114,17 +124,17 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
function setNextVideoText() {
|
||||
var instance = this;
|
||||
const instance = this;
|
||||
|
||||
var elem = instance.options.parent;
|
||||
const elem = instance.options.parent;
|
||||
|
||||
var secondsRemaining = Math.max(Math.round(getTimeRemainingMs(instance) / 1000), 0);
|
||||
const secondsRemaining = Math.max(Math.round(getTimeRemainingMs(instance) / 1000), 0);
|
||||
|
||||
console.debug('up next seconds remaining: ' + secondsRemaining);
|
||||
|
||||
var timeText = '<span class="upNextDialog-countdownText">' + globalize.translate('HeaderSecondsValue', secondsRemaining) + '</span>';
|
||||
const timeText = '<span class="upNextDialog-countdownText">' + globalize.translate('HeaderSecondsValue', secondsRemaining) + '</span>';
|
||||
|
||||
var nextVideoText = instance.itemType === 'Episode' ?
|
||||
const nextVideoText = instance.itemType === 'Episode' ?
|
||||
globalize.translate('HeaderNextEpisodePlayingInValue', timeText) :
|
||||
globalize.translate('HeaderNextVideoPlayingInValue', timeText);
|
||||
|
||||
|
@ -132,9 +142,9 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
function fillItem(item) {
|
||||
var instance = this;
|
||||
const instance = this;
|
||||
|
||||
var elem = instance.options.parent;
|
||||
const elem = instance.options.parent;
|
||||
|
||||
setPoster(elem.querySelector('.upNextDialog-poster'), item);
|
||||
|
||||
|
@ -143,7 +153,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
elem.querySelector('.upNextDialog-mediainfo').innerHTML = mediaInfo.getPrimaryMediaInfoHtml(item, {
|
||||
});
|
||||
|
||||
var title = itemHelper.getDisplayName(item);
|
||||
let title = itemHelper.getDisplayName(item);
|
||||
if (item.SeriesName) {
|
||||
title = item.SeriesName + ' - ' + title;
|
||||
}
|
||||
|
@ -163,10 +173,10 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
function onStartNowClick() {
|
||||
var options = this.options;
|
||||
const options = this.options;
|
||||
|
||||
if (options) {
|
||||
var player = options.player;
|
||||
const player = options.player;
|
||||
|
||||
this.hide();
|
||||
|
||||
|
@ -188,7 +198,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
function clearHideAnimationEventListeners(instance, elem) {
|
||||
var fn = instance._onHideAnimationComplete;
|
||||
const fn = instance._onHideAnimationComplete;
|
||||
|
||||
if (fn) {
|
||||
dom.removeEventListener(elem, transitionEndEventName, fn, {
|
||||
|
@ -198,8 +208,8 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
function onHideAnimationComplete(e) {
|
||||
var instance = this;
|
||||
var elem = e.target;
|
||||
const instance = this;
|
||||
const elem = e.target;
|
||||
|
||||
elem.classList.add('hide');
|
||||
|
||||
|
@ -208,14 +218,14 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
function hideComingUpNext() {
|
||||
var instance = this;
|
||||
const instance = this;
|
||||
clearCountdownTextTimeout(this);
|
||||
|
||||
if (!instance.options) {
|
||||
return;
|
||||
}
|
||||
|
||||
var elem = instance.options.parent;
|
||||
const elem = instance.options.parent;
|
||||
|
||||
if (!elem) {
|
||||
return;
|
||||
|
@ -232,7 +242,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
|
||||
elem.classList.add('upNextDialog-hidden');
|
||||
|
||||
var fn = onHideAnimationComplete.bind(instance);
|
||||
const fn = onHideAnimationComplete.bind(instance);
|
||||
instance._onHideAnimationComplete = fn;
|
||||
|
||||
dom.addEventListener(elem, transitionEndEventName, fn, {
|
||||
|
@ -241,12 +251,12 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
function getTimeRemainingMs(instance) {
|
||||
var options = instance.options;
|
||||
const options = instance.options;
|
||||
if (options) {
|
||||
var runtimeTicks = playbackManager.duration(options.player);
|
||||
const runtimeTicks = playbackManager.duration(options.player);
|
||||
|
||||
if (runtimeTicks) {
|
||||
var timeRemainingTicks = runtimeTicks - playbackManager.currentTime(options.player);
|
||||
const timeRemainingTicks = runtimeTicks - playbackManager.currentTime(options.player);
|
||||
|
||||
return Math.round(timeRemainingTicks / 10000);
|
||||
}
|
||||
|
@ -256,7 +266,7 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
function startComingUpNextHideTimer(instance) {
|
||||
var timeRemainingMs = getTimeRemainingMs(instance);
|
||||
const timeRemainingMs = getTimeRemainingMs(instance);
|
||||
|
||||
if (timeRemainingMs <= 0) {
|
||||
return;
|
||||
|
@ -268,14 +278,14 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
instance._countdownTextTimeout = setInterval(setNextVideoText.bind(instance), 400);
|
||||
}
|
||||
|
||||
function UpNextDialog(options) {
|
||||
class UpNextDialog {
|
||||
constructor(options) {
|
||||
this.options = options;
|
||||
|
||||
init(this, options);
|
||||
}
|
||||
|
||||
UpNextDialog.prototype.show = function () {
|
||||
var elem = this.options.parent;
|
||||
show() {
|
||||
const elem = this.options.parent;
|
||||
|
||||
clearHideAnimationEventListeners(this, elem);
|
||||
|
||||
|
@ -293,18 +303,18 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l
|
|||
}
|
||||
|
||||
startComingUpNextHideTimer(this);
|
||||
};
|
||||
|
||||
UpNextDialog.prototype.hide = function () {
|
||||
}
|
||||
hide() {
|
||||
hideComingUpNext.call(this);
|
||||
};
|
||||
|
||||
UpNextDialog.prototype.destroy = function () {
|
||||
}
|
||||
destroy() {
|
||||
hideComingUpNext.call(this);
|
||||
|
||||
this.options = null;
|
||||
this.itemType = null;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return UpNextDialog;
|
||||
});
|
||||
export default UpNextDialog;
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], function (viewContainer, focusManager, queryString, layoutManager) {
|
||||
'use strict';
|
||||
import viewContainer from 'viewContainer';
|
||||
import focusManager from 'focusManager';
|
||||
import queryString from 'queryString';
|
||||
import layoutManager from 'layoutManager';
|
||||
|
||||
var currentView;
|
||||
var dispatchPageEvents;
|
||||
let currentView;
|
||||
let dispatchPageEvents;
|
||||
|
||||
viewContainer.setOnBeforeChange(function (newView, isRestored, options) {
|
||||
var lastView = currentView;
|
||||
viewContainer.setOnBeforeChange(function (newView, isRestored, options) {
|
||||
const lastView = currentView;
|
||||
if (lastView) {
|
||||
var beforeHideResult = dispatchViewEvent(lastView, null, 'viewbeforehide', true);
|
||||
const beforeHideResult = dispatchViewEvent(lastView, null, 'viewbeforehide', true);
|
||||
|
||||
if (!beforeHideResult) {
|
||||
// todo: cancel
|
||||
}
|
||||
}
|
||||
|
||||
var eventDetail = getViewEventDetail(newView, options, isRestored);
|
||||
const eventDetail = getViewEventDetail(newView, options, isRestored);
|
||||
|
||||
if (!newView.initComplete) {
|
||||
newView.initComplete = true;
|
||||
|
@ -31,17 +33,17 @@ define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], functi
|
|||
}
|
||||
|
||||
dispatchViewEvent(newView, eventDetail, 'viewbeforeshow');
|
||||
});
|
||||
});
|
||||
|
||||
function onViewChange(view, options, isRestore) {
|
||||
var lastView = currentView;
|
||||
function onViewChange(view, options, isRestore) {
|
||||
const lastView = currentView;
|
||||
if (lastView) {
|
||||
dispatchViewEvent(lastView, null, 'viewhide');
|
||||
}
|
||||
|
||||
currentView = view;
|
||||
|
||||
var eventDetail = getViewEventDetail(view, options, isRestore);
|
||||
const eventDetail = getViewEventDetail(view, options, isRestore);
|
||||
|
||||
if (!isRestore) {
|
||||
if (options.autoFocus !== false) {
|
||||
|
@ -60,19 +62,19 @@ define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], functi
|
|||
if (dispatchPageEvents) {
|
||||
view.dispatchEvent(new CustomEvent('pageshow', eventDetail));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getProperties(view) {
|
||||
var props = view.getAttribute('data-properties');
|
||||
function getProperties(view) {
|
||||
const props = view.getAttribute('data-properties');
|
||||
|
||||
if (props) {
|
||||
return props.split(',');
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
function dispatchViewEvent(view, eventInfo, eventName, isCancellable) {
|
||||
function dispatchViewEvent(view, eventInfo, eventName, isCancellable) {
|
||||
if (!eventInfo) {
|
||||
eventInfo = {
|
||||
detail: {
|
||||
|
@ -86,7 +88,7 @@ define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], functi
|
|||
|
||||
eventInfo.cancelable = isCancellable || false;
|
||||
|
||||
var eventResult = view.dispatchEvent(new CustomEvent(eventName, eventInfo));
|
||||
const eventResult = view.dispatchEvent(new CustomEvent(eventName, eventInfo));
|
||||
|
||||
if (dispatchPageEvents) {
|
||||
eventInfo.cancelable = false;
|
||||
|
@ -94,12 +96,12 @@ define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], functi
|
|||
}
|
||||
|
||||
return eventResult;
|
||||
}
|
||||
}
|
||||
|
||||
function getViewEventDetail(view, options, isRestore) {
|
||||
var url = options.url;
|
||||
var index = url.indexOf('?');
|
||||
var params = index === -1 ? {} : queryString.parse(url.substring(index + 1));
|
||||
function getViewEventDetail(view, options, isRestore) {
|
||||
const url = options.url;
|
||||
const index = url.indexOf('?');
|
||||
const params = index === -1 ? {} : queryString.parse(url.substring(index + 1));
|
||||
|
||||
return {
|
||||
detail: {
|
||||
|
@ -115,20 +117,18 @@ define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], functi
|
|||
bubbles: true,
|
||||
cancelable: false
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function resetCachedViews() {
|
||||
function resetCachedViews() {
|
||||
// Reset all cached views whenever the skin changes
|
||||
viewContainer.reset();
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('skinunload', resetCachedViews);
|
||||
document.addEventListener('skinunload', resetCachedViews);
|
||||
|
||||
function ViewManager() {
|
||||
}
|
||||
|
||||
ViewManager.prototype.loadView = function (options) {
|
||||
var lastView = currentView;
|
||||
class ViewManager {
|
||||
loadView(options) {
|
||||
const lastView = currentView;
|
||||
|
||||
// Record the element that has focus
|
||||
if (lastView) {
|
||||
|
@ -142,9 +142,9 @@ define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], functi
|
|||
viewContainer.loadView(options).then(function (view) {
|
||||
onViewChange(view, options);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
ViewManager.prototype.tryRestoreView = function (options, onViewChanging) {
|
||||
tryRestoreView(options, onViewChanging) {
|
||||
if (options.cancel) {
|
||||
return Promise.reject({ cancelled: true });
|
||||
}
|
||||
|
@ -158,15 +158,15 @@ define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], functi
|
|||
onViewChanging();
|
||||
onViewChange(view, options, true);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
ViewManager.prototype.currentView = function () {
|
||||
currentView() {
|
||||
return currentView;
|
||||
};
|
||||
}
|
||||
|
||||
ViewManager.prototype.dispatchPageEvents = function (value) {
|
||||
dispatchPageEvents(value) {
|
||||
dispatchPageEvents = value;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return new ViewManager();
|
||||
});
|
||||
export default new ViewManager();
|
||||
|
|
|
@ -29,6 +29,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne
|
|||
|
||||
function centerFocus(elem, horiz, on) {
|
||||
require(['scrollHelper'], function (scrollHelper) {
|
||||
scrollHelper = scrollHelper.default || scrollHelper;
|
||||
var fn = on ? 'on' : 'off';
|
||||
scrollHelper.centerFocus[fn](elem, horiz);
|
||||
});
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import loading from 'loading';
|
||||
import libraryMenu from 'libraryMenu';
|
||||
import globalize from 'globalize';
|
||||
import 'listViewStyle';
|
||||
import 'emby-button';
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'scroller', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, scroller, playbackManager, AlphaPicker) {
|
||||
define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, playbackManager, AlphaPicker) {
|
||||
'use strict';
|
||||
|
||||
playbackManager = playbackManager.default || playbackManager;
|
||||
loading = loading.default || loading;
|
||||
focusManager = focusManager.default || focusManager;
|
||||
|
||||
function getInitialLiveTvQuery(instance, params) {
|
||||
var query = {
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'userSettings', 'emby-itemscontainer'], function (cardBuilder, imageLoader, libraryBrowser, loading, events, userSettings) {
|
||||
'use strict';
|
||||
import cardBuilder from 'cardBuilder';
|
||||
import imageLoader from 'imageLoader';
|
||||
import libraryBrowser from 'libraryBrowser';
|
||||
import loading from 'loading';
|
||||
import events from 'events';
|
||||
import * as userSettings from 'userSettings';
|
||||
import 'emby-itemscontainer';
|
||||
|
||||
loading = loading.default || loading;
|
||||
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
export default function (view, params, tabContent) {
|
||||
function getPageData() {
|
||||
if (!pageData) {
|
||||
pageData = {
|
||||
|
@ -62,7 +64,7 @@ define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'us
|
|||
reloadItems(context);
|
||||
}
|
||||
|
||||
var query = getQuery();
|
||||
const query = getQuery();
|
||||
context.querySelector('.paging').innerHTML = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
|
@ -71,13 +73,13 @@ define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'us
|
|||
updatePageSizeSetting: false,
|
||||
filterButton: false
|
||||
});
|
||||
var html = getChannelsHtml(result.Items);
|
||||
var elem = context.querySelector('#items');
|
||||
const html = getChannelsHtml(result.Items);
|
||||
const elem = context.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
var i;
|
||||
var length;
|
||||
var elems;
|
||||
let i;
|
||||
let length;
|
||||
let elems;
|
||||
|
||||
for (elems = context.querySelectorAll('.btnNextPage'), i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onNextPageClick);
|
||||
|
@ -89,8 +91,8 @@ define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'us
|
|||
}
|
||||
|
||||
function showFilterMenu(context) {
|
||||
require(['components/filterdialog/filterdialog'], function ({default: filterDialogFactory}) {
|
||||
var filterDialog = new filterDialogFactory({
|
||||
import(['components/filterdialog/filterdialog']).then(({default: FilterDialog}) => {
|
||||
const filterDialog = new FilterDialog({
|
||||
query: getQuery(),
|
||||
mode: 'livetvchannels',
|
||||
serverId: ApiClient.serverId()
|
||||
|
@ -105,23 +107,23 @@ define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'us
|
|||
function reloadItems(context, save) {
|
||||
loading.show();
|
||||
isLoading = true;
|
||||
var query = getQuery();
|
||||
var apiClient = ApiClient;
|
||||
const query = getQuery();
|
||||
const apiClient = ApiClient;
|
||||
query.UserId = apiClient.getCurrentUserId();
|
||||
apiClient.getLiveTvChannels(query).then(function (result) {
|
||||
renderChannels(context, result);
|
||||
loading.hide();
|
||||
isLoading = false;
|
||||
|
||||
require(['autoFocuser'], function (autoFocuser) {
|
||||
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||
autoFocuser.autoFocus(view);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
var pageData;
|
||||
var self = this;
|
||||
var isLoading = false;
|
||||
let pageData;
|
||||
const self = this;
|
||||
let isLoading = false;
|
||||
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
|
||||
showFilterMenu(tabContent);
|
||||
});
|
||||
|
@ -129,5 +131,4 @@ define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'us
|
|||
self.renderTab = function () {
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
define(['layoutManager', 'loading', 'cardBuilder', 'apphost', 'imageLoader', 'scripts/livetvcomponents', 'listViewStyle', 'emby-itemscontainer'], function (layoutManager, loading, cardBuilder, appHost, imageLoader) {
|
||||
'use strict';
|
||||
import loading from 'loading';
|
||||
import cardBuilder from 'cardBuilder';
|
||||
import imageLoader from 'imageLoader';
|
||||
import 'scripts/livetvcomponents';
|
||||
import 'listViewStyle';
|
||||
import 'emby-itemscontainer';
|
||||
|
||||
loading = loading.default || loading;
|
||||
|
||||
function renderRecordings(elem, recordings, cardOptions, scrollX) {
|
||||
function renderRecordings(elem, recordings, cardOptions, scrollX) {
|
||||
if (!elem) {
|
||||
return;
|
||||
}
|
||||
|
@ -14,7 +16,7 @@ define(['layoutManager', 'loading', 'cardBuilder', 'apphost', 'imageLoader', 'sc
|
|||
elem.classList.add('hide');
|
||||
}
|
||||
|
||||
var recordingItems = elem.querySelector('.recordingItems');
|
||||
const recordingItems = elem.querySelector('.recordingItems');
|
||||
|
||||
if (scrollX) {
|
||||
recordingItems.classList.add('scrollX');
|
||||
|
@ -40,9 +42,9 @@ define(['layoutManager', 'loading', 'cardBuilder', 'apphost', 'imageLoader', 'sc
|
|||
overlayText: false
|
||||
}, cardOptions || {}));
|
||||
imageLoader.lazyChildren(recordingItems);
|
||||
}
|
||||
}
|
||||
|
||||
function renderLatestRecordings(context, promise) {
|
||||
function renderLatestRecordings(context, promise) {
|
||||
promise.then(function (result) {
|
||||
renderRecordings(context.querySelector('#latestRecordings'), result.Items, {
|
||||
showYear: true,
|
||||
|
@ -50,39 +52,39 @@ define(['layoutManager', 'loading', 'cardBuilder', 'apphost', 'imageLoader', 'sc
|
|||
}, false);
|
||||
loading.hide();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function renderRecordingFolders(context, promise) {
|
||||
function renderRecordingFolders(context, promise) {
|
||||
promise.then(function (result) {
|
||||
renderRecordings(context.querySelector('#recordingFolders'), result.Items, {
|
||||
showYear: false,
|
||||
showParentTitle: false
|
||||
}, false);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function onMoreClick(e) {
|
||||
var type = this.getAttribute('data-type');
|
||||
var serverId = ApiClient.serverId();
|
||||
function onMoreClick(e) {
|
||||
const type = this.getAttribute('data-type');
|
||||
const serverId = ApiClient.serverId();
|
||||
|
||||
switch (type) {
|
||||
case 'latest':
|
||||
Dashboard.navigate('list.html?type=Recordings&serverId=' + serverId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
export default function (view, params, tabContent) {
|
||||
function enableFullRender() {
|
||||
return new Date().getTime() - lastFullRender > 300000;
|
||||
}
|
||||
|
||||
var foldersPromise;
|
||||
var latestPromise;
|
||||
var self = this;
|
||||
var lastFullRender = 0;
|
||||
var moreButtons = tabContent.querySelectorAll('.more');
|
||||
let foldersPromise;
|
||||
let latestPromise;
|
||||
const self = this;
|
||||
let lastFullRender = 0;
|
||||
const moreButtons = tabContent.querySelectorAll('.more');
|
||||
|
||||
for (var i = 0, length = moreButtons.length; i < length; i++) {
|
||||
for (let i = 0, length = moreButtons.length; i < length; i++) {
|
||||
moreButtons[i].addEventListener('click', onMoreClick);
|
||||
}
|
||||
|
||||
|
@ -107,5 +109,4 @@ define(['layoutManager', 'loading', 'cardBuilder', 'apphost', 'imageLoader', 'sc
|
|||
lastFullRender = new Date().getTime();
|
||||
}
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'scripts/livetvcomponents', 'emby-button', 'emby-itemscontainer'], function (layoutManager, cardBuilder, appHost, imageLoader, loading) {
|
||||
'use strict';
|
||||
import layoutManager from 'layoutManager';
|
||||
import cardBuilder from 'cardBuilder';
|
||||
import imageLoader from 'imageLoader';
|
||||
import loading from 'loading';
|
||||
import 'scripts/livetvcomponents';
|
||||
import 'emby-button';
|
||||
import 'emby-itemscontainer';
|
||||
|
||||
loading = loading.default || loading;
|
||||
|
||||
function enableScrollX() {
|
||||
function enableScrollX() {
|
||||
return !layoutManager.desktop;
|
||||
}
|
||||
}
|
||||
|
||||
function renderRecordings(elem, recordings, cardOptions) {
|
||||
function renderRecordings(elem, recordings, cardOptions) {
|
||||
if (recordings.length) {
|
||||
elem.classList.remove('hide');
|
||||
} else {
|
||||
elem.classList.add('hide');
|
||||
}
|
||||
|
||||
var recordingItems = elem.querySelector('.recordingItems');
|
||||
const recordingItems = elem.querySelector('.recordingItems');
|
||||
|
||||
if (enableScrollX()) {
|
||||
recordingItems.classList.add('scrollX');
|
||||
|
@ -44,13 +47,13 @@ define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'sc
|
|||
preferThumb: 'auto'
|
||||
}, cardOptions || {}));
|
||||
imageLoader.lazyChildren(recordingItems);
|
||||
}
|
||||
}
|
||||
|
||||
function getBackdropShape() {
|
||||
function getBackdropShape() {
|
||||
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
|
||||
}
|
||||
}
|
||||
|
||||
function renderActiveRecordings(context, promise) {
|
||||
function renderActiveRecordings(context, promise) {
|
||||
promise.then(function (result) {
|
||||
renderRecordings(context.querySelector('#activeRecordings'), result.Items, {
|
||||
shape: enableScrollX() ? 'autooverflow' : 'auto',
|
||||
|
@ -66,11 +69,11 @@ define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'sc
|
|||
overlayMoreButton: true
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function renderTimers(context, timers, options) {
|
||||
function renderTimers(context, timers, options) {
|
||||
LiveTvHelpers.getTimersHtml(timers, options).then(function (html) {
|
||||
var elem = context;
|
||||
const elem = context;
|
||||
|
||||
if (html) {
|
||||
elem.classList.remove('hide');
|
||||
|
@ -81,19 +84,19 @@ define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'sc
|
|||
elem.querySelector('.recordingItems').innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function renderUpcomingRecordings(context, promise) {
|
||||
function renderUpcomingRecordings(context, promise) {
|
||||
promise.then(function (result) {
|
||||
renderTimers(context.querySelector('#upcomingRecordings'), result.Items);
|
||||
loading.hide();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
var activeRecordingsPromise;
|
||||
var upcomingRecordingsPromise;
|
||||
var self = this;
|
||||
export default function (view, params, tabContent) {
|
||||
let activeRecordingsPromise;
|
||||
let upcomingRecordingsPromise;
|
||||
const self = this;
|
||||
tabContent.querySelector('#upcomingRecordings .recordingItems').addEventListener('timercancelled', function () {
|
||||
self.preRender();
|
||||
self.renderTab();
|
||||
|
@ -118,5 +121,4 @@ define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'sc
|
|||
renderActiveRecordings(tabContent, activeRecordingsPromise);
|
||||
renderUpcomingRecordings(tabContent, upcomingRecordingsPromise);
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
define(['datetime', 'cardBuilder', 'imageLoader', 'apphost', 'loading', 'paper-icon-button-light', 'emby-button'], function (datetime, cardBuilder, imageLoader, appHost, loading) {
|
||||
'use strict';
|
||||
import cardBuilder from 'cardBuilder';
|
||||
import imageLoader from 'imageLoader';
|
||||
import loading from 'loading';
|
||||
import 'paper-icon-button-light';
|
||||
import 'emby-button';
|
||||
|
||||
loading = loading.default || loading;
|
||||
|
||||
function renderTimers(context, timers) {
|
||||
var html = '';
|
||||
html += cardBuilder.getCardsHtml({
|
||||
function renderTimers(context, timers) {
|
||||
const html = cardBuilder.getCardsHtml({
|
||||
items: timers,
|
||||
shape: 'auto',
|
||||
defaultShape: 'portrait',
|
||||
|
@ -20,26 +20,27 @@ define(['datetime', 'cardBuilder', 'imageLoader', 'apphost', 'loading', 'paper-i
|
|||
overlayMoreButton: true,
|
||||
lines: 3
|
||||
});
|
||||
var elem = context.querySelector('#items');
|
||||
const elem = context.querySelector('#items');
|
||||
elem.innerHTML = html;
|
||||
imageLoader.lazyChildren(elem);
|
||||
loading.hide();
|
||||
}
|
||||
}
|
||||
|
||||
function reload(context, promise) {
|
||||
function reload(context, promise) {
|
||||
loading.show();
|
||||
promise.then(function (result) {
|
||||
renderTimers(context, result.Items);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
var query = {
|
||||
const query = {
|
||||
SortBy: 'SortName',
|
||||
SortOrder: 'Ascending'
|
||||
};
|
||||
return function (view, params, tabContent) {
|
||||
var timersPromise;
|
||||
var self = this;
|
||||
};
|
||||
|
||||
export default function (view, params, tabContent) {
|
||||
let timersPromise;
|
||||
const self = this;
|
||||
|
||||
self.preRender = function () {
|
||||
timersPromise = ApiClient.getLiveTvSeriesTimers(query);
|
||||
|
@ -48,5 +49,4 @@ define(['datetime', 'cardBuilder', 'imageLoader', 'apphost', 'loading', 'paper-i
|
|||
self.renderTab = function () {
|
||||
reload(tabContent, timersPromise);
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
@ -169,9 +169,6 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize',
|
|||
name: globalize.translate('HeaderSchedule')
|
||||
}, {
|
||||
name: globalize.translate('TabSeries')
|
||||
}, {
|
||||
name: globalize.translate('ButtonSearch'),
|
||||
cssClass: 'searchTabButton'
|
||||
}];
|
||||
}
|
||||
|
||||
|
@ -255,9 +252,6 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize',
|
|||
case 5:
|
||||
depends.push('controllers/livetv/livetvseriestimers');
|
||||
break;
|
||||
|
||||
case 6:
|
||||
depends.push('scripts/searchtab');
|
||||
}
|
||||
|
||||
require(depends, function (controllerFactory) {
|
||||
|
|
|
@ -1,13 +1,18 @@
|
|||
define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) {
|
||||
'use strict';
|
||||
import loading from 'loading';
|
||||
import libraryBrowser from 'libraryBrowser';
|
||||
import imageLoader from 'imageLoader';
|
||||
import listView from 'listView';
|
||||
import cardBuilder from 'cardBuilder';
|
||||
import * as userSettings from 'userSettings';
|
||||
import globalize from 'globalize';
|
||||
import 'emby-itemscontainer';
|
||||
|
||||
loading = loading.default || loading;
|
||||
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||
/* eslint-disable indent */
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
export default function (view, params, tabContent) {
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
const key = getSavedQueryKey(context);
|
||||
let pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
|
@ -47,9 +52,9 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
|
|||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function onViewStyleChange() {
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
const onViewStyleChange = () => {
|
||||
const viewStyle = this.getCurrentViewStyle();
|
||||
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
|
||||
if (viewStyle == 'List') {
|
||||
itemsContainer.classList.add('vertical-list');
|
||||
|
@ -60,13 +65,13 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
|
|||
}
|
||||
|
||||
itemsContainer.innerHTML = '';
|
||||
}
|
||||
};
|
||||
|
||||
function reloadItems(page) {
|
||||
const reloadItems = (page) => {
|
||||
loading.show();
|
||||
isLoading = true;
|
||||
var query = getQuery(page);
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
|
||||
const query = getQuery(page);
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then((result) => {
|
||||
function onNextPageClick() {
|
||||
if (isLoading) {
|
||||
return;
|
||||
|
@ -90,8 +95,8 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
|
|||
}
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
var html;
|
||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
let html;
|
||||
const pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
|
@ -101,7 +106,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
|
|||
sortButton: false,
|
||||
filterButton: false
|
||||
});
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
const viewStyle = this.getCurrentViewStyle();
|
||||
if (viewStyle == 'Thumb') {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
|
@ -155,22 +160,21 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
|
|||
showTitle: true
|
||||
});
|
||||
}
|
||||
var i;
|
||||
var length;
|
||||
var elems = tabContent.querySelectorAll('.paging');
|
||||
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
let elems = tabContent.querySelectorAll('.paging');
|
||||
|
||||
for (const elem of elems) {
|
||||
elem.innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll('.btnNextPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onNextPageClick);
|
||||
for (const elem of elems) {
|
||||
elem.addEventListener('click', onNextPageClick);
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll('.btnPreviousPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onPreviousPageClick);
|
||||
for (const elem of elems) {
|
||||
elem.addEventListener('click', onPreviousPageClick);
|
||||
}
|
||||
|
||||
if (!result.Items.length) {
|
||||
|
@ -182,28 +186,27 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
|
|||
html += '</div>';
|
||||
}
|
||||
|
||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
itemsContainer.innerHTML = html;
|
||||
imageLoader.lazyChildren(itemsContainer);
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
|
||||
loading.hide();
|
||||
isLoading = false;
|
||||
|
||||
require(['autoFocuser'], function (autoFocuser) {
|
||||
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||
autoFocuser.autoFocus(page);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var self = this;
|
||||
var data = {};
|
||||
var isLoading = false;
|
||||
const data = {};
|
||||
let isLoading = false;
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
this.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
function initPage(tabContent) {
|
||||
const initPage = (tabContent) => {
|
||||
tabContent.querySelector('.btnSort').addEventListener('click', function (e) {
|
||||
libraryBrowser.showSortMenu({
|
||||
items: [{
|
||||
|
@ -230,36 +233,37 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB
|
|||
button: e.target
|
||||
});
|
||||
});
|
||||
var btnSelectView = tabContent.querySelector('.btnSelectView');
|
||||
const btnSelectView = tabContent.querySelector('.btnSelectView');
|
||||
btnSelectView.addEventListener('click', function (e) {
|
||||
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'List,Poster,PosterCard,Thumb,ThumbCard'.split(','));
|
||||
libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'List,Poster,PosterCard,Thumb,ThumbCard'.split(','));
|
||||
});
|
||||
btnSelectView.addEventListener('layoutchange', function (e) {
|
||||
var viewStyle = e.detail.viewStyle;
|
||||
const viewStyle = e.detail.viewStyle;
|
||||
getPageData(tabContent).view = viewStyle;
|
||||
libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle);
|
||||
getQuery(tabContent).StartIndex = 0;
|
||||
onViewStyleChange();
|
||||
reloadItems(tabContent);
|
||||
});
|
||||
tabContent.querySelector('.btnNewCollection').addEventListener('click', function () {
|
||||
require(['collectionEditor'], function (collectionEditor) {
|
||||
var serverId = ApiClient.serverInfo().Id;
|
||||
tabContent.querySelector('.btnNewCollection').addEventListener('click', () => {
|
||||
import('collectionEditor').then(({default: collectionEditor}) => {
|
||||
const serverId = ApiClient.serverInfo().Id;
|
||||
new collectionEditor.showEditor({
|
||||
items: [],
|
||||
serverId: serverId
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
initPage(tabContent);
|
||||
onViewStyleChange();
|
||||
|
||||
self.renderTab = function () {
|
||||
this.renderTab = function () {
|
||||
reloadItems(tabContent);
|
||||
};
|
||||
|
||||
self.destroy = function () {};
|
||||
};
|
||||
});
|
||||
this.destroy = function () {};
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -1,13 +1,18 @@
|
|||
define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'appRouter', 'dom', 'emby-button'], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) {
|
||||
'use strict';
|
||||
import layoutManager from 'layoutManager';
|
||||
import loading from 'loading';
|
||||
import libraryBrowser from 'libraryBrowser';
|
||||
import cardBuilder from 'cardBuilder';
|
||||
import lazyLoader from 'lazyLoader';
|
||||
import globalize from 'globalize';
|
||||
import appRouter from 'appRouter';
|
||||
import 'emby-button';
|
||||
|
||||
loading = loading.default || loading;
|
||||
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||
/* eslint-disable indent */
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
export default function (view, params, tabContent) {
|
||||
function getPageData() {
|
||||
var key = getSavedQueryKey();
|
||||
var pageData = data[key];
|
||||
const key = getSavedQueryKey();
|
||||
let pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
|
@ -37,7 +42,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
|
|||
|
||||
function getPromise() {
|
||||
loading.show();
|
||||
var query = getQuery();
|
||||
const query = getQuery();
|
||||
return ApiClient.getGenres(ApiClient.getCurrentUserId(), query);
|
||||
}
|
||||
|
||||
|
@ -53,18 +58,18 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
|
|||
return enableScrollX() ? 'overflowPortrait' : 'portrait';
|
||||
}
|
||||
|
||||
function fillItemsContainer(entry) {
|
||||
var elem = entry.target;
|
||||
var id = elem.getAttribute('data-id');
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
var limit = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 5 : 9;
|
||||
const fillItemsContainer = (entry) => {
|
||||
const elem = entry.target;
|
||||
const id = elem.getAttribute('data-id');
|
||||
const viewStyle = this.getCurrentViewStyle();
|
||||
let limit = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 5 : 9;
|
||||
|
||||
if (enableScrollX()) {
|
||||
limit = 10;
|
||||
}
|
||||
|
||||
var enableImageTypes = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 'Primary,Backdrop,Thumb' : 'Primary';
|
||||
var query = {
|
||||
const enableImageTypes = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 'Primary,Backdrop,Thumb' : 'Primary';
|
||||
const query = {
|
||||
SortBy: 'SortName',
|
||||
SortOrder: 'Ascending',
|
||||
IncludeItemTypes: 'Movie',
|
||||
|
@ -126,17 +131,17 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
|
|||
tabContent.querySelector('.btnMoreFromGenre' + id + ' .material-icons').classList.remove('hide');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function reloadItems(context, promise) {
|
||||
var query = getQuery();
|
||||
const query = getQuery();
|
||||
promise.then(function (result) {
|
||||
var elem = context.querySelector('#items');
|
||||
var html = '';
|
||||
var items = result.Items;
|
||||
const elem = context.querySelector('#items');
|
||||
let html = '';
|
||||
const items = result.Items;
|
||||
|
||||
for (var i = 0, length = items.length; i < length; i++) {
|
||||
var item = items[i];
|
||||
for (let i = 0, length = items.length; i < length; i++) {
|
||||
const item = items[i];
|
||||
|
||||
html += '<div class="verticalSection">';
|
||||
html += '<div class="sectionTitleContainer sectionTitleContainer-cards padded-left">';
|
||||
|
@ -151,7 +156,7 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
|
|||
html += '</a>';
|
||||
html += '</div>';
|
||||
if (enableScrollX()) {
|
||||
var scrollXClass = 'scrollX hiddenScrollX';
|
||||
let scrollXClass = 'scrollX hiddenScrollX';
|
||||
|
||||
if (layoutManager.tv) {
|
||||
scrollXClass += 'smoothScrollX padded-top-focusscale padded-bottom-focusscale';
|
||||
|
@ -182,37 +187,37 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader
|
|||
});
|
||||
}
|
||||
|
||||
function fullyReload() {
|
||||
self.preRender();
|
||||
self.renderTab();
|
||||
}
|
||||
const fullyReload = () => {
|
||||
this.preRender();
|
||||
this.renderTab();
|
||||
};
|
||||
|
||||
var self = this;
|
||||
var data = {};
|
||||
const data = {};
|
||||
|
||||
self.getViewStyles = function () {
|
||||
this.getViewStyles = function () {
|
||||
return 'Poster,PosterCard,Thumb,ThumbCard'.split(',');
|
||||
};
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
this.getCurrentViewStyle = function () {
|
||||
return getPageData().view;
|
||||
};
|
||||
|
||||
self.setCurrentViewStyle = function (viewStyle) {
|
||||
this.setCurrentViewStyle = function (viewStyle) {
|
||||
getPageData().view = viewStyle;
|
||||
libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle);
|
||||
fullyReload();
|
||||
};
|
||||
|
||||
self.enableViewSelection = true;
|
||||
var promise;
|
||||
this.enableViewSelection = true;
|
||||
let promise;
|
||||
|
||||
self.preRender = function () {
|
||||
this.preRender = function () {
|
||||
promise = getPromise();
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
this.renderTab = function () {
|
||||
reloadItems(tabContent, promise);
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -1,12 +1,18 @@
|
|||
define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', 'alphaPicker', 'listView', 'cardBuilder', 'globalize', 'emby-itemscontainer'], function (loading, layoutManager, userSettings, events, libraryBrowser, AlphaPicker, listView, cardBuilder, globalize) {
|
||||
'use strict';
|
||||
import loading from 'loading';
|
||||
import * as userSettings from 'userSettings';
|
||||
import events from 'events';
|
||||
import libraryBrowser from 'libraryBrowser';
|
||||
import AlphaPicker from 'alphaPicker';
|
||||
import listView from 'listView';
|
||||
import cardBuilder from 'cardBuilder';
|
||||
import globalize from 'globalize';
|
||||
import 'emby-itemscontainer';
|
||||
|
||||
loading = loading.default || loading;
|
||||
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||
/* eslint-disable indent */
|
||||
|
||||
return function (view, params, tabContent, options) {
|
||||
function onViewStyleChange() {
|
||||
if (self.getCurrentViewStyle() == 'List') {
|
||||
export default function (view, params, tabContent, options) {
|
||||
const onViewStyleChange = () => {
|
||||
if (this.getCurrentViewStyle() == 'List') {
|
||||
itemsContainer.classList.add('vertical-list');
|
||||
itemsContainer.classList.remove('vertical-wrap');
|
||||
} else {
|
||||
|
@ -15,13 +21,13 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
|
|||
}
|
||||
|
||||
itemsContainer.innerHTML = '';
|
||||
}
|
||||
};
|
||||
|
||||
function updateFilterControls() {
|
||||
if (self.alphaPicker) {
|
||||
self.alphaPicker.value(query.NameStartsWithOrGreater);
|
||||
}
|
||||
const updateFilterControls = () => {
|
||||
if (this.alphaPicker) {
|
||||
this.alphaPicker.value(query.NameStartsWithOrGreater);
|
||||
}
|
||||
};
|
||||
|
||||
function fetchData() {
|
||||
isLoading = true;
|
||||
|
@ -54,7 +60,7 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
|
|||
|
||||
window.scrollTo(0, 0);
|
||||
updateFilterControls();
|
||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
const pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
|
@ -64,35 +70,30 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
|
|||
sortButton: false,
|
||||
filterButton: false
|
||||
});
|
||||
var i;
|
||||
var length;
|
||||
var elems = tabContent.querySelectorAll('.paging');
|
||||
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
for (const elem of tabContent.querySelectorAll('.paging')) {
|
||||
elem.innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll('.btnNextPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onNextPageClick);
|
||||
for (const elem of tabContent.querySelectorAll('.btnNextPage')) {
|
||||
elem.addEventListener('click', onNextPageClick);
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll('.btnPreviousPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onPreviousPageClick);
|
||||
for (const elem of tabContent.querySelectorAll('.btnPreviousPage')) {
|
||||
elem.addEventListener('click', onPreviousPageClick);
|
||||
}
|
||||
|
||||
isLoading = false;
|
||||
loading.hide();
|
||||
|
||||
require(['autoFocuser'], function (autoFocuser) {
|
||||
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||
autoFocuser.autoFocus(tabContent);
|
||||
});
|
||||
}
|
||||
|
||||
function getItemsHtml(items) {
|
||||
var html;
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
const getItemsHtml = (items) => {
|
||||
let html;
|
||||
const viewStyle = this.getCurrentViewStyle();
|
||||
|
||||
if (viewStyle == 'Thumb') {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
|
@ -156,22 +157,22 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
|
|||
}
|
||||
|
||||
return html;
|
||||
}
|
||||
};
|
||||
|
||||
function initPage(tabContent) {
|
||||
const initPage = (tabContent) => {
|
||||
itemsContainer.fetchData = fetchData;
|
||||
itemsContainer.getItemsHtml = getItemsHtml;
|
||||
itemsContainer.afterRefresh = afterRefresh;
|
||||
var alphaPickerElement = tabContent.querySelector('.alphaPicker');
|
||||
let alphaPickerElement = tabContent.querySelector('.alphaPicker');
|
||||
|
||||
if (alphaPickerElement) {
|
||||
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
|
||||
var newValue = e.detail.value;
|
||||
let newValue = e.detail.value;
|
||||
query.NameStartsWithOrGreater = newValue;
|
||||
query.StartIndex = 0;
|
||||
itemsContainer.refreshItems();
|
||||
});
|
||||
self.alphaPicker = new AlphaPicker.default({
|
||||
this.alphaPicker = new AlphaPicker({
|
||||
element: alphaPickerElement,
|
||||
valueChangeEvent: 'click'
|
||||
});
|
||||
|
@ -181,14 +182,14 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
|
|||
itemsContainer.classList.add('padded-right-withalphapicker');
|
||||
}
|
||||
|
||||
var btnFilter = tabContent.querySelector('.btnFilter');
|
||||
const btnFilter = tabContent.querySelector('.btnFilter');
|
||||
|
||||
if (btnFilter) {
|
||||
btnFilter.addEventListener('click', function () {
|
||||
self.showFilterMenu();
|
||||
btnFilter.addEventListener('click', () => {
|
||||
this.showFilterMenu();
|
||||
});
|
||||
}
|
||||
var btnSort = tabContent.querySelector('.btnSort');
|
||||
const btnSort = tabContent.querySelector('.btnSort');
|
||||
|
||||
if (btnSort) {
|
||||
btnSort.addEventListener('click', function (e) {
|
||||
|
@ -231,24 +232,23 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
|
|||
});
|
||||
});
|
||||
}
|
||||
var btnSelectView = tabContent.querySelector('.btnSelectView');
|
||||
const btnSelectView = tabContent.querySelector('.btnSelectView');
|
||||
btnSelectView.addEventListener('click', function (e) {
|
||||
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(','));
|
||||
libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle, 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(','));
|
||||
});
|
||||
btnSelectView.addEventListener('layoutchange', function (e) {
|
||||
var viewStyle = e.detail.viewStyle;
|
||||
let viewStyle = e.detail.viewStyle;
|
||||
userSettings.set(savedViewKey, viewStyle);
|
||||
query.StartIndex = 0;
|
||||
onViewStyleChange();
|
||||
itemsContainer.refreshItems();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var self = this;
|
||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
var savedQueryKey = params.topParentId + '-' + options.mode;
|
||||
var savedViewKey = savedQueryKey + '-view';
|
||||
var query = {
|
||||
let itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
const savedQueryKey = params.topParentId + '-' + options.mode;
|
||||
const savedViewKey = savedQueryKey + '-view';
|
||||
let query = {
|
||||
SortBy: 'SortName,ProductionYear',
|
||||
SortOrder: 'Ascending',
|
||||
IncludeItemTypes: 'Movie',
|
||||
|
@ -264,7 +264,7 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
|
|||
query['Limit'] = userSettings.libraryPageSize();
|
||||
}
|
||||
|
||||
var isLoading = false;
|
||||
let isLoading = false;
|
||||
|
||||
if (options.mode === 'favorites') {
|
||||
query.IsFavorite = true;
|
||||
|
@ -272,14 +272,14 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
|
|||
|
||||
query = userSettings.loadQuerySettings(savedQueryKey, query);
|
||||
|
||||
self.showFilterMenu = function () {
|
||||
require(['components/filterdialog/filterdialog'], function ({default: filterDialogFactory}) {
|
||||
var filterDialog = new filterDialogFactory({
|
||||
this.showFilterMenu = function () {
|
||||
import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => {
|
||||
let filterDialog = new filterDialogFactory({
|
||||
query: query,
|
||||
mode: 'movies',
|
||||
serverId: ApiClient.serverId()
|
||||
});
|
||||
events.on(filterDialog, 'filterchange', function () {
|
||||
events.on(filterDialog, 'filterchange', () => {
|
||||
query.StartIndex = 0;
|
||||
itemsContainer.refreshItems();
|
||||
});
|
||||
|
@ -287,22 +287,23 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser',
|
|||
});
|
||||
};
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
this.getCurrentViewStyle = function () {
|
||||
return userSettings.get(savedViewKey) || 'Poster';
|
||||
};
|
||||
|
||||
self.initTab = function () {
|
||||
this.initTab = function () {
|
||||
initPage(tabContent);
|
||||
onViewStyleChange();
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
this.renderTab = function () {
|
||||
itemsContainer.refreshItems();
|
||||
updateFilterControls();
|
||||
};
|
||||
|
||||
self.destroy = function () {
|
||||
this.destroy = function () {
|
||||
itemsContainer = null;
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -1,7 +1,20 @@
|
|||
define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu', 'mainTabsManager', 'cardBuilder', 'dom', 'imageLoader', 'playbackManager', 'globalize', 'emby-scroller', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager, globalize) {
|
||||
'use strict';
|
||||
import events from 'events';
|
||||
import layoutManager from 'layoutManager';
|
||||
import inputManager from 'inputManager';
|
||||
import * as userSettings from 'userSettings';
|
||||
import libraryMenu from 'libraryMenu';
|
||||
import * as mainTabsManager from 'mainTabsManager';
|
||||
import cardBuilder from 'cardBuilder';
|
||||
import dom from 'dom';
|
||||
import imageLoader from 'imageLoader';
|
||||
import playbackManager from 'playbackManager';
|
||||
import globalize from 'globalize';
|
||||
import 'emby-scroller';
|
||||
import 'emby-itemscontainer';
|
||||
import 'emby-tabs';
|
||||
import 'emby-button';
|
||||
|
||||
playbackManager = playbackManager.default || playbackManager;
|
||||
/* eslint-disable indent */
|
||||
|
||||
function enableScrollX() {
|
||||
return !layoutManager.desktop;
|
||||
|
@ -16,7 +29,7 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
}
|
||||
|
||||
function loadLatest(page, userId, parentId) {
|
||||
var options = {
|
||||
const options = {
|
||||
IncludeItemTypes: 'Movie',
|
||||
Limit: 18,
|
||||
Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo',
|
||||
|
@ -26,8 +39,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
EnableTotalRecordCount: false
|
||||
};
|
||||
ApiClient.getJSON(ApiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) {
|
||||
var allowBottomPadding = !enableScrollX();
|
||||
var container = page.querySelector('#recentlyAddedItems');
|
||||
const allowBottomPadding = !enableScrollX();
|
||||
const container = page.querySelector('#recentlyAddedItems');
|
||||
cardBuilder.buildCards(items, {
|
||||
itemsContainer: container,
|
||||
shape: getPortraitShape(),
|
||||
|
@ -45,8 +58,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
}
|
||||
|
||||
function loadResume(page, userId, parentId) {
|
||||
var screenWidth = dom.getWindowSize().innerWidth;
|
||||
var options = {
|
||||
let screenWidth = dom.getWindowSize().innerWidth;
|
||||
const options = {
|
||||
SortBy: 'DatePlayed',
|
||||
SortOrder: 'Descending',
|
||||
IncludeItemTypes: 'Movie',
|
||||
|
@ -67,8 +80,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
page.querySelector('#resumableSection').classList.add('hide');
|
||||
}
|
||||
|
||||
var allowBottomPadding = !enableScrollX();
|
||||
var container = page.querySelector('#resumableItems');
|
||||
const allowBottomPadding = !enableScrollX();
|
||||
const container = page.querySelector('#resumableItems');
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: container,
|
||||
preferThumb: true,
|
||||
|
@ -88,8 +101,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
}
|
||||
|
||||
function getRecommendationHtml(recommendation) {
|
||||
var html = '';
|
||||
var title = '';
|
||||
let html = '';
|
||||
let title = '';
|
||||
|
||||
switch (recommendation.RecommendationType) {
|
||||
case 'SimilarToRecentlyPlayed':
|
||||
|
@ -113,7 +126,7 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
|
||||
html += '<div class="verticalSection">';
|
||||
html += '<h2 class="sectionTitle sectionTitle-cards padded-left">' + title + '</h2>';
|
||||
var allowBottomPadding = true;
|
||||
const allowBottomPadding = true;
|
||||
|
||||
if (enableScrollX()) {
|
||||
html += '<div is="emby-scroller" class="padded-top-focusscale padded-bottom-focusscale" data-mousewheel="false" data-centerfocus="true">';
|
||||
|
@ -141,8 +154,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
}
|
||||
|
||||
function loadSuggestions(page, userId, parentId) {
|
||||
var screenWidth = dom.getWindowSize().innerWidth;
|
||||
var url = ApiClient.getUrl('Movies/Recommendations', {
|
||||
let screenWidth = dom.getWindowSize().innerWidth;
|
||||
let url = ApiClient.getUrl('Movies/Recommendations', {
|
||||
userId: userId,
|
||||
categoryLimit: 6,
|
||||
ItemLimit: screenWidth >= 1920 ? 8 : screenWidth >= 1600 ? 8 : screenWidth >= 1200 ? 6 : 5,
|
||||
|
@ -157,9 +170,9 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
return;
|
||||
}
|
||||
|
||||
var html = recommendations.map(getRecommendationHtml).join('');
|
||||
const html = recommendations.map(getRecommendationHtml).join('');
|
||||
page.querySelector('.noItemsMessage').classList.add('hide');
|
||||
var recs = page.querySelector('.recommendations');
|
||||
let recs = page.querySelector('.recommendations');
|
||||
recs.innerHTML = html;
|
||||
imageLoader.lazyChildren(recs);
|
||||
|
||||
|
@ -169,7 +182,7 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
}
|
||||
|
||||
function autoFocus(page) {
|
||||
require(['autoFocuser'], function (autoFocuser) {
|
||||
import('autoFocuser').then(({default: autoFocuser}) => {
|
||||
autoFocuser.autoFocus(page);
|
||||
});
|
||||
}
|
||||
|
@ -195,17 +208,16 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
}
|
||||
|
||||
function initSuggestedTab(page, tabContent) {
|
||||
var containers = tabContent.querySelectorAll('.itemsContainer');
|
||||
const containers = tabContent.querySelectorAll('.itemsContainer');
|
||||
|
||||
for (var i = 0, length = containers.length; i < length; i++) {
|
||||
setScrollClasses(containers[i], enableScrollX());
|
||||
for (const container of containers) {
|
||||
setScrollClasses(container, enableScrollX());
|
||||
}
|
||||
}
|
||||
|
||||
function loadSuggestionsTab(view, params, tabContent) {
|
||||
var parentId = params.topParentId;
|
||||
var userId = ApiClient.getCurrentUserId();
|
||||
console.debug('loadSuggestionsTab');
|
||||
const parentId = params.topParentId;
|
||||
const userId = ApiClient.getCurrentUserId();
|
||||
loadResume(tabContent, userId, parentId);
|
||||
loadLatest(tabContent, userId, parentId);
|
||||
loadSuggestions(tabContent, userId, parentId);
|
||||
|
@ -224,9 +236,6 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
name: globalize.translate('TabCollections')
|
||||
}, {
|
||||
name: globalize.translate('TabGenres')
|
||||
}, {
|
||||
name: globalize.translate('ButtonSearch'),
|
||||
cssClass: 'searchTabButton'
|
||||
}];
|
||||
}
|
||||
|
||||
|
@ -249,13 +258,13 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
}
|
||||
}
|
||||
|
||||
return function (view, params) {
|
||||
export default function (view, params) {
|
||||
function onBeforeTabChange(e) {
|
||||
preLoadTab(view, parseInt(e.detail.selectedTabIndex));
|
||||
}
|
||||
|
||||
function onTabChange(e) {
|
||||
var newIndex = parseInt(e.detail.selectedTabIndex);
|
||||
const newIndex = parseInt(e.detail.selectedTabIndex);
|
||||
loadTab(view, newIndex);
|
||||
}
|
||||
|
||||
|
@ -267,52 +276,50 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
mainTabsManager.setTabs(view, currentTabIndex, getTabs, getTabContainers, onBeforeTabChange, onTabChange);
|
||||
}
|
||||
|
||||
function getTabController(page, index, callback) {
|
||||
var depends = [];
|
||||
const getTabController = (page, index, callback) => {
|
||||
let depends = '';
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
depends.push('controllers/movies/movies');
|
||||
depends = 'controllers/movies/movies';
|
||||
break;
|
||||
|
||||
case 1:
|
||||
depends = 'controllers/movies/moviesrecommended.js';
|
||||
break;
|
||||
|
||||
case 2:
|
||||
depends.push('controllers/movies/movietrailers');
|
||||
depends = 'controllers/movies/movietrailers';
|
||||
break;
|
||||
|
||||
case 3:
|
||||
depends.push('controllers/movies/movies');
|
||||
depends = 'controllers/movies/movies';
|
||||
break;
|
||||
|
||||
case 4:
|
||||
depends.push('controllers/movies/moviecollections');
|
||||
depends = 'controllers/movies/moviecollections';
|
||||
break;
|
||||
|
||||
case 5:
|
||||
depends.push('controllers/movies/moviegenres');
|
||||
depends = 'controllers/movies/moviegenres';
|
||||
break;
|
||||
|
||||
case 6:
|
||||
depends.push('scripts/searchtab');
|
||||
}
|
||||
|
||||
require(depends, function (controllerFactory) {
|
||||
var tabContent;
|
||||
import(depends).then(({default: controllerFactory}) => {
|
||||
let tabContent;
|
||||
|
||||
if (index === suggestionsTabIndex) {
|
||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||
self.tabContent = tabContent;
|
||||
this.tabContent = tabContent;
|
||||
}
|
||||
|
||||
var controller = tabControllers[index];
|
||||
let controller = tabControllers[index];
|
||||
|
||||
if (!controller) {
|
||||
tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']");
|
||||
|
||||
if (index === suggestionsTabIndex) {
|
||||
controller = self;
|
||||
controller = this;
|
||||
} else if (index === 6) {
|
||||
controller = new controllerFactory(view, tabContent, {
|
||||
collectionType: 'movies',
|
||||
|
@ -335,7 +342,7 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
|
||||
callback(controller);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function preLoadTab(page, index) {
|
||||
getTabController(page, index, function (controller) {
|
||||
|
@ -347,12 +354,12 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
|
||||
function loadTab(page, index) {
|
||||
currentTabIndex = index;
|
||||
getTabController(page, index, function (controller) {
|
||||
getTabController(page, index, ((controller) => {
|
||||
if (renderedTabs.indexOf(index) == -1) {
|
||||
renderedTabs.push(index);
|
||||
controller.renderTab();
|
||||
}
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
||||
function onPlaybackStop(e, state) {
|
||||
|
@ -370,22 +377,21 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
}
|
||||
}
|
||||
|
||||
var self = this;
|
||||
var currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId));
|
||||
var suggestionsTabIndex = 1;
|
||||
let currentTabIndex = parseInt(params.tab || getDefaultTabIndex(params.topParentId));
|
||||
const suggestionsTabIndex = 1;
|
||||
|
||||
self.initTab = function () {
|
||||
var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
this.initTab = function () {
|
||||
let tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
initSuggestedTab(view, tabContent);
|
||||
};
|
||||
|
||||
self.renderTab = function () {
|
||||
var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
this.renderTab = function () {
|
||||
let tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
loadSuggestionsTab(view, params, tabContent);
|
||||
};
|
||||
|
||||
var tabControllers = [];
|
||||
var renderedTabs = [];
|
||||
let tabControllers = [];
|
||||
let renderedTabs = [];
|
||||
view.addEventListener('viewshow', function (e) {
|
||||
initTabs();
|
||||
if (!view.getAttribute('data-title')) {
|
||||
|
@ -405,15 +411,14 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu'
|
|||
events.on(playbackManager, 'playbackstop', onPlaybackStop);
|
||||
inputManager.on(window, onInputCommand);
|
||||
});
|
||||
view.addEventListener('viewbeforehide', function (e) {
|
||||
view.addEventListener('viewbeforehide', function () {
|
||||
inputManager.off(window, onInputCommand);
|
||||
});
|
||||
view.addEventListener('viewdestroy', function (e) {
|
||||
tabControllers.forEach(function (t) {
|
||||
if (t.destroy) {
|
||||
t.destroy();
|
||||
for (const tabController of tabControllers) {
|
||||
if (tabController.destroy) {
|
||||
tabController.destroy();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, userSettings, globalize) {
|
||||
'use strict';
|
||||
import loading from 'loading';
|
||||
import events from 'events';
|
||||
import libraryBrowser from 'libraryBrowser';
|
||||
import imageLoader from 'imageLoader';
|
||||
import AlphaPicker from 'alphaPicker';
|
||||
import listView from 'listView';
|
||||
import cardBuilder from 'cardBuilder';
|
||||
import * as userSettings from 'userSettings';
|
||||
import globalize from 'globalize';
|
||||
import 'emby-itemscontainer';
|
||||
|
||||
loading = loading.default || loading;
|
||||
libraryBrowser = libraryBrowser.default || libraryBrowser;
|
||||
/* eslint-disable indent */
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
export default function (view, params, tabContent) {
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context);
|
||||
var pageData = data[key];
|
||||
const key = getSavedQueryKey(context);
|
||||
let pageData = data[key];
|
||||
|
||||
if (!pageData) {
|
||||
pageData = data[key] = {
|
||||
|
@ -46,11 +53,11 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
|||
return context.savedQueryKey;
|
||||
}
|
||||
|
||||
function reloadItems() {
|
||||
const reloadItems = () => {
|
||||
loading.show();
|
||||
isLoading = true;
|
||||
var query = getQuery(tabContent);
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function (result) {
|
||||
const query = getQuery(tabContent);
|
||||
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then((result) => {
|
||||
function onNextPageClick() {
|
||||
if (isLoading) {
|
||||
return;
|
||||
|
@ -75,7 +82,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
|||
|
||||
window.scrollTo(0, 0);
|
||||
updateFilterControls(tabContent);
|
||||
var pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
const pagingHtml = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
|
@ -85,8 +92,8 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
|||
sortButton: false,
|
||||
filterButton: false
|
||||
});
|
||||
var html;
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
let html;
|
||||
const viewStyle = this.getCurrentViewStyle();
|
||||
|
||||
if (viewStyle == 'Thumb') {
|
||||
html = cardBuilder.getCardsHtml({
|
||||
|
@ -142,22 +149,20 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
|||
});
|
||||
}
|
||||
|
||||
var i;
|
||||
var length;
|
||||
var elems = tabContent.querySelectorAll('.paging');
|
||||
let elems = tabContent.querySelectorAll('.paging');
|
||||
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].innerHTML = pagingHtml;
|
||||
for (const elem of elems) {
|
||||
elem.innerHTML = pagingHtml;
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll('.btnNextPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onNextPageClick);
|
||||
for (const elem of elems) {
|
||||
elem.addEventListener('click', onNextPageClick);
|
||||
}
|
||||
|
||||
elems = tabContent.querySelectorAll('.btnPreviousPage');
|
||||
for (i = 0, length = elems.length; i < length; i++) {
|
||||
elems[i].addEventListener('click', onPreviousPageClick);
|
||||
for (const elem of elems) {
|
||||
elem.addEventListener('click', onPreviousPageClick);
|
||||
}
|
||||
|
||||
if (!result.Items.length) {
|
||||
|
@ -169,27 +174,26 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
|||
html += '</div>';
|
||||
}
|
||||
|
||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
itemsContainer.innerHTML = html;
|
||||
imageLoader.lazyChildren(itemsContainer);
|
||||
libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent), query);
|
||||
loading.hide();
|
||||
isLoading = false;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function updateFilterControls(tabContent) {
|
||||
var query = getQuery(tabContent);
|
||||
self.alphaPicker.value(query.NameStartsWithOrGreater);
|
||||
}
|
||||
const updateFilterControls = (tabContent) => {
|
||||
const query = getQuery(tabContent);
|
||||
this.alphaPicker.value(query.NameStartsWithOrGreater);
|
||||
};
|
||||
|
||||
var self = this;
|
||||
var data = {};
|
||||
var isLoading = false;
|
||||
const data = {};
|
||||
let isLoading = false;
|
||||
|
||||
self.showFilterMenu = function () {
|
||||
require(['components/filterdialog/filterdialog'], function ({default: filterDialogFactory}) {
|
||||
var filterDialog = new filterDialogFactory({
|
||||
this.showFilterMenu = function () {
|
||||
import('components/filterdialog/filterdialog').then(({default: filterDialogFactory}) => {
|
||||
const filterDialog = new filterDialogFactory({
|
||||
query: getQuery(tabContent),
|
||||
mode: 'movies',
|
||||
serverId: ApiClient.serverId()
|
||||
|
@ -202,21 +206,21 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
|||
});
|
||||
};
|
||||
|
||||
self.getCurrentViewStyle = function () {
|
||||
this.getCurrentViewStyle = function () {
|
||||
return getPageData(tabContent).view;
|
||||
};
|
||||
|
||||
function initPage(tabContent) {
|
||||
var alphaPickerElement = tabContent.querySelector('.alphaPicker');
|
||||
var itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
const initPage = (tabContent) => {
|
||||
const alphaPickerElement = tabContent.querySelector('.alphaPicker');
|
||||
const itemsContainer = tabContent.querySelector('.itemsContainer');
|
||||
alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
|
||||
var newValue = e.detail.value;
|
||||
var query = getQuery(tabContent);
|
||||
const newValue = e.detail.value;
|
||||
const query = getQuery(tabContent);
|
||||
query.NameStartsWithOrGreater = newValue;
|
||||
query.StartIndex = 0;
|
||||
reloadItems();
|
||||
});
|
||||
self.alphaPicker = new AlphaPicker.default({
|
||||
this.alphaPicker = new AlphaPicker({
|
||||
element: alphaPickerElement,
|
||||
valueChangeEvent: 'click'
|
||||
});
|
||||
|
@ -226,7 +230,7 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
|||
itemsContainer.classList.add('padded-right-withalphapicker');
|
||||
|
||||
tabContent.querySelector('.btnFilter').addEventListener('click', function () {
|
||||
self.showFilterMenu();
|
||||
this.showFilterMenu();
|
||||
});
|
||||
tabContent.querySelector('.btnSort').addEventListener('click', function (e) {
|
||||
libraryBrowser.showSortMenu({
|
||||
|
@ -260,15 +264,16 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', '
|
|||
button: e.target
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
initPage(tabContent);
|
||||
|
||||
self.renderTab = function () {
|
||||
this.renderTab = function () {
|
||||
reloadItems();
|
||||
updateFilterControls(tabContent);
|
||||
};
|
||||
|
||||
self.destroy = function () {};
|
||||
};
|
||||
});
|
||||
this.destroy = function () {};
|
||||
}
|
||||
|
||||
/* eslint-enable indent */
|
||||
|
|
|
@ -191,9 +191,6 @@ import 'flexStyles';
|
|||
name: globalize.translate('TabSongs')
|
||||
}, {
|
||||
name: globalize.translate('TabGenres')
|
||||
}, {
|
||||
name: globalize.translate('ButtonSearch'),
|
||||
cssClass: 'searchTabButton'
|
||||
}];
|
||||
}
|
||||
|
||||
|
@ -295,10 +292,6 @@ import 'flexStyles';
|
|||
case 6:
|
||||
depends = 'controllers/music/musicgenres';
|
||||
break;
|
||||
|
||||
case 7:
|
||||
depends = 'scripts/searchtab';
|
||||
break;
|
||||
}
|
||||
|
||||
import(depends).then(({default: controllerFactory}) => {
|
||||
|
|
|
@ -30,9 +30,6 @@ import 'emby-button';
|
|||
name: globalize.translate('TabNetworks')
|
||||
}, {
|
||||
name: globalize.translate('TabEpisodes')
|
||||
}, {
|
||||
name: globalize.translate('ButtonSearch'),
|
||||
cssClass: 'searchTabButton'
|
||||
}];
|
||||
}
|
||||
|
||||
|
@ -217,10 +214,6 @@ import 'emby-button';
|
|||
case 6:
|
||||
depends = 'controllers/shows/episodes';
|
||||
break;
|
||||
|
||||
case 7:
|
||||
depends = 'scripts/searchtab';
|
||||
break;
|
||||
}
|
||||
|
||||
import(depends).then(({default: controllerFactory}) => {
|
||||
|
|
|
@ -230,3 +230,18 @@
|
|||
margin: 0;
|
||||
padding: 0.5em 0.75em;
|
||||
}
|
||||
|
||||
/* FIXME: 'sliderContainer' is used to wrap slider's pieces */
|
||||
.sliderContainer-settings {
|
||||
margin-bottom: 1.8em;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sliderContainer-settings .mdl-slider-container {
|
||||
height: 2.83em; /* similar to emby-input with its 110% font-size */
|
||||
}
|
||||
|
||||
.sliderLabel {
|
||||
display: block;
|
||||
margin-bottom: 0.25em;
|
||||
}
|
||||
|
|
|
@ -150,6 +150,16 @@ import 'emby-input';
|
|||
this.classList.add('show-focus');
|
||||
}
|
||||
|
||||
const topContainer = dom.parentWithClass(this, 'sliderContainer-settings');
|
||||
|
||||
if (topContainer && this.getAttribute('label')) {
|
||||
const label = this.ownerDocument.createElement('label');
|
||||
label.innerHTML = this.getAttribute('label');
|
||||
label.classList.add('sliderLabel');
|
||||
label.htmlFor = this.id;
|
||||
topContainer.insertBefore(label, topContainer.firstChild);
|
||||
}
|
||||
|
||||
const containerElement = this.parentNode;
|
||||
containerElement.classList.add('mdl-slider-container');
|
||||
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, dom) {
|
||||
"use strict";
|
||||
/* Cleaning this file properly is not neecessary, since it's an outdated library
|
||||
* and will be replaced soon by a Vue component.
|
||||
*/
|
||||
|
||||
browser = browser.default || browser;
|
||||
import browser from 'browser';
|
||||
import dom from 'dom';
|
||||
import 'css!./navdrawer';
|
||||
import 'scrollStyles';
|
||||
|
||||
return function (options) {
|
||||
export default function (options) {
|
||||
function getTouches(e) {
|
||||
return e.changedTouches || e.targetTouches || e.touches;
|
||||
}
|
||||
|
||||
function onMenuTouchStart(e) {
|
||||
options.target.classList.remove("transition");
|
||||
options.target.classList.remove('transition');
|
||||
var touches = getTouches(e);
|
||||
var touch = touches[0] || {};
|
||||
menuTouchStartX = touch.clientX;
|
||||
|
@ -32,27 +36,27 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
var deltaY = endY - (menuTouchStartY || 0);
|
||||
setVelocity(deltaX);
|
||||
|
||||
if (isOpen && 1 !== dragMode && deltaX > 0) {
|
||||
if (isOpen && dragMode !== 1 && deltaX > 0) {
|
||||
dragMode = 2;
|
||||
}
|
||||
|
||||
if (0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5) {
|
||||
if (dragMode === 0 && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5) {
|
||||
dragMode = 1;
|
||||
scrollContainer.addEventListener("scroll", disableEvent);
|
||||
scrollContainer.addEventListener('scroll', disableEvent);
|
||||
self.showMask();
|
||||
} else if (0 === dragMode && Math.abs(deltaY) >= 5) {
|
||||
} else if (dragMode === 0 && Math.abs(deltaY) >= 5) {
|
||||
dragMode = 2;
|
||||
}
|
||||
|
||||
if (1 === dragMode) {
|
||||
if (dragMode === 1) {
|
||||
newPos = currentPos + deltaX;
|
||||
self.changeMenuPos();
|
||||
}
|
||||
}
|
||||
|
||||
function onMenuTouchEnd(e) {
|
||||
options.target.classList.add("transition");
|
||||
scrollContainer.removeEventListener("scroll", disableEvent);
|
||||
options.target.classList.add('transition');
|
||||
scrollContainer.removeEventListener('scroll', disableEvent);
|
||||
dragMode = 0;
|
||||
var touches = getTouches(e);
|
||||
var touch = touches[0] || {};
|
||||
|
@ -71,9 +75,9 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
if (((getTouches(e)[0] || {}).clientX || 0) <= options.handleSize) {
|
||||
isPeeking = true;
|
||||
|
||||
if (e.type === "touchstart") {
|
||||
dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
||||
dom.addEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
||||
if (e.type === 'touchstart') {
|
||||
dom.removeEventListener(edgeContainer, 'touchmove', onEdgeTouchMove, {});
|
||||
dom.addEventListener(edgeContainer, 'touchmove', onEdgeTouchMove, {});
|
||||
}
|
||||
|
||||
onMenuTouchStart(e);
|
||||
|
@ -90,7 +94,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
function onEdgeTouchEnd(e) {
|
||||
if (isPeeking) {
|
||||
isPeeking = false;
|
||||
dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
||||
dom.removeEventListener(edgeContainer, 'touchmove', onEdgeTouchMove, {});
|
||||
onMenuTouchEnd(e);
|
||||
}
|
||||
}
|
||||
|
@ -144,8 +148,8 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
function onMaskTransitionEnd() {
|
||||
var classList = mask.classList;
|
||||
|
||||
if (!classList.contains("backdrop")) {
|
||||
classList.add("hide");
|
||||
if (!classList.contains('backdrop')) {
|
||||
classList.add('hide');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -157,10 +161,10 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
var startPoint = 0;
|
||||
var countStart = 0;
|
||||
var velocity = 0;
|
||||
options.target.classList.add("transition");
|
||||
options.target.classList.add('transition');
|
||||
var dragMode = 0;
|
||||
var scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer");
|
||||
scrollContainer.classList.add("scrollY");
|
||||
var scrollContainer = options.target.querySelector('.mainDrawer-scrollContainer');
|
||||
scrollContainer.classList.add('scrollY');
|
||||
|
||||
var TouchMenuLA = function () {
|
||||
self = this;
|
||||
|
@ -175,13 +179,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
};
|
||||
|
||||
TouchMenuLA.prototype.initElements = function () {
|
||||
options.target.classList.add("touch-menu-la");
|
||||
options.target.style.width = options.width + "px";
|
||||
options.target.style.left = -options.width + "px";
|
||||
options.target.classList.add('touch-menu-la');
|
||||
options.target.style.width = options.width + 'px';
|
||||
options.target.style.left = -options.width + 'px';
|
||||
|
||||
if (!options.disableMask) {
|
||||
mask = document.createElement("div");
|
||||
mask.className = "tmla-mask hide";
|
||||
mask = document.createElement('div');
|
||||
mask.className = 'tmla-mask hide';
|
||||
document.body.appendChild(mask);
|
||||
dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, {
|
||||
passive: true
|
||||
|
@ -192,12 +196,12 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
var menuTouchStartX;
|
||||
var menuTouchStartY;
|
||||
var menuTouchStartTime;
|
||||
var edgeContainer = document.querySelector(".mainDrawerHandle");
|
||||
var edgeContainer = document.querySelector('.mainDrawerHandle');
|
||||
var isPeeking = false;
|
||||
|
||||
TouchMenuLA.prototype.animateToPosition = function (pos) {
|
||||
requestAnimationFrame(function () {
|
||||
options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none";
|
||||
options.target.style.transform = pos ? 'translateX(' + pos + 'px)' : 'none';
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -208,7 +212,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
};
|
||||
|
||||
TouchMenuLA.prototype.clickMaskClose = function () {
|
||||
mask.addEventListener("click", function () {
|
||||
mask.addEventListener('click', function () {
|
||||
self.close();
|
||||
});
|
||||
};
|
||||
|
@ -235,7 +239,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
this.animateToPosition(options.width);
|
||||
currentPos = options.width;
|
||||
this.isVisible = true;
|
||||
options.target.classList.add("drawer-open");
|
||||
options.target.classList.add('drawer-open');
|
||||
self.showMask();
|
||||
self.invoke(options.onChange);
|
||||
};
|
||||
|
@ -244,7 +248,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
this.animateToPosition(0);
|
||||
currentPos = 0;
|
||||
self.isVisible = false;
|
||||
options.target.classList.remove("drawer-open");
|
||||
options.target.classList.remove('drawer-open');
|
||||
self.hideMask();
|
||||
self.invoke(options.onChange);
|
||||
};
|
||||
|
@ -261,13 +265,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
var backgroundTouchStartTime;
|
||||
|
||||
TouchMenuLA.prototype.showMask = function () {
|
||||
mask.classList.remove("hide");
|
||||
mask.classList.add("backdrop");
|
||||
mask.classList.remove('hide');
|
||||
mask.classList.add('backdrop');
|
||||
};
|
||||
|
||||
TouchMenuLA.prototype.hideMask = function () {
|
||||
mask.classList.add("hide");
|
||||
mask.classList.remove("backdrop");
|
||||
mask.classList.add('hide');
|
||||
mask.classList.remove('backdrop');
|
||||
};
|
||||
|
||||
TouchMenuLA.prototype.invoke = function (fn) {
|
||||
|
@ -284,26 +288,26 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
if (enabled) {
|
||||
if (!_edgeSwipeEnabled) {
|
||||
_edgeSwipeEnabled = true;
|
||||
dom.addEventListener(edgeContainer, "touchstart", onEdgeTouchStart, {
|
||||
dom.addEventListener(edgeContainer, 'touchstart', onEdgeTouchStart, {
|
||||
passive: true
|
||||
});
|
||||
dom.addEventListener(edgeContainer, "touchend", onEdgeTouchEnd, {
|
||||
dom.addEventListener(edgeContainer, 'touchend', onEdgeTouchEnd, {
|
||||
passive: true
|
||||
});
|
||||
dom.addEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, {
|
||||
dom.addEventListener(edgeContainer, 'touchcancel', onEdgeTouchEnd, {
|
||||
passive: true
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (_edgeSwipeEnabled) {
|
||||
_edgeSwipeEnabled = false;
|
||||
dom.removeEventListener(edgeContainer, "touchstart", onEdgeTouchStart, {
|
||||
dom.removeEventListener(edgeContainer, 'touchstart', onEdgeTouchStart, {
|
||||
passive: true
|
||||
});
|
||||
dom.removeEventListener(edgeContainer, "touchend", onEdgeTouchEnd, {
|
||||
dom.removeEventListener(edgeContainer, 'touchend', onEdgeTouchEnd, {
|
||||
passive: true
|
||||
});
|
||||
dom.removeEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, {
|
||||
dom.removeEventListener(edgeContainer, 'touchcancel', onEdgeTouchEnd, {
|
||||
passive: true
|
||||
});
|
||||
}
|
||||
|
@ -322,26 +326,26 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
self.initElements();
|
||||
|
||||
if (browser.touch) {
|
||||
dom.addEventListener(options.target, "touchstart", onMenuTouchStart, {
|
||||
dom.addEventListener(options.target, 'touchstart', onMenuTouchStart, {
|
||||
passive: true
|
||||
});
|
||||
dom.addEventListener(options.target, "touchmove", onMenuTouchMove, {
|
||||
dom.addEventListener(options.target, 'touchmove', onMenuTouchMove, {
|
||||
passive: true
|
||||
});
|
||||
dom.addEventListener(options.target, "touchend", onMenuTouchEnd, {
|
||||
dom.addEventListener(options.target, 'touchend', onMenuTouchEnd, {
|
||||
passive: true
|
||||
});
|
||||
dom.addEventListener(options.target, "touchcancel", onMenuTouchEnd, {
|
||||
dom.addEventListener(options.target, 'touchcancel', onMenuTouchEnd, {
|
||||
passive: true
|
||||
});
|
||||
dom.addEventListener(mask, "touchstart", onBackgroundTouchStart, {
|
||||
dom.addEventListener(mask, 'touchstart', onBackgroundTouchStart, {
|
||||
passive: true
|
||||
});
|
||||
dom.addEventListener(mask, "touchmove", onBackgroundTouchMove, {});
|
||||
dom.addEventListener(mask, "touchend", onBackgroundTouchEnd, {
|
||||
dom.addEventListener(mask, 'touchmove', onBackgroundTouchMove, {});
|
||||
dom.addEventListener(mask, 'touchend', onBackgroundTouchEnd, {
|
||||
passive: true
|
||||
});
|
||||
dom.addEventListener(mask, "touchcancel", onBackgroundTouchEnd, {
|
||||
dom.addEventListener(mask, 'touchcancel', onBackgroundTouchEnd, {
|
||||
passive: true
|
||||
});
|
||||
}
|
||||
|
@ -350,5 +354,4 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
|||
};
|
||||
|
||||
return new TouchMenuLA();
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,16 +1,22 @@
|
|||
define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'scrollStyles'], function (browser, layoutManager, dom, focusManager, ResizeObserver) {
|
||||
'use strict';
|
||||
/* Cleaning this file properly is not neecessary, since it's an outdated library
|
||||
* and will be replaced soon by a Vue component.
|
||||
*/
|
||||
|
||||
browser = browser.default || browser;
|
||||
import browser from 'browser';
|
||||
import layoutManager from 'layoutManager';
|
||||
import dom from 'dom';
|
||||
import focusManager from 'focusManager';
|
||||
import ResizeObserver from 'ResizeObserver';
|
||||
import 'scrollStyles';
|
||||
|
||||
/**
|
||||
/**
|
||||
* Return type of the value.
|
||||
*
|
||||
* @param {Mixed} value
|
||||
*
|
||||
* @return {String}
|
||||
*/
|
||||
function type(value) {
|
||||
function type(value) {
|
||||
if (value == null) {
|
||||
return String(value);
|
||||
}
|
||||
|
@ -20,23 +26,23 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
}
|
||||
|
||||
return typeof value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Disables an event it was triggered on and unbinds itself.
|
||||
*
|
||||
* @param {Event} event
|
||||
*
|
||||
* @return {Void}
|
||||
*/
|
||||
function disableOneEvent(event) {
|
||||
function disableOneEvent(event) {
|
||||
/*jshint validthis:true */
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
this.removeEventListener(event.type, disableOneEvent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Make sure that number is within the limits.
|
||||
*
|
||||
* @param {Number} number
|
||||
|
@ -45,28 +51,17 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
*
|
||||
* @return {Number}
|
||||
*/
|
||||
function within(number, min, max) {
|
||||
function within(number, min, max) {
|
||||
return number < min ? min : number > max ? max : number;
|
||||
}
|
||||
}
|
||||
|
||||
// Other global values
|
||||
var dragMouseEvents = ['mousemove', 'mouseup'];
|
||||
var dragTouchEvents = ['touchmove', 'touchend'];
|
||||
var wheelEvent = (document.implementation.hasFeature('Event.wheel', '3.0') ? 'wheel' : 'mousewheel');
|
||||
var interactiveElements = ['INPUT', 'SELECT', 'TEXTAREA'];
|
||||
var tmpArray = [];
|
||||
var time;
|
||||
|
||||
// Math shorthands
|
||||
var abs = Math.abs;
|
||||
var sqrt = Math.sqrt;
|
||||
var pow = Math.pow;
|
||||
var round = Math.round;
|
||||
var max = Math.max;
|
||||
var min = Math.min;
|
||||
|
||||
var scrollerFactory = function (frame, options) {
|
||||
// Other global values
|
||||
var dragMouseEvents = ['mousemove', 'mouseup'];
|
||||
var dragTouchEvents = ['touchmove', 'touchend'];
|
||||
var wheelEvent = (document.implementation.hasFeature('Event.wheel', '3.0') ? 'wheel' : 'mousewheel');
|
||||
var interactiveElements = ['INPUT', 'SELECT', 'TEXTAREA'];
|
||||
|
||||
var scrollerFactory = function (frame, options) {
|
||||
// Extend options
|
||||
var o = Object.assign({}, {
|
||||
slidee: null, // Selector, DOM element, or jQuery object with DOM element representing SLIDEE.
|
||||
|
@ -99,11 +94,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
// native smooth scroll
|
||||
options.enableNativeScroll = true;
|
||||
} else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) {
|
||||
|
||||
// transform is the only way to guarantee animation
|
||||
options.enableNativeScroll = false;
|
||||
} else if (!layoutManager.tv || !browser.animate) {
|
||||
|
||||
options.enableNativeScroll = true;
|
||||
}
|
||||
|
||||
|
@ -164,9 +157,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
var frameSize = 0;
|
||||
var slideeSize = 0;
|
||||
function ensureSizeInfo() {
|
||||
|
||||
if (requiresReflow) {
|
||||
|
||||
requiresReflow = false;
|
||||
|
||||
// Reset global variables
|
||||
|
@ -175,7 +166,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
slideeSize = o.scrollWidth || Math.max(slideeElement[o.horizontal ? 'offsetWidth' : 'offsetHeight'], slideeElement[o.horizontal ? 'scrollWidth' : 'scrollHeight']);
|
||||
|
||||
// Set position limits & relativess
|
||||
self._pos.end = max(slideeSize - frameSize, 0);
|
||||
self._pos.end = Math.max(slideeSize - frameSize, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -188,11 +179,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
* @return {Void}
|
||||
*/
|
||||
function load(isInit) {
|
||||
|
||||
requiresReflow = true;
|
||||
|
||||
if (!isInit) {
|
||||
|
||||
ensureSizeInfo();
|
||||
|
||||
// Fix possible overflowing
|
||||
|
@ -202,7 +191,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
}
|
||||
|
||||
function initFrameResizeObserver() {
|
||||
|
||||
var observerOptions = {};
|
||||
|
||||
self.frameResizeObserver = new ResizeObserver(onResize, observerOptions);
|
||||
|
@ -227,16 +215,13 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
};
|
||||
|
||||
function nativeScrollTo(container, pos, immediate) {
|
||||
|
||||
if (container.scroll) {
|
||||
if (o.horizontal) {
|
||||
|
||||
container.scroll({
|
||||
left: pos,
|
||||
behavior: immediate ? 'instant' : 'smooth'
|
||||
});
|
||||
} else {
|
||||
|
||||
container.scroll({
|
||||
top: pos,
|
||||
behavior: immediate ? 'instant' : 'smooth'
|
||||
|
@ -268,14 +253,12 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
* @return {Void}
|
||||
*/
|
||||
self.slideTo = function (newPos, immediate, fullItemPos) {
|
||||
|
||||
ensureSizeInfo();
|
||||
var pos = self._pos;
|
||||
|
||||
newPos = within(newPos, pos.start, pos.end);
|
||||
|
||||
if (!transform) {
|
||||
|
||||
nativeScrollTo(nativeScrollElement, newPos, immediate);
|
||||
return;
|
||||
}
|
||||
|
@ -293,7 +276,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
}
|
||||
|
||||
if (!immediate && o.skipSlideToWhenVisible && fullItemPos && fullItemPos.isVisible) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -305,7 +287,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
};
|
||||
|
||||
function setStyleProperty(elem, name, value, speed, resetTransition) {
|
||||
|
||||
var style = elem.style;
|
||||
|
||||
if (resetTransition || browser.edge) {
|
||||
|
@ -327,7 +308,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
}
|
||||
|
||||
function renderAnimateWithTransform(fromPosition, toPosition, immediate) {
|
||||
|
||||
var speed = o.speed;
|
||||
|
||||
if (immediate) {
|
||||
|
@ -335,9 +315,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
}
|
||||
|
||||
if (o.horizontal) {
|
||||
setStyleProperty(slideeElement, 'transform', 'translateX(' + (-round(toPosition)) + 'px)', speed);
|
||||
setStyleProperty(slideeElement, 'transform', 'translateX(' + (-Math.round(toPosition)) + 'px)', speed);
|
||||
} else {
|
||||
setStyleProperty(slideeElement, 'transform', 'translateY(' + (-round(toPosition)) + 'px)', speed);
|
||||
setStyleProperty(slideeElement, 'transform', 'translateY(' + (-Math.round(toPosition)) + 'px)', speed);
|
||||
}
|
||||
self._pos.cur = toPosition;
|
||||
|
||||
|
@ -345,7 +325,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
}
|
||||
|
||||
function getBoundingClientRect(elem) {
|
||||
|
||||
// Support: BlackBerry 5, iOS 3 (original iPhone)
|
||||
// If we don't have gBCR, just use 0,0 rather than error
|
||||
if (elem.getBoundingClientRect) {
|
||||
|
@ -363,14 +342,10 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
* @return {Object}
|
||||
*/
|
||||
self.getPos = function (item) {
|
||||
|
||||
var scrollElement = transform ? slideeElement : nativeScrollElement;
|
||||
var slideeOffset = getBoundingClientRect(scrollElement);
|
||||
var itemOffset = getBoundingClientRect(item);
|
||||
|
||||
var slideeStartPos = o.horizontal ? slideeOffset.left : slideeOffset.top;
|
||||
var slideeEndPos = o.horizontal ? slideeOffset.right : slideeOffset.bottom;
|
||||
|
||||
var offset = o.horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top;
|
||||
|
||||
var size = o.horizontal ? itemOffset.width : itemOffset.height;
|
||||
|
@ -407,7 +382,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
};
|
||||
|
||||
self.getCenterPosition = function (item) {
|
||||
|
||||
ensureSizeInfo();
|
||||
|
||||
var pos = self.getPos(item);
|
||||
|
@ -452,7 +426,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
|
||||
// Bind dragging events
|
||||
if (transform) {
|
||||
|
||||
if (isTouch) {
|
||||
dragTouchEvents.forEach(function (eventName) {
|
||||
dom.addEventListener(document, eventName, dragHandler, {
|
||||
|
@ -481,7 +454,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
var pointer = dragging.touch ? event[dragging.released ? 'changedTouches' : 'touches'][0] : event;
|
||||
dragging.pathX = pointer.pageX - dragging.initX;
|
||||
dragging.pathY = pointer.pageY - dragging.initY;
|
||||
dragging.path = sqrt(pow(dragging.pathX, 2) + pow(dragging.pathY, 2));
|
||||
dragging.path = Math.sqrt(Math.pow(dragging.pathX, 2) + Math.pow(dragging.pathY, 2));
|
||||
dragging.delta = o.horizontal ? dragging.pathX : dragging.pathY;
|
||||
|
||||
if (!dragging.released && dragging.path < 1) {
|
||||
|
@ -498,7 +471,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
} else {
|
||||
// If dragging path is sufficiently long we can confidently start a drag
|
||||
// if drag is in different direction than scroll, ignore it
|
||||
if (o.horizontal ? abs(dragging.pathX) > abs(dragging.pathY) : abs(dragging.pathX) < abs(dragging.pathY)) {
|
||||
if (o.horizontal ? Math.abs(dragging.pathX) > Math.abs(dragging.pathY) : Math.abs(dragging.pathX) < Math.abs(dragging.pathY)) {
|
||||
dragging.init = 1;
|
||||
} else {
|
||||
return dragEnd();
|
||||
|
@ -519,7 +492,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
dragEnd();
|
||||
}
|
||||
|
||||
self.slideTo(round(dragging.initPos - dragging.delta));
|
||||
self.slideTo(Math.round(dragging.initPos - dragging.delta));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -556,9 +529,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
* @return {Boolean}
|
||||
*/
|
||||
function isInteractive(element) {
|
||||
|
||||
while (element) {
|
||||
|
||||
if (interactiveElements.indexOf(element.tagName) !== -1) {
|
||||
return true;
|
||||
}
|
||||
|
@ -594,7 +565,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
* @return {Void}
|
||||
*/
|
||||
function scrollHandler(event) {
|
||||
|
||||
ensureSizeInfo();
|
||||
var pos = self._pos;
|
||||
// Ignore if there is no scrolling to be done
|
||||
|
@ -611,7 +581,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
|
||||
self.slideBy(o.scrollBy * delta);
|
||||
} else {
|
||||
|
||||
if (isSmoothScrollSupported) {
|
||||
delta *= 12;
|
||||
}
|
||||
|
@ -630,7 +599,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
* @return {Void}
|
||||
*/
|
||||
self.destroy = function () {
|
||||
|
||||
if (self.frameResizeObserver) {
|
||||
self.frameResizeObserver.disconnect();
|
||||
self.frameResizeObserver = null;
|
||||
|
@ -666,11 +634,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
var contentRect = {};
|
||||
|
||||
function onResize(entries) {
|
||||
|
||||
var entry = entries[0];
|
||||
|
||||
if (entry) {
|
||||
|
||||
var newRect = entry.contentRect;
|
||||
|
||||
// handle element being hidden
|
||||
|
@ -679,7 +645,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
}
|
||||
|
||||
if (newRect.width !== contentRect.width || newRect.height !== contentRect.height) {
|
||||
|
||||
contentRect = newRect;
|
||||
|
||||
load(false);
|
||||
|
@ -705,7 +670,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
}
|
||||
|
||||
self.getScrollPosition = function () {
|
||||
|
||||
if (transform) {
|
||||
return self._pos.cur;
|
||||
}
|
||||
|
@ -718,7 +682,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
};
|
||||
|
||||
self.getScrollSize = function () {
|
||||
|
||||
if (transform) {
|
||||
return slideeSize;
|
||||
}
|
||||
|
@ -794,7 +757,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
initFrameResizeObserver();
|
||||
|
||||
if (transform) {
|
||||
|
||||
dom.addEventListener(dragSourceElement, 'touchstart', dragInitSlidee, {
|
||||
passive: true
|
||||
});
|
||||
|
@ -811,9 +773,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
passive: true
|
||||
});
|
||||
}
|
||||
|
||||
} else if (o.horizontal) {
|
||||
|
||||
// Don't bind to mouse events with vertical scroll since the mouse wheel can handle this natively
|
||||
|
||||
if (o.mouseWheel) {
|
||||
|
@ -838,9 +798,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
// Return instance
|
||||
return self;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
/**
|
||||
* Slide SLIDEE by amount of pixels.
|
||||
*
|
||||
* @param {Int} delta Pixels/Items. Positive means forward, negative means backward.
|
||||
|
@ -848,14 +808,14 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
*
|
||||
* @return {Void}
|
||||
*/
|
||||
scrollerFactory.prototype.slideBy = function (delta, immediate) {
|
||||
scrollerFactory.prototype.slideBy = function (delta, immediate) {
|
||||
if (!delta) {
|
||||
return;
|
||||
}
|
||||
this.slideTo(this._pos.dest + delta, immediate);
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
/**
|
||||
* Core method for handling `toLocation` methods.
|
||||
*
|
||||
* @param {String} location
|
||||
|
@ -864,7 +824,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
*
|
||||
* @return {Void}
|
||||
*/
|
||||
scrollerFactory.prototype.to = function (location, item, immediate) {
|
||||
scrollerFactory.prototype.to = function (location, item, immediate) {
|
||||
// Optional arguments logic
|
||||
if (type(item) === 'boolean') {
|
||||
immediate = item;
|
||||
|
@ -880,9 +840,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
this.slideTo(itemPos[location], immediate, itemPos);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
/**
|
||||
* Animate element or the whole SLIDEE to the start of the frame.
|
||||
*
|
||||
* @param {Mixed} item Item DOM element, or index starting at 0. Omitting will animate SLIDEE.
|
||||
|
@ -890,11 +850,11 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
*
|
||||
* @return {Void}
|
||||
*/
|
||||
scrollerFactory.prototype.toStart = function (item, immediate) {
|
||||
scrollerFactory.prototype.toStart = function (item, immediate) {
|
||||
this.to('start', item, immediate);
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
/**
|
||||
* Animate element or the whole SLIDEE to the end of the frame.
|
||||
*
|
||||
* @param {Mixed} item Item DOM element, or index starting at 0. Omitting will animate SLIDEE.
|
||||
|
@ -902,11 +862,11 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
*
|
||||
* @return {Void}
|
||||
*/
|
||||
scrollerFactory.prototype.toEnd = function (item, immediate) {
|
||||
scrollerFactory.prototype.toEnd = function (item, immediate) {
|
||||
this.to('end', item, immediate);
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
/**
|
||||
* Animate element or the whole SLIDEE to the center of the frame.
|
||||
*
|
||||
* @param {Mixed} item Item DOM element, or index starting at 0. Omitting will animate SLIDEE.
|
||||
|
@ -914,14 +874,13 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
|||
*
|
||||
* @return {Void}
|
||||
*/
|
||||
scrollerFactory.prototype.toCenter = function (item, immediate) {
|
||||
scrollerFactory.prototype.toCenter = function (item, immediate) {
|
||||
this.to('center', item, immediate);
|
||||
};
|
||||
};
|
||||
|
||||
scrollerFactory.create = function (frame, options) {
|
||||
scrollerFactory.create = function (frame, options) {
|
||||
var instance = new scrollerFactory(frame, options);
|
||||
return Promise.resolve(instance);
|
||||
};
|
||||
};
|
||||
|
||||
return scrollerFactory;
|
||||
});
|
||||
export default scrollerFactory;
|
||||
|
|
|
@ -577,7 +577,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', '
|
|||
this.isLocalPlayer = false;
|
||||
this.lastPlayerData = {};
|
||||
|
||||
castSenderApiLoader.load().then(initializeChromecast.bind(this));
|
||||
new castSenderApiLoader.default().load().then(initializeChromecast.bind(this));
|
||||
}
|
||||
|
||||
ChromecastPlayer.prototype.tryPair = function (target) {
|
||||
|
|
|
@ -1132,7 +1132,7 @@ function tryRemoveElement(elem) {
|
|||
*/
|
||||
getCueCss(appearance, selector) {
|
||||
return `${selector}::cue {
|
||||
${appearance.text.map((s) => `${s.name}:${s.value}!important;`).join('')}
|
||||
${appearance.text.map((s) => s.value !== undefined && s.value !== '' ? `${s.name}:${s.value}!important;` : '').join('')}
|
||||
}`;
|
||||
}
|
||||
|
||||
|
@ -1150,7 +1150,7 @@ function tryRemoveElement(elem) {
|
|||
document.getElementsByTagName('head')[0].appendChild(styleElem);
|
||||
}
|
||||
|
||||
styleElem.innerHTML = this.getCueCss(subtitleAppearanceHelper.getStyles(userSettings.getSubtitleAppearanceSettings(), true), '.htmlvideoplayer');
|
||||
styleElem.innerHTML = this.getCueCss(subtitleAppearanceHelper.getStyles(userSettings.getSubtitleAppearanceSettings()), '.htmlvideoplayer');
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1195,18 +1195,29 @@ function tryRemoveElement(elem) {
|
|||
|
||||
// download the track json
|
||||
this.fetchSubtitles(track, item).then(function (data) {
|
||||
import('userSettings').then((userSettings) => {
|
||||
// show in ui
|
||||
console.debug(`downloaded ${data.TrackEvents.length} track events`);
|
||||
|
||||
const subtitleAppearance = userSettings.getSubtitleAppearanceSettings();
|
||||
const cueLine = parseInt(subtitleAppearance.verticalPosition, 10);
|
||||
|
||||
// add some cues to show the text
|
||||
// in safari, the cues need to be added before setting the track mode to showing
|
||||
for (const trackEvent of data.TrackEvents) {
|
||||
const trackCueObject = window.VTTCue || window.TextTrackCue;
|
||||
const cue = new trackCueObject(trackEvent.StartPositionTicks / 10000000, trackEvent.EndPositionTicks / 10000000, normalizeTrackEventText(trackEvent.Text, false));
|
||||
|
||||
if (cue.line === 'auto') {
|
||||
cue.line = cueLine;
|
||||
}
|
||||
|
||||
trackElement.addCue(cue);
|
||||
}
|
||||
|
||||
trackElement.mode = 'showing';
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -33,16 +33,22 @@ video::-webkit-media-controls {
|
|||
text-shadow: 0.14em 0.14em 0.14em rgba(0, 0, 0, 1);
|
||||
-webkit-font-smoothing: antialiased;
|
||||
font-family: inherit;
|
||||
line-height: normal; /* Restore value. See -webkit-media-text-track-container 'line-height' */
|
||||
}
|
||||
|
||||
.htmlvideoplayer-moveupsubtitles::-webkit-media-text-track-display {
|
||||
/* style the text itself */
|
||||
margin-top: -2em;
|
||||
.htmlvideoplayer::-webkit-media-text-track-container {
|
||||
font-size: 170% !important; /* Override element inline style */
|
||||
line-height: 50%; /* Child element cannot set line height smaller than its parent has. This allow smaller values for children */
|
||||
}
|
||||
|
||||
.htmlvideoplayer::-webkit-media-text-track-display {
|
||||
max-width: 70%;
|
||||
margin-left: 15%;
|
||||
}
|
||||
|
||||
.videoSubtitles {
|
||||
position: fixed;
|
||||
bottom: 10%;
|
||||
bottom: 0;
|
||||
text-align: center;
|
||||
left: 0;
|
||||
right: 0;
|
||||
|
@ -53,7 +59,6 @@ video::-webkit-media-controls {
|
|||
.videoSubtitlesInner {
|
||||
max-width: 70%;
|
||||
background-color: rgba(0, 0, 0, 0.8);
|
||||
padding: 0.25em;
|
||||
margin: auto;
|
||||
display: inline-block;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'], function (playbackManager, events, serverNotifications, connectionManager) {
|
||||
'use strict';
|
||||
|
||||
serverNotifications = serverNotifications.default || serverNotifications;
|
||||
playbackManager = playbackManager.default || playbackManager;
|
||||
|
||||
function getActivePlayerId() {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', 'viewManager', 'libraryBrowser', 'appRouter', 'apphost', 'playbackManager', 'syncPlayManager', 'groupSelectionMenu', 'browser', 'globalize', 'scripts/imagehelper', 'paper-icon-button-light', 'material-icons', 'scrollStyles', 'flexStyles'], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, syncPlayManager, groupSelectionMenu, browser, globalize, imageHelper) {
|
||||
'use strict';
|
||||
|
||||
viewManager = viewManager.default || viewManager;
|
||||
playbackManager = playbackManager.default || playbackManager;
|
||||
browser = browser.default || browser;
|
||||
|
||||
|
@ -806,6 +807,8 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', '
|
|||
navDrawerScrollContainer.addEventListener('click', onMainDrawerClick);
|
||||
return new Promise(function (resolve, reject) {
|
||||
require(['navdrawer'], function (navdrawer) {
|
||||
navdrawer = navdrawer.default || navdrawer;
|
||||
|
||||
navDrawerInstance = new navdrawer(getNavDrawerOptions());
|
||||
|
||||
if (!layoutManager.tv) {
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) {
|
||||
'use strict';
|
||||
import focusManager from 'focusManager';
|
||||
import dom from 'dom';
|
||||
import 'scrollStyles';
|
||||
|
||||
function getBoundingClientRect(elem) {
|
||||
function getBoundingClientRect(elem) {
|
||||
// Support: BlackBerry 5, iOS 3 (original iPhone)
|
||||
// If we don't have gBCR, just use 0,0 rather than error
|
||||
if (elem.getBoundingClientRect) {
|
||||
|
@ -9,27 +10,27 @@ define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) {
|
|||
} else {
|
||||
return { top: 0, left: 0 };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getPosition(scrollContainer, item, horizontal) {
|
||||
var slideeOffset = getBoundingClientRect(scrollContainer);
|
||||
var itemOffset = getBoundingClientRect(item);
|
||||
export function getPosition(scrollContainer, item, horizontal) {
|
||||
const slideeOffset = getBoundingClientRect(scrollContainer);
|
||||
const itemOffset = getBoundingClientRect(item);
|
||||
|
||||
var offset = horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top;
|
||||
var size = horizontal ? itemOffset.width : itemOffset.height;
|
||||
let offset = horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top;
|
||||
let size = horizontal ? itemOffset.width : itemOffset.height;
|
||||
if (!size && size !== 0) {
|
||||
size = item[horizontal ? 'offsetWidth' : 'offsetHeight'];
|
||||
}
|
||||
|
||||
var currentStart = horizontal ? scrollContainer.scrollLeft : scrollContainer.scrollTop;
|
||||
const currentStart = horizontal ? scrollContainer.scrollLeft : scrollContainer.scrollTop;
|
||||
|
||||
offset += currentStart;
|
||||
|
||||
var frameSize = horizontal ? scrollContainer.offsetWidth : scrollContainer.offsetHeight;
|
||||
const frameSize = horizontal ? scrollContainer.offsetWidth : scrollContainer.offsetHeight;
|
||||
|
||||
var currentEnd = currentStart + frameSize;
|
||||
const currentEnd = currentStart + frameSize;
|
||||
|
||||
var isVisible = offset >= currentStart && (offset + size) <= currentEnd;
|
||||
const isVisible = offset >= currentStart && (offset + size) <= currentEnd;
|
||||
|
||||
return {
|
||||
start: offset,
|
||||
|
@ -38,10 +39,10 @@ define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) {
|
|||
size: size,
|
||||
isVisible: isVisible
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function toCenter(container, elem, horizontal, skipWhenVisible) {
|
||||
var pos = getPosition(container, elem, horizontal);
|
||||
export function toCenter(container, elem, horizontal, skipWhenVisible) {
|
||||
const pos = getPosition(container, elem, horizontal);
|
||||
|
||||
if (skipWhenVisible && pos.isVisible) {
|
||||
return;
|
||||
|
@ -60,10 +61,10 @@ define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) {
|
|||
container.scrollTop = Math.round(pos.center);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function toStart(container, elem, horizontal, skipWhenVisible) {
|
||||
var pos = getPosition(container, elem, horizontal);
|
||||
export function toStart(container, elem, horizontal, skipWhenVisible) {
|
||||
const pos = getPosition(container, elem, horizontal);
|
||||
|
||||
if (skipWhenVisible && pos.isVisible) {
|
||||
return;
|
||||
|
@ -82,26 +83,25 @@ define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) {
|
|||
container.scrollTop = Math.round(pos.start);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function centerOnFocus(e, scrollSlider, horizontal) {
|
||||
var focused = focusManager.focusableParent(e.target);
|
||||
function centerOnFocus(e, scrollSlider, horizontal) {
|
||||
const focused = focusManager.focusableParent(e.target);
|
||||
|
||||
if (focused) {
|
||||
toCenter(scrollSlider, focused, horizontal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function centerOnFocusHorizontal(e) {
|
||||
function centerOnFocusHorizontal(e) {
|
||||
centerOnFocus(e, this, true);
|
||||
}
|
||||
function centerOnFocusVertical(e) {
|
||||
centerOnFocus(e, this, false);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
getPosition: getPosition,
|
||||
centerFocus: {
|
||||
function centerOnFocusVertical(e) {
|
||||
centerOnFocus(e, this, false);
|
||||
}
|
||||
|
||||
export const centerFocus = {
|
||||
on: function (element, horizontal) {
|
||||
if (horizontal) {
|
||||
dom.addEventListener(element, 'focus', centerOnFocusHorizontal, {
|
||||
|
@ -128,8 +128,11 @@ define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) {
|
|||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export default {
|
||||
getPosition: getPosition,
|
||||
centerFocus: centerFocus,
|
||||
toCenter: toCenter,
|
||||
toStart: toStart
|
||||
};
|
||||
});
|
||||
};
|
||||
|
|
|
@ -1,57 +0,0 @@
|
|||
define(['searchFields', 'searchResults', 'events'], function (SearchFields, SearchResults, events) {
|
||||
'use strict';
|
||||
|
||||
SearchFields = SearchFields.default || SearchFields;
|
||||
SearchResults = SearchResults.default || SearchResults;
|
||||
|
||||
function init(instance, tabContent, options) {
|
||||
tabContent.innerHTML = '<div class="padded-left padded-right searchFields"></div><div class="searchResults padded-top" style="padding-top:1.5em;"></div>';
|
||||
instance.searchFields = new SearchFields({
|
||||
element: tabContent.querySelector('.searchFields')
|
||||
});
|
||||
instance.searchResults = new SearchResults({
|
||||
element: tabContent.querySelector('.searchResults'),
|
||||
serverId: ApiClient.serverId(),
|
||||
parentId: options.parentId,
|
||||
collectionType: options.collectionType
|
||||
});
|
||||
events.on(instance.searchFields, 'search', function (e, value) {
|
||||
instance.searchResults.search(value);
|
||||
});
|
||||
}
|
||||
|
||||
function SearchTab(view, tabContent, options) {
|
||||
var self = this;
|
||||
options = options || {};
|
||||
init(this, tabContent, options);
|
||||
|
||||
self.preRender = function () {};
|
||||
|
||||
self.renderTab = function () {
|
||||
var searchFields = this.searchFields;
|
||||
|
||||
if (searchFields) {
|
||||
searchFields.focus();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
SearchTab.prototype.destroy = function () {
|
||||
var searchFields = this.searchFields;
|
||||
|
||||
if (searchFields) {
|
||||
searchFields.destroy();
|
||||
}
|
||||
|
||||
this.searchFields = null;
|
||||
var searchResults = this.searchResults;
|
||||
|
||||
if (searchResults) {
|
||||
searchResults.destroy();
|
||||
}
|
||||
|
||||
this.searchResults = null;
|
||||
};
|
||||
|
||||
return SearchTab;
|
||||
});
|
|
@ -1,40 +1,43 @@
|
|||
define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'inputManager', 'focusManager', 'appRouter'], function (connectionManager, playbackManager, syncPlayManager, events, inputManager, focusManager, appRouter) {
|
||||
'use strict';
|
||||
import connectionManager from 'connectionManager';
|
||||
import playbackManager from 'playbackManager';
|
||||
import syncPlayManager from 'syncPlayManager';
|
||||
import events from 'events';
|
||||
import inputManager from 'inputManager';
|
||||
import focusManager from 'focusManager';
|
||||
import appRouter from 'appRouter';
|
||||
|
||||
playbackManager = playbackManager.default || playbackManager;
|
||||
const serverNotifications = {};
|
||||
|
||||
var serverNotifications = {};
|
||||
|
||||
function notifyApp() {
|
||||
function notifyApp() {
|
||||
inputManager.notify();
|
||||
}
|
||||
}
|
||||
|
||||
function displayMessage(cmd) {
|
||||
var args = cmd.Arguments;
|
||||
function displayMessage(cmd) {
|
||||
const args = cmd.Arguments;
|
||||
if (args.TimeoutMs) {
|
||||
require(['toast'], function (toast) {
|
||||
import('toast').then(({default: toast}) => {
|
||||
toast({ title: args.Header, text: args.Text });
|
||||
});
|
||||
} else {
|
||||
require(['alert'], function (alert) {
|
||||
alert.default({ title: args.Header, text: args.Text });
|
||||
import('alert').then(({default: alert}) => {
|
||||
alert({ title: args.Header, text: args.Text });
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function displayContent(cmd, apiClient) {
|
||||
function displayContent(cmd, apiClient) {
|
||||
if (!playbackManager.isPlayingLocally(['Video', 'Book'])) {
|
||||
appRouter.showItem(cmd.Arguments.ItemId, apiClient.serverId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function playTrailers(apiClient, itemId) {
|
||||
function playTrailers(apiClient, itemId) {
|
||||
apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) {
|
||||
playbackManager.playTrailers(item);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function processGeneralCommand(cmd, apiClient) {
|
||||
function processGeneralCommand(cmd, apiClient) {
|
||||
console.debug('Received command: ' + cmd.Name);
|
||||
switch (cmd.Name) {
|
||||
case 'Select':
|
||||
|
@ -143,13 +146,13 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
|
|||
}
|
||||
|
||||
notifyApp();
|
||||
}
|
||||
}
|
||||
|
||||
function onMessageReceived(e, msg) {
|
||||
var apiClient = this;
|
||||
function onMessageReceived(e, msg) {
|
||||
const apiClient = this;
|
||||
if (msg.MessageType === 'Play') {
|
||||
notifyApp();
|
||||
var serverId = apiClient.serverInfo().Id;
|
||||
const serverId = apiClient.serverInfo().Id;
|
||||
if (msg.Data.PlayCommand === 'PlayNext') {
|
||||
playbackManager.queueNext({ ids: msg.Data.ItemIds, serverId: serverId });
|
||||
} else if (msg.Data.PlayCommand === 'PlayLast') {
|
||||
|
@ -184,11 +187,11 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
|
|||
notifyApp();
|
||||
}
|
||||
} else if (msg.MessageType === 'GeneralCommand') {
|
||||
var cmd = msg.Data;
|
||||
const cmd = msg.Data;
|
||||
processGeneralCommand(cmd, apiClient);
|
||||
} else if (msg.MessageType === 'UserDataChanged') {
|
||||
if (msg.Data.UserId === apiClient.getCurrentUserId()) {
|
||||
for (var i = 0, length = msg.Data.UserDataList.length; i < length; i++) {
|
||||
for (let i = 0, length = msg.Data.UserDataList.length; i < length; i++) {
|
||||
events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]);
|
||||
}
|
||||
}
|
||||
|
@ -199,15 +202,15 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'in
|
|||
} else {
|
||||
events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]);
|
||||
}
|
||||
}
|
||||
function bindEvents(apiClient) {
|
||||
}
|
||||
function bindEvents(apiClient) {
|
||||
events.off(apiClient, 'message', onMessageReceived);
|
||||
events.on(apiClient, 'message', onMessageReceived);
|
||||
}
|
||||
}
|
||||
|
||||
connectionManager.getApiClients().forEach(bindEvents);
|
||||
events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) {
|
||||
connectionManager.getApiClients().forEach(bindEvents);
|
||||
events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) {
|
||||
bindEvents(newApiClient);
|
||||
});
|
||||
return serverNotifications;
|
||||
});
|
||||
|
||||
export default serverNotifications;
|
||||
|
|
|
@ -15,6 +15,10 @@ function saveServerPreferences(instance) {
|
|||
instance.saveTimeout = setTimeout(onSaveTimeout.bind(instance), 50);
|
||||
}
|
||||
|
||||
const defaultSubtitleAppearanceSettings = {
|
||||
verticalPosition: -3
|
||||
};
|
||||
|
||||
export class UserSettings {
|
||||
constructor() {
|
||||
}
|
||||
|
@ -412,7 +416,7 @@ export class UserSettings {
|
|||
*/
|
||||
getSubtitleAppearanceSettings(key) {
|
||||
key = key || 'localplayersubtitleappearance3';
|
||||
return JSON.parse(this.get(key, false) || '{}');
|
||||
return Object.assign(defaultSubtitleAppearanceSettings, JSON.parse(this.get(key, false) || '{}'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
define([], function () {
|
||||
'use strict';
|
||||
|
||||
return {
|
||||
// TODO: This seems like a good candidate for deprecation
|
||||
export default {
|
||||
openUrl: function (url, target) {
|
||||
if (window.NativeShell) {
|
||||
window.NativeShell.openUrl(url, target);
|
||||
|
@ -19,5 +17,4 @@ define([], function () {
|
|||
window.NativeShell.disableFullscreen();
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
};
|
||||
|
|
|
@ -152,13 +152,13 @@ var Dashboard = {
|
|||
processPluginConfigurationUpdateResult: function () {
|
||||
require(['loading', 'toast'], function (loading, toast) {
|
||||
loading.hide();
|
||||
toast(Globalize.translate('MessageSettingsSaved'));
|
||||
toast.default(Globalize.translate('MessageSettingsSaved'));
|
||||
});
|
||||
},
|
||||
processServerConfigurationUpdateResult: function (result) {
|
||||
require(['loading', 'toast'], function (loading, toast) {
|
||||
loading.hide();
|
||||
toast(Globalize.translate('MessageSettingsSaved'));
|
||||
toast.default(Globalize.translate('MessageSettingsSaved'));
|
||||
});
|
||||
},
|
||||
processErrorResponse: function (response) {
|
||||
|
@ -180,7 +180,7 @@ var Dashboard = {
|
|||
alert: function (options) {
|
||||
if (typeof options == 'string') {
|
||||
return void require(['toast'], function (toast) {
|
||||
toast({
|
||||
toast.default({
|
||||
text: options
|
||||
});
|
||||
});
|
||||
|
@ -615,6 +615,7 @@ function initClient() {
|
|||
}
|
||||
|
||||
var localApiClient;
|
||||
let promise;
|
||||
|
||||
(function () {
|
||||
var urlArgs = 'v=' + (window.dashboardVersion || new Date().getDate());
|
||||
|
@ -696,20 +697,12 @@ function initClient() {
|
|||
onError: onRequireJsError
|
||||
});
|
||||
|
||||
require(['fetch']);
|
||||
require(['polyfill']);
|
||||
require(['fast-text-encoding']);
|
||||
require(['intersection-observer']);
|
||||
require(['classlist-polyfill']);
|
||||
|
||||
promise = require(['fetch'])
|
||||
.then(() => require(['jQuery', 'polyfill', 'fast-text-encoding', 'intersection-observer', 'classlist-polyfill', 'css!assets/css/site', 'jellyfin-noto'], (jQuery) => {
|
||||
// Expose jQuery globally
|
||||
require(['jQuery'], function(jQuery) {
|
||||
window.$ = jQuery;
|
||||
window.jQuery = jQuery;
|
||||
});
|
||||
|
||||
require(['css!assets/css/site']);
|
||||
require(['jellyfin-noto']);
|
||||
}));
|
||||
|
||||
// define styles
|
||||
// TODO determine which of these files can be moved to the components themselves
|
||||
|
@ -820,8 +813,8 @@ function initClient() {
|
|||
define('tvguide', [componentsPath + '/guide/guide'], returnFirstDependency);
|
||||
define('guide-settings-dialog', [componentsPath + '/guide/guide-settings'], returnFirstDependency);
|
||||
define('viewManager', [componentsPath + '/viewManager/viewManager'], function (viewManager) {
|
||||
window.ViewManager = viewManager;
|
||||
viewManager.dispatchPageEvents(true);
|
||||
window.ViewManager = viewManager.default;
|
||||
viewManager.default.dispatchPageEvents(true);
|
||||
return viewManager;
|
||||
});
|
||||
define('slideshow', [componentsPath + '/slideshow/slideshow'], returnFirstDependency);
|
||||
|
@ -1115,7 +1108,7 @@ function initClient() {
|
|||
});
|
||||
})();
|
||||
|
||||
return onWebComponentsReady();
|
||||
promise.then(onWebComponentsReady);
|
||||
}
|
||||
|
||||
initClient();
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
"AddToPlaylist": "Voeg by speellys",
|
||||
"AddToPlayQueue": "Plaas in wagtou",
|
||||
"AddToCollection": "Voeg by versameling",
|
||||
"AddItemToCollectionHelp": "Voeg items by die versamelings deur hulle te soek en regs-kliek of kliek kieslys om hulle by versameling te voeg.",
|
||||
"Add": "Voeg by",
|
||||
"Actor": "Akteur",
|
||||
"AccessRestrictedTryAgainLater": "Toegang is beperk. Probeer weer later .",
|
||||
|
@ -84,7 +83,6 @@
|
|||
"Watched": "Gekyk",
|
||||
"ViewPlaybackInfo": "Beskou terugspeel inligting",
|
||||
"ViewAlbum": "Beskou album",
|
||||
"VideoRange": "Video reekse",
|
||||
"Vertical": "Vertikaal",
|
||||
"ValueVideoCodec": "Video Kodek: {0}",
|
||||
"ValueTimeLimitSingleHour": "Tyd limiet: 1 uur",
|
||||
|
@ -149,7 +147,6 @@
|
|||
"TabProfiles": "Profiele",
|
||||
"TabProfile": "Profiel",
|
||||
"TabPlaylists": "Speel lyste",
|
||||
"TabPlaylist": "Speel lys",
|
||||
"TabPlayback": "Terugspeel",
|
||||
"TabPassword": "Wagwoord",
|
||||
"TabParentalControl": "Ouer Beheer",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
"AddItemToCollectionHelp": "أضف عناصر إلى المجاميع بالبحث عنهم واستخدام قائمة الزر الأيمن أو قئامة اللمس لإضافتهم إلى المجاميع.",
|
||||
"AdditionalNotificationServices": "تصفح كتالوج الملحقات لتثبيث خدمات إشعارات إضافية.",
|
||||
"Alerts": "التنبيهات",
|
||||
"All": "الكل",
|
||||
|
@ -40,7 +39,6 @@
|
|||
"ButtonHelp": "المساعدة",
|
||||
"ButtonHome": "الرئيسية",
|
||||
"ButtonInfo": "معلومات",
|
||||
"ButtonLearnMore": "إعرف المزيد",
|
||||
"ButtonLibraryAccess": "صلاحيات المكتبة",
|
||||
"ButtonManualLogin": "الدخول اليدوي",
|
||||
"ButtonMore": "المزيد",
|
||||
|
@ -85,7 +83,6 @@
|
|||
"ButtonTrailer": "العرض الإعلاني",
|
||||
"ButtonUninstall": "إزالة التثبيت",
|
||||
"ButtonUp": "أعلى",
|
||||
"ButtonViewWebsite": "أنظر الموقع الإلكتروني",
|
||||
"ButtonWebsite": "موقع إلكتروني",
|
||||
"ChannelAccessHelp": "إختر قناة لمشاركتها مع هذا المستخدم. المدراء سيكونون قادرين على تغيير إعدادات القنوات باستخدام مدير واصفات البيانات.",
|
||||
"Channels": "القنوات",
|
||||
|
@ -102,9 +99,9 @@
|
|||
"DeleteUserConfirmation": "هل انت متاكد من انك تريد حذف هذا المستخدم ؟",
|
||||
"DeviceAccessHelp": "هذه الميزة تنطبق حصرياً على الأجهزة التي يمكن التعرف عليها فردياً ولن تمنع المتصفح من الدخول عليها. ترشيح الوصول لأجهزة المستخدم ستمنع المستخدمين من استعمال الأجهزة الجديدة إلى أن يتم اعتمادهم من هنا.",
|
||||
"DrmChannelsNotImported": "القنوات المجهزة بإدارة الحقوق الرقمية DRM لن تورّد.",
|
||||
"EasyPasswordHelp": "الرمز الشخصي الميسرالخاص بك يمكنك من الاتصال إلى خادم مكتبتك، عبر تطبيقات أمبي على الأجهزة أو الدخول على حسابك في الشبكة الداخلية.",
|
||||
"EasyPasswordHelp": "الرمز pin الميسر الخاص بك يستخدم للوصول بدون اتصل عبر التطبيقات المدعومة أو الدخول على حسابك في الشبكة الداخلية.",
|
||||
"EnablePhotos": "عرض الصور",
|
||||
"EnablePhotosHelp": "سيتم اكتشاف الصور وعرضها مع ملفات الوسائط الأخرى",
|
||||
"EnablePhotosHelp": "سيتم اكتشاف الصور وعرضها مع ملفات الوسائط الأخرى.",
|
||||
"ErrorAddingListingsToSchedulesDirect": "كان هناك خطأ في إضافة الاصطفاف لخدمة \"Schedules Direct\" الخاصة بك. خدمة \"Schedules Direct\" لا تسمح إلا بعدد محدود من الاصطفافات لكل حساب. قد تحتاج إلى تسجيل الدخول إلى موقع \"Schedules Direct\" لإزالة الاصطفافات الأخرى من حسابك قبل المتابعة.",
|
||||
"ErrorAddingMediaPathToVirtualFolder": "كان هناك خطأ في إضافة مسار الوسائط. الرجاء التأكد من صحة المسار وأن خادم أمبي لديه صلاحية الوصول إلى الموقع.",
|
||||
"ErrorAddingTunerDevice": "كان هناك خطأ في إضافة جهاز المولف. الرجاء التأكد من صلاحية الوصول إليه ثم عاود المحاولة.",
|
||||
|
@ -114,7 +111,7 @@
|
|||
"ErrorPleaseSelectLineup": "الرجاء اختيار اصطفاف ثم المحاولة مرة أخرى. إن لم تتوفر أية اصطفافات، فالرجاء التأكد من اسم المستخدم وكلمة المرور الخاصة بك، وتأكد من صحة رمزك البريدي.",
|
||||
"ErrorSavingTvProvider": "كان هناك خطأ في حفظ مزود التلفزة. الرجاء التأكد من صلاحية الوصول إليه ثم عاود المحاولة.",
|
||||
"ExitFullscreen": "الخروج من الشاشة الكاملة",
|
||||
"ExtractChapterImagesHelp": "استخلاص صور الأبواب سيسمح لتطبيقات أمبي أن تظهر لك قوائم تصويرية لتبويبات الأفلام. هذه العملية قد تكون بطيئة، وتستغل قدرة المعالج بشكل ملحوظ، وقد تحتاج إلى حيازة بضعة غيغابايتات من مساحة التخزين بشكل مؤقت. هذه المهمة تعمل خلال عملية استكشاف المقاطع المرئية، كما يمكن أن تحدد لتكون مهمة ليلية مجدولة. يمكنك جدولة العملية من قسم جدولة المهام. لا ينصح بتشغيل هذه المهمة خلال ساعات الذروة من دخول المستخدمين.",
|
||||
"ExtractChapterImagesHelp": "استخلاص صور الفصول سيسمح للتطبيقات أن تظهر لك قوائم تصويرية لتبويبات الأفلام. هذه العملية قد تكون بطيئة، وتستغل موارد الجهاز بشكل ملحوظ، وقد تحتاج إلى حيازة بضعة غيغابايتات من مساحة التخزين بشكل مؤقت. هذه المهمة تعمل خلال عملية استكشاف المقاطع المرئية، كما يمكن أن تحدد لتكون مهمة ليلية مجدولة. يمكنك جدولة العملية من قسم جدولة المهام. لا ينصح بتشغيل هذه المهمة خلال ساعات الذروة من دخول المستخدمين.",
|
||||
"FFmpegSavePathNotFound": "لم نستطع تحديد موقع ffmpeg باستخدام المسار الذي أدخلته. سوف نحتاج تطبيق FFprobe أيضاً ويجب أن يتواجد في نفس المكان. إن هذه الأجزاء تكون بالعادة محزومة معاً في نفس ملف الإنزال. الرجاء التأكد من المسار المدخل والمحاولة مرة أخرى.",
|
||||
"FastForward": "التقديم السريع",
|
||||
"FileNotFound": "الملف غير موجود.",
|
||||
|
@ -132,7 +129,7 @@
|
|||
"GuideProviderSelectListings": "إختر المبوبات",
|
||||
"H264CrfHelp": "معامل المعدل الثابت CRF هو الجودة الافتراضية لإعدادات مشفر x264. بإمكانك إعطاء قيمة تتراوح بين 0 و 51، وكلما قلت القيمة فسينتج عن ذلك جودة أفضل (على حساب حجم تخزين أعلى). القيم المعقول تتراوح بين 18 و 28. الافتراضي لـ x264 هي 23، لذا فبإمكانك استخدام هذه القيمة كنقطة بداية.",
|
||||
"EncoderPresetHelp": "اختر قيمة أعلى لتحسين السرة والأداء وقيمة أقل لتحسين الجودة.",
|
||||
"HardwareAccelerationWarning": "تمكين التسريع بعتاد الحاسوب قد يتسبب في عدم استقرار بعض أنواع الأنظمة. تأكد من أن نظام التشغيل الخاص بك محدث إلى آخر نسخة وأن سواقات الفيديو محدثة أيضاً. إذا واجهت أية صعوبات في تسغيل الفيديو بعد تمكين هذه الخاصية، فعليك إرجاع الإعداد إلى وضعية آلي.",
|
||||
"HardwareAccelerationWarning": "تمكين التسريع بعتاد الحاسوب قد يتسبب في عدم استقرار بعض أنواع الأنظمة. تأكد من أن نظام التشغيل الخاص بك محدث إلى آخر نسخة وأن سواقات الفيديو محدثة أيضاً. إذا واجهت أية صعوبات في تسغيل الفيديو بعد تمكين هذه الخاصية، فعليك إرجاع الإعداد إلى وضعية بلا None.",
|
||||
"HeaderAccessSchedule": "جدول الدخولات",
|
||||
"HeaderAccessScheduleHelp": "إنشئ جدول دخولات لكي تتمكن من تحديد ساعات للدخول.",
|
||||
"HeaderActiveDevices": "الأجهزة المفعّلة",
|
||||
|
@ -148,10 +145,9 @@
|
|||
"HeaderAllowMediaDeletionFrom": "السماح بحذف الوسائط من قبل",
|
||||
"HeaderApiKey": "مفتاح API",
|
||||
"HeaderApiKeys": "مفاتيح API",
|
||||
"HeaderApiKeysHelp": "التطبيقات الخارجية تحتاج أن تمتلك مفتاح api لكي تتصل بخادم أمبي. هذه المفاتيح تُصدر عن طريق تسجيل الدخول بحساب أمبي، أو عن طريق منح التطبيق مفتاحاً أصدر يدوياً.",
|
||||
"HeaderApiKeysHelp": "التطبيقات الخارجية تحتاج أن تمتلك مفتاح api لكي تتصل بالخادم. هذه المفاتيح تُصدر عن طريق تسجيل الدخول بمستخدم عادي، أو عن طريق منح التطبيق مفتاحاً أصدر يدوياً.",
|
||||
"HeaderApp": "التطبيق",
|
||||
"HeaderAudioSettings": "إعدادات الصوت",
|
||||
"HeaderAutomaticUpdates": "التحديثات الآلية",
|
||||
"HeaderBooks": "الكتب",
|
||||
"HeaderBranding": "وسومات البرنامج",
|
||||
"HeaderCastAndCrew": "الممثلين وطاقم العمل",
|
||||
|
@ -236,7 +232,7 @@
|
|||
"HeaderPreferredMetadataLanguage": "اللغة المفضلة لواصفات البيانات",
|
||||
"HeaderProfile": "الحساب",
|
||||
"HeaderProfileInformation": "معلومات العريضة",
|
||||
"HeaderProfileServerSettingsHelp": "هذه القيم ستتحكم في كيفية تقديم شكل خادم أمبي في الجهاز",
|
||||
"HeaderProfileServerSettingsHelp": "هذه القيم ستتحكم في كيفية تقديم شكل الخادم في للعملاء.",
|
||||
"HeaderRecentlyPlayed": "تم تشغيله مؤخراً",
|
||||
"HeaderRecordingPostProcessing": "تطبيق ما-بعد-المعالجة للتسجيل",
|
||||
"HeaderRemoteControl": "التحكم عن بعد",
|
||||
|
@ -258,7 +254,7 @@
|
|||
"HeaderSelectServerCachePath": "إختر مسار كاشة الخادم",
|
||||
"HeaderSelectServerCachePathHelp": "تصفح أو أدخل المسار الذي ترغب أن يُستخدم كاشة لملفات الخادم. يجب أن يكون هذا المجلد قابل للكتابة فيه.",
|
||||
"HeaderSelectTranscodingPath": "إختر المسار المؤقت للتشفير البيني",
|
||||
"HeaderSelectTranscodingPathHelp": "تصفح أو أدخل المسار الذي ترغب أن يُستخدم للملفات المؤقتة للتشفير البيني. يجب أن يكون هذا المجلد قابل للكتابة فيه.",
|
||||
"HeaderSelectTranscodingPathHelp": "تصفح أو أدخل المسار الذي ترغب أن يُستخدم لملفات التشفير البيني. يجب أن يكون هذا المجلد قابل للكتابة فيه.",
|
||||
"HeaderSendMessage": "أرسل رسالة",
|
||||
"HeaderSeries": "المسلسلات",
|
||||
"HeaderServerSettings": "إعدادات الخادم",
|
||||
|
@ -295,17 +291,17 @@
|
|||
"HeaderXmlSettings": "إعدادات xml",
|
||||
"HeaderYears": "السنوات",
|
||||
"HeadersFolders": "مجلدات",
|
||||
"ImportFavoriteChannelsHelp": "عند التفعيل، فقط القنوات التي علّمت في المفضلة على هذا المولف ستورد إلى النظام.",
|
||||
"ImportMissingEpisodesHelp": "عند التمكين، المعلومات الناقصة للحلقات ستورّد إلى قاعدة بيانات أمبي وستعرض داخل المواسم والمسلسلات. قد تتسبب هذه بأوقات أطول بكثير عند تمشيط المكنبات.",
|
||||
"ImportFavoriteChannelsHelp": "فقط القنوات التي علّمت في المفضلة على جهاز المولف ستورد.",
|
||||
"ImportMissingEpisodesHelp": "المعلومات الناقصة للحلقات ستورّد إلى قاعدة بياناتك وستعرض داخل المواسم والمسلسلات. قد تتسبب هذه بأوقات أطول بكثير عند تمشيط المكتبات.",
|
||||
"LabelAbortedByServerShutdown": "(تم إهماله بسبب عملية إغلاق الخادم)",
|
||||
"LabelAccessDay": "يوم الأسبوع:",
|
||||
"LabelAccessEnd": "تاريخ النهاية",
|
||||
"LabelAccessStart": "تاريخ البداية",
|
||||
"LabelAccessEnd": "وقت النهاية:",
|
||||
"LabelAccessStart": "وقت البداية:",
|
||||
"LabelAirDays": "أيام البث:",
|
||||
"LabelAirTime": "وقت البث:",
|
||||
"LabelAlbum": "الألبوم",
|
||||
"LabelAlbum": "الألبوم:",
|
||||
"LabelAlbumArtHelp": "PN المستخدمة في رسومات الألبوم، داخل سمة dlna:profileID في upnp:albumArtURI. بعض الأجهزة تحتاج قيمة محددة، مهما كان حجم الصورة.",
|
||||
"LabelAlbumArtMaxHeight": "الارتفاع الأقصى لرسومات الألبوم",
|
||||
"LabelAlbumArtMaxHeight": "الارتفاع الأقصى لرسومات الألبوم:",
|
||||
"LabelAlbumArtMaxHeightHelp": "الدقة القصوى لرسومات الألبوم المظهّرة عبر سمة upnp:albumArtURI.",
|
||||
"LabelAlbumArtMaxWidth": "العرض الأقصى لرسوم الألبوم:",
|
||||
"LabelAlbumArtMaxWidthHelp": "الدقة القصوى لرسومات الألبوم المظهّرة عبر سمة upnp:albumArtURI.",
|
||||
|
@ -313,45 +309,43 @@
|
|||
"LabelAlbumArtists": "فنانو الألبومات:",
|
||||
"LabelAll": "الجميع",
|
||||
"LabelAllowHWTranscoding": "السماح بالتشفير البيني بعتاد الحاسب",
|
||||
"LabelAllowServerAutoRestart": "السماح للخادم أن يعيد التشغيل آلياً لتفعيل التحديثات",
|
||||
"LabelAllowServerAutoRestartHelp": "الخادم سيعيد التشغيل في فترات الركود فقط، حين لا يكون هناك أي مستخدمين متصلين.",
|
||||
"LabelAppName": "اسم التطبيق",
|
||||
"LabelAppNameExample": "مثال: Sickbeard، NzbDrone",
|
||||
"LabelAppNameExample": "مثال: Sickbeard، Sonarr",
|
||||
"LabelArtists": "الفنانون:",
|
||||
"LabelArtistsHelp": "فصل الاستعمالات المتعددة ;",
|
||||
"LabelArtistsHelp": "افصل بين الفنانين ب ; فاصلة منقوطة.",
|
||||
"LabelAudioLanguagePreference": "اللغة المفضلة للصوت:",
|
||||
"LabelBindToLocalNetworkAddress": "إربطه إلى عنوان شبكة محلي:",
|
||||
"LabelBindToLocalNetworkAddressHelp": "هذا خياري. امتطي عنوان الآي بي المحلي لربطه بخادم http. إذا ترك فارغاً، فإن الخادم سيربطه بجميع العناوين المتاحة. تغيير هذه القيمة يتطلب إعادة تشغيل خادم أمبي.",
|
||||
"LabelBlastMessageInterval": "فترات بث رسالة قيد التشغيل (بالثواني)",
|
||||
"LabelBlastMessageIntervalHelp": "يحدد الفترة بالثواني بين يث رسائل قيد التشغيل",
|
||||
"LabelCache": "ذاكرة الكاشة",
|
||||
"LabelCachePath": "مسار ذاكرة الكاشة:",
|
||||
"LabelCachePathHelp": "حدد موقع مخصص لملفات كاشة الخادم، مثل الصور وغيرها. أترك هذه الخانة فارغة لاستعمال القيمة التلقائية.",
|
||||
"LabelBindToLocalNetworkAddressHelp": "تجاوز عنوان الآي بي المحلي لربطه بخادم http. إذا ترك فارغاً، فإن الخادم سيربطه بجميع العناوين المتاحة. تغيير هذه القيمة يتطلب إعادة تشغيل خادم جيلليفن.",
|
||||
"LabelBlastMessageInterval": "فترات بث رسالة قيد التشغيل",
|
||||
"LabelBlastMessageIntervalHelp": "يحدد الفترة بالثواني بين بث رسائل قيد التشغيل.",
|
||||
"LabelCache": "مَخبأ (كاش):",
|
||||
"LabelCachePath": "مسار ذاكرة الكاش:",
|
||||
"LabelCachePathHelp": "حدد موقع مخصص لملفات الخادم المؤقتة، مثل الصور وغيرها. أترك هذه الخانة فارغة لاستعمال القيمة الافتراضية.",
|
||||
"LabelCancelled": "تم الإلغاء",
|
||||
"LabelCollection": "المجموعة",
|
||||
"LabelCollection": "المجموعة:",
|
||||
"LabelCommunityRating": "تقييم المجتمع:",
|
||||
"LabelContentType": "نوع المحتوى",
|
||||
"LabelContentType": "نوع المحتوى:",
|
||||
"LabelCountry": "البلد:",
|
||||
"LabelCurrentPassword": "كلمة السر الحالية:",
|
||||
"LabelCustomCertificatePath": "مسار شهادة ssl مخصص:",
|
||||
"LabelCustomCertificatePath": "مسار شهادة SSL المخصص:",
|
||||
"LabelCustomCertificatePathHelp": "مسار ملف PKCS # 12 يحتوي على شهادة ومفتاح خاص لتمكين دعم TLS على مجال مخصص.",
|
||||
"LabelCustomCss": "تنيسق CSS مخصوص:",
|
||||
"LabelCustomCssHelp": "طبق تنسيق css مخصوصة لواجهة الويب.",
|
||||
"LabelCustomCss": "تنيسق CSS مخصص:",
|
||||
"LabelCustomCssHelp": "طبق تنسيقك css المخصص لواجهة الويب.",
|
||||
"LabelCustomDeviceDisplayName": "اسم العرض:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "أذكر اسم عرض مخصوص أو أتركه فارغاً لاستخدام",
|
||||
"LabelCustomDeviceDisplayNameHelp": "أذكر اسم عرض مخصوص أو أتركه فارغاً لاستخدام الاسم المبلغ من الجهاز.",
|
||||
"LabelDateAddedBehavior": "كيف يتصرف المحتوى الجديد نحو \"تاريخ الإضافة\" الخاص به:",
|
||||
"LabelDateAddedBehaviorHelp": "إذا استعرضت قيمة واصفات البيانا فإنها سوف تستخدم قبل أن تستخدم أي من هذه الخيارات.",
|
||||
"LabelDateAddedBehaviorHelp": "إذا اخذت واصفات البيانات قيمة، فإنها سوف تستخدم قبل أن تستخدم أي من هذه الخيارات.",
|
||||
"LabelDay": "اليوم:",
|
||||
"LabelDeathDate": "تاريخ الوفاة:",
|
||||
"LabelDefaultUser": "المستخدم الافتراضي",
|
||||
"LabelDefaultUser": "المستخدم الافتراضي:",
|
||||
"LabelDefaultUserHelp": "لتحديد مكتبة المستخدم التي تظهر على الأجهزة المتصلة. بإمكان الامتطاء على هذه القيمة لكل جهاز عن طريق عرائض الأجهزة.",
|
||||
"LabelDeviceDescription": "وصف الجهاز",
|
||||
"LabelDidlMode": "طور didl:",
|
||||
"LabelDidlMode": "طور DIDL:",
|
||||
"LabelDisplayMissingEpisodesWithinSeasons": "أظهر الحلقات المفقودة في مجلدات المواسم",
|
||||
"LabelDisplayName": "الاسم المعروض:",
|
||||
"LabelDisplaySpecialsWithinSeasons": "أظهر الحلقات الخاصة في المواسم التي بثت فيها",
|
||||
"LabelDownMixAudioScale": "تعزيز الصوت عند تقليل توزيع قنوات الصوت:",
|
||||
"LabelDownMixAudioScaleHelp": "تعزيز الصوت عند تقليل توزيع قنوات الصوت. حدد القيمة بـ 1 للمحافظة على القيمة الأصلية للصوت.",
|
||||
"LabelDownMixAudioScaleHelp": "تعزيز الصوت عند تقليل توزيع قنوات الصوت. حدد القيمة ب 1 للمحافظة على القيمة الأصلية للصوت.",
|
||||
"LabelDownloadLanguages": "إنزال اللغة:",
|
||||
"LabelDynamicExternalId": "معرفة {0}:",
|
||||
"LabelEasyPinCode": "الرمز الشخصي الميسر:",
|
||||
|
@ -360,8 +354,8 @@
|
|||
"LabelEnableAutomaticPortMap": "فعل الخاصية الآلية في التوفيق بين المنافذ",
|
||||
"LabelEnableAutomaticPortMapHelp": "حاول التوفيق بين المنفذ العالمي والمنفذ المحلي آلياً باستخدام آلية UPnP. هذه الخاصية قد لا تعمل مع بعض أنواع الراوترات.",
|
||||
"LabelEnableBlastAliveMessages": "بث رسائل قيد التشغيل",
|
||||
"LabelEnableBlastAliveMessagesHelp": "فعل هذه الخاصية إذا كان الخادم لا يكتشف بكفاءة من قبل أجهزة UPnP الأخرى على شبكتك",
|
||||
"LabelEnableDlnaClientDiscoveryInterval": "فترات استكشاف العملاء (بالثواني)",
|
||||
"LabelEnableBlastAliveMessagesHelp": "فعل هذه الخاصية إذا كان الخادم لا يكتشف بكفاءة من قبل أجهزة UPnP الأخرى على شبكتك.",
|
||||
"LabelEnableDlnaClientDiscoveryInterval": "فترات استكشاف العملاء",
|
||||
"LabelEnableDlnaClientDiscoveryIntervalHelp": "يحدد الفترة بالثواني بين عمليات بحث SSDP التي يقوم بها أمبي.",
|
||||
"LabelEnableDlnaDebugLogging": "تفعيل خاصية كشوفات أخطاء DLNA",
|
||||
"LabelEnableDlnaDebugLoggingHelp": "هذه ستنشئ سجلات كشفية ضخمة ولا ينبغي تفعيلها إلا عند الحاجة إليها بغرض استكشاف الأخطاء وحصرها.",
|
||||
|
@ -552,7 +546,6 @@
|
|||
"LabelXDlnaCapHelp": "تحدد محتوى عنصر X_DLNACAP في النطاق الاسمي لـ urn:schemas-dlna-org:device-1-0 .",
|
||||
"LabelXDlnaDoc": "وثيقة X-Dlna:",
|
||||
"LabelXDlnaDocHelp": "تحدد محتوى عنصر X_DLNADOC في النطاق الاسمي لـ urn:schemas-dlna-org:device-1-0 .",
|
||||
"LabelYourFirstName": "الإسم الاول:",
|
||||
"LabelYoureDone": "تم الانتهاء!",
|
||||
"LabelZipCode": "الرمز البريدي:",
|
||||
"LabelffmpegPath": "مسار ffmpeg:",
|
||||
|
@ -603,7 +596,6 @@
|
|||
"MessageFileReadError": "حصل خطأ أثناء قراءة الملف. الرجاء المحاولة مرة اخرى.",
|
||||
"MessageForgotPasswordFileCreated": "الملف التالي قد أنشيء على خادمك وهو يحتوي على التوجيهات لكيفية البدء:",
|
||||
"MessageForgotPasswordInNetworkRequired": "الرجاء المحاولة من خلال شبكة المنزل لبدء عملية إعادة إعداد كملة السر.",
|
||||
"MessageInstallPluginFromApp": "هذا الملحق يجب أن يثبت من داخل التطبيق الذي تريد استخدامه بداخله.",
|
||||
"MessageInvalidForgotPasswordPin": "لقد تم إدخال رمز شخصي غير صحيح أو منتهي الصلاحية. الرجاء المحاولة مرة أخرى.",
|
||||
"MessageInvalidUser": "اسم المستخدم أو كلمة السر غير صحيحة. الرجاء المحاولة مرة أخرى.",
|
||||
"MessageItemSaved": "تم حفظ العنصر.",
|
||||
|
@ -834,7 +826,6 @@
|
|||
"TabParentalControl": "التحكم الأبوي",
|
||||
"TabPassword": "كلمة السر",
|
||||
"TabPlayback": "تشغيل",
|
||||
"TabPlaylist": "قائمة التشغيل",
|
||||
"TabPlaylists": "قوائم التشغيل",
|
||||
"TabPlugins": "الملحقات",
|
||||
"TabProfile": "عريضة",
|
||||
|
@ -938,9 +929,8 @@
|
|||
"Banner": "بانر",
|
||||
"Backdrops": "خلفيات متغيرة للصفحة",
|
||||
"Backdrop": "خلفية متغيرة للصفحة",
|
||||
"AutoBasedOnLanguageSetting": "تلقائي ( بناءً على إعدادات اللغة)",
|
||||
"Auto": "تلقائي",
|
||||
"AuthProviderHelp": "حدد مقدم المصادقات ليتم استخدامه لمصادقة كلمة مرور هذا المستخدم.",
|
||||
"AuthProviderHelp": "اختار مقدم المصادقة ليتم استخدامه لمصادقة كلمة مرور هذا المستخدم.",
|
||||
"AroundTime": "حول",
|
||||
"AttributeNew": "جديد",
|
||||
"AspectRatio": "نسبة العرض الى الارتفاع",
|
||||
|
@ -997,7 +987,6 @@
|
|||
"MediaInfoStreamTypeEmbeddedImage": "الصورة المضمنة",
|
||||
"MediaInfoStreamTypeData": "البيانات",
|
||||
"MediaInfoStreamTypeAudio": "الصوت",
|
||||
"MediaInfoSoftware": "البرمجيات",
|
||||
"MediaIsBeingConverted": "يتم تحويل الوسط الى صيغة متوافقة مع الحهاز الذي يشغل الوسط.",
|
||||
"MediaInfoStreamTypeVideo": "فيديو",
|
||||
"ContinueWatching": "اكمل المشاهدة",
|
||||
|
@ -1049,7 +1038,7 @@
|
|||
"Director": "المخرج",
|
||||
"DirectPlaying": "بث بدون تحويل الصيغة",
|
||||
"DirectStreaming": "البث المباشر",
|
||||
"DirectStreamHelp2": "البث المباشر للملف يستخدم طاقة معالجة قليلة جدًا دون أي خسارة في جودة الفيديو.",
|
||||
"DirectStreamHelp2": "البث المباشر للملف يستخدم قوة معالجة قليلة جدًا دون أي خسارة في جودة الفيديو.",
|
||||
"DirectStreamHelp1": "الوسائط متوافقة مع الجهاز فيما يتعلق بالدقة ونوع الوسائط (H.264 ، AC3 ، إلخ) ، ولكنها في حاوية ملفات غير متوافقة (mkv ، avi ، wmv ، إلخ). سيتم إعادة حزم الفيديو في الوقت الحقيقي قبل بثه إلى الجهاز.",
|
||||
"DetectingDevices": "يتم الكشف عن الأجهزة",
|
||||
"Desktop": "سطح المكتب",
|
||||
|
@ -1059,7 +1048,6 @@
|
|||
"DefaultSubtitlesHelp": "يتم تحميل الترجمات استنادًا إلى العلامات الافتراضية والقسرية في البيانات الوصفية المضمنة. سيتم اعتبار تفضيلات اللغة عند توفر خيارات متعددة.",
|
||||
"DefaultMetadataLangaugeDescription": "هذه هي إعداداتك الافتراضية ويمكن تخصيصها على أساس كل مكتبة.",
|
||||
"Default": "افتراضي",
|
||||
"CopyStreamURLError": "توجد مشكله في نسخ الرابط",
|
||||
"CopyStreamURL": "نسخ عنوان الرابط",
|
||||
"Continuing": "مستمر",
|
||||
"CopyStreamURLSuccess": "URL copied successfully.",
|
||||
|
@ -1151,5 +1139,51 @@
|
|||
"Dislike": "لم يعجبنى",
|
||||
"ButtonSyncPlay": "SyncPlay",
|
||||
"ExtraLarge": "كبير جدا",
|
||||
"EnableNextVideoInfoOverlayHelp": "في نهاية الفيديو, عرض معلومات عن الفيديو القادم في قائمة التشغيل."
|
||||
"EnableNextVideoInfoOverlayHelp": "في نهاية الفيديو, عرض معلومات عن الفيديو القادم في قائمة التشغيل.",
|
||||
"LabelDroppedFrames": "الاطارات الساقطة:",
|
||||
"LabelDropImageHere": "اسقط صورة هنا، او ضغط تصفح.",
|
||||
"LabelDisplayOrder": "ترتيب المعروض:",
|
||||
"LabelDisplayMode": "وضع المعروض:",
|
||||
"LabelDisplayLanguageHelp": "ترجمة جيلليفين هو مشروع مستمر.",
|
||||
"LabelDisplayLanguage": "لغة العرض:",
|
||||
"LabelDiscNumber": "رقم القرص:",
|
||||
"LabelDeinterlaceMethod": "طريقة تقليل التشابك:",
|
||||
"LabelDefaultScreen": "الشاشة الافتراضية:",
|
||||
"LabelDateTimeLocale": "وقت و تاريخ محلي:",
|
||||
"LabelDateAdded": "تاريخ الاضافة:",
|
||||
"LabelCustomRating": "تقييم مخصص:",
|
||||
"LabelCriticRating": "تقييم النقاد:",
|
||||
"LabelCorruptedFrames": "الإطارات التالفة:",
|
||||
"LabelChannels": "القنوات:",
|
||||
"LabelCertificatePasswordHelp": "اذا تطلبت شهادتك الامنية كلمة مرور، من فضلك ادخلها هنا.",
|
||||
"LabelCertificatePassword": "كلمة مرور الشهادة الامنية:",
|
||||
"LabelBurnSubtitles": "الترجمات المحروقة:",
|
||||
"LabelBlockContentWithTags": "احجب العناصر بالعلامات:",
|
||||
"LabelBitrate": "معدل البت:",
|
||||
"LabelBirthYear": "عام الميلاد:",
|
||||
"LabelBirthDate": "تاريخ الميلاد:",
|
||||
"LabelAutomaticallyRefreshInternetMetadataEvery": "حدث وصف البيانات تلقائيا من الانترنت:",
|
||||
"LabelAuthProvider": "مقدم التصديق:",
|
||||
"LabelAudioSampleRate": "سرعة معينة الصوت:",
|
||||
"LabelAudioCodec": "ترميز الصوت:",
|
||||
"LabelAudioChannels": "قنوات الصوت:",
|
||||
"LabelAudioBitrate": "معدل بث الصوت:",
|
||||
"LabelAudioBitDepth": "عمق بث الصوت:",
|
||||
"LabelAudio": "الصوت",
|
||||
"LabelAllowedRemoteAddressesMode": "وضع مرشح عنوان المضيف IP البعيد:",
|
||||
"LabelAllowedRemoteAddresses": "مرشح عنوان المضيف IP البعيد:",
|
||||
"LabelAirsBeforeSeason": "عروض بث قبل الموسم:",
|
||||
"LabelAirsBeforeEpisode": "عروض بث قبل الحلقة:",
|
||||
"LabelAirsAfterSeason": "عروض بث بعد الموسم:",
|
||||
"Label3DFormat": "صيغة ثلاثية الابعاد:",
|
||||
"Kids": "اطفال",
|
||||
"Items": "عناصر",
|
||||
"ItemCount": "{0} عنصر",
|
||||
"InstantMix": "خلط فوري",
|
||||
"HeaderSyncPlayEnabled": "تزامن اللعب ممكَّن",
|
||||
"HeaderSyncPlaySelectGroup": "انضم لمجموعة",
|
||||
"EnableDetailsBannerHelp": "اظهر صوره اللافته اعلى عنصر تفاصيل الصفحة.",
|
||||
"EnableDetailsBanner": "لافتة التفاصيل",
|
||||
"EnableDecodingColorDepth10Vp9": "تمكين ترميز ال10 بت عبر العتاد الصلب من اجل VP9",
|
||||
"EnableDecodingColorDepth10Hevc": "تمكين ترميز ال10 بت عبر العتاد الصلب من اجل HEVC"
|
||||
}
|
||||
|
|
|
@ -11,10 +11,8 @@
|
|||
"LabelFinish": "Гатова",
|
||||
"LabelNext": "Наступнае",
|
||||
"LabelPrevious": "Папярэдняе",
|
||||
"LabelYourFirstName": "Ваша імя:",
|
||||
"LabelYoureDone": "Вы скончылі!",
|
||||
"MoreUsersCanBeAddedLater": "Потым можна дадаць яшчэ карыстальнікаў праз «Інфапанэль».",
|
||||
"TabPlaylist": "Плэйліст",
|
||||
"TellUsAboutYourself": "Раскажыце пра сябе",
|
||||
"ThisWizardWillGuideYou": "Гэты памочнік правядзе вас праз усе фазы ўстаноўкі і налады. Спачатку абярыце упадабаную мову.",
|
||||
"UserProfilesIntro": "У Jellyfin існуе ўбудаваная падтрымка для карыстальніцкіх профіляў, дазваляючы кожнаму карыстальніку валодаць сваімі ўласнымі параметрамі адлюстравання, станам прайгравання і кіраваннем ўтрымання.",
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
"AttributeNew": "Нови",
|
||||
"Audio": "Звук",
|
||||
"Auto": "Автоматично",
|
||||
"AutoBasedOnLanguageSetting": "Автоматично (според езика)",
|
||||
"Backdrop": "Фон",
|
||||
"Backdrops": "Фонове",
|
||||
"BirthDateValue": "Роден/а на: {0}",
|
||||
|
@ -45,7 +44,6 @@
|
|||
"ButtonHelp": "Помощ",
|
||||
"ButtonHome": "Начало",
|
||||
"ButtonInfo": "Сведения",
|
||||
"ButtonLearnMore": "Научете повече",
|
||||
"ButtonLibraryAccess": "Достъп до библиотеката",
|
||||
"ButtonManualLogin": "Вход с име и парола",
|
||||
"ButtonMore": "Още",
|
||||
|
@ -159,7 +157,6 @@
|
|||
"HeaderApiKeys": "ППИ ключове",
|
||||
"HeaderApp": "Програма",
|
||||
"HeaderAudioSettings": "Настройки на звука",
|
||||
"HeaderAutomaticUpdates": "Автоматични обновления",
|
||||
"HeaderBooks": "Книги",
|
||||
"HeaderCastAndCrew": "Артисти и изпълнители",
|
||||
"HeaderCastCrew": "Артисти и изпълнители",
|
||||
|
@ -285,8 +282,6 @@
|
|||
"LabelAlbumArtMaxWidth": "Максимална ширина на албумното изкуство:",
|
||||
"LabelAlbumArtPN": "ПН на албумното изкуство:",
|
||||
"LabelAlbumArtists": "Изпълнители на албума:",
|
||||
"LabelAllowServerAutoRestart": "Разрешаване на сървъра автоматично да се пуска повторно за прилагане на обновления",
|
||||
"LabelAllowServerAutoRestartHelp": "Сървърът ще се пуска наново само през ненатоварено време, когато няма активни потребители.",
|
||||
"LabelAppName": "Име",
|
||||
"LabelArtists": "Изпълнители:",
|
||||
"LabelArtistsHelp": "Отделете няколко с ;",
|
||||
|
@ -307,7 +302,6 @@
|
|||
"LabelCustomCssHelp": "Добавете собствен стил към уеб-интерфейса.",
|
||||
"LabelCustomDeviceDisplayName": "Показвано име:",
|
||||
"LabelCustomRating": "Оценка по избор:",
|
||||
"LabelDashboardTheme": "Облик на сървърното табло:",
|
||||
"LabelDateAdded": "Дата на добавяне:",
|
||||
"LabelDateTimeLocale": "Местоположение за дата и час:",
|
||||
"LabelDay": "Ден:",
|
||||
|
@ -452,13 +446,11 @@
|
|||
"LabelUsername": "Потребителско име:",
|
||||
"LabelVersion": "Версия:",
|
||||
"LabelYear": "Година:",
|
||||
"LabelYourFirstName": "Първото ви име:",
|
||||
"LabelYoureDone": "Готови сте!",
|
||||
"Large": "Голям",
|
||||
"LatestFromLibrary": "Последни {0}",
|
||||
"LibraryAccessHelp": "Изберете библиотеките, които да споделите с потребителя. Администраторите ще могат да редактират всички папки, използвайки управлението на метаданни.",
|
||||
"Like": "Харесване",
|
||||
"LinksValue": "Препратки: {0}",
|
||||
"List": "Списък",
|
||||
"Live": "На живо",
|
||||
"LiveTV": "Телевизия на живо",
|
||||
|
@ -715,7 +707,6 @@
|
|||
"TabParentalControl": "Родителски контрол",
|
||||
"TabPassword": "Парола",
|
||||
"TabPlayback": "Възпроизвеждане",
|
||||
"TabPlaylist": "Списък",
|
||||
"TabPlaylists": "Списъци",
|
||||
"TabPlugins": "Приставки",
|
||||
"TabProfile": "Профил",
|
||||
|
@ -817,7 +808,6 @@
|
|||
"ReplaceExistingImages": "Заменяне на текущите изображения",
|
||||
"Channels": "Канали",
|
||||
"Categories": "Категории",
|
||||
"ButtonViewWebsite": "Преглед на сайта",
|
||||
"ButtonUp": "Нагоре",
|
||||
"ButtonTrailer": "Предварителен откъс",
|
||||
"ButtonStart": "Пускане",
|
||||
|
@ -830,7 +820,6 @@
|
|||
"ButtonConnect": "Свързване",
|
||||
"AllowOnTheFlySubtitleExtraction": "Позволява моментално извличане на поднадписи",
|
||||
"AllowHWTranscodingHelp": "Позволява на тунера да прекодира моментално. Това може да помогне за редуциране на прекодирането от сървъра.",
|
||||
"AddItemToCollectionHelp": "Добавяне към колекция чрез търсенето им и използване на дясно-щракване с мишката или контекстното меню.",
|
||||
"Absolute": "Aбсолютен",
|
||||
"LabelLanNetworks": "Локални мрежи:",
|
||||
"LabelKodiMetadataSaveImagePathsHelp": "Това е препоръчително, ако наименованието на изображенията не са съобразени с изискванията на Kodi.",
|
||||
|
@ -885,7 +874,6 @@
|
|||
"ErrorDefault": "Възникна грешка при изпълнение на заявката. Моля опитайте по-късно.",
|
||||
"CustomDlnaProfilesHelp": "Създаване на персонализиран профил за целево устройство или заменяне на системния профил.",
|
||||
"CopyStreamURL": "Копиране URL на стрийма",
|
||||
"CopyStreamURLError": "Възникна грешка при копиране на URL.",
|
||||
"CopyStreamURLSuccess": "URL се копира успешно.",
|
||||
"Connect": "Свързване",
|
||||
"ConfirmEndPlayerSession": "Искате ли да изключите Jellyfin на {0}?",
|
||||
|
@ -1140,7 +1128,6 @@
|
|||
"LabelNumber": "Номер:",
|
||||
"LabelNotificationEnabled": "Включване на известие",
|
||||
"LabelNewsCategories": "Категории новини:",
|
||||
"LabelNightly": "Тестов",
|
||||
"LabelStable": "Стабилна",
|
||||
"LabelChromecastVersion": "Версия на Chromecast",
|
||||
"LabelMusicStreamingTranscodingBitrateHelp": "Посочете максимален битрейт при поточно предаване на музика.",
|
||||
|
@ -1223,7 +1210,6 @@
|
|||
"XmlDocumentAttributeListHelp": "Тези атрибути се прилагат към коренния елемент на всеки XML отговор.",
|
||||
"Whitelist": "Бял списък",
|
||||
"ViewPlaybackInfo": "Вижте информация за възпроизвеждането",
|
||||
"VideoRange": "Диапазон на видео",
|
||||
"ValueTimeLimitSingleHour": "Времеви лимит: 1 час",
|
||||
"ValueTimeLimitMultiHour": "Времеви лимит {0} часове",
|
||||
"ValueContainer": "Контейнер: {0}",
|
||||
|
@ -1284,12 +1270,10 @@
|
|||
"LabelStreamType": "Вид на потока:",
|
||||
"LabelStopping": "Спиране",
|
||||
"LabelSportsCategories": "Спортни категории:",
|
||||
"LabelSoundEffects": "Звукови ефекти:",
|
||||
"LabelSortTitle": "Подреди по заглавие:",
|
||||
"LabelSonyAggregationFlags": "\"Флагове\" за статистическа обработка на Сони:",
|
||||
"LabelSkipIfGraphicalSubsPresentHelp": "Наличието на текстови версии на субтитрите ще доведе до по-ефективна доставка и намаляване на вероятността от транскодиране на видеото.",
|
||||
"LabelSkipIfAudioTrackPresentHelp": "Махнете отметката ,за да се гарантира ,че всички видеофайлове имат субтитри,независимо от езика на аудиото им.",
|
||||
"LabelSkin": "Облик:",
|
||||
"LabelSize": "Размер:",
|
||||
"LabelSimultaneousConnectionLimit": "Ограничение на броя едновременни потоци:",
|
||||
"LabelServerName": "Име на сървъра:",
|
||||
|
@ -1306,7 +1290,6 @@
|
|||
"MessageConfirmAppExit": "Искате ли да излезете?",
|
||||
"MessageAreYouSureDeleteSubtitles": "Сигурни ли се ,че искате да изтриете файла със субтитри?",
|
||||
"MediaIsBeingConverted": "Медията е конвертирана във формат ,който е съвместим с устройството ,което ще я възпроизведе.",
|
||||
"MediaInfoSoftware": "Софтуер",
|
||||
"MediaInfoTimestamp": "Времеви отпечатък",
|
||||
"MediaInfoSampleRate": "Кадрова честота",
|
||||
"MediaInfoRefFrames": "Ref кадри",
|
||||
|
@ -1320,8 +1303,6 @@
|
|||
"LiveBroadcasts": "Предавания на живо",
|
||||
"LeaveBlankToNotSetAPassword": "Можете да оставите това поле празно и да не задавате парола.",
|
||||
"LearnHowYouCanContribute": "Научете как можете да допринесете.",
|
||||
"LaunchWebAppOnStartupHelp": "Отвори уеб клиента във браузъра по подразбиране при първото стартиране на сървъра.Това няма да се случи при използване на функцията на сървъра за рестартиране.",
|
||||
"LaunchWebAppOnStartup": "Стартирай уеб интерфейса ,когато се стартира сървъра",
|
||||
"LanNetworksHelp": "Списък разделен със запетая съдържащ ИП адреси или записи за ИП/мрежова маски отнасящи се за мрежи ,които ще се считат за локални ,когато се налагат ограничения в честотната лента.Ако е зададено всички други ИП адреси ще се считат за принадлежащи към външни мрежи и за тях ще важат правилата за ограничения на външни ИП -та.Ако полето е празно ще се счита ,че само подмрежата на сървъра е част от локалната мрежа.",
|
||||
"LabelffmpegPathHelp": "Пътят към файла на приложението ffmpeg или папката, съдържаща ffmpeg.",
|
||||
"LabelffmpegPath": "Път към FFmpeg:",
|
||||
|
@ -1383,10 +1364,8 @@
|
|||
"MessageLeaveEmptyToInherit": "Оставете празни, за да наследите настройки от родителски елемент или глобалната стойност по подразбиране.",
|
||||
"MessageItemsAdded": "Добавени са елементи.",
|
||||
"MessageItemSaved": "Елементът е запазен.",
|
||||
"MessageUnauthorizedUser": "Понастоящем нямате право да получите достъп до сървъра. Моля, свържете се с администратора на вашия сървър за повече информация.",
|
||||
"MessageInvalidUser": "Невалидно потребителско име или парола. Моля, опитайте отново.",
|
||||
"MessageInvalidForgotPasswordPin": "Въведен е невалиден или изтекъл пин код. Моля, опитайте отново.",
|
||||
"MessageInstallPluginFromApp": "Този плъгин трябва да бъде инсталиран от приложението, в което възнамерявате да го използвате.",
|
||||
"MessageImageTypeNotSelected": "Изберете типът изображение от падащото меню.",
|
||||
"MessageImageFileTypeAllowed": "Поддържат се само файлове с разширение JPEG и PNG.",
|
||||
"MessageForgotPasswordInNetworkRequired": "Опитайте пак в домашната мрежа да повторите процеса по нулиране на паролата.",
|
||||
|
@ -1413,12 +1392,10 @@
|
|||
"SaveSubtitlesIntoMediaFoldersHelp": "Съхраняването на субтитрите при видео файлове ще позволи по-лесното им управление.",
|
||||
"SaveSubtitlesIntoMediaFolders": "Запазване на субтитрите в папките с медията",
|
||||
"SaveChanges": "Запазете промените",
|
||||
"RunAtStartup": "Пускай при стартиране",
|
||||
"RepeatOne": "Повтори един път",
|
||||
"RepeatMode": "Режим на повторение",
|
||||
"RepeatEpisodes": "Повтори епизодите",
|
||||
"RepeatAll": "Повтори всички",
|
||||
"ReleaseGroup": "Издаден от група",
|
||||
"RefreshQueued": "Назначено е обновяване.",
|
||||
"RefreshDialogHelp": "Метаданните се обновяват въз основа на настройките и интернет услугите, които са активирани от таблото за управление на сървъра.",
|
||||
"Recordings": "Записи",
|
||||
|
@ -1428,7 +1405,6 @@
|
|||
"RecommendationStarring": "В главните роли {0}",
|
||||
"RecommendationDirectedBy": "Режисьор {0}",
|
||||
"Rate": "Оценка",
|
||||
"QueueAllFromHere": "Поред всичко от тук",
|
||||
"ProductionLocations": "Места на заснемане",
|
||||
"Previous": "Предишен",
|
||||
"PreferEmbeddedEpisodeInfosOverFileNames": "Предпочитай \"вградената\" информация за епизода вместо името на файла",
|
||||
|
@ -1457,7 +1433,6 @@
|
|||
"PackageInstallFailed": "Инсталирането на {0} версия {1}) е неуспешно.",
|
||||
"PackageInstallCompleted": "Инсталирането на {0} версия {1}) е завършено.",
|
||||
"PackageInstallCancelled": "Инсталирането на {0} версия {1}) е отменено.",
|
||||
"OtherArtist": "Друг изпълнител",
|
||||
"OptionWeekends": "Почивни дни",
|
||||
"OptionWeekdays": "Делници",
|
||||
"OptionTvdbRating": "Рейтинг според ТВДБ",
|
||||
|
|
|
@ -39,7 +39,6 @@
|
|||
"ButtonGuide": "Guia",
|
||||
"ButtonHelp": "Ajuda",
|
||||
"ButtonHome": "Inici",
|
||||
"ButtonLearnMore": "Aprèn més",
|
||||
"ButtonLibraryAccess": "Accés a la biblioteca",
|
||||
"ButtonManualLogin": "Inici de sessió manual",
|
||||
"ButtonMore": "Més",
|
||||
|
@ -75,7 +74,6 @@
|
|||
"ButtonSubmit": "Envia",
|
||||
"ButtonSubtitles": "Subtítols",
|
||||
"ButtonTrailer": "Tràiler",
|
||||
"ButtonViewWebsite": "Veure website",
|
||||
"CancelRecording": "Cancel·la enregistrament",
|
||||
"CancelSeries": "Cancel·la sèrie",
|
||||
"ChannelAccessHelp": "Selecciona els canals a compartir amb aquest usuari. Els administradors podran editar tots els canals emprant el gestor de metadades.",
|
||||
|
@ -138,7 +136,6 @@
|
|||
"HeaderApiKeys": "Claus Api",
|
||||
"HeaderApiKeysHelp": "Les aplicacions externes requereixen una Api key pere tal de poder-se comunicar amb el Servidor d'Jellyfin. Les claus són emeses iniciant sessió amb un compte d'Jellyfin, o concedint manualment una clau a l'aplicació.",
|
||||
"HeaderAudioSettings": "Preferències d'Àudio",
|
||||
"HeaderAutomaticUpdates": "Actualitzacions Automàtiques",
|
||||
"HeaderBooks": "Llibres",
|
||||
"HeaderBranding": "Aparença",
|
||||
"HeaderCancelRecording": "Cancel·lar Enregistrament",
|
||||
|
@ -271,8 +268,6 @@
|
|||
"LabelAlbum": "Àlbum:",
|
||||
"LabelAlbumArtMaxHeight": "Alçada màxima de l'art de l'àlbum:",
|
||||
"LabelAlbumArtMaxWidth": "Amplada màxima de l'art de l'àlbum:",
|
||||
"LabelAllowServerAutoRestart": "Permetre el servidor reiniciar-se automàticament per aplicar actualitzacions",
|
||||
"LabelAllowServerAutoRestartHelp": "El servidor només es reiniciarà durant períodes d'inactivitat, quan no tingui usuaris actius.",
|
||||
"LabelArtists": "Artistes:",
|
||||
"LabelArtistsHelp": "Separa'n varis emprant ;",
|
||||
"LabelAudioLanguagePreference": "Preferència de l'idioma de l'àudio:",
|
||||
|
@ -292,7 +287,6 @@
|
|||
"LabelCustomCss": "CSS propi:",
|
||||
"LabelCustomCssHelp": "Aplica el teu propi css a la interfície web.",
|
||||
"LabelCustomDeviceDisplayName": "Nom a mostrar:",
|
||||
"LabelDashboardTheme": "Tema del tauler de control del servidor:",
|
||||
"LabelDateAdded": "Data afegit:",
|
||||
"LabelDay": "Dia:",
|
||||
"LabelDeathDate": "Data de defunció:",
|
||||
|
@ -413,9 +407,7 @@
|
|||
"LabelSendNotificationToUsers": "Envia la notificació a:",
|
||||
"LabelSerialNumber": "Nombre de sèrie",
|
||||
"LabelSeriesRecordingPath": "Directori de gravació de sèries (opcional):",
|
||||
"LabelSkin": "Aspecte:",
|
||||
"LabelSortTitle": "Títol d'endreçat:",
|
||||
"LabelSoundEffects": "Efectes de so:",
|
||||
"LabelSource": "Font:",
|
||||
"LabelStartWhenPossible": "Inicia quan sigui possible:",
|
||||
"LabelStatus": "Estat:",
|
||||
|
@ -439,7 +431,6 @@
|
|||
"LabelUsername": "Nom d'usuari:",
|
||||
"LabelValue": "Valor:",
|
||||
"LabelYear": "Any:",
|
||||
"LabelYourFirstName": "El teu nom:",
|
||||
"LabelYoureDone": "Ja està!",
|
||||
"LatestFromLibrary": "Novetats a {0}",
|
||||
"LibraryAccessHelp": "Selecciona els directoris dels multimèdia a compartir amb aquest usuari. Els administradors podran editar tots els directoris emprant el gestor de metadades.",
|
||||
|
@ -604,7 +595,6 @@
|
|||
"Producer": "Productor",
|
||||
"Programs": "Programes",
|
||||
"Quality": "Qualitat",
|
||||
"QueueAllFromHere": "Afegeix tots a la cua des d'aquí",
|
||||
"RecentlyWatched": "Reproduït recentment",
|
||||
"RecommendationBecauseYouWatched": "Ja que has vist {0}",
|
||||
"Record": "Grava",
|
||||
|
@ -623,7 +613,6 @@
|
|||
"ReplaceAllMetadata": "Reemplaça totes les metadades",
|
||||
"ReplaceExistingImages": "Reemplaça imatges existents",
|
||||
"ResumeAt": "Reprodueix des de {0}",
|
||||
"RunAtStartup": "Arrenca en iniciar",
|
||||
"Saturday": "Dissabte",
|
||||
"Save": "Desa",
|
||||
"Screenshots": "Captures de pantalla",
|
||||
|
@ -681,7 +670,6 @@
|
|||
"TabParentalControl": "Control Parental",
|
||||
"TabPassword": "Contrasenya",
|
||||
"TabPlayback": "Reproducció",
|
||||
"TabPlaylist": "Llista de reproducció",
|
||||
"TabPlaylists": "Llistes de reproducció",
|
||||
"TabPlugins": "Complements",
|
||||
"TabProfile": "Perfil",
|
||||
|
@ -790,7 +778,6 @@
|
|||
"AirDate": "Data d'emissió",
|
||||
"AdditionalNotificationServices": "Examineu el catàleg de complements per instal·lar serveis de notificació addicionals.",
|
||||
"AddedOnValue": "Afegit {0}",
|
||||
"AddItemToCollectionHelp": "Afegiu els elements a les col·leccions buscant-los i fent clic amb el botó dret o toqueu els menús per afegir-los a una col·lecció.",
|
||||
"Actor": "Actor",
|
||||
"Absolute": "Absolut",
|
||||
"ClientSettings": "Configuració del client",
|
||||
|
@ -808,7 +795,6 @@
|
|||
"BookLibraryHelp": "Els àudio i llibres de text són compatibles. Reviseu la {0} guia de denominació de llibres {1}.",
|
||||
"Backdrops": "Fons",
|
||||
"Backdrop": "Fons",
|
||||
"AutoBasedOnLanguageSetting": "Auto (basada en la configuració de l’idioma)",
|
||||
"Artist": "Artista",
|
||||
"AllowedRemoteAddressesHelp": "Llista d’adreces IP o d’entrades IP / netmasca separades per comes per a xarxes que podran connectar-se de forma remota. Si es deixa en blanc, es permetran totes les adreces remotes.",
|
||||
"AllowFfmpegThrottlingHelp": "Quan un transcòdi o un remux estigui prou lluny de la posició de reproducció actual, feu una pausa en el procés perquè consumirà menys recursos. Això és més útil per mirar sense buscar sovint. Desactiveu-la si teniu problemes de reproducció.",
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"AccessRestrictedTryAgainLater": "Přístup je v současné době omezen. Prosím zkuste to znovu později.",
|
||||
"Actor": "Herec",
|
||||
"Add": "Přidat",
|
||||
"AddItemToCollectionHelp": "Přidat položky do kolekce jejich vyhledáním a použitím pravého tlačítka myši nebo kliknutím na příslušnou položku v nabídce.",
|
||||
"AddToCollection": "Přidat do kolekce",
|
||||
"AddToPlayQueue": "Přidat do fronty k přehrání",
|
||||
"AddToPlaylist": "Přidat do playlistu",
|
||||
|
@ -63,7 +62,6 @@
|
|||
"ButtonGuide": "Programový průvodce",
|
||||
"ButtonHelp": "Nápověda",
|
||||
"ButtonHome": "Domů",
|
||||
"ButtonLearnMore": "Zjistit více",
|
||||
"ButtonLibraryAccess": "Přístup ke knihovně",
|
||||
"ButtonManualLogin": "Manuální přihlášení",
|
||||
"ButtonMore": "Více",
|
||||
|
@ -105,7 +103,6 @@
|
|||
"ButtonTrailer": "Upoutávka",
|
||||
"ButtonUninstall": "Odinstalovat",
|
||||
"ButtonUp": "Zesílit",
|
||||
"ButtonViewWebsite": "Přejít na webové stránky",
|
||||
"ButtonWebsite": "Webové stránky",
|
||||
"CancelRecording": "Zrušit nahrávání",
|
||||
"CancelSeries": "Ukončit Seriál",
|
||||
|
@ -239,7 +236,6 @@
|
|||
"HeaderApp": "Aplikace",
|
||||
"HeaderAudioBooks": "Audio knihy",
|
||||
"HeaderAudioSettings": "Nastavení zvuku",
|
||||
"HeaderAutomaticUpdates": "Automatické aktualizace",
|
||||
"HeaderBooks": "Knihy",
|
||||
"HeaderBranding": "Branding",
|
||||
"HeaderCancelRecording": "Zrušit nahrávání",
|
||||
|
@ -436,8 +432,6 @@
|
|||
"LabelAlbumArtists": "Alba umělce:",
|
||||
"LabelAll": "Vše",
|
||||
"LabelAllowHWTranscoding": "Povolit hardwarové překódování",
|
||||
"LabelAllowServerAutoRestart": "Povolit automatický restart serveru pro provedení aktualizace",
|
||||
"LabelAllowServerAutoRestartHelp": "Server bude restartován pouze v době nečinnosti, pokud nejsou aktivní žádní uživatelé.",
|
||||
"LabelAppName": "Název aplikace",
|
||||
"LabelAppNameExample": "Příklad: Sickbeard, Sonarr",
|
||||
"LabelArtists": "Umělci:",
|
||||
|
@ -465,7 +459,6 @@
|
|||
"LabelCustomDeviceDisplayName": "Jméno pro zobrazení:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Nahradit vlastním názvem zobrazení nebo ponechte prázdné, aby název byl určen zařízením.",
|
||||
"LabelCustomRating": "Vlastní hodnocení:",
|
||||
"LabelDashboardTheme": "Téma nástěnky serveru:",
|
||||
"LabelDateAdded": "Datum přidání:",
|
||||
"LabelDateAddedBehavior": "Nový obsah řadit dle data:",
|
||||
"LabelDateAddedBehaviorHelp": "Pokud je hodnota metadat přítomna, bude vždy použita před některou z těchto možností.",
|
||||
|
@ -668,7 +661,6 @@
|
|||
"LabelSonyAggregationFlags": "Agregační příznaky Sony:",
|
||||
"LabelSonyAggregationFlagsHelp": "Určuje obsah prvku aggregationFlags ve jmenném prostoru urn:schemas-sonycom:av.",
|
||||
"LabelSortTitle": "Třídit dle názvu:",
|
||||
"LabelSoundEffects": "Zvukové efekty:",
|
||||
"LabelSource": "Zdroj:",
|
||||
"LabelSportsCategories": "Sportovní kategorie:",
|
||||
"LabelStartWhenPossible": "Začít jakmile je to možné:",
|
||||
|
@ -713,7 +705,6 @@
|
|||
"LabelXDlnaDoc": "Dokumentace X-DLNA:",
|
||||
"LabelXDlnaDocHelp": "Určuje obsah prvku X_DLNADOC ve jmenném prostoru urn:schemas-dlna-org:device-1-0.",
|
||||
"LabelYear": "Rok:",
|
||||
"LabelYourFirstName": "Vaše jméno:",
|
||||
"LabelYoureDone": "Hotovo!",
|
||||
"LabelZipCode": "PSČ:",
|
||||
"LabelffmpegPath": "FFmpeg - cesta:",
|
||||
|
@ -775,7 +766,6 @@
|
|||
"MessageFileReadError": "Došlo k chybě při čtení souboru. Prosím zkuste to znovu.",
|
||||
"MessageForgotPasswordFileCreated": "Následující soubor byl vytvořen na serveru a obsahuje pokyny, jak postupovat:",
|
||||
"MessageForgotPasswordInNetworkRequired": "Zkuste to prosím znovu uvnitř vaší domácí sítě pro zahájení procesu resetování hesla.",
|
||||
"MessageInstallPluginFromApp": "Tento plugin musí být nainstalován z aplikace, kterou chcete použít.",
|
||||
"MessageInvalidForgotPasswordPin": "Neplatné zadání pin kódu. Prosím, zkuste to znovu.",
|
||||
"MessageInvalidUser": "Neplatné uživatelské jméno nebo heslo. Zkuste znovu.",
|
||||
"MessageItemSaved": "Položka uložena.",
|
||||
|
@ -995,7 +985,6 @@
|
|||
"ProductionLocations": "Místo výroby",
|
||||
"Programs": "Programy",
|
||||
"Quality": "Kvalita",
|
||||
"QueueAllFromHere": "Zařadit vše do fronty",
|
||||
"RecentlyWatched": "Nedávno shlédnuté",
|
||||
"RecommendationBecauseYouLike": "Protože se vám líbí {0}",
|
||||
"RecommendationBecauseYouWatched": "Protože jste sledovali {0}",
|
||||
|
@ -1024,7 +1013,6 @@
|
|||
"ReplaceExistingImages": "Nahradit existující obrázky",
|
||||
"ResumeAt": "Obnovit přehrávání od {0}",
|
||||
"Rewind": "Přetočit zpět",
|
||||
"RunAtStartup": "Spustit po startu",
|
||||
"Runtime": "Délka",
|
||||
"Saturday": "Sobota",
|
||||
"Save": "Uložit",
|
||||
|
@ -1186,7 +1174,6 @@
|
|||
"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.",
|
||||
"AnyLanguage": "Jakýkoli jazyk",
|
||||
"Ascending": "Vzestupně",
|
||||
"AutoBasedOnLanguageSetting": "Automaticky (na základě jazykového nastavení)",
|
||||
"Banner": "Výřez plakátu",
|
||||
"Blacklist": "Zakázat vše kromě výjimek",
|
||||
"Browse": "Procházet",
|
||||
|
@ -1282,7 +1269,6 @@
|
|||
"LabelRemoteClientBitrateLimitHelp": "Volitelný limit datového toku pro všechna síťová zařízení. To je užitečné, aby se zabránilo požadavkům na vyšší přenosovou rychlost než zvládne vaše připojení k internetu. To může mít za následek zvýšení zátěže procesoru, aby bylo možné převádět videa za běhu na nižší datový tok.",
|
||||
"LabelServerHost": "Host:",
|
||||
"LabelSimultaneousConnectionLimit": "Limit současně běžících streamů:",
|
||||
"LabelSkin": "Vzhled:",
|
||||
"LabelSortBy": "Řadit podle:",
|
||||
"LabelSortOrder": "Pořadí řazení:",
|
||||
"LabelSpecialSeasonsDisplayName": "Zobrazovaný název pro zvláštní sezónu:",
|
||||
|
@ -1296,12 +1282,10 @@
|
|||
"LabelVideo": "Video",
|
||||
"LabelVideoCodec": "Video kodek:",
|
||||
"LeaveBlankToNotSetAPassword": "Můžete ponechat prázdné pro nastavení bez hesla.",
|
||||
"LinksValue": "Odkazy: {0}",
|
||||
"LiveTV": "Televize",
|
||||
"Logo": "Logo",
|
||||
"ManageLibrary": "Spravovat knihovnu",
|
||||
"MediaInfoDefault": "Výchozí",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoStreamTypeData": "Data",
|
||||
"MediaInfoStreamTypeVideo": "Video",
|
||||
|
@ -1383,7 +1367,6 @@
|
|||
"TabInfo": "Info",
|
||||
"TabLiveTV": "Televize",
|
||||
"TabMetadata": "Metadata",
|
||||
"TabPlaylist": "Playlist",
|
||||
"TabServer": "Server",
|
||||
"TagsValue": "Tagy: {0}",
|
||||
"ThemeSongs": "Tematická hudba",
|
||||
|
@ -1397,14 +1380,11 @@
|
|||
"ValueOneAlbum": "1 album",
|
||||
"ValueOneSong": "1 skladba",
|
||||
"Vertical": "Svisle",
|
||||
"VideoRange": "Rozsah videa",
|
||||
"ViewPlaybackInfo": "Zobrazení informací o přehrávání",
|
||||
"Whitelist": "Povolit vše kromě výjimek",
|
||||
"HeaderHome": "Domů",
|
||||
"DashboardOperatingSystem": "Operační systém: {0}",
|
||||
"DashboardArchitecture": "Architektura: {0}",
|
||||
"LaunchWebAppOnStartup": "Spustit webové rozhraní po spustění serveru",
|
||||
"LaunchWebAppOnStartupHelp": "Otevře se webový klient ve vašem výchozím webovém prohlížeči, když server se spustí. K tomu nedochází při použití funkce restartování serveru.",
|
||||
"MessageNoServersAvailable": "Pomocí automatického zjišťování nebyly nalezeny žádné servery.",
|
||||
"OptionBanner": "Banner",
|
||||
"OptionList": "Seznam",
|
||||
|
@ -1446,7 +1426,6 @@
|
|||
"HeaderNavigation": "Navigace",
|
||||
"ButtonSplit": "Rozdělit",
|
||||
"MessageConfirmAppExit": "Přejete si odejít?",
|
||||
"CopyStreamURLError": "Při kopírování URL došlo k chybě.",
|
||||
"LabelVideoResolution": "Rozlišení videa:",
|
||||
"LabelStreamType": "Typ streamu:",
|
||||
"LabelPlayerDimensions": "Zobrazené rozlišení:",
|
||||
|
@ -1460,11 +1439,9 @@
|
|||
"BoxSet": "Sbírka",
|
||||
"Track": "Stopa",
|
||||
"Season": "Sezóna",
|
||||
"ReleaseGroup": "Vydavatel",
|
||||
"PreferEmbeddedEpisodeInfosOverFileNames": "Preferovat vloženou informaci o epizodě před názvem souboru",
|
||||
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Používat informaci o epizodě z vložených metadat, pokud jsou k dispozici.",
|
||||
"Person": "Osoba",
|
||||
"OtherArtist": "Ostatní interpreti",
|
||||
"Movie": "Film",
|
||||
"Episode": "Epizoda",
|
||||
"ClientSettings": "Nastavení klienta",
|
||||
|
@ -1490,12 +1467,10 @@
|
|||
"LabelDeinterlaceMethod": "Metoda odstranění prokládání:",
|
||||
"DeinterlaceMethodHelp": "Vyberte metodu odstranění prokládání obrazu při překódování obsahu.",
|
||||
"UnsupportedPlayback": "Jellyfin nedokáže dešifrovat obsah chráněný Správou digitálních práv (DRM), ale pokusí se zobrazit veškerý obsah, včetně toho chráněného. Některé soubory se nemusí vůbec zobrazit kvůli šifrování nebo jiným nepodporovaným funkcím, např.: interaktivním názvům.",
|
||||
"MessageUnauthorizedUser": "Momentálně nemáte oprávnění k přístupu na server. Další informace získáte od správce serveru.",
|
||||
"Filter": "Filtr",
|
||||
"New": "Nové",
|
||||
"ButtonTogglePlaylist": "Playlist",
|
||||
"ButtonToggleContextMenu": "Více",
|
||||
"LabelNightly": "Aktualizace každou noc",
|
||||
"LabelStable": "Stabilní",
|
||||
"LabelChromecastVersion": "Verze Chromecastu",
|
||||
"ApiKeysCaption": "Seznam povolených API klíčů",
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
"Actor": "Skuespiller",
|
||||
"Add": "Tilføj",
|
||||
"AddItemToCollectionHelp": "Tilføj emner til samlinger ved at fremsøge dem, og herefter ved højre klik eller tap-menu at tilføje dem til samlinger.",
|
||||
"AddToCollection": "Tilføj til samling",
|
||||
"AddToPlayQueue": "Tilføj til afspilningskø",
|
||||
"AddToPlaylist": "Tilføj til afspilningsliste",
|
||||
|
@ -58,7 +57,6 @@
|
|||
"ButtonGotIt": "Forstået",
|
||||
"ButtonHelp": "Hjælp",
|
||||
"ButtonHome": "Hjem",
|
||||
"ButtonLearnMore": "Lær mere",
|
||||
"ButtonLibraryAccess": "Biblioteksadgang",
|
||||
"ButtonManualLogin": "Manuel Login",
|
||||
"ButtonMore": "Mere",
|
||||
|
@ -98,7 +96,6 @@
|
|||
"ButtonSubtitles": "Undertekster",
|
||||
"ButtonUninstall": "Afinstaller",
|
||||
"ButtonUp": "Op",
|
||||
"ButtonViewWebsite": "Besøg hjemmeside",
|
||||
"ButtonWebsite": "Hjemmeside",
|
||||
"CancelRecording": "Annuller optagelse",
|
||||
"CancelSeries": "Annuller serie",
|
||||
|
@ -201,7 +198,6 @@
|
|||
"HeaderApiKeys": "API Nøgler",
|
||||
"HeaderApiKeysHelp": "Eksterne applikationer skal have en API-nøgle for at kunne kommunikere med Jellyfin. Nøgler udstedes ved at logge ind med en Jellyfin konto, eller ved manuelt at tildele applikationen en nøgle.",
|
||||
"HeaderAudioSettings": "Lydindstillinger",
|
||||
"HeaderAutomaticUpdates": "Automatiske opdateringer",
|
||||
"HeaderBlockItemsWithNoRating": "Klokér titler uden eller med ukendt bedømmelses information:",
|
||||
"HeaderBooks": "Bøger",
|
||||
"HeaderCancelRecording": "Annuller Optagelse",
|
||||
|
@ -395,8 +391,6 @@
|
|||
"LabelAlbumArtists": "Albumartister:",
|
||||
"LabelAll": "Alle",
|
||||
"LabelAllowHWTranscoding": "Tillad hardware-omkodning",
|
||||
"LabelAllowServerAutoRestart": "Tillad serveren at genstarte automatisk for at påføre opdateringer",
|
||||
"LabelAllowServerAutoRestartHelp": "Serveren vil kun genstarte i inaktive perioder, når ingen brugere er aktive.",
|
||||
"LabelAllowedRemoteAddresses": "Fjernadgang IP adresse filter:",
|
||||
"LabelAllowedRemoteAddressesMode": "Fjernadgang IP adresse filter mode:",
|
||||
"LabelAppName": "App navn",
|
||||
|
@ -657,7 +651,6 @@
|
|||
"LabelVersionInstalled": "{0} installeret",
|
||||
"LabelXDlnaCapHelp": "Angiver indholdet i X_DLNACAP elementet i urn:schemas-dlna-org:device-1-0.",
|
||||
"LabelXDlnaDocHelp": "Angiver indholdet i X_DLNADOC elementet i urn:schemas-dlna-org:device-1-0.",
|
||||
"LabelYourFirstName": "Dit fornavn:",
|
||||
"LabelYoureDone": "Du er færdig!",
|
||||
"LabelZipCode": "Postnummer:",
|
||||
"LabelffmpegPath": "FFmpeg sti:",
|
||||
|
@ -709,7 +702,6 @@
|
|||
"MessageFileReadError": "Der opstod en fejl i forsøget på at læse filen.",
|
||||
"MessageForgotPasswordFileCreated": "Den følgende fil er blevet oprettet på din server og indeholder instruktioner vedrørende hvordan du skal fortsætte:",
|
||||
"MessageForgotPasswordInNetworkRequired": "Prøv igen inde i dit hjemmenetværk for at igangsætte nulstilling af din adgangskode.",
|
||||
"MessageInstallPluginFromApp": "Dette plugin skal installeres fra den app, du har til hensigt at bruge det i.",
|
||||
"MessageInvalidForgotPasswordPin": "En ugyldig eller udløbet pinkode blev indtastet. Prøv igen.",
|
||||
"MessageInvalidUser": "Ukendt brugernavn eller adgangskode. Prøv igen.",
|
||||
"MessageItemSaved": "Element gemt.",
|
||||
|
@ -914,7 +906,6 @@
|
|||
"ProductionLocations": "Produktionslokationer",
|
||||
"Programs": "Programmer",
|
||||
"Quality": "Kvalitet",
|
||||
"QueueAllFromHere": "Set alt her i kø",
|
||||
"RecentlyWatched": "Nyligt sete",
|
||||
"RecommendationBecauseYouLike": "Fordi du kan lide {0}",
|
||||
"RecommendationBecauseYouWatched": "Fordi du har set {0}",
|
||||
|
@ -1090,7 +1081,6 @@
|
|||
"Art": "Kunst",
|
||||
"Ascending": "Stigende",
|
||||
"Auto": "Auto",
|
||||
"AutoBasedOnLanguageSetting": "Automatisk (baseret på sprogindstilling)",
|
||||
"Backdrop": "Baggrund",
|
||||
"Backdrops": "Baggrunde",
|
||||
"Banner": "Banner",
|
||||
|
@ -1199,7 +1189,6 @@
|
|||
"LabelCache": "Cache:",
|
||||
"LabelCertificatePassword": "Adgangskode til certifikat:",
|
||||
"LabelCertificatePasswordHelp": "Hvis dit certifikat kræver en adgangskode, skriv det venligst her.",
|
||||
"LabelDashboardTheme": "Server dashboard tema:",
|
||||
"LabelDateTimeLocale": "Dato og tid område:",
|
||||
"LabelDefaultScreen": "Standard skærm:",
|
||||
"LabelDisplayLanguage": "Visningssprog:",
|
||||
|
@ -1226,12 +1215,10 @@
|
|||
"LabelScreensaver": "Pauseskærm:",
|
||||
"LabelSelectFolderGroups": "Gruppér automatisk indhold fra følgende mapper ind i visninger som Film, Musik og TV:",
|
||||
"LabelSelectFolderGroupsHelp": "Mapper der ikke er valgt vil blive vist for sig selv i deres egen visning.",
|
||||
"LabelSkin": "Tema Skin:",
|
||||
"LabelSkipBackLength": "Gå tilbage længde:",
|
||||
"LabelSkipForwardLength": "Gå fremad længde:",
|
||||
"LabelSortBy": "Sortér efter:",
|
||||
"LabelSortOrder": "Sorteringsorden:",
|
||||
"LabelSoundEffects": "Lydeffekter:",
|
||||
"LabelStatus": "Status:",
|
||||
"LabelSubtitles": "Undertekster",
|
||||
"LabelTVHomeScreen": "TV modus hjemmeskærm:",
|
||||
|
@ -1253,7 +1240,6 @@
|
|||
"LearnHowYouCanContribute": "Lær hvordan du kan bidrage.",
|
||||
"LeaveBlankToNotSetAPassword": "Du kan lade dette felt være tomt hvis du ikke ønsker adgangskode.",
|
||||
"Like": "Favorit",
|
||||
"LinksValue": "Link: {0}",
|
||||
"List": "Liste",
|
||||
"Live": "Live",
|
||||
"LiveTV": "Se Live TV",
|
||||
|
@ -1266,7 +1252,6 @@
|
|||
"MediaInfoLayout": "Udlæg",
|
||||
"MediaInfoRefFrames": "Ref billeder",
|
||||
"MediaInfoSampleRate": "Sample rate",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"MediaInfoStreamTypeData": "Data",
|
||||
"MediaInfoStreamTypeVideo": "Video",
|
||||
"MediaIsBeingConverted": "Mediet bliver konverteret til et format der er kompatibel med enheden der afspiller mediet.",
|
||||
|
@ -1323,7 +1308,6 @@
|
|||
"RepeatAll": "Gentag alle",
|
||||
"RepeatMode": "Gentagelses tilstand",
|
||||
"RepeatOne": "Gentag én",
|
||||
"RunAtStartup": "Kør ved opstart",
|
||||
"ScanForNewAndUpdatedFiles": "Skan for nye og opdaterede filer",
|
||||
"Schedule": "Tidsplan",
|
||||
"Screenshot": "Skærmbillede",
|
||||
|
@ -1348,7 +1332,6 @@
|
|||
"TabLiveTV": "Live TV",
|
||||
"TabLogs": "Log",
|
||||
"TabMetadata": "Metadata",
|
||||
"TabPlaylist": "Afspilningsliste",
|
||||
"TabServer": "Server",
|
||||
"TabStreaming": "Streamer",
|
||||
"Tags": "Mærker",
|
||||
|
@ -1371,7 +1354,6 @@
|
|||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"ValueVideoCodec": "Video Codek: {0}",
|
||||
"Vertical": "Vertikal",
|
||||
"VideoRange": "Video rækkevidde",
|
||||
"Watched": "Set",
|
||||
"Whitelist": "Hvidliste",
|
||||
"Yes": "Ja",
|
||||
|
@ -1407,14 +1389,12 @@
|
|||
"SubtitleOffset": "Undertekst Offset",
|
||||
"SelectAdminUsername": "Vælg et brugernavn til administrator kontoen.",
|
||||
"Season": "Sæson",
|
||||
"ReleaseGroup": "Release Group",
|
||||
"Premiere": "Premiere",
|
||||
"PreferEmbeddedEpisodeInfosOverFileNames": "Foretrækker integreret episode information frem for filnavne",
|
||||
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Dette bruger episode informationen fra de integrerede metadata, hvis den er tilgængelig.",
|
||||
"PlaybackData": "Afspilningsdata",
|
||||
"Person": "Person",
|
||||
"PasswordResetProviderHelp": "Vælg en leverandør af nulstil adgangskode, der skal bruges, når denne bruger anmoder om en nulstilling af adgangskode",
|
||||
"OtherArtist": "Anden kunstner",
|
||||
"OptionThumbCard": "Thumb card",
|
||||
"OptionThumb": "Thumb",
|
||||
"OptionRandom": "Tilfældig",
|
||||
|
@ -1437,8 +1417,6 @@
|
|||
"MediaInfoStreamTypeSubtitle": "Undertekst",
|
||||
"MediaInfoStreamTypeEmbeddedImage": "Indlejret billede",
|
||||
"MediaInfoStreamTypeAudio": "Lyd",
|
||||
"LaunchWebAppOnStartupHelp": "Åben web klienten i den standard web browser når serveren starter første gang. Dette vil ikke ske når restart server funktionen benyttes.",
|
||||
"LaunchWebAppOnStartup": "Åben webinterfacet når serveren startes",
|
||||
"LabelWeb": "Web:",
|
||||
"LabelVideoResolution": "Videoopløsning:",
|
||||
"LabelVideoBitrate": "Video bitrate:",
|
||||
|
@ -1478,7 +1456,6 @@
|
|||
"FetchingData": "Henter yderligere data",
|
||||
"Episode": "Afsnit",
|
||||
"DeinterlaceMethodHelp": "Vælg hvilken konverteringsmulighed der skal bruges til transkodning af indhold.",
|
||||
"CopyStreamURLError": "Der skete en fejl med at kopiere URL'en.",
|
||||
"CopyStreamURLSuccess": "URL blev kopieret.",
|
||||
"CopyStreamURL": "Kopiér stream URL",
|
||||
"ClientSettings": "Klient Indstillinger",
|
||||
|
@ -1490,7 +1467,6 @@
|
|||
"EveryXHours": "Hver {0} time",
|
||||
"OnApplicationStartup": "Ved programstart",
|
||||
"UnsupportedPlayback": "Jellyfin kan ikke dekryptere indhold, der er beskyttet af DRM, men alt indhold vil blive forsøgt afspillet uanset, inklusive beskyttede titler. Nogle filer kan eventuelt vises med sort skærm på grund af kryptering eller andre funktioner, der ikke understøttes, såsom interaktive titler.",
|
||||
"MessageUnauthorizedUser": "Du har ikke tilladelse til at tilgå serveren på dette tidspunkt. Kontakt din serveradministrator for mere information.",
|
||||
"Filter": "Filtrer",
|
||||
"New": "Nye",
|
||||
"ButtonTogglePlaylist": "Spilleliste",
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
"AccessRestrictedTryAgainLater": "Der Zugriff ist derzeit eingeschränkt. Bitte versuche es später erneut.",
|
||||
"Actor": "Darsteller(in)",
|
||||
"Add": "Hinzufügen",
|
||||
"AddItemToCollectionHelp": "Fügen Sie Elemente zu Sammlungen hinzu, indem Sie sie suchen und deren Rechtsklick- oder Antippmenü benutzen.",
|
||||
"AddToCollection": "Zur Sammlung hinzufügen",
|
||||
"AddToPlayQueue": "Zur Warteschlange hinzufügen",
|
||||
"AddToPlaylist": "Zur Wiedergabeliste hinzufügen",
|
||||
|
@ -36,7 +35,6 @@
|
|||
"Ascending": "Aufsteigend",
|
||||
"AspectRatio": "Seitenverhältnis",
|
||||
"AttributeNew": "Neu",
|
||||
"AutoBasedOnLanguageSetting": "Automatisch (basierend auf Spracheinstellung)",
|
||||
"Backdrop": "Hintergrund",
|
||||
"Backdrops": "Hintergründe",
|
||||
"BirthDateValue": "Geboren: {0}",
|
||||
|
@ -73,7 +71,6 @@
|
|||
"ButtonGotIt": "Verstanden",
|
||||
"ButtonGuide": "TV Guide",
|
||||
"ButtonHelp": "Hilfe",
|
||||
"ButtonLearnMore": "Erfahre mehr",
|
||||
"ButtonLibraryAccess": "Bibliothekszugang",
|
||||
"ButtonManualLogin": "Manuelle Anmeldung",
|
||||
"ButtonMore": "Mehr",
|
||||
|
@ -115,7 +112,6 @@
|
|||
"ButtonSubtitles": "Untertitel",
|
||||
"ButtonUninstall": "Deinstallieren",
|
||||
"ButtonUp": "Hoch",
|
||||
"ButtonViewWebsite": "Besuche die Website",
|
||||
"CancelRecording": "Aufnahme abbrechen",
|
||||
"CancelSeries": "Serien abbrechen",
|
||||
"Categories": "Kategorien",
|
||||
|
@ -267,7 +263,6 @@
|
|||
"HeaderAppearsOn": "Erscheint auf",
|
||||
"HeaderAudioBooks": "Hörbücher",
|
||||
"HeaderAudioSettings": "Audioeinstellungen",
|
||||
"HeaderAutomaticUpdates": "Automatische Updates",
|
||||
"HeaderBlockItemsWithNoRating": "Blockiere Inhalte mit keiner oder nicht erkannter Altersfreigabe:",
|
||||
"HeaderBooks": "Bücher",
|
||||
"HeaderBranding": "Branding / CSS",
|
||||
|
@ -478,8 +473,6 @@
|
|||
"LabelAlbumArtists": "Alben Interpreten:",
|
||||
"LabelAll": "Alle",
|
||||
"LabelAllowHWTranscoding": "Erlaube Hardware Transkodierung",
|
||||
"LabelAllowServerAutoRestart": "Erlaube dem Server sich automatisch neuzustarten, um Updates durchzuführen",
|
||||
"LabelAllowServerAutoRestartHelp": "Der Server startet nur wenn keine Nutzer aktiv sind neu.",
|
||||
"LabelAllowedRemoteAddresses": "Remote-IP Adressen Filter:",
|
||||
"LabelAllowedRemoteAddressesMode": "Remote IP Adressen Filtermodus:",
|
||||
"LabelAppName": "App Name",
|
||||
|
@ -515,7 +508,6 @@
|
|||
"LabelCustomDeviceDisplayName": "Angezeigter Name:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Lege einen individuellen Anzeigenamen fest oder lasse das Feld leer, um den vom gerät übermittelten Namen zu nutzen.",
|
||||
"LabelCustomRating": "Eigene Bewertung:",
|
||||
"LabelDashboardTheme": "Server Dashboard Theme:",
|
||||
"LabelDateAdded": "Hinzugefügt am:",
|
||||
"LabelDateAddedBehavior": "Verhalten für Hinzufügedatum bei neuen Inhalten:",
|
||||
"LabelDateAddedBehaviorHelp": "Wenn ein Metadatenwert vorhanden ist, wird dieser immer gegenüber den anderen Optionen bevorzugt werden.",
|
||||
|
@ -732,7 +724,6 @@
|
|||
"LabelSortBy": "Sortiert nach:",
|
||||
"LabelSortOrder": "Sortierreihenfolge:",
|
||||
"LabelSortTitle": "Sortierungs Titel:",
|
||||
"LabelSoundEffects": "Soundeffekte:",
|
||||
"LabelSource": "Quelle:",
|
||||
"LabelSpecialSeasonsDisplayName": "Anzeigename für Serien-Specials:",
|
||||
"LabelSportsCategories": "Sportkategorie:",
|
||||
|
@ -779,7 +770,6 @@
|
|||
"LabelXDlnaDoc": "X-DLNA Dokument:",
|
||||
"LabelXDlnaDocHelp": "Legt den Inhalt des X_DLNADOC Elements in der urn:schemas-dlna-org:device-1-0 namespace fest.",
|
||||
"LabelYear": "Jahr:",
|
||||
"LabelYourFirstName": "Vorname:",
|
||||
"LabelYoureDone": "Du bist fertig!",
|
||||
"LabelZipCode": "PLZ:",
|
||||
"LabelffmpegPath": "FFmpeg Verzeichnis:",
|
||||
|
@ -839,7 +829,6 @@
|
|||
"MessageFileReadError": "Es gab einen Fehler beim Lesen der Datei. Bitte versuche es erneut.",
|
||||
"MessageForgotPasswordFileCreated": "Die folgende Datei wurde auf deinem Server erstellt und enthält eine Anleitung, wie fortgefahren werden muss:",
|
||||
"MessageForgotPasswordInNetworkRequired": "Bitte versuche es erneut innerhalb deines Heimnetzwerks, um die Passwort Zurücksetzung zu starten.",
|
||||
"MessageInstallPluginFromApp": "Dieses Plugin muss von der App aus installiert werden, in der du es benutzen willst.",
|
||||
"MessageInvalidForgotPasswordPin": "Ein ungültiger oder abgelaufener PIN-Code wurde eingegeben. Bitte versuche es noch einmal.",
|
||||
"MessageInvalidUser": "Falscher Benutzername oder Passwort. Bitte versuche es noch einmal.",
|
||||
"MessageItemSaved": "Element gespeichert.",
|
||||
|
@ -1060,7 +1049,6 @@
|
|||
"ProductionLocations": "Drehorte",
|
||||
"Programs": "Programme",
|
||||
"Quality": "Qualität",
|
||||
"QueueAllFromHere": "Setze alles von hier auf Warteschlange",
|
||||
"Raised": "Angehoben",
|
||||
"Rate": "Bewerte",
|
||||
"RecentlyWatched": "Kürzlich gesehen",
|
||||
|
@ -1091,7 +1079,6 @@
|
|||
"ReplaceExistingImages": "Ersetze vorhandene Bilder",
|
||||
"ResumeAt": "Fortsetzen bei {0}",
|
||||
"Rewind": "Zurückspulen",
|
||||
"RunAtStartup": "Nach Hochfahren automatisch starten",
|
||||
"Runtime": "Laufzeit",
|
||||
"Saturday": "Samstag",
|
||||
"Save": "Speichern",
|
||||
|
@ -1178,7 +1165,6 @@
|
|||
"TabParentalControl": "Kindersicherung",
|
||||
"TabPassword": "Passwort",
|
||||
"TabPlayback": "Wiedergabe",
|
||||
"TabPlaylist": "Wiedergabeliste",
|
||||
"TabPlaylists": "Wiedergabelisten",
|
||||
"TabProfile": "Profil",
|
||||
"TabProfiles": "Profile",
|
||||
|
@ -1292,7 +1278,6 @@
|
|||
"LabelName": "Name:",
|
||||
"LabelProfileCodecs": "Codecs:",
|
||||
"LabelProfileContainer": "Container:",
|
||||
"LabelSkin": "Textur:",
|
||||
"Art": "Coverkunst",
|
||||
"Name": "Name",
|
||||
"Songs": "Songs",
|
||||
|
@ -1304,7 +1289,6 @@
|
|||
"LabelVersion": "Version:",
|
||||
"LabelVideo": "Video",
|
||||
"LeaveBlankToNotSetAPassword": "Dieses Feld frei lassen, um kein Passwort zu setzen.",
|
||||
"LinksValue": "Links: {0}",
|
||||
"MessageImageFileTypeAllowed": "Nur JPEG- und PNG-Dateien werden unterstützt.",
|
||||
"MessageImageTypeNotSelected": "Bitte wähle einen Bildtyp aus dem Drop-Down Menü aus.",
|
||||
"Normal": "Normal",
|
||||
|
@ -1386,7 +1370,6 @@
|
|||
"DashboardVersionNumber": "Version: {0}",
|
||||
"DashboardServerName": "Server: {0}",
|
||||
"LabelWeb": "Web:",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoStreamTypeData": "Daten",
|
||||
"MediaInfoStreamTypeEmbeddedImage": "Eingebettetes Bild",
|
||||
|
@ -1421,8 +1404,6 @@
|
|||
"DashboardOperatingSystem": "Betriebssystem: {0}",
|
||||
"DashboardArchitecture": "Architektur: {0}",
|
||||
"LabelVideoCodec": "Videocodec:",
|
||||
"LaunchWebAppOnStartup": "Das Webinterface öffnen, wenn der Server startet",
|
||||
"LaunchWebAppOnStartupHelp": "Öffne den Webclient in Standard-Webbrowser, wenn der Server zum ersten Mal gestartet wird. Dies tritt bei Verwendung der Neustart-Serverfunktion nicht auf.",
|
||||
"MusicArtist": "Interpret",
|
||||
"MusicAlbum": "Musikalbum",
|
||||
"MoreMediaInfo": "Medieninformation",
|
||||
|
@ -1441,11 +1422,9 @@
|
|||
"MusicLibraryHelp": "Überprüfe den {0}Musikbenennungsguide{1}.",
|
||||
"OptionRandom": "Zufällig",
|
||||
"TabNetworking": "Netzwerk",
|
||||
"VideoRange": "Videobereich",
|
||||
"ButtonSplit": "Trennen",
|
||||
"SelectAdminUsername": "Bitte wählen Sie einen Benutzernamen für den Administrator-Account.",
|
||||
"HeaderNavigation": "Navigation",
|
||||
"CopyStreamURLError": "Beim Kopieren der URL ist ein Fehler aufgetreten.",
|
||||
"MessageConfirmAppExit": "Wirklich verlassen?",
|
||||
"LabelVideoResolution": "Videoauflösung:",
|
||||
"LabelStreamType": "Streamtyp:",
|
||||
|
@ -1473,9 +1452,7 @@
|
|||
"PathNotFound": "Der Pfad konnte nicht gefunden werden. Bitte versichere dich dass der Pfad korrekt ist und versuche es erneut.",
|
||||
"Track": "Track",
|
||||
"Season": "Staffel",
|
||||
"ReleaseGroup": "Veröffentlichungs-Gruppe",
|
||||
"Person": "Person",
|
||||
"OtherArtist": "Andere Künstler",
|
||||
"Movie": "Film",
|
||||
"Episode": "Episode",
|
||||
"Artist": "Künstler",
|
||||
|
@ -1491,12 +1468,10 @@
|
|||
"UnsupportedPlayback": "Jellyfin kann keine DRM-geschützten Inhalte entschlüsseln, aber es wird versucht, alle Inhalte unabhängig davon zu entschlüsseln, einschließlich geschützter Titel. Einige Dateien können aufgrund der Verschlüsselung oder anderer nicht unterstützter Funktionen, wie z.B. interaktive Titel, komplett schwarz erscheinen.",
|
||||
"Filter": "Filter",
|
||||
"New": "Neu",
|
||||
"MessageUnauthorizedUser": "Sie sind im Moment nicht berechtigt, auf den Server zuzugreifen. Bitte kontaktieren Sie Ihren Server-Administrator für weitere Informationen.",
|
||||
"HeaderFavoritePlaylists": "Lieblings-Wiedergabeliste",
|
||||
"ButtonTogglePlaylist": "Wiedergabeliste",
|
||||
"ButtonToggleContextMenu": "Mehr",
|
||||
"ApiKeysCaption": "Liste der aktuell aktivierten API-Schlüssel",
|
||||
"LabelNightly": "Nightly",
|
||||
"LabelStable": "Stable",
|
||||
"LabelChromecastVersion": "Chromecast Version",
|
||||
"HeaderDVR": "DVR",
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
"AttributeNew": "Νέο",
|
||||
"Audio": "Ήχος",
|
||||
"Auto": "Αυτόματο",
|
||||
"AutoBasedOnLanguageSetting": "Αυτόματα (με βάση τη ρύθμιση γλώσσας)",
|
||||
"Backdrop": "Φόντο",
|
||||
"Backdrops": "Σκηνικά",
|
||||
"Banner": "Πανό",
|
||||
|
@ -73,7 +72,6 @@
|
|||
"ButtonHelp": "Βοήθεια",
|
||||
"ButtonHome": "Αρχική",
|
||||
"ButtonInfo": "Πληροφορία",
|
||||
"ButtonLearnMore": "Μάθετε περισσότερα",
|
||||
"ButtonLibraryAccess": "Πρόσβαση στη βιβλιοθήκη",
|
||||
"ButtonManualLogin": "Χειροκίνητη Είσοδος",
|
||||
"ButtonMore": "Περισσότερα",
|
||||
|
@ -116,7 +114,6 @@
|
|||
"ButtonTrailer": "Τρέϊλερ",
|
||||
"ButtonUninstall": "Απεγκατάσταση",
|
||||
"ButtonUp": "Επάνω",
|
||||
"ButtonViewWebsite": "Εμφάνιση ιστοσελίδας",
|
||||
"ButtonWebsite": "Ιστοσελίδα",
|
||||
"CancelRecording": "Ακύρωση Εγγραφής",
|
||||
"CancelSeries": "Ακύρωση Σειράς",
|
||||
|
@ -260,7 +257,6 @@
|
|||
"HeaderAppearsOn": "Εμφανίζεται σε",
|
||||
"HeaderAudioBooks": "Μουσικά Βιβλία",
|
||||
"HeaderAudioSettings": "Ρυθμίσεις Ήχου",
|
||||
"HeaderAutomaticUpdates": "Αυτόματες Ανανεώσεις",
|
||||
"HeaderBlockItemsWithNoRating": "Αποκλεισμός στοιχείων χωρίς ή μη αναγνωρισμένων πληροφοριών αξιολόγησης:",
|
||||
"HeaderBooks": "Βιβλία",
|
||||
"HeaderCancelRecording": "Ακύρωση Εγγραφής",
|
||||
|
@ -443,8 +439,6 @@
|
|||
"LabelAlbumArtPN": "PN άλμπουμ art:",
|
||||
"LabelAlbumArtists": "Καλλιτέχνες του 'Αλμπουμ:",
|
||||
"LabelAll": "Όλα",
|
||||
"LabelAllowServerAutoRestart": "Αυτόματη επανεκκίνηση του σέρβερ για να εγκαταστήσει τις αναβαθμίσεις",
|
||||
"LabelAllowServerAutoRestartHelp": "Ο server θα κάνει επανεκκίνηση μόνο κατά τη διάρκεια αδρανών περιόδων, όταν δεν υπάρχουν ενεργοί χρήστες.",
|
||||
"LabelAppName": "Όνομα App",
|
||||
"LabelAppNameExample": "Παράδειγμα: Sickbeard, NzbDrone",
|
||||
"LabelArtists": "Καλλιτέχνες:",
|
||||
|
@ -474,7 +468,6 @@
|
|||
"LabelCustomCssHelp": "Εφαρμόστε το δικό σας προσαρμοσμένο css στην διεπαφή ιστού.",
|
||||
"LabelCustomDeviceDisplayName": "Εμφάνιση ονόματος:",
|
||||
"LabelCustomRating": "Προσαρμοσμένη αξιολόγηση:",
|
||||
"LabelDashboardTheme": "Θέμα εμφάνισης πίνακα ελέγχου server:",
|
||||
"LabelDateAdded": "Ημερνία προσθήκης:",
|
||||
"LabelDateTimeLocale": "Ημερομηνία τοπική ώρα:",
|
||||
"LabelDay": "Ημέρα:",
|
||||
|
@ -655,7 +648,6 @@
|
|||
"LabelSortBy": "Ταξινόμηση κατά:",
|
||||
"LabelSortOrder": "Σειρά ταξινόμησης:",
|
||||
"LabelSortTitle": "Τίτλος ταξινόμησης:",
|
||||
"LabelSoundEffects": "Ηχητικά Εφέ:",
|
||||
"LabelSource": "Πηγή:",
|
||||
"LabelSpecialSeasonsDisplayName": "Ειδικό εμφανιζόμενο όνομα σεζόν:",
|
||||
"LabelStartWhenPossible": "Έναρξη όταν είναι δυνατό:",
|
||||
|
@ -696,7 +688,6 @@
|
|||
"LabelXDlnaCapHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.",
|
||||
"LabelXDlnaDocHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.",
|
||||
"LabelYear": "Έτος:",
|
||||
"LabelYourFirstName": "Το όνομά σας:",
|
||||
"LabelYoureDone": "Είστε Έτοιμοι!",
|
||||
"LabelZipCode": "Ταχυδ/κός κώδικας:",
|
||||
"Large": "Μεγάλο",
|
||||
|
@ -704,7 +695,6 @@
|
|||
"LearnHowYouCanContribute": "Μάθετε πώς μπορείτε να συμβάλλετε.",
|
||||
"LibraryAccessHelp": "Επιλέξτε τους φακέλους μέσων για να το μοιραστείτε με αυτόν το χρήστη. Οι διαχειριστές θα έχουν τη δυνατότητα να επεξεργάζεστε όλα φακέλους χρησιμοποιώντας τα μεταδεδομένα manager.",
|
||||
"Like": "Μου αρέσει",
|
||||
"LinksValue": "Σύνδεσμοι: {0}",
|
||||
"List": "Λίστα",
|
||||
"Live": "Ζωντανά",
|
||||
"LiveBroadcasts": "Ζωντανές εκπομπές",
|
||||
|
@ -749,7 +739,6 @@
|
|||
"MessageFileReadError": "Παρουσιάστηκε σφάλμα κατά την ανάγνωση του αρχείου. Παρακαλώ προσπάθησε ξανά.",
|
||||
"MessageForgotPasswordFileCreated": "Το ακόλουθο αρχείο έχει δημιουργηθεί στο διακομιστή σας και περιέχει οδηγίες για το πώς να συνεχίσετε:",
|
||||
"MessageForgotPasswordInNetworkRequired": "Παρακαλώ δοκιμάστε ξανά μέσα στο οικιακό σας δίκτυο για να ξεκινήσετε τη διαδικασία επαναφοράς κωδικού πρόσβασης.",
|
||||
"MessageInstallPluginFromApp": "Αυτό το πρόσθετο πρέπει να εγκατασταθεί την εφαρμογή που σκοπεύετε να χρησιμοποιήσετε.",
|
||||
"MessageInvalidForgotPasswordPin": "Καταχωρήθηκε ένα άκυρο ή ληγμένο PIN. Παρακαλώ προσπαθήστε ξανά.",
|
||||
"MessageInvalidUser": "Μη έγκυρο όνομα ή κωδικός. Παρακαλώ προσπαθήστε ξανά.",
|
||||
"MessageItemSaved": "Το στοιχείο αποθηκεύτηκε.",
|
||||
|
@ -955,7 +944,6 @@
|
|||
"ProductionLocations": "Τοποθεσίες παραγωγής",
|
||||
"Programs": "Προγράμματα",
|
||||
"Quality": "Ποιότητα",
|
||||
"QueueAllFromHere": "Τοποθετήστε στην ουρά αναπαραγωγής όλα από εδώ",
|
||||
"Raised": "Αυξήθηκε",
|
||||
"RecentlyWatched": "Πρόσφατα αναπαραχθέντα",
|
||||
"RecommendationBecauseYouLike": "Επειδή σας αρέσει {0}",
|
||||
|
@ -983,7 +971,6 @@
|
|||
"ReplaceExistingImages": "Αντικατάσταση υπαρχουσών εικόνων",
|
||||
"ResumeAt": "Συνέχιση από {0}",
|
||||
"Rewind": "Αναπαραγωγή προς τα πίσω",
|
||||
"RunAtStartup": "Εκτέλεση κατά την εκκίνηση",
|
||||
"Runtime": "Χρόνος εκτέλεσης",
|
||||
"Saturday": "Σάββατο",
|
||||
"Save": "Αποθήκευση",
|
||||
|
@ -1068,7 +1055,6 @@
|
|||
"TabParentalControl": "Γονικός έλεγχος",
|
||||
"TabPassword": "Κωδικός",
|
||||
"TabPlayback": "Αναπαραγωγή",
|
||||
"TabPlaylist": "Λίστα",
|
||||
"TabPlaylists": "Λίστες αναπαραγωγής",
|
||||
"TabPlugins": "Πρόσθετα",
|
||||
"TabProfile": "Προφίλ",
|
||||
|
@ -1201,7 +1187,6 @@
|
|||
"AllowMediaConversionHelp": "Παραχώρηση ή στέρηση πρόσβασης στην λειτουργία μετατροπής μέσων.",
|
||||
"AllowHWTranscodingHelp": "Επιτρέπει τον δέκτη να επανακωδικοποιεί τις ροές σε πραγματικό χρόνο. Αυτό μπορεί να μειώσει τον φόρτο κωδικοποίησης τον σέρβερ.",
|
||||
"Alerts": "Προειδοποίηση",
|
||||
"AddItemToCollectionHelp": "Προσθέστε στις συλλογές κάνοντας αναζήτηση και δεξί κλικ ή μέσω των μενού.",
|
||||
"MediaInfoStreamTypeVideo": "Βίντεο",
|
||||
"MediaInfoStreamTypeSubtitle": "Υπότιτλος",
|
||||
"MediaInfoStreamTypeData": "Δεδομένα",
|
||||
|
|
|
@ -53,7 +53,6 @@
|
|||
"AccessRestrictedTryAgainLater": "Access is currently restricted. Please try again later.",
|
||||
"Actor": "Actor",
|
||||
"Add": "Add",
|
||||
"AddItemToCollectionHelp": "Add items to collections by searching for them and using their right-click or tap menus to add them to a collection.",
|
||||
"AddToCollection": "Add to collection",
|
||||
"AddToPlayQueue": "Add to play queue",
|
||||
"AddToPlaylist": "Add to playlist",
|
||||
|
@ -88,7 +87,6 @@
|
|||
"Audio": "Audio",
|
||||
"AuthProviderHelp": "Select an Authentication Provider to be used to authenticate this user's password.",
|
||||
"Auto": "Auto",
|
||||
"AutoBasedOnLanguageSetting": "Auto (based on language setting)",
|
||||
"Backdrop": "Backdrop",
|
||||
"Backdrops": "Backdrops",
|
||||
"Banner": "Banner",
|
||||
|
@ -130,7 +128,6 @@
|
|||
"ButtonHelp": "Help",
|
||||
"ButtonHome": "Home",
|
||||
"ButtonInfo": "Info",
|
||||
"ButtonLearnMore": "Learn more",
|
||||
"ButtonLibraryAccess": "Library access",
|
||||
"ButtonManualLogin": "Manual Login",
|
||||
"ButtonMore": "More",
|
||||
|
@ -176,7 +173,6 @@
|
|||
"ButtonTrailer": "Trailer",
|
||||
"ButtonUninstall": "Uninstall",
|
||||
"ButtonUp": "Up",
|
||||
"ButtonViewWebsite": "View website",
|
||||
"ButtonWebsite": "Website",
|
||||
"CancelRecording": "Cancel recording",
|
||||
"CancelSeries": "Cancel series",
|
||||
|
@ -327,7 +323,6 @@
|
|||
"HeaderAppearsOn": "Appears On",
|
||||
"HeaderAudioBooks": "Audio Books",
|
||||
"HeaderAudioSettings": "Audio Settings",
|
||||
"HeaderAutomaticUpdates": "Automatic Updates",
|
||||
"HeaderBooks": "Books",
|
||||
"HeaderBranding": "Branding",
|
||||
"HeaderCancelRecording": "Cancel Recording",
|
||||
|
@ -483,7 +478,6 @@
|
|||
"TabResumeSettings": "Resume",
|
||||
"TabResponses": "Responses",
|
||||
"TabRecordings": "Recordings",
|
||||
"TabPlaylist": "Playlist",
|
||||
"TabPlayback": "Playback",
|
||||
"TabOther": "Other",
|
||||
"TabNotifications": "Notifications",
|
||||
|
@ -548,7 +542,6 @@
|
|||
"SaveSubtitlesIntoMediaFolders": "Save subtitles into media folders",
|
||||
"Saturday": "Saturday",
|
||||
"Runtime": "Runtime",
|
||||
"RunAtStartup": "Run at startup",
|
||||
"Rewind": "Rewind",
|
||||
"ResumeAt": "Resume from {0}",
|
||||
"ReplaceExistingImages": "Replace existing images",
|
||||
|
@ -576,7 +569,6 @@
|
|||
"RecommendationBecauseYouWatched": "Because you watched {0}",
|
||||
"Rate": "Rate",
|
||||
"Raised": "Raised",
|
||||
"QueueAllFromHere": "Queue all from here",
|
||||
"Quality": "Quality",
|
||||
"Producer": "Producer",
|
||||
"Primary": "Primary",
|
||||
|
@ -713,7 +705,6 @@
|
|||
"MessageNoAvailablePlugins": "No available plugins.",
|
||||
"MessageInvalidUser": "Invalid username or password. Please try again.",
|
||||
"MessageInvalidForgotPasswordPin": "An invalid or expired pin code was entered. Please try again.",
|
||||
"MessageInstallPluginFromApp": "This plugin must be installed from within the app you intend to use it in.",
|
||||
"MessageImageTypeNotSelected": "Please select an image type from the drop-down menu.",
|
||||
"MessageImageFileTypeAllowed": "Only JPEG and PNG files are supported.",
|
||||
"MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.",
|
||||
|
@ -756,7 +747,6 @@
|
|||
"LibraryAccessHelp": "Select the libraries to share with this user. Administrators will be able to edit all folders using the metadata manager.",
|
||||
"LeaveBlankToNotSetAPassword": "You can leave this field blank to set no password.",
|
||||
"LearnHowYouCanContribute": "Learn how you can contribute.",
|
||||
"LaunchWebAppOnStartupHelp": "Open the web client in your default web browser when the server initially starts. This will not occur when using the restart server function.",
|
||||
"LanNetworksHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be considered on local network when enforcing bandwidth restrictions. If set, all other IP addresses will be considered to be on the external network and will be subject to the external bandwidth restrictions. If left blank, only the server's subnet is considered to be on the local network.",
|
||||
"LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
|
||||
"LabelffmpegPath": "FFmpeg path:",
|
||||
|
@ -805,14 +795,12 @@
|
|||
"LabelStartWhenPossible": "Start when possible:",
|
||||
"LabelSpecialSeasonsDisplayName": "Special season display name:",
|
||||
"LabelSource": "Source:",
|
||||
"LabelSoundEffects": "Sound effects:",
|
||||
"LabelSortBy": "Sort by:",
|
||||
"LabelSonyAggregationFlagsHelp": "Determines the content of the aggregationFlags element in the urn:schemas-sonycom:av namespace.",
|
||||
"LabelSkipIfGraphicalSubsPresentHelp": "Keeping text versions of subtitles will result in more efficient delivery and decrease the likelihood of video transcoding.",
|
||||
"LabelSkipIfAudioTrackPresentHelp": "Uncheck this to ensure all videos have subtitles, regardless of audio language.",
|
||||
"LabelSkipIfAudioTrackPresent": "Skip if the default audio track matches the download language",
|
||||
"LabelSkipBackLength": "Skip back length:",
|
||||
"LabelSkin": "Skin:",
|
||||
"LabelSize": "Size:",
|
||||
"LabelSimultaneousConnectionLimit": "Simultaneous stream limit:",
|
||||
"LabelServerHost": "Host:",
|
||||
|
@ -857,8 +845,6 @@
|
|||
"MessageEnablingOptionLongerScans": "Enabling this option may result in significantly longer library scans.",
|
||||
"MessageConfirmRecordingCancellation": "Cancel recording?",
|
||||
"MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?",
|
||||
"LaunchWebAppOnStartup": "Launch the web interface when starting the server",
|
||||
"LabelYourFirstName": "Your first name:",
|
||||
"OnlyForcedSubtitles": "Only Forced",
|
||||
"Off": "Off",
|
||||
"NumLocationsValue": "{0} folders",
|
||||
|
@ -1161,8 +1147,6 @@
|
|||
"LabelAppName": "App name",
|
||||
"LabelAllowedRemoteAddressesMode": "Remote IP address filter mode:",
|
||||
"LabelAllowedRemoteAddresses": "Remote IP address filter:",
|
||||
"LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods when no users are active.",
|
||||
"LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates",
|
||||
"LabelAllowHWTranscoding": "Allow hardware transcoding",
|
||||
"LabelAll": "All",
|
||||
"LabelAlbumArtists": "Album artists:",
|
||||
|
@ -1253,7 +1237,6 @@
|
|||
"Watched": "Watched",
|
||||
"ViewPlaybackInfo": "View playback info",
|
||||
"ViewAlbum": "View album",
|
||||
"VideoRange": "Video range",
|
||||
"SubtitleAppearanceSettingsAlsoPassedToCastDevices": "These settings also apply to any Chromecast playback started by this device.",
|
||||
"Studios": "Studios",
|
||||
"StopRecording": "Stop recording",
|
||||
|
@ -1266,7 +1249,6 @@
|
|||
"OptionContinuing": "Continuing",
|
||||
"OptionCommunityRating": "Community Rating",
|
||||
"MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.",
|
||||
"LinksValue": "Links: {0}",
|
||||
"LabelSelectVersionToInstall": "Select version to install:",
|
||||
"LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata.",
|
||||
"OptionLikes": "Likes",
|
||||
|
@ -1320,7 +1302,6 @@
|
|||
"Up": "Up",
|
||||
"SearchForCollectionInternetMetadata": "Search the internet for artwork and metadata",
|
||||
"MediaInfoStreamTypeSubtitle": "Subtitle",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"ValueOneSeries": "1 series",
|
||||
"MediaInfoBitrate": "Bitrate",
|
||||
"LabelVideo": "Video",
|
||||
|
@ -1330,7 +1311,6 @@
|
|||
"LabelInternetQuality": "Internet quality:",
|
||||
"LabelFileOrUrl": "File or URL:",
|
||||
"LabelDateAdded": "Date added:",
|
||||
"LabelDashboardTheme": "Server dashboard theme:",
|
||||
"LabelCustomRating": "Custom rating:",
|
||||
"LabelCollection": "Collection:",
|
||||
"LabelChannels": "Channels:",
|
||||
|
@ -1455,7 +1435,6 @@
|
|||
"LabelPlayerDimensions": "Player dimensions:",
|
||||
"LabelDroppedFrames": "Dropped frames:",
|
||||
"LabelCorruptedFrames": "Corrupted frames:",
|
||||
"CopyStreamURLError": "There was an error copying the URL.",
|
||||
"NoCreatedLibraries": "Seems like you haven't created any libraries yet. {0}Would you like to create one now?{1}",
|
||||
"AskAdminToCreateLibrary": "Ask an administrator to create a library.",
|
||||
"PlaybackErrorNoCompatibleStream": "This client isn't compatible with the media and the server isn't sending a compatible media format.",
|
||||
|
@ -1477,11 +1456,9 @@
|
|||
"Yadif": "YADIF",
|
||||
"Track": "Track",
|
||||
"Season": "Season",
|
||||
"ReleaseGroup": "Release Group",
|
||||
"PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode information over filenames",
|
||||
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "This uses the episode information from the embedded metadata if available.",
|
||||
"Person": "Person",
|
||||
"OtherArtist": "Other Artist",
|
||||
"Movie": "Movie",
|
||||
"LabelLibraryPageSizeHelp": "Sets the amount of items to show on a library page. Set to 0 in order to disable paging.",
|
||||
"LabelLibraryPageSize": "Library page size:",
|
||||
|
@ -1494,7 +1471,6 @@
|
|||
"AlbumArtist": "Album Artist",
|
||||
"Album": "Album",
|
||||
"UnsupportedPlayback": "Jellyfin cannot decrypt content protected by DRM but all content will be attempted regardless, including protected titles. Some files may appear completely black due to encryption or other unsupported features, such as interactive titles.",
|
||||
"MessageUnauthorizedUser": "You are not authorized to access the server at this time. Please contact your server administrator for more information.",
|
||||
"ButtonTogglePlaylist": "Playlist",
|
||||
"ButtonToggleContextMenu": "More",
|
||||
"HeaderDVR": "DVR",
|
||||
|
@ -1546,7 +1522,6 @@
|
|||
"LabelSyncPlayTimeOffset": "Time offset with the server:",
|
||||
"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.",
|
||||
"LabelRequireHttps": "Require HTTPS",
|
||||
"LabelNightly": "Nightly",
|
||||
"LabelStable": "Stable",
|
||||
"LabelChromecastVersion": "Chromecast Version",
|
||||
"LabelEnableHttpsHelp": "Enables the server to listen on the configured HTTPS port. A valid certificate must also be configured in order for this to take effect.",
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
"AccessRestrictedTryAgainLater": "Access is currently restricted. Please try again later.",
|
||||
"Actor": "Actor",
|
||||
"Add": "Add",
|
||||
"AddItemToCollectionHelp": "Add items to collections by searching for them and using their right-click or tap menus to add them to a collection.",
|
||||
"AddToCollection": "Add to collection",
|
||||
"AddToPlayQueue": "Add to play queue",
|
||||
"AddToPlaylist": "Add to playlist",
|
||||
|
@ -47,7 +46,6 @@
|
|||
"Audio": "Audio",
|
||||
"AuthProviderHelp": "Select an authentication provider to be used to authenticate this user's password.",
|
||||
"Auto": "Auto",
|
||||
"AutoBasedOnLanguageSetting": "Auto (based on language setting)",
|
||||
"Backdrop": "Backdrop",
|
||||
"Backdrops": "Backdrops",
|
||||
"Banner": "Banner",
|
||||
|
@ -93,7 +91,6 @@
|
|||
"ButtonHelp": "Help",
|
||||
"ButtonHome": "Home",
|
||||
"ButtonInfo": "Info",
|
||||
"ButtonLearnMore": "Learn more",
|
||||
"ButtonLibraryAccess": "Library access",
|
||||
"ButtonManualLogin": "Manual Login",
|
||||
"ButtonMore": "More",
|
||||
|
@ -142,7 +139,6 @@
|
|||
"ButtonTrailer": "Trailer",
|
||||
"ButtonUninstall": "Uninstall",
|
||||
"ButtonUp": "Up",
|
||||
"ButtonViewWebsite": "View website",
|
||||
"ButtonWebsite": "Website",
|
||||
"CancelRecording": "Cancel recording",
|
||||
"CancelSeries": "Cancel series",
|
||||
|
@ -171,7 +167,6 @@
|
|||
"Continuing": "Continuing",
|
||||
"CopyStreamURL": "Copy Stream URL",
|
||||
"CopyStreamURLSuccess": "URL copied successfully.",
|
||||
"CopyStreamURLError": "There was an error copying the URL.",
|
||||
"CriticRating": "Critic rating",
|
||||
"CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.",
|
||||
"DateAdded": "Date added",
|
||||
|
@ -319,7 +314,6 @@
|
|||
"HeaderAppearsOn": "Appears On",
|
||||
"HeaderAudioBooks": "Audio Books",
|
||||
"HeaderAudioSettings": "Audio Settings",
|
||||
"HeaderAutomaticUpdates": "Automatic Updates",
|
||||
"HeaderBlockItemsWithNoRating": "Block items with no or unrecognized rating information:",
|
||||
"HeaderBooks": "Books",
|
||||
"HeaderBranding": "Branding",
|
||||
|
@ -558,8 +552,6 @@
|
|||
"LabelAlbumArtists": "Album artists:",
|
||||
"LabelAll": "All",
|
||||
"LabelAllowHWTranscoding": "Allow hardware transcoding",
|
||||
"LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates",
|
||||
"LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods when no users are active.",
|
||||
"LabelAllowedRemoteAddresses": "Remote IP address filter:",
|
||||
"LabelAllowedRemoteAddressesMode": "Remote IP address filter mode:",
|
||||
"LabelAppName": "App name",
|
||||
|
@ -605,7 +597,6 @@
|
|||
"LabelCustomDeviceDisplayName": "Display name:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.",
|
||||
"LabelCustomRating": "Custom rating:",
|
||||
"LabelDashboardTheme": "Server dashboard theme:",
|
||||
"LabelDateAdded": "Date added:",
|
||||
"LabelDateAddedBehavior": "Date added behavior for new content:",
|
||||
"LabelDateAddedBehaviorHelp": "If a metadata value is present, it will always be used before either of these options.",
|
||||
|
@ -759,7 +750,6 @@
|
|||
"LabelName": "Name:",
|
||||
"LabelChromecastVersion": "Chromecast Version",
|
||||
"LabelStable": "Stable",
|
||||
"LabelNightly": "Nightly",
|
||||
"LabelUnstable": "Unstable",
|
||||
"LabelNewName": "New name:",
|
||||
"LabelNewPassword": "New password:",
|
||||
|
@ -842,7 +832,6 @@
|
|||
"LabelServerName": "Server name:",
|
||||
"LabelSimultaneousConnectionLimit": "Simultaneous stream limit:",
|
||||
"LabelSize": "Size:",
|
||||
"LabelSkin": "Skin:",
|
||||
"LabelSkipBackLength": "Skip back length:",
|
||||
"LabelSkipForwardLength": "Skip forward length:",
|
||||
"LabelSkipIfAudioTrackPresent": "Skip if the default audio track matches the download language",
|
||||
|
@ -854,7 +843,6 @@
|
|||
"LabelSortBy": "Sort by:",
|
||||
"LabelSortOrder": "Sort order:",
|
||||
"LabelSortTitle": "Sort title:",
|
||||
"LabelSoundEffects": "Sound effects:",
|
||||
"LabelSource": "Source:",
|
||||
"LabelSpecialSeasonsDisplayName": "Special season display name:",
|
||||
"LabelSportsCategories": "Sports categories:",
|
||||
|
@ -934,7 +922,6 @@
|
|||
"LabelXDlnaDoc": "X-DLNA doc:",
|
||||
"LabelXDlnaDocHelp": "Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.",
|
||||
"LabelYear": "Year:",
|
||||
"LabelYourFirstName": "Your first name:",
|
||||
"LabelYoureDone": "You're Done!",
|
||||
"LabelZipCode": "Zip Code:",
|
||||
"LabelffmpegPath": "FFmpeg path:",
|
||||
|
@ -942,13 +929,10 @@
|
|||
"LanNetworksHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be considered on local network when enforcing bandwidth restrictions. If set, all other IP addresses will be considered to be on the external network and will be subject to the external bandwidth restrictions. If left blank, only the server's subnet is considered to be on the local network.",
|
||||
"Large": "Large",
|
||||
"LatestFromLibrary": "Latest {0}",
|
||||
"LaunchWebAppOnStartup": "Launch the web interface when starting the server",
|
||||
"LaunchWebAppOnStartupHelp": "Open the web client in your default web browser when the server initially starts. This will not occur when using the restart server function.",
|
||||
"LearnHowYouCanContribute": "Learn how you can contribute.",
|
||||
"LeaveBlankToNotSetAPassword": "You can leave this field blank to set no password.",
|
||||
"LibraryAccessHelp": "Select the libraries to share with this user. Administrators will be able to edit all folders using the metadata manager.",
|
||||
"Like": "Like",
|
||||
"LinksValue": "Links: {0}",
|
||||
"List": "List",
|
||||
"Live": "Live",
|
||||
"LiveBroadcasts": "Live broadcasts",
|
||||
|
@ -984,7 +968,6 @@
|
|||
"MediaInfoSampleRate": "Sample rate",
|
||||
"MediaInfoSize": "Size",
|
||||
"MediaInfoTimestamp": "Timestamp",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoStreamTypeData": "Data",
|
||||
"MediaInfoStreamTypeEmbeddedImage": "Embedded Image",
|
||||
|
@ -1016,10 +999,8 @@
|
|||
"MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.",
|
||||
"MessageImageFileTypeAllowed": "Only JPEG and PNG files are supported.",
|
||||
"MessageImageTypeNotSelected": "Please select an image type from the drop-down menu.",
|
||||
"MessageInstallPluginFromApp": "This plugin must be installed from within the app you intend to use it in.",
|
||||
"MessageInvalidForgotPasswordPin": "An invalid or expired pin code was entered. Please try again.",
|
||||
"MessageInvalidUser": "Invalid username or password. Please try again.",
|
||||
"MessageUnauthorizedUser": "You are not authorized to access the server at this time. Please contact your server administrator for more information.",
|
||||
"MessageItemSaved": "Item saved.",
|
||||
"MessageItemsAdded": "Items added.",
|
||||
"MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item or the global default value.",
|
||||
|
@ -1266,7 +1247,6 @@
|
|||
"OptionWeekends": "Weekends",
|
||||
"OptionWeekly": "Weekly",
|
||||
"OriginalAirDateValue": "Original air date: {0}",
|
||||
"OtherArtist": "Other Artist",
|
||||
"Overview": "Overview",
|
||||
"PackageInstallCancelled": "{0} (version {1}) installation cancelled.",
|
||||
"PackageInstallCompleted": "{0} (version {1}) installation completed.",
|
||||
|
@ -1315,7 +1295,6 @@
|
|||
"ProductionLocations": "Production locations",
|
||||
"Programs": "Programs",
|
||||
"Quality": "Quality",
|
||||
"QueueAllFromHere": "Queue all from here",
|
||||
"Raised": "Raised",
|
||||
"Rate": "Rate",
|
||||
"RecentlyWatched": "Recently watched",
|
||||
|
@ -1334,7 +1313,6 @@
|
|||
"RefreshMetadata": "Refresh metadata",
|
||||
"RefreshQueued": "Refresh queued.",
|
||||
"ReleaseDate": "Release date",
|
||||
"ReleaseGroup": "Release Group",
|
||||
"RememberMe": "Remember Me",
|
||||
"RemoveFromCollection": "Remove from collection",
|
||||
"RemoveFromPlaylist": "Remove from playlist",
|
||||
|
@ -1347,7 +1325,6 @@
|
|||
"ReplaceExistingImages": "Replace existing images",
|
||||
"ResumeAt": "Resume from {0}",
|
||||
"Rewind": "Rewind",
|
||||
"RunAtStartup": "Run at startup",
|
||||
"Runtime": "Runtime",
|
||||
"Saturday": "Saturday",
|
||||
"Save": "Save",
|
||||
|
@ -1455,7 +1432,6 @@
|
|||
"TabParentalControl": "Parental Control",
|
||||
"TabPassword": "Password",
|
||||
"TabPlayback": "Playback",
|
||||
"TabPlaylist": "Playlist",
|
||||
"TabPlaylists": "Playlists",
|
||||
"TabPlugins": "Plugins",
|
||||
"TabProfile": "Profile",
|
||||
|
@ -1527,7 +1503,6 @@
|
|||
"ValueTimeLimitSingleHour": "Time limit: 1 hour",
|
||||
"ValueVideoCodec": "Video Codec: {0}",
|
||||
"Vertical": "Vertical",
|
||||
"VideoRange": "Video range",
|
||||
"ViewAlbum": "View album",
|
||||
"ViewAlbumArtist": "View album artist",
|
||||
"ViewPlaybackInfo": "View playback info",
|
||||
|
@ -1567,5 +1542,8 @@
|
|||
"ButtonCast": "Cast",
|
||||
"ButtonPlayer": "Player",
|
||||
"StopPlayback": "Stop playback",
|
||||
"ClearQueue": "Clear queue"
|
||||
"ClearQueue": "Clear queue",
|
||||
"LabelSubtitleVerticalPosition": "Vertical position:",
|
||||
"SubtitleVerticalPositionHelp": "Line number where text appears. Positive numbers indicate top down. Negative numbers indicate bottom up.",
|
||||
"Preview": "Preview"
|
||||
}
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
"AddedOnValue": "aldonis {0}",
|
||||
"AddToPlaylist": "aldoni al playlist",
|
||||
"AddToPlayQueue": "Aldonu ludi voston",
|
||||
"AddItemToCollectionHelp": "Aldonu erojn al kolektoj serĉante ilin kaj uzante ĝian alklakon aŭ frapetu menuojn por aldoni ilin al kolekto.",
|
||||
"Add": "Aldoni",
|
||||
"AccessRestrictedTryAgainLater": "Aliro nuntempe estas restriktita. Bonvolu reprovi poste."
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
"LabelFinish": "Terminar",
|
||||
"LabelNext": "Siguiente",
|
||||
"LabelPrevious": "Anterior",
|
||||
"LabelYourFirstName": "Su nombre:",
|
||||
"LabelYoureDone": "Ha terminado!",
|
||||
"MoreUsersCanBeAddedLater": "Se pueden agregar más usuarios más tarde desde el tablero.",
|
||||
"NewCollectionNameExample": "Ejemplo: Colección de Star Wars",
|
||||
|
@ -50,7 +49,6 @@
|
|||
"AccessRestrictedTryAgainLater": "El acceso está actualmente restringido. Por favor intente nuevamente más tarde.",
|
||||
"Actor": "Actor",
|
||||
"Add": "Agregar",
|
||||
"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 cola de reproducción",
|
||||
"AddToPlaylist": "Añadir a la lista de reproducción",
|
||||
|
@ -78,7 +76,6 @@
|
|||
"AttributeNew": "Nuevo",
|
||||
"Audio": "Audio",
|
||||
"Auto": "Auto",
|
||||
"AutoBasedOnLanguageSetting": "Auto (basado en configuración de idioma)",
|
||||
"Backdrop": "Fondo",
|
||||
"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.",
|
||||
|
@ -128,7 +125,6 @@
|
|||
"ButtonHelp": "Ayuda",
|
||||
"ButtonHome": "Inicio",
|
||||
"ButtonInfo": "Información",
|
||||
"ButtonLearnMore": "Aprender más",
|
||||
"ButtonLibraryAccess": "Acceso a la biblioteca",
|
||||
"ButtonManualLogin": "Inicio de sesión manual",
|
||||
"ButtonMore": "Más",
|
||||
|
@ -172,7 +168,6 @@
|
|||
"ButtonTrailer": "Avance",
|
||||
"ButtonUninstall": "Desinstalar",
|
||||
"ButtonUp": "Arriba",
|
||||
"ButtonViewWebsite": "Ver sitio web",
|
||||
"ButtonWebsite": "Sitio web",
|
||||
"CancelRecording": "Cancelar grabación",
|
||||
"CancelSeries": "Cancelar serie",
|
||||
|
@ -310,7 +305,6 @@
|
|||
"HeaderFavoriteArtists": "Artistas favoritos",
|
||||
"HeaderFavoriteAlbums": "Álbumes favoritos",
|
||||
"Shows": "Programas",
|
||||
"CopyStreamURLError": "Hubo un error copiando la URL.",
|
||||
"CopyStreamURLSuccess": "URL copiada con éxito.",
|
||||
"CopyStreamURL": "Copiar URL de transmisión",
|
||||
"ButtonSplit": "Dividir",
|
||||
|
@ -322,7 +316,6 @@
|
|||
"HeaderBranding": "Marca",
|
||||
"HeaderBooks": "Libros",
|
||||
"HeaderBlockItemsWithNoRating": "Bloquear elementos con rating de información vacía o no reconocible:",
|
||||
"HeaderAutomaticUpdates": "Actualizaciones Automáticas",
|
||||
"HeaderAudioSettings": "Configuraciones de audio",
|
||||
"HeaderAudioBooks": "Audiolibros",
|
||||
"HeaderAppearsOn": "Aparece en",
|
||||
|
@ -587,8 +580,6 @@
|
|||
"LabelAudioBitrate": "Velocidad de bits de audio:",
|
||||
"LabelAudio": "Audio",
|
||||
"LabelAllowedRemoteAddresses": "Filtro de dirección IP remota:",
|
||||
"LabelAllowServerAutoRestartHelp": "El servidor solo se reiniciará durante los períodos de inactividad cuando no haya usuarios activos.",
|
||||
"LabelAllowServerAutoRestart": "Permita que el servidor se reinicie automáticamente para aplicar actualizaciones",
|
||||
"LabelAllowHWTranscoding": "Permitir transcodificación con hardware",
|
||||
"LabelAlbumArtists": "Artistas del álbum:",
|
||||
"LabelContentType": "Tipo de contenido:",
|
||||
|
@ -685,7 +676,6 @@
|
|||
"LabelDateAddedBehaviorHelp": "Si un valor de metadatos está presente, siempre se usará antes de cualquiera de estas opciones.",
|
||||
"LabelDateAddedBehavior": "Comportamiento de fecha agregada para contenido nuevo:",
|
||||
"LabelDateAdded": "Fecha agregada:",
|
||||
"LabelDashboardTheme": "Tema del panel del servidor:",
|
||||
"LabelCustomRating": "Calificación personalizada:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre personalizado para mostrar o déjelo vacío para usar el nombre informado por el dispositivo.",
|
||||
"LabelCustomDeviceDisplayName": "Nombre para mostrar:",
|
||||
|
@ -738,7 +728,6 @@
|
|||
"LabelSportsCategories": "Categorías de deportes:",
|
||||
"LabelSpecialSeasonsDisplayName": "Nombre de la temporada especial:",
|
||||
"LabelSource": "Fuente:",
|
||||
"LabelSoundEffects": "Efectos de sonido:",
|
||||
"LabelSortTitle": "Ordenar título:",
|
||||
"LabelSortOrder": "Orden de clasificación:",
|
||||
"LabelSortBy": "Ordenar por:",
|
||||
|
@ -749,7 +738,6 @@
|
|||
"LabelSkipIfAudioTrackPresentHelp": "Desmarque esto para asegurarse de que todos los videos tengan subtítulos, independientemente del idioma de audio.",
|
||||
"LabelSkipIfAudioTrackPresent": "Omita si la pista de audio predeterminada coincide con el idioma de descarga",
|
||||
"LabelSkipBackLength": "Saltar de nuevo la longitud:",
|
||||
"LabelSkin": "Piel:",
|
||||
"LabelSize": "Tamaño:",
|
||||
"LabelSimultaneousConnectionLimit": "Límite de transmisiones simultáneas:",
|
||||
"LabelServerName": "Nombre del servidor:",
|
||||
|
@ -827,7 +815,6 @@
|
|||
"LabelNewPasswordConfirm": "Nueva contraseña confirmada:",
|
||||
"LabelNewPassword": "Nueva contraseña:",
|
||||
"LabelNewName": "Nuevo nombre:",
|
||||
"LabelNightly": "Nocturna",
|
||||
"LabelStable": "Estable",
|
||||
"LabelChromecastVersion": "Versión de Chromecast",
|
||||
"LabelName": "Nombre:",
|
||||
|
@ -994,10 +981,8 @@
|
|||
"MessageLeaveEmptyToInherit": "Deje en blanco para heredar la configuración de un elemento primario o el valor predeterminado global.",
|
||||
"MessageItemsAdded": "Artículos añadidos.",
|
||||
"MessageItemSaved": "Artículo guardado.",
|
||||
"MessageUnauthorizedUser": "No tiene autorización para acceder al servidor en este momento. Póngase en contacto con el administrador del servidor para obtener más información.",
|
||||
"MessageInvalidUser": "Usuario o contraseña inválidos. Inténtalo de nuevo.",
|
||||
"MessageInvalidForgotPasswordPin": "Se ingresó un código PIN no válido o caducado. Inténtalo de nuevo.",
|
||||
"MessageInstallPluginFromApp": "Este complemento debe instalarse desde la aplicación en la que desea utilizarlo.",
|
||||
"MessageImageTypeNotSelected": "Seleccione un tipo de imagen del menú desplegable.",
|
||||
"MessageImageFileTypeAllowed": "Solo se admiten archivos JPEG y PNG.",
|
||||
"MessageForgotPasswordInNetworkRequired": "Intente nuevamente dentro de su red doméstica para iniciar el proceso de restablecimiento de contraseña.",
|
||||
|
@ -1029,7 +1014,6 @@
|
|||
"MediaInfoStreamTypeEmbeddedImage": "Imagen incrustada",
|
||||
"MediaInfoStreamTypeData": "Data",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"MediaInfoTimestamp": "Marca de tiempo",
|
||||
"MediaInfoSize": "Tamaño",
|
||||
"MediaInfoSampleRate": "Frecuencia de muestreo",
|
||||
|
@ -1063,11 +1047,9 @@
|
|||
"LiveBroadcasts": "Transmisiones en vivo",
|
||||
"Live": "En vivo",
|
||||
"List": "Lista",
|
||||
"LinksValue": "Enlaces: {0}",
|
||||
"Like": "Me gusta",
|
||||
"LeaveBlankToNotSetAPassword": "Puede dejar este campo en blanco para no establecer una contraseña.",
|
||||
"LearnHowYouCanContribute": "Aprende cómo puedes contribuir.",
|
||||
"LaunchWebAppOnStartup": "Iniciar la interfaz web al iniciar el servidor",
|
||||
"LatestFromLibrary": "Últimos {0}",
|
||||
"Large": "Grande",
|
||||
"LabelffmpegPathHelp": "La ruta al archivo de la aplicación ffmpeg o la carpeta que contiene ffmpeg.",
|
||||
|
@ -1173,7 +1155,6 @@
|
|||
"MusicLibraryHelp": "Revise la {0}guía de nomenclatura musical{1}.",
|
||||
"MovieLibraryHelp": "Revise la {0}guía de nombres de películas{1}.",
|
||||
"LibraryAccessHelp": "Seleccione las bibliotecas para compartir con este usuario. Los administradores podrán editar todas las carpetas con el administrador de metadatos.",
|
||||
"LaunchWebAppOnStartupHelp": "Abra el cliente web en su navegador web predeterminado cuando el servidor arranque inicialmente. Esto no ocurrirá cuando use la función de reinicio del servidor.",
|
||||
"LanNetworksHelp": "Lista separada por comas de direcciones IP o entradas de IP/máscara de red para redes que se considerarán en la red local cuando se impongan restricciones de ancho de banda. Si se establece, todas las demás direcciones IP se considerarán en la red externa y estarán sujetas a las restricciones de ancho de banda externo. Si se deja en blanco, solo se considera que la subred del servidor está en la red local.",
|
||||
"LabelXDlnaDocHelp": "Determina el contenido del elemento X_DLNADOC en el espacio de nombres urn:schemas-dlna-org:device-1-0.",
|
||||
"LabelXDlnaDoc": "Doc. X-DLNA:",
|
||||
|
@ -1219,7 +1200,6 @@
|
|||
"RecentlyWatched": "Recientemente visto",
|
||||
"Rate": "Velocidad",
|
||||
"Raised": "Elevado",
|
||||
"QueueAllFromHere": "Hacer cola todo desde aquí",
|
||||
"Quality": "Calidad",
|
||||
"Programs": "Programas",
|
||||
"ProductionLocations": "Ubicaciones de producción",
|
||||
|
@ -1264,7 +1244,6 @@
|
|||
"PackageInstallCompleted": "Instalación {0} (versión {1}) completada.",
|
||||
"PackageInstallCancelled": "Instalación de {0} (versión {1}) cancelada.",
|
||||
"Overview": "Visión general",
|
||||
"OtherArtist": "Otro artista",
|
||||
"OriginalAirDateValue": "Fecha de emisión original: {0}",
|
||||
"OptionWeekly": "Semanal",
|
||||
"OptionWeekends": "Fines de semana",
|
||||
|
@ -1354,7 +1333,6 @@
|
|||
"RemoveFromPlaylist": "Eliminar de la lista de reproducción",
|
||||
"RemoveFromCollection": "Eliminar de la colección",
|
||||
"RememberMe": "Recuérdame",
|
||||
"ReleaseGroup": "Grupo de lanzamiento",
|
||||
"ButtonCast": "Transmitir",
|
||||
"ButtonSyncPlay": "SyncPlay",
|
||||
"EnableBlurHashHelp": "Las imágenes que aún se están cargando se mostrarán con un marcador de posición borroso",
|
||||
|
@ -1386,7 +1364,6 @@
|
|||
"Watched": "Visto",
|
||||
"ViewPlaybackInfo": "Ver información de reproducción",
|
||||
"ViewAlbum": "Ver álbum",
|
||||
"VideoRange": "Rango de video",
|
||||
"Vertical": "Vertical",
|
||||
"ValueTimeLimitSingleHour": "Límite de tiempo: 1 hora",
|
||||
"ValueTimeLimitMultiHour": "Límite de tiempo: {0} horas",
|
||||
|
@ -1453,7 +1430,6 @@
|
|||
"TabProfile": "Perfil",
|
||||
"TabPlugins": "Complementos",
|
||||
"TabPlaylists": "Listas de reproducción",
|
||||
"TabPlaylist": "Lista de reproducción",
|
||||
"TabPlayback": "Reproducción",
|
||||
"TabPassword": "Contraseña",
|
||||
"TabParentalControl": "Control parental",
|
||||
|
@ -1557,7 +1533,6 @@
|
|||
"Save": "Guardar",
|
||||
"Saturday": "Sábado",
|
||||
"Runtime": "Tiempo de ejecución",
|
||||
"RunAtStartup": "Ejecutar en el arranque",
|
||||
"Rewind": "Rebobinar",
|
||||
"ResumeAt": "Reanudar desde {0}",
|
||||
"ButtonPlayer": "Reproductor",
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"Absolute": "Absoluto",
|
||||
"AccessRestrictedTryAgainLater": "El acceso está restringido actualmente. Por favor, inténtalo más tarde.",
|
||||
"Add": "Agregar",
|
||||
"AddItemToCollectionHelp": "Agrega elementos a las colecciones buscándolos y utilizando sus menúes al hacer clic derecho o al tocarlos para agregarlos a una colección.",
|
||||
"AddToCollection": "Agregar a colección",
|
||||
"AddToPlayQueue": "Agregar a la cola de reproducción",
|
||||
"AddToPlaylist": "Agregar a lista de reproducción",
|
||||
|
@ -37,7 +36,6 @@
|
|||
"Ascending": "Ascendente",
|
||||
"AspectRatio": "Relación de aspecto",
|
||||
"AttributeNew": "Nuevo",
|
||||
"AutoBasedOnLanguageSetting": "Auto (basado en la configuración del idioma)",
|
||||
"Backdrop": "Imagen de fondo",
|
||||
"Backdrops": "Imágenes de fondo",
|
||||
"Banner": "Banner",
|
||||
|
@ -80,7 +78,6 @@
|
|||
"ButtonGuide": "Guía",
|
||||
"ButtonHelp": "Ayuda",
|
||||
"ButtonHome": "Inicio",
|
||||
"ButtonLearnMore": "Aprender más",
|
||||
"ButtonLibraryAccess": "Acceso a biblioteca(s)",
|
||||
"ButtonManualLogin": "Inicio de sesión manual",
|
||||
"ButtonMore": "Más",
|
||||
|
@ -124,7 +121,6 @@
|
|||
"ButtonSubtitles": "Subtítulos",
|
||||
"ButtonUninstall": "Desinstalar",
|
||||
"ButtonUp": "Arriba",
|
||||
"ButtonViewWebsite": "Ver sitio web",
|
||||
"ButtonWebsite": "Sitio web",
|
||||
"CancelRecording": "Cancelar grabación",
|
||||
"CancelSeries": "Cancelar serie",
|
||||
|
@ -284,7 +280,6 @@
|
|||
"HeaderAppearsOn": "Aparece en",
|
||||
"HeaderAudioBooks": "Audiolibros",
|
||||
"HeaderAudioSettings": "Configuración de audio",
|
||||
"HeaderAutomaticUpdates": "Actualizaciones automáticas",
|
||||
"HeaderBlockItemsWithNoRating": "Bloquear elementos sin clasificación o con información de clasificación desconocida:",
|
||||
"HeaderBooks": "Libros",
|
||||
"HeaderBranding": "Establecer marca",
|
||||
|
@ -502,8 +497,6 @@
|
|||
"LabelAlbumArtists": "Artistas del álbum:",
|
||||
"LabelAll": "Todos",
|
||||
"LabelAllowHWTranscoding": "Permitir transcodificación por hardware",
|
||||
"LabelAllowServerAutoRestart": "Permite al servidor reiniciarse automáticamente para aplicar actualizaciones",
|
||||
"LabelAllowServerAutoRestartHelp": "El servidor solo se reiniciará durante los períodos de inactividad cuando no haya usuarios activos.",
|
||||
"LabelAllowedRemoteAddresses": "Filtro de direcciones IP remotas:",
|
||||
"LabelAllowedRemoteAddressesMode": "Modo de filtrado de direcciones IP remotas:",
|
||||
"LabelAppName": "Nombre de la aplicación",
|
||||
|
@ -540,7 +533,6 @@
|
|||
"LabelCustomDeviceDisplayName": "Nombre a mostrar:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre personalizado para mostrar o déjalo vacío para usar el nombre reportado por el dispositivo.",
|
||||
"LabelCustomRating": "Calificación personalizada:",
|
||||
"LabelDashboardTheme": "Tema del panel de control del servidor:",
|
||||
"LabelDateAdded": "Fecha de adición:",
|
||||
"LabelDateAddedBehavior": "Comportamiento de la fecha de adición para nuevo contenido:",
|
||||
"LabelDateAddedBehaviorHelp": "Si un valor de metadatos está presente, siempre se utilizará antes de cualquiera de estas opciones.",
|
||||
|
@ -751,7 +743,6 @@
|
|||
"LabelServerHost": "Servidor:",
|
||||
"LabelServerHostHelp": "192.168.1.100:8096 o https://miservidor.com",
|
||||
"LabelSimultaneousConnectionLimit": "Límite de transmisiones simultáneas:",
|
||||
"LabelSkin": "Apariencia:",
|
||||
"LabelSkipBackLength": "Longitud de salto hacia atrás:",
|
||||
"LabelSkipForwardLength": "Longitud de salto hacia adelante:",
|
||||
"LabelSkipIfAudioTrackPresent": "Omitir si la pista de audio por defecto coincide con el idioma de descarga",
|
||||
|
@ -763,7 +754,6 @@
|
|||
"LabelSortBy": "Ordenar por:",
|
||||
"LabelSortOrder": "Clasificar ordenado:",
|
||||
"LabelSortTitle": "Título para ordenar:",
|
||||
"LabelSoundEffects": "Efectos de sonido:",
|
||||
"LabelSource": "Fuente:",
|
||||
"LabelSpecialSeasonsDisplayName": "Nombre de la temporada de especiales:",
|
||||
"LabelSportsCategories": "Categorías de deportes:",
|
||||
|
@ -816,7 +806,6 @@
|
|||
"LabelXDlnaDoc": "Documento X-DLNA:",
|
||||
"LabelXDlnaDocHelp": "Determina el contenido del elemento X_DLNADOC en el namespace urn:schemas-dlna-org:device-1-0.",
|
||||
"LabelYear": "Año:",
|
||||
"LabelYourFirstName": "Tu nombre:",
|
||||
"LabelYoureDone": "¡Has terminado!",
|
||||
"LabelZipCode": "Código postal:",
|
||||
"LabelffmpegPath": "Ruta del FFmpeg:",
|
||||
|
@ -827,7 +816,6 @@
|
|||
"LearnHowYouCanContribute": "Aprende cómo puedes contribuir.",
|
||||
"LibraryAccessHelp": "Selecciona las bibliotecas que deseas compartir con este usuario. Los administradores podrán editar todas las carpetas utilizando el gestor de metadatos.",
|
||||
"Like": "Me gusta",
|
||||
"LinksValue": "Enlaces: {0}",
|
||||
"List": "Lista",
|
||||
"Live": "En vivo",
|
||||
"LiveBroadcasts": "Emisiones en vivo",
|
||||
|
@ -885,7 +873,6 @@
|
|||
"MessageFileReadError": "Hubo un error al leer el archivo. Por favor, intenta de nuevo.",
|
||||
"MessageForgotPasswordFileCreated": "El siguiente archivo fue creado en tu servidor y contiene instrucciones de como proceder:",
|
||||
"MessageForgotPasswordInNetworkRequired": "Por favor, intenta de nuevo dentro de tu red local para iniciar el proceso de restablecimiento de contraseña.",
|
||||
"MessageInstallPluginFromApp": "Este complemento debe ser instalado desde dentro de la aplicación en la que deseas usarlo.",
|
||||
"MessageInvalidForgotPasswordPin": "Se ha introducido un código PIN inválido o expirado. Por favor, inténtalo de nuevo.",
|
||||
"MessageInvalidUser": "Nombre de usuario o contraseña inválidos. Por favor, intenta de nuevo.",
|
||||
"MessageItemSaved": "Elemento guardado.",
|
||||
|
@ -1120,7 +1107,6 @@
|
|||
"ProductionLocations": "Lugares de producción",
|
||||
"Programs": "Programas",
|
||||
"Quality": "Calidad",
|
||||
"QueueAllFromHere": "Encolar todos desde aquí",
|
||||
"Raised": "Elevado",
|
||||
"Rate": "Calificación",
|
||||
"RecentlyWatched": "Visto recientemente",
|
||||
|
@ -1151,7 +1137,6 @@
|
|||
"ReplaceExistingImages": "Reemplazar imágenes existentes",
|
||||
"ResumeAt": "Reanudar desde {0}",
|
||||
"Rewind": "Rebobinar",
|
||||
"RunAtStartup": "Ejecutar al iniciar",
|
||||
"Runtime": "Duración",
|
||||
"Saturday": "Sábado",
|
||||
"Save": "Guardar",
|
||||
|
@ -1243,7 +1228,6 @@
|
|||
"TabParentalControl": "Control parental",
|
||||
"TabPassword": "Contraseña",
|
||||
"TabPlayback": "Reproducción",
|
||||
"TabPlaylist": "Lista de reproducción",
|
||||
"TabPlaylists": "Listas de reproducción",
|
||||
"TabPlugins": "Complementos",
|
||||
"TabProfile": "Perfil",
|
||||
|
@ -1310,7 +1294,6 @@
|
|||
"ValueTimeLimitMultiHour": "Límite de tiempo: {0} horas",
|
||||
"ValueTimeLimitSingleHour": "Límite de tiempo: 1 hora",
|
||||
"ValueVideoCodec": "Códec de video: {0}",
|
||||
"VideoRange": "Rango de video",
|
||||
"ViewAlbum": "Ver álbum",
|
||||
"ViewPlaybackInfo": "Ver información de reproducción",
|
||||
"Watched": "Visto",
|
||||
|
@ -1365,11 +1348,8 @@
|
|||
"DashboardArchitecture": "Arquitectura: {0}",
|
||||
"LabelVideo": "Video",
|
||||
"LabelWeb": "Web:",
|
||||
"LaunchWebAppOnStartup": "Iniciar la interfaz web al iniciar el servidor",
|
||||
"LaunchWebAppOnStartupHelp": "Abre el cliente web en su navegador web predeterminado cuando se inicia el servidor. Esto no ocurrirá cuando se utilice la función de reinicio del servidor.",
|
||||
"LeaveBlankToNotSetAPassword": "Puedes dejar este campo en blanco para no establecer ninguna contraseña.",
|
||||
"MediaInfoCodec": "Códec",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoStreamTypeData": "Dato",
|
||||
"MediaInfoStreamTypeEmbeddedImage": "Imagen incrustada",
|
||||
|
@ -1440,7 +1420,6 @@
|
|||
"LabelSize": "Tamaño:",
|
||||
"SelectAdminUsername": "Por favor, selecciona un nombre de usuario para la cuenta de administrador.",
|
||||
"LabelDroppedFrames": "Cuadros saltados:",
|
||||
"CopyStreamURLError": "Hubo un error al copiar la URL.",
|
||||
"ButtonSplit": "Dividir",
|
||||
"WeeklyAt": "{0}s a las {1}",
|
||||
"OnApplicationStartup": "Cuando se inicia la aplicación",
|
||||
|
@ -1456,12 +1435,10 @@
|
|||
"PathNotFound": "No se pudo encontrar la ruta. Por favor, asegúrate de que la ruta es válida e inténtalo de nuevo.",
|
||||
"Track": "Pista",
|
||||
"Season": "Temporada",
|
||||
"ReleaseGroup": "Grupo que lo estrenó",
|
||||
"PreferEmbeddedEpisodeInfosOverFileNames": "Preferir información del episodio incrustada a los nombres de archivo",
|
||||
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Esto utiliza la información del episodio desde los metadatos incrustados si están disponibles.",
|
||||
"PlaybackErrorNoCompatibleStream": "Este cliente no es compatible con los medios y el servidor no está enviando un formato de medios compatible.",
|
||||
"Person": "Persona",
|
||||
"OtherArtist": "Otro artista",
|
||||
"OptionRandom": "Aleatorio",
|
||||
"OptionForceRemoteSourceTranscoding": "Forzar transcodificación de fuentes remotas (como TV en vivo)",
|
||||
"NoCreatedLibraries": "Parece que no has creado ninguna biblioteca todavía. {0}¿Quisieras crear una ahora?{1}",
|
||||
|
@ -1488,7 +1465,6 @@
|
|||
"DeinterlaceMethodHelp": "Seleccione el método de desentrelazado que se usará al transcodificar contenido entrelazado.",
|
||||
"Filter": "Filtro",
|
||||
"New": "Nuevo",
|
||||
"MessageUnauthorizedUser": "No estás autorizado para acceder al servidor en este momento. Por favor, contacta al administrador del servidor para más información.",
|
||||
"LabelLibraryPageSizeHelp": "Establece el número de elementos a mostrar en una página de biblioteca. Establece en 0 para deshabilitar el paginado.",
|
||||
"LabelLibraryPageSize": "Tamaño de las páginas de las bibliotecas:",
|
||||
"HeaderFavoritePlaylists": "Listas de reproducción favoritas",
|
||||
|
@ -1499,7 +1475,6 @@
|
|||
"SaveChanges": "Guardar cambios",
|
||||
"LabelRequireHttpsHelp": "Si se marca, el servidor redirigirá automáticamente todas las solicitudes a través de HTTP a HTTPS. Esto no tiene efecto si el servidor no está escuchando en HTTPS.",
|
||||
"LabelRequireHttps": "Requerir HTTPS",
|
||||
"LabelNightly": "Nocturno",
|
||||
"LabelStable": "Estable",
|
||||
"LabelChromecastVersion": "Versión de Chromecast",
|
||||
"LabelEnableHttpsHelp": "Permite al servidor escuchar en el puerto HTTPS configurado. Un certificado válido también debe ser configurado para que esto tenga efecto.",
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
"AccessRestrictedTryAgainLater": "Actualmente el acceso está restringido. Por favor, inténtalo de nuevo más tarde.",
|
||||
"Add": "Añadir",
|
||||
"AddItemToCollectionHelp": "Puedes añadir elementos a las colecciones buscándolos en tu biblioteca. Una vez hecho esto, abre el menú y selecciona 'Añadir a una colección'.",
|
||||
"AddToCollection": "Añadir a una colección",
|
||||
"AddToPlaylist": "Añadir a una lista de reproducción",
|
||||
"AddedOnValue": "Añadido {0}",
|
||||
|
@ -69,7 +68,6 @@
|
|||
"ButtonGuide": "Guía",
|
||||
"ButtonHelp": "Ayuda",
|
||||
"ButtonHome": "Inicio",
|
||||
"ButtonLearnMore": "Aprende más",
|
||||
"ButtonLibraryAccess": "Acceso a la biblioteca",
|
||||
"ButtonManualLogin": "Acceder manualmente",
|
||||
"ButtonMore": "Más",
|
||||
|
@ -115,7 +113,6 @@
|
|||
"ButtonTrailer": "Tráiler",
|
||||
"ButtonUninstall": "Desinstalar",
|
||||
"ButtonUp": "Arriba",
|
||||
"ButtonViewWebsite": "Ver sitio web",
|
||||
"ButtonWebsite": "Sitio web",
|
||||
"CancelRecording": "Cancelar grabación",
|
||||
"CancelSeries": "Cancelar series",
|
||||
|
@ -237,7 +234,6 @@
|
|||
"HeaderApiKeysHelp": "Las aplicaciones externas requieren de una clave API para comunicarse con el servidor Jellyfin. Las claves se facilitan iniciando sesión con una cuenta de Jellyfin, u otorgando manualmente una clave a la aplicación.",
|
||||
"HeaderAudioBooks": "Audiolibros",
|
||||
"HeaderAudioSettings": "Ajustes de audio",
|
||||
"HeaderAutomaticUpdates": "Actualizaciones automáticas",
|
||||
"HeaderBlockItemsWithNoRating": "Bloquear artículos sin valoraciones o si son desconocidas:",
|
||||
"HeaderBooks": "Libros",
|
||||
"HeaderCancelRecording": "Cancelar grabación",
|
||||
|
@ -448,8 +444,6 @@
|
|||
"LabelAlbumArtists": "Artistas de los álbumes:",
|
||||
"LabelAll": "Todo",
|
||||
"LabelAllowHWTranscoding": "Activar la conversión acelerada por hardware",
|
||||
"LabelAllowServerAutoRestart": "Permitir al servidor reiniciarse automáticamente para aplicar las actualizaciones",
|
||||
"LabelAllowServerAutoRestartHelp": "El servidor solo se reiniciará durante periodos de reposo, cuando no haya usuarios activos.",
|
||||
"LabelAllowedRemoteAddresses": "Filtro de dirección IP remota:",
|
||||
"LabelAllowedRemoteAddressesMode": "Modo de filtro de dirección IP remota:",
|
||||
"LabelAppName": "Nombre de la aplicación",
|
||||
|
@ -742,7 +736,6 @@
|
|||
"LabelXDlnaCapHelp": "Determina el contenido del elemento X_DLNACAP en el espacio de nombre urn:schemas-dlna-org:device-1-0.",
|
||||
"LabelXDlnaDocHelp": "Determina el contenido del elemento X_DLNADOC en el espacio de nombreurn:schemas-dlna-org:device-1-0.",
|
||||
"LabelYear": "Año:",
|
||||
"LabelYourFirstName": "Tu nombre:",
|
||||
"LabelYoureDone": "¡Ya está!",
|
||||
"LabelZipCode": "Código postal:",
|
||||
"LabelffmpegPath": "Ruta de ffmpeg:",
|
||||
|
@ -807,7 +800,6 @@
|
|||
"MessageFileReadError": "Ha habido un error leyendo el fichero. Por favor, inténtalo más tarde.",
|
||||
"MessageForgotPasswordFileCreated": "Se ha creado el siguiente archivo en tu servidor y contiene instrucciones de cómo proceder:",
|
||||
"MessageForgotPasswordInNetworkRequired": "Por favor, inténtalo de nuevo desde tu red de casa para iniciar el proceso de restablecimiento de la contraseña.",
|
||||
"MessageInstallPluginFromApp": "Este complemento debe instalarse desde la aplicación en la que lo vayas a usar.",
|
||||
"MessageInvalidForgotPasswordPin": "Ha introducido un código PIN inválido o expirado. Por favor, inténtelo de nuevo.",
|
||||
"MessageInvalidUser": "Usuario o contraseña inválidos. Por favor, inténtalo otra vez.",
|
||||
"MessageItemSaved": "Elemento grabado.",
|
||||
|
@ -1027,7 +1019,6 @@
|
|||
"ProductionLocations": "Localizaciones de producción",
|
||||
"Programs": "Programas",
|
||||
"Quality": "Calidad",
|
||||
"QueueAllFromHere": "En cola todos desde aquí",
|
||||
"Rate": "Califica",
|
||||
"RecentlyWatched": "Vistos recientemente",
|
||||
"RecommendationBecauseYouLike": "Ya que te ha gustado {0}, quizá te pueda interesar",
|
||||
|
@ -1138,7 +1129,6 @@
|
|||
"TabParentalControl": "Control parental",
|
||||
"TabPassword": "Contraseña",
|
||||
"TabPlayback": "Reproducción",
|
||||
"TabPlaylist": "Lista de reproducción",
|
||||
"TabPlaylists": "Listas de reproducción",
|
||||
"TabProfile": "Perfil",
|
||||
"TabProfiles": "Perfiles",
|
||||
|
@ -1224,7 +1214,6 @@
|
|||
"Ascending": "Ascendente",
|
||||
"Audio": "Audio",
|
||||
"Auto": "Automático",
|
||||
"AutoBasedOnLanguageSetting": "Automático (basado en la configuración de idioma)",
|
||||
"Banner": "Pancarta",
|
||||
"BurnSubtitlesHelp": "Determina si el servidor debe grabar los subtítulos en el vídeo al transcodificar. Desactivar esta opción puede mejorar el rendimiento. Seleccione 'Auto' para grabar formatos basados en imágenes (VOBSUB, PGS, SUB/IDX) y ciertos subtítulos ASS o SSA.",
|
||||
"ButtonInfo": "Información",
|
||||
|
@ -1282,7 +1271,6 @@
|
|||
"Horizontal": "Horizontal",
|
||||
"LabelAudio": "Audio",
|
||||
"LabelBurnSubtitles": "Incrustar subtítulos:",
|
||||
"LabelDashboardTheme": "Tema para la interfaz del servidor:",
|
||||
"LabelDateTimeLocale": "Fecha y hora local:",
|
||||
"LabelDefaultScreen": "Pantalla por defecto:",
|
||||
"LabelDisplayLanguage": "Mostrar idioma:",
|
||||
|
@ -1292,12 +1280,10 @@
|
|||
"LabelParentNumber": "Número del elemento padre:",
|
||||
"LabelPersonRoleHelp": "Ejemplo: Conductor de camión de helados",
|
||||
"LabelServerHost": "Host:",
|
||||
"LabelSkin": "Tema:",
|
||||
"LabelSkipBackLength": "Tiempo de retroceso:",
|
||||
"LabelSkipForwardLength": "Tiempo de avance:",
|
||||
"LabelSortBy": "Ordenar por:",
|
||||
"LabelSortOrder": "Orden:",
|
||||
"LabelSoundEffects": "Efectos de sonido:",
|
||||
"LabelSubtitles": "Subtítulos",
|
||||
"LabelTVHomeScreen": "Modo televisión en pantalla de inicio:",
|
||||
"LabelVersion": "Versión:",
|
||||
|
@ -1306,7 +1292,6 @@
|
|||
"LabelXDlnaDoc": "X-DLNA doc:",
|
||||
"LearnHowYouCanContribute": "Descubre cómo puedes contribuir.",
|
||||
"LeaveBlankToNotSetAPassword": "Puedes dejarlo en blanco para no configurar una contraseña.",
|
||||
"LinksValue": "Enlaces: {0}",
|
||||
"List": "Lista",
|
||||
"Logo": "Logo",
|
||||
"MediaIsBeingConverted": "El medio está siendo convertido en un formato compatible con el dispositivo que lo está reproduciendo.",
|
||||
|
@ -1351,9 +1336,6 @@
|
|||
"DashboardOperatingSystem": "Sistema operativo: {0}",
|
||||
"DashboardArchitecture": "Arquitectura: {0}",
|
||||
"LabelWeb": "Web:",
|
||||
"LaunchWebAppOnStartup": "Iniciar la aplicación web al iniciar el servidor",
|
||||
"LaunchWebAppOnStartupHelp": "Abrir el cliente web en el navegador por defecto al iniciar el servidor. Esto no ocurrirá al utilizar la función de reinicio del servidor.",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoStreamTypeData": "Datos",
|
||||
"MediaInfoStreamTypeEmbeddedImage": "Imagen incrustada",
|
||||
|
@ -1385,7 +1367,6 @@
|
|||
"Premiere": "Estreno",
|
||||
"Raised": "Elevación",
|
||||
"RefreshDialogHelp": "Las etiquetas se actualizan basándose en las configuraciones y los servicios de internet activados desde el panel de control de Jellyfin.",
|
||||
"RunAtStartup": "Ejecutar al iniciar",
|
||||
"Series": "Series",
|
||||
"SeriesDisplayOrderHelp": "Ordena los episodios por fecha de emisión, orden de DVD o número absoluto.",
|
||||
"ShowTitle": "Mostrar título",
|
||||
|
@ -1412,7 +1393,6 @@
|
|||
"ValueMinutes": "{0} min",
|
||||
"ValueSeriesCount": "{0} series",
|
||||
"Vertical": "Vertical",
|
||||
"VideoRange": "Rango de vídeo",
|
||||
"ThemeVideos": "Vídeos de tema",
|
||||
"TabNetworking": "Redes",
|
||||
"CopyStreamURL": "Copiar URL de Stream",
|
||||
|
@ -1447,7 +1427,6 @@
|
|||
"MessageConfirmAppExit": "¿Quieres salir?",
|
||||
"EnableFasterAnimationsHelp": "Las animaciones y transiciones durarán menos tiempo",
|
||||
"EnableFasterAnimations": "Animaciones más rápidas",
|
||||
"CopyStreamURLError": "Ha habido un error copiando la dirección.",
|
||||
"AllowFfmpegThrottlingHelp": "Las conversiones se pausarán cuando se adelanten lo suficiente desde la posición en la que se encuentre el reproductor. Puede reducir la carga en el servidor y es útil cuando se reproduce de forma continua, sin saltar entre intervalos de tiempo, pero puede que tengas que desactivarlo si experimentas problemas en la reproducción o cambias de posición frecuentemente mientras reproduces contenido.",
|
||||
"PlaybackErrorNoCompatibleStream": "Este contenido no es compatible con este dispositivo y no se puede reproducir: No se puede obtener del servidor en un formato compatible.",
|
||||
"OptionForceRemoteSourceTranscoding": "Forzar la conversión para fuentes externas (como la televisión en directo)",
|
||||
|
@ -1476,9 +1455,7 @@
|
|||
"OnApplicationStartup": "Al iniciarse el servidor",
|
||||
"Track": "Pista",
|
||||
"Season": "Temporada",
|
||||
"ReleaseGroup": "Grupo de salida",
|
||||
"Person": "Persona",
|
||||
"OtherArtist": "Otro artista",
|
||||
"Movie": "Película",
|
||||
"Episode": "Episodio",
|
||||
"BoxSet": "Box Set",
|
||||
|
@ -1492,14 +1469,12 @@
|
|||
"UnsupportedPlayback": "No es posible desencriptar contenido protegido mediante DRM; sin embargo se intentará su reproducción. Algunos archivos pueden aparecer completamente negros debido a encriptación u otras características no soportadas, como títulos interactivos.",
|
||||
"YadifBob": "YADIF Bob",
|
||||
"Yadif": "YADIF",
|
||||
"MessageUnauthorizedUser": "No tiene autorización para acceder al servidor en este momento. Póngase en contacto con el administrador del servidor para obtener más información.",
|
||||
"ButtonTogglePlaylist": "Lista de reproducción",
|
||||
"ButtonToggleContextMenu": "Más",
|
||||
"Filter": "Filtro",
|
||||
"New": "Nuevo",
|
||||
"HeaderFavoritePlaylists": "Lista reproducción favorita",
|
||||
"ApiKeysCaption": "Lista de las claves API actuales",
|
||||
"LabelNightly": "Nightly",
|
||||
"LabelStable": "Estable",
|
||||
"LabelChromecastVersion": "Versión de Chromecast",
|
||||
"HeaderServerAddressSettings": "Configuración de la dirección del Servidor",
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
"AddToPlaylist": "Agregar a lista de reproducción",
|
||||
"AddToPlayQueue": "Agregar a la cola de reproducción",
|
||||
"AddToCollection": "Agregar a colección",
|
||||
"AddItemToCollectionHelp": "Agrega elementos a las colecciones buscándolos y utilizando sus menúes al hacer clic derecho o al tocarlos para agregarlos a una colección.",
|
||||
"Add": "Agregar",
|
||||
"Actor": "Actor",
|
||||
"AccessRestrictedTryAgainLater": "El acceso está restringido actualmente. Por favor, inténtalo más tarde.",
|
||||
|
@ -42,13 +41,11 @@
|
|||
"YadifBob": "YADIF Bob",
|
||||
"Trailers": "Trailers",
|
||||
"TabTrailers": "Trailers",
|
||||
"ReleaseGroup": "Grupo que lo estrenó",
|
||||
"OptionThumbCard": "Miniatura de imagen",
|
||||
"OptionResElement": "elemento reanudable",
|
||||
"OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)",
|
||||
"OptionBluray": "Blu-ray",
|
||||
"OptionBlockTrailers": "Trailers",
|
||||
"LabelNightly": "Construcciones nocturnas",
|
||||
"HeaderVideos": "Videos",
|
||||
"Director": "Director",
|
||||
"Depressed": "No presionado",
|
||||
|
@ -83,7 +80,6 @@
|
|||
"Watched": "Visto",
|
||||
"ViewPlaybackInfo": "Ver información de reproducción",
|
||||
"ViewAlbum": "Ver álbum",
|
||||
"VideoRange": "Rango de video",
|
||||
"Vertical": "Vertical",
|
||||
"ValueVideoCodec": "Códec de video: {0}",
|
||||
"ValueTimeLimitSingleHour": "Límite de tiempo: 1 hora",
|
||||
|
@ -152,7 +148,6 @@
|
|||
"TabProfile": "Perfil",
|
||||
"TabPlugins": "Complementos",
|
||||
"TabPlaylists": "Listas de reproducción",
|
||||
"TabPlaylist": "Lista de reproducción",
|
||||
"TabPlayback": "Reproducción",
|
||||
"TabPassword": "Contraseña",
|
||||
"TabParentalControl": "Control parental",
|
||||
|
@ -378,10 +373,8 @@
|
|||
"MessageLeaveEmptyToInherit": "Dejar vacío para heredar la configuración de un elemento superior o del valor predeterminado global.",
|
||||
"MessageItemsAdded": "Elementos agregados.",
|
||||
"MessageItemSaved": "Elemento guardado.",
|
||||
"MessageUnauthorizedUser": "No estás autorizado para acceder al servidor en este momento. Por favor, contacta al administrador del servidor para más información.",
|
||||
"MessageInvalidUser": "Nombre de usuario o contraseña inválidos. Por favor, intenta de nuevo.",
|
||||
"MessageInvalidForgotPasswordPin": "Se ha introducido un código PIN inválido o expirado. Por favor, inténtalo de nuevo.",
|
||||
"MessageInstallPluginFromApp": "Este complemento debe ser instalado desde dentro de la aplicación en la que deseas usarlo.",
|
||||
"MessageImageTypeNotSelected": "Por favor, selecciona un tipo de imagen del menú desplegable.",
|
||||
"MessageImageFileTypeAllowed": "Solo son soportados archivos JPEG y PNG.",
|
||||
"MessageForgotPasswordInNetworkRequired": "Por favor, intenta de nuevo dentro de tu red local para iniciar el proceso de restablecimiento de contraseña.",
|
||||
|
@ -392,13 +385,10 @@
|
|||
"MessageDirectoryPickerLinuxInstruction": "Para Linux en Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, debes conceder al usuario del servicio al menos permisos de lectura a tus ubicaciones de almacenamiento.",
|
||||
"MessageDirectoryPickerBSDInstruction": "Para BSD, quizás necesites configurar el almacenamiento dentro de tu «FreeNAS Jail» de manera que permita a Jellyfin accederlo.",
|
||||
"List": "Lista",
|
||||
"LinksValue": "Enlaces: {0}",
|
||||
"Like": "Me gusta",
|
||||
"LibraryAccessHelp": "Selecciona las bibliotecas que deseas compartir con este usuario. Los administradores podrán editar todas las carpetas utilizando el gestor de metadatos.",
|
||||
"LeaveBlankToNotSetAPassword": "Puedes dejar este campo en blanco para no establecer ninguna contraseña.",
|
||||
"LearnHowYouCanContribute": "Aprende cómo puedes contribuir.",
|
||||
"LaunchWebAppOnStartupHelp": "Abre el cliente web en su navegador web predeterminado cuando se inicia el servidor. Esto no ocurrirá cuando se utilice la función de reinicio del servidor.",
|
||||
"LaunchWebAppOnStartup": "Iniciar la interfaz web al iniciar el servidor",
|
||||
"LatestFromLibrary": "Últimas - {0}",
|
||||
"Large": "Grande",
|
||||
"LanNetworksHelp": "Lista separada por comas de direcciones IP o entradas de IP/máscara de red para las redes que se considerarán en la red local al aplicar las restricciones de ancho de banda. Si se establecen, todas las demás direcciones IP se considerarán como parte de la red externa y estarán sujetas a las restricciones de ancho de banda externa. Si se deja en blanco, solo se considera a la subred del servidor estar en la red local.",
|
||||
|
@ -406,7 +396,6 @@
|
|||
"LabelffmpegPath": "Ruta del FFmpeg:",
|
||||
"LabelZipCode": "Código postal:",
|
||||
"LabelYoureDone": "¡Has terminado!",
|
||||
"LabelYourFirstName": "Tu nombre:",
|
||||
"LabelYear": "Año:",
|
||||
"LabelXDlnaDocHelp": "Determina el contenido del elemento X_DLNADOC en el namespace urn:schemas-dlna-org:device-1-0.",
|
||||
"LabelXDlnaDoc": "Documento X-DLNA:",
|
||||
|
@ -486,7 +475,6 @@
|
|||
"LabelSportsCategories": "Categorías de deportes:",
|
||||
"LabelSpecialSeasonsDisplayName": "Nombre de la temporada de especiales:",
|
||||
"LabelSource": "Fuente:",
|
||||
"LabelSoundEffects": "Efectos de sonido:",
|
||||
"LabelSortTitle": "Título para ordenar:",
|
||||
"LabelSortOrder": "Clasificar ordenado:",
|
||||
"LabelSortBy": "Ordenar por:",
|
||||
|
@ -560,7 +548,6 @@
|
|||
"Save": "Guardar",
|
||||
"Saturday": "Sábado",
|
||||
"Runtime": "Duración",
|
||||
"RunAtStartup": "Ejecutar al iniciar",
|
||||
"Rewind": "Rebobinar",
|
||||
"ResumeAt": "Reanudar desde {0}",
|
||||
"ReplaceExistingImages": "Reemplazar imágenes existentes",
|
||||
|
@ -591,7 +578,6 @@
|
|||
"RecentlyWatched": "Visto recientemente",
|
||||
"Rate": "Calificación",
|
||||
"Raised": "Elevado",
|
||||
"QueueAllFromHere": "Encolar todos desde aquí",
|
||||
"Quality": "Calidad",
|
||||
"Programs": "Programas",
|
||||
"ProductionLocations": "Lugares de producción",
|
||||
|
@ -637,7 +623,6 @@
|
|||
"PackageInstallCompleted": "Instalación completada de {0} (versión {1}).",
|
||||
"PackageInstallCancelled": "Instalación cancelada de {0} (versión {1}).",
|
||||
"Overview": "Resumen",
|
||||
"OtherArtist": "Otro artista",
|
||||
"OriginalAirDateValue": "Fecha de emisión original: {0}",
|
||||
"OptionWeekly": "Semanal",
|
||||
"OptionWeekends": "Fines de semana",
|
||||
|
@ -674,7 +659,6 @@
|
|||
"OptionProfileAudio": "Audio",
|
||||
"OptionPremiereDate": "Fecha de estreno",
|
||||
"OptionPosterCard": "Ficha de póster",
|
||||
"LabelSkin": "Apariencia:",
|
||||
"LabelSize": "Tamaño:",
|
||||
"LabelSimultaneousConnectionLimit": "Límite de transmisiones simultáneas:",
|
||||
"LabelServerName": "Nombre del servidor:",
|
||||
|
@ -869,7 +853,6 @@
|
|||
"LabelDateAddedBehaviorHelp": "Si un valor de metadatos está presente, siempre se utilizará antes de cualquiera de estas opciones.",
|
||||
"LabelDateAddedBehavior": "Comportamiento de la fecha de adición para nuevo contenido:",
|
||||
"LabelDateAdded": "Fecha de adición:",
|
||||
"LabelDashboardTheme": "Tema del panel de control del servidor:",
|
||||
"LabelCustomRating": "Calificación personalizada:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre personalizado para mostrar o déjalo vacío para usar el nombre reportado por el dispositivo.",
|
||||
"LabelCustomDeviceDisplayName": "Nombre a mostrar:",
|
||||
|
@ -917,7 +900,6 @@
|
|||
"MediaInfoStreamTypeEmbeddedImage": "Imagen incrustada",
|
||||
"MediaInfoStreamTypeData": "Dato",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"MediaInfoTimestamp": "Fecha y hora",
|
||||
"MediaInfoSize": "Tamaño",
|
||||
"MediaInfoSampleRate": "Tasa de muestreo",
|
||||
|
@ -980,8 +962,6 @@
|
|||
"LabelAppName": "Nombre de la aplicación",
|
||||
"LabelAllowedRemoteAddressesMode": "Modo de filtrado de direcciones IP remotas:",
|
||||
"LabelAllowedRemoteAddresses": "Filtro de direcciones IP remotas:",
|
||||
"LabelAllowServerAutoRestartHelp": "El servidor solo se reiniciará durante los períodos de inactividad cuando no haya usuarios activos.",
|
||||
"LabelAllowServerAutoRestart": "Permite al servidor reiniciarse automáticamente para aplicar actualizaciones",
|
||||
"LabelAllowHWTranscoding": "Permitir transcodificación por hardware",
|
||||
"LabelAll": "Todos",
|
||||
"LabelAlbumArtists": "Artistas del álbum:",
|
||||
|
@ -1241,7 +1221,6 @@
|
|||
"HeaderBranding": "Establecer marca",
|
||||
"HeaderBooks": "Libros",
|
||||
"HeaderBlockItemsWithNoRating": "Bloquear elementos sin clasificación o con información de clasificación desconocida:",
|
||||
"HeaderAutomaticUpdates": "Actualizaciones automáticas",
|
||||
"HeaderAudioSettings": "Configuración de audio",
|
||||
"HeaderAudioBooks": "Audiolibros",
|
||||
"HeaderAppearsOn": "Aparece en",
|
||||
|
@ -1381,7 +1360,6 @@
|
|||
"DateAdded": "Fecha de adición",
|
||||
"CustomDlnaProfilesHelp": "Crear un perfil personalizado para un nuevo dispositivo o reemplazar un perfil del sistema.",
|
||||
"CriticRating": "Calificación de los críticos",
|
||||
"CopyStreamURLError": "Hubo un error al copiar la URL.",
|
||||
"CopyStreamURLSuccess": "URL copiada con éxito.",
|
||||
"CopyStreamURL": "Copiar la URL de la transmisión",
|
||||
"Continuing": "Continuando",
|
||||
|
@ -1415,7 +1393,6 @@
|
|||
"CancelSeries": "Cancelar serie",
|
||||
"CancelRecording": "Cancelar grabación",
|
||||
"ButtonWebsite": "Sitio web",
|
||||
"ButtonViewWebsite": "Ver sitio web",
|
||||
"ButtonUp": "Arriba",
|
||||
"ButtonUninstall": "Desinstalar",
|
||||
"ButtonTrailer": "Trailer",
|
||||
|
@ -1464,7 +1441,6 @@
|
|||
"ButtonMore": "Más",
|
||||
"ButtonManualLogin": "Inicio de sesión manual",
|
||||
"ButtonLibraryAccess": "Acceso a biblioteca(s)",
|
||||
"ButtonLearnMore": "Aprender más",
|
||||
"ButtonInfo": "Info",
|
||||
"ButtonHome": "Inicio",
|
||||
"ButtonHelp": "Ayuda",
|
||||
|
@ -1508,7 +1484,6 @@
|
|||
"Banner": "Banner",
|
||||
"Backdrops": "Imágenes de fondo",
|
||||
"Backdrop": "Imagen de fondo",
|
||||
"AutoBasedOnLanguageSetting": "Auto (basado en la configuración del idioma)",
|
||||
"Auto": "Auto",
|
||||
"AuthProviderHelp": "Selecciona un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.",
|
||||
"Audio": "Audio",
|
||||
|
|
|
@ -64,7 +64,6 @@
|
|||
"LabelSelectUsers": "انتخاب کاربران:",
|
||||
"LabelTimeLimitHours": "محدودیت زمان (ساعت):",
|
||||
"LabelTypeMetadataDownloaders": "{0} دانلود کننده فراداده:",
|
||||
"LabelYourFirstName": "اسم کوچک شما:",
|
||||
"LabelYoureDone": "به پایان رسید!",
|
||||
"LibraryAccessHelp": "انتخاب پوشه های رسانه برای اشتراک گذاری با این کاربر. مدیر سیستم میتواند با استفاده از مدیریت متاداده همه ی پوشه ها را ویرایش کند.",
|
||||
"ManageLibrary": "مدیریت کتابخانه",
|
||||
|
@ -99,7 +98,6 @@
|
|||
"TabNetworks": "شبکه ها",
|
||||
"TabNotifications": "اعلان ها",
|
||||
"TabPassword": "رمز عبور",
|
||||
"TabPlaylist": "لیست پخش",
|
||||
"TabProfile": "پروفایل",
|
||||
"TabProfiles": "پروفایل ها",
|
||||
"TabShows": "سریال ها",
|
||||
|
@ -168,7 +166,6 @@
|
|||
"ButtonMore": "بیشتر",
|
||||
"ButtonManualLogin": "ورود دستی",
|
||||
"ButtonLibraryAccess": "دسترسی به کتابخانه",
|
||||
"ButtonLearnMore": "بیشتر بدانید",
|
||||
"ButtonInfo": "اطلاعات",
|
||||
"ButtonHome": "خانه",
|
||||
"ButtonHelp": "کمک",
|
||||
|
@ -202,7 +199,6 @@
|
|||
"Banner": "سرصفحه",
|
||||
"Backdrops": "پس زمینهها",
|
||||
"Backdrop": "پس زمینه",
|
||||
"AutoBasedOnLanguageSetting": "خودکار (بر اساس تنظیمات زبانی)",
|
||||
"Auto": "خودکار",
|
||||
"Audio": "صدا",
|
||||
"AttributeNew": "جدید",
|
||||
|
@ -278,7 +274,6 @@
|
|||
"DatePlayed": "تاریخ پخش شده",
|
||||
"DateAdded": "تاریخ اضافه شده",
|
||||
"CriticRating": "امتیاز منتقدان",
|
||||
"CopyStreamURLError": "در کپی کردن آدرس خطایی رخ داد.",
|
||||
"CopyStreamURLSuccess": "آدرس با موفقیت کپی شد.",
|
||||
"CopyStreamURL": "کپی آدرس پخش",
|
||||
"Continuing": "ادامه",
|
||||
|
@ -299,7 +294,6 @@
|
|||
"CancelSeries": "لغو سریالها",
|
||||
"CancelRecording": "لغو ضبط",
|
||||
"ButtonWebsite": "وبسایت",
|
||||
"ButtonViewWebsite": "بازدید وبسایت",
|
||||
"ButtonUp": "بالا",
|
||||
"ButtonUninstall": "حذف نصب",
|
||||
"ButtonTrailer": "تریلر",
|
||||
|
@ -417,7 +411,6 @@
|
|||
"LabelSkipIfAudioTrackPresent": "اگر صدای پیشفرض با زبان دانلودی یکسان است پرش کن",
|
||||
"LabelSkipForwardLength": "میزان رفتن به جلو:",
|
||||
"LabelSkipBackLength": "میزان بازگشت به عقب:",
|
||||
"LabelSkin": "پوسته:",
|
||||
"LabelSize": "سایز:",
|
||||
"LabelSimultaneousConnectionLimit": "محدودیت پخش همزمان:",
|
||||
"LabelServerName": "نام سرور:",
|
||||
|
@ -545,7 +538,6 @@
|
|||
"Watched": "مشاهده شده",
|
||||
"ViewPlaybackInfo": "مشاهده اطلاعات پخش",
|
||||
"ViewAlbum": "مشاهده آلبوم",
|
||||
"VideoRange": "محدوده ویدیو",
|
||||
"Vertical": "عمودی",
|
||||
"ValueVideoCodec": "کدک ویدیو: {0}",
|
||||
"ValueTimeLimitSingleHour": "محدودیت زمانی: 1 ساعت",
|
||||
|
@ -566,7 +558,6 @@
|
|||
"ValueDiscNumber": "دیسک {0}",
|
||||
"LabelImportOnlyFavoriteChannels": "محدود کردن کانالهایی که به عنوان مورد علاقه انتخاب شدهاند",
|
||||
"LabelDateAdded": "تاریخ اضافه شده:",
|
||||
"LabelDashboardTheme": "تم داشبورد سرور:",
|
||||
"LabelCustomRating": "امتیازدهی سفارشی:",
|
||||
"LabelCustomDeviceDisplayName": "نام نمایشی:",
|
||||
"LabelCustomCssHelp": "ظاهر سفارشی مورد نظر خود را در رابط وب اعمال کنید.",
|
||||
|
@ -592,7 +583,6 @@
|
|||
"LabelSportsCategories": "دستهبندیهای ورزشی:",
|
||||
"LabelSpecialSeasonsDisplayName": "نام نمایشی فصل مخصوص:",
|
||||
"LabelSource": "منبع:",
|
||||
"LabelSoundEffects": "جلوههای صدا:",
|
||||
"LabelSortTitle": "مرتبسازی عنوان:",
|
||||
"LabelSortOrder": "ترتیب مرتبسازی:",
|
||||
"LabelSortBy": "مرتبسازی بر اساس:",
|
||||
|
@ -694,10 +684,8 @@
|
|||
"MessageNoAvailablePlugins": "افزونهای موجود نیست.",
|
||||
"MessageItemsAdded": "آیتمها اضافه شدند.",
|
||||
"MessageItemSaved": "آیتم ذخیره شد.",
|
||||
"MessageUnauthorizedUser": "در حال حاضر مجاز به دسترسی به سرور نیستید. لطفا برای اطلاعات بیشتر با مدیر سرور خود تماس بگیرید.",
|
||||
"MessageInvalidUser": "نام کاربری یا گذرواژه نامعتبر است. لطفا دوباره تلاش کنید.",
|
||||
"MessageInvalidForgotPasswordPin": "کد پین نامعتبر یا منقضی شده وارد شد. لطفا دوباره تلاش کنید.",
|
||||
"MessageInstallPluginFromApp": "این افزونه باید از داخل برنامهای که قصد استفاده از آن را دارید نصب شود.",
|
||||
"HeaderResetPassword": "بازنشانی گذرواژه",
|
||||
"PasswordResetConfirmation": "آیا واقعا تمایل به بازنشانی گذرواژه دارید؟",
|
||||
"PasswordResetComplete": "گذرواژه بازنشانی شد.",
|
||||
|
@ -706,7 +694,6 @@
|
|||
"PackageInstallCompleted": "{0} (نسخه {1})نصب به پایان رسید.",
|
||||
"PackageInstallCancelled": "{0} ( نسخه {1})نصب لغو شد.",
|
||||
"Overview": "بررسی اجمالی",
|
||||
"OtherArtist": "هنرمند دیگر",
|
||||
"OriginalAirDateValue": "زمان پخش اصلی : {0}",
|
||||
"OptionWeekly": "هفتگی",
|
||||
"OptionWeekends": "آخر هفته ها",
|
||||
|
@ -754,7 +741,6 @@
|
|||
"RecentlyWatched": "اخیرا مشاهده شده",
|
||||
"Rate": "ارزیابی کن",
|
||||
"Raised": "مطرح شده",
|
||||
"QueueAllFromHere": "همه را از اینجا در صف قرار بده",
|
||||
"Quality": "کیفیت",
|
||||
"Programs": "برنامه ها",
|
||||
"ProductionLocations": "محل تولید",
|
||||
|
@ -794,7 +780,6 @@
|
|||
"LabelSeasonNumber": "شماره فصل:",
|
||||
"ConfigureDateAdded": "تنظیم کنید که چگونه تاریخ اضافه شده در داشبورد سرور Jellyfin تحت تنظیمات کتابخانه تعیین میشود",
|
||||
"CinemaModeConfigurationHelp": "حالت سینما تجربه تئاتر گونه را مستقیم به اتاق نشیمن شما میآورد با قابلیت پخش تریلرها و پیش نمایشها قبل از سایر ویژگیهای اصلی.",
|
||||
"LaunchWebAppOnStartup": "نمای وب هنگامی که سرور آغاز به کار میکند باز بشود",
|
||||
"NoSubtitles": "خالی",
|
||||
"NoSubtitleSearchResultsFound": "نتیجهای یافت نشد.",
|
||||
"MessageNoPluginConfiguration": "این افزونه هیچ تنظیماتی برای پیکربندی ندارد.",
|
||||
|
@ -813,7 +798,6 @@
|
|||
"MusicArtist": "هنرمند موسیقی",
|
||||
"MusicAlbum": "آلبوم موسیقی",
|
||||
"Movie": "فیلم",
|
||||
"AddItemToCollectionHelp": "افزودن موارد به مجموعه ها با جستجوی آنها و استفاده از منوهای راست کلیک یا ضربه بزنید تا آنها را به مجموعه اضافه کنید.",
|
||||
"AllowFfmpegThrottlingHelp": "هنگامی که یک transcode یا remux به اندازه کافی پیش از موقعیت پخش فعلی می شود ، روند را متوقف می کند تا منابع کمتری مصرف کند. این بیشتر مفید است در هنگام تماشای بدون به دنبال اغلب. اگر مسائل مربوط به پخش را تجربه کنید ، این را خاموش کنید.",
|
||||
"DefaultSubtitlesHelp": "زیرنویس ها بر اساس پرچم های پیش فرض و اجباری در ابرداده تعبیه شده بارگذاری می شوند. تنظیمات زبان در نظر گرفته می شوند زمانی که گزینه های متعدد در دسترس هستند.",
|
||||
"DeinterlaceMethodHelp": "روش deinterlacing برای استفاده از زمانی که transcoding محتوای هم آمیختن را انتخاب کنید.",
|
||||
|
@ -934,7 +918,6 @@
|
|||
"RefreshMetadata": "Refresh metadata",
|
||||
"RefreshQueued": "Refresh queued.",
|
||||
"ReleaseDate": "Release date",
|
||||
"ReleaseGroup": "Release Group",
|
||||
"RememberMe": "Remember Me",
|
||||
"RemoveFromCollection": "Remove from collection",
|
||||
"RemoveFromPlaylist": "Remove from playlist",
|
||||
|
@ -1139,8 +1122,6 @@
|
|||
"LabelAlbumArtists": "Album artists:",
|
||||
"LabelAll": "All",
|
||||
"LabelAllowHWTranscoding": "Allow hardware transcoding",
|
||||
"LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates",
|
||||
"LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods when no users are active.",
|
||||
"LabelAllowedRemoteAddresses": "Remote IP address filter:",
|
||||
"LabelAllowedRemoteAddressesMode": "Remote IP address filter mode:",
|
||||
"LabelAppName": "App name",
|
||||
|
@ -1199,7 +1180,6 @@
|
|||
"LabelName": "Name:",
|
||||
"LabelChromecastVersion": "Chromecast Version",
|
||||
"LabelStable": "Stable",
|
||||
"LabelNightly": "Nightly",
|
||||
"LabelNewName": "New name:",
|
||||
"LabelNewsCategories": "News categories:",
|
||||
"LabelNotificationEnabled": "Enable this notification",
|
||||
|
@ -1270,7 +1250,6 @@
|
|||
"HeaderAppearsOn": "Appears On",
|
||||
"HeaderAudioBooks": "Audio Books",
|
||||
"HeaderAudioSettings": "Audio Settings",
|
||||
"HeaderAutomaticUpdates": "Automatic Updates",
|
||||
"HeaderBranding": "Branding",
|
||||
"HeaderConfigureRemoteAccess": "Configure Remote Access",
|
||||
"HeaderConfirmPluginInstallation": "Confirm Plugin Installation",
|
||||
|
@ -1344,11 +1323,9 @@
|
|||
"LabelXDlnaDocHelp": "Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.",
|
||||
"LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.",
|
||||
"LanNetworksHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be considered on local network when enforcing bandwidth restrictions. If set, all other IP addresses will be considered to be on the external network and will be subject to the external bandwidth restrictions. If left blank, only the server's subnet is considered to be on the local network.",
|
||||
"LaunchWebAppOnStartupHelp": "Open the web client in your default web browser when the server initially starts. This will not occur when using the restart server function.",
|
||||
"LearnHowYouCanContribute": "Learn how you can contribute.",
|
||||
"LeaveBlankToNotSetAPassword": "You can leave this field blank to set no password.",
|
||||
"Like": "Like",
|
||||
"LinksValue": "Links: {0}",
|
||||
"List": "List",
|
||||
"Live": "Live",
|
||||
"LiveBroadcasts": "Live broadcasts",
|
||||
|
@ -1382,7 +1359,6 @@
|
|||
"MediaInfoSampleRate": "Sample rate",
|
||||
"MediaInfoSize": "Size",
|
||||
"MediaInfoTimestamp": "Timestamp",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoStreamTypeData": "Data",
|
||||
"MediaInfoStreamTypeEmbeddedImage": "Embedded Image",
|
||||
|
@ -1440,7 +1416,6 @@
|
|||
"ReplaceExistingImages": "Replace existing images",
|
||||
"ResumeAt": "Resume from {0}",
|
||||
"Rewind": "Rewind",
|
||||
"RunAtStartup": "Run at startup",
|
||||
"Runtime": "Runtime",
|
||||
"Saturday": "Saturday",
|
||||
"Save": "Save",
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
"LabelPrevious": "Edellinen",
|
||||
"LabelSaveLocalMetadata": "Tallenna kuvamateriaali mediakansioihin",
|
||||
"LabelSaveLocalMetadataHelp": "Kuvamateriaalin ja metadatan tallentaminen suoraan kansioihin missä niitä on helppo muuttaa.",
|
||||
"LabelYourFirstName": "Etunimesi:",
|
||||
"LabelYoureDone": "Valmista!",
|
||||
"LibraryAccessHelp": "Valitse kirjastot, jotka haluat jakaa tämän käyttäjän kanssa. Järjestelmänvalvoja pystyy muokkaamaan kaikkia kansioita käyttäen metadatan hallintatyökalua.",
|
||||
"MaxParentalRatingHelp": "Suuremman luokituksen sisältö piilotetaan käyttäjältä.",
|
||||
|
@ -67,7 +66,6 @@
|
|||
"AllLibraries": "Kaikki kirjastot",
|
||||
"AllowOnTheFlySubtitleExtraction": "Salli tekstitysten purkaminen lennossa",
|
||||
"AccessRestrictedTryAgainLater": "Pääsy on toistaiseksi estetty. Yritä myöhemmin uudelleen.",
|
||||
"AddItemToCollectionHelp": "Lisää nimikkeitä etsimällä niitä ja käyttämällä hiiren oikeaa nappia tai valikkoa lisätäksesi ne kokoelmaan.",
|
||||
"Aired": "Esityspäivä",
|
||||
"AllowHWTranscodingHelp": "Salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää muunnoksen tarvetta Jellyfin-palvelimella.",
|
||||
"AllowMediaConversion": "Salli median muunto",
|
||||
|
@ -90,7 +88,6 @@
|
|||
"Audio": "Ääni",
|
||||
"AuthProviderHelp": "Valitse todentamispalvelu, jota käytetään tämän käyttäjän salasanan todentamisessa.",
|
||||
"Auto": "Auto",
|
||||
"AutoBasedOnLanguageSetting": "Automaattinen (perustuu kieliasetukseen)",
|
||||
"Backdrop": "Tausta",
|
||||
"Backdrops": "Taustat",
|
||||
"Banner": "Lippu",
|
||||
|
@ -129,7 +126,6 @@
|
|||
"ButtonHelp": "Apua",
|
||||
"ButtonHome": "Koti",
|
||||
"ButtonInfo": "Tiedot",
|
||||
"ButtonLearnMore": "Lue lisää",
|
||||
"ButtonLibraryAccess": "Kiraston pääsy",
|
||||
"ButtonManualLogin": "Manuaalinen kirjautuminen",
|
||||
"ButtonMore": "Lisää",
|
||||
|
@ -173,7 +169,6 @@
|
|||
"ButtonTrailer": "Traileri",
|
||||
"ButtonUninstall": "Poista asennus",
|
||||
"ButtonUp": "Ylös",
|
||||
"ButtonViewWebsite": "Näytä nettisivusto",
|
||||
"ButtonWebsite": "Nettisivusto",
|
||||
"CancelRecording": "Peruuta tallennus",
|
||||
"Categories": "Kategoriat",
|
||||
|
@ -282,7 +277,6 @@
|
|||
"EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa.",
|
||||
"EnableExternalVideoPlayersHelp": "Videota soitettaessa näytetään erillinen valikko.",
|
||||
"Depressed": "Painettu",
|
||||
"CopyStreamURLError": "Osoitteen kopioidessa tapahtui virhe.",
|
||||
"ButtonSplit": "jaa",
|
||||
"AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto.",
|
||||
"EnableStreamLooping": "Looppaa suoralähetykset",
|
||||
|
@ -384,7 +378,6 @@
|
|||
"MessagePluginConfigurationRequiresLocalAccess": "Kirjaudu suoraan paikalliselle palvelimellesi muokataksesi tätä liitännäistä.",
|
||||
"MessagePleaseEnsureInternetMetadata": "Varmista, että metadatan lataus on käytössä.",
|
||||
"MessageNoServersAvailable": "Automaattisen palvelintunnistuksen avulla ei löydy palvelimia.",
|
||||
"MessageUnauthorizedUser": "Sinulla ei ole lupaa käyttää palvelinta tällä hetkellä. Ota yhteyttä palvelimen järjestelmänvalvojaan saadaksesi lisätietoja.",
|
||||
"MessageInvalidForgotPasswordPin": "PIN-koodi on kelpaa tai vanhentunut. Yritä uudelleen.",
|
||||
"MessageImageTypeNotSelected": "Valitse kuvatyyppi pudotusvalikosta.",
|
||||
"MessageImageFileTypeAllowed": "Vain JPEG ja PNG tiedostomuotoja tuetaan.",
|
||||
|
@ -425,8 +418,6 @@
|
|||
"LabelAppName": "Sovelluksen nimi",
|
||||
"LabelAllowedRemoteAddressesMode": "Etä-IP-osoitesuodattimen tila:",
|
||||
"LabelAllowedRemoteAddresses": "Etä-IP-osoitesuodatin:",
|
||||
"LabelAllowServerAutoRestartHelp": "Palvelin käynnistyy uudelleen vain hiljaisina aikoina, kun yksikään käyttäjä ei ole aktiivinen.",
|
||||
"LabelAllowServerAutoRestart": "Salli palvelimen automaattinen uudelleenkäynnistys päivitysten asentamiseksi",
|
||||
"LabelAllowHWTranscoding": "Salli laitteistolla transkoodaus",
|
||||
"LabelAlbumArtMaxWidth": "Albumin kuvan maksimileveys:",
|
||||
"LabelAlbumArtMaxHeight": "Albumin kuvan maksimikorkeus:",
|
||||
|
@ -551,7 +542,6 @@
|
|||
"MediaInfoStreamTypeSubtitle": "Tekstitys",
|
||||
"MediaInfoStreamTypeData": "Data",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoSoftware": "Ohjelmisto",
|
||||
"MediaInfoTimestamp": "Aikaleima",
|
||||
"MediaInfoResolution": "Resoluutio",
|
||||
"MediaInfoSize": "Koko",
|
||||
|
@ -575,7 +565,6 @@
|
|||
"LiveBroadcasts": "Suorat lähetykset",
|
||||
"Live": "Suora",
|
||||
"List": "Lista",
|
||||
"LinksValue": "Linkkejä: {0}",
|
||||
"LearnHowYouCanContribute": "Katso, miten voit auttaa.",
|
||||
"Large": "Suuri",
|
||||
"LabelffmpegPath": "FFmpeg polku:",
|
||||
|
@ -693,7 +682,6 @@
|
|||
"TabRecordings": "Tallennukset",
|
||||
"TabPlugins": "Liitännäiset",
|
||||
"TabPlaylists": "Soittolistat",
|
||||
"TabPlaylist": "Soittolista",
|
||||
"TabPlayback": "Toistaminen",
|
||||
"TabNfoSettings": "NFO-asetukset",
|
||||
"TabNetworks": "Verkot",
|
||||
|
@ -952,7 +940,6 @@
|
|||
"GroupBySeries": "Ryhmitä sarjan perusteella",
|
||||
"Fullscreen": "Kokonäyttötila",
|
||||
"HeaderBooks": "Kirjat",
|
||||
"HeaderAutomaticUpdates": "Automaattiset päivitykset",
|
||||
"HeaderAudioBooks": "Äänikirjat",
|
||||
"HeaderApiKeys": "API-avaimet",
|
||||
"HeaderApiKey": "API-avain",
|
||||
|
@ -1001,7 +988,6 @@
|
|||
"LabelDeviceDescription": "Laitteen kuvaus",
|
||||
"LabelDefaultScreen": "Oletusnäyttö:",
|
||||
"LabelDefaultUser": "Oletuskäyttäjä:",
|
||||
"LabelDashboardTheme": "Palvelimen päänäkymän teema:",
|
||||
"LabelCustomCertificatePathHelp": "Polku PKCS # 12-tiedostoon, joka sisältää sertifikaatin ja yksityisen avaimen, jotta TLS-tuki voidaan sallia henkilökohtaiselle verkkotunnukselle.",
|
||||
"LabelCustomCertificatePath": "Mukautetun SSL-sertifikaatin polku:",
|
||||
"LabelContentType": "Sisältötyyppi:",
|
||||
|
@ -1155,7 +1141,6 @@
|
|||
"LabelTranscodingAudioCodec": "Audio codec:",
|
||||
"LabelSubtitleDownloaders": "Tekstitysten lataajat:",
|
||||
"LabelSpecialSeasonsDisplayName": "Erikoiskauden näyttönimi:",
|
||||
"LabelSoundEffects": "Ääniefektit:",
|
||||
"LabelSortTitle": "Lajitteluotsikko:",
|
||||
"LabelSkipIfAudioTrackPresent": "Ohita, jos oletusääniraita vastaa latauskieltä",
|
||||
"LabelSkipBackLength": "Taaksepäin hyppäämisen pituus:",
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
"LabelPlaylist": "Liste de lecture :",
|
||||
"LabelPrevious": "Précédent",
|
||||
"LabelYear": "Année :",
|
||||
"LabelYourFirstName": "Votre prénom :",
|
||||
"LabelYoureDone": "Vous avez terminé !",
|
||||
"Live": "En direct",
|
||||
"MessageItemsAdded": "Éléments ajoutés.",
|
||||
|
@ -80,7 +79,6 @@
|
|||
"Absolute": "Absolu",
|
||||
"AccessRestrictedTryAgainLater": "L'accès est actuellement restreint. Veuillez réessayer plus tard.",
|
||||
"Actor": "Acteur(trice)",
|
||||
"AddItemToCollectionHelp": "Ajoutez des éléments à des collections en les recherchant et en utilisant leurs menus contextuels (clic droit ou appuyez longtemps).",
|
||||
"AddToPlayQueue": "Ajouter à la file d'attente",
|
||||
"AddedOnValue": "Ajouté le {0}",
|
||||
"AdditionalNotificationServices": "Visitez le catalogue d'extensions pour installer des services de notifications supplémentaires.",
|
||||
|
@ -126,7 +124,6 @@
|
|||
"Ascending": "Croissant",
|
||||
"Audio": "Audio",
|
||||
"Auto": "Auto",
|
||||
"AutoBasedOnLanguageSetting": "Auto (basé sur le réglage de la langue)",
|
||||
"Backdrop": "Arrière-plan",
|
||||
"Backdrops": "Arrière-plans",
|
||||
"Banner": "Bannière",
|
||||
|
@ -168,7 +165,6 @@
|
|||
"ButtonHelp": "Aide",
|
||||
"ButtonHome": "Accueil",
|
||||
"ButtonInfo": "Informations",
|
||||
"ButtonLearnMore": "En savoir plus",
|
||||
"ButtonLibraryAccess": "Accès à la médiathèque",
|
||||
"ButtonManualLogin": "Connexion manuelle",
|
||||
"ButtonMore": "Plus",
|
||||
|
@ -192,7 +188,6 @@
|
|||
"DatePlayed": "Date écoutée",
|
||||
"DateAdded": "Date d'ajout",
|
||||
"CriticRating": "Évaluation critique",
|
||||
"CopyStreamURLError": "Une erreur est survenue en essayant de copier l'URL.",
|
||||
"CopyStreamURLSuccess": "L'URL a été copié avec succès.",
|
||||
"CopyStreamURL": "Copier l'URL du stream",
|
||||
"ContinueWatching": "Continuer à visionner",
|
||||
|
@ -209,7 +204,6 @@
|
|||
"CancelSeries": "Annuler la série",
|
||||
"CancelRecording": "Annuler l'enregistrement",
|
||||
"ButtonWebsite": "Site web",
|
||||
"ButtonViewWebsite": "Voir le site web",
|
||||
"ButtonUp": "Vers le haut",
|
||||
"ButtonUninstall": "Désinstaller",
|
||||
"ButtonTogglePlaylist": "Liste de lecture",
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
"AccessRestrictedTryAgainLater": "L'accès est actuellement restreint. Veuillez réessayer plus tard.",
|
||||
"Actor": "Acteur(trice)",
|
||||
"Add": "Ajouter",
|
||||
"AddItemToCollectionHelp": "Ajoutez des éléments à des collections en les recherchant et en utilisant leurs menus contextuels (clic droit ou appui long) pour les ajouter à une collection.",
|
||||
"AddToCollection": "Ajouter à la collection",
|
||||
"AddToPlayQueue": "Ajouter à la file d'attente",
|
||||
"AddToPlaylist": "Ajouter à la liste de lecture",
|
||||
|
@ -36,7 +35,6 @@
|
|||
"Ascending": "Croissant",
|
||||
"AspectRatio": "Format d'image",
|
||||
"AttributeNew": "Nouveau",
|
||||
"AutoBasedOnLanguageSetting": "Auto (basé sur le réglage de la langue)",
|
||||
"Backdrop": "Arrière-plan",
|
||||
"Backdrops": "Arrière-plans",
|
||||
"Banner": "Bannière",
|
||||
|
@ -79,7 +77,6 @@
|
|||
"ButtonHelp": "Aide",
|
||||
"ButtonHome": "Accueil",
|
||||
"ButtonInfo": "Informations",
|
||||
"ButtonLearnMore": "En savoir plus",
|
||||
"ButtonLibraryAccess": "Accès à la médiathèque",
|
||||
"ButtonManualLogin": "Connexion manuelle",
|
||||
"ButtonMore": "Plus",
|
||||
|
@ -124,7 +121,6 @@
|
|||
"ButtonTrailer": "Bande-annonce",
|
||||
"ButtonUninstall": "Désinstaller",
|
||||
"ButtonUp": "Haut",
|
||||
"ButtonViewWebsite": "Voir le site",
|
||||
"ButtonWebsite": "Site Web",
|
||||
"CancelRecording": "Annuler l'enregistrement",
|
||||
"CancelSeries": "Annuler la série",
|
||||
|
@ -282,7 +278,6 @@
|
|||
"HeaderAppearsOn": "Apparait dans",
|
||||
"HeaderAudioBooks": "Livres audios",
|
||||
"HeaderAudioSettings": "Réglages audio",
|
||||
"HeaderAutomaticUpdates": "Mises à jour automatiques",
|
||||
"HeaderBlockItemsWithNoRating": "Bloquer les éléments avec des informations de classification inconnues ou n'en disposant pas :",
|
||||
"HeaderBooks": "Livres",
|
||||
"HeaderBranding": "Slogan",
|
||||
|
@ -498,8 +493,6 @@
|
|||
"LabelAlbumArtists": "Artistes de l'album :",
|
||||
"LabelAll": "Tout",
|
||||
"LabelAllowHWTranscoding": "Autoriser le transcodage matériel",
|
||||
"LabelAllowServerAutoRestart": "Autoriser le redémarrage automatique du serveur pour appliquer les mises à jour",
|
||||
"LabelAllowServerAutoRestartHelp": "Le serveur ne redémarrera que pendant les périodes d'inactivité quand aucun utilisateur n'est connecté.",
|
||||
"LabelAllowedRemoteAddresses": "Filtre d'adresse IP distante :",
|
||||
"LabelAllowedRemoteAddressesMode": "Type de filtre des adresses IP distantes :",
|
||||
"LabelAppName": "Nom de l'application",
|
||||
|
@ -536,7 +529,6 @@
|
|||
"LabelCustomDeviceDisplayName": "Nom d'affichage :",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Entrez un nom d'affichage personnalisé ou laissez vide pour utiliser le nom rapporté par l'appareil.",
|
||||
"LabelCustomRating": "Note personnalisée :",
|
||||
"LabelDashboardTheme": "Thème du tableau de bord du serveur :",
|
||||
"LabelDateAdded": "Date d'ajout :",
|
||||
"LabelDateAddedBehavior": "Choix de la date d'ajout pour le nouveau contenu :",
|
||||
"LabelDateAddedBehaviorHelp": "Si une métadonnée est présente, elle sera toujours utilisée avant ces options.",
|
||||
|
@ -749,7 +741,6 @@
|
|||
"LabelServerHost": "Nom d'hôte :",
|
||||
"LabelServerHostHelp": "192.168.1.1:8096 ou https://monserveur.com",
|
||||
"LabelSimultaneousConnectionLimit": "Limite de flux simultanée :",
|
||||
"LabelSkin": "Habillage :",
|
||||
"LabelSkipBackLength": "Durée des sauts en arrière :",
|
||||
"LabelSkipForwardLength": "Durée des sauts en avant :",
|
||||
"LabelSkipIfAudioTrackPresent": "Sauter si la piste audio correspond à la langue de téléchargement",
|
||||
|
@ -761,7 +752,6 @@
|
|||
"LabelSortBy": "Trier par :",
|
||||
"LabelSortOrder": "Ordre de tri :",
|
||||
"LabelSortTitle": "Titre de tri :",
|
||||
"LabelSoundEffects": "Effets sonores :",
|
||||
"LabelSource": "Source :",
|
||||
"LabelSpecialSeasonsDisplayName": "Nom d'affichage de la saison spécial :",
|
||||
"LabelSportsCategories": "Catégories des sports :",
|
||||
|
@ -815,7 +805,6 @@
|
|||
"LabelXDlnaDoc": "Doc X-DLNA :",
|
||||
"LabelXDlnaDocHelp": "Détermine le contenu de l'élément X_DLNADOC dans l'espace de nom urn:schemas-dlna-org:device-1-0.",
|
||||
"LabelYear": "Année :",
|
||||
"LabelYourFirstName": "Votre prénom :",
|
||||
"LabelYoureDone": "Vous avez terminé !",
|
||||
"LabelZipCode": "Code postal :",
|
||||
"LabelffmpegPath": "Chemin vers FFmpeg :",
|
||||
|
@ -826,7 +815,6 @@
|
|||
"LearnHowYouCanContribute": "Voir comment vous pouvez contribuer.",
|
||||
"LibraryAccessHelp": "Sélectionnez les médiathèques à partager avec cet utilisateur. Les administrateurs pourront modifier tous les dossiers en utilisant le gestionnaire de métadonnées.",
|
||||
"Like": "J'aime",
|
||||
"LinksValue": "Liens: {0}",
|
||||
"List": "Liste",
|
||||
"Live": "En direct",
|
||||
"LiveBroadcasts": "Diffusions en direct",
|
||||
|
@ -882,7 +870,6 @@
|
|||
"MessageFileReadError": "Une erreur est survenue lors de la lecture du fichier. Veuillez réessayer.",
|
||||
"MessageForgotPasswordFileCreated": "Le fichier suivant a été créé sur votre serveur et contient les instructions sur la procédure à suivre :",
|
||||
"MessageForgotPasswordInNetworkRequired": "Veuillez réessayer à partir de votre réseau local pour démarrer la procédure de réinitialisation du mot de passe.",
|
||||
"MessageInstallPluginFromApp": "Cette extension doit-être installée depuis l'application dans laquelle vous voulez l'utiliser.",
|
||||
"MessageInvalidForgotPasswordPin": "Le code PIN saisi est invalide ou a expiré. Veuillez réessayer.",
|
||||
"MessageInvalidUser": "Nom d'utilisateur ou mot de passe incorrect. Réessayez.",
|
||||
"MessageItemSaved": "Élément enregistré.",
|
||||
|
@ -1113,7 +1100,6 @@
|
|||
"ProductionLocations": "Sites de production",
|
||||
"Programs": "Programmes",
|
||||
"Quality": "Qualité",
|
||||
"QueueAllFromHere": "Tout mettre en file d'attente à partir d'ici",
|
||||
"Raised": "Élevé",
|
||||
"Rate": "Débit",
|
||||
"RecentlyWatched": "Lu récemment",
|
||||
|
@ -1144,7 +1130,6 @@
|
|||
"ReplaceExistingImages": "Remplacer les images existantes",
|
||||
"ResumeAt": "Reprendre à {0}",
|
||||
"Rewind": "Rembobiner",
|
||||
"RunAtStartup": "Exécuter au démarrage",
|
||||
"Runtime": "Durée",
|
||||
"Saturday": "Samedi",
|
||||
"Save": "Sauvegarder",
|
||||
|
@ -1229,7 +1214,6 @@
|
|||
"TabParentalControl": "Contrôle Parental",
|
||||
"TabPassword": "Mot de passe",
|
||||
"TabPlayback": "Lecture",
|
||||
"TabPlaylist": "Liste de lecture",
|
||||
"TabPlaylists": "Listes de lecture",
|
||||
"TabProfile": "Profil",
|
||||
"TabProfiles": "Profils",
|
||||
|
@ -1294,7 +1278,6 @@
|
|||
"ValueTimeLimitSingleHour": "Limite de temps : 1 heure",
|
||||
"ValueVideoCodec": "Codec Vidéo : {0}",
|
||||
"Vertical": "Verticale",
|
||||
"VideoRange": "Gamme vidéo",
|
||||
"ViewAlbum": "Voir l'album",
|
||||
"ViewPlaybackInfo": "Voir les informations de lecture",
|
||||
"Watched": "Lu",
|
||||
|
@ -1380,7 +1363,6 @@
|
|||
"DashboardVersionNumber": "Version : {0}",
|
||||
"DashboardServerName": "Serveur : {0}",
|
||||
"LabelWeb": "Web :",
|
||||
"MediaInfoSoftware": "Logiciel",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoStreamTypeData": "Données",
|
||||
"MediaInfoStreamTypeSubtitle": "Sous-titres",
|
||||
|
@ -1391,8 +1373,6 @@
|
|||
"LabelUserLoginAttemptsBeforeLockout": "Tentatives de connexion échouées avant que l'utilisateur ne soit verrouillé :",
|
||||
"DashboardOperatingSystem": "Système d'Exploitation: {0}",
|
||||
"DashboardArchitecture": "Architecture : {0}",
|
||||
"LaunchWebAppOnStartup": "Démarrer l'interface web dans mon navigateur quand le serveur est démarré",
|
||||
"LaunchWebAppOnStartupHelp": "Ouvrir l'application dans votre navigateur internet quand le serveur est démarré pour la première fois. Cela ne se produira pas quand le serveur redémarre.",
|
||||
"MediaInfoStreamTypeEmbeddedImage": "Miniature",
|
||||
"MessageNoCollectionsAvailable": "Les collections vous permettent de profiter de groupes personnalisés de Films, Séries et d'Albums. Cliquer sur le bouton + pour commencer à créer des collections.",
|
||||
"MessageNoServersAvailable": "Aucun serveur n'a été trouvé en utilisant la recherche automatique de serveur.",
|
||||
|
@ -1450,7 +1430,6 @@
|
|||
"LabelPlayerDimensions": "Dimension du lecteur :",
|
||||
"LabelDroppedFrames": "Images perdues :",
|
||||
"LabelCorruptedFrames": "Images corrompues :",
|
||||
"CopyStreamURLError": "Une erreur est survenue lors de la copie de l'URL.",
|
||||
"AskAdminToCreateLibrary": "Demander à un administrateur de créer une médiathèque.",
|
||||
"AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment en avant de la position de lecture, le processus se mettra en pause afin d’économiser des ressources. Plus utile lors d’une lecture continue. À désactiver en cas de problèmes de lecture.",
|
||||
"AllowFfmpegThrottling": "Adapter la vitesse du transcodage",
|
||||
|
@ -1461,9 +1440,7 @@
|
|||
"ClientSettings": "Paramètres Client",
|
||||
"Track": "Piste",
|
||||
"Season": "Saison",
|
||||
"ReleaseGroup": "Groupe de Parution",
|
||||
"Person": "Personne",
|
||||
"OtherArtist": "Autre Artiste",
|
||||
"Movie": "Film",
|
||||
"Episode": "Épisode",
|
||||
"BoxSet": "Coffret",
|
||||
|
@ -1489,7 +1466,6 @@
|
|||
"LabelLibraryPageSize": "Taille de la page de la médiathèque :",
|
||||
"LabelLibraryPageSizeHelp": "Définit la quantité d'éléments à afficher sur une page de médiathèque. Définir à 0 afin de désactiver la pagination.",
|
||||
"UnsupportedPlayback": "Jellyfin ne peut pas décoder du contenu protégé par un système de gestion des droits numériques, mais une tentative de lecture sera effectuée sur tout le contenu, y compris les titres protégés. Certains fichiers peuvent apparaître complètement noir, du fait de protections ou de fonctionnalités non supportées, comme les titres interactifs.",
|
||||
"MessageUnauthorizedUser": "Vous n'êtes pas autorisé à accéder au serveur pour le moment. Veuillez contacter l'administrateur de votre serveur pour plus d'informations.",
|
||||
"ButtonTogglePlaylist": "Liste de lecture",
|
||||
"ButtonToggleContextMenu": "Plus",
|
||||
"Filter": "Filtre",
|
||||
|
@ -1507,7 +1483,6 @@
|
|||
"SaveChanges": "Enregistrer les modifications",
|
||||
"LabelRequireHttpsHelp": "Si activé, le serveur va automatiquement rediriger toutes les requêtes en HTTP vers HTTPS. Cette option n'a aucun effet si le serveur n'écoute pas HTTPS.",
|
||||
"LabelRequireHttps": "Nécessite HTTPS",
|
||||
"LabelNightly": "De nuit",
|
||||
"LabelStable": "Stable",
|
||||
"EnableDetailsBanner": "Bannière des détails",
|
||||
"EnableDetailsBannerHelp": "Affichez une image de bannière en haut de la page de détails de l'article.",
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
"FolderTypeTvShows": "TV",
|
||||
"Friday": "Friitig",
|
||||
"HeaderAddUser": "Erstell en User",
|
||||
"HeaderAutomaticUpdates": "Automatischi Updates",
|
||||
"HeaderDeviceAccess": "Grät Zuegriff",
|
||||
"HeaderEasyPinCode": "Eifache Pin Code",
|
||||
"HeaderFrequentlyPlayed": "Vell gspellt",
|
||||
|
@ -49,7 +48,6 @@
|
|||
"LabelSaveLocalMetadataHelp": "Wennd Bilder und Metadate direkt i d'Medieordner speicherisch, chasch sie eifach weder finde und au bearbeite.",
|
||||
"LabelSelectUsers": "Wähl User:",
|
||||
"LabelTimeLimitHours": "Ziitlimit (h):",
|
||||
"LabelYourFirstName": "Din Vorname:",
|
||||
"LabelYoureDone": "Du besch fertig!",
|
||||
"LibraryAccessHelp": "Wähl en Medieordner us, um de mit dem User z'teile. Administratore werded immer d'Möglichkeit ha alli Verzeichnis mitm Metadate Manager z'bearbeite.",
|
||||
"MaxParentalRatingHelp": "Date mit enere höhere Kindersicherig werded vo dem User versteckt.",
|
||||
|
@ -112,7 +110,6 @@
|
|||
"TabNetworks": "Studios",
|
||||
"TabNotifications": "Mitteilige",
|
||||
"TabPassword": "Passwort",
|
||||
"TabPlaylist": "Playliste",
|
||||
"TabProfile": "Profil",
|
||||
"TabProfiles": "Profil",
|
||||
"TabShows": "Serie",
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
"AllEpisodes": "כל הפרקים",
|
||||
"AllLibraries": "כל הספריות",
|
||||
"Anytime": "בכל עת",
|
||||
"AroundTime": "בסביבות {0}",
|
||||
"AroundTime": "בסביבות",
|
||||
"AsManyAsPossible": "כמה שיותר",
|
||||
"AttributeNew": "חדש",
|
||||
"Backdrops": "תמונות רקע",
|
||||
|
@ -32,13 +32,13 @@
|
|||
"ButtonRefreshGuideData": "רענן את מדריך השידור",
|
||||
"ButtonRemove": "הסר",
|
||||
"ButtonResetPassword": "איפוס סיסמא",
|
||||
"ButtonRestart": "איתחול",
|
||||
"ButtonRestart": "הפעל מחדש",
|
||||
"ButtonSave": "שמור",
|
||||
"ButtonSearch": "חיפוש",
|
||||
"ButtonSelectDirectory": "בחר תיקיות",
|
||||
"ButtonShutdown": "כבה",
|
||||
"ButtonSignIn": "היכנס",
|
||||
"ButtonSignOut": "Sign out",
|
||||
"ButtonSignOut": "התנתק",
|
||||
"ButtonSort": "מיין",
|
||||
"CancelRecording": "ביטול הקלטה",
|
||||
"CancelSeries": "בטל סדרה",
|
||||
|
@ -88,7 +88,6 @@
|
|||
"HeaderAddToPlaylist": "הוסף לרשימת ניגון",
|
||||
"HeaderAddUser": "הוסף משתמש",
|
||||
"HeaderAdditionalParts": "חלקים נוספים",
|
||||
"HeaderAutomaticUpdates": "עידכונים אוטומטים",
|
||||
"HeaderCancelRecording": "ביטול הקלטה",
|
||||
"HeaderCancelSeries": "בטל סדרה",
|
||||
"HeaderCastCrew": "שחקנים וצוות",
|
||||
|
@ -115,11 +114,11 @@
|
|||
"HeaderLatestRecordings": "הקלטות אחרונות",
|
||||
"HeaderLiveTV": "שידורים חיים",
|
||||
"HeaderMediaFolders": "ספריות מדיה",
|
||||
"HeaderMetadataSettings": "הגדרות מטא נתונים",
|
||||
"HeaderMetadataSettings": "הגדרות מטא-דאטה",
|
||||
"HeaderMovies": "סרטים",
|
||||
"HeaderMusicVideos": "קליפים",
|
||||
"HeaderMyMedia": "הספרייה שלי",
|
||||
"HeaderNextUp": "הבא",
|
||||
"HeaderMyMedia": "המדיה שלי",
|
||||
"HeaderNextUp": "הבא בתור",
|
||||
"HeaderPaths": "נתיבים",
|
||||
"HeaderPlayAll": "נגן הכל",
|
||||
"HeaderPleaseSignIn": "אנא היכנס",
|
||||
|
@ -139,7 +138,7 @@
|
|||
"Help": "עזרה",
|
||||
"Identify": "לזהות",
|
||||
"Images": "תמונות",
|
||||
"InstallingPackage": "מתקין {0}",
|
||||
"InstallingPackage": "מתקין {0} (גירסה {1})",
|
||||
"InstantMix": "מיקס מיידי",
|
||||
"ItemCount": "פריטים {0}",
|
||||
"Kids": "ילדים",
|
||||
|
@ -151,16 +150,14 @@
|
|||
"LabelAirsBeforeSeason": "באוויר לפני העונה:",
|
||||
"LabelAlbum": "אלבום:",
|
||||
"LabelAlbumArtists": "אלבום אומנים:",
|
||||
"LabelAllowServerAutoRestart": "אפשר לשרת להתחיל אוטומטית כדי לאפשר את העידכונים",
|
||||
"LabelAllowServerAutoRestartHelp": "השרת יתחיל מחדש רק כשאר אין משתמשים פעילים",
|
||||
"LabelArtists": "אומנים:",
|
||||
"LabelArtistsHelp": "הפרד מרובים באמצעות;",
|
||||
"LabelArtistsHelp": "הפרד אמנים מרובים באמצעות נקודה-פסיק (;).",
|
||||
"LabelAudioLanguagePreference": "שפת קול מועדפת:",
|
||||
"LabelBirthDate": "תאריך לידה:",
|
||||
"LabelBirthYear": "שנת לידה:",
|
||||
"LabelBlastMessageInterval": "אינטרוול הודעות דחיפה (בשניות)",
|
||||
"LabelBlastMessageInterval": "תדירות הודעות דחיפה",
|
||||
"LabelBlastMessageIntervalHelp": "מגדיר את משך הזמן בשניות בין הודעות דחיפה של השרת.",
|
||||
"LabelCachePath": "נתיב cache:",
|
||||
"LabelCachePath": "נתיב מטמון:",
|
||||
"LabelChannels": "ערוצים:",
|
||||
"LabelCollection": "אוספים:",
|
||||
"LabelCommunityRating": "דירוג הקהילה:",
|
||||
|
@ -168,7 +165,7 @@
|
|||
"LabelCountry": "מדינה:",
|
||||
"LabelCriticRating": "דירוג ביקורת:",
|
||||
"LabelCurrentPassword": "סיסמא נוכחית:",
|
||||
"LabelCustomCss": "CSS מותאם אישית",
|
||||
"LabelCustomCss": "CSS מותאם אישית:",
|
||||
"LabelCustomRating": "דירוג מותאם אישית:",
|
||||
"LabelDateAdded": "תאריך הוסף:",
|
||||
"LabelDay": "יום:",
|
||||
|
@ -178,15 +175,15 @@
|
|||
"LabelDiscNumber": "מספר דיסק:",
|
||||
"LabelDisplayMissingEpisodesWithinSeasons": "הצג פרקים חסרים בתוך העונות",
|
||||
"LabelDisplayOrder": "סדר תצוגה:",
|
||||
"LabelDownMixAudioScaleHelp": "הגבר אודיו כאשר הוא ממוזג. הגדר ל-1 לשמור על ערך הווליום המקורי",
|
||||
"LabelDownMixAudioScaleHelp": "הגבר את עוצמת השמע כאשר הוא ממוזג. ערך השווה ל-1 יישמר את העוצמה המקורית.",
|
||||
"LabelDynamicExternalId": "{0} תעודת זהות:",
|
||||
"LabelEnableBlastAliveMessages": "הודעות דחיפה",
|
||||
"LabelEnableBlastAliveMessagesHelp": "אפשר זאת אם השרת לא מזוהה כאמין על ידי מכשירי UPnP אחרים ברשת שלך.",
|
||||
"LabelEnableDlnaClientDiscoveryInterval": "זמן גילוי קליינטים (בשניות)",
|
||||
"LabelEnableDlnaClientDiscoveryInterval": "זמן גילוי קליינטים",
|
||||
"LabelEnableDlnaDebugLogging": "אפשר ניהול רישום באגים בDLNA",
|
||||
"LabelEnableDlnaDebugLoggingHelp": "אפשרות זו תיצור קבצי לוג גדולים יותר ועליך להשתמש בה רק על מנת לפתור תקלות.",
|
||||
"LabelEnableDlnaPlayTo": "מאפשר ניגון DLNA ל",
|
||||
"LabelEnableDlnaServer": "אפשר שרת Dina",
|
||||
"LabelEnableDlnaServer": "אפשר שרת DLNA",
|
||||
"LabelEnableRealtimeMonitor": "אפשר מעקב בזמן אמת",
|
||||
"LabelEnableRealtimeMonitorHelp": "שינויים יעשו באופן מיידית על מערכות קבצים נתמכות.",
|
||||
"LabelEndDate": "תאריך סיום:",
|
||||
|
@ -198,21 +195,21 @@
|
|||
"LabelServerNameHelp": "השם יתן לזיהוי השרת. אם מושאר ריק, שם השרת יהיה שם המחשב.",
|
||||
"LabelKeepUpTo": "שמור עד ל:",
|
||||
"LabelLanguage": "שפה:",
|
||||
"LabelLocalHttpServerPortNumber": "מספר פורט HTTP מקומי",
|
||||
"LabelLocalHttpServerPortNumber": "מספר פורט HTTP מקומי:",
|
||||
"LabelLockItemToPreventChanges": "נעל פריט זה כדי למנוע שינויים עתידיים",
|
||||
"LabelMaxBackdropsPerItem": "מספר תמונות רקע מקסימאלי לפריט:",
|
||||
"LabelMaxParentalRating": "דירוג הורים מקסימאלי:",
|
||||
"LabelMaxResumePercentage": "אחוזי המשכה מקסימאלים",
|
||||
"LabelMaxResumePercentageHelp": "קובץ מוגדר כנוגן במלואו אם נעצר אחרי הזמן הזה",
|
||||
"LabelMaxResumePercentage": "אחוזי המשכה מקסימאלים:",
|
||||
"LabelMaxResumePercentageHelp": "קובץ מוגדר כנוגן במלואו אם נעצר אחרי הזמן הזה.",
|
||||
"LabelMaxScreenshotsPerItem": "מספר תמונות מסך מקסימאלי לפריט:",
|
||||
"LabelMessageTitle": "כותרת הודעה:",
|
||||
"LabelMetadataDownloadLanguage": "שפת הורדה מועדפת:",
|
||||
"LabelMetadataPath": "נתיב Metadata:",
|
||||
"LabelMetadataPath": "נתיב מטא-דאטה:",
|
||||
"LabelMinBackdropDownloadWidth": "רוחב תמונת רקע מינימאלי להורדה:",
|
||||
"LabelMinResumeDuration": "משך המשכה מינימאלי (בשניות):",
|
||||
"LabelMinResumeDuration": "משך המשכה מינימאלי:",
|
||||
"LabelMinResumeDurationHelp": "קובץ קצר מזה לא יהיה ניתן להמשך ניגון מנקודת העצירה",
|
||||
"LabelMinResumePercentage": "אחוזי המשכה מינימאלים:",
|
||||
"LabelMinResumePercentageHelp": "כותרים יוצגו כלא נוגנו אם נצרו לפני הזמן הזה",
|
||||
"LabelMinResumePercentageHelp": "כותרים יוצגו כלא נוגנו אם נצרו לפני הזמן הזה.",
|
||||
"LabelMinScreenshotDownloadWidth": "רחוב תמונת מסך מינימאלית להורדה:",
|
||||
"LabelMonitorUsers": "עקוב אחר פעילות מ:",
|
||||
"LabelName": "שם:",
|
||||
|
@ -240,12 +237,12 @@
|
|||
"LabelProfileAudioCodecs": "מקודדי שמע:",
|
||||
"LabelProfileCodecs": "מקודדים:",
|
||||
"LabelProfileVideoCodecs": "מקודדי וידאו:",
|
||||
"LabelPublicHttpPort": "מספר פורט HTTP פומבי",
|
||||
"LabelPublicHttpPort": "מספר פורט HTTP פומבי:",
|
||||
"LabelReadHowYouCanContribute": "למד איך אתה יכול לתרום.",
|
||||
"LabelRecord": "הקלטה:",
|
||||
"LabelRefreshMode": "מצב רענון:",
|
||||
"LabelReleaseDate": "תאריך הוצאה:",
|
||||
"LabelRuntimeMinutes": "זמן ריצה (דקות):",
|
||||
"LabelRuntimeMinutes": "זמן ריצה:",
|
||||
"LabelSaveLocalMetadata": "שמור תמונות רקע בתוך ספריות המדיה",
|
||||
"LabelSaveLocalMetadataHelp": "שמירת תמונות רקע בתוך ספריות המדיה תשים אותם במקום שבו יהיה קל לערוך אותם.",
|
||||
"LabelSeasonNumber": "מספר עונה:",
|
||||
|
@ -266,9 +263,8 @@
|
|||
"LabelUser": "משתמש:",
|
||||
"LabelUserLibrary": "ספריית משתמש:",
|
||||
"LabelYear": "שנה:",
|
||||
"LabelYourFirstName": "שמך הפרטי:",
|
||||
"LabelYoureDone": "סיימת!",
|
||||
"LibraryAccessHelp": "בחר את ספריות המדיה אשר ישותפו עם המשתמש. מנהלים יוכלו לערות את כל התיקיות באמצעות עורך המידע.",
|
||||
"LibraryAccessHelp": "בחר את הספריות אשר ישותפו עם המשתמש. מנהלים יוכלו לערות את כל התיקיות באמצעות עורך המידע.",
|
||||
"Like": "אוהב",
|
||||
"Live": "שידור חי",
|
||||
"LiveBroadcasts": "שידורים חיים",
|
||||
|
@ -306,7 +302,7 @@
|
|||
"OptionAlbumArtist": "אמן אלבום",
|
||||
"OptionAllUsers": "כל המשתמשים",
|
||||
"OptionAllowLinkSharing": "אפשר שיתוף ברשתות חברתיות",
|
||||
"OptionAllowMediaPlayback": "הרשה נגינת מדיה",
|
||||
"OptionAllowMediaPlayback": "אפשר ניגון מדיה",
|
||||
"OptionAllowUserToManageServer": "אפשר למשתמש זה לנהל את השרת",
|
||||
"OptionArtist": "אמן",
|
||||
"OptionAscending": "סדר עולה",
|
||||
|
@ -318,12 +314,12 @@
|
|||
"OptionContinuing": "ממשיך",
|
||||
"OptionCriticRating": "ציון מבקרים",
|
||||
"OptionCustomUsers": "מותאם אישית",
|
||||
"OptionDaily": "יומי",
|
||||
"OptionDaily": "כל יום",
|
||||
"OptionDateAdded": "תאריך הוספה",
|
||||
"OptionDatePlayed": "תאריך ניגון",
|
||||
"OptionDescending": "סדר יורד",
|
||||
"OptionDisableUser": "בטל משתמש זה",
|
||||
"OptionDisableUserHelp": "אם מבוטל, השרת שלא יאפשר חיבורים ממשתמש זה. חיבורים פעילים יבוטלו מייד.",
|
||||
"OptionDisableUserHelp": "השרת לא יאפשר חיבורים ממשתמש זה. חיבורים פעילים יבוטלו מייד.",
|
||||
"OptionDislikes": "לא אוהב",
|
||||
"OptionDownloadArtImage": "עטיפה",
|
||||
"OptionDownloadBackImage": "גב",
|
||||
|
@ -341,42 +337,42 @@
|
|||
"OptionHasSubtitles": "כתוביות",
|
||||
"OptionHasThemeSong": "שיר נושא",
|
||||
"OptionHasThemeVideo": "סרט נושא",
|
||||
"OptionHasTrailer": "טריילר",
|
||||
"OptionHasTrailer": "קדימון",
|
||||
"OptionHideUser": "הסתר משתמש זה בחלון ההתחברות",
|
||||
"OptionImdbRating": "דירוג IMDb",
|
||||
"OptionLikes": "נבחרים",
|
||||
"OptionMissingEpisode": "פרקים חסרים",
|
||||
"OptionMonday": "שני",
|
||||
"OptionNameSort": "שם",
|
||||
"OptionNew": "חדש...",
|
||||
"OptionNew": "חדש…",
|
||||
"OptionOnAppStartup": "בהפעלת התוכנה",
|
||||
"OptionOnInterval": "כל פרק זמן",
|
||||
"OptionParentalRating": "דירוג בקרת הורים",
|
||||
"OptionPlayCount": "מספר השמעות",
|
||||
"OptionPlayCount": "כמות ניגונים",
|
||||
"OptionPlayed": "נוגן",
|
||||
"OptionPremiereDate": "תאריך שידור ראשון",
|
||||
"OptionPremiereDate": "תאריך בכורה",
|
||||
"OptionProfileAudio": "צליל",
|
||||
"OptionProfilePhoto": "תמונה",
|
||||
"OptionProfileVideo": "וידאו",
|
||||
"OptionProfileVideoAudio": "צליל וידאו",
|
||||
"OptionResumable": "ניתן להמשיך",
|
||||
"OptionRuntime": "משך",
|
||||
"OptionRuntime": "זמן ריצה",
|
||||
"OptionSaturday": "שבת",
|
||||
"OptionSpecialEpisode": "ספיישלים",
|
||||
"OptionSunday": "ראשון",
|
||||
"OptionThursday": "חמישי",
|
||||
"OptionTrackName": "שם השיר",
|
||||
"OptionTrackName": "שם הרצועה",
|
||||
"OptionTuesday": "שלישי",
|
||||
"OptionTvdbRating": "דירוג Tvdb",
|
||||
"OptionTvdbRating": "דירוג TVDB",
|
||||
"OptionUnairedEpisode": "פרקים שלא שודרו",
|
||||
"OptionUnplayed": "לא נוגן",
|
||||
"OptionWakeFromSleep": "הער ממצב שינה",
|
||||
"OptionWednesday": "רביעי",
|
||||
"OptionWeekly": "שבועי",
|
||||
"OptionWeekly": "כל שבוע",
|
||||
"OriginalAirDateValue": "תאריך אוויר מקורי: {0}",
|
||||
"Overview": "סקירה כללית",
|
||||
"PackageInstallCancelled": "{0} ההתקנה בוטלה.",
|
||||
"PackageInstallFailed": "ההתקנה {0} נכשלה.",
|
||||
"PackageInstallCancelled": "ההתקנה של {0} (גירסה {1}) בוטלה.",
|
||||
"PackageInstallFailed": "ההתקנה של {0} (גירסה {1}) נכשלה.",
|
||||
"ParentalRating": "דירוג ההורים",
|
||||
"PasswordMatchError": "הסיסמא ואימות הסיסמא צריכות להיות זהות.",
|
||||
"PasswordResetComplete": "הסיסמא אופסה.",
|
||||
|
@ -393,14 +389,13 @@
|
|||
"Premieres": "בכורות",
|
||||
"Producer": "במאי",
|
||||
"ProductionLocations": "מיקומי ייצור",
|
||||
"QueueAllFromHere": "הוסף הכל מכאן לתור",
|
||||
"RecentlyWatched": "נצפה לאחרונה",
|
||||
"Record": "הקלט",
|
||||
"RecordSeries": "הקלט סדרה",
|
||||
"RecordingCancelled": "הקלטה בוטלה.",
|
||||
"RecordingScheduled": "ההקלטה מתוזמנת.",
|
||||
"Refresh": "רענון",
|
||||
"RefreshDialogHelp": "המטא נתונים מתרעננים על סמך הגדרות ושירותי אינטרנט שמופעלים בלוח המחוונים של מרכז אמבי.",
|
||||
"RefreshDialogHelp": "המטא-דאטה מתרעננת על סמך הגדרות ושירותי אינטרנט שמופעלים בלוח הבקרה.",
|
||||
"RefreshQueued": "רענן תור.",
|
||||
"ReleaseDate": "תאריך שיחרור",
|
||||
"RemoveFromCollection": "הסר מאוספים",
|
||||
|
@ -424,7 +419,7 @@
|
|||
"SeriesSettings": "הגדרות סדרה",
|
||||
"SeriesYearToPresent": "{0} - היום",
|
||||
"ServerNameIsRestarting": "שרת Jellyfin - {0} מופעל מחדש.",
|
||||
"ServerNameIsShuttingDown": "שרת Jellyfin - {0} נכבה.",
|
||||
"ServerNameIsShuttingDown": "שרת Jellyfin - {0} בתהליך כיבוי.",
|
||||
"ServerUpdateNeeded": "שרת אמבי זה צריך להיות מעודכן. כדי להוריד את הגרסה העדכנית ביותר, בקר בכתובת {0}",
|
||||
"Settings": "הגדרות",
|
||||
"SettingsSaved": "ההגדרות נשמרו.",
|
||||
|
@ -464,7 +459,6 @@
|
|||
"TabNetworks": "רשתות",
|
||||
"TabNotifications": "התראות",
|
||||
"TabPassword": "סיסמא",
|
||||
"TabPlaylist": "רשימת נגינה",
|
||||
"TabProfile": "פרופיל",
|
||||
"TabProfiles": "פרופילים",
|
||||
"TabRecordings": "הקלטות",
|
||||
|
@ -477,7 +471,7 @@
|
|||
"TabTrailers": "טריילרים",
|
||||
"TabTranscoding": "קידוד",
|
||||
"TabUpcoming": "בקרוב",
|
||||
"Tags": "תגים",
|
||||
"Tags": "מילות מפתח",
|
||||
"TellUsAboutYourself": "ספר לנו על עצמך",
|
||||
"ThisWizardWillGuideYou": "אשף זה יעזור לך בהתליך ההתקנה.",
|
||||
"Thursday": "חמישי",
|
||||
|
@ -520,8 +514,8 @@
|
|||
"AllLanguages": "כל השפות",
|
||||
"Alerts": "התראות",
|
||||
"Box": "מארז",
|
||||
"BirthPlaceValue": "מיקום לידה: {0}",
|
||||
"BirthDateValue": "תאריך לידה: {0}",
|
||||
"BirthPlaceValue": "מקום לידה: {0}",
|
||||
"BirthDateValue": "נולד: {0}",
|
||||
"Backdrop": "רקע",
|
||||
"AuthProviderHelp": "בחר ספק אימות שישמש לאימות הסיסמה של משתמש זה.",
|
||||
"Audio": "שמע",
|
||||
|
@ -536,10 +530,10 @@
|
|||
"Yesterday": "אתמול",
|
||||
"HeaderAlbumArtists": "אמני האלבום",
|
||||
"Favorites": "מועדפים",
|
||||
"HeaderFavoriteAlbums": "אלבומים שאהבתי",
|
||||
"HeaderFavoriteAlbums": "אלבומים מועדפים",
|
||||
"HeaderFavoriteArtists": "אמנים מועדפים",
|
||||
"Folders": "תיקיות",
|
||||
"HeaderFavoriteShows": "סדרות מועדפות",
|
||||
"HeaderFavoriteShows": "תוכניות מועדפות",
|
||||
"HeaderFavoriteEpisodes": "פרקים מועדפים",
|
||||
"HeaderFavoriteSongs": "שירים מועדפים",
|
||||
"Collections": "אוספים",
|
||||
|
@ -547,8 +541,7 @@
|
|||
"HeaderContinueWatching": "המשך לצפות",
|
||||
"AllowOnTheFlySubtitleExtraction": "אפשר חילוץ כתוביות בזמן אמת",
|
||||
"AllowHWTranscodingHelp": "אפשר למלקט לקודד הזרמות בזמן אמת. זה עשוי לעזור בהפחתת הקידוד שנעשה ע\"י השרת.",
|
||||
"AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VOBSUB, PGS, SUB/IDX)",
|
||||
"AddItemToCollectionHelp": "הוסף חפצים לאוסף על ידי חיפושם ושימוש בתפריט הלחצן הימני או לחצן התפריט כדי להוסיפם לאוסף.",
|
||||
"AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VOBSUB, PGS, SUB/IDX, …)",
|
||||
"Songs": "שירים",
|
||||
"Shows": "סדרות",
|
||||
"DownloadsValue": "{0} הורדות",
|
||||
|
@ -578,7 +571,6 @@
|
|||
"ButtonParentalControl": "בקרת הורים",
|
||||
"ButtonNetwork": "רשת",
|
||||
"ButtonMore": "עוד",
|
||||
"ButtonLearnMore": "למד עוד",
|
||||
"ButtonInfo": "מידע",
|
||||
"ButtonHome": "בית",
|
||||
"ButtonHelp": "עזרה",
|
||||
|
@ -596,7 +588,7 @@
|
|||
"MessageConfirmRestart": "האם אתה בטוח שברצונך לאתחל את שרת ה-Jellyfin?",
|
||||
"HeaderThisUserIsCurrentlyDisabled": "משתמש זה אינו פעיל כרגע",
|
||||
"HeaderTaskTriggers": "טריגרים של המשימה",
|
||||
"HeaderTags": "תגיות",
|
||||
"HeaderTags": "מילות מפתח",
|
||||
"HeaderStopRecording": "עצור הקלטה",
|
||||
"HeaderSortOrder": "סדר מיון",
|
||||
"HeaderSortBy": "מיין לפי",
|
||||
|
@ -609,7 +601,7 @@
|
|||
"HeaderRestart": "הפעלה מחדש",
|
||||
"HeaderProfileInformation": "מידע פרופיל",
|
||||
"HeaderProfile": "פרופיל",
|
||||
"HeaderPreferredMetadataLanguage": "שפת מטא-נתונים מועדפת",
|
||||
"HeaderPreferredMetadataLanguage": "שפת מטא-דאטה מועדפת",
|
||||
"HeaderPluginInstallation": "התקנת תוסף",
|
||||
"HeaderPlayOn": "נגן על",
|
||||
"HeaderPinCodeReset": "איפוס קוד סיכה",
|
||||
|
@ -685,7 +677,7 @@
|
|||
"EnableExternalVideoPlayers": "נגני וידאו חיצוניים",
|
||||
"EnableCinemaMode": "מצב קולנוע",
|
||||
"EnableBackdrops": "תמונות רקע",
|
||||
"EditMetadata": "ערוך מטא-נתונים",
|
||||
"EditMetadata": "ערוך מטא-דאטה",
|
||||
"DrmChannelsNotImported": "ערוצים בעלי ניהול זכויות דיגיטלי (DRM) לא ייובאו.",
|
||||
"Down": "למטה",
|
||||
"Display": "תצוגה",
|
||||
|
@ -695,13 +687,11 @@
|
|||
"DirectPlaying": "ניגון ישיר",
|
||||
"DetectingDevices": "מזהה מכשירים",
|
||||
"DefaultMetadataLangaugeDescription": "אלו הגדרות ברירת המחדל שלך וניתן להתאים אותן לכל ספרייה בנפרד.",
|
||||
"CopyStreamURLError": "אירעה שגיאה במהלך העתקת הקישור.",
|
||||
"CopyStreamURLSuccess": "הקישור הועתק בהצלחה.",
|
||||
"CopyStreamURL": "העתק קישור זרם",
|
||||
"Connect": "התחבר",
|
||||
"ConfirmEndPlayerSession": "האם לכבות את Jellyfin על {0}?",
|
||||
"CommunityRating": "דירוג קהילה",
|
||||
"ButtonViewWebsite": "צפה באתר האינטרנט",
|
||||
"ButtonWebsite": "אתר אינטרנט",
|
||||
"ButtonUp": "למעלה",
|
||||
"ButtonSubmit": "שלח",
|
||||
|
@ -726,7 +716,6 @@
|
|||
"ButtonDownload": "הורדה",
|
||||
"ButtonDown": "למטה",
|
||||
"ButtonChangeServer": "החלף שרת",
|
||||
"AutoBasedOnLanguageSetting": "אוטומטי (לפי הגדרות שפה)",
|
||||
"ButtonBack": "חזרה",
|
||||
"OptionBanner": "באנר",
|
||||
"ButtonAudioTracks": "רצועות שמע",
|
||||
|
@ -737,9 +726,8 @@
|
|||
"ButtonAddScheduledTaskTrigger": "הוסף טריגר",
|
||||
"Browse": "עיין",
|
||||
"BoxRear": "מארז (מאחור)",
|
||||
"BookLibraryHelp": "ניתן להוסיף ספרים מוקלטים וספרים כתובים. עיינו {0}במדריך מתן שמות לספרים{1}.",
|
||||
"BookLibraryHelp": "ניתן להוסיף ספרים מוקלטים וספרים כתובים. עיינו {0} במדריך מתן שמות לספרים {1}.",
|
||||
"Desktop": "שולחן עבודה",
|
||||
"MessageUnauthorizedUser": "אין לך גישה לשרת ברגע זה. אנא צור קשר עם מנהל השרת למידע נוסף.",
|
||||
"MessageDeleteTaskTrigger": "האם אתה בטוח שברצונך למחוק את מפעיל המשימה הזה?",
|
||||
"LastSeen": "נראה לאחרונה ב-{0}",
|
||||
"PersonRole": "כ-{0}",
|
||||
|
@ -750,11 +738,11 @@
|
|||
"DeleteDeviceConfirmation": "האם אתה בטוח שברצונך למחוק את המכשיר? הוא יופיע שוב בפעם הבאה שמשתמש ייכנס באמצעותו.",
|
||||
"ColorSpace": "מרחב צבע",
|
||||
"CinemaModeConfigurationHelp": "מצב קולנוע מביא את חוויית הקולנוע היישר אל הסלון עם האפשרות להפעיל טריילרים וקדימונים מותאמים אישית לפני הסרט.",
|
||||
"ChannelAccessHelp": "בחר את הערוצים לשיתוף עם משתמש זה. מנהלים יוכלו לערוך את כל הערוצים בעזרת \"מנהל המטא-דאטה\".",
|
||||
"ChannelAccessHelp": "בחר את הערוצים לשיתוף עם משתמש זה. מנהלים יוכלו לערוך את כל הערוצים בעזרת מנהל המטא-דאטה.",
|
||||
"ButtonResetEasyPassword": "אתחל קוד פין פשוט",
|
||||
"ButtonOff": "כיבוי",
|
||||
"ButtonLibraryAccess": "הרשאות גישה לספרייה",
|
||||
"BurnSubtitlesHelp": "מחליט אם על השרת לצרוב כתוביות בזמן קידוד וידאו. הימנעות מכך תשפר מאוד את הביצועים. בחר \"אוטומטי\" לצריבת כתוביות על בסיס פורמט תמונה (VOBSUB, PGS, SUB, IDX) וכתוביות ASS או SSA מסויימות.",
|
||||
"BurnSubtitlesHelp": "מחליט אם על השרת לצרוב כתוביות בזמן קידוד וידאו. הימנעות מכך תשפר מאוד את הביצועים. בחר \"אוטומטי\" לצריבת כתוביות על בסיס פורמט תמונה (VOBSUB, PGS, SUB, IDX, …) וכתוביות ASS או SSA מסויימות.",
|
||||
"Artist": "אמן",
|
||||
"AllowedRemoteAddressesHelp": "רשימת IP \\ מיסוך רשת המופרדת בפסיקים עבור רשתות שיורשו להתחבר מרחוק. במידה ותישאר ריקה, כל הכתובות יורשו להתחבר.",
|
||||
"Album": "אלבום",
|
||||
|
@ -767,11 +755,119 @@
|
|||
"Raised": "מורם",
|
||||
"LabelSpecialSeasonsDisplayName": "שם תצוגת \"עונה מיוחדת\":",
|
||||
"LabelSource": "מקור:",
|
||||
"LabelSoundEffects": "אפקטי סאונד:",
|
||||
"ButtonTogglePlaylist": "רשימת ניגון",
|
||||
"ButtonToggleContextMenu": "עוד",
|
||||
"ButtonSyncPlay": "SyncPlay",
|
||||
"ButtonPlayer": "נגן",
|
||||
"StopPlayback": "הפסק הפעלה",
|
||||
"ClearQueue": "נקה תור"
|
||||
"ClearQueue": "נקה תור",
|
||||
"DashboardServerName": "שרת: {0}",
|
||||
"DashboardVersionNumber": "גירסה: {0}",
|
||||
"DashboardArchitecture": "ארכיטקטורה: {0}",
|
||||
"DashboardOperatingSystem": "מערכת הפעלה: {0}",
|
||||
"HeaderMyMediaSmall": "המדיה שלי (קטן)",
|
||||
"HeaderMusicQuality": "איכות מוזיקה",
|
||||
"HeaderMediaInfo": "מידע על המדיה",
|
||||
"HeaderMoreLikeThis": "עוד כמו זה",
|
||||
"HeaderMedia": "מדיה",
|
||||
"LabelMetadata": "מטא-דאטה:",
|
||||
"HeaderSelectMetadataPath": "בחר נתיב מטא-דאטה",
|
||||
"NextUp": "הבא בתור",
|
||||
"LabelBaseUrl": "כתובת בסיס:",
|
||||
"LabelEnableHttpsHelp": "האזן על גבי פורט ה-HTTPS המוגדר. חובה לספק תעודה תקינה על מנת שהגדרה זו תכנס לתוקף.",
|
||||
"LabelEnableHttps": "הפעל HTTPS",
|
||||
"LabelEnableHardwareDecodingFor": "הפעל פענוח חומרה עבור:",
|
||||
"LabelEnableDlnaServerHelp": "אפשר למכשירי UPnP ברשת שלך לעיין בתוכן ולנגן אותו.",
|
||||
"LabelEnableAutomaticPortMap": "הפעל מיפוי פורט אוטומטי",
|
||||
"LabelDropImageHere": "גרור תמונה לכאן, או לחץ כדי לעיין.",
|
||||
"LabelDownloadLanguages": "הורד שפות:",
|
||||
"LabelDownMixAudioScale": "הגברת עוצמת שמע כאשר הוא ממוזג:",
|
||||
"LabelDisplaySpecialsWithinSeasons": "הצג פרקים מיוחדים בתוך העונות שבמהלכן הם שודרו",
|
||||
"LabelDisplayName": "שם תצוגה:",
|
||||
"LabelDisplayMode": "מצב תצוגה:",
|
||||
"LabelDisplayLanguageHelp": "תרגום Jellyfin הוא פרויקט מתמשך.",
|
||||
"LabelDisplayLanguage": "שפת תצוגה:",
|
||||
"LabelDidlMode": "מצב DIDL:",
|
||||
"LabelDeviceDescription": "תיאור מכשיר",
|
||||
"LabelDefaultScreen": "מסך ברירת-מחדל:",
|
||||
"LabelCustomDeviceDisplayName": "שם תצוגה:",
|
||||
"LabelImageType": "סוג תמונה:",
|
||||
"LabelHttpsPortHelp": "מספר פורט ה-TCP עבור שרת ה-HTTPS.",
|
||||
"LabelHttpsPort": "מספר פורט HTTPS מקומי:",
|
||||
"LabelGroupMoviesIntoCollections": "אגד סרטים לתוך אוספים",
|
||||
"LabelFriendlyName": "שם ידידותי:",
|
||||
"LabelFormat": "תבנית:",
|
||||
"LabelForgotPasswordUsernameHelp": "הכנס/י את שם המשתמש שלך, אם את/ה זוכר/ת אותו.",
|
||||
"LabelFont": "גופן:",
|
||||
"LabelFolder": "תיקייה:",
|
||||
"LabelFileOrUrl": "קובץ או כתובת אינטרנט:",
|
||||
"Season": "עונה",
|
||||
"OptionEnableAccessFromAllDevices": "אפשר גישה מכל המכשירים",
|
||||
"Primary": "ראשי",
|
||||
"Menu": "תפריט",
|
||||
"LiveTV": "שידורים חיים",
|
||||
"ManageLibrary": "נהל ספרייה",
|
||||
"Logo": "לוגו",
|
||||
"OptionDateAddedImportTime": "השתמש בתאריך הסריקה לתוך הספרייה",
|
||||
"OptionDateAddedFileTime": "השתמש בתאריך יצירת הקובץ",
|
||||
"OptionBlockTrailers": "קדימונים",
|
||||
"OptionBlockMusic": "מוזיקה",
|
||||
"OptionBlockLiveTvChannels": "ערוצי שידורים חיים",
|
||||
"OptionBlockBooks": "ספרים",
|
||||
"OptionAllowRemoteSharedDevices": "אפשר שליטה מרחוק על מכשירים משותפים",
|
||||
"OptionAllowRemoteControlOthers": "אפשר שליטה מרחוק על משתמשים אחרים",
|
||||
"SelectAdminUsername": "נא לבחור שם משתמש עבור חשבון המנהל.",
|
||||
"OptionHideUserFromLoginHelp": "שימושי עבור חשבונות פרטיים או חשבונות מנהל מוסתרים. המשתמש יצטרך להזין את שם המשתמש והסיסמה ידנית על מנת להתחבר.",
|
||||
"MessagePlayAccessRestricted": "התוכן הזה לא ניתן לניגון כרגע. למידע נוסף, נא ליצור קשר עם מנהל המערכת שלך.",
|
||||
"MessageContactAdminToResetPassword": "נא ליצור קשר עם מנהל המערכת שלך על מנת לאפס את הסיסמה שלך.",
|
||||
"HeaderAdmin": "מנהל",
|
||||
"TabDisplay": "תצוגה",
|
||||
"HeaderDisplay": "תצוגה",
|
||||
"Suggestions": "המלצות",
|
||||
"MessageSyncPlayNoGroupsAvailable": "אין קבוצות זמינות. התחל לנגן משהו קודם.",
|
||||
"OptionHomeVideos": "תמונות",
|
||||
"Home": "בית",
|
||||
"LabelServerName": "שם השרת:",
|
||||
"TabPlugins": "תוספים",
|
||||
"MessageNoPluginsInstalled": "אין לך תוספים מותקנים.",
|
||||
"MessageNoAvailablePlugins": "אין תוספים זמינים.",
|
||||
"TabLogs": "יומני רישום",
|
||||
"LabelLogs": "יומני רישום:",
|
||||
"TabNetworking": "תקשורת",
|
||||
"TabDVR": "ממיר-מקליט",
|
||||
"HeaderDVR": "ממיר-מקליט",
|
||||
"LabelScheduledTaskLastRan": "רץ לאחרונה {0}, במשך {1}.",
|
||||
"LabelTheme": "ערכת נושא:",
|
||||
"LabelTextSize": "גודל טקסט:",
|
||||
"LabelTextColor": "צבע טקסט:",
|
||||
"LabelSyncPlayAccessNone": "מבוטל עבור משתמש זה",
|
||||
"LabelSyncPlayAccessJoinGroups": "אפשר למשתמש להצטרף לקבוצות",
|
||||
"LabelSyncPlayAccessCreateAndJoinGroups": "אפשר למשתמש ליצור קבוצות ולהצטרף אליהן",
|
||||
"LabelSyncPlayLeaveGroup": "עזוב קבוצה",
|
||||
"LabelSyncPlayNewGroupDescription": "צור קבוצה חדשה",
|
||||
"LabelSyncPlayNewGroup": "קבוצה חדשה",
|
||||
"MoreFromValue": "עוד מ{0}",
|
||||
"Writers": "תסריטאים",
|
||||
"DailyAt": "כל יום ב-{0}",
|
||||
"OptionWeekends": "סופי שבוע",
|
||||
"OptionWeekdays": "ימי חול",
|
||||
"Unplayed": "לא נוגן",
|
||||
"OptionSubstring": "מחרוזת משנה",
|
||||
"OptionReleaseDate": "תאריך שחרור",
|
||||
"OptionRegex": "ביטוי-רגולרי",
|
||||
"OptionRandom": "אקראי",
|
||||
"OptionPoster": "פוסטר",
|
||||
"OptionNone": "כלום",
|
||||
"OptionMax": "מקסימום",
|
||||
"List": "רשימה",
|
||||
"OptionList": "רשימה",
|
||||
"OptionIsSD": "הבחנה רגילה (SD)",
|
||||
"OptionIsHD": "הבחנה גבוהה (HD)",
|
||||
"OptionExternallyDownloaded": "הורדה חיצונית",
|
||||
"OptionEveryday": "כל יום",
|
||||
"OptionEnableExternalContentInSuggestions": "הפעל תוכן חיצוני בהמלצות",
|
||||
"OptionEnableAccessToAllLibraries": "אפשר גישה לכל הספריות",
|
||||
"OptionEnableAccessToAllChannels": "אפשר גישה לכל הערוצים",
|
||||
"HeaderSyncPlaySelectGroup": "הצטרף לקבוצה",
|
||||
"TabUsers": "משתמשים"
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
"LabelFinish": "समाप्त",
|
||||
"LabelNext": "अगला",
|
||||
"LabelPrevious": "पिछला",
|
||||
"LabelYourFirstName": "आपका प्रथम नामः",
|
||||
"LabelYoureDone": "आपने पूरा कर लिया है!",
|
||||
"MoreUsersCanBeAddedLater": "अधिक उपयोगकर्ताओं को बाद में डैशबोर्ड के अंतर्गत जोड़ा जा सकता है।",
|
||||
"TellUsAboutYourself": "हमें अपने बारे में बताएं",
|
||||
|
@ -43,7 +42,6 @@
|
|||
"ButtonMore": "अधिक",
|
||||
"ButtonManualLogin": "मैनुअल लॉगिन",
|
||||
"ButtonLibraryAccess": "पुस्तकालय का उपयोग",
|
||||
"ButtonLearnMore": "और अधिक जानें",
|
||||
"ButtonInfo": "जानकारी",
|
||||
"ButtonHome": "घर",
|
||||
"ButtonHelp": "मदद",
|
||||
|
@ -86,7 +84,6 @@
|
|||
"Banner": "झंडा",
|
||||
"Backdrops": "पृष्ठभूमि",
|
||||
"Backdrop": "पृष्ठभूमि",
|
||||
"AutoBasedOnLanguageSetting": "ऑटो (भाषा सेटिंग के आधार पर)",
|
||||
"Auto": "ऑटो",
|
||||
"AuthProviderHelp": "इस उपयोगकर्ता के पासवर्ड को प्रमाणित करने के लिए एक प्रमाणीकरण प्रदाता का उपयोग करें।",
|
||||
"Audio": "नया",
|
||||
|
@ -112,7 +109,6 @@
|
|||
"AlbumArtist": "चित्राधार कलाकार",
|
||||
"AllowOnTheFlySubtitleExtraction": "मक्खी पर उपशीर्षक निष्कर्षण की अनुमति दें",
|
||||
"Album": "एल्बम",
|
||||
"AddItemToCollectionHelp": "उनके लिए खोज करके संग्रह में आइटम जोड़ें और उन्हें संग्रह में जोड़ने के लिए उनके राइट-क्लिक या टैप मेनू का उपयोग करें।",
|
||||
"ButtonSyncPlay": "SyncPlay",
|
||||
"MessageBrowsePluginCatalog": "उपलब्ध प्लगिन्स देखने के लिए हमारे कैटलॉग को ब्राउज़ करें।",
|
||||
"Browse": "ब्राउज़",
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
"Actor": "Glumac",
|
||||
"Add": "Dodaj",
|
||||
"AddItemToCollectionHelp": "Pretraživanjem stavaka i korištenjem desnog klika ili izbornika dodavanja u kolekciju možete ih dodati u kolekciju.",
|
||||
"AddToCollection": "Dodaj u kolekciju",
|
||||
"AddToPlaylist": "Dodaj u popis",
|
||||
"AdditionalNotificationServices": "Pretražite katalog dodataka kako bi instalirali dodatne servise za obavijesti.",
|
||||
|
@ -44,7 +43,6 @@
|
|||
"ButtonGuide": "Vodič",
|
||||
"ButtonHelp": "Pomoć",
|
||||
"ButtonHome": "Početna",
|
||||
"ButtonLearnMore": "Nauči još",
|
||||
"ButtonLibraryAccess": "Pristup biblioteci",
|
||||
"ButtonManualLogin": "Ručna prijava",
|
||||
"ButtonMore": "Više",
|
||||
|
@ -88,7 +86,6 @@
|
|||
"ButtonTrailer": "Kratki video",
|
||||
"ButtonUninstall": "Ukloni",
|
||||
"ButtonUp": "Gore",
|
||||
"ButtonViewWebsite": "Posjeti web stranice",
|
||||
"ButtonWebsite": "Web stranica",
|
||||
"CancelRecording": "Prekini snimanje",
|
||||
"CancelSeries": "Odustani od serije",
|
||||
|
@ -176,7 +173,6 @@
|
|||
"HeaderApiKeysHelp": "Vanjske aplikacije moraju imati API ključ kako bi komunicirale s Jellyfin Serverom. Ključevi se izdaju prijavom s Jellyfin računom ili ručnim odobravanjem zahtjeva ključa.",
|
||||
"HeaderApp": "Aplikacija",
|
||||
"HeaderAudioSettings": "Postavke zvuka",
|
||||
"HeaderAutomaticUpdates": "Automatske nadogradnje",
|
||||
"HeaderBooks": "Knjige",
|
||||
"HeaderBranding": "Brendiranje",
|
||||
"HeaderCancelRecording": "Prekini snimanje",
|
||||
|
@ -346,8 +342,6 @@
|
|||
"LabelAlbumArtists": "Izvođači albuma:",
|
||||
"LabelAll": "Sve",
|
||||
"LabelAllowHWTranscoding": "Dopusti hardversko konvertiranje",
|
||||
"LabelAllowServerAutoRestart": "Dopusti serveru da se automatski resetira kako bi proveo nadogradnje",
|
||||
"LabelAllowServerAutoRestartHelp": "Server će se resetirati samo dok je u statusu mirovanja kada nema aktivnih korisnika.",
|
||||
"LabelAppName": "Ime aplikacije",
|
||||
"LabelAppNameExample": "Primjer: Sickbeard, Sonarr",
|
||||
"LabelArtists": "Izvođači:",
|
||||
|
@ -596,7 +590,6 @@
|
|||
"LabelVersionInstalled": "{0} instaliran",
|
||||
"LabelXDlnaCapHelp": "Određuje sadržaj X_DLNACAP elementa u urn:shemas-dlna-org:device-1-0 namespace.",
|
||||
"LabelXDlnaDocHelp": "Određuje sadržaj X_DLNADOC elementa u urn:schemas-dlna-org:device-1-0 namespace.",
|
||||
"LabelYourFirstName": "Ime:",
|
||||
"LabelYoureDone": "Završeno!",
|
||||
"LabelZipCode": "Poštanski broj:",
|
||||
"LabelffmpegPath": "FFmpeg putanja:",
|
||||
|
@ -653,7 +646,6 @@
|
|||
"MessageFileReadError": "Prilikom učitavanja datoteke desila se greška. Pokušajte ponovno.",
|
||||
"MessageForgotPasswordFileCreated": "Sljedeća datoteka je stvorena na vašem poslužitelju i sadrži upute o tome kako postupiti:",
|
||||
"MessageForgotPasswordInNetworkRequired": "Molim pokušajte ponovno unutar kućne mreže za pokretanje postupka za poništavanje zaporke.",
|
||||
"MessageInstallPluginFromApp": "Ovaj dodatak mora biti instaliran unutar aplikacije u kojoj ga namjeravate koristiti.",
|
||||
"MessageInvalidForgotPasswordPin": "Upisan je neispravan ili zastarjele pin. Molim, pokušajte ponovno.",
|
||||
"MessageInvalidUser": "Pogrešno korisničko ime ili lozinka. Molim, pokušajte ponovo.",
|
||||
"MessageItemSaved": "Stavka je snimljena.",
|
||||
|
@ -846,7 +838,6 @@
|
|||
"Premieres": "Premijere",
|
||||
"Producer": "Producent",
|
||||
"ProductionLocations": "Lokacije proizvodnje",
|
||||
"QueueAllFromHere": "Stavi u red čekanja sve odavde",
|
||||
"RecentlyWatched": "Nedavno pogledano",
|
||||
"RecommendationBecauseYouLike": "Zato što volite {0}",
|
||||
"RecommendationBecauseYouWatched": "Zato što ste gledali {0}",
|
||||
|
@ -934,7 +925,6 @@
|
|||
"TabParentalControl": "Roditeljska kontrola",
|
||||
"TabPassword": "Lozinka",
|
||||
"TabPlayback": "Reprodukcija",
|
||||
"TabPlaylist": "Lista izvođenja",
|
||||
"TabPlaylists": "Popisi",
|
||||
"TabPlugins": "Dodaci",
|
||||
"TabProfile": "Profil",
|
||||
|
@ -1048,7 +1038,6 @@
|
|||
"Album": "Album",
|
||||
"AddToPlayQueue": "Dodaj u red izvođenja",
|
||||
"Banner": "Zaglavlje",
|
||||
"AutoBasedOnLanguageSetting": "Automatski (prema jezičnim postavkama)",
|
||||
"AspectRatio": "Omjer",
|
||||
"Ascending": "Uzlazno",
|
||||
"Art": "Grafike",
|
||||
|
@ -1069,7 +1058,6 @@
|
|||
"Box": "Kutija",
|
||||
"AskAdminToCreateLibrary": "Traži administratora da kreira biblioteku.",
|
||||
"PictureInPicture": "Slika u slici",
|
||||
"OtherArtist": "Ostali izvođači",
|
||||
"OptionThumb": "Sličica",
|
||||
"OptionProtocolHttp": "HTTP",
|
||||
"OptionProfileVideo": "Video",
|
||||
|
@ -1109,7 +1097,6 @@
|
|||
"MediaInfoStreamTypeSubtitle": "Prijevod",
|
||||
"MediaInfoStreamTypeData": "Podaci",
|
||||
"MediaInfoStreamTypeAudio": "Audio",
|
||||
"MediaInfoSoftware": "Softver",
|
||||
"Logo": "Logo",
|
||||
"List": "Lista",
|
||||
"LabelYear": "Godina:",
|
||||
|
@ -1133,7 +1120,6 @@
|
|||
"MillisecondsUnit": "ms",
|
||||
"LabelSubtitles": "Prijevodi",
|
||||
"LabelStatus": "Status:",
|
||||
"LabelSoundEffects": "Zvučni efekti:",
|
||||
"LabelSortOrder": "Redoslijed sortiranja:",
|
||||
"LabelSortBy": "Sortiranje po:",
|
||||
"LabelSize": "Veličina:",
|
||||
|
@ -1229,7 +1215,6 @@
|
|||
"DatePlayed": "Datum reprodukcije",
|
||||
"DateAdded": "Datum dodavanja",
|
||||
"CriticRating": "Rejting kritičara",
|
||||
"CopyStreamURLError": "Došlo je do greške prilikom kopiranja URLa.",
|
||||
"ConfirmEndPlayerSession": "Da li želite ugasiti Jellyfin na {0}?",
|
||||
"CommunityRating": "Rejting zajednice",
|
||||
"Browse": "Pretraži",
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
"Ascending": "Növekvő",
|
||||
"AttributeNew": "Új",
|
||||
"Audio": "Audió",
|
||||
"AutoBasedOnLanguageSetting": "Automatikus (a nyelvi beállítások alapján)",
|
||||
"BirthDateValue": "Született: {0}",
|
||||
"BirthPlaceValue": "Születési hely: {0}",
|
||||
"Books": "Könyvek",
|
||||
|
@ -131,7 +130,6 @@
|
|||
"HeaderAlbums": "Albumok",
|
||||
"HeaderAudioBooks": "Hangos könyvek",
|
||||
"HeaderAudioSettings": "Audió Beállítások",
|
||||
"HeaderAutomaticUpdates": "Automatikus frissitések",
|
||||
"HeaderCastAndCrew": "Szereplők és Stáb",
|
||||
"HeaderCastCrew": "Szereplők és Stáb",
|
||||
"HeaderChannels": "Csatornák",
|
||||
|
@ -228,8 +226,6 @@
|
|||
"Label3DFormat": "3D formátum:",
|
||||
"LabelAlbumArtists": "Album előadók:",
|
||||
"LabelAll": "Összes",
|
||||
"LabelAllowServerAutoRestart": "Automatikus újraindítás engedélyezése a szervernek a frissítések telepítéséhez",
|
||||
"LabelAllowServerAutoRestartHelp": "A szerver csak akkor indul újra ha nincs felhasználói tevékenység.",
|
||||
"LabelArtists": "Előadók:",
|
||||
"LabelAudio": "Audió",
|
||||
"LabelAudioLanguagePreference": "Audió nyelvének beállítása:",
|
||||
|
@ -244,7 +240,6 @@
|
|||
"LabelCustomDeviceDisplayName": "Megjelenítendő név:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Adj meg egy egyedi nevet, vagy hagyd üresen a készülék által elküldött név használatához.",
|
||||
"LabelCustomRating": "Egyéni értékelés:",
|
||||
"LabelDashboardTheme": "Szerver vezérlőpult kinézete:",
|
||||
"LabelDateAdded": "Hozzáadva:",
|
||||
"LabelDateTimeLocale": "Dátum és idő formátum:",
|
||||
"LabelDay": "Nap:",
|
||||
|
@ -337,7 +332,6 @@
|
|||
"LabelVersionInstalled": "{0} telepítve",
|
||||
"LabelVideo": "Videó",
|
||||
"LabelYear": "Év:",
|
||||
"LabelYourFirstName": "Keresztneved:",
|
||||
"LabelYoureDone": "Készen vagy!",
|
||||
"LatestFromLibrary": "Nemrég hozzáadott {0}",
|
||||
"Like": "Tettszik",
|
||||
|
@ -529,7 +523,6 @@
|
|||
"TabParentalControl": "Szülői Felügyelet",
|
||||
"TabPassword": "Jelszó",
|
||||
"TabPlayback": "Lejátszás",
|
||||
"TabPlaylist": "Lejátszási lista",
|
||||
"TabPlaylists": "Lejátszási listák",
|
||||
"TabPlugins": "Bővítmények",
|
||||
"TabProfile": "Profil",
|
||||
|
@ -605,7 +598,6 @@
|
|||
"Blacklist": "Feketelista",
|
||||
"BookLibraryHelp": "Lehetőség van audió és hangoskönyvek visszajátszására. Nézd meg a {0} könyvelnevezési útmutatót {1}.",
|
||||
"MessageBrowsePluginCatalog": "Böngéssz a Bővítmény katalógusunkban a rendelkezésre álló bővítmények megtekintéséhez.",
|
||||
"AddItemToCollectionHelp": "Adj elemeket a gyűjteményekhez, ehhez keresed meg őket, majd kattints jobb egérgombbal, vagy kattints a menüre és add hozzá a gyűjteményhez.",
|
||||
"AllowedRemoteAddressesHelp": "Vesszővel válaszd el az IP-címek vagy IP / netmask címek listáját annak a hálózatnak amelyből távolról csatlakozhatnak. Ha üresen marad, az összes távoli cím megengedett.",
|
||||
"BoxRear": "Box (hátsó)",
|
||||
"ButtonArrowLeft": "Bal",
|
||||
|
@ -614,14 +606,12 @@
|
|||
"ButtonEditOtherUserPreferences": "A felhasználó profiljának, képének és személyes beállításainak szerkesztése.",
|
||||
"ButtonFullscreen": "Teljes képernyő",
|
||||
"ButtonInfo": "Info",
|
||||
"ButtonLearnMore": "Tudj meg többet",
|
||||
"ButtonNetwork": "Hálózat",
|
||||
"ButtonOk": "Ok",
|
||||
"ButtonRevoke": "Visszavon",
|
||||
"ButtonSelectView": "Válassz nézetet",
|
||||
"ButtonStart": "Start",
|
||||
"ButtonUp": "Fel",
|
||||
"ButtonViewWebsite": "Webhely megtekintése",
|
||||
"CancelRecording": "Felvétel törlése",
|
||||
"CancelSeries": "Sorozat törlése",
|
||||
"Categories": "Kategóriák",
|
||||
|
@ -962,11 +952,9 @@
|
|||
"LabelMinResumePercentage": "Minimum folytatás százalékban:",
|
||||
"LabelMinScreenshotDownloadWidth": "Minimális képernyőkép letöltési szélesség:",
|
||||
"LabelPreferredSubtitleLanguage": "Alapértelmezett feliratnyelv:",
|
||||
"LabelSkin": "Kinézet:",
|
||||
"LabelSkipBackLength": "Ugrás vissza hossza:",
|
||||
"LabelSkipForwardLength": "Ugrás előre hossza:",
|
||||
"LabelSkipIfGraphicalSubsPresent": "Kihagyás, ha a videó már tartalmaz beágyazott feliratokat",
|
||||
"LabelSoundEffects": "Hanghatások:",
|
||||
"LabelSportsCategories": "Sport kategóriák:",
|
||||
"LabelStartWhenPossible": "Elindul, amint lehetséges:",
|
||||
"LabelStopWhenPossible": "Leáll, amint lehetséges:",
|
||||
|
@ -993,7 +981,6 @@
|
|||
"LearnHowYouCanContribute": "Ismerd meg, hogyan járulhatsz hozzá.",
|
||||
"LeaveBlankToNotSetAPassword": "Ha nem szeretnél jelszót beállítani, hagyd ezt a mezőt üresen.",
|
||||
"LibraryAccessHelp": "Válaszd ki azokat a könyvtárakat amelyeket megosztani kívánsz ezzel a felhasználóval. A rendszergazdák a Metaadat Manager segítségével szerkeszthetik az összes mappát.",
|
||||
"LinksValue": "Linkek: {0}",
|
||||
"List": "Lista",
|
||||
"LiveTV": "Élő TV",
|
||||
"Logo": "Logo",
|
||||
|
@ -1024,7 +1011,6 @@
|
|||
"MessageEnablingOptionLongerScans": "Ennek az opciónak a bekapcsolása jelentősen hosszabb könyvtárbeolvasást eredményezhet.",
|
||||
"MessageImageFileTypeAllowed": "Csak JPEG és PNG fájlok támogatottak.",
|
||||
"MessageImageTypeNotSelected": "Kérlek válaszd ki a kép típusát a legördülő menüből.",
|
||||
"MessageInstallPluginFromApp": "Ezt a bővítményt azon alkalmazásból kell telepíteni, amelyben használni kívánod.",
|
||||
"MessageInvalidForgotPasswordPin": "Érvénytelen vagy lejárt PIN kódot írtál be. Kérlek próbáld újra.",
|
||||
"MessageInvalidUser": "Érvénytelen felhasználónév vagy jelszó. Kérlek próbáld újra.",
|
||||
"MessageItemSaved": "Elem mentve.",
|
||||
|
@ -1190,7 +1176,6 @@
|
|||
"RemoveFromPlaylist": "Lejátszási listáról eltávolítani",
|
||||
"RepeatEpisodes": "Epizódok ismétlése",
|
||||
"ResumeAt": "Folytatás: {0}",
|
||||
"RunAtStartup": "Futtassa indításkor",
|
||||
"SaveSubtitlesIntoMediaFolders": "Mentse a feliratokat a média mappákba",
|
||||
"SaveSubtitlesIntoMediaFoldersHelp": "A feliratok tárolása a videofájlok mellett lehetővé teszi, hogy könnyebben kezelhetők legyenek.",
|
||||
"Schedule": "Ütemezés",
|
||||
|
@ -1252,7 +1237,6 @@
|
|||
"ValueTimeLimitMultiHour": "időlimit: {0} óra",
|
||||
"ValueTimeLimitSingleHour": "Időlimit: 1 óra",
|
||||
"Vertical": "Függőleges",
|
||||
"VideoRange": "Videó tartomány",
|
||||
"ViewAlbum": "Album megtekintése",
|
||||
"Whitelist": "Fehérlista",
|
||||
"WizardCompleted": "Ez most minden amire szükség volt. A Jellyfin megkezdte a médiakönyvtáraddal kapcsolatos információk gyűjtését. Nézz meg néhány alkalmazásunkat, majd kattints a <b>Befejezés </b> gombra a <b>Vezérlőpult</b> megtekintéséhez.",
|
||||
|
@ -1270,7 +1254,6 @@
|
|||
"DashboardVersionNumber": "Verzió: {0}",
|
||||
"DashboardServerName": "Szerver: {0}",
|
||||
"LabelWeb": "Web:",
|
||||
"MediaInfoSoftware": "Szoftver",
|
||||
"MediaInfoStreamTypeAudio": "Audió",
|
||||
"MediaInfoStreamTypeSubtitle": "Felirat",
|
||||
"MediaInfoStreamTypeVideo": "Videó",
|
||||
|
@ -1278,7 +1261,6 @@
|
|||
"LabelUserLoginAttemptsBeforeLockout": "Sikertelen bejelentkezési kísérletek a felhasználó zárolása előtt:",
|
||||
"DashboardOperatingSystem": "Operációs rendszer: {0}",
|
||||
"DashboardArchitecture": "Platform: {0}",
|
||||
"LaunchWebAppOnStartup": "Indítsa el a webes felületet a szerver indításakor",
|
||||
"MessageNoCollectionsAvailable": "A gyűjtemények lehetővé teszik Filmek, Sorozatok és Albumok egyéni csoportosítását. A gyűjtemények létrehozásához kattints a + gombra.",
|
||||
"MessageNoServersAvailable": "Az automatikus kiszolgálókeresés nem talált szervert.",
|
||||
"OptionLoginAttemptsBeforeLockout": "Meghatározza, hogy hány érvénytelen bejelentkezési kísérlet történhet zárolás előtt.",
|
||||
|
@ -1374,7 +1356,6 @@
|
|||
"HeaderFavoritePeople": "Kedvenc emberek",
|
||||
"HeaderApp": "Alkalmazás",
|
||||
"GroupVersions": "Verziók csoportosítása",
|
||||
"CopyStreamURLError": "Hiba történt az URL másolása közben.",
|
||||
"OptionSubstring": "Szövegrészlet",
|
||||
"ButtonSplit": "Szétvág",
|
||||
"Absolute": "Abszolút",
|
||||
|
@ -1382,7 +1363,6 @@
|
|||
"SubtitleOffset": "Felirat eltolása",
|
||||
"SeriesDisplayOrderHelp": "Rakd sorba az epizódokat az adásba kerülésük dátuma, a DVD sorszám, vagy az abszolút számozás szerint.",
|
||||
"SelectAdminUsername": "Kérjük válassz felhasználónevet az adminisztrátor fiók számára.",
|
||||
"QueueAllFromHere": "Az összes sorba állítása innen",
|
||||
"OptionThumbCard": "Miniatűr kártya",
|
||||
"OptionThumb": "Miniatűr",
|
||||
"OptionSpecialEpisode": "Különkiadások",
|
||||
|
@ -1408,7 +1388,6 @@
|
|||
"MetadataSettingChangeHelp": "A metaadat beállítások módosítása az ezután újonnan hozzáadott médiát fogja befolyásolni. A már meglévő tartalom frissítéséhez nyisd meg a részletek képernyőt, és kattints a frissítésre, vagy végezz tömeges frissítést a Metaadat Managerben.",
|
||||
"MessageConfirmDeleteGuideProvider": "Biztosan törölni szeretnéd ezt a műsorújság szolgáltatót?",
|
||||
"MessageConfirmAppExit": "Ki szeretnél lépni?",
|
||||
"LaunchWebAppOnStartupHelp": "A web kliens indítása az alapértelmezett böngészőben a szerver indítása után. A kliens nem fog elindulni a szerver újraindítása után.",
|
||||
"LabelVideoResolution": "Videó felbontás:",
|
||||
"LabelVideoCodec": "Videó kodek:",
|
||||
"LabelVideoBitrate": "Videó bitráta:",
|
||||
|
@ -1473,7 +1452,6 @@
|
|||
"Track": "Szám",
|
||||
"Season": "Évad",
|
||||
"Person": "Személy",
|
||||
"OtherArtist": "Más előadók",
|
||||
"Movie": "Film",
|
||||
"Episode": "Epizód",
|
||||
"ClientSettings": "Kliens beállítások",
|
||||
|
@ -1488,15 +1466,12 @@
|
|||
"UnsupportedPlayback": "Jellyfin nem tud DRM-titkosított tartalmak dekriptálására, ettől függetlenül a lejátszással mindig megpróbálkozik. Néhány fájl emiatt teljesen fekete képernyőt ad, amely vagy a titkosítás miatt van, vagy nem olyan nem támogatott tartalmak miatt, mint az interaktív címek.",
|
||||
"YadifBob": "YADIF Bob",
|
||||
"Yadif": "YADIF",
|
||||
"ReleaseGroup": "Kiadócsoport",
|
||||
"MessageUnauthorizedUser": "Jelenleg nincs jogosultságod a szerverhez való hozzáféréshez. Kérjük, lépj kapcsolatba az adminisztrátorral további információkért!",
|
||||
"ButtonTogglePlaylist": "Lejátszási listák",
|
||||
"ButtonToggleContextMenu": "Továbbiak",
|
||||
"Filter": "Szűrés",
|
||||
"New": "Új",
|
||||
"HeaderFavoritePlaylists": "Kedvenc lejátszási listák",
|
||||
"ApiKeysCaption": "A jelenleg engedélyezett API kulcsok listája",
|
||||
"LabelNightly": "Éjszakai",
|
||||
"LabelStable": "Stabil",
|
||||
"LabelChromecastVersion": "Chromecast verzió",
|
||||
"LabelEnableHttpsHelp": "Figyelés a megadott HTTPS porton. Érvényes tanúsítványt is be kell állítani az érvénybe léptetéshez.",
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
"LabelSaveLocalMetadata": "Simpan artwork dan metadata ke dalam folder media",
|
||||
"LabelSaveLocalMetadataHelp": "Menyimpan artwork dan metadata langsung ke folder media akan meletakkan mereka di tempat yang mudah diedit.",
|
||||
"LabelTimeLimitHours": "Batas waktu (jam):",
|
||||
"LabelYourFirstName": "Nama depan anda:",
|
||||
"LabelYoureDone": "Kamu sudah selesai!",
|
||||
"MessageNothingHere": "Tidak ada disini.",
|
||||
"MessagePleaseEnsureInternetMetadata": "Pastikan unduh metadata dari internet diaktifkan.",
|
||||
|
@ -25,7 +24,6 @@
|
|||
"OptionEnableAccessToAllLibraries": "Aktifkan akses ke semua pustaka",
|
||||
"ParentalRating": "Parental Rating",
|
||||
"TabAccess": "Akses",
|
||||
"TabPlaylist": "Daftar Putar",
|
||||
"TabProfile": "Profil",
|
||||
"TellUsAboutYourself": "Beritahu kami tentang anda",
|
||||
"ThisWizardWillGuideYou": "Panduan ini akan memandu Anda melalui proses setup. Untuk memulai, silahkan pilih bahasa yang Anda gunakan.",
|
||||
|
@ -62,7 +60,6 @@
|
|||
"DatePlayed": "Tanggal dimainkan",
|
||||
"DateAdded": "Tanggal ditambahkan",
|
||||
"CriticRating": "Kritik peringkat",
|
||||
"CopyStreamURLError": "Terdapat galat dalam penyalinan pranala.",
|
||||
"CopyStreamURLSuccess": "Pranala berhasil disalin.",
|
||||
"CopyStreamURL": "Salin Pranala Stream",
|
||||
"Continuing": "Melanjutkan",
|
||||
|
@ -82,7 +79,6 @@
|
|||
"Categories": "Kategori",
|
||||
"CancelRecording": "Batalkan perekaman",
|
||||
"ButtonWebsite": "Situs web",
|
||||
"ButtonViewWebsite": "Tampilkan situs web",
|
||||
"ButtonUp": "Atas",
|
||||
"ButtonTrailer": "Cuplikan",
|
||||
"ButtonSubmit": "Kirim",
|
||||
|
@ -119,7 +115,6 @@
|
|||
"ButtonNetwork": "Jaringan",
|
||||
"ButtonMore": "Lebih banyak",
|
||||
"ButtonLibraryAccess": "Akses pustaka",
|
||||
"ButtonLearnMore": "Pelajari lebih lanjut",
|
||||
"ButtonInfo": "Info",
|
||||
"ButtonHome": "Beranda",
|
||||
"ButtonHelp": "Bantuan",
|
||||
|
@ -162,7 +157,6 @@
|
|||
"Banner": "Spanduk",
|
||||
"Backdrops": "Latar belakang",
|
||||
"Backdrop": "Latar belakang",
|
||||
"AutoBasedOnLanguageSetting": "Auto (berdasarkan pengaturan bahasa)",
|
||||
"Auto": "Auto",
|
||||
"AuthProviderHelp": "Pilih Penyedia Autentikasi yang akan digunakan untuk mengautentikasi kata sandi pengguna ini.",
|
||||
"Audio": "Audio",
|
||||
|
@ -191,7 +185,6 @@
|
|||
"AddToPlaylist": "Tambah ke dalam daftar putar",
|
||||
"AddToPlayQueue": "Tambah ke dalam antrean putar",
|
||||
"AddToCollection": "Tambah ke dalam koleksi",
|
||||
"AddItemToCollectionHelp": "Tambahkan item ke dalam koleksi melalui pencarian dan gunakan klik kanan atau ketuk menu untuk menambahkannya ke dalam koleksi.",
|
||||
"AccessRestrictedTryAgainLater": "Akses sedang dibatasi. Mohon tunggu beberapa saat lagi",
|
||||
"Absolute": "Absolut",
|
||||
"Songs": "Lagu",
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
"LabelNext": "Næsta",
|
||||
"LabelPrevious": "Fyrra",
|
||||
"LabelTimeLimitHours": "Tímamörk (í klukkustundum):",
|
||||
"LabelYourFirstName": "Fyrra nafn:",
|
||||
"MoreUsersCanBeAddedLater": "Þú getur bætt við fleiri notendum síðar undir stjórnborðinu.",
|
||||
"NextUp": "Næst á dagskrá",
|
||||
"OptionEnableAccessFromAllDevices": "Virkja aðgang frá öllum tækjum",
|
||||
|
@ -31,7 +30,6 @@
|
|||
"TabAccess": "Aðgangur",
|
||||
"TabNotifications": "Tilkynningar",
|
||||
"TabPassword": "Lykilorð",
|
||||
"TabPlaylist": "Afspilunar listi",
|
||||
"WelcomeToProject": "Velkomin/n í Jellyfin!",
|
||||
"Anytime": "Hvenær sem er",
|
||||
"Genres": "Tegundir",
|
||||
|
@ -52,7 +50,6 @@
|
|||
"Actor": "Leikari",
|
||||
"Add": "Bæta við",
|
||||
"AddToCollection": "Bæta í safn",
|
||||
"AutoBasedOnLanguageSetting": "Sjálfkrafa (byggt á tungumálastillingum)",
|
||||
"MessageBrowsePluginCatalog": "Skoða viðbætur sem eru í boði í viðbóta safninu okkar.",
|
||||
"BurnSubtitlesHelp": "Ákveður hvort þjónninn eigi að brenna textann inn í myndaskránna þegar verið er að umbreyta skrársniðinu. Með því að forðast að brenna inn textann er hægt að minnka álag á þjóninn (tölvuna). Veljið sjálfkrafa til þess að brenna texta byggðan á myndum (VOBSUB, PGS, SUB/IDX, ofl) og ákveðna ASS/SSA texta.",
|
||||
"OptionSaveMetadataAsHidden": "Geyma gagnagögn (metadata) og myndir sem leynilegar skrár",
|
||||
|
@ -80,7 +77,6 @@
|
|||
"AddedOnValue": "Bætti við {0}",
|
||||
"AirDate": "Frumsýningardagur",
|
||||
"Aired": "Frumsýnt",
|
||||
"AddItemToCollectionHelp": "Þú getur bætt við efni í söfn með því að leita og svo hægri smella eða ýta á valmyndina.",
|
||||
"AddToPlaylist": "Bæta á spilunarlista",
|
||||
"AdditionalNotificationServices": "Skoða viðbætur til þess að bæta við fleiri tilkynningarþjónustum.",
|
||||
"Alerts": "Viðvaranir",
|
||||
|
@ -177,7 +173,6 @@
|
|||
"HeaderCastCrew": "Leikarar og Áhöfn",
|
||||
"HeaderCastAndCrew": "Leikarar og Áhöfn",
|
||||
"HeaderBooks": "Bækur",
|
||||
"HeaderAutomaticUpdates": "Sjálfvirkar Uppfærslur",
|
||||
"HeaderAlbums": "Plötur",
|
||||
"HeaderAdmin": "Stjórnandi",
|
||||
"GuideProviderLogin": "Innskrá",
|
||||
|
@ -214,7 +209,6 @@
|
|||
"Categories": "Flokkar",
|
||||
"CancelRecording": "Hætta við upptöku",
|
||||
"ButtonWebsite": "Vefsiða",
|
||||
"ButtonViewWebsite": "Skoða vefsíðu",
|
||||
"ButtonUp": "Upp",
|
||||
"ButtonUninstall": "Fjarlægja",
|
||||
"ButtonTrailer": "Sýnishorn",
|
||||
|
@ -252,7 +246,6 @@
|
|||
"ButtonMore": "Meira",
|
||||
"ButtonManualLogin": "Handvirkt Auðkenni",
|
||||
"ButtonLibraryAccess": "Aðgangur að safni",
|
||||
"ButtonLearnMore": "Læra meira",
|
||||
"ButtonInfo": "Upplýsingar",
|
||||
"ButtonHome": "Heim",
|
||||
"ButtonHelp": "Hjálp",
|
||||
|
@ -385,7 +378,6 @@
|
|||
"DatePlayed": "Dagsetning spilað",
|
||||
"DateAdded": "Dagsetning bætt við",
|
||||
"CriticRating": "Einkunn gagnrýnanda",
|
||||
"CopyStreamURLError": "Villa varð við afritun vefslóðar.",
|
||||
"CopyStreamURLSuccess": "Afrit af vefslóð tókst.",
|
||||
"CopyStreamURL": "Afrita vefslóð streymis",
|
||||
"Continuing": "Áframhaldandi",
|
||||
|
@ -419,7 +411,6 @@
|
|||
"SaveChanges": "Vista breytingar",
|
||||
"Save": "Vista",
|
||||
"Saturday": "Laugardagur",
|
||||
"RunAtStartup": "Keyra við ræsingu",
|
||||
"Rewind": "Spóla til baka",
|
||||
"AlbumArtist": "Höfundur plötu",
|
||||
"OptionHasTrailer": "Sýnishorn",
|
||||
|
@ -533,13 +524,11 @@
|
|||
"LabelDroppedFrames": "Felldir rammar:",
|
||||
"LabelDiscNumber": "Númer disks:",
|
||||
"LabelDeviceDescription": "Lýsing tækis",
|
||||
"LabelDashboardTheme": "Þema mælaborðs:",
|
||||
"LabelCustomCss": "Sérsniðin CSS:",
|
||||
"LabelCriticRating": "Einkunn gagnrýnanda:",
|
||||
"LabelCorruptedFrames": "Skemmdir rammar:",
|
||||
"LabelCancelled": "Hætt við",
|
||||
"LabelAppName": "Heiti forrits",
|
||||
"LabelAllowServerAutoRestart": "Leyfa netþjóni að endurræsa sig sjálfkrafa til þess að uppfæra sig",
|
||||
"LabelAllowHWTranscoding": "Leyfa vélbúnaðarumkóðun",
|
||||
"Label3DFormat": "3D snið:",
|
||||
"HeaderIdentification": "Auðkenning",
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
"AccessRestrictedTryAgainLater": "L'accesso è attualmente limitato. Si prega di riprovare più tardi.",
|
||||
"Actor": "Attore",
|
||||
"Add": "Aggiungi",
|
||||
"AddItemToCollectionHelp": "Aggiungi elementi alle collezioni ricercandoli e utilizzando il pulsante destro del mouse o tocca i menu per aggiungerli a una raccolta.",
|
||||
"AddToCollection": "Aggiunto alla collezione",
|
||||
"AddToPlayQueue": "Aggiungi alla coda di riproduzione",
|
||||
"AddToPlaylist": "Aggiungi alla playlist",
|
||||
|
@ -34,7 +33,6 @@
|
|||
"Ascending": "Crescente",
|
||||
"AspectRatio": "Rapporto d'Aspetto",
|
||||
"AttributeNew": "Nuovo",
|
||||
"AutoBasedOnLanguageSetting": "Auto (basato sull'impostazione della lingua)",
|
||||
"Backdrop": "Sfondo",
|
||||
"Backdrops": "Sfondi",
|
||||
"BirthDateValue": "Nato il: {0}",
|
||||
|
@ -72,14 +70,13 @@
|
|||
"ButtonGotIt": "Ho capito",
|
||||
"ButtonGuide": "Guida",
|
||||
"ButtonHelp": "Aiuto",
|
||||
"ButtonLearnMore": "saperne di più",
|
||||
"ButtonLibraryAccess": "Accesso biblioteca",
|
||||
"ButtonManualLogin": "Accesso Manuale",
|
||||
"ButtonMore": "Altro",
|
||||
"ButtonNetwork": "Rete",
|
||||
"ButtonNew": "Nuovo",
|
||||
"ButtonNextTrack": "Traccia Successiva",
|
||||
"ButtonOff": "Spento",
|
||||
"ButtonOff": "No",
|
||||
"ButtonOpen": "Apri",
|
||||
"ButtonParentalControl": "Controllo parentale",
|
||||
"ButtonPause": "Pausa",
|
||||
|
@ -115,7 +112,6 @@
|
|||
"ButtonSubtitles": "Sottotitoli",
|
||||
"ButtonUninstall": "Disinstalla",
|
||||
"ButtonUp": "Su",
|
||||
"ButtonViewWebsite": "Visualizza sito web",
|
||||
"ButtonWebsite": "Web",
|
||||
"CancelRecording": "Annulla la registrazione",
|
||||
"CancelSeries": "Annulla Serie TV",
|
||||
|
@ -161,8 +157,8 @@
|
|||
"DetectingDevices": "Rilevamento dispositivi",
|
||||
"DeviceAccessHelp": "Si applica solo ai dispositivi che possono essere identificati univocamente e non impedirà l'accesso dal browser. Filtrare l'accesso ai dispositivi dell'utente impedirà di usare nuovi dispositivi fino a quando non saranno stati approvati qui.",
|
||||
"DirectPlaying": "Riproduzione Diretta",
|
||||
"DirectStreamHelp1": "Il file multimediale è compatibile con il dispositivo per quanto riguarda la risoluzione e il tipo di supporto (H. 264, AC3, ecc), ma è in un contenitore file incompatibile (mkv, avi, wmv, ecc). Il video sarà ri-confezionato al volo prima di streammarlo sul dispositivo.",
|
||||
"DirectStreamHelp2": "Lo Streaming in Diretta di un file utilizza poco il processore senza alcuna perdita di qualità video.",
|
||||
"DirectStreamHelp1": "Il file multimediale è compatibile con il dispositivo per quanto riguarda la risoluzione e il tipo di supporto (H. 264, AC3, ecc), ma è in un contenitore file incompatibile (mkv, avi, wmv, ecc). Il video sarà quindi reimpacchettato al volo prima dell'invio al dispositivo.",
|
||||
"DirectStreamHelp2": "Lo streaming in diretta utilizza poco processore e con poca perdita di qualità video.",
|
||||
"DirectStreaming": "Streaming Diretto",
|
||||
"Director": "Regista",
|
||||
"Directors": "Registi",
|
||||
|
@ -269,10 +265,9 @@
|
|||
"HeaderAllowMediaDeletionFrom": "Abilita Eliminazione Media Da",
|
||||
"HeaderApiKey": "Chiave API",
|
||||
"HeaderApiKeys": "Chiavi API",
|
||||
"HeaderApiKeysHelp": "Le Applicazioni esterne devono avere una chiave API per comunicare con il Server Jellyfin. Le chiavi sono emesse accedendo con un account Jellyfin, o fornendo manualmente una chiave all'applicazione.",
|
||||
"HeaderApiKeysHelp": "Le Applicazioni esterne devono avere una chiave API per comunicare con il server. Le chiavi sono emesse accedendo con un qualsiasi account, o fornendo manualmente una chiave all'applicazione.",
|
||||
"HeaderAudioBooks": "Audiolibri",
|
||||
"HeaderAudioSettings": "Impostazioni audio",
|
||||
"HeaderAutomaticUpdates": "Aggiornamenti Automatici",
|
||||
"HeaderBlockItemsWithNoRating": "Blocca elementi sconosciuti o senza informazioni:",
|
||||
"HeaderBooks": "Libri",
|
||||
"HeaderBranding": "Personalizza",
|
||||
|
@ -483,8 +478,6 @@
|
|||
"LabelAlbumArtists": "Artisti album:",
|
||||
"LabelAll": "Tutti",
|
||||
"LabelAllowHWTranscoding": "Consenti transcodifica hardware",
|
||||
"LabelAllowServerAutoRestart": "Consenti al server di Riavviarsi automaticamente per applicare gli aggiornamenti",
|
||||
"LabelAllowServerAutoRestartHelp": "Il server si Riavvierà solamente quando nessun utente è connesso.",
|
||||
"LabelAllowedRemoteAddresses": "Filtro indirizzo IP Remoto:",
|
||||
"LabelAllowedRemoteAddressesMode": "Modalità filtro indirizzo IP remoto:",
|
||||
"LabelAppName": "Nome app",
|
||||
|
@ -520,7 +513,6 @@
|
|||
"LabelCustomDeviceDisplayName": "Nome da visualizzare:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Fornire un nome di visualizzazione personalizzato o lasciare vuoto per utilizzare il nome riportato dal dispositivo.",
|
||||
"LabelCustomRating": "Voto personalizzato:",
|
||||
"LabelDashboardTheme": "Tema dashboard del server:",
|
||||
"LabelDateAdded": "Aggiunto il:",
|
||||
"LabelDateAddedBehavior": "Data di comportamento per i nuovi contenuti:",
|
||||
"LabelDateAddedBehaviorHelp": "Se un valore di metadati è presente sarà sempre utilizzato prima una di queste opzioni.",
|
||||
|
@ -735,7 +727,6 @@
|
|||
"LabelSortBy": "Ordina per:",
|
||||
"LabelSortOrder": "Ordinato per:",
|
||||
"LabelSortTitle": "Titolo per ordinamento:",
|
||||
"LabelSoundEffects": "Effetti sonori:",
|
||||
"LabelSource": "Origine:",
|
||||
"LabelSpecialSeasonsDisplayName": "Nome della stagione speciale:",
|
||||
"LabelSportsCategories": "Categorie sport:",
|
||||
|
@ -784,7 +775,6 @@
|
|||
"LabelXDlnaCapHelp": "Determina il contenuto dell'elemento X_DLNACAP in urn:schemas-dlna-org:device-1-0.",
|
||||
"LabelXDlnaDocHelp": "Determina il contenuto dell'elemento X_DLNACAP nella urn: schemas-DLNA-org: dispositivo 1-0 namespace.",
|
||||
"LabelYear": "Anno:",
|
||||
"LabelYourFirstName": "Il tuo nome:",
|
||||
"LabelYoureDone": "Hai Finito!",
|
||||
"LabelZipCode": "Cap:",
|
||||
"LabelffmpegPath": "Percorso FFmpeg:",
|
||||
|
@ -847,7 +837,6 @@
|
|||
"MessageFileReadError": "Si è verificato un errore durante la lettura del file. Si prega di riprovare.",
|
||||
"MessageForgotPasswordFileCreated": "Il seguente file è stato creato sul server e contiene le istruzioni su come procedere:",
|
||||
"MessageForgotPasswordInNetworkRequired": "Riprova all'interno della rete domestica per avviare il processo di reimpostazione della password.",
|
||||
"MessageInstallPluginFromApp": "Questo plugin deve essere installato dall'app in cui vuoi farlo funzionare.",
|
||||
"MessageInvalidForgotPasswordPin": "É stato inserito un codice pin invalido o scaduto . Riprova.",
|
||||
"MessageInvalidUser": "Utente o password errato. Riprova.",
|
||||
"MessageItemSaved": "Elemento salvato.",
|
||||
|
@ -901,7 +890,7 @@
|
|||
"None": "Nessuno",
|
||||
"Normal": "Normale",
|
||||
"NumLocationsValue": "{0} cartelle",
|
||||
"Off": "Spento",
|
||||
"Off": "No",
|
||||
"OneChannel": "Un canale",
|
||||
"OnlyForcedSubtitles": "Solo forzati",
|
||||
"OnlyForcedSubtitlesHelp": "Solo i sottotitoli contrassegnati come forzati saranno caricati.",
|
||||
|
@ -1069,7 +1058,6 @@
|
|||
"ProductionLocations": "Sedi di produzione",
|
||||
"Programs": "Programmi",
|
||||
"Quality": "Qualità",
|
||||
"QueueAllFromHere": "In coda tutto da qui in poi",
|
||||
"Raised": "Rilievo",
|
||||
"Rate": "Vota",
|
||||
"RecentlyWatched": "Visti di recente",
|
||||
|
@ -1100,7 +1088,6 @@
|
|||
"ReplaceExistingImages": "Sovrascrivi immagini esistenti",
|
||||
"ResumeAt": "Riprendi da {0}",
|
||||
"Rewind": "Riavvolgi",
|
||||
"RunAtStartup": "Esegui all'avvio",
|
||||
"Runtime": "Durata",
|
||||
"Saturday": "Sabato",
|
||||
"Save": "Salva",
|
||||
|
@ -1252,7 +1239,6 @@
|
|||
"ValueTimeLimitSingleHour": "Tempo limite: 1 ora",
|
||||
"ValueVideoCodec": "Codec Video: {0}",
|
||||
"Vertical": "Verticale",
|
||||
"VideoRange": "Range del Video",
|
||||
"ViewAlbum": "Visualizza album",
|
||||
"ViewPlaybackInfo": "Vedi info sulla riproduzione",
|
||||
"Watched": "Visto",
|
||||
|
@ -1295,7 +1281,7 @@
|
|||
"HeaderCastCrew": "Cast",
|
||||
"HeaderMedia": "Media",
|
||||
"HeaderPassword": "Password",
|
||||
"AuthProviderHelp": "Selezionare un Provider di Autenticazione da utilizzare per autenticare la password dell'utente.",
|
||||
"AuthProviderHelp": "Selezionare un provider di autenticazione da utilizzare per autenticare la password dell'utente.",
|
||||
"HeaderFavoriteMovies": "Film Preferiti",
|
||||
"HeaderFavoriteShows": "Serie TV Preferite",
|
||||
"HeaderFavoriteEpisodes": "Episodi Preferiti",
|
||||
|
@ -1382,7 +1368,6 @@
|
|||
"LabelPlaylist": "Playlist:",
|
||||
"LabelPlayMethod": "Metodo di riproduzione:",
|
||||
"LabelPleaseRestart": "Le modifiche avranno effetto dopo aver manualmente ricaricato il client web.",
|
||||
"LabelSkin": "Skin:",
|
||||
"LabelTranscodes": "Trascodifiche:",
|
||||
"LabelTranscodingFramerate": "Framerate di trascodifica:",
|
||||
"LabelTranscodingProgress": "Progresso di trascodifica:",
|
||||
|
@ -1391,12 +1376,8 @@
|
|||
"LabelVideo": "Video",
|
||||
"DashboardArchitecture": "Architettura: {0}",
|
||||
"LabelWeb": "Web:",
|
||||
"LaunchWebAppOnStartup": "Lancia l'interfaccia web quando viene avviato il server",
|
||||
"LaunchWebAppOnStartupHelp": "Apri il client web nel tuo web browser quando il server si avvia inizialmente. Ciò non accadrà quando si usa la funzione riavvio server.",
|
||||
"LeaveBlankToNotSetAPassword": "Puoi lasciare questo campo vuoto per non impostare alcuna password.",
|
||||
"LinksValue": "Link: {0}",
|
||||
"MediaInfoTimestamp": "Orario",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"Mobile": "Mobile",
|
||||
"MoreMediaInfo": "Informazioni sui Media",
|
||||
"MusicAlbum": "Album Musicale",
|
||||
|
@ -1432,7 +1413,6 @@
|
|||
"TabLogs": "Log",
|
||||
"TabNetworking": "Rete",
|
||||
"TabPassword": "Password",
|
||||
"TabPlaylist": "Playlist",
|
||||
"TabPlugins": "Plugin",
|
||||
"TabServer": "Server",
|
||||
"TabStreaming": "Streaming",
|
||||
|
@ -1444,7 +1424,6 @@
|
|||
"OptionRandom": "Casuale",
|
||||
"MessageConfirmAppExit": "Vuoi uscire?",
|
||||
"HeaderNavigation": "Navigazione",
|
||||
"CopyStreamURLError": "Si è verificato un errore nel copiare l'indirizzo.",
|
||||
"PlaybackErrorNoCompatibleStream": "Il client è incompatibile con il media e il server non sta inviando un formato compatibile.",
|
||||
"OptionForceRemoteSourceTranscoding": "Forza la transcodifica da fonti di media remoti (come LiveTV)",
|
||||
"NoCreatedLibraries": "Sembra che tu non abbia ancora creato delle librerie. {0}Vuoi crearne una adesso?{1}",
|
||||
|
@ -1480,16 +1459,13 @@
|
|||
"Yadif": "YADIF",
|
||||
"Track": "Traccia",
|
||||
"Season": "Stagione",
|
||||
"OtherArtist": "Altri Artisti",
|
||||
"Movie": "Film",
|
||||
"LabelLibraryPageSizeHelp": "Numero di elementi presenti nella paginazione della libreria. Il valore 0 disabilita la paginazione.",
|
||||
"LabelLibraryPageSize": "Elementi nella paginazione della libreria:",
|
||||
"Episode": "Episodio",
|
||||
"BoxSet": "Cofanetto",
|
||||
"AlbumArtist": "Artisti dell'Album",
|
||||
"ReleaseGroup": "Release Group",
|
||||
"UnsupportedPlayback": "Jellyfin non è in grado di decriptare i contenuti protetti da DRM ma tutti i contenuti verranno tentati a prescindere, compresi quelli protetti. Alcuni file potrebbero apparire completamente neri a causa della crittografia o di altre funzionalità non supportate, come i titoli interattivi.",
|
||||
"MessageUnauthorizedUser": "Non sei autorizzato ad accedere in questo momento al server. Contatta l'amministratore per ulteriori dettagli.",
|
||||
"ButtonTogglePlaylist": "Playlist",
|
||||
"ButtonToggleContextMenu": "Altro",
|
||||
"HeaderFavoritePlaylists": "Playlist Favorite",
|
||||
|
@ -1508,7 +1484,6 @@
|
|||
"TabDVR": "DVR",
|
||||
"SaveChanges": "Salva modifiche",
|
||||
"HeaderDVR": "DVR",
|
||||
"LabelNightly": "Nightly",
|
||||
"SyncPlayAccessHelp": "Selezionare il livello d'accesso di questo utente a SyncPlay che permetterà di riprodurre contemporaneamente su diversi dispositivi.",
|
||||
"MessageSyncPlayErrorMedia": "Impossibile abilitare SyncPlay! Errore media.",
|
||||
"MessageSyncPlayErrorMissingSession": "Impossibile abilitare SyncPlay! Sessione mancante.",
|
||||
|
|
|
@ -39,7 +39,6 @@
|
|||
"Audio": "オーディオ",
|
||||
"AuthProviderHelp": "ユーザーのパスワードを認証するために使用する認証プロバイダを選択してください。",
|
||||
"Auto": "自動",
|
||||
"AutoBasedOnLanguageSetting": "自動選択(設定されている言語を優先)",
|
||||
"Backdrop": "背景",
|
||||
"Backdrops": "背景",
|
||||
"Banner": "バナー",
|
||||
|
@ -83,7 +82,6 @@
|
|||
"ButtonHelp": "ヘルプ",
|
||||
"ButtonHome": "ホーム",
|
||||
"ButtonInfo": "情報",
|
||||
"ButtonLearnMore": "もっと詳しく",
|
||||
"ButtonLibraryAccess": "ライブラリへアクセス",
|
||||
"ButtonManualLogin": "マニュアルログイン",
|
||||
"ButtonMore": "もっと",
|
||||
|
@ -127,7 +125,6 @@
|
|||
"ButtonTrailer": "予告",
|
||||
"ButtonUninstall": "アンインストール",
|
||||
"ButtonUp": "上",
|
||||
"ButtonViewWebsite": "ウェブサイトで見る",
|
||||
"ButtonWebsite": "ウェブサイト",
|
||||
"CancelRecording": "レコーディングをキャンセル",
|
||||
"CancelSeries": "中止したシリーズ",
|
||||
|
@ -172,7 +169,7 @@
|
|||
"DetectingDevices": "検出デバイス",
|
||||
"DeviceAccessHelp": "これは、識別できるデバイスにのみ適用され、ブラウザへのアクセスを妨げることはありません。 ユーザーのデバイスアクセスをフィルタリングすると、ここで承認されるまで新しいデバイスを使用できなくなります。",
|
||||
"DirectPlaying": "ダイレクト再生",
|
||||
"DirectStreamHelp1": "メディアの種類 (H.264, AC3, etc.)がお使いのデバイスに対応している場合Jellyfinサーバーからメディアファイルの直接再生が可能です。互換性のないファイルコンテナ(.mkv, .avi, .wmv, etc.)はリパックを行い再生されます。",
|
||||
"DirectStreamHelp1": "メディアは、解像度と種類 (H.264, AC3など)がお使いのデバイスに対応していますが、ファイルコンテナ(.mkv, .avi, .wmvなど)が対応していません。ビデオはデバイスに送信される前に、再パッケージされます。",
|
||||
"DirectStreamHelp2": "ファイルのダイレクトストリーミングは、ビデオ品質を損なうことなく、Jellyfin Serverにもほとんど負荷がありません。",
|
||||
"DirectStreaming": "ダイレクトストリーミング",
|
||||
"Director": "ディレクター",
|
||||
|
@ -223,7 +220,6 @@
|
|||
"HeaderMoreLikeThis": "これに似たもの",
|
||||
"InstantMix": "インスタントミックス",
|
||||
"MoreFromValue": "もっと詳しく {0}",
|
||||
"AddItemToCollectionHelp": "アイテムをコレクションに追加するには右クリックメニューかタップメニューから追加してください。",
|
||||
"AttributeNew": "新規",
|
||||
"ButtonNew": "新規",
|
||||
"ButtonOff": "オフ",
|
||||
|
@ -295,12 +291,11 @@
|
|||
"HeaderAllowMediaDeletionFrom": "メディアの削除を許可",
|
||||
"HeaderApiKey": "API キー",
|
||||
"HeaderApiKeys": "API キー",
|
||||
"HeaderApiKeysHelp": "Jellyfin サーバーと通信するには、外部アプリケーション用ににAPIキーが必要です。 キーはJellyfinアカウントでログインするか、手動でアプリケーションにキーを付与することによって発行されます。",
|
||||
"HeaderApiKeysHelp": "外部アプリケーションが Jellyfin サーバーと通信するには、API キーが必要です。キーは 通常のユーザーアカウントでログインするか、手動でアプリケーションにキーを付与することで発行します。",
|
||||
"HeaderApp": "アプリ",
|
||||
"HeaderAppearsOn": "表示",
|
||||
"HeaderAudioBooks": "オーディオブック",
|
||||
"HeaderAudioSettings": "音声設定",
|
||||
"HeaderAutomaticUpdates": "自動更新",
|
||||
"HeaderBlockItemsWithNoRating": "評価情報がない、または認識できないアイテムをブロックします。",
|
||||
"HeaderBooks": "ブック",
|
||||
"HeaderBranding": "ブランディング",
|
||||
|
@ -539,7 +534,7 @@
|
|||
"LabelEncoderPreset": "H264エンコーディングプリセット:",
|
||||
"LabelHardwareAccelerationType": "ハードウェアアクセラレーション:",
|
||||
"LabelH264Crf": "H264エンコーディングCRF:",
|
||||
"LabelHttpsPortHelp": "JellyfinのHTTPSサーバーがバインドするTCPポート番号。",
|
||||
"LabelHttpsPortHelp": "HTTPS サーバーのTCPポート番号。",
|
||||
"LabelKodiMetadataDateFormat": "リリース日時フォーマット:",
|
||||
"LabelLogs": "ログ:",
|
||||
"LabelMessageText": "メッセージテキスト:",
|
||||
|
@ -765,7 +760,6 @@
|
|||
"TabCodecs": "コーデック",
|
||||
"TabContainers": "コンテナ",
|
||||
"Rewind": "巻き戻す",
|
||||
"RunAtStartup": "スタートアップに起動",
|
||||
"Runtime": "実行時間",
|
||||
"Saturday": "土曜日",
|
||||
"SaveSubtitlesIntoMediaFolders": "字幕をメディアフォルダーに保存",
|
||||
|
@ -803,7 +797,6 @@
|
|||
"ValueTimeLimitMultiHour": "タイムリミット: {0} 時間",
|
||||
"ValueVideoCodec": "映像コーデック: {0}",
|
||||
"Vertical": "垂直",
|
||||
"VideoRange": "映像範囲",
|
||||
"ViewAlbum": "アルバムを見る",
|
||||
"ViewPlaybackInfo": "プレイバック情報を見る",
|
||||
"Watched": "視聴済み",
|
||||
|
@ -849,8 +842,6 @@
|
|||
"LabelAlbumArtPN": "アルバムアートPN:",
|
||||
"LabelAlbumArtists": "アルバムアーティスト:",
|
||||
"LabelAllowHWTranscoding": "ハードウェアトランスコーディングを許可",
|
||||
"LabelAllowServerAutoRestart": "アップデートを適応するためにサーバーの再起動を許可",
|
||||
"LabelAllowServerAutoRestartHelp": "サーバーはユーザーがログインしていないときのみ再起動します。",
|
||||
"LabelAllowedRemoteAddresses": "リモートIPアドレスフィルター:",
|
||||
"LabelAppNameExample": "例: スケートボード、ソナー",
|
||||
"LabelArtists": "アーティスト:",
|
||||
|
@ -870,7 +861,6 @@
|
|||
"LabelCommunityRating": "コミュニティ評価:",
|
||||
"LabelContentType": "コンテンツタイプ:",
|
||||
"LabelCountry": "国:",
|
||||
"LabelDashboardTheme": "サーバーダッシュボードテーマ:",
|
||||
"LabelPublicHttpsPortHelp": "公開ポート番号はローカルHTTPSポートにマッピングしてください。",
|
||||
"LabelAlbumArtMaxWidth": "アルバムアート最大高さ:",
|
||||
"LabelAlbumArtMaxHeight": "アルバムアート最大高さ:",
|
||||
|
@ -929,10 +919,8 @@
|
|||
"LabelSelectVersionToInstall": "インストールするバージョンを選択:",
|
||||
"LabelSerialNumber": "シリアルナンバー",
|
||||
"LabelServerHost": "ホスト:",
|
||||
"LabelSkin": "スキン:",
|
||||
"Premiere": "初日",
|
||||
"LabelSaveLocalMetadata": "アートワークをメディアフォルダーに保存",
|
||||
"LabelSoundEffects": "音響効果:",
|
||||
"LabelSource": "ソース:",
|
||||
"LabelSportsCategories": "スポーツカテゴリ:",
|
||||
"LabelStatus": "ステータス:",
|
||||
|
@ -960,13 +948,11 @@
|
|||
"DashboardArchitecture": "アーキテクチャ: {0}",
|
||||
"LabelVideo": "映像",
|
||||
"LabelVideoBitrate": "映像ビットレート:",
|
||||
"LabelYourFirstName": "名前:",
|
||||
"Share": "共有",
|
||||
"LabelSize": "大きさ:",
|
||||
"LatestFromLibrary": "最新 {0}",
|
||||
"LearnHowYouCanContribute": "コントリビュートする方法を知る。",
|
||||
"LabelTagline": "キャッチフレーズ:",
|
||||
"LinksValue": "リンク: {0}",
|
||||
"Live": "ライブ",
|
||||
"LiveBroadcasts": "ライブブロードキャスト",
|
||||
"LiveTV": "ライブTV",
|
||||
|
@ -983,7 +969,6 @@
|
|||
"MediaInfoResolution": "解像度",
|
||||
"MediaInfoSampleRate": "サンプルレート",
|
||||
"MediaInfoSize": "大きさ",
|
||||
"MediaInfoSoftware": "ソフトウェア",
|
||||
"MediaInfoStreamTypeAudio": "音声",
|
||||
"MediaInfoStreamTypeData": "データ",
|
||||
"MediaInfoStreamTypeEmbeddedImage": "埋め込み画像",
|
||||
|
@ -1070,7 +1055,6 @@
|
|||
"TabNotifications": "通知",
|
||||
"TabOther": "その他",
|
||||
"TabParentalControl": "ペアレンタルコントロール",
|
||||
"TabPlaylist": "プレイリスト",
|
||||
"TabPlaylists": "プレイリスト",
|
||||
"TabPlugins": "プラグイン",
|
||||
"TabProfile": "プロフィール",
|
||||
|
@ -1110,7 +1094,6 @@
|
|||
"LabelBindToLocalNetworkAddress": "ローカルネットワークアドレスにバインド:",
|
||||
"LabelDownMixAudioScale": "ダウンミキシング時の音声ブースト:",
|
||||
"HeaderNavigation": "ナビゲーション",
|
||||
"CopyStreamURLError": "URLのコピー中にエラーが発生しました。",
|
||||
"ButtonSplit": "分ける",
|
||||
"LabelEnableDlnaServer": "DLNAサーバーの有効化",
|
||||
"LabelEnableDlnaDebugLogging": "DLNAデバッグログの有効化",
|
||||
|
@ -1153,7 +1136,7 @@
|
|||
"LabelCustomCertificatePathHelp": "カスタムドメインでTLSサポートを有効にするための証明書と秘密鍵を含むPKCS #12ファイルのパス。",
|
||||
"LabelCachePathHelp": "画像などのサーバーキャッシュファイルの場所を指定します。空欄にしておくと、サーバーのデフォルトを使います。",
|
||||
"LabelBlastMessageIntervalHelp": "ブラスト アライブ メッセージ間の時間を秒単位で指定します。",
|
||||
"LabelBindToLocalNetworkAddressHelp": "追加の設定。http サーバをバインドするローカル IP アドレスを上書きします。空のままにしておくと、サーバは利用可能なすべてのアドレスにバインドします。この値を変更するには、Jellyfin Server を再起動する必要があります。",
|
||||
"LabelBindToLocalNetworkAddressHelp": "HTTP サーバー用のローカル IP アドレスを上書きします。空のままにしておくと、サーバーは利用可能なすべてのアドレスにバインドします。この値の変更を反映するには、Jellyfin サーバーの再起動が必要です。",
|
||||
"LabelAlbumArtMaxWidthHelp": "upnp:albumArtURI で公開するアルバムアートの最大解像度。",
|
||||
"LabelAlbumArtMaxHeightHelp": "upnp:albumArtURI で公開するアルバムアートの最大解像度。",
|
||||
"LabelAlbumArtHelp": "upnp:albumArtURI の dlna:profileID 属性で、アルバムアートに使われるPN。デバイスによっては、画像のサイズと無関係に特定の値を要求するものもあります。",
|
||||
|
@ -1178,14 +1161,14 @@
|
|||
"LabelEnableDlnaPlayTo": "DLNA 再生を有効にする",
|
||||
"LabelEnableDlnaDebugLoggingHelp": "巨大なログファイルを作成します。トラブルシューティングでの必要な際にだけ使用してください。",
|
||||
"LabelEnableDlnaClientDiscoveryIntervalHelp": "Jellyfin が実行する SSDP 検索の間隔を決めます(秒単位)。",
|
||||
"LabelGroupMoviesIntoCollectionsHelp": "ムービーリストを表示する際、コレクションに属するムービーを1つのグループとして表示します。",
|
||||
"LabelServerNameHelp": "この名前はサーバーを識別するために使用します。デフォルトではサーバーのコンピュータ名です。",
|
||||
"LabelGroupMoviesIntoCollectionsHelp": "ムービー リストを表示する際、コレクションに属するムービーは1つのグループとして表示します。",
|
||||
"LabelServerNameHelp": "この名前はサーバーを識別するために使用します。デフォルトではサーバーのホスト名です。",
|
||||
"LabelExtractChaptersDuringLibraryScanHelp": "ライブラリー スキャン中に動画を取り込んだときに、チャプター画像を生成します。もしくは、スケジュールタスクの中でチャプター画像を抽出することで、通常のライブラリー スキャンをより速く完了させることができます。",
|
||||
"LabelExtractChaptersDuringLibraryScan": "ライブラリーをスキャンしながら、チャプター画像を生成する",
|
||||
"LabelBaseUrlHelp": "サーバーの URL にカスタム サブディレクトリを加えます。例 : <code>http://example.com/<b><baseurl></b></code>",
|
||||
"LabelBaseUrlHelp": "サーバーの URL に、カスタム サブディレクトリを加えます。例 : <code>http://example.com/<b><baseurl></b></code>",
|
||||
"LabelEnableSingleImageInDidlLimitHelp": "Didl 内に複数の画像が埋め込まれている場合、一部のデバイスでは正しくレンダリングされません。",
|
||||
"LabelEnableRealtimeMonitorHelp": "ファイルへの変更は、サポートされているファイルシステム上ですぐに処理されます。",
|
||||
"LabelEnableHttpsHelp": "構成された HTTPS ポートからサーバーがリッスンするのを有効にします。この機能を有効にするには、適切な証明書を設定する必要があります。",
|
||||
"LabelEnableRealtimeMonitorHelp": "サポートしているファイルシステムでは、ファイルの変更をすぐに処理します。",
|
||||
"LabelEnableHttpsHelp": "設定した HTTPS ポートをリッスンします。この機能を有効にするには、適切な証明書の設定が必要です。",
|
||||
"LabelImageFetchersHelp": "画像検索サイトの優先度を設定します。",
|
||||
"LabelPostProcessorArgumentsHelp": "{path}を録画ファイルのパスとして使用します。",
|
||||
"LabelPostProcessorArguments": "後処理のコマンドライン引数:",
|
||||
|
@ -1200,7 +1183,6 @@
|
|||
"LabelNumberOfGuideDaysHelp": "多くの日数分のガイドデータをダウンロードするとより先のスケジュールとリストを見ることができるようになりますが,ダウンロードに時間がかかるようになります。自動に設定するとチャンネル数を基に選択されます。",
|
||||
"LabelNumberOfGuideDays": "ガイドデータをダウンロードする日数:",
|
||||
"LabelNewsCategories": "ニュースのカテゴリ:",
|
||||
"LabelNightly": "最新・不安定版",
|
||||
"LabelStable": "安定版",
|
||||
"LabelChromecastVersion": "Chromecastバージョン",
|
||||
"LabelMusicStreamingTranscodingBitrateHelp": "音楽ストリーミングの最大ビットレートを指定します。",
|
||||
|
@ -1232,5 +1214,7 @@
|
|||
"LabelKodiMetadataDateFormatHelp": "NFOファイル内の全データが,このフォーマットによって解析されます。",
|
||||
"LabelKeepUpTo": "最新:",
|
||||
"LabelInNetworkSignInWithEasyPasswordHelp": "ローカルネットワーク内では簡単なPINコードを利用してサインインするようにします。ローカル以外からのアクセスのときのみ通常のパスワードが必要になります。PINコードを空欄にした場合,ローカルネットワーク内からのアクセスではパスワードが不要になります。",
|
||||
"LabelInNetworkSignInWithEasyPassword": "簡単なPINコードを利用してネットワーク内からサインインする機能の有効化"
|
||||
"LabelInNetworkSignInWithEasyPassword": "簡単なPINコードを利用してネットワーク内からサインインする機能の有効化",
|
||||
"LabelIconMaxWidthHelp": "upnp:icon として表示されるアイコンの最大解像度(幅)。",
|
||||
"LabelIconMaxHeightHelp": "upnp:icon として表示されるアイコンの最大解像度(高さ)。"
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
"AccessRestrictedTryAgainLater": "Aǵymda qatynaý shektelgen. Áreketti keıin qaıtalańyz.",
|
||||
"Actor": "Aktór",
|
||||
"Add": "Ústeý",
|
||||
"AddItemToCollectionHelp": "Tarmaqtardy izdep jáne tintýirdiń oń jaq túımeshign basyp jıyntyqtarǵa tarmaqtardy ústeńiz nemese jıyntyqqa ústeý úshin mázirlerdi túrtińiz.",
|
||||
"AddToCollection": "Jıyntyqqa ústeý",
|
||||
"AddToPlayQueue": "Oınatý kezegine ústeý",
|
||||
"AddToPlaylist": "Oınatý tizimine ústeý",
|
||||
|
@ -40,7 +39,6 @@
|
|||
"AttributeNew": "Jańa",
|
||||
"Audio": "Dybys",
|
||||
"Auto": "Avtomatty",
|
||||
"AutoBasedOnLanguageSetting": "Avtomatty (til teńshelimi negizinde)",
|
||||
"Backdrop": "Artqy sýret",
|
||||
"Backdrops": "Artqy sýretter",
|
||||
"Banner": "Baner",
|
||||
|
@ -84,7 +82,6 @@
|
|||
"ButtonHelp": "Anyqtama",
|
||||
"ButtonHome": "Basqyǵa",
|
||||
"ButtonInfo": "Aqparatqa",
|
||||
"ButtonLearnMore": "Kóbirek bilý",
|
||||
"ButtonLibraryAccess": "Tasyǵyshhanǵa qatynaý",
|
||||
"ButtonManualLogin": "Qolmen kirý",
|
||||
"ButtonMore": "Kóbirek",
|
||||
|
@ -130,7 +127,6 @@
|
|||
"ButtonTrailer": "Treıler",
|
||||
"ButtonUninstall": "Ornatymdy joıý",
|
||||
"ButtonUp": "Joǵaryǵa",
|
||||
"ButtonViewWebsite": "Ýeb-saıtyn qaraý",
|
||||
"ButtonWebsite": "Ýeb-saıty",
|
||||
"CancelRecording": "Jazýdy boldyrmaý",
|
||||
"CancelSeries": "Telehıkaıany boldyrmaý",
|
||||
|
@ -294,7 +290,6 @@
|
|||
"HeaderAppearsOn": "Kórýge bolady",
|
||||
"HeaderAudioBooks": "Dybystyq kitaptar",
|
||||
"HeaderAudioSettings": "Dybys parametrleri",
|
||||
"HeaderAutomaticUpdates": "Avtomatty jańartýlar",
|
||||
"HeaderBlockItemsWithNoRating": "Jastas sanaty týraly aqparaty joq nemese ol tanylmaǵan mazmundy qursaýlaý:",
|
||||
"HeaderBooks": "Kitaptar",
|
||||
"HeaderBranding": "Bezendirý",
|
||||
|
@ -515,8 +510,6 @@
|
|||
"LabelAlbumArtists": "Álbom oryndaýshylary:",
|
||||
"LabelAll": "Barlyq",
|
||||
"LabelAllowHWTranscoding": "Apparattyq qaıta kodtaýǵa ruqsat etý",
|
||||
"LabelAllowServerAutoRestart": "Jańartýlardy qoldaný úshin serverge qaıta iske qosylýdy ruqsat etý",
|
||||
"LabelAllowServerAutoRestartHelp": "Tek qana eshqandaı paıdalýnshylar belsendi emes áreketsiz mezgilderde server qaıta iske qosylady.",
|
||||
"LabelAllowedRemoteAddresses": "Qashyqtaǵy IP-mekenjaı súzgisi:",
|
||||
"LabelAllowedRemoteAddressesMode": "Qashyqtaǵy IP-mekenjaı súzgisiniń rejimi:",
|
||||
"LabelAppName": "Qoldanba aty",
|
||||
|
@ -554,7 +547,6 @@
|
|||
"LabelCustomDeviceDisplayName": "Beınelený aty:",
|
||||
"LabelCustomDeviceDisplayNameHelp": "Beınelenetin teńshelgen atyn usynyńyz nemese qurylǵy arqyly baıandalǵan atyn paıdalaný úshin bos qaldyryńyz.",
|
||||
"LabelCustomRating": "Teńshelgen sanat:",
|
||||
"LabelDashboardTheme": "Server taqtasynyń taqyryby:",
|
||||
"LabelDateAdded": "Ústelgen kúni:",
|
||||
"LabelDateAddedBehavior": "Jańa mazmun úshin qosylǵan kúni tártibi:",
|
||||
"LabelDateAddedBehaviorHelp": "Eger metaderekterde máni bolsa, bul qaısybir osy opsıalarydyń aldynda árqashanda paıdalanylady.",
|
||||
|
@ -766,7 +758,6 @@
|
|||
"LabelServerHost": "Host:",
|
||||
"LabelServerHostHelp": "192.168.1.100:8096 nemese https://myserver.com",
|
||||
"LabelSimultaneousConnectionLimit": "Bir mezgildegi aǵyndardyń shegi:",
|
||||
"LabelSkin": "Muqaba:",
|
||||
"LabelSkipBackLength": "Artqa ótkizip jiberý uzaqtyǵy:",
|
||||
"LabelSkipForwardLength": "Alǵa ótkizip jiberý uzaqtyǵy:",
|
||||
"LabelSkipIfAudioTrackPresent": "Eger ádepki dybys jolshyǵy júktep alynatyn tilge sáıkes kelse ótkizip jiberý",
|
||||
|
@ -778,7 +769,6 @@
|
|||
"LabelSortBy": "Suryptaý tásili:",
|
||||
"LabelSortOrder": "Suryptaý reti:",
|
||||
"LabelSortTitle": "Ataý boıynsha suryptaý:",
|
||||
"LabelSoundEffects": "Dybystyq áserleri:",
|
||||
"LabelSource": "Qaınar kózi:",
|
||||
"LabelSpecialSeasonsDisplayName": "Arnaıy maýsymdyń beıneleý aty:",
|
||||
"LabelSportsCategories": "Sporttyq sanattary:",
|
||||
|
@ -832,7 +822,6 @@
|
|||
"LabelXDlnaDoc": "X-DLNA tásimi:",
|
||||
"LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 ataýlar keńistigindegi X_DLNADOC elementi mazmunyn anyqtaıdy.",
|
||||
"LabelYear": "Jyl:",
|
||||
"LabelYourFirstName": "Atyńyz:",
|
||||
"LabelYoureDone": "Siz daıynsyz!",
|
||||
"LabelZipCode": "Poshta kody:",
|
||||
"LabelffmpegPath": "FFmpeg joly:",
|
||||
|
@ -843,7 +832,6 @@
|
|||
"LearnHowYouCanContribute": "Qalaı úles qosýynyńyz múmkin týraly úırenińiz.",
|
||||
"LibraryAccessHelp": "Bul paıdalanýshymen ortaqtasý úshin tasyǵyshhanalardy bólekteńiz. Metaderek retteýshini paıdalanyp ákimshiler barlyq qaltalardy óńdeýi múmkin.",
|
||||
"Like": "Unaıdy",
|
||||
"LinksValue": "Siltemeler: {0}",
|
||||
"List": "Tizim",
|
||||
"Live": "Tikeleı",
|
||||
"LiveBroadcasts": "Tikeleı taratymdar",
|
||||
|
@ -902,7 +890,6 @@
|
|||
"MessageFileReadError": "Faıl oqý kezinde qate oryn aldy. Áreketti keıin qaıtalańyz.",
|
||||
"MessageForgotPasswordFileCreated": "Kelesi faıl serverińizde jasaldy jáne qalaı kirisý týraly nusqaýlar ishinde bar:",
|
||||
"MessageForgotPasswordInNetworkRequired": "Paróldi ysyrý prosesi úshin áreketti úılik jelińizdiń ishinde qaıtalańyz.",
|
||||
"MessageInstallPluginFromApp": "Bul plagın qandaı qoldanbaǵa taǵaıyndalsa, sonyń ishinen ornatylýy tıisti.",
|
||||
"MessageInvalidForgotPasswordPin": "Jaramsyz nemese merzimi aıaqtalǵan PIN-kod engizildi. Áreketti qaıtalańyz.",
|
||||
"MessageInvalidUser": "Jaramsyz paıdalanýshy aty nemese paról. Áreketti qaıtalańyz.",
|
||||
"MessageItemSaved": "Tarmaq saqtaldy.",
|
||||
|
@ -1144,7 +1131,6 @@
|
|||
"ProductionLocations": "Óndirý oryndary",
|
||||
"Programs": "Kórsetimder",
|
||||
"Quality": "Sapasy",
|
||||
"QueueAllFromHere": "Bul aradan bárin kezekke",
|
||||
"Raised": "Dónesti",
|
||||
"Rate": "Baǵalaý",
|
||||
"RecentlyWatched": "Jýyqta qaralǵan",
|
||||
|
@ -1175,7 +1161,6 @@
|
|||
"ReplaceExistingImages": "Bar sýretterdi aýystyrý",
|
||||
"ResumeAt": "{0} bastap jalǵastyrý",
|
||||
"Rewind": "Shegindirý",
|
||||
"RunAtStartup": "Iske qosylýdan bastap oryndaý",
|
||||
"Runtime": "Uzaqtyǵy",
|
||||
"Saturday": "senbi",
|
||||
"Save": "Saqtaý",
|
||||
|
@ -1271,7 +1256,6 @@
|
|||
"TabParentalControl": "Mazmundy basqarý",
|
||||
"TabPassword": "Paról",
|
||||
"TabPlayback": "Oınatý",
|
||||
"TabPlaylist": "Oınatý tizimi",
|
||||
"TabPlaylists": "Oınatý tizimderi",
|
||||
"TabPlugins": "Plagınder",
|
||||
"TabProfile": "Profaıl",
|
||||
|
@ -1342,7 +1326,6 @@
|
|||
"ValueTimeLimitSingleHour": "Ýaqyt shegi: 1 saǵat",
|
||||
"ValueVideoCodec": "Beıne kodegi: {0}",
|
||||
"Vertical": "Tiginen",
|
||||
"VideoRange": "Beıne aýqymy",
|
||||
"ViewAlbum": "Álbomdy qaraý",
|
||||
"ViewPlaybackInfo": "Oınatý týraly aqparat",
|
||||
"Watched": "Qaralǵan",
|
||||
|
@ -1385,9 +1368,6 @@
|
|||
"DashboardOperatingSystem": "Operasıalyq júıe: {0}",
|
||||
"DashboardArchitecture": "Arhıtektýrasy: {0}",
|
||||
"LabelWeb": "Ýeb:",
|
||||
"LaunchWebAppOnStartup": "Serverdi iske qosqan kezde ýeb-ınterfeısti iske qosý",
|
||||
"LaunchWebAppOnStartupHelp": "Server bastapqyda iske qosylǵan kezde, ýeb-klıent ádepki sholǵyshta ashylady. Bul serverdi qaıta iske qosý fýnksıasyn qoldanǵanda oryn almaıdy.",
|
||||
"MediaInfoSoftware": "Baǵdarlamalyq jasaqtama",
|
||||
"MediaInfoStreamTypeAudio": "Dybys",
|
||||
"MediaInfoStreamTypeData": "Derekter",
|
||||
"MediaInfoStreamTypeEmbeddedImage": "Endirilgen sýret",
|
||||
|
@ -1450,7 +1430,6 @@
|
|||
"LabelDroppedFrames": "Ótkizilgen kadrlar:",
|
||||
"LabelCorruptedFrames": "Búlingen kadrlar:",
|
||||
"HeaderNavigation": "Sharlaý",
|
||||
"CopyStreamURLError": "URL kóshirgende qate oryn aldy.",
|
||||
"ButtonSplit": "Bólý",
|
||||
"AskAdminToCreateLibrary": "Tasýǵyshanany jasaý úshin ákimshiden suraý.",
|
||||
"AllowFfmpegThrottling": "Qaıta kodtaýdy retteý",
|
||||
|
@ -1473,9 +1452,7 @@
|
|||
"Yadif": "YADIF",
|
||||
"Track": "Jolshyq",
|
||||
"Season": "Maýsym",
|
||||
"ReleaseGroup": "Shyǵarýshy top",
|
||||
"Person": "Tulǵa",
|
||||
"OtherArtist": "Basqa oryndaýshy",
|
||||
"Movie": "Fılm",
|
||||
"LabelLibraryPageSize": "Tasyǵyshhana betiniń ólshemi:",
|
||||
"Episode": "Bólim",
|
||||
|
@ -1497,7 +1474,6 @@
|
|||
"MillisecondsUnit": "ms",
|
||||
"LabelSyncPlayTimeOffset": "Server ýaqtynan aýytqýy:",
|
||||
"LabelRequireHttps": "HTTPS qajet etedi",
|
||||
"LabelNightly": "Túngi",
|
||||
"LabelStable": "Turaqty",
|
||||
"LabelChromecastVersion": "Chromecast nusqasy",
|
||||
"LabelEnableHttps": "HTTPS qosý",
|
||||
|
|
|
@ -38,7 +38,6 @@
|
|||
"ButtonHelp": "도움말",
|
||||
"ButtonHome": "홈",
|
||||
"ButtonInfo": "정보",
|
||||
"ButtonLearnMore": "더 알아보기",
|
||||
"ButtonManualLogin": "수동 로그인",
|
||||
"ButtonMore": "더 보기",
|
||||
"ButtonNetwork": "네트워크",
|
||||
|
@ -76,7 +75,6 @@
|
|||
"ButtonSubmit": "제출",
|
||||
"ButtonSubtitles": "자막",
|
||||
"ButtonUninstall": "제거",
|
||||
"ButtonViewWebsite": "웹사이트 보기",
|
||||
"ButtonWebsite": "웹사이트",
|
||||
"ChannelAccessHelp": "이 사용자와 공유할 채널을 선택합니다. 관리자는 메타데이터 매니저를 사용하여 모든 채널을 수정할 수 있습니다.",
|
||||
"CinemaModeConfigurationHelp": "시네마 모드는 본 영화 전에 예고편과 소개 영상 등을 재생하여 사용자의 거실에서 극장의 경험을 제공합니다.",
|
||||
|
@ -135,7 +133,6 @@
|
|||
"HeaderApiKeys": "API 키",
|
||||
"HeaderApp": "앱",
|
||||
"HeaderAudioSettings": "오디오 설정",
|
||||
"HeaderAutomaticUpdates": "자동 업데이트",
|
||||
"HeaderBooks": "도서",
|
||||
"HeaderBranding": "브랜딩",
|
||||
"HeaderCastCrew": "배역 및 제작진",
|
||||
|
@ -274,8 +271,6 @@
|
|||
"LabelAlbumArtPN": "앨범 아트 PN:",
|
||||
"LabelAlbumArtists": "앨범 아티스트:",
|
||||
"LabelAll": "모두",
|
||||
"LabelAllowServerAutoRestart": "서버가 자동으로 업데이트를 적용하도록 재시작 허용",
|
||||
"LabelAllowServerAutoRestartHelp": "서버를 활성화된 사용자가 없는 유휴 기간에 다시 시작합니다.",
|
||||
"LabelAppName": "앱 이름",
|
||||
"LabelArtists": "아티스트:",
|
||||
"LabelArtistsHelp": "; 를 사용하여 여러 개 분리",
|
||||
|
@ -466,7 +461,6 @@
|
|||
"LabelUserLibraryHelp": "장치에 어떤 사용자 라이브러리를 보여줄 지 선택합니다. 기본 설정을 사용하려면 비워두십시오.",
|
||||
"LabelUsername": "사용자명:",
|
||||
"LabelVersionInstalled": "{0} 설치됨",
|
||||
"LabelYourFirstName": "이름:",
|
||||
"LabelYoureDone": "완료!",
|
||||
"LabelZipCode": "우편 번호:",
|
||||
"LibraryAccessHelp": "이 사용자와 공유할 라이브러리를 선택합니다. 관리자는 메타데이터 관리자를 사용하여 모든 폴더를 수정할 수 있습니다.",
|
||||
|
@ -659,7 +653,6 @@
|
|||
"PleaseSelectTwoItems": "최소 두 개의 항목을 선택하세요.",
|
||||
"Premiere": "프리미어",
|
||||
"Producer": "프로듀서",
|
||||
"QueueAllFromHere": "여기부터 모두 대기열에 추가",
|
||||
"RecommendationBecauseYouLike": "{0} 을(를) 좋아하기 때문에",
|
||||
"RecommendationBecauseYouWatched": "{0} 을(를) 시청했기 때문에",
|
||||
"RecommendationDirectedBy": "{0} 감독",
|
||||
|
@ -722,7 +715,6 @@
|
|||
"TabParentalControl": "자녀 보호",
|
||||
"TabPassword": "비밀번호",
|
||||
"TabPlayback": "재생",
|
||||
"TabPlaylist": "재생목록",
|
||||
"TabPlaylists": "재생목록",
|
||||
"TabPlugins": "플러그인",
|
||||
"TabProfile": "프로필",
|
||||
|
@ -800,7 +792,6 @@
|
|||
"Shows": "쇼",
|
||||
"Songs": "노래",
|
||||
"Sync": "동기화",
|
||||
"AddItemToCollectionHelp": "항목을 컬렉션에 추가하려면 검색한 뒤 우클릭이나 탭 매뉴를 이용하십시오.",
|
||||
"AddToCollection": "컬렉션에 추가",
|
||||
"AddToPlayQueue": "재생 대기열에 추가",
|
||||
"AddedOnValue": "{0} 추가됨",
|
||||
|
@ -825,7 +816,6 @@
|
|||
"AspectRatio": "종횡비",
|
||||
"AuthProviderHelp": "이 사용자의 비밀번호를 인증할 때 사용할 인증 서비스 제공자를 선택하십시오.",
|
||||
"Auto": "자동",
|
||||
"AutoBasedOnLanguageSetting": "자동 (언어 설정을 따름)",
|
||||
"Backdrop": "배경",
|
||||
"Banner": "배너",
|
||||
"BookLibraryHelp": "오디오 혹은 텍스트 도서가 지원됩니다. {0}도서 작명 가이드{1}를 참고하십시오.",
|
||||
|
@ -896,7 +886,6 @@
|
|||
"Yes": "예",
|
||||
"Whitelist": "화이트리스트",
|
||||
"ViewPlaybackInfo": "재생 정보 보기",
|
||||
"VideoRange": "비디오 길이",
|
||||
"ValueSeconds": "{0}초",
|
||||
"Upload": "업로드",
|
||||
"Unrated": "평점을 매기지 않음",
|
||||
|
@ -1004,7 +993,6 @@
|
|||
"MediaInfoStreamTypeEmbeddedImage": "내장된 이미지",
|
||||
"MediaInfoStreamTypeData": "데이터",
|
||||
"MediaInfoStreamTypeAudio": "오디오",
|
||||
"MediaInfoSoftware": "소프트웨어",
|
||||
"MediaInfoTimestamp": "타임스탬프",
|
||||
"MediaInfoSize": "크기",
|
||||
"MediaInfoLevel": "수준",
|
||||
|
@ -1070,7 +1058,6 @@
|
|||
"LabelDynamicExternalId": "{0} ID:",
|
||||
"LabelDisplayLanguageHelp": "Jellyfin 번역은 진행 중인 프로젝트입니다.",
|
||||
"LabelDisplayLanguage": "표시 언어:",
|
||||
"LabelDashboardTheme": "서버 대시보드 테마:",
|
||||
"LabelChannels": "채널:",
|
||||
"LabelCancelled": "취소됨",
|
||||
"LabelBitrate": "비트레이트:",
|
||||
|
@ -1104,7 +1091,6 @@
|
|||
"MessageDownloadQueued": "다운로드 대기 중.",
|
||||
"MessageDirectoryPickerLinuxInstruction": "Linux on Arch Linux, CentOS, Debian, Fedora, OpenSUSE, Ubuntu의 경우 서비스 사용자에게 최소한 저장 위치에 대한 읽기 권한을 부여해야 합니다.",
|
||||
"MessageDirectoryPickerBSDInstruction": "BSD의 경우, Jellyfin이 FreeNAS Jail에 액세스할 수 있도록 하려면 FreeNAS Jail 내에 스토리지를 구성해야 할 수도 있습니다.",
|
||||
"LinksValue": "링크: {0}",
|
||||
"LatestFromLibrary": "최근 {0}",
|
||||
"LabelYear": "년도:",
|
||||
"LabelVaapiDeviceHelp": "하드웨어 가속에 쓰이는 렌더 노드입니다.",
|
||||
|
@ -1113,7 +1099,6 @@
|
|||
"LabelTranscodingThreadCountHelp": "트랜스코딩에 사용할 스레드의 최대 갯수를 선택하십시오. 스레드의 갯수를 줄이면 CPU사용량이 줄어들지만, 부드러운 재생에 필요한 만큼 빠르게 변환되지 않을 수 있습니다.",
|
||||
"LabelTranscodingThreadCount": "트랜스코딩 스레드 수:",
|
||||
"LabelTextBackgroundColor": "글자 배경 색깔:",
|
||||
"LabelSoundEffects": "음향 효과:",
|
||||
"LabelSortTitle": "제목 정렬:",
|
||||
"LabelSortOrder": "정렬 순서:",
|
||||
"LabelSortBy": "정렬 기준:",
|
||||
|
@ -1167,7 +1152,6 @@
|
|||
"LiveBroadcasts": "실시간 방송",
|
||||
"LabelTypeMetadataDownloaders": "{0} 메타데이터 다운로더:",
|
||||
"LabelType": "유형:",
|
||||
"LabelSkin": "스킨:",
|
||||
"LabelPleaseRestart": "변경사항은 웹 클라이언트를 다시 불러오면 적용됩니다.",
|
||||
"LabelPlayMethod": "재생 방식:",
|
||||
"LabelPersonRoleHelp": "예시: Ice cream truch driver",
|
||||
|
@ -1254,7 +1238,6 @@
|
|||
"H264CrfHelp": "CRF(고정 레이트 팩터)는 x264 인코더의 기본 품질 설정입니다. 0에서 51 사이의 값을 설정할 수 있습니다. 값이 작을수록 품질이 향상됩니다(파일 크기가 커지면서). Sane 값은 18과 28 사이입니다. x264의 기본값은 23이므로 시작점으로 사용할 수 있습니다.",
|
||||
"LabelSeasonNumber": "시즌 번호:",
|
||||
"LabelPlayer": "재생기:",
|
||||
"LaunchWebAppOnStartup": "서버를 시작할 때 웹 인터페이스 실행",
|
||||
"MediaInfoBitDepth": "비트뎁스",
|
||||
"LabelPostProcessor": "후처리 애플리케이션:",
|
||||
"RefreshQueued": "새로 고침 대기 중",
|
||||
|
@ -1282,7 +1265,6 @@
|
|||
"Features": "기능",
|
||||
"ErrorPleaseSelectLineup": "라인업을 선택하고 다시 시도하십시오. 이용 가능한 라인업이 없으면 계정, 비밀번호, 우편번호가 정확한지 확인하십시오.",
|
||||
"ErrorAddingListingsToSchedulesDirect": "Schedules Direct 계정에 라인업을 추가하는 중에 오류가 발생했습니다. Schedules Direct는 계정 당 제한된 수의 라인업만이 허용됩니다. 계속하려면 Schedules Direct 웹사이트에 로그인하여 다른 항목을 삭제해야 할 수 있습니다.",
|
||||
"CopyStreamURLError": "URL을 복사하는 중에 오류가 발생했습니다.",
|
||||
"ColorTransfer": "컬러 변환",
|
||||
"AskAdminToCreateLibrary": "라이브러리를 생성하려면 관리자에게 문의하십시오.",
|
||||
"LabelCorruptedFrames": "손상된 프레임:",
|
||||
|
@ -1306,7 +1288,6 @@
|
|||
"AllowFfmpegThrottlingHelp": "트랜스코딩이나 리먹스 작업이 현재 재생 중인 위치를 넘어 충분히 진행되면 리소스를 절약하기 위해 작업을 중지합니다. 이는 재생 구간을 자주 변경하지 않을 경우에 가장 적합합니다. 재생 시 문제가 발생하면 이 항목을 비활성화하십시오.",
|
||||
"AllowFfmpegThrottling": "트랜스코딩 시 스로틀링",
|
||||
"MessageLeaveEmptyToInherit": "상위 항목의 설정이나 전역 설정값을 그대로 적용하기 위해서는 공백으로 두십시오.",
|
||||
"MessageInstallPluginFromApp": "이 플러그인은 사용할 앱 내부에서 설치해야 합니다.",
|
||||
"MessageImageTypeNotSelected": "드롭다운 메뉴에서 이미지 유형을 선택하십시오.",
|
||||
"MessageCreateAccountAt": "{0}에서 계정 만들기",
|
||||
"MessageConfirmRevokeApiKey": "정말 api 키를 무효화하시겠습니까? Jellyfin 서버와의 연결이 예고 없이 중단될 수 있습니다.",
|
||||
|
@ -1315,7 +1296,6 @@
|
|||
"MediaInfoRefFrames": "참조 프레임",
|
||||
"MediaInfoPixelFormat": "픽셀 형식",
|
||||
"MapChannels": "채널 매핑",
|
||||
"LaunchWebAppOnStartupHelp": "서버가 처음 시작되면 웹 브라우저에서 웹 클라이언트를 실행하십시오. 서버 재시작의 경우에는 적용되지 않습니다.",
|
||||
"Large": "크게",
|
||||
"LanNetworksHelp": "대역폭을 강제로 제한할 때 로컬 네트워크로 간주되는 쉼표로 구분된 IP 주소 및 IP/서브넷 마스크 목록입니다. 지정될 경우 모든 다른 IP 주소는 외부 네트워크로 간주되며 외부 대역폭 제한이 적용됩니다. 공백일 경우 서버의 서브넷만이 로컬 네트워크로 간주됩니다.",
|
||||
"LabelffmpegPathHelp": "ffmpeg 실행 파일 혹은 ffmpeg를 포함하는 폴더 경로입니다.",
|
||||
|
@ -1416,13 +1396,11 @@
|
|||
"NoSubtitlesHelp": "자막을 자동으로 불러오지 않습니다. 재생 중에 수동으로 켤 수 있습니다.",
|
||||
"MusicLibraryHelp": "{0}음악 이름 지정 규칙{1}을 확인하십시오.",
|
||||
"MovieLibraryHelp": "{0}영화 이름 지정 규칙{1}을 확인하십시오.",
|
||||
"MessageUnauthorizedUser": "현재 서버에 접속할 권한이 없습니다. 자세한 정보는 서버 관리자에게 문의하십시오.",
|
||||
"HeaderFavoritePlaylists": "즐겨찾는 플레이리스트",
|
||||
"ButtonTogglePlaylist": "플레이리스트",
|
||||
"ButtonToggleContextMenu": "더보기",
|
||||
"Rate": "평",
|
||||
"PerfectMatch": "정확히 일치",
|
||||
"OtherArtist": "다른 아티스트",
|
||||
"ButtonSyncPlay": "SyncPlay",
|
||||
"HeaderDVR": "DVR",
|
||||
"EnableDecodingColorDepth10Vp9": "10비트 VP9하드웨어 디코딩 사용합니다",
|
||||
|
|
|
@ -99,7 +99,6 @@
|
|||
"HeaderAddToPlaylist": "Pridėti į grojaraštį",
|
||||
"HeaderAddUser": "Pridėti vartotoją",
|
||||
"HeaderAdditionalParts": "Papildomos dalys",
|
||||
"HeaderAutomaticUpdates": "Automatiniai atnaujinimai",
|
||||
"HeaderCancelRecording": "Atšaukti įrašymą",
|
||||
"HeaderCancelSeries": "Atšaukti laidą",
|
||||
"HeaderCastCrew": "Kūrėjai",
|
||||
|
@ -161,8 +160,6 @@
|
|||
"LabelAirsBeforeSeason": "Rodoma prieš sezoną:",
|
||||
"LabelAlbum": "Albumas:",
|
||||
"LabelAlbumArtists": "Albumo atlikėjai:",
|
||||
"LabelAllowServerAutoRestart": "Leisti serveriui automatiškai persikrauti pritaikant atnaujinimus",
|
||||
"LabelAllowServerAutoRestartHelp": "Serveris persikraus tik neveikimo metu, kai nebus aktyvus nei vienas vartotojas.",
|
||||
"LabelArtists": "Atlikėjai:",
|
||||
"LabelArtistsHelp": "Atskirti kelis naudojant ;",
|
||||
"LabelAudioLanguagePreference": "Garso kalbos pageidavimas:",
|
||||
|
@ -289,7 +286,6 @@
|
|||
"LabelUseNotificationServices": "Naudoti šias paslaugas:",
|
||||
"LabelUser": "Vartotojas:",
|
||||
"LabelYear": "Metai:",
|
||||
"LabelYourFirstName": "Jūsų vardas:",
|
||||
"LabelYoureDone": "Baigta!",
|
||||
"LatestFromLibrary": "Vėliausi {0}",
|
||||
"LibraryAccessHelp": "Pasirinkite medijos aplankus, kuriuos norite dalintis su šiuo vartotoju. Administratoriai galės redaguoti visus aplankus per metaduomenų valdymą.",
|
||||
|
@ -421,7 +417,6 @@
|
|||
"Premieres": "Premieras",
|
||||
"Producer": "Prodiuseris",
|
||||
"ProductionLocations": "Filmavimo vietos",
|
||||
"QueueAllFromHere": "Į eilę viską nuo čia",
|
||||
"RecentlyWatched": "Nesenai žiūrėta",
|
||||
"Record": "Įrašyti",
|
||||
"RecordSeries": "Įrašyti laidą",
|
||||
|
@ -489,7 +484,6 @@
|
|||
"TabNotifications": "Pranešimai",
|
||||
"TabOther": "Kita",
|
||||
"TabPassword": "Slaptažodis",
|
||||
"TabPlaylist": "Grojaraštis",
|
||||
"TabProfile": "Profilis",
|
||||
"TabProfiles": "Profiliai",
|
||||
"TabRecordings": "Įrašai",
|
||||
|
@ -561,7 +555,6 @@
|
|||
"ButtonFullscreen": "Per visą ekraną",
|
||||
"ButtonGuide": "Gidas",
|
||||
"ButtonInfo": "Info",
|
||||
"ButtonLearnMore": "Sužinoti daugiau",
|
||||
"ButtonLibraryAccess": "Mediatekos prieiga",
|
||||
"ButtonMore": "Daugiau",
|
||||
"ButtonNetwork": "Tinklas",
|
||||
|
@ -581,7 +574,6 @@
|
|||
"ButtonStart": "Pradėti",
|
||||
"ButtonUninstall": "Pašalinti",
|
||||
"ButtonUp": "Aukštyn",
|
||||
"ButtonViewWebsite": "Žiūrėti svetainę",
|
||||
"ButtonWebsite": "Svetainė",
|
||||
"ChangingMetadataImageSettingsNewContent": "Metaduomenų ar iliustracijų pakeitimai bus pritaikyti tik naujai pridėtam turiniui. Norint pritaikyti pakeitimus esančiam turiniui reikės atnaujinti metaduomenis rankiniu būdu.",
|
||||
"Channels": "Kanalai",
|
||||
|
@ -613,7 +605,6 @@
|
|||
"AllLibraries": "Visos bibliotekos",
|
||||
"AllowMediaConversionHelp": "Leisti arba uždrausti medijos konvertavimą.",
|
||||
"AlwaysPlaySubtitles": "Visada rodyti subtitrus",
|
||||
"AutoBasedOnLanguageSetting": "Auto (pagal kalbos parinktį)",
|
||||
"BookLibraryHelp": "Garso ir tekstinės knygos yra palaikomos. Peržiūrėkite {0} knygų vardinimo gidą {1}.",
|
||||
"ButtonEditOtherUserPreferences": "Keisti šio vartotojo profilį, paveikslą ir asmeninius nustatymus.",
|
||||
"ButtonResetEasyPassword": "Atstatyti pin kodą",
|
||||
|
@ -644,7 +635,6 @@
|
|||
"AllComplexFormats": "Visi Sudėtingi Formatai (ASS, SSA, VOBSUB, PGS, SUB/IDX, t.t.)",
|
||||
"AllowHWTranscodingHelp": "Leisti imtuvui perkoduoti srautus grojant. Tai gali sumažinti perkodavimus reikalingus serveriui.",
|
||||
"AuthProviderHelp": "Pasirinkite autentifikavimo paslaugos teikėją šio vartotojo slaptažodžio autentifikavimui.",
|
||||
"AddItemToCollectionHelp": "Pridėkite įrašus į kolekciją. Suraskite įrašą, bei naudokite jo meniu, kad pridėti į kolekciją.",
|
||||
"AllowedRemoteAddressesHelp": "IP adresų atskirtų kableliais sąrašas ar IP/netmask įrašai tinklams, kurie turės teisę prisijungti nuotoliniu būdu. Visi adresai bus leidžiami, jei įrašas tuščias.",
|
||||
"HeaderMyMedia": "Mediateka",
|
||||
"HeaderMyDevice": "Mano įrenginys",
|
||||
|
@ -817,7 +807,6 @@
|
|||
"HeaderVideoQuality": "Vaizdo įrašo kokybė",
|
||||
"HeaderVideoType": "Video įrašo tipas",
|
||||
"HeaderVideoTypes": "Video tipai",
|
||||
"LabelDashboardTheme": "Serverio puslapio tema:",
|
||||
"LabelDownloadLanguages": "Kalbos parsiuntimui:",
|
||||
"LabelDropShadow": "Mesti šešėlį:",
|
||||
"LabelEasyPinCode": "Greitas PID kodas:",
|
||||
|
@ -1004,7 +993,6 @@
|
|||
"HeaderFavoritePlaylists": "Mėgstami Grojaraščiai",
|
||||
"ApiKeysCaption": "Įjungtų API raktų sąrašas",
|
||||
"Episode": "Episodas",
|
||||
"CopyStreamURLError": "Klaida kopijuojant URL.",
|
||||
"ClientSettings": "Kliento Nustatymai",
|
||||
"ButtonTogglePlaylist": "Grojaraštis",
|
||||
"ButtonToggleContextMenu": "Daugiau",
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue