diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..81eba8ccc9 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +end_of_line = lf diff --git a/.github/ISSUE_TEMPLATE/enhancement-request.md b/.github/ISSUE_TEMPLATE/enhancement-request.md deleted file mode 100644 index a655b60f53..0000000000 --- a/.github/ISSUE_TEMPLATE/enhancement-request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Enhancement request -about: Suggest an modification to an existing feature -title: '' -labels: enhancement -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** - - -**Describe the solution you'd like** - - -**Describe alternatives you've considered** - - -**Additional context** - diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 3cbc8cbb91..0000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Feature request -about: Suggest a new feature -title: '' -labels: feature -assignees: '' - ---- - -**Describe the feature you'd like** - - -**Additional context** - diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000000..afcd53bcee --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,19 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - regression + - future + - feature + - enhancement +# Label to use when marking an issue as stale +staleLabel: stale +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + Issues go stale after 60d of inactivity. Mark the issue as fresh by adding a comment or commit. Stale issues close after an additional 7d of inactivity. + If this issue is safe to close now please do so. + If you have any questions you can reach us on [Matrix or Social Media](https://jellyfin.readthedocs.io/en/latest/getting-help/). +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 61838888e4..9ca9b10598 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -23,6 +23,8 @@ - [thornbill](https://github.com/thornbill) - [redSpoutnik](https://github.com/redSpoutnik) - [DrPandemic](https://github.com/drpandemic) + - [Oddstr13](https://github.com/oddstr13) + - [petermcneil](https://github.com/petermcneil) # Emby Contributors diff --git a/src/serversecurity.html b/src/apikeys.html similarity index 89% rename from src/serversecurity.html rename to src/apikeys.html index 4df33acc60..43cfae5b13 100644 --- a/src/serversecurity.html +++ b/src/apikeys.html @@ -1,4 +1,4 @@ -
+
diff --git a/src/bower_components/apiclient/apiclientcore.js b/src/bower_components/apiclient/apiclientcore.js index 2ee75beb22..ea4d05d0ab 100644 --- a/src/bower_components/apiclient/apiclientcore.js +++ b/src/bower_components/apiclient/apiclientcore.js @@ -1190,15 +1190,13 @@ define(["events", "appStorage"], function(events, appStorage) { data: JSON.stringify(info), contentType: "application/json" }) - }, ApiClient.prototype.createUser = function(name) { + }, ApiClient.prototype.createUser = function(user) { var url = this.getUrl("Users/New"); return this.ajax({ type: "POST", url: url, - data: { - Name: name - }, - dataType: "json" + data: JSON.stringify(user), + contentType: "application/json" }) }, ApiClient.prototype.updateUser = function(user) { if (!user) throw new Error("null user"); diff --git a/src/bower_components/apiclient/credentialprovider.js b/src/bower_components/apiclient/credentialprovider.js index a200b60124..471f2b5ef1 100644 --- a/src/bower_components/apiclient/credentialprovider.js +++ b/src/bower_components/apiclient/credentialprovider.js @@ -13,7 +13,7 @@ define(["events", "appStorage"], function(events, appStorage) { } function Credentials(key) { - this.key = key || "servercredentials3" + this.key = key || "jellyfin_credentials" } return Credentials.prototype.clear = function() { this._credentials = null, appStorage.removeItem(this.key) diff --git a/src/components/actionsheet/actionsheet.js b/src/components/actionsheet/actionsheet.js index e365a1b86f..54b6aeddf2 100644 --- a/src/components/actionsheet/actionsheet.js +++ b/src/components/actionsheet/actionsheet.js @@ -41,10 +41,6 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu var windowHeight = windowSize.innerHeight; var windowWidth = windowSize.innerWidth; - if (windowWidth < 600 || windowHeight < 600) { - return null; - } - var pos = getOffsets([options.positionTo])[0]; if (options.positionY !== 'top') { @@ -56,7 +52,7 @@ define(['dialogHelper', 'layoutManager', 'globalize', 'browser', 'dom', 'emby-bu var height = dlg.offsetHeight || 300; var width = dlg.offsetWidth || 160; - // Account for popup size + // Account for popup size pos.top -= height / 2; pos.left -= width / 2; diff --git a/src/components/activitylog.js b/src/components/activitylog.js index 6d56e96a56..a6206477e7 100644 --- a/src/components/activitylog.js +++ b/src/components/activitylog.js @@ -4,14 +4,21 @@ define(["events", "globalize", "dom", "datetime", "userSettings", "serverNotific function getEntryHtml(entry, apiClient) { var html = ""; html += '
'; - var color = "Error" == entry.Severity || "Fatal" == entry.Severity || "Warn" == entry.Severity ? "#cc0000" : "#00a4dc"; + var color = "#00a4dc"; + var icon = "notifications"; + if ("Error" == entry.Severity || "Fatal" == entry.Severity || "Warn" == entry.Severity) { + color = "#cc0000"; + icon = "notification_important"; + } if (entry.UserId && entry.UserPrimaryImageTag) { html += 'dvr" - } else html += 'dvr'; + } else { + html += '' + icon + ''; + } html += '
', html += '
', html += entry.Name, html += "
", html += '
'; var date = datetime.parseISO8601Date(entry.Date, !0); return html += datetime.toLocaleString(date).toLowerCase(), html += "
", html += '
', html += entry.ShortOverview || "", html += "
", html += "
", entry.Overview && (html += ''), html += "
" @@ -86,4 +93,4 @@ define(["events", "globalize", "dom", "datetime", "userSettings", "serverNotific var onUpdate = this.updateFn; onUpdate && events.off(serverNotifications, "ActivityLogEntry", onUpdate), this.items = null, this.options = null }, ActivityLog -}); \ No newline at end of file +}); diff --git a/src/components/apphost.js b/src/components/apphost.js index 775fc9c7db..9f61e83c0a 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -274,7 +274,9 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet features.push("displaylanguage"); features.push("otherapppromotions"); - features.push("targetblank"); // allows users to connect to more than one server + features.push("displaymode"); + features.push("targetblank"); + // allows users to connect to more than one server //features.push("multiserver"); if (!browser.orsay && !browser.tizen && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || cueSupported())) { @@ -310,9 +312,11 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet var deviceId; var deviceName; + var appName = "Jellyfin Web"; + var appVersion = "10.3.6"; var visibilityChange; var visibilityState; - var appVersion = window.dashboardVersion || "3.0"; + var appHost = { getWindowState: function () { return document.windowState || "Normal"; @@ -357,9 +361,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet } deviceName = getDeviceName(); - return getDeviceId().then(function (resolvedDeviceId) { - deviceId = resolvedDeviceId; - }); + deviceId = getDeviceId(); }, deviceName: function () { return window.NativeShell ? window.NativeShell.AppHost.deviceName() : deviceName; @@ -368,7 +370,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet return window.NativeShell ? window.NativeShell.AppHost.deviceId() : deviceId; }, appName: function () { - return window.NativeShell ? window.NativeShell.AppHost.appName() : "Jellyfin Web"; + return window.NativeShell ? window.NativeShell.AppHost.appName() : appName; }, appVersion: function () { return window.NativeShell ? window.NativeShell.AppHost.appVersion() : appVersion; @@ -388,53 +390,6 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet var att = scalable ? "width=device-width, initial-scale=1, minimum-scale=1, user-scalable=yes" : "width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"; document.querySelector("meta[name=viewport]").setAttribute("content", att); } - }, - deviceIconUrl: function () { - if (browser.edgeUwp) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/windowsrt.png"; - } - - if (browser.opera || browser.operaTv) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/opera.png"; - } - - if (browser.orsay || browser.tizen) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/samsungtv.png"; - } - - if (browser.web0s) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/lgtv.png"; - } - - if (browser.ps4) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/ps4.png"; - } - - if (browser.chromecast) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/chromecast.png"; - } - - if (browser.chrome) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/chrome.png"; - } - - if (browser.edge) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/edge.png"; - } - - if (browser.firefox) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/firefox.png"; - } - - if (browser.msie) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/internetexplorer.png"; - } - - if (browser.safari) { - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/safari.png"; - } - - return "https://github.com/MediaBrowser/Emby.Resources/raw/master/images/devices/html5.png"; } }; var doc = self.document; diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 76b78fd733..9a74085917 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -32,6 +32,18 @@ button { .itemsContainer { display: flex; + margin-left: -0.6em; + margin-right: -0.6em; +} + +/* TODO replace this with a proper fix */ +/* doesnt work on mobile devices */ +/* negative margin fixes annoying misalignment with cards and title */ +@media all and (max-width:50em) { + .itemsContainer { + margin-left: 0; + margin-right: 0; + } } .vertical-list { @@ -77,7 +89,7 @@ button { .cardBox { padding: 0 !important; - margin: .42em; + margin: 0.6em; transition: none; border: 0 solid transparent; /* These both are needed in case cardBox is a button */ @@ -86,25 +98,10 @@ button { contain: layout style; } -/*.cardBox-withfocuscontent { - margin: .68em; -}*/ - -@media (min-width: 50em) { - - .cardBox { - margin: .9em; - } -} - .cardBox-withfocuscontent-large { margin: .4em; } -/*.card-focuscontent { - border: .12em solid transparent; -}*/ - .card-focuscontent-large { border: .5em solid transparent; } @@ -123,7 +120,6 @@ button { } @media (max-width: 50em) { - .cardBox-bottompadded { margin-bottom: 1.2em !important; } @@ -213,9 +209,9 @@ button { font-size: inherit; } - .cardContent-button:not(.defaultCardBackground) { - background-color: transparent; - } +.cardContent-button:not(.defaultCardBackground) { + background-color: transparent; +} .visualCardBox .cardContent { border-bottom-left-radius: 0; @@ -371,9 +367,9 @@ button { justify-content: center;*/ } - .textActionButton:hover { - text-decoration: underline; - } +.textActionButton:hover { + text-decoration: underline; +} .cardImageIcon { font-size: 5em; @@ -797,4 +793,4 @@ button { .cardOverlayFab-primary:hover { transform: scale(1.4, 1.4); transition: 0.2s; -} +} \ No newline at end of file diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index b41428e2ab..0344300d39 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1,5 +1,5 @@ -define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusManager', 'indicators', 'globalize', 'layoutManager', 'apphost', 'dom', 'browser', 'playbackManager', 'itemShortcuts', 'css!./card', 'paper-icon-button-light', 'programStyles'], - function (datetime, imageLoader, connectionManager, itemHelper, focusManager, indicators, globalize, layoutManager, appHost, dom, browser, playbackManager, itemShortcuts) { +define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusManager', 'indicators', 'globalize', 'layoutManager', 'apphost', 'dom', 'browser', 'playbackManager', 'itemShortcuts', 'scripts/imagehelper', 'css!./card', 'paper-icon-button-light', 'programStyles'], + function (datetime, imageLoader, connectionManager, itemHelper, focusManager, indicators, globalize, layoutManager, appHost, dom, browser, playbackManager, itemShortcuts, imageHelper) { 'use strict'; var devicePixelRatio = window.devicePixelRatio || 1; @@ -1546,16 +1546,8 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } function getCardDefaultText(item, options) { - - var collectionType = item.CollectionType; - if (collectionType === 'livetv') { - return ''; - } - if (collectionType === 'homevideos' || collectionType === 'photos') { - return ''; - } - if (collectionType === 'music') { - return ''; + if (item.CollectionType) { + return '' + imageHelper.getLibraryIcon(item.CollectionType) + '' } if (item.Type === 'MusicAlbum') { return ''; diff --git a/src/components/channelmapper/channelmapper.js b/src/components/channelmapper/channelmapper.js index 3a1ae99506..2abf7e2c9e 100644 --- a/src/components/channelmapper/channelmapper.js +++ b/src/components/channelmapper/channelmapper.js @@ -28,15 +28,18 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee function onChannelsElementClick(e) { var btnMap = parentWithClass(e.target, "btnMap"); if (btnMap) { - var channelId = btnMap.getAttribute("data-id"), - providerChannelId = btnMap.getAttribute("data-providerid"), - menuItems = currentMappingOptions.ProviderChannels.map(function(m) { - return { - name: m.Name, - id: m.Id, - selected: m.Id.toLowerCase() === providerChannelId.toLowerCase() - } - }); + var channelId = btnMap.getAttribute("data-id"); + var providerChannelId = btnMap.getAttribute("data-providerid"); + var menuItems = currentMappingOptions.ProviderChannels.map(function(m) { + return { + name: m.Name, + id: m.Id, + selected: m.Id.toLowerCase() === providerChannelId.toLowerCase() + } + }).sort(function (a, b) { + return a.name.localeCompare(b.name); + }); + actionsheet.show({ positionTo: btnMap, items: menuItems @@ -93,4 +96,4 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee }) } } -}); \ No newline at end of file +}); diff --git a/src/components/chromecast/chromecastplayer.js b/src/components/chromecast/chromecastplayer.js index 9b382aeecf..f3f7e6b865 100644 --- a/src/components/chromecast/chromecastplayer.js +++ b/src/components/chromecast/chromecastplayer.js @@ -29,7 +29,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' } /** - * Constants of states for Chromecast device + * Constants of states for Chromecast device **/ var DEVICE_STATE = { 'IDLE': 0, @@ -39,7 +39,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; /** - * Constants of states for CastPlayer + * Constants of states for CastPlayer **/ var PLAYER_STATE = { 'IDLE': 'IDLE', @@ -52,12 +52,10 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' 'ERROR': 'ERROR' }; + // production version registered with google + // replace this value if you want to test changes on another instance var applicationID = "F007D354"; - // This is the beta version used for testing new changes - - //applicationID = '27C4EB5B'; - var messageNamespace = 'urn:x-cast:com.connectsdk'; var CastPlayer = function () { @@ -85,21 +83,18 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; /** - * Initialize Cast media player + * Initialize Cast media player * Initializes the API. Note that either successCallback and errorCallback will be - * invoked once the API has finished initialization. The sessionListener and - * receiverListener may be invoked at any time afterwards, and possibly more than once. + * invoked once the API has finished initialization. The sessionListener and + * receiverListener may be invoked at any time afterwards, and possibly more than once. */ CastPlayer.prototype.initializeCastPlayer = function () { - var chrome = window.chrome; - if (!chrome) { return; } if (!chrome.cast || !chrome.cast.isAvailable) { - setTimeout(this.initializeCastPlayer.bind(this), 1000); return; } @@ -108,17 +103,14 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' var sessionRequest = new chrome.cast.SessionRequest(applicationID); var apiConfig = new chrome.cast.ApiConfig(sessionRequest, this.sessionListener.bind(this), - this.receiverListener.bind(this), - "origin_scoped"); + this.receiverListener.bind(this)); console.log('chromecast.initialize'); - chrome.cast.initialize(apiConfig, this.onInitSuccess.bind(this), this.errorHandler); - }; /** - * Callback function for init success + * Callback function for init success */ CastPlayer.prototype.onInitSuccess = function () { this.isInitialized = true; @@ -126,7 +118,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; /** - * Generic error callback function + * Generic error callback function */ CastPlayer.prototype.onError = function () { console.log("chromecast error"); @@ -137,15 +129,11 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * This handles auto-join when a page is reloaded * When active session is detected, playback will automatically * join existing session and occur in Cast mode and media - * status gets synced up with current media of the session + * status gets synced up with current media of the session */ CastPlayer.prototype.sessionListener = function (e) { - this.session = e; if (this.session) { - - //console.log('sessionListener ' + JSON.stringify(e)); - if (this.session.media[0]) { this.onMediaDiscovered('activeSession', this.session.media[0]); } @@ -164,28 +152,20 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' } CastPlayer.prototype.messageListener = function (namespace, message) { - if (typeof (message) === 'string') { message = JSON.parse(message); } if (message.type === 'playbackerror') { - var errorCode = message.data; - setTimeout(function () { alertText(globalize.translate('MessagePlaybackError' + errorCode), globalize.translate('HeaderPlaybackError')); }, 300); - - } - else if (message.type === 'connectionerror') { - + } else if (message.type === 'connectionerror') { setTimeout(function () { alertText(globalize.translate('MessageChromecastConnectionError'), globalize.translate('HeaderError')); }, 300); - - } - else if (message.type) { + } else if (message.type) { events.trigger(this, message.type, [message.data]); } }; @@ -196,13 +176,11 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * does not provide a list of device IDs */ CastPlayer.prototype.receiverListener = function (e) { - if (e === 'available') { - //console.log("chromecast receiver found"); + console.log("chromecast receiver found"); this.hasReceivers = true; - } - else { - //console.log("chromecast receiver list empty"); + } else { + console.log("chromecast receiver list empty"); this.hasReceivers = false; } }; @@ -211,19 +189,16 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * session update listener */ CastPlayer.prototype.sessionUpdateListener = function (isAlive) { - - //console.log('sessionUpdateListener alive: ' + isAlive); - if (isAlive) { - } - else { + console.log('sessionUpdateListener: already alive'); + } else { this.session = null; this.deviceState = DEVICE_STATE.IDLE; this.castPlayerState = PLAYER_STATE.IDLE; document.removeEventListener("volumeupbutton", onVolumeUpKeyDown, false); document.removeEventListener("volumedownbutton", onVolumeDownKeyDown, false); - - //console.log('sessionUpdateListener: setting currentMediaSession to null'); + + console.log('sessionUpdateListener: setting currentMediaSession to null'); this.currentMediaSession = null; sendConnectionResult(false); @@ -233,27 +208,24 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' /** * Requests that a receiver application session be created or joined. By default, the SessionRequest * passed to the API at initialization time is used; this may be overridden by passing a different - * session request in opt_sessionRequest. + * session request in opt_sessionRequest. */ CastPlayer.prototype.launchApp = function () { - //console.log("chromecast launching app..."); + console.log("chromecast launching app..."); chrome.cast.requestSession(this.onRequestSessionSuccess.bind(this), this.onLaunchError.bind(this)); }; /** - * Callback function for request session success + * Callback function for request session success * @param {Object} e A chrome.cast.Session object */ CastPlayer.prototype.onRequestSessionSuccess = function (e) { - - //console.log("chromecast session success: " + e.sessionId); + console.log("chromecast session success: " + e.sessionId); this.onSessionConnected(e); }; CastPlayer.prototype.onSessionConnected = function (session) { - this.session = session; - this.deviceState = DEVICE_STATE.ACTIVE; this.session.addMessageListener(messageNamespace, this.messageListener.bind(this)); @@ -264,7 +236,6 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' document.addEventListener("volumedownbutton", onVolumeDownKeyDown, false); events.trigger(this, 'connect'); - this.sendMessage({ options: {}, command: 'Identify' @@ -274,7 +245,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' function onVolumeUpKeyDown() { playbackManager.volumeUp(); } - + function onVolumeDownKeyDown() { playbackManager.volumeDown(); } @@ -283,8 +254,6 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * session update listener */ CastPlayer.prototype.sessionMediaListener = function (e) { - - //console.log('sessionMediaListener'); this.currentMediaSession = e; this.currentMediaSession.addUpdateListener(this.mediaStatusUpdateHandler); }; @@ -293,9 +262,8 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Callback function for launch error */ CastPlayer.prototype.onLaunchError = function () { - //console.log("chromecast launch error"); + console.log("chromecast launch error"); this.deviceState = DEVICE_STATE.ERROR; - sendConnectionResult(false); }; @@ -303,25 +271,22 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * Stops the running receiver application associated with the session. */ CastPlayer.prototype.stopApp = function () { - if (this.session) { - this.session.stop(this.onStopAppSuccess.bind(this, 'Session stopped'), - this.errorHandler); + this.session.stop(this.onStopAppSuccess.bind(this, 'Session stopped'), this.errorHandler); } - }; /** - * Callback function for stop app success + * Callback function for stop app success */ CastPlayer.prototype.onStopAppSuccess = function (message) { - //console.log(message); + console.log(message); + this.deviceState = DEVICE_STATE.IDLE; this.castPlayerState = PLAYER_STATE.IDLE; document.removeEventListener("volumeupbutton", onVolumeUpKeyDown, false); document.removeEventListener("volumedownbutton", onVolumeDownKeyDown, false); - //console.log('onStopAppSuccess: setting currentMediaSession to null'); this.currentMediaSession = null; }; @@ -330,15 +295,13 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {Number} mediaIndex An index number to indicate current media content */ CastPlayer.prototype.loadMedia = function (options, command) { - if (!this.session) { - //console.log("no session"); + console.log("no session"); return Promise.reject(); } - // Convert the items to smaller stubs to send the minimal amount of information + // convert items to smaller stubs to send minimal amount of information options.items = options.items.map(function (i) { - return { Id: i.Id, ServerId: i.ServerId, @@ -397,22 +360,17 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' } return new Promise(function (resolve, reject) { - require(['chromecastHelper'], function (chromecastHelper) { - chromecastHelper.getServerAddress(apiClient).then(function (serverAddress) { message.serverAddress = serverAddress; player.sendMessageInternal(message).then(resolve, reject); - }, reject); }); }); }; CastPlayer.prototype.sendMessageInternal = function (message) { - message = JSON.stringify(message); - //console.log(message); this.session.sendMessage(messageNamespace, message, this.onPlayCommandSuccess.bind(this), this.errorHandler); return Promise.resolve(); @@ -447,31 +405,27 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' * @param {!Boolean} e true/false */ CastPlayer.prototype.onMediaStatusUpdate = function (e) { - + //console.log("chromecast updating media: " + e); if (e === false) { this.castPlayerState = PLAYER_STATE.IDLE; } - //console.log("chromecast updating media: " + e); }; /** * Set media volume in Cast mode - * @param {Boolean} mute A boolean + * @param {Boolean} mute A boolean */ CastPlayer.prototype.setReceiverVolume = function (mute, vol) { - if (!this.currentMediaSession) { //console.log('this.currentMediaSession is null'); return; } if (!mute) { - this.session.setReceiverVolumeLevel((vol || 1), this.mediaCommandSuccessCallback.bind(this), this.errorHandler); - } - else { + } else { this.session.setReceiverMuted(true, this.mediaCommandSuccessCallback.bind(this), this.errorHandler); @@ -486,7 +440,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; /** - * Callback function for media command success + * Callback function for media command success */ CastPlayer.prototype.mediaCommandSuccessCallback = function (info, e) { //console.log(info); @@ -636,19 +590,15 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' } ChromecastPlayer.prototype.tryPair = function (target) { - var castPlayer = this._castPlayer; if (castPlayer.deviceState !== DEVICE_STATE.ACTIVE && castPlayer.isInitialized) { - return new Promise(function (resolve, reject) { currentResolve = resolve; currentReject = reject; - castPlayer.launchApp(); }); } else { - currentResolve = null; currentReject = null; @@ -657,7 +607,6 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' }; ChromecastPlayer.prototype.getTargets = function () { - var targets = []; if (this._castPlayer && this._castPlayer.hasReceivers) { @@ -842,7 +791,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' vol = Math.min(vol, 100); vol = Math.max(vol, 0); vol = vol / 100; - + this._castPlayer.session.setReceiverVolumeLevel(vol); }; diff --git a/src/components/emby-button/emby-button.css b/src/components/emby-button/emby-button.css index 148d1ebadb..a37a28ebe4 100644 --- a/src/components/emby-button/emby-button.css +++ b/src/components/emby-button/emby-button.css @@ -50,10 +50,6 @@ vertical-align: initial; } -.button-link-inline { - display: inline; -} - .button-link:hover { text-decoration: underline; } diff --git a/src/components/emby-button/emby-button.js b/src/components/emby-button/emby-button.js index d80b224d03..6df7aebb5c 100644 --- a/src/components/emby-button/emby-button.js +++ b/src/components/emby-button/emby-button.js @@ -28,11 +28,6 @@ define(['browser', 'dom', 'layoutManager', 'shell', 'appRouter', 'apphost', 'css this.classList.add('emby-button'); - if (browser.firefox) { - // a ff hack is needed for vertical alignment - this.classList.add('button-link-inline'); - } - if (layoutManager.tv) { if (this.getAttribute('data-focusscale') !== 'false') { this.classList.add('emby-button-focusscale'); @@ -82,4 +77,4 @@ define(['browser', 'dom', 'layoutManager', 'shell', 'appRouter', 'apphost', 'css // For extension purposes return EmbyButtonPrototype; -}); \ No newline at end of file +}); diff --git a/src/components/emby-itemscontainer/emby-itemscontainer.js b/src/components/emby-itemscontainer/emby-itemscontainer.js index 2b002c70e8..7cfb3e4a4a 100644 --- a/src/components/emby-itemscontainer/emby-itemscontainer.js +++ b/src/components/emby-itemscontainer/emby-itemscontainer.js @@ -1,13 +1,11 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', 'imageLoader', 'layoutManager', 'browser', 'dom', 'loading', 'focusManager', 'serverNotifications', 'events', 'registerElement'], function (itemShortcuts, inputManager, connectionManager, playbackManager, imageLoader, layoutManager, browser, dom, loading, focusManager, serverNotifications, events) { 'use strict'; - var ItemsContainerProtoType = Object.create(HTMLDivElement.prototype); + var ItemsContainerPrototype = Object.create(HTMLDivElement.prototype); function onClick(e) { - var itemsContainer = this; var target = e.target; - var multiSelect = itemsContainer.multiSelect; if (multiSelect) { @@ -20,22 +18,18 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } function disableEvent(e) { - e.preventDefault(); e.stopPropagation(); return false; } function onContextMenu(e) { - var itemsContainer = this; - var target = e.target; var card = dom.parentWithAttribute(target, 'data-id'); // check for serverId, it won't be present on selectserver if (card && card.getAttribute('data-serverid')) { - inputManager.trigger('menu', { sourceElement: card }); @@ -52,8 +46,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', }; } - ItemsContainerProtoType.enableMultiSelect = function (enabled) { - + ItemsContainerPrototype.enableMultiSelect = function (enabled) { var current = this.multiSelect; if (!enabled) { @@ -78,7 +71,6 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', }; function onDrop(evt, itemsContainer) { - var el = evt.item; var newIndex = evt.newIndex; @@ -86,9 +78,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', var playlistId = el.getAttribute('data-playlistid'); if (!playlistId) { - var oldIndex = evt.oldIndex; - el.dispatchEvent(new CustomEvent('itemdrop', { detail: { oldIndex: oldIndex, @@ -107,27 +97,18 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', loading.show(); apiClient.ajax({ - url: apiClient.getUrl('Playlists/' + playlistId + '/Items/' + itemId + '/Move/' + newIndex), - type: 'POST' - }).then(function () { - loading.hide(); - }, function () { - loading.hide(); - itemsContainer.refreshItems(); }); } - ItemsContainerProtoType.enableDragReordering = function (enabled) { - + ItemsContainerPrototype.enableDragReordering = function (enabled) { var current = this.sortable; - if (!enabled) { if (current) { current.destroy(); @@ -142,15 +123,12 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', var self = this; require(['sortable'], function (Sortable) { - self.sortable = new Sortable(self, { - draggable: ".listItem", handle: '.listViewDragHandle', // dragging ended - onEnd: function (/**Event*/evt) { - + onEnd: function (evt) { return onDrop(evt, self); } }); @@ -169,17 +147,13 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', // TODO: Check user data change reason? if (eventsToMonitor.indexOf('markfavorite') !== -1) { - itemsContainer.notifyRefreshNeeded(); - } - else if (eventsToMonitor.indexOf('markplayed') !== -1) { - + } else if (eventsToMonitor.indexOf('markplayed') !== -1) { itemsContainer.notifyRefreshNeeded(); } } function getEventsToMonitor(itemsContainer) { - var monitor = itemsContainer.getAttribute('data-monitor'); if (monitor) { return monitor.split(','); @@ -193,7 +167,6 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', var itemsContainer = this; if (getEventsToMonitor(itemsContainer).indexOf('timers') !== -1) { - itemsContainer.notifyRefreshNeeded(); return; } @@ -208,10 +181,8 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } function onSeriesTimerCreated(e, apiClient, data) { - var itemsContainer = this; if (getEventsToMonitor(itemsContainer).indexOf('seriestimers') !== -1) { - itemsContainer.notifyRefreshNeeded(); return; } @@ -219,42 +190,33 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', function onTimerCancelled(e, apiClient, data) { var itemsContainer = this; - if (getEventsToMonitor(itemsContainer).indexOf('timers') !== -1) { - itemsContainer.notifyRefreshNeeded(); return; } - var id = data.Id; - require(['cardBuilder'], function (cardBuilder) { - cardBuilder.onTimerCancelled(id, itemsContainer); + cardBuilder.onTimerCancelled(data.Id, itemsContainer); }); } function onSeriesTimerCancelled(e, apiClient, data) { - var itemsContainer = this; if (getEventsToMonitor(itemsContainer).indexOf('seriestimers') !== -1) { - itemsContainer.notifyRefreshNeeded(); return; } - var id = data.Id; - require(['cardBuilder'], function (cardBuilder) { - cardBuilder.onSeriesTimerCancelled(id, itemsContainer); + cardBuilder.onSeriesTimerCancelled(data.Id, itemsContainer); }); } function onLibraryChanged(e, apiClient, data) { - var itemsContainer = this; + var eventsToMonitor = getEventsToMonitor(itemsContainer); if (eventsToMonitor.indexOf('seriestimers') !== -1 || eventsToMonitor.indexOf('timers') !== -1) { - // yes this is an assumption return; } @@ -280,25 +242,17 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } function onPlaybackStopped(e, stopInfo) { - var itemsContainer = this; - var state = stopInfo.state; var eventsToMonitor = getEventsToMonitor(itemsContainer); if (state.NowPlayingItem && state.NowPlayingItem.MediaType === 'Video') { - if (eventsToMonitor.indexOf('videoplayback') !== -1) { - itemsContainer.notifyRefreshNeeded(true); return; } - } - - else if (state.NowPlayingItem && state.NowPlayingItem.MediaType === 'Audio') { - + } else if (state.NowPlayingItem && state.NowPlayingItem.MediaType === 'Audio') { if (eventsToMonitor.indexOf('audioplayback') !== -1) { - itemsContainer.notifyRefreshNeeded(true); return; } @@ -306,7 +260,6 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } function addNotificationEvent(instance, name, handler, owner) { - var localHandler = handler.bind(instance); owner = owner || serverNotifications; events.on(owner, name, localHandler); @@ -314,7 +267,6 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } function removeNotificationEvent(instance, name, owner) { - var handler = instance['event_' + name]; if (handler) { owner = owner || serverNotifications; @@ -323,13 +275,11 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } } - ItemsContainerProtoType.createdCallback = function () { - + ItemsContainerPrototype.createdCallback = function () { this.classList.add('itemsContainer'); }; - ItemsContainerProtoType.attachedCallback = function () { - + ItemsContainerPrototype.attachedCallback = function () { this.addEventListener('click', onClick); if (browser.touch) { @@ -365,8 +315,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } }; - ItemsContainerProtoType.detachedCallback = function () { - + ItemsContainerPrototype.detachedCallback = function () { clearRefreshInterval(this); this.enableMultiSelect(false); @@ -374,6 +323,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', this.removeEventListener('click', onClick); this.removeEventListener('contextmenu', onContextMenu); this.removeEventListener('contextmenu', disableEvent); + itemShortcuts.off(this, getShortcutOptions()); removeNotificationEvent(this, 'UserDataChanged'); @@ -389,15 +339,12 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', this.parentContainer = null; }; - ItemsContainerProtoType.pause = function () { - + ItemsContainerPrototype.pause = function () { clearRefreshInterval(this, true); - this.paused = true; }; - ItemsContainerProtoType.resume = function (options) { - + ItemsContainerPrototype.resume = function (options) { this.paused = false; var refreshIntervalEndTime = this.refreshIntervalEndTime; @@ -405,9 +352,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', var remainingMs = refreshIntervalEndTime - new Date().getTime(); if (remainingMs > 0 && !this.needsRefresh) { - resetRefreshInterval(this, remainingMs); - } else { this.needsRefresh = true; this.refreshIntervalEndTime = null; @@ -421,8 +366,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', return Promise.resolve(); }; - ItemsContainerProtoType.refreshItems = function () { - + ItemsContainerPrototype.refreshItems = function () { if (!this.fetchData) { return Promise.resolve(); } @@ -437,8 +381,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', return this.fetchData().then(onDataFetched.bind(this)); }; - ItemsContainerProtoType.notifyRefreshNeeded = function (isInForeground) { - + ItemsContainerPrototype.notifyRefreshNeeded = function (isInForeground) { if (this.paused) { this.needsRefresh = true; return; @@ -457,9 +400,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', }; function clearRefreshInterval(itemsContainer, isPausing) { - if (itemsContainer.refreshInterval) { - clearInterval(itemsContainer.refreshInterval); itemsContainer.refreshInterval = null; @@ -470,7 +411,6 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } function resetRefreshInterval(itemsContainer, intervalMs) { - clearRefreshInterval(itemsContainer); if (!intervalMs) { @@ -484,7 +424,6 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } function onDataFetched(result) { - var items = result.Items || result; var parentContainer = this.parentContainer; @@ -496,10 +435,6 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } } - // Scroll back up so they can see the results from the beginning - // TODO: Find scroller - //window.scrollTo(0, 0); - var activeElement = document.activeElement; var focusId; var hasActiveElement; @@ -528,12 +463,11 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', if (focusId) { var newElement = itemsContainer.querySelector('[data-id="' + focusId + '"]'); if (newElement) { - try { focusManager.focus(newElement); return; - } - catch (err) { + } catch (err) { + console.log(err); } } } @@ -542,7 +476,7 @@ define(['itemShortcuts', 'inputManager', 'connectionManager', 'playbackManager', } document.registerElement('emby-itemscontainer', { - prototype: ItemsContainerProtoType, + prototype: ItemsContainerPrototype, extends: 'div' }); }); \ No newline at end of file diff --git a/src/components/emby-scrollbuttons/emby-scrollbuttons.css b/src/components/emby-scrollbuttons/emby-scrollbuttons.css index 04b2ce68c6..168a6b3805 100644 --- a/src/components/emby-scrollbuttons/emby-scrollbuttons.css +++ b/src/components/emby-scrollbuttons/emby-scrollbuttons.css @@ -1,60 +1,11 @@ -.emby-scrollbuttons-scroller { - position: relative; -} - -.scrollbuttoncontainer { +.emby-scrollbuttons { position: absolute; - top: 10%; - bottom: 35%; + top: 0; + right: 0; align-items: center; justify-content: center; z-index: 1; - font-size: 3em; - color: #fff; - display: none; - overflow: hidden; -} - -.scrollbuttoncontainer-left { - background: rgba(20, 20, 20, .5); - background: -moz-linear-gradient(left,#000 0,rgba(0,0,0,0) 100%); - background: -webkit-linear-gradient(left,#000 0,rgba(0,0,0,0) 100%); - background: linear-gradient(to right,#000,rgba(0,0,0,0)); -} - -.scrollbuttoncontainer-right { - background: rgba(20, 20, 20, .5); - background: -moz-linear-gradient(right,#000 0,rgba(0,0,0,0) 100%); - background: -webkit-linear-gradient(right,#000 0,rgba(0,0,0,0) 100%); - background: linear-gradient(to left,#000,rgba(0,0,0,0)); -} - -.emby-scrollbuttons-scroller:hover .scrollbuttoncontainer { + color: #ffffff; display: flex; -} - -.scrollbuttoncontainer-left { - left: 0; -} - -.scrollbuttoncontainer-right { - right: 0; -} - -.emby-scrollbuttons-scrollbutton { - margin: 0 -.2em; - transition: transform 160ms ease-out; -} - -.scrollbuttoncontainer:hover > .emby-scrollbuttons-scrollbutton { - transform: scale(1.3, 1.3); -} - -.emby-scrollbuttons-scrollbutton:after { - content: ''; - display: none !important; -} - -.emby-scrollbuttons-scrollbutton:focus { - color: inherit !important; -} + overflow: hidden; +} \ No newline at end of file diff --git a/src/components/emby-scrollbuttons/emby-scrollbuttons.js b/src/components/emby-scrollbuttons/emby-scrollbuttons.js index c325ad9fd5..7be865098a 100644 --- a/src/components/emby-scrollbuttons/emby-scrollbuttons.js +++ b/src/components/emby-scrollbuttons/emby-scrollbuttons.js @@ -3,30 +3,20 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' var EmbyScrollButtonsPrototype = Object.create(HTMLDivElement.prototype); - EmbyScrollButtonsPrototype.createdCallback = function () { - - }; - - function getScrollButtonContainerHtml(direction) { + EmbyScrollButtonsPrototype.createdCallback = function () {}; + function getScrollButtonHtml(direction) { var html = ''; - - var hide = direction === 'left' ? ' hide' : ''; - html += '
'; - var icon = direction === 'left' ? '' : ''; - html += ''; - html += '
'; - return html; } function getScrollPosition(parent) { - if (parent.getScrollPosition) { return parent.getScrollPosition(); } @@ -35,7 +25,6 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' } function getScrollWidth(parent) { - if (parent.getScrollSize) { return parent.getScrollSize(); } @@ -43,46 +32,45 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' return 0; } - function onScrolledToPosition(scrollButtons, pos, scrollWidth) { - - if (pos > 0) { - scrollButtons.scrollButtonsLeft.classList.remove('hide'); - } else { + function updateScrollButtons(scrollButtons, scrollSize, scrollPos, scrollWidth) { + // hack alert add twenty for rounding errors + if (scrollWidth <= scrollSize + 20) { scrollButtons.scrollButtonsLeft.classList.add('hide'); + scrollButtons.scrollButtonsRight.classList.add('hide'); } - if (scrollWidth > 0) { + if (scrollPos > 0) { + scrollButtons.scrollButtonsLeft.disabled = false; + } else { + scrollButtons.scrollButtonsLeft.disabled = true; + } - pos += scrollButtons.offsetWidth; - - if (pos >= scrollWidth) { - scrollButtons.scrollButtonsRight.classList.add('hide'); - } else { - scrollButtons.scrollButtonsRight.classList.remove('hide'); - } + var scrollPosEnd = scrollPos + scrollSize; + if (scrollWidth > 0 && scrollPosEnd >= scrollWidth) { + scrollButtons.scrollButtonsRight.disabled = true; + } else { + scrollButtons.scrollButtonsRight.disabled = false; } } function onScroll(e) { - var scrollButtons = this; var scroller = this.scroller; - var pos = getScrollPosition(scroller); + + var scrollSize = getScrollSize(scroller); + var scrollPos = getScrollPosition(scroller); var scrollWidth = getScrollWidth(scroller); - onScrolledToPosition(scrollButtons, pos, scrollWidth); + updateScrollButtons(scrollButtons, scrollSize, scrollPos, scrollWidth); } function getStyleValue(style, name) { - var value = style.getPropertyValue(name); - if (!value) { return 0; } value = value.replace('px', ''); - if (!value) { return 0; } @@ -96,18 +84,15 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' } function getScrollSize(elem) { - var scrollSize = elem.offsetWidth; - var style = window.getComputedStyle(elem, null); var paddingLeft = getStyleValue(style, 'padding-left'); - if (paddingLeft) { scrollSize -= paddingLeft; } - var paddingRight = getStyleValue(style, 'padding-right'); + var paddingRight = getStyleValue(style, 'padding-right'); if (paddingRight) { scrollSize -= paddingRight; } @@ -116,12 +101,11 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' style = window.getComputedStyle(slider, null); paddingLeft = getStyleValue(style, 'padding-left'); - if (paddingLeft) { scrollSize -= paddingLeft; } - paddingRight = getStyleValue(style, 'padding-right'); + paddingRight = getStyleValue(style, 'padding-right'); if (paddingRight) { scrollSize -= paddingRight; } @@ -130,58 +114,52 @@ define(['layoutManager', 'dom', 'css!./emby-scrollbuttons', 'registerElement', ' } function onScrollButtonClick(e) { - - var parent = dom.parentWithAttribute(this, 'is', 'emby-scroller'); + var scroller = this.parentNode.nextSibling; var direction = this.getAttribute('data-direction'); + var scrollSize = getScrollSize(scroller); + var scrollPos = getScrollPosition(scroller); + var scrollWidth = getScrollWidth(scroller); - var scrollSize = getScrollSize(parent); - - var pos = getScrollPosition(parent); var newPos; - if (direction === 'left') { - newPos = Math.max(0, pos - scrollSize); + newPos = Math.max(0, scrollPos - scrollSize); } else { - newPos = pos + scrollSize; + newPos = scrollPos + scrollSize; } - parent.scrollToPosition(newPos, false); + scroller.scrollToPosition(newPos, false); } EmbyScrollButtonsPrototype.attachedCallback = function () { + var scroller = this.nextSibling; + var parent = this.parentNode; + this.scroller = scroller; - var parent = dom.parentWithAttribute(this, 'is', 'emby-scroller'); - this.scroller = parent; + parent.classList.add('emby-scroller-container'); - parent.classList.add('emby-scrollbuttons-scroller'); - - this.innerHTML = getScrollButtonContainerHtml('left') + getScrollButtonContainerHtml('right'); + this.innerHTML = getScrollButtonHtml('left') + getScrollButtonHtml('right'); var scrollHandler = onScroll.bind(this); this.scrollHandler = scrollHandler; - var buttons = this.querySelectorAll('.emby-scrollbuttons-scrollbutton'); + var buttons = this.querySelectorAll('.emby-scrollbuttons-button'); buttons[0].addEventListener('click', onScrollButtonClick); buttons[1].addEventListener('click', onScrollButtonClick); - - buttons = this.querySelectorAll('.scrollbuttoncontainer'); this.scrollButtonsLeft = buttons[0]; this.scrollButtonsRight = buttons[1]; - parent.addScrollEventListener(scrollHandler, { + scroller.addScrollEventListener(scrollHandler, { capture: false, passive: true }); }; EmbyScrollButtonsPrototype.detachedCallback = function () { - var parent = this.scroller; this.scroller = null; var scrollHandler = this.scrollHandler; - if (parent && scrollHandler) { parent.removeScrollEventListener(scrollHandler, { capture: false, diff --git a/src/components/emby-scroller/emby-scroller.css b/src/components/emby-scroller/emby-scroller.css new file mode 100644 index 0000000000..f060882f7b --- /dev/null +++ b/src/components/emby-scroller/emby-scroller.css @@ -0,0 +1,17 @@ +.emby-scroller-container { + position: relative; +} + +.emby-scroller { + margin-left: 3.3%; + margin-right: 3.3%; +} + +@media all and (max-width:50em) { + .emby-scroller { + padding-left: 3.3%; + padding-right: 3.3%; + margin-left: 0; + margin-right: 0; + } +} \ No newline at end of file diff --git a/src/components/emby-scroller/emby-scroller.js b/src/components/emby-scroller/emby-scroller.js index 7ef39eea0a..0b36483be3 100644 --- a/src/components/emby-scroller/emby-scroller.js +++ b/src/components/emby-scroller/emby-scroller.js @@ -1,101 +1,95 @@ -define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'browser', 'registerElement'], function (scroller, dom, layoutManager, inputManager, focusManager, browser) { +define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'browser', 'registerElement', 'css!./emby-scroller'], function (scroller, dom, layoutManager, inputManager, focusManager, browser) { 'use strict'; - var ScrollerProtoType = Object.create(HTMLDivElement.prototype); + var ScrollerPrototype = Object.create(HTMLDivElement.prototype); - ScrollerProtoType.createdCallback = function () { + ScrollerPrototype.createdCallback = function () { this.classList.add('emby-scroller'); }; function initCenterFocus(elem, scrollerInstance) { - dom.addEventListener(elem, 'focus', function (e) { - var focused = focusManager.focusableParent(e.target); - if (focused) { scrollerInstance.toCenter(focused); } - }, { capture: true, passive: true }); } - ScrollerProtoType.scrollToBeginning = function () { + ScrollerPrototype.scrollToBeginning = function () { if (this.scroller) { this.scroller.slideTo(0, true); } }; - ScrollerProtoType.toStart = function (elem, immediate) { + + ScrollerPrototype.toStart = function (elem, immediate) { if (this.scroller) { this.scroller.toStart(elem, immediate); } }; - ScrollerProtoType.toCenter = function (elem, immediate) { + + ScrollerPrototype.toCenter = function (elem, immediate) { if (this.scroller) { this.scroller.toCenter(elem, immediate); } }; - ScrollerProtoType.scrollToPosition = function (pos, immediate) { + ScrollerPrototype.scrollToPosition = function (pos, immediate) { if (this.scroller) { this.scroller.slideTo(pos, immediate); } }; - ScrollerProtoType.getScrollPosition = function () { + ScrollerPrototype.getScrollPosition = function () { if (this.scroller) { return this.scroller.getScrollPosition(); } }; - ScrollerProtoType.getScrollSize = function () { + ScrollerPrototype.getScrollSize = function () { if (this.scroller) { return this.scroller.getScrollSize(); } }; - ScrollerProtoType.getScrollEventName = function () { + ScrollerPrototype.getScrollEventName = function () { if (this.scroller) { return this.scroller.getScrollEventName(); } }; - ScrollerProtoType.getScrollSlider = function () { + ScrollerPrototype.getScrollSlider = function () { if (this.scroller) { return this.scroller.getScrollSlider(); } }; - ScrollerProtoType.addScrollEventListener = function (fn, options) { + ScrollerPrototype.addScrollEventListener = function (fn, options) { if (this.scroller) { dom.addEventListener(this.scroller.getScrollFrame(), this.scroller.getScrollEventName(), fn, options); } }; - ScrollerProtoType.removeScrollEventListener = function (fn, options) { + ScrollerPrototype.removeScrollEventListener = function (fn, options) { if (this.scroller) { dom.removeEventListener(this.scroller.getScrollFrame(), this.scroller.getScrollEventName(), fn, options); } }; function onInputCommand(e) { - var cmd = e.detail.command; - if (cmd === 'end') { focusManager.focusLast(this, '.' + this.getAttribute('data-navcommands')); e.preventDefault(); e.stopPropagation(); - } - else if (cmd === 'pageup') { + } else if (cmd === 'pageup') { focusManager.moveFocus(e.target, this, '.' + this.getAttribute('data-navcommands'), -12); e.preventDefault(); e.stopPropagation(); - } - else if (cmd === 'pagedown') { + } else if (cmd === 'pagedown') { focusManager.moveFocus(e.target, this, '.' + this.getAttribute('data-navcommands'), 12); e.preventDefault(); e.stopPropagation(); @@ -104,18 +98,16 @@ define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'bro function initHeadroom(elem) { require(['headroom'], function (Headroom) { - var headroom = new Headroom([], { scroller: elem }); - + headroom.add(document.querySelector('.skinHeader')); elem.headroom = headroom; }); } - ScrollerProtoType.attachedCallback = function () { - + ScrollerPrototype.attachedCallback = function () { if (this.getAttribute('data-navcommands')) { inputManager.on(this, onInputCommand); } @@ -141,10 +133,8 @@ define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'bro slidee: slider, scrollBy: 200, speed: horizontal ? 270 : 240, - //immediateSpeed: pageOptions.immediateSpeed, elasticBounds: 1, dragHandle: 1, - scrollWidth: this.getAttribute('data-scrollsize') === 'auto' ? null : 5000000, autoImmediate: true, skipSlideToWhenVisible: this.getAttribute('data-skipfocuswhenvisible') === 'true', dispatchScrollEvent: enableScrollButtons || bindHeader || this.getAttribute('data-scrollevent') === 'true', @@ -152,7 +142,6 @@ define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'bro allowNativeSmoothScroll: this.getAttribute('data-allownativesmoothscroll') === 'true' && !enableScrollButtons, allowNativeScroll: !enableScrollButtons, forceHideScrollbars: enableScrollButtons, - // In edge, with the native scroll, the content jumps around when hovering over the buttons requireAnimation: enableScrollButtons && browser.edge }; @@ -160,6 +149,7 @@ define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'bro // If just inserted it might not have any height yet - yes this is a hack this.scroller = new scroller(scrollFrame, options); this.scroller.init(); + this.scroller.reload(); if (layoutManager.tv && this.getAttribute('data-centerfocus')) { initCenterFocus(this, this.scroller); @@ -175,30 +165,26 @@ define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'bro }; function loadScrollButtons(scroller) { - require(['emby-scrollbuttons'], function () { - scroller.insertAdjacentHTML('beforeend', '
'); + scroller.insertAdjacentHTML('beforebegin', '
'); }); } - ScrollerProtoType.pause = function () { - + ScrollerPrototype.pause = function () { var headroom = this.headroom; if (headroom) { headroom.pause(); } }; - ScrollerProtoType.resume = function () { - + ScrollerPrototype.resume = function () { var headroom = this.headroom; if (headroom) { headroom.resume(); } }; - ScrollerProtoType.detachedCallback = function () { - + ScrollerPrototype.detachedCallback = function () { if (this.getAttribute('data-navcommands')) { inputManager.off(this, onInputCommand); } @@ -217,7 +203,7 @@ define(['scroller', 'dom', 'layoutManager', 'inputManager', 'focusManager', 'bro }; document.registerElement('emby-scroller', { - prototype: ScrollerProtoType, + prototype: ScrollerPrototype, extends: 'div' }); }); \ No newline at end of file diff --git a/src/components/emby-select/emby-select.js b/src/components/emby-select/emby-select.js index 80e34677f7..3cf4d6774d 100644 --- a/src/components/emby-select/emby-select.js +++ b/src/components/emby-select/emby-select.js @@ -116,13 +116,7 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe inputId++; } - if (!browser.firefox) { - this.classList.add('emby-select-withcolor'); - - if (layoutManager.tv) { - this.classList.add('emby-select-tv-withcolor'); - } - } + this.classList.add('emby-select-withcolor'); if (layoutManager.tv) { this.classList.add('emby-select-focusscale'); @@ -165,4 +159,4 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe prototype: EmbySelectPrototype, extends: 'select' }); -}); \ No newline at end of file +}); diff --git a/src/components/emby-slider/emby-slider.css b/src/components/emby-slider/emby-slider.css index 101058ca26..b27190e487 100644 --- a/src/components/emby-slider/emby-slider.css +++ b/src/components/emby-slider/emby-slider.css @@ -27,10 +27,6 @@ _:-ms-input-placeholder { /* Disable webkit tap highlighting */ -webkit-tap-highlight-color: rgba(0,0,0,0); display: block; - /**************************** Tracks ****************************/ - /**************************** Thumbs ****************************/ - /**************************** 0-value ****************************/ - /**************************** Disabled ****************************/ } .mdl-slider::-moz-focus-outer { diff --git a/src/components/focusManager.js b/src/components/focusManager.js index 5977dc0715..8c2f0ad442 100644 --- a/src/components/focusManager.js +++ b/src/components/focusManager.js @@ -40,7 +40,7 @@ define(['dom'], function (dom) { try { element.focus({ - preventScroll: true + preventScroll: false }); } catch (err) { console.log('Error in focusManager.autoFocus: ' + err); @@ -548,4 +548,4 @@ define(['dom'], function (dom) { focusLast: focusLast, moveFocus: moveFocus }; -}); \ No newline at end of file +}); diff --git a/src/components/guide/tvguide.template.html b/src/components/guide/tvguide.template.html index c5f76696c5..8778fcd3f7 100644 --- a/src/components/guide/tvguide.template.html +++ b/src/components/guide/tvguide.template.html @@ -18,7 +18,6 @@
-
diff --git a/src/components/homesections/homesections.css b/src/components/homesections/homesections.css index 647a9500d4..45df67c482 100644 --- a/src/components/homesections/homesections.css +++ b/src/components/homesections/homesections.css @@ -8,4 +8,18 @@ .homeLibraryButton { width: 46% !important; } -} \ No newline at end of file +} + +.homeLibraryIcon { + margin-left: .5em; + margin-right: .5em; + -webkit-flex-shrink: 0; + flex-shrink: 0 +} + +.homeLibraryText { + white-space: nowrap; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden +} diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 2f4f51e398..cf1456a12a 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -1,10 +1,8 @@ -define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'layoutManager', 'imageLoader', 'globalize', 'itemShortcuts', 'itemHelper', 'appRouter', 'paper-icon-button-light', 'emby-itemscontainer', 'emby-scroller', 'emby-button', 'css!./homesections'], function (connectionManager, cardBuilder, appSettings, dom, appHost, layoutManager, imageLoader, globalize, itemShortcuts, itemHelper, appRouter) { +define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'layoutManager', 'imageLoader', 'globalize', 'itemShortcuts', 'itemHelper', 'appRouter', 'scripts/imagehelper','paper-icon-button-light', 'emby-itemscontainer', 'emby-scroller', 'emby-button', 'css!./homesections'], function (connectionManager, cardBuilder, appSettings, dom, appHost, layoutManager, imageLoader, globalize, itemShortcuts, itemHelper, appRouter, imageHelper) { 'use strict'; function getDefaultSection(index) { - switch (index) { - case 0: return 'smalllibrarytiles'; case 1: @@ -25,13 +23,9 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getAllSectionsToShow(userSettings, sectionCount) { - var sections = []; - for (var i = 0, length = sectionCount; i < length; i++) { - var section = userSettings.get('homesection' + i) || getDefaultSection(i); - if (section === 'folders') { section = getDefaultSection(0); } @@ -43,15 +37,11 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function loadSections(elem, apiClient, user, userSettings) { - return getUserViews(apiClient, user.Id).then(function (userViews) { - - var i, length; - var sectionCount = 7; - var html = ''; - for (i = 0, length = sectionCount; i < length; i++) { + var sectionCount = 7; + for (var i = 0; i < sectionCount; i++) { html += '
'; } @@ -60,14 +50,11 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la var promises = []; var sections = getAllSectionsToShow(userSettings, sectionCount); - - for (i = 0, length = sections.length; i < length; i++) { - + for (var i = 0; i < sections.length; i++) { promises.push(loadSection(elem, apiClient, user, userSettings, userViews, sections, i)); } return Promise.all(promises).then(function () { - return resume(elem, { refresh: true, returnPromise: false @@ -77,12 +64,8 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function destroySections(elem) { - var elems = elem.querySelectorAll('.itemsContainer'); - var i, length; - - for (i = 0, length = elems.length; i < length; i++) { - + for (var i = 0; i < elems.length; i++) { elems[i].fetchData = null; elems[i].parentContainer = null; elems[i].getItemsHtml = null; @@ -92,17 +75,13 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function pause(elem) { - var elems = elem.querySelectorAll('.itemsContainer'); - var i, length; - for (i = 0, length = elems.length; i < length; i++) { - + for (var i = 0; i < elems.length; i++) { elems[i].pause(); } } function resume(elem, options) { - var elems = elem.querySelectorAll('.itemsContainer'); var i, length; var promises = []; @@ -112,7 +91,6 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } var promise = Promise.all(promises); - if (!options || options.returnPromise !== false) { return promise; } @@ -127,41 +105,29 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la if (section === 'latestmedia') { loadRecentlyAdded(elem, apiClient, user, userViews); - } - else if (section === 'librarytiles' || section === 'smalllibrarytiles' || section === 'smalllibrarytiles-automobile' || section === 'librarytiles-automobile') { + } else if (section === 'librarytiles' || section === 'smalllibrarytiles' || section === 'smalllibrarytiles-automobile' || section === 'librarytiles-automobile') { loadLibraryTiles(elem, apiClient, user, userSettings, 'smallBackdrop', userViews, allSections); - } - else if (section === 'librarybuttons') { + } else if (section === 'librarybuttons') { loadlibraryButtons(elem, apiClient, user, userSettings, userViews, allSections); - } - else if (section === 'resume') { + } else if (section === 'resume') { loadResumeVideo(elem, apiClient, userId); - } - else if (section === 'resumeaudio') { + } else if (section === 'resumeaudio') { loadResumeAudio(elem, apiClient, userId); - } - else if (section === 'activerecordings') { + } else if (section === 'activerecordings') { loadLatestLiveTvRecordings(elem, true, apiClient, userId); - } - else if (section === 'nextup') { + } else if (section === 'nextup') { loadNextUp(elem, apiClient, userId); - } - else if (section === 'onnow' || section === 'livetv') { + } else if (section === 'onnow' || section === 'livetv') { return loadOnNow(elem, apiClient, user); - } - else { - + } else { elem.innerHTML = ''; - return Promise.resolve(); } return Promise.resolve(); } function getUserViews(apiClient, userId) { - return apiClient.getUserViews({}, userId || apiClient.getCurrentUserId()).then(function (result) { - return result.Items; }); } @@ -186,56 +152,15 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la var html = ""; html += '
'; - html += '
'; html += '

' + globalize.translate('HeaderMyMedia') + '

'; - html += '
'; html += '
'; - // "My Library" backgrounds + // library card background images for (var i = 0, length = items.length; i < length; i++) { var item = items[i]; - var icon; - switch (item.CollectionType) { - case "movies": - icon = "local_movies"; - break; - case "music": - icon = "library_music"; - break; - case "photos": - icon = "photo"; - break; - case "livetv": - icon = "live_tv"; - break; - case "tvshows": - icon = "live_tv"; - break; - case "trailers": - icon = "local_movies"; - break; - case "homevideos": - icon = "video_library"; - break; - case "musicvideos": - icon = "video_library"; - break; - case "books": - icon = "folder"; - break; - case "channels": - icon = "folder"; - break; - case "playlists": - icon = "folder"; - break; - default: - icon = "folder"; - break; - } - - html += '' + icon + '' + item.Name + ''; + var icon = imageHelper.getLibraryIcon(item.CollectionType); + html += '' + icon + '' + item.Name + ''; } html += '
'; @@ -261,21 +186,15 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getFetchLatestItemsFn(serverId, parentId, collectionType) { - return function () { - var apiClient = connectionManager.getApiClient(serverId); - var limit = 16; if (enableScrollX()) { - if (collectionType === 'music') { limit = 30; } - } - else { - + } else { if (collectionType === 'tvshows') { limit = 5; } else if (collectionType === 'music') { @@ -286,7 +205,6 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } var options = { - Limit: limit, Fields: "PrimaryImageAspectRatio,BasicSyncInfo", ImageTypeLimit: 1, @@ -299,9 +217,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getLatestItemsHtmlFn(itemType, viewType) { - return function (items) { - var shape = itemType === 'Channel' || viewType === 'movies' ? getPortraitShape() : viewType === 'music' ? @@ -331,31 +247,28 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function renderLatestSection(elem, apiClient, user, parent) { - var html = ''; + html += '
'; if (!layoutManager.tv) { - html += ''; html += '

'; html += globalize.translate('LatestFromLibrary', parent.Name); html += '

'; html += ''; html += '
'; - } else { html += '

' + globalize.translate('LatestFromLibrary', parent.Name) + '

'; } html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } if (enableScrollX()) { @@ -369,19 +282,14 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la itemsContainer.fetchData = getFetchLatestItemsFn(apiClient.serverId(), parent.Id, parent.CollectionType); itemsContainer.getItemsHtml = getLatestItemsHtmlFn(parent.Type, parent.CollectionType); itemsContainer.parentContainer = elem; - } function loadRecentlyAdded(elem, apiClient, user, userViews) { - elem.classList.remove('verticalSection'); - var excludeViewTypes = ['playlists', 'livetv', 'boxsets', 'channels']; for (var i = 0, length = userViews.length; i < length; i++) { - var item = userViews[i]; - if (user.Configuration.LatestItemsExcludes.indexOf(item.Id) !== -1) { continue; } @@ -406,43 +314,31 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function loadLibraryTiles(elem, apiClient, user, userSettings, shape, userViews, allSections) { - - elem.classList.remove('verticalSection'); - var html = ''; - - var scrollX = !layoutManager.desktop; - if (userViews.length) { - - html += '
'; - - html += '
'; html += '

' + globalize.translate('HeaderMyMedia') + '

'; - html += '
'; - - if (scrollX) { - html += '
'; + if (enableScrollX()) { + html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += cardBuilder.getCardsHtml({ items: userViews, - shape: scrollX ? 'overflowSmallBackdrop' : shape, + shape: enableScrollX() ? 'overflowSmallBackdrop' : shape, showTitle: true, centerText: true, overlayText: false, lazy: true, transition: false, - allowBottomPadding: !scrollX + allowBottomPadding: !enableScrollX() }); - if (scrollX) { + if (enableScrollX()) { html += '
'; } html += '
'; - html += '
'; } elem.innerHTML = html; @@ -450,27 +346,19 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getContinueWatchingFetchFn(serverId) { - return function () { - var apiClient = connectionManager.getApiClient(serverId); - var screenWidth = dom.getWindowSize().innerWidth; var limit; - if (enableScrollX()) { - limit = 12; - } else { - limit = screenWidth >= 1920 ? 8 : (screenWidth >= 1600 ? 8 : (screenWidth >= 1200 ? 9 : 6)); limit = Math.min(limit, 5); } var options = { - Limit: limit, Recursive: true, Fields: "PrimaryImageAspectRatio,BasicSyncInfo", @@ -485,9 +373,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getContinueWatchingItemsHtml(items) { - var cardLayout = false; - return cardBuilder.getCardsHtml({ items: items, preferThumb: true, @@ -508,12 +394,12 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function loadResumeVideo(elem, apiClient, userId) { - var html = ''; - html += '

' + globalize.translate('HeaderContinueWatching') + '

'; + html += '

' + globalize.translate('HeaderContinueWatching') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; + html += '
'; } else { html += '
'; } @@ -533,27 +419,19 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getContinueListeningFetchFn(serverId) { - return function () { - var apiClient = connectionManager.getApiClient(serverId); - var screenWidth = dom.getWindowSize().innerWidth; var limit; - if (enableScrollX()) { - limit = 12; - } else { - limit = screenWidth >= 1920 ? 8 : (screenWidth >= 1600 ? 8 : (screenWidth >= 1200 ? 9 : 6)); limit = Math.min(limit, 5); } var options = { - Limit: limit, Recursive: true, Fields: "PrimaryImageAspectRatio,BasicSyncInfo", @@ -568,9 +446,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getContinueListeningItemsHtml(items) { - var cardLayout = false; - return cardBuilder.getCardsHtml({ items: items, preferThumb: true, @@ -591,12 +467,12 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function loadResumeAudio(elem, apiClient, userId) { - var html = ''; - html += '

' + globalize.translate('HeaderContinueWatching') + '

'; + html += '

' + globalize.translate('HeaderContinueWatching') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; + html += '
'; } else { html += '
'; } @@ -659,7 +535,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } var userId = user.Id; - apiClient.getLiveTvRecommendedPrograms({ + return apiClient.getLiveTvRecommendedPrograms({ userId: apiClient.getCurrentUserId(), IsAiring: true, limit: 1, @@ -682,13 +558,14 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la if (enableScrollX()) { html += '
'; - html += '
'; + html += '
'; } else { - html += '
'; + html += ''; if (enableScrollX()) { html += '
'; @@ -732,9 +614,10 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; + html += '
' } else { - html += '
'; + html += '
'; } if (enableScrollX()) { @@ -755,13 +638,9 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getNextUpFetchFn(serverId) { - return function () { - var apiClient = connectionManager.getApiClient(serverId); - return apiClient.getNextUpEpisodes({ - Limit: enableScrollX() ? 24 : 15, Fields: "PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo", UserId: apiClient.getCurrentUserId(), @@ -773,9 +652,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getNextUpItemsHtml(items) { - var cardLayout = false; - return cardBuilder.getCardsHtml({ items: items, preferThumb: true, @@ -793,29 +670,26 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function loadNextUp(elem, apiClient, userId) { - var html = ''; + html += '
'; if (!layoutManager.tv) { - html += ''; html += '

'; html += globalize.translate('HeaderNextUp'); html += '

'; html += ''; html += '
'; - } else { html += '

' + globalize.translate('HeaderNextUp') + '

'; } html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; + html += '
' } else { html += '
'; } @@ -823,7 +697,6 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la if (enableScrollX()) { html += '
'; } - html += '
'; elem.classList.add('hide'); @@ -836,29 +709,22 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function getLatestRecordingsFetchFn(serverId, activeRecordingsOnly) { - return function () { - var apiClient = connectionManager.getApiClient(serverId); - return apiClient.getLiveTvRecordings({ - userId: apiClient.getCurrentUserId(), Limit: enableScrollX() ? 12 : 5, Fields: "PrimaryImageAspectRatio,BasicSyncInfo", EnableTotalRecordCount: false, IsLibraryItem: activeRecordingsOnly ? null : false, IsInProgress: activeRecordingsOnly ? true : null - }); }; } function getLatestRecordingItemsHtml(activeRecordingsOnly) { - return function (items) { var cardLayout = false; - return cardBuilder.getCardsHtml({ items: items, shape: enableScrollX() ? 'autooverflow' : 'auto', @@ -883,7 +749,6 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } function loadLatestLiveTvRecordings(elem, activeRecordingsOnly, apiClient, userId) { - var title = activeRecordingsOnly ? globalize.translate('HeaderActiveRecordings') : globalize.translate('HeaderLatestRecordings'); @@ -892,16 +757,11 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la html += '
'; html += '

' + title + '

'; - if (!layoutManager.tv) { - //html += ''; - //html += ''; - } html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; + html += '
' } else { html += '
'; } @@ -909,7 +769,6 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la if (enableScrollX()) { html += '
'; } - html += '
'; elem.classList.add('hide'); diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 7d5fcaeda6..d44980191a 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -714,12 +714,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; self.stop = function (destroyPlayer) { - var elem = self._mediaElement; var src = self._currentSrc; if (elem) { - if (src) { elem.pause(); } @@ -737,7 +735,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; self.destroy = function () { - htmlMediaHelper.destroyHlsPlayer(self); htmlMediaHelper.destroyFlvPlayer(self); @@ -746,11 +743,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var videoElement = self._mediaElement; if (videoElement) { - self._mediaElement = null; destroyCustomTrack(videoElement); - videoElement.removeEventListener('timeupdate', onTimeUpdate); videoElement.removeEventListener('ended', onEnded); videoElement.removeEventListener('volumechange', onVolumeChange); @@ -765,9 +760,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var dlg = videoDialog; if (dlg) { - videoDialog = null; - dlg.parentNode.removeChild(dlg); } @@ -781,8 +774,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function onTimeUpdate(e) { - - // Get the player position + the transcoding offset + // get the player position and the transcoding offset var time = this.currentTime; if (time && !self._timeUpdated) { @@ -804,13 +796,11 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function onVolumeChange() { - htmlMediaHelper.saveVolume(this.volume); events.trigger(self, 'volumechange'); } function onNavigatedToOsd() { - var dlg = videoDialog; if (dlg) { dlg.classList.remove('videoPlayerContainer-withBackdrop'); @@ -819,8 +809,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa onStartedAndNavigatedToOsd(); } } - function onStartedAndNavigatedToOsd() { + function onStartedAndNavigatedToOsd() { // If this causes a failure during navigation we end up in an awkward UI state setCurrentTrackElement(subtitleTrackIndexToSetOnPlaying); @@ -830,7 +820,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function onPlaying(e) { - if (!self._started) { self._started = true; this.removeAttribute('controls'); @@ -855,7 +844,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function onPlay(e) { - events.trigger(self, 'unpause'); } @@ -865,7 +853,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } if (elem.videoWidth === 0 && elem.videoHeight === 0) { - var mediaSource = (self._currentPlayOptions || {}).mediaSource; // Only trigger this if there is media info @@ -875,10 +862,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return; } } - - //if (elem.audioTracks && !elem.audioTracks.length) { - // htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror'); - //} } function onClick() { @@ -894,7 +877,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function onError() { - var errorCode = this.error ? (this.error.code || 0) : 0; var errorMessage = this.error ? (this.error.message || '') : ''; console.log('Media element error: ' + errorCode.toString() + ' ' + errorMessage); @@ -933,7 +915,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function destroyCustomTrack(videoElement) { - if (self._resizeObserver) { self._resizeObserver.disconnect(); self._resizeObserver = null; @@ -975,18 +956,14 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa self.destroyCustomTrack = destroyCustomTrack; function fetchSubtitlesUwp(track, item) { - return Windows.Storage.StorageFile.getFileFromPathAsync(track.Path).then(function (storageFile) { - return Windows.Storage.FileIO.readTextAsync(storageFile).then(function (text) { return JSON.parse(text); }); }); - } function fetchSubtitles(track, item) { - if (window.Windows && itemHelper.isLocalItem(item)) { return fetchSubtitlesUwp(track, item); } @@ -1016,7 +993,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return; } - // if already playing thids track, skip + // skip if already playing this track if (customTrackIndex === track.Index) { return; } @@ -1077,10 +1054,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function onVideoResize() { - if (browser.iOS) { - - // with wkwebview, the new sizes will be delayed for about 500ms + // the new sizes will be delayed for about 500ms with wkwebview setTimeout(resetVideoRendererSize, 500); } else { resetVideoRendererSize(); @@ -1127,7 +1102,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function renderSubtitlesWithCustomElement(videoElement, track, item) { - fetchSubtitles(track, item).then(function (data) { if (!videoSubtitlesElem) { var subtitlesContainer = document.createElement('div'); @@ -1142,14 +1116,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } function setSubtitleAppearance(elem, innerElem) { - require(['userSettings', 'subtitleAppearanceHelper'], function (userSettings, subtitleAppearanceHelper) { - subtitleAppearanceHelper.applyStyles({ - text: innerElem, window: elem - }, userSettings.getSubtitleAppearanceSettings()); }); } @@ -1206,7 +1176,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var trackElement = null; var expectedId = 'manualTrack' + track.Index; - var allTracks = videoElement.textTracks; // get list of tracks + // get list of tracks + var allTracks = videoElement.textTracks; for (var i = 0; i < allTracks.length; i++) { var currentTrack = allTracks[i]; @@ -1379,9 +1350,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var tracks = self._mediaElement.querySelectorAll('track'); for (i = 0; i < tracks.length; i++) { - track = tracks[i]; - track.src = replaceQueryString(track.src, 'startPositionTicks', startPositionTicks); } } @@ -1478,9 +1447,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }); } else { - if (options.backdropUrl) { - dlg.classList.add('videoPlayerContainer-withBackdrop'); dlg.style.backgroundImage = "url('" + options.backdropUrl + "')"; } @@ -1492,12 +1459,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } HtmlVideoPlayer.prototype.canPlayMediaType = function (mediaType) { - return (mediaType || '').toLowerCase() === 'video'; }; HtmlVideoPlayer.prototype.supportsPlayMethod = function (playMethod, item) { - if (appHost.supportsPlayMethod) { return appHost.supportsPlayMethod(playMethod, item); } @@ -1506,7 +1471,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; HtmlVideoPlayer.prototype.getDeviceProfile = function (item, options) { - var instance = this; return getDeviceProfileInternal(item, options).then(function (profile) { instance._lastProfile = profile; @@ -1523,6 +1487,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } var supportedFeatures; + function getSupportedFeatures() { var list = []; @@ -1530,9 +1495,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var video = document.createElement('video'); if (video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function" || document.pictureInPictureEnabled) { list.push('PictureInPicture'); - } - else if (browser.ipad) { - + } else if (browser.ipad) { // Unfortunately this creates a false positive on devices where its' not actually supported if (navigator.userAgent.toLowerCase().indexOf('os 9') === -1) { if (video.webkitSupportsPresentationMode && video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") { @@ -1540,7 +1503,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } } } else if (window.Windows) { - if (Windows.UI.ViewManagement.ApplicationView.getForCurrentView().isViewModeSupported(Windows.UI.ViewManagement.ApplicationViewMode.compactOverlay)) { list.push('PictureInPicture'); } @@ -1552,7 +1514,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } HtmlVideoPlayer.prototype.supports = function (feature) { - if (!supportedFeatures) { supportedFeatures = getSupportedFeatures(); } @@ -1593,7 +1554,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; HtmlVideoPlayer.prototype.canSetAudioStreamIndex = function (index) { - if (browser.tizen || browser.orsay) { return true; } @@ -1624,8 +1584,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa document.exitPictureInPicture().catch(onPictureInPictureError); } } - } - else if (window.Windows) { + } else if (window.Windows) { this.isPip = isEnabled; if (isEnabled) { @@ -1634,12 +1593,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa else { Windows.UI.ViewManagement.ApplicationView.getForCurrentView().tryEnterViewModeAsync(Windows.UI.ViewManagement.ApplicationViewMode.default); } - } - else { - if (video) { - if (video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") { - video.webkitSetPresentationMode(isEnabled ? "picture-in-picture" : "inline"); - } + } else { + if (video && video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === "function") { + video.webkitSetPresentationMode(isEnabled ? "picture-in-picture" : "inline"); } } }; @@ -1648,11 +1604,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (document.pictureInPictureEnabled) { return document.pictureInPictureElement ? true : false; - } - else if (window.Windows) { + } else if (window.Windows) { return this.isPip || false; - } - else { + } else { var video = this._mediaElement; if (video) { return video.webkitPresentationMode === "picture-in-picture"; @@ -1667,7 +1621,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa var elem = this._mediaElement; if (elem) { - val = Math.max(0, val); val = Math.min(100, val); @@ -1683,9 +1636,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; HtmlVideoPlayer.prototype.getBrightness = function () { - var elem = this._mediaElement; - if (elem) { var val = elem.brightnessValue; return val == null ? 100 : val; @@ -1758,7 +1709,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa HtmlVideoPlayer.prototype.getVolume = function () { var mediaElement = this._mediaElement; if (mediaElement) { - return Math.min(Math.round(mediaElement.volume * 100), 100); } }; @@ -1772,7 +1722,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; HtmlVideoPlayer.prototype.setMute = function (mute) { - var mediaElement = this._mediaElement; if (mediaElement) { mediaElement.muted = mute; @@ -1792,12 +1741,10 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa }; HtmlVideoPlayer.prototype.getAspectRatio = function () { - return this._currentAspectRatio; }; HtmlVideoPlayer.prototype.getSupportedAspectRatios = function () { - return []; }; @@ -1808,7 +1755,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa HtmlVideoPlayer.prototype.getBufferedRanges = function () { var mediaElement = this._mediaElement; if (mediaElement) { - return htmlMediaHelper.getBufferedRanges(this, mediaElement); } diff --git a/src/components/imagedownloader/imagedownloader.template.html b/src/components/imagedownloader/imagedownloader.template.html index 831e882ed9..2adc573de6 100644 --- a/src/components/imagedownloader/imagedownloader.template.html +++ b/src/components/imagedownloader/imagedownloader.template.html @@ -10,27 +10,29 @@
- - +
+ +
- - +
+ +
-
\ No newline at end of file +
diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js new file mode 100644 index 0000000000..bc95e1cd3c --- /dev/null +++ b/src/components/keyboardnavigation.js @@ -0,0 +1,36 @@ +define(['inputmanager', 'focusManager'], function(inputmanager, focusManager) { + 'use strict'; + + console.log("keyboardnavigation"); + + function enable() { + document.addEventListener('keydown', function(e) { + var capture = true; + + switch (e.keyCode) { + case 37: // ArrowLeft + inputmanager.handle('left'); + break; + case 38: // ArrowUp + inputmanager.handle('up'); + break; + case 39: // ArrowRight + inputmanager.handle('right'); + break; + case 40: // ArrowDown + inputmanager.handle('down'); + break; + default: + capture = false; + } + if (capture) { + console.log("Disabling default event handling"); + e.preventDefault(); + } + }); + + } + return { + enable: enable, + }; +}); diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js index 382b82d0ed..304eec7e08 100644 --- a/src/components/notifications/notifications.js +++ b/src/components/notifications/notifications.js @@ -160,9 +160,7 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir } function getIconUrl(name) { - name = name || 'notificationicon.png'; - return require.toUrl('.').split('?')[0] + '/' + name; } diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 5eb6011157..a82078c956 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -919,14 +919,10 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla events.trigger(self, 'pairing'); promise.then(function () { - events.trigger(self, 'paired'); - setCurrentPlayerInternal(player, targetInfo); }, function () { - events.trigger(self, 'pairerror'); - if (currentPairingId === targetInfo.id) { currentPairingId = null; } diff --git a/src/components/playback/playersettingsmenu.js b/src/components/playback/playersettingsmenu.js index 9d5b1f08ba..086f98c2d4 100644 --- a/src/components/playback/playersettingsmenu.js +++ b/src/components/playback/playersettingsmenu.js @@ -136,8 +136,7 @@ define(['connectionManager', 'actionsheet', 'datetime', 'playbackManager', 'glob } function showAspectRatioMenu(player, btn) { - - // Each has name/id + // each has a name and id var currentId = playbackManager.getAspectRatio(player); var menuItems = playbackManager.getSupportedAspectRatios(player).map(function (i) { return { @@ -148,12 +147,9 @@ define(['connectionManager', 'actionsheet', 'datetime', 'playbackManager', 'glob }); return actionsheet.show({ - items: menuItems, positionTo: btn - }).then(function (id) { - if (id) { playbackManager.setAspectRatio(id, player); return Promise.resolve(); @@ -164,15 +160,11 @@ define(['connectionManager', 'actionsheet', 'datetime', 'playbackManager', 'glob } function showWithUser(options, player, user) { - var supportedCommands = playbackManager.getSupportedCommands(player); - var mediaType = options.mediaType; var menuItems = []; - if (supportedCommands.indexOf('SetAspectRatio') !== -1) { - var currentAspectRatioId = playbackManager.getAspectRatio(player); var currentAspectRatio = playbackManager.getSupportedAspectRatios(player).filter(function (i) { return i.id === currentAspectRatioId; @@ -205,19 +197,18 @@ define(['connectionManager', 'actionsheet', 'datetime', 'playbackManager', 'glob }); } - if (options.stats) { + if (options.suboffset) { menuItems.push({ - name: globalize.translate('PlaybackData'), - id: 'stats', + name: globalize.translate('SubtitleOffset'), + id: 'suboffset', asideText: null }); } - if (options.suboffset) { - + if (options.stats) { menuItems.push({ - name: globalize.translate('SubtitleOffset'), - id: 'suboffset', + name: globalize.translate('PlaybackData'), + id: 'stats', asideText: null }); } @@ -272,4 +263,4 @@ define(['connectionManager', 'actionsheet', 'datetime', 'playbackManager', 'glob return { show: show }; -}); \ No newline at end of file +}); diff --git a/src/components/playbacksettings/playbacksettings.template.html b/src/components/playbacksettings/playbacksettings.template.html index 046c9da5d1..06cfe3f3d6 100644 --- a/src/components/playbacksettings/playbacksettings.template.html +++ b/src/components/playbacksettings/playbacksettings.template.html @@ -12,7 +12,7 @@ ${LabelPlayDefaultAudioTrack}
- +

@@ -41,7 +41,7 @@

- ${Advanced} + ${TabAdvanced}

-
@@ -13,7 +12,7 @@

${Movies}

-
+
@@ -21,7 +20,7 @@

${Shows}

-
+
@@ -29,7 +28,7 @@

${Episodes}

-
+
@@ -37,7 +36,7 @@

${Sports}

-
+
@@ -45,7 +44,7 @@

${Kids}

-
+
@@ -53,7 +52,7 @@

${News}

-
+
@@ -61,7 +60,7 @@

${Programs}

-
+
@@ -69,7 +68,7 @@

${Videos}

-
+
@@ -77,7 +76,7 @@

${Playlists}

-
+
@@ -85,7 +84,7 @@

${Artists}

-
+
@@ -93,7 +92,7 @@

${Albums}

-
+
@@ -101,7 +100,7 @@

${Songs}

-
+
@@ -109,7 +108,7 @@

${HeaderPhotoAlbums}

-
+
@@ -117,7 +116,7 @@

${Photos}

-
+
@@ -125,7 +124,7 @@

${HeaderAudioBooks}

-
+
@@ -133,7 +132,7 @@

${Books}

-
+
@@ -141,6 +140,6 @@

${People}

-
+
\ No newline at end of file diff --git a/src/components/themes/dark/theme.css b/src/components/themes/dark/theme.css index 0c777940bb..da4c056023 100644 --- a/src/components/themes/dark/theme.css +++ b/src/components/themes/dark/theme.css @@ -22,11 +22,7 @@ html { .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; - background-color: rgba(0, 0, 0, .3); - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); - background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) + background-color: rgba(0, 0, 0, 0.4); } .pageTitleWithDefaultLogo { diff --git a/src/components/themes/emby/theme.css b/src/components/themes/emby/theme.css index ba8bc144ae..d948c3ae6f 100644 --- a/src/components/themes/emby/theme.css +++ b/src/components/themes/emby/theme.css @@ -22,11 +22,7 @@ html { .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; - background-color: rgba(0, 0, 0, .3); - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); - background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) + background-color: rgba(0, 0, 0, 0.4); } .pageTitleWithDefaultLogo { diff --git a/src/components/themes/light/theme.css b/src/components/themes/light/theme.css index 3fbab8dd22..65ceefb52c 100644 --- a/src/components/themes/light/theme.css +++ b/src/components/themes/light/theme.css @@ -35,11 +35,7 @@ html { .skinHeader.semiTransparent { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; - background-color: rgba(0, 0, 0, .3); - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))); - background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)); - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) + background-color: rgba(0, 0, 0, 0.4); } .pageTitleWithDefaultLogo { diff --git a/src/components/themes/purple-haze/theme.css b/src/components/themes/purple-haze/theme.css index edcf051fcf..843b573059 100644 --- a/src/components/themes/purple-haze/theme.css +++ b/src/components/themes/purple-haze/theme.css @@ -39,7 +39,7 @@ html { .dialog, html { - background-color: #0e0f2d + background-color: #230c33 } .backgroundContainer { @@ -59,13 +59,13 @@ html { } .paper-icon-button-light:hover { - color: #48C3C8; + color: rgb(12, 232, 214); background-color: rgba(0,164,220, .2); transition: 0.2s; } .paper-icon-button-light:focus { - color: #48C3C8; + color: #ff77f1; } progress { @@ -87,41 +87,100 @@ progress::-webkit-progress-value { .fab, .raised { background: rgba(0, 0, 0, .5); - color: rgba(255, 255, 255, .87) + color: rgba(255, 255, 255, .87); } .fab:focus, .raised:focus { - background: rgba(0, 0, 0, .7) + background: #ff77f1 } -.button-submit { - background: #48C3C8; - color: #f8f8fe +div[data-role=controlgroup] a.ui-btn-active { + background: #55828b !important; + color: #e1e5f2 !important } -.button-submit:hover { - background: #0ce8d6; - color: #f8f8fe +a[data-role=button] { + background: rgba(2, 43, 58, 0.521) !important; +} + +#btnDeleteImage, +.submit, +.btnBrowse, +.mini, +.btnRefresh, +.btnManual, +.button-submit, +.viewTabButton, +.button-alt, +.btnOption { + background: rgb(72, 195, 200); + color: rgb(225, 229, 242) +} + +#btnResetPassword:hover, +#btnRestart:hover, +#btnDeleteImage:hover, +#btnShutdown:hover, +.button-cancel:hover, +.fab:hover, +.raised:hover, +.alphaPickerButton:hover, +.submit:hover, +.btnBrowse:hover, +.mini:hover, +.btnRefresh:hover, +.button-submit:hover, +.viewTabButton:hover, +.button-alt:hover, +.btnOption:hover, +.btnManual:hover, +.block:hover { + background: rgb(12, 232, 214); + color: rgba(255, 255, 255, .87) +} + +.button-submit:focus { + background: #ff77f1 +} + +#btnResetPassword, +.btnForgotPassword, +.btnCancel, +.button-cancel { + background: rgba(0, 0, 0, .5); + color: rgba(255, 255, 255, .87); +} + +.itemName { + color: #f1f7ee +} + +.textareaLabel, +.sectionTitle, +.fieldDescription, +.checkboxLabel { + color: #f1f7ee } .checkboxLabel { color: inherit } +.selectLabel, +.checkboxLabel, .checkboxListLabel, .inputLabel, .inputLabelUnfocused, .paperListLabel, .textareaLabelUnfocused { - color: #bbb; - color: rgba(255, 255, 255, .7) + color: rgb(191, 219, 247); } .inputLabelFocused, .selectLabelFocused, .textareaLabelFocused { - color: #48C3C8 + color: #ff77f1 } .checkboxOutline { @@ -238,7 +297,7 @@ progress::-webkit-progress-value { } .alphaPickerButton-tv:focus { - background: #0ce8d6; + background: #ff77f1; color: #f8f8fe !important } @@ -285,7 +344,7 @@ progress::-webkit-progress-value { .emby-input:focus, .emby-textarea:focus { - border-color: #48C3C8 + border-color: #ff77f1 } .emby-select-withcolor { @@ -300,29 +359,33 @@ progress::-webkit-progress-value { } .emby-select-withcolor:focus { - border-color: #48C3C8 !important + border-color: #ff77f1 !important } .emby-select-tv-withcolor:focus { - background-color: #48C3C8 !important; + background-color: #ff77f1 !important; color: #fff !important } .emby-checkbox:checked+span+.checkboxOutline { - border-color: #48C3C8 + background-color: #030322; + border:2px solid rgb(72, 195, 200); } -.emby-checkbox:focus+span+.checkboxOutline { - border-color: #fff; +.emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-checked { + color: rgb(12, 232, 214); } .emby-checkbox:focus:not(:checked)+span+.checkboxOutline { - border-color: #48C3C8; + border:2px solid #ff77f1; +} + +.emby-checkbox:focus+span+.checkboxOutline { + border-color: #ff77f1; } -.emby-checkbox:checked+span+.checkboxOutline, .itemProgressBarForeground { - background-color: #48C3C8 + background-color: rgb(12, 232, 214); } .itemProgressBarForeground-recording { @@ -332,7 +395,7 @@ progress::-webkit-progress-value { .countIndicator, .fullSyncIndicator, .playedIndicator { - background: #48C3C8 + background: rgb(12, 232, 214); } .fullSyncIndicator { @@ -341,12 +404,11 @@ progress::-webkit-progress-value { .mainDrawer { color: #f8f8fe; - background: rgba(0, 0, 0, .5); + background: rgba(0, 0, 0, .5) } .drawer-open { background-color: #030322 - } .navMenuOption:hover { @@ -359,7 +421,7 @@ progress::-webkit-progress-value { } .emby-button-focusscale:focus { - background: #48C3C8; + background: #8ae9c1; color: #f8f8fe } @@ -377,7 +439,7 @@ progress::-webkit-progress-value { } .emby-tab-button.emby-button-tv:focus { - color: #48C3C8; + color: #ff77f1; background: 0 0 } @@ -429,7 +491,7 @@ progress::-webkit-progress-value { .guide-date-tab-button.emby-tab-button-active, .guide-date-tab-button:focus { - color: #48C3C8 + color: #ff77f1 } .guide-date-tab-button.emby-button-tv:focus { @@ -470,11 +532,17 @@ progress::-webkit-progress-value { } .card:focus .card-focuscontent { - border-color: #48C3C8 + border-color: #ff77f1 +} + +.layout-desktop, +.scrollY { + scrollbar-width: thin; + scrollbar-color: #888 rgba(59, 59, 59, 0.5) } .layout-desktop ::-webkit-scrollbar { - width: 1em; + width: .4em; height: 1em } @@ -483,7 +551,7 @@ progress::-webkit-progress-value { } ::-webkit-scrollbar-track-piece { - background-color: #3b3b3b + background-color: rgba(59, 59, 59, 0.5) } ::-webkit-scrollbar-thumb:horizontal, diff --git a/src/components/upnextdialog/upnextdialog.css b/src/components/upnextdialog/upnextdialog.css index 548eca9804..336a90d58e 100644 --- a/src/components/upnextdialog/upnextdialog.css +++ b/src/components/upnextdialog/upnextdialog.css @@ -8,8 +8,7 @@ flex-direction: column; will-change: transform, opacity; transition: opacity 300ms ease-out; - background-color: rgba(0, 0, 0, .7); - background: linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .9)); + background-color: rgba(0, 0, 0, 0.7); color: #fff; user-select: none; -webkit-touch-callout: none; diff --git a/src/controllers/serversecurity.js b/src/controllers/apikeys.js similarity index 74% rename from src/controllers/serversecurity.js rename to src/controllers/apikeys.js index a74a04c103..3315e304e3 100644 --- a/src/controllers/serversecurity.js +++ b/src/controllers/apikeys.js @@ -4,14 +4,15 @@ define(["datetime", "loading", "libraryMenu", "dom", "globalize", "emby-button"] function revoke(page, key) { require(["confirm"], function(confirm) { confirm(globalize.translate("MessageConfirmRevokeApiKey"), globalize.translate("HeaderConfirmRevokeApiKey")).then(function() { - loading.show(), ApiClient.ajax({ + loading.show(); + ApiClient.ajax({ type: "DELETE", url: ApiClient.getUrl("Auth/Keys/" + key) }).then(function() { - loadData(page) - }) - }) - }) + loadData(page); + }); + }); + }); } function renderKeys(page, keys) { @@ -21,13 +22,15 @@ define(["datetime", "loading", "libraryMenu", "dom", "globalize", "emby-button"] var date = datetime.parseISO8601Date(item.DateCreated, !0); return html += datetime.toLocaleDateString(date) + " " + datetime.getDisplayTime(date), html += "", html += "" }).join(""); - page.querySelector(".resultBody").innerHTML = rows, loading.hide() + page.querySelector(".resultBody").innerHTML = rows; + loading.hide(); } function loadData(page) { - loading.show(), ApiClient.getJSON(ApiClient.getUrl("Auth/Keys")).then(function(result) { - renderKeys(page, result.Items) - }) + loading.show(); + ApiClient.getJSON(ApiClient.getUrl("Auth/Keys")).then(function(result) { + renderKeys(page, result.Items); + }); } function showNewKeyPrompt(page) { @@ -49,24 +52,18 @@ define(["datetime", "loading", "libraryMenu", "dom", "globalize", "emby-button"] }) } - function getTabs() { - return [{ - href: "dashboardhosting.html", - name: globalize.translate("TabHosting") - }, { - href: "serversecurity.html", - name: globalize.translate("TabSecurity") - }] - } - pageIdOn("pageinit", "serverSecurityPage", function() { + pageIdOn("pageinit", "apiKeysPage", function() { var page = this; page.querySelector(".btnNewKey").addEventListener("click", function() { showNewKeyPrompt(page) - }), page.querySelector(".tblApiKeys").addEventListener("click", function(e) { + }); + page.querySelector(".tblApiKeys").addEventListener("click", function(e) { var btnRevoke = dom.parentWithClass(e.target, "btnRevoke"); btnRevoke && revoke(page, btnRevoke.getAttribute("data-token")) - }) - }), pageIdOn("pagebeforeshow", "serverSecurityPage", function() { - libraryMenu.setTabs("adminadvanced", 1, getTabs), loadData(this) + }); + }); + + pageIdOn("pagebeforeshow", "apiKeysPage", function() { + loadData(this); }) }); \ No newline at end of file diff --git a/src/controllers/dashboardpage.js b/src/controllers/dashboardpage.js index a3b11f4427..7c443e3087 100644 --- a/src/controllers/dashboardpage.js +++ b/src/controllers/dashboardpage.js @@ -1,4 +1,4 @@ -define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globalize", "loading", "connectionManager", "playMethodHelper", "cardBuilder", "imageLoader", "components/activitylog", "humanedate", "listViewStyle", "emby-button", "flexStyles", "emby-button", "emby-itemscontainer"], function (datetime, events, itemHelper, serverNotifications, dom, globalize, loading, connectionManager, playMethodHelper, cardBuilder, imageLoader, ActivityLog) { +define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globalize", "loading", "connectionManager", "playMethodHelper", "cardBuilder", "imageLoader", "components/activitylog", "scripts/imagehelper", "humanedate", "listViewStyle", "emby-button", "flexStyles", "emby-button", "emby-itemscontainer"], function (datetime, events, itemHelper, serverNotifications, dom, globalize, loading, connectionManager, playMethodHelper, cardBuilder, imageLoader, ActivityLog, imageHelper) { "use strict"; function buttonEnabled(elem, enabled) { @@ -622,17 +622,8 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa } }, getClientImage: function (connection) { - var iconUrl = (connection.Client.toLowerCase(), connection.DeviceName.toLowerCase(), connection.AppIconUrl); - - if (iconUrl) { - if (-1 === iconUrl.indexOf("://")) { - iconUrl = ApiClient.getUrl(iconUrl); - } - - return ""; - } - - return null; + var iconUrl = imageHelper.getDeviceIcon(connection.DeviceName); + return ""; }, getNowPlayingImageUrl: function (item) { if (item && item.BackdropImageTags && item.BackdropImageTags.length) { diff --git a/src/controllers/devices.js b/src/controllers/devices.js index d85b6e9017..ef24f19172 100644 --- a/src/controllers/devices.js +++ b/src/controllers/devices.js @@ -1,4 +1,4 @@ -define(["loading", "dom", "libraryMenu", "globalize", "humanedate", "emby-button", "emby-itemscontainer", "cardStyle"], function(loading, dom, libraryMenu, globalize) { +define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "humanedate", "emby-button", "emby-itemscontainer", "cardStyle"], function(loading, dom, libraryMenu, globalize, imageHelper) { "use strict"; function canDelete(deviceId) { @@ -57,10 +57,45 @@ define(["loading", "dom", "libraryMenu", "globalize", "humanedate", "emby-button var html = ""; html += devices.map(function(device) { var deviceHtml = ""; - deviceHtml += "
", deviceHtml += '
', deviceHtml += '", deviceHtml += '
', (canEdit || canDelete(device.Id)) && (deviceHtml += '
', deviceHtml += '', deviceHtml += "
"), deviceHtml += "
", deviceHtml += device.Name, deviceHtml += "
", deviceHtml += "
", deviceHtml += device.AppName + " " + device.AppVersion, deviceHtml += "
", deviceHtml += "
", device.LastUserName && (deviceHtml += device.LastUserName, deviceHtml += ", " + humane_date(device.DateLastActivity)), deviceHtml += " ", deviceHtml += "
", deviceHtml += "
", deviceHtml += "
", deviceHtml += "
" - }).join(""), page.querySelector(".devicesList").innerHTML = html + deviceHtml += "
"; + deviceHtml += '
'; + deviceHtml += '"; + deviceHtml += '
'; + if (canEdit || canDelete(device.Id)) { + deviceHtml += '
'; + deviceHtml += ''; + deviceHtml += "
"; + } + deviceHtml += "
"; + deviceHtml += device.Name; + deviceHtml += "
"; + deviceHtml += "
"; + deviceHtml += device.AppName + " " + device.AppVersion; + deviceHtml += "
"; + deviceHtml += "
"; + if (device.LastUserName) { + deviceHtml += device.LastUserName; + deviceHtml += ", " + humane_date(device.DateLastActivity); + } + deviceHtml += " "; + deviceHtml += "
"; + deviceHtml += "
"; + deviceHtml += "
"; + deviceHtml += "
"; + return deviceHtml; + }).join(""); + page.querySelector(".devicesList").innerHTML = html; } function loadData(page) { diff --git a/src/controllers/dlnaprofile.js b/src/controllers/dlnaprofile.js index 530e456018..b4e320e6e4 100644 --- a/src/controllers/dlnaprofile.js +++ b/src/controllers/dlnaprofile.js @@ -256,8 +256,8 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in currentType = profile.Type; } - html += "
  • "; - html += ''; + html += "
  • "; + html += ''; + html += "
    "; } html += ""; @@ -316,8 +316,8 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in currentType = profile.Type; } - html += "
  • "; - html += ''; + html += "
  • "; + html += ''; + html += "
    "; } html += ""; @@ -402,8 +402,8 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in currentType = profile.Type; } - html += "
  • "; - html += ''; + html += "
  • "; + html += ''; + html += "
    "; } html += ""; @@ -474,8 +474,8 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in currentType = type; } - html += "
  • "; - html += ''; + html += "
  • "; + html += ''; + html += "
    "; } html += ""; @@ -545,8 +545,8 @@ define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-in currentType = profile.Type; } - html += "
  • "; - html += ''; + html += "
  • "; + html += ''; + html += "
    "; } html += ""; diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 3bb8b3b29a..4412ec6e9b 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -2,19 +2,19 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap "use strict"; function enableScrollX() { - return !0 + return true; } function getThumbShape() { - return enableScrollX() ? "overflowBackdrop" : "backdrop" + return enableScrollX() ? "overflowBackdrop" : "backdrop"; } function getPosterShape() { - return enableScrollX() ? "overflowPortrait" : "portrait" + return enableScrollX() ? "overflowPortrait" : "portrait"; } function getSquareShape() { - return enableScrollX() ? "overflowSquare" : "square" + return enableScrollX() ? "overflowSquare" : "square"; } function getSections() { diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index dbe3e4e5f0..abfdcc459f 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -322,6 +322,25 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild itemBirthLocation.classList.remove("hide"), itemBirthLocation.innerHTML = globalize.translate("BirthPlaceValue").replace("{0}", gmap) } else itemBirthLocation.classList.add("hide"); setPeopleHeader(page, item), loading.hide() + + try { + require(["focusManager"], function(focusManager) { + [".btnResume", ".btnPlay"].every(function (cls) { + + var elems = page.querySelectorAll(cls); + + for (var i = 0; i < elems.length; i++) { + if (focusManager.isCurrentlyFocusable(elems[i])) { + focusManager.focus(elems[i]); + return false; + } + } + return true; + }); + }); + } catch (e) { + console.log(e); + } } function logoImageUrl(item, apiClient, options) { diff --git a/src/controllers/librarydisplay.js b/src/controllers/librarydisplay.js index 80f5bbc09b..5ee86a4563 100644 --- a/src/controllers/librarydisplay.js +++ b/src/controllers/librarydisplay.js @@ -14,25 +14,58 @@ define(["globalize", "loading", "libraryMenu", "emby-checkbox", "emby-button", " }, { href: "metadatanfo.html", name: Globalize.translate("TabNfoSettings") - }, { - href: "librarysettings.html", - name: Globalize.translate("TabAdvanced") }] } + return function(view, params) { function loadData() { ApiClient.getServerConfiguration().then(function(config) { - view.querySelector(".chkFolderView").checked = config.EnableFolderView, view.querySelector(".chkGroupMoviesIntoCollections").checked = config.EnableGroupingIntoCollections, view.querySelector(".chkDisplaySpecialsWithinSeasons").checked = config.DisplaySpecialsWithinSeasons, view.querySelector(".chkExternalContentInSuggestions").checked = config.EnableExternalContentInSuggestions - }) + view.querySelector(".chkFolderView").checked = config.EnableFolderView; + view.querySelector(".chkGroupMoviesIntoCollections").checked = config.EnableGroupingIntoCollections; + view.querySelector(".chkDisplaySpecialsWithinSeasons").checked = config.DisplaySpecialsWithinSeasons; + view.querySelector(".chkExternalContentInSuggestions").checked = config.EnableExternalContentInSuggestions; + view.querySelector("#chkSaveMetadataHidden").checked = config.SaveMetadataHidden; + }); + ApiClient.getNamedConfiguration("metadata").then(function(metadata) { + loadMetadataConfig(this, metadata) + }); } + + function loadMetadataConfig(page, config) { + $("#selectDateAdded", page).val(config.UseFileCreationTimeForDateAdded ? "1" : "0"); + } + view.querySelector("form").addEventListener("submit", function(e) { loading.show(); var form = this; - return ApiClient.getServerConfiguration().then(function(config) { - config.EnableFolderView = form.querySelector(".chkFolderView").checked, config.EnableGroupingIntoCollections = form.querySelector(".chkGroupMoviesIntoCollections").checked, config.DisplaySpecialsWithinSeasons = form.querySelector(".chkDisplaySpecialsWithinSeasons").checked, config.EnableExternalContentInSuggestions = form.querySelector(".chkExternalContentInSuggestions").checked, ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult) - }), e.preventDefault(), !1 - }), view.addEventListener("viewshow", function() { - libraryMenu.setTabs("librarysetup", 1, getTabs), loadData() - }) + ApiClient.getServerConfiguration().then(function(config) { + config.EnableFolderView = form.querySelector(".chkFolderView").checked; + config.EnableGroupingIntoCollections = form.querySelector(".chkGroupMoviesIntoCollections").checked; + config.DisplaySpecialsWithinSeasons = form.querySelector(".chkDisplaySpecialsWithinSeasons").checked; + config.EnableExternalContentInSuggestions = form.querySelector(".chkExternalContentInSuggestions").checked; + config.SaveMetadataHidden = form.querySelector("#chkSaveMetadataHidden").checked; + ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); + }); + ApiClient.getNamedConfiguration("metadata").then(function(config) { + config.UseFileCreationTimeForDateAdded = "1" === $("#selectDateAdded", form).val(); + ApiClient.updateNamedConfiguration("metadata", config); + }); + + e.preventDefault(); + loading.hide(); + return false; + }); + + view.addEventListener("viewshow", function() { + libraryMenu.setTabs("librarysetup", 1, getTabs); + loadData(); + ApiClient.getSystemInfo().then(function(info) { + if ("Windows" === info.OperatingSystem) { + view.querySelector(".fldSaveMetadataHidden").classList.remove("hide"); + } else { + view.querySelector(".fldSaveMetadataHidden").classList.add("hide"); + } + }); + }); } }); \ No newline at end of file diff --git a/src/controllers/librarysettings.js b/src/controllers/librarysettings.js deleted file mode 100644 index 3fc9c40d98..0000000000 --- a/src/controllers/librarysettings.js +++ /dev/null @@ -1,91 +0,0 @@ -define(["jQuery", "loading", "libraryMenu", "fnchecked", "emby-checkbox", "emby-button"], function($, loading, libraryMenu) { - "use strict"; - - function loadPage(page, config) { - $("#chkSaveMetadataHidden", page).checked(config.SaveMetadataHidden); - loading.hide(); - } - - function loadMetadataConfig(page, config) { - $("#selectDateAdded", page).val(config.UseFileCreationTimeForDateAdded ? "1" : "0"); - } - - function loadFanartConfig(page, config) { - $("#txtFanartApiKey", page).val(config.UserApiKey || ""); - } - - function saveFanart(form) { - ApiClient.getNamedConfiguration("fanart").then(function(config) { - config.UserApiKey = $("#txtFanartApiKey", form).val(), ApiClient.updateNamedConfiguration("fanart", config); - }); - } - - function saveMetadata(form) { - ApiClient.getNamedConfiguration("metadata").then(function(config) { - config.UseFileCreationTimeForDateAdded = "1" === $("#selectDateAdded", form).val(), ApiClient.updateNamedConfiguration("metadata", config); - }) - } - - function alertText(options) { - require(["alert"], function(alert) { - alert(options); - }); - } - - function onSubmit() { - loading.show(); - var form = this; - ApiClient.getServerConfiguration().then(function(config) { - config.SaveMetadataHidden = $("#chkSaveMetadataHidden", form).checked(); - config.FanartApiKey = $("#txtFanartApiKey", form).val(); - ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); - }); - saveMetadata(form); - saveFanart(form); - return false; - } - - function getTabs() { - return [{ - href: "library.html", - name: Globalize.translate("HeaderLibraries") - }, { - href: "librarydisplay.html", - name: Globalize.translate("TabDisplay") - }, { - href: "metadataimages.html", - name: Globalize.translate("TabMetadata") - }, { - href: "metadatanfo.html", - name: Globalize.translate("TabNfoSettings") - }, { - href: "librarysettings.html", - name: Globalize.translate("TabAdvanced") - }] - } - - return function(view, params) { - $(".librarySettingsForm").off("submit", onSubmit).on("submit", onSubmit); - view.addEventListener("viewshow", function() { - libraryMenu.setTabs("librarysetup", 4, getTabs); - loading.show(); - var page = this; - ApiClient.getServerConfiguration().then(function(config) { - loadPage(page, config) - }); - ApiClient.getNamedConfiguration("metadata").then(function(metadata) { - loadMetadataConfig(page, metadata) - }); - ApiClient.getNamedConfiguration("fanart").then(function(metadata) { - loadFanartConfig(page, metadata) - }); - ApiClient.getSystemInfo().then(function(info) { - if ("Windows" === info.OperatingSystem) { - page.querySelector(".fldSaveMetadataHidden").classList.remove("hide"); - } else { - page.querySelector(".fldSaveMetadataHidden").classList.add("hide"); - } - }); - }); - } -}); \ No newline at end of file diff --git a/src/controllers/livetvtuner.js b/src/controllers/livetvtuner.js index 8d27093af1..336270a5c2 100644 --- a/src/controllers/livetvtuner.js +++ b/src/controllers/livetvtuner.js @@ -6,7 +6,7 @@ define(["globalize", "loading", "libraryMenu", "dom", "emby-input", "emby-button } function fillTypes(view, currentId) { - ApiClient.getJSON(ApiClient.getUrl("LiveTv/TunerHosts/Types")).then(function(types) { + return ApiClient.getJSON(ApiClient.getUrl("LiveTv/TunerHosts/Types")).then(function(types) { var selectType = view.querySelector(".selectType"); var html = ""; html += types.map(function(tuner) { diff --git a/src/controllers/medialibrarypage.js b/src/controllers/medialibrarypage.js index a6e86f0ef8..405d38bfa7 100644 --- a/src/controllers/medialibrarypage.js +++ b/src/controllers/medialibrarypage.js @@ -1,4 +1,4 @@ -define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "globalize", "dom", "indicators", "cardStyle", "emby-itemrefreshindicator"], function($, appHost, taskButton, loading, libraryMenu, globalize, dom, indicators) { +define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "globalize", "dom", "indicators", "scripts/imagehelper", "cardStyle", "emby-itemrefreshindicator"], function($, appHost, taskButton, loading, libraryMenu, globalize, dom, indicators, imageHelper) { "use strict"; function addVirtualFolder(page) { @@ -217,30 +217,6 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl }] } - function getIcon(type) { - switch (type) { - case "movies": - return "local_movies"; - case "music": - return "library_music"; - case "photos": - return "photo"; - case "livetv": - case "tvshows": - return "live_tv"; - case "trailers": - return "local_movies"; - case "homevideos": - case "musicvideos": - return "video_library"; - case "books": - case "channels": - case "playlists": - default: - return "folder"; - } - } - function getVirtualFolderHtml(page, virtualFolder, index) { var html = ""; var style = ""; @@ -262,7 +238,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl hasCardImageContainer = true; } else if (!virtualFolder.showNameWithIcon) { html += '
    '; - html += '' + (virtualFolder.icon || getIcon(virtualFolder.CollectionType)) + ""; + html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; hasCardImageContainer = true; } if (hasCardImageContainer) { @@ -273,7 +249,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl } if (!imgUrl && virtualFolder.showNameWithIcon) { html += '

    '; - html += '' + (virtualFolder.icon || getIcon(virtualFolder.CollectionType)) + ""; + html += '' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + ""; virtualFolder.showNameWithIcon && (html += '
    ', html += virtualFolder.Name, html += "
    "); html += "

    "; } @@ -302,9 +278,9 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl html += " "; html += "
    "; } else if (virtualFolder.Locations.length && virtualFolder.Locations.length === 1) { - html += "
    "; - html += virtualFolder.Locations[0]; - html += "
    "; + html += "
    "; + html += virtualFolder.Locations[0]; + html += "
    "; } else { html += "
    "; html += globalize.translate("NumLocationsValue", virtualFolder.Locations.length); @@ -329,11 +305,9 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl }, { href: "metadatanfo.html", name: globalize.translate("TabNfoSettings") - }, { - href: "librarysettings.html", - name: globalize.translate("TabAdvanced") }] } + window.WizardLibraryPage = { next: function() { Dashboard.navigate("wizardsettings.html") diff --git a/src/controllers/metadataimagespage.js b/src/controllers/metadataimagespage.js index 58eae09dd1..3a6656e4b6 100644 --- a/src/controllers/metadataimagespage.js +++ b/src/controllers/metadataimagespage.js @@ -53,11 +53,9 @@ define(["jQuery", "dom", "loading", "libraryMenu", "listViewStyle"], function($, }, { href: "metadatanfo.html", name: Globalize.translate("TabNfoSettings") - }, { - href: "librarysettings.html", - name: Globalize.translate("TabAdvanced") }] } + $(document).on("pageinit", "#metadataImagesConfigurationPage", function() { $(".metadataImagesConfigurationForm").off("submit", onSubmit).on("submit", onSubmit) }).on("pageshow", "#metadataImagesConfigurationPage", function() { diff --git a/src/controllers/metadatanfo.js b/src/controllers/metadatanfo.js index d7ed677304..1de17ae836 100644 --- a/src/controllers/metadatanfo.js +++ b/src/controllers/metadatanfo.js @@ -40,11 +40,9 @@ define(["jQuery", "loading", "libraryMenu"], function($, loading, libraryMenu) { }, { href: "metadatanfo.html", name: Globalize.translate("TabNfoSettings") - }, { - href: "librarysettings.html", - name: Globalize.translate("TabAdvanced") }] } + var metadataKey = "xbmcmetadata"; $(document).on("pageinit", "#metadataNfoPage", function() { $(".metadataNfoForm").off("submit", onSubmit).on("submit", onSubmit) diff --git a/src/controllers/dashboardhosting.js b/src/controllers/networking.js similarity index 92% rename from src/controllers/dashboardhosting.js rename to src/controllers/networking.js index b08e8d7d7d..c283cf44d1 100644 --- a/src/controllers/dashboardhosting.js +++ b/src/controllers/networking.js @@ -61,15 +61,6 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], }).then(callback) : callback() } - function getTabs() { - return [{ - href: "dashboardhosting.html", - name: globalize.translate("TabHosting") - }, { - href: "serversecurity.html", - name: globalize.translate("TabSecurity") - }] - } return function(view, params) { function loadPage(page, config) { page.querySelector("#txtPortNumber").value = config.HttpServerPortNumber, page.querySelector("#txtPublicPort").value = config.PublicPort, page.querySelector("#txtPublicHttpsPort").value = config.PublicHttpsPort, page.querySelector("#txtLocalAddress").value = config.LocalNetworkAddresses[0] || "", page.querySelector("#txtLanNetworks").value = (config.LocalNetworkSubnets || []).join(", "), page.querySelector("#txtExternalAddressFilter").value = (config.RemoteIPFilter || []).join(", "), page.querySelector("#selectExternalAddressFilterMode").value = config.IsRemoteIPFilterBlacklist ? "blacklist" : "whitelist", page.querySelector("#chkRemoteAccess").checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; @@ -96,10 +87,13 @@ define(["loading", "libraryMenu", "globalize", "emby-checkbox", "emby-select"], header: globalize.translate("HeaderSelectCertificatePath") }) }) - }), view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit), view.querySelector("#txtCertificatePath").addEventListener("change", onCertPathChange), view.addEventListener("viewshow", function(e) { - libraryMenu.setTabs("adminadvanced", 0, getTabs), loading.show(), ApiClient.getServerConfiguration().then(function(config) { - loadPage(view, config) - }) - }) + }); + + view.querySelector(".dashboardHostingForm").addEventListener("submit", onSubmit), view.querySelector("#txtCertificatePath").addEventListener("change", onCertPathChange), view.addEventListener("viewshow", function(e) { + loading.show(); + ApiClient.getServerConfiguration().then(function(config) { + loadPage(view, config); + }); + }); } }); \ No newline at end of file diff --git a/src/controllers/usernew.js b/src/controllers/usernew.js index a9119a4aea..10fa6fc4f3 100644 --- a/src/controllers/usernew.js +++ b/src/controllers/usernew.js @@ -3,74 +3,113 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox"], function($, loading) function loadMediaFolders(page, mediaFolders) { var html = ""; - html += '

    ' + Globalize.translate("HeaderLibraries") + "

    ", html += '
    '; - for (var i = 0, length = mediaFolders.length; i < length; i++) { + html += '

    ' + Globalize.translate("HeaderLibraries") + "

    "; + html += '
    '; + for (var i = 0; i < mediaFolders.length; i++) { var folder = mediaFolders[i]; - html += '" + html += '"; } - html += "
    ", $(".folderAccess", page).html(html).trigger("create"), $("#chkEnableAllFolders", page).checked(!0).trigger("change") + html += "
    "; + $(".folderAccess", page).html(html).trigger("create"); + $("#chkEnableAllFolders", page).checked(true).trigger("change"); } function loadChannels(page, channels) { var html = ""; - html += '

    ' + Globalize.translate("HeaderChannels") + "

    ", html += '
    '; - for (var i = 0, length = channels.length; i < length; i++) { + html += '

    ' + Globalize.translate("HeaderChannels") + "

    "; + html += '
    '; + for (var i = 0; i < channels.length; i++) { var folder = channels[i]; - html += '" + html += '"; } - html += "
    ", $(".channelAccess", page).show().html(html).trigger("create"), channels.length ? $(".channelAccessContainer", page).show() : $(".channelAccessContainer", page).hide(), $("#chkEnableAllChannels", page).checked(!0).trigger("change") + html += "
    "; + $(".channelAccess", page).show().html(html).trigger("create"); + if (channels.length) { + $(".channelAccessContainer", page).show(); + } else { + $(".channelAccessContainer", page).hide(); + } + $("#chkEnableAllChannels", page).checked(true).trigger("change"); } function loadUser(page) { - $("#txtUserName", page).val(""), loading.show(); - var promise4 = ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders", { - IsHidden: !1 - })), - promise5 = ApiClient.getJSON(ApiClient.getUrl("Channels")); - Promise.all([promise4, promise5]).then(function(responses) { - loadMediaFolders(page, responses[0].Items), loadChannels(page, responses[1].Items), loading.hide() + $("#txtUsername", page).val(""); + $("#txtPassword", page).val(""); + loading.show(); + var promiseFolders = ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders", { + IsHidden: false + })); + var promiseChannels = ApiClient.getJSON(ApiClient.getUrl("Channels")); + Promise.all([promiseFolders, promiseChannels]).then(function(responses) { + loadMediaFolders(page, responses[0].Items); + loadChannels(page, responses[1].Items); + loading.hide(); }) } function saveUser(page) { - var name = $("#txtUserName", page).val(); - ApiClient.createUser(name).then(function(user) { - user.Policy.EnableAllFolders = $("#chkEnableAllFolders", page).checked(), user.Policy.EnabledFolders = user.Policy.EnableAllFolders ? [] : $(".chkFolder", page).get().filter(function(i) { - return i.checked - }).map(function(i) { - return i.getAttribute("data-id") - }), user.Policy.EnableAllChannels = $("#chkEnableAllChannels", page).checked(), user.Policy.EnabledChannels = user.Policy.EnableAllChannels ? [] : $(".chkChannel", page).get().filter(function(i) { - return i.checked - }).map(function(i) { - return i.getAttribute("data-id") - }), ApiClient.updateUserPolicy(user.Id, user.Policy).then(function() { - Dashboard.navigate("useredit.html?userId=" + user.Id) - }) + var user = {}; + user.Name = $("#txtUsername", page).val(); + user.Password = $("#txtPassword", page).val(); + ApiClient.createUser(user).then(function(user) { + user.Policy.EnableAllFolders = $("#chkEnableAllFolders", page).checked(); + user.Policy.EnabledFolders = []; + if (!user.Policy.EnableAllFolders) { + user.Policy.EnabledFolders = $(".chkFolder", page).get().filter(function(i) { + return i.checked + }).map(function(i) { + return i.getAttribute("data-id"); + }); + } + user.Policy.EnableAllChannels = $("#chkEnableAllChannels", page).checked(); + user.Policy.EnabledChannels = []; + if (!user.Policy.EnableAllChannels) { + user.Policy.EnabledChannels = $(".chkChannel", page).get().filter(function(i) { + return i.checked + }).map(function(i) { + return i.getAttribute("data-id"); + }); + } + ApiClient.updateUserPolicy(user.Id, user.Policy).then(function() { + Dashboard.navigate("useredit.html?userId=" + user.Id); + }); }, function(response) { - 400 == response.status ? Dashboard.alert({ - message: page.querySelector(".labelNewUserNameHelp").innerHTML - }) : require(["toast"], function(toast) { - toast(Globalize.translate("DefaultErrorMessage")) - }), loading.hide() - }) + require(["toast"], function(toast) { + toast(Globalize.translate("DefaultErrorMessage")); + }); + loading.hide(); + }); } function onSubmit() { var page = $(this).parents(".page")[0]; - return loading.show(), saveUser(page), !1 + loading.show(); + saveUser(page); + return false; } function loadData(page) { - loadUser(page) + loadUser(page); } + $(document).on("pageinit", "#newUserPage", function() { var page = this; $("#chkEnableAllChannels", page).on("change", function() { - this.checked ? $(".channelAccessListContainer", page).hide() : $(".channelAccessListContainer", page).show() - }), $("#chkEnableAllFolders", page).on("change", function() { - this.checked ? $(".folderAccessListContainer", page).hide() : $(".folderAccessListContainer", page).show() - }), $(".newUserProfileForm").off("submit", onSubmit).on("submit", onSubmit) + if (this.checked) { + $(".channelAccessListContainer", page).hide(); + } else { + $(".channelAccessListContainer", page).show(); + } + }); + $("#chkEnableAllFolders", page).on("change", function() { + if (this.checked) { + $(".folderAccessListContainer", page).hide(); + } else { + $(".folderAccessListContainer", page).show(); + } + }); + $(".newUserProfileForm").off("submit", onSubmit).on("submit", onSubmit); }).on("pageshow", "#newUserPage", function() { - loadData(this) - }) + loadData(this); + }); }); \ No newline at end of file diff --git a/src/css/dashboard.css b/src/css/dashboard.css index 5a44c51f27..8ee6c69c8d 100644 --- a/src/css/dashboard.css +++ b/src/css/dashboard.css @@ -70,7 +70,7 @@ progress[aria-valuenow]:before { } .adminDrawerLogo img { - height: 2.2em + height: 4em } div[data-role=controlgroup] a[data-role=button] { @@ -499,3 +499,8 @@ a[data-role=button] { -webkit-box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37); box-shadow: 0 .0725em .29em 0 rgba(0, 0, 0, .37) } + +.ui-bar-a{ + text-align: center; + padding: 0 20px; +} diff --git a/src/css/librarybrowser.css b/src/css/librarybrowser.css index 2e4be894ec..f0f3cb9b23 100644 --- a/src/css/librarybrowser.css +++ b/src/css/librarybrowser.css @@ -887,10 +887,6 @@ margin-bottom: 2.7em } -.sectionTitleContainer { - margin: 1.25em 0 -} - .sectionTitleButton, .sectionTitleIconButton { margin-right: 0 !important; @@ -898,30 +894,22 @@ vertical-align: middle } -.sectionTitleContainer-cards { - margin-bottom: .1em +.sectionTitleContainer { + margin: 1.25em 0; } -.sectionTitle { - margin-bottom: 1em +.sectionTitleContainer > .sectionTitle { + margin: 0; + display: inline-block; + vertical-align: middle; +} + +.sectionTitleContainer-cards { + margin-bottom: 0; } .sectionTitle-cards { - margin-left: .28em; - margin-bottom: 0 -} - -@media all and (min-width:50em) { - .sectionTitle-cards { - margin-left: .55em - } -} - -.sectionTitleContainer>.sectionTitle { - margin-top: 0; margin-bottom: 0; - display: inline-block; - vertical-align: middle } .sectionTitleButton { @@ -930,7 +918,7 @@ flex-shrink: 0 } -.sectionTitleButton+.sectionTitleButton { +.sectionTitleButton + .sectionTitleButton { margin-left: .5em !important } @@ -972,97 +960,47 @@ } .padded-left { - padding-left: 2% + padding-left: 3.3%; } .padded-right { - padding-right: 2% + padding-right: 3.3%; } .padded-top { - padding-top: 1em + padding-top: 1em; } .padded-bottom { - padding-bottom: 1em + padding-bottom: 1em; } .layout-tv .padded-top-focusscale { padding-top: 1em; - margin-top: -1em + margin-top: -1em; } .layout-tv .padded-bottom-focusscale { padding-bottom: 1em; - margin-bottom: -1em + margin-bottom: -1em; } @media all and (min-height:31.25em) { .padded-left-withalphapicker { - padding-left: 7.5% + padding-left: 7.5%; } .padded-right-withalphapicker { - padding-right: 7.5% - } -} - -@media all and (min-width:31.25em) { - .padded-left { - padding-left: 6% - } - - .padded-right { - padding-right: 6% - } -} - -@media all and (min-width:37.5em) { - .padded-left { - padding-left: 4% - } - - .padded-right { - padding-right: 4% - } -} - -@media all and (min-width:50em) { - .padded-left { - padding-left: 3.2% - } - - .padded-right { - padding-right: 3.2% - } -} - -@media all and (min-width:64em) { - .padded-left { - padding-left: 3.3% - } - - .padded-right { - padding-right: 3.3% - } -} - -@media all and (min-width:50em) { - .layout-tv .padded-left-withalphapicker { - padding-left: 4.5% - } - - .layout-tv .padded-right-withalphapicker { - padding-right: 4.5% + padding-right: 7.5%; } } .searchfields-icon { - color: #aaa + color: #aaaaaa; } .button-accent-flat { - color: #00a4dc !important + color: #00a4dc !important; } .clearLink { diff --git a/src/css/videoosd.css b/src/css/videoosd.css index bd24e41309..b1566c2207 100644 --- a/src/css/videoosd.css +++ b/src/css/videoosd.css @@ -14,17 +14,12 @@ } .osdHeader { - padding-bottom: 3vh; -webkit-transition: opacity .3s ease-out; -o-transition: opacity .3s ease-out; transition: opacity .3s ease-out; position: relative; z-index: 1; - background-color: rgba(0, 0, 0, .3) !important; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .6)), to(rgba(0, 0, 0, 0))) !important; - background: -webkit-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) !important; - background: -o-linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) !important; - background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, 0)) !important; + background-color: rgba(0, 0, 0, 0.7) !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; color: #eee @@ -93,7 +88,7 @@ .videoOsdBottom { position: fixed; - background-color: rgba(0, 0, 0, .7); + background-color: rgba(0, 0, 0, 0.7); padding: 1%; display: -webkit-box; display: -webkit-flex; @@ -103,13 +98,9 @@ -webkit-flex-direction: row; flex-direction: row; will-change: opacity; - -webkit-transition: opacity .3s ease-out; - -o-transition: opacity .3s ease-out; - transition: opacity .3s ease-out; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .8))); - background: -webkit-linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .8)); - background: -o-linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .8)); - background: linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .8)); + -webkit-transition: opacity 0.3s ease-out; + -o-transition: opacity 0.3s ease-out; + transition: opacity 0.3s ease-out; color: #fff; user-select: none; -webkit-touch-callout: none diff --git a/src/dashboard.html b/src/dashboard.html index c8fcb93ebf..67d269db3d 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -32,8 +32,8 @@
    - -

    ${HeaderActiveDevices}

    +
    +

    ${HeaderActiveDevices}

    diff --git a/src/dlnaprofile.html b/src/dlnaprofile.html index 93c7207e4c..bbda88586a 100644 --- a/src/dlnaprofile.html +++ b/src/dlnaprofile.html @@ -1,17 +1,13 @@
    -
    -
    -

    ${HeaderProfileInformation}

    ${Help}
    -
    ${TabInfo} ${TabDirectPlay} @@ -22,7 +18,6 @@

    -
    @@ -30,7 +25,6 @@
    ${LabelUserLibraryHelp}
    -

    ${LabelSupportedMediaTypes}

    @@ -62,7 +56,6 @@
    ${OptionIgnoreTranscodeByteRangeRequestsHelp}
    -

    ${HeaderIdentificationCriteriaHelp}

    @@ -102,7 +95,6 @@
    ${LabelIdentificationFieldHelp}
    -

    ${HeaderHttpHeaders}

    -

    -
    -
    @@ -172,7 +161,6 @@
    -

    ${HeaderProfileServerSettingsHelp}

    @@ -218,19 +206,16 @@
    -

    ${HeaderSubtitleProfilesHelp}

    -

    -
    @@ -238,7 +223,6 @@ -
    ${XmlDocumentAttributeListHelp}
    @@ -246,34 +230,33 @@
    -

    ${HeaderDirectPlayProfileHelp}

    - +

    ${HeaderTranscodingProfileHelp}

    - +

    ${HeaderContainerProfileHelp}

    - +

    ${HeaderCodecProfileHelp}

    - +

    ${HeaderResponseProfileHelp}

    - +
    @@ -285,69 +268,56 @@ -
    -
    -
    - -
    -

    ${HeaderDirectPlayProfile}

    -
    - -
    -
    - -
    - -
    - -
    - - +
    +
    ${LabelProfileContainersHelp}
    -
    - - -
    ${LabelProfileCodecsHelp}
    +
    + +
    ${LabelProfileCodecsHelp}
    +
    -
    - - -
    ${LabelProfileCodecsHelp}
    +
    + +
    ${LabelProfileCodecsHelp}
    +
    -

    - -

    - -
    - +
    +
    -
    - -
    -

    ${HeaderTranscodingProfile}

    -
    - -
    -
    - +
    + +
    +

    ${HeaderTranscodingProfile}

    +
    +
    @@ -356,321 +326,260 @@

    - +
    +
    -
    - -
    -

    ${HeaderContainerProfile}

    -
    - -
    -
    - +
    + +
    +

    ${HeaderContainerProfile}

    +
    +

    ${HeaderContainerProfileHelp}

    - - -
    -
    - -
    - -
    - - +
    +
    ${LabelProfileContainersHelp}
    -
    - - - +

    - -

    - -
    - +
    +
    -
    - -
    -

    ${HeaderCodecProfile}

    -
    - -
    -
    - +
    + +
    +

    ${HeaderCodecProfile}

    +
    +

    ${HeaderCodecProfileHelp}

    - -
    - -
    - -
    - - +
    +
    ${LabelProfileCodecsHelp}
    -

    - -

    - -
    - +
    +
    -
    - -
    -

    ${HeaderResponseProfile}

    -
    - -
    -
    - -
    - -
    - -
    - - +
    +
    ${LabelProfileContainersHelp}
    -
    - - -
    ${LabelProfileCodecsHelp}
    +
    + +
    ${LabelProfileCodecsHelp}
    +
    -
    - - -
    ${LabelProfileCodecsHelp}
    +
    + +
    ${LabelProfileCodecsHelp}
    +
    -

    - -

    - -
    - +
    +
    -
    - -
    -

    ${HeaderIdentificationHeader}

    -
    - -
    -
    - -
    - - +
    + +
    +

    ${HeaderIdentificationHeader}

    +
    +
    +
    +
    - -
    - - +
    +
    - -
    - -
    -

    - -

    - -
    - +
    +
    -
    - -
    -

    ${HeaderXmlDocumentAttribute}

    -
    - -
    -
    - -
    - - +
    + +
    +

    ${HeaderXmlDocumentAttribute}

    +
    +
    +
    +
    - -
    - - +
    +
    -

    - -

    - -
    - +
    +
    - -
    - -
    -

    ${HeaderSubtitleProfile}

    -
    - -
    -
    - -
    - - +
    + +
    +

    ${HeaderSubtitleProfile}

    +
    +
    +
    +
    ${LabelSubtitleFormatHelp}
    - -
    - -
    - -
    - -
    -

    - -

    - -
    - +
    +
    -
    \ No newline at end of file +
    diff --git a/src/img/devices/chrome.svg b/src/img/devices/chrome.svg new file mode 100644 index 0000000000..fab308dc20 --- /dev/null +++ b/src/img/devices/chrome.svg @@ -0,0 +1 @@ +Google Chrome icon diff --git a/src/img/devices/edge.svg b/src/img/devices/edge.svg new file mode 100644 index 0000000000..8a552924d7 --- /dev/null +++ b/src/img/devices/edge.svg @@ -0,0 +1 @@ +Microsoft Edge icon diff --git a/src/img/devices/firefox.svg b/src/img/devices/firefox.svg new file mode 100644 index 0000000000..f6087e5e8c --- /dev/null +++ b/src/img/devices/firefox.svg @@ -0,0 +1 @@ +Mozilla Firefox icon diff --git a/src/img/devices/html5.svg b/src/img/devices/html5.svg new file mode 100644 index 0000000000..63704799cb --- /dev/null +++ b/src/img/devices/html5.svg @@ -0,0 +1 @@ +HTML5 icon diff --git a/src/img/devices/msie.svg b/src/img/devices/msie.svg new file mode 100644 index 0000000000..f5b362d7c1 --- /dev/null +++ b/src/img/devices/msie.svg @@ -0,0 +1 @@ +Internet Explorer icon diff --git a/src/img/devices/opera.svg b/src/img/devices/opera.svg new file mode 100644 index 0000000000..dd57f924a9 --- /dev/null +++ b/src/img/devices/opera.svg @@ -0,0 +1 @@ +Opera icon diff --git a/src/img/devices/other.svg b/src/img/devices/other.svg new file mode 100644 index 0000000000..b588696794 --- /dev/null +++ b/src/img/devices/other.svg @@ -0,0 +1 @@ + diff --git a/src/img/devices/playstation.svg b/src/img/devices/playstation.svg new file mode 100644 index 0000000000..c6595340eb --- /dev/null +++ b/src/img/devices/playstation.svg @@ -0,0 +1 @@ +PlayStation icon diff --git a/src/img/devices/safari.svg b/src/img/devices/safari.svg new file mode 100644 index 0000000000..12abbb95fd --- /dev/null +++ b/src/img/devices/safari.svg @@ -0,0 +1 @@ +safari icon diff --git a/src/img/devices/samsungtv.svg b/src/img/devices/samsungtv.svg new file mode 100644 index 0000000000..afdd19e24e --- /dev/null +++ b/src/img/devices/samsungtv.svg @@ -0,0 +1 @@ +Samsung icon diff --git a/src/img/devices/windows.svg b/src/img/devices/windows.svg new file mode 100644 index 0000000000..531e72e1d1 --- /dev/null +++ b/src/img/devices/windows.svg @@ -0,0 +1 @@ +Windows icon diff --git a/src/img/devices/xbox.svg b/src/img/devices/xbox.svg new file mode 100644 index 0000000000..640dd34a5b --- /dev/null +++ b/src/img/devices/xbox.svg @@ -0,0 +1 @@ +Xbox icon diff --git a/src/img/logo.png b/src/img/logo.png new file mode 100644 index 0000000000..0d71b56067 Binary files /dev/null and b/src/img/logo.png differ diff --git a/src/img/logoblack.png b/src/img/logoblack.png deleted file mode 100644 index 81a83818f8..0000000000 Binary files a/src/img/logoblack.png and /dev/null differ diff --git a/src/itemdetails.html b/src/itemdetails.html index 0a8c02eb4a..2335feb3ef 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -207,9 +207,7 @@
    -

    - ${HeaderNextUp} -

    +

    ${HeaderNextUp}

    @@ -224,18 +222,15 @@
    -

    - ${HeaderAdditionalParts} -

    +

    ${HeaderAdditionalParts}

    -
    -
    +
    @@ -243,20 +238,17 @@

    -
    -
    +
    -
    -

    - ${HeaderCastCrew} -

    +

    ${HeaderCastCrew}

    +
    -
    +
    @@ -285,9 +277,8 @@

    ${HeaderScenes}

    -
    -
    +
    @@ -296,9 +287,8 @@

    ${HeaderMoreLikeThis}

    -
    -
    +
    diff --git a/src/librarydisplay.html b/src/librarydisplay.html index f013343f6b..b5510ddb14 100644 --- a/src/librarydisplay.html +++ b/src/librarydisplay.html @@ -1,8 +1,15 @@
    -
    +
    + +
    ${LabelDateAddedBehaviorHelp}
    +
    +
    ${OptionDisplayFolderViewHelp}
    + +
    ${OptionEnableExternalContentInSuggestionsHelp}
    + +
    + +
    ${OptionSaveMetadataAsHiddenHelp}
    +
    +
    -
    diff --git a/src/librarysettings.html b/src/librarysettings.html deleted file mode 100644 index abf06b0928..0000000000 --- a/src/librarysettings.html +++ /dev/null @@ -1,38 +0,0 @@ -
    -
    -
    -
    - -
    - -
    ${LabelDateAddedBehaviorHelp}
    -
    - -
    - -
    ${OptionSaveMetadataAsHiddenHelp}
    -
    - -
    -
    -
    - -
    ${LabelFanartApiKeyHelp}
    - -
    -
    -
    - -
    - - -
    -
    -
    -
    \ No newline at end of file diff --git a/src/manifest.json b/src/manifest.json index a438ba9ccd..289c05699c 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -4,7 +4,7 @@ "description": "Jellyfin: the Free Software Media System.", "lang": "en-US", "short_name": "Jellyfin", - "start_url": "/web/index.html", + "start_url": "/web/index.html#!/home.html", "theme_color": "#101010", "background_color": "#101010", "display": "standalone", @@ -28,8 +28,5 @@ "src": "touchicon512.png", "type": "image/png" } - ], - "related_applications": [{ - "platform": "web" - }] + ] } diff --git a/src/dashboardhosting.html b/src/networking.html similarity index 97% rename from src/dashboardhosting.html rename to src/networking.html index 1ca1f3c0c6..4ea44cee24 100644 --- a/src/dashboardhosting.html +++ b/src/networking.html @@ -1,13 +1,10 @@ -
    - +
    -
    -
    -

    ${TabHosting}

    +

    ${TabNetworking}

    ${Help}
    @@ -97,7 +94,6 @@
    -
    \ No newline at end of file diff --git a/src/scheduledtask.html b/src/scheduledtask.html index ad47d8eb41..4024199c9b 100644 --- a/src/scheduledtask.html +++ b/src/scheduledtask.html @@ -23,9 +23,9 @@
    -
    +
    -
    +

    ${HeaderAddScheduledTaskTrigger}

    @@ -75,14 +75,14 @@
    - -
    -
    \ No newline at end of file +
    diff --git a/src/scripts/imagehelper.js b/src/scripts/imagehelper.js new file mode 100644 index 0000000000..486a030a54 --- /dev/null +++ b/src/scripts/imagehelper.js @@ -0,0 +1,64 @@ +define(["browser"], function (browser) { + "use strict"; + + function getDeviceIcon(device) { + var baseUrl = "img/devices/"; + switch (device) { + case "Opera": + case "Opera TV": + return baseUrl + "opera.svg"; + case "Samsung Smart TV": + return baseUrl + "samsung.svg"; + case "Xbox One": + return baseUrl + "xbox.svg"; + case "Sony PS4": + return baseUrl + "playstation.svg"; + case "Chrome": + return baseUrl + "chrome.svg"; + case "Firefox": + return baseUrl + "firefox.svg"; + case "Edge": + return baseUrl + "edge.svg"; + case "Internet Explorer": + return baseUrl + "msie.svg"; + case "Web Browser": + return baseUrl + "html5.svg"; + default: + return baseUrl + "other.svg"; + } + } + + function getLibraryIcon(library) { + switch (library) { + case "movies": + return "video_library"; + case "music": + return "library_music"; + case "photos": + return "photo_library"; + case "livetv": + return "live_tv"; + case "tvshows": + return "tv"; + case "trailers": + return "local_movies"; + case "homevideos": + return "photo_library"; + case "musicvideos": + return "music_video"; + case "books": + return "library_books"; + case "channels": + return "videocam"; + case "playlists": + return "view_list"; + default: + return "folder"; + } + } + + return { + getDeviceIcon: getDeviceIcon, + getLibraryIcon: getLibraryIcon + }; +}); \ No newline at end of file diff --git a/src/scripts/librarymenu.js b/src/scripts/librarymenu.js index 484ee1135d..89f672ca02 100644 --- a/src/scripts/librarymenu.js +++ b/src/scripts/librarymenu.js @@ -1,4 +1,4 @@ -define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "viewManager", "libraryBrowser", "appRouter", "apphost", "playbackManager", "browser", "globalize", "paper-icon-button-light", "material-icons", "scrollStyles", "flexStyles"], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, browser, globalize) { +define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "viewManager", "libraryBrowser", "appRouter", "apphost", "playbackManager", "browser", "globalize", "scripts/imagehelper", "paper-icon-button-light", "material-icons", "scrollStyles", "flexStyles"], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, browser, globalize, imageHelper) { "use strict"; function getCurrentApiClient() { @@ -268,7 +268,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " }, { name: globalize.translate("TabDashboard"), href: "dashboard.html", - pageIds: ["dashboardPage", "serverActivityPage"], + pageIds: ["dashboardPage"], icon: "dashboard" }, { name: globalize.translate("General"), @@ -281,15 +281,13 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " pageIds: ["userProfilesPage", "newUserPage", "editUserPage", "userLibraryAccessPage", "userParentalControlPage", "userPasswordPage"], icon: "people" }, { - name: globalize.translate("TabLibrary"), + name: globalize.translate("HeaderLibraries"), href: "library.html", pageIds: ["mediaLibraryPage", "librarySettingsPage", "libraryDisplayPage", "metadataImagesConfigurationPage", "metadataNfoPage"], - icon: "folder", - color: "#38c" + icon: "folder" }, { name: globalize.translate("TabPlayback"), icon: "play_arrow", - color: "#E5342E", href: "playbackconfiguration.html", pageIds: ["playbackConfigurationPage", "streamingSettingsPage"] }, { @@ -309,6 +307,12 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " pageIds: ["devicesPage", "devicePage"], icon: "devices" }); + links.push({ + name: globalize.translate("HeaderActivity"), + href: "serveractivity.html", + pageIds: ["serverActivityPage"], + icon: "assessment" + }); links.push({ name: globalize.translate("DLNA"), href: "dlnasettings.html", @@ -323,24 +327,29 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " name: globalize.translate("TabLiveTV"), href: "livetvstatus.html", pageIds: ["liveTvStatusPage", "liveTvTunerPage"], - icon: "tv" + icon: "live_tv" }); links.push({ name: globalize.translate("DVR"), href: "livetvsettings.html", pageIds: ["liveTvSettingsPage"], - icon: "list" + icon: "dvr" }); links.push({ divider: true, - name: globalize.translate("TabExpert") + name: globalize.translate("TabAdvanced") }); links.push({ - name: globalize.translate("TabAdvanced"), - icon: "code", - href: "dashboardhosting.html", - color: "#F16834", - pageIds: ["dashboardHostingPage", "serverSecurityPage"] + name: globalize.translate("TabNetworking"), + icon: "cloud", + href: "networking.html", + pageIds: ["networkingPage"] + }); + links.push({ + name: globalize.translate("HeaderApiKeys"), + icon: "vpn_key", + href: "apikeys.html", + pageIds: ["apiKeysPage"] }); links.push({ name: globalize.translate("TabLogs"), @@ -351,14 +360,12 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " links.push({ name: globalize.translate("TabNotifications"), icon: "notifications", - color: "brown", href: "notificationsettings.html", pageIds: ["notificationSettingsPage", "notificationSettingPage"] }); links.push({ name: globalize.translate("TabPlugins"), icon: "shopping_cart", - color: "#9D22B1", href: "installedplugins.html", pageIds: ["pluginsPage", "pluginCatalogPage"] }); @@ -436,8 +443,8 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " function createDashboardMenu(apiClient) { return getToolsMenuHtml(apiClient).then(function (toolsMenuHtml) { var html = ""; - html += '"; html += toolsMenuHtml; navDrawerScrollContainer.innerHTML = html; @@ -525,46 +532,11 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " html += globalize.translate("HeaderMedia"); html += ""; html += items.map(function (i) { - var icon = "folder"; + var icon = i.icon || imageHelper.getLibraryIcon(i.CollectionType); var itemId = i.Id; - - if ("channels" === i.CollectionType) { - itemId = "channels"; - } - else if ("livetv" === i.CollectionType) { - itemId = "livetv"; - } - - else if ("photos" === i.CollectionType) { - icon = "photo_library"; - } - else if ("music" === i.CollectionType || "musicvideos" === i.CollectionType) { - icon = "library_music"; - } - else if ("books" === i.CollectionType) { - icon = "library_books"; - } - else if ("playlists" === i.CollectionType) { - icon = "view_list"; - } - else if ("movies" === i.CollectionType) { - icon = "video_library"; - } - else if ("channels" === i.CollectionType || "Channel" === i.Type) { - icon = "videocam"; - } - else if ("tvshows" === i.CollectionType) { - icon = "tv"; - } - else if ("livetv" === i.CollectionType) { - icon = "live_tv"; - } - icon = i.icon || icon; - if (i.onclick) { i.onclick; } - return '' + icon + '' + i.Name + ""; }).join(""); libraryMenuOptions.innerHTML = html; @@ -762,7 +734,9 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", " return new Promise(function (resolve, reject) { require(["navdrawer"], function (navdrawer) { navDrawerInstance = new navdrawer(getNavDrawerOptions()); - navDrawerElement.classList.remove("hide"); + if (!layoutManager.tv) { + navDrawerElement.classList.remove("hide"); + } resolve(navDrawerInstance); }); }); diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 31121b2c15..f4c88087a0 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -58,10 +58,10 @@ define([ roles: "admin" }); defineRoute({ - path: "/dashboardhosting.html", + path: "/networking.html", autoFocus: false, roles: "admin", - controller: "dashboardhosting" + controller: "networking" }); defineRoute({ path: "/devices.html", @@ -334,10 +334,10 @@ define([ controller: "serveractivity" }); defineRoute({ - path: "/serversecurity.html", + path: "/apikeys.html", autoFocus: false, roles: "admin", - controller: "serversecurity" + controller: "apikeys" }); defineRoute({ path: "/streamingsettings.html", diff --git a/src/scripts/site.js b/src/scripts/site.js index f075ec17f4..36f4a740a7 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -213,17 +213,14 @@ var Dashboard = { } }, capabilities: function (appHost) { - var caps = { + var capabilities = { PlayableMediaTypes: ["Audio", "Video"], SupportedCommands: ["MoveUp", "MoveDown", "MoveLeft", "MoveRight", "PageUp", "PageDown", "PreviousLetter", "NextLetter", "ToggleOsd", "ToggleContextMenu", "Select", "Back", "SendKey", "SendString", "GoHome", "GoToSettings", "VolumeUp", "VolumeDown", "Mute", "Unmute", "ToggleMute", "SetVolume", "SetAudioStreamIndex", "SetSubtitleStreamIndex", "DisplayContent", "GoToSearch", "DisplayMessage", "SetRepeatMode", "ChannelUp", "ChannelDown", "PlayMediaSource", "PlayTrailers"], SupportsPersistentIdentifier: "cordova" === self.appMode || "android" === self.appMode, SupportsMediaControl: true }; - caps.IconUrl = appHost.deviceIconUrl(); - caps.SupportsSync = appHost.supports("sync"); - caps.SupportsContentUploading = appHost.supports("cameraupload"); appHost.getPushTokenInfo(); - return caps = Object.assign(caps, appHost.getPushTokenInfo()); + return capabilities = Object.assign(capabilities, appHost.getPushTokenInfo()); } }; var AppInfo = {}; @@ -484,6 +481,9 @@ var AppInfo = {}; onGlobalizeInit(browser); }); }); + require(["keyboardnavigation"], function(keyboardnavigation) { + keyboardnavigation.enable(); + }); }); }); } @@ -521,13 +521,13 @@ var AppInfo = {}; } require(["apphost", "css!css/librarybrowser"], function (appHost) { - loadPlugins([], appHost, browser).then(function () { + loadPlugins(appHost, browser).then(function () { onAppReady(browser); }); }); } - function loadPlugins(externalPlugins, appHost, browser, shell) { + function loadPlugins(appHost, browser, shell) { console.log("Loading installed plugins"); var list = [ "components/playback/playaccessvalidation", @@ -546,8 +546,8 @@ var AppInfo = {}; } } - for (var index = 0, length = externalPlugins.length; index < length; index++) { - list.push(externalPlugins[index]); + if (window.NativeShell) { + list = list.concat(window.NativeShell.getPlugins()); } return new Promise(function (resolve, reject) { @@ -880,6 +880,7 @@ var AppInfo = {}; define("serverNotifications", [componentsPath + "/serverNotifications/serverNotifications"], returnFirstDependency); define("appFooter-shared", ["appFooter"], createSharedAppFooter); define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency); + define("keyboardnavigation", [componentsPath + "/keyboardnavigation"], returnFirstDependency); define("connectionManager", [], function () { return ConnectionManager; }); @@ -1015,6 +1016,9 @@ var AppInfo = {}; } if ("livetv" === item) { + if ("programs" === options.section) { + return "livetv.html?tab=0&serverId=" + options.serverId; + } if ("guide" === options.section) { return "livetv.html?tab=1&serverId=" + options.serverId; } @@ -1047,6 +1051,10 @@ var AppInfo = {}; return "livetv.html?tab=4&serverId=" + options.serverId; } + if ("seriesrecording" === options.section) { + return "livetv.html?tab=5&serverId=" + options.serverId; + } + return "livetv.html?serverId=" + options.serverId; } diff --git a/src/selectserver.html b/src/selectserver.html index 1ddab3e6d8..dd52467bfe 100644 --- a/src/selectserver.html +++ b/src/selectserver.html @@ -1,7 +1,7 @@
    -

    ${HeaderSelectServer}

    +

    ${HeaderSelectServer}

    @@ -12,4 +12,4 @@ ${ButtonAddServer}
    -
    \ No newline at end of file +
    diff --git a/src/serveractivity.html b/src/serveractivity.html index 153bbec546..e2e1795691 100644 --- a/src/serveractivity.html +++ b/src/serveractivity.html @@ -1,13 +1,10 @@
    -
    -

    -
    diff --git a/src/strings/ar.json b/src/strings/ar.json index f51ebb4fd4..1ee427278f 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -1,7 +1,6 @@ { "AddItemToCollectionHelp": "أضف عناصر إلى المجاميع بالبحث عنهم واستخدام قائمة الزر الأيمن أو قئامة اللمس لإضافتهم إلى المجاميع.", "AdditionalNotificationServices": "تصفح كتالوج الملحقات لتثبيث خدمات إشعارات إضافية.", - "Advanced": "متقدم", "Alerts": "التنبيهات", "All": "الكل", "AllLibraries": "كل المكتبات", @@ -390,8 +389,6 @@ "LabelExtractChaptersDuringLibraryScan": "استخلص صور الأبواب أثناء تمشيط المكتبة", "LabelExtractChaptersDuringLibraryScanHelp": "عند التفعيل، فإن صور الأبواب ستُستخلص عندما تدرج الفيديوهات الجديدة أثناء تمشيط المكتبة. عند عدم التفعيل فإن عملية الاستخلاص ستكون محصورة أثناء مهمة صور الأبواب المجدولة، ما يسمح لعملية تمشيط المكتبة أن تنتهي بصورة أسرع.", "LabelFailed": "العملية فشلت", - "LabelFanartApiKey": "مفتاح api شخصي:", - "LabelFanartApiKeyHelp": "الطلبات الموجهة لخدمة fanart دون حيازة مفتاح api شخصي ستظهر لك الصور التي تم اعتمادها قبل أكثر من 7 أيام. أما مع استعمال مفتاح api شخصي، فإن فترة اعتماد الصور ستنخفض إلى 48 ساعة. أما إذا كنت تملك اشتراك VIP في خدمة fanart فإن فترة الاعتماد ستنخفض إلى 10 دقائق.", "LabelFileOrUrl": "الملف أو الرابط:", "LabelFinish": "إنهاء", "LabelForgotPasswordUsernameHelp": "أدخل اسم المستخدم الخاص بك، إن كنت تتذكرها", @@ -831,11 +828,9 @@ "TabDirectPlay": "تشغيل مباشر", "TabDisplay": "إظهار", "TabEpisodes": "الحلقات", - "TabExpert": "الخبير", "TabFavorites": "المفضلة", "TabGenres": "أنواع الأفلام", "TabGuide": "الدليل", - "TabHosting": "الاستضافة", "TabInfo": "معلومات", "TabLatest": "الاخير", "TabLibrary": "المكتبة", @@ -862,7 +857,6 @@ "TabResponses": "الردود", "TabResumeSettings": "استئناف الإعدادات", "TabScheduledTasks": "المهام المجدولة", - "TabSecurity": "الحماية", "TabSeries": "المسلسلات", "TabServer": "الخادم", "TabSettings": "الإعدادات", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index 80290c8c8d..e11b5a7c0e 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -4,7 +4,6 @@ "AddToCollection": "Добавяне към колекция", "AddToPlaylist": "Добавяне към списък", "AddedOnValue": "Добавено на {0}", - "Advanced": "Разширени", "AirDate": "Дата на излъчване", "Aired": "Излъчено", "Albums": "Албуми", @@ -349,8 +348,6 @@ "LabelEvent": "Събитие:", "LabelEveryXMinutes": "На всеки:", "LabelFailed": "Неуспешно", - "LabelFanartApiKey": "Личен ППИ ключ:", - "LabelFanartApiKeyHelp": "Заявки до fanart без личен API ключ връщат изображения, които са били одобрени преди повече от 7 дни. С личен API ключ, това време пада на 48 часа, а ако сте и fanart VIP потребител, това става около 10 минути.", "LabelFinish": "Готово", "LabelFont": "Шрифт:", "LabelForgotPasswordUsernameHelp": "Въведете потребителското си име, ако го помните.", @@ -710,11 +707,9 @@ "TabDirectPlay": "Директно пускане", "TabDisplay": "Показване", "TabEpisodes": "Епизоди", - "TabExpert": "За напреднали", "TabFavorites": "Любими", "TabGenres": "Жанрове", "TabGuide": "Ръководство", - "TabHosting": "Хостинг", "TabInfo": "Информация", "TabLatest": "Последни", "TabLibrary": "Библиотека", @@ -741,7 +736,6 @@ "TabResponses": "Отговори", "TabResumeSettings": "Настройки за продължаване", "TabScheduledTasks": "Планирани задачи", - "TabSecurity": "Защита", "TabSeries": "Сериали", "TabServer": "Сървър", "TabSettings": "Настройки", diff --git a/src/strings/ca.json b/src/strings/ca.json index fbabe27a5e..3be019b6de 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -4,7 +4,6 @@ "AddToCollection": "Afegeix a col·lecció", "AddToPlayQueue": "Afegeix a la llista de reproducció", "AddToPlaylist": "Afegeix a la llista de reproducció", - "Advanced": "Avançat", "All": "Tot", "AllChannels": "Tots els canals", "AllEpisodes": "Tots els episodis", @@ -331,7 +330,6 @@ "LabelExternalDDNS": "Domini extern:", "LabelExtractChaptersDuringLibraryScan": "Extrau imatges dels episodis durant l'escaneig de la biblioteca", "LabelFailed": "Fallit", - "LabelFanartApiKey": "Clau api personal:", "LabelFinish": "Finalitzar", "LabelFriendlyName": "Nom amistós", "LabelServerNameHelp": "El nom servirà per identificar aquest servidor. Si es deixa en blanc s'emprarà el nom de l'ordinador.", @@ -702,7 +700,6 @@ "TabRecordings": "Enregistraments", "TabResponses": "Respostes", "TabScheduledTasks": "Tasques Programades", - "TabSecurity": "Seguretat", "TabSeries": "Sèries", "TabServer": "Servidor", "TabSettings": "Preferències", diff --git a/src/strings/cs.json b/src/strings/cs.json index 1749ac7130..de25d4903e 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -8,7 +8,6 @@ "AddToPlaylist": "Přidat do playlistu", "AddedOnValue": "Přidáno {0}", "AdditionalNotificationServices": "Prohlédněte si katalog zásuvných modulů pro nainstalaci další oznámovací služby.", - "Advanced": "Pokročilé", "Albums": "Alba", "All": "Vše", "AllChannels": "Všechny kanály", @@ -305,7 +304,7 @@ "HeaderFrequentlyPlayed": "Nejčastěji přehráváno", "HeaderGenres": "Žánry", "HeaderGuideProviders": "Průvodce poskytovatelů", - "HeaderHttpHeaders": "HTTP hlavičky", + "HeaderHttpHeaders": "Http hlavičky", "HeaderIdentification": "Identifikace", "HeaderIdentificationCriteriaHelp": "Zadejte alespoň jedno identifikační kritérium.", "HeaderIdentificationHeader": "Hlavička identifikace", @@ -548,8 +547,6 @@ "LabelExtractChaptersDuringLibraryScan": "Extrakce obrázků kapitol během prohledávání vaší knihovny", "LabelExtractChaptersDuringLibraryScanHelp": "Jestliže povolíte, budou snímky kapitol extrahovány při pravidelném prohledávání vaší knihovny. Pokud zakážete budou snímky extrahovány během naplánované úlohy pro extrakci snímků z kapitol, což umožní, při pravidelném prohledávání vaší knihovny, dokončit skenování rychleji.", "LabelFailed": "Selhání", - "LabelFanartApiKey": "Osobní klíč api:", - "LabelFanartApiKeyHelp": "Žádosti o fanart bez osobního API klíče vrátí pouze výsledky, které byly schváleny před 7-mi dny a dříve. S osobním API klíčem, získáte schválené výsledky do 48 hodin, a pokud jste fanart VIP člen, pak limit klesne na 10 minut.", "LabelFileOrUrl": "Soubor nebo URL:", "LabelFinish": "Dokončit", "LabelFont": "Písmo:", @@ -621,8 +618,8 @@ "LabelMetadataSaversHelp": "Vyberte formáty souborů pro uložení metadat.", "LabelMethod": "Metoda:", "LabelMinBackdropDownloadWidth": "Maximální šířka pro stažení pozadí:", - "LabelMinResumeDuration": "Minimální doba trvání (v sekundách):", - "LabelMinResumeDurationHelp": "Tituly kratší než tato délka nebudou pozastavitelné", + "LabelMinResumeDuration": "Minimální doba trvání:", + "LabelMinResumeDurationHelp": "Videa kratší než tato délka nebudou pozastavitelné", "LabelMinResumePercentage": "Minimální procento pro přerušení:", "LabelMinResumePercentageHelp": "Tituly budou označeny jako \"nepřehráno\", pokud budou zastaveny před tímto časem", "LabelMinScreenshotDownloadWidth": "Minimální šířka screenshotu obrazovky:", @@ -1146,7 +1143,6 @@ "TabFavorites": "Oblíbené", "TabGenres": "Žánry", "TabGuide": "Průvodce", - "TabHosting": "Hostování", "TabLatest": "Nejnovější", "TabLibrary": "Knihovna", "TabLogs": "Záznamy", @@ -1155,7 +1151,7 @@ "TabMusicVideos": "Hudební videa", "TabMyPlugins": "Moje zásuvné moduly", "TabNetworks": "Sítě", - "TabNfoSettings": "Nfo nastavení", + "TabNfoSettings": "NFO nastavení", "TabNotifications": "Oznámení", "TabOther": "Další", "TabParentalControl": "Rodičovská kontrola", @@ -1167,9 +1163,8 @@ "TabProfiles": "Profily", "TabRecordings": "Nahrané", "TabResponses": "Odpovědi", - "TabResumeSettings": "Obnovit nastavení", + "TabResumeSettings": "Obnovit", "TabScheduledTasks": "Naplánované úlohy", - "TabSecurity": "Zabezpečení", "TabSeries": "Série", "TabSettings": "Nastavení", "TabShows": "Seriály", @@ -1388,7 +1383,7 @@ "LabelHomeNetworkQuality": "Kvalita na domácí síti:", "LabelInternetQuality": "Kvalita na internetu:", "LabelKodiMetadataUser": "Uložení dat sledování uživatele do nfo pro:", - "LabelKodiMetadataUserHelp": "Povolte toto nastavení pro uložení dat sledování do souborů nfo pro jiné aplikace, které chcete používat.", + "LabelKodiMetadataUserHelp": "Povolte toto nastavení pro uložení dat sledování do souborů NFO pro jiné aplikace, které chcete používat.", "LabelLanNetworks": "Sítě LAN:", "LabelLimit": "Limit:", "LabelMaxStreamingBitrate": "Maximální kvalita streamování:", @@ -1515,7 +1510,6 @@ "SubtitleSettingsIntro": "Chcete-li nastavit výchozí vzhled a jazyk titulků, zastavte přehrávání videa a klepněte na ikonu uživatele v pravé horní části aplikace.", "TV": "TV", "TabDirectPlay": "Přímé přehrávání", - "TabExpert": "Expert", "TabInfo": "Info", "TabLiveTV": "Live TV", "TabMetadata": "Metadata", @@ -1535,5 +1529,24 @@ "Vertical": "Svisle", "VideoRange": "Rozsah videa", "ViewPlaybackInfo": "Zobrazení informací o přehrávání", - "Whitelist": "Whitelist" + "Whitelist": "Whitelist", + "HeaderHome": "Domů", + "HeaderHomeSettings": "Nastavení domov. obrazovky", + "DashboardOperatingSystem": "Operační systém: {0}", + "DashboardArchitecture": "Architektura: {0}", + "LaunchWebAppOnStartup": "Spusťte webovou aplikaci Jellyfin ve svém webovém prohlížeči po nastartování Jellyfin serveru", + "LaunchWebAppOnStartupHelp": "Toto otevře se webovou aplikaci ve vašem výchozím webovém prohlížeči, když se spustí server Jellyfin. 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", + "OptionPoster": "Plakát", + "OptionPosterCard": "Filmový pás", + "OptionThumb": "Náhled", + "OptionThumbCard": "Panel náhledů", + "PlaybackData": "Data přehrávání", + "MusicAlbum": "Hudební album", + "MusicArtist": "Interpret", + "MusicVideo": "Videoklip", + "SubtitleOffset": "Nastavení titulků", + "TabNetworking": "Vytváření sítí" } diff --git a/src/strings/da.json b/src/strings/da.json index d847eec1e1..22dfc69cfa 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -7,7 +7,6 @@ "AddToPlaylist": "Tilføj til afspilningsliste", "AddedOnValue": "Tilføjet {0}", "AdditionalNotificationServices": "Kig i plugin-kataloget for at få yderligere uderretnings-tjenester", - "Advanced": "Avanceret", "Alerts": "Advarsler", "All": "Alle", "AllChannels": "Alle kanaler", @@ -483,8 +482,6 @@ "LabelExtractChaptersDuringLibraryScan": "Udtræk kapitelbilleder under biblioteksskanning", "LabelExtractChaptersDuringLibraryScanHelp": "Aktiver dette for at udtrække kapitelbillleder mens videofiler bliver importeret under biblioteksskanningen. Hvi det ikke er aktiveret, bliver de udtrukket når den planlagte opgave kapitelbilleder kører, og lader den almindelige biblioteksskanning afslutte hurtigere.", "LabelFailed": "Fejlet", - "LabelFanartApiKey": "Personlig API nøgle:", - "LabelFanartApiKeyHelp": "Forespørgsler til fanart uden en personlig api nøgle returnerer resultater godkendt for over 7 dage siden. Med en personlig api nøgle falder dette til 48 timer, og hvis du er fanart VIP-medlem falder dette yderligere til omkring 10 minutter.", "LabelFileOrUrl": "Fil eller url:", "LabelFinish": "Afslut", "LabelForgotPasswordUsernameHelp": "Indtast dit brugernavn, hvis du kan huske det.", @@ -1019,7 +1016,6 @@ "TabDirectPlay": "Direkte afspilning", "TabDisplay": "Visning", "TabEpisodes": "Episoder", - "TabExpert": "Ekspert", "TabFavorites": "Favoritter", "TabGenres": "Genre", "TabLatest": "Seneste", @@ -1043,7 +1039,6 @@ "TabResponses": "Svar", "TabResumeSettings": "Indstillinger for Genoptag", "TabScheduledTasks": "Planlagte opgaver", - "TabSecurity": "Sikkerhed", "TabSeries": "Serier", "TabSettings": "Indstillinger", "TabShows": "Serier", @@ -1494,7 +1489,6 @@ "TabCodecs": "Codeks", "TabDLNA": "DLNA", "TabGuide": "Vejledning", - "TabHosting": "Vært", "TabInfo": "Information", "TabLiveTV": "Live TV", "TabLogs": "Log", diff --git a/src/strings/de.json b/src/strings/de.json index ad4c3d7f30..e8eda96e63 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -12,7 +12,6 @@ "AddUserByManually": "Lege einen lokalen User durch manuelle Eingabe der User-Informationen an.", "AddedOnValue": "Hinzugefügt {0}", "AdditionalNotificationServices": "Schau im Pluginkatalog, um weitere Benachrichtigungsdienste zu installieren.", - "Advanced": "Fortgeschritten", "AirDate": "Erstausstrahlung", "Aired": "Ausgestrahlt", "Albums": "Alben", @@ -23,7 +22,7 @@ "AllLanguages": "Alle Sprachen", "AllLibraries": "Alle Bibliotheken", "AllowDeletionFromAll": "Erlaube Medienlöschung in allen Bibliotheken", - "AllowHWTranscodingHelp": "Wenn aktiviert, erlaube dem Empfänger eine Transkodierung des Streams in Echtzeit vorzunehmen. Kann CPU-Ressourcen sparen", + "AllowHWTranscodingHelp": "Wenn aktiviert, übernimmt der Tuner die Transkodierung in Echtzeit. Das hilft eventuell die Transkodierung auf dem Jellyfin Servers zu reduzieren. (Spart Hardwareressourcen)", "AllowMediaConversion": "Erlaube Medienkonvertierung", "AllowMediaConversionHelp": "Erlaube oder unterbinde Zugriff auf die Medienkonvertierung.", "AllowOnTheFlySubtitleExtraction": "Erlaube Untertitelextraktion \"on-the-fly\"", @@ -145,7 +144,7 @@ "ColorSpace": "Farbraum", "CommunityRating": "Community Bewertung", "Composer": "Komponist", - "ConfigureDateAdded": "Bestimme in den Bibliotheks-Einstellungen des Jellyfin Server Dashboards, wie das Feld \"Hinzugefügt am\" interpretiert werden soll.", + "ConfigureDateAdded": "Bestimme in den Bibliotheks-Einstellungen des Jellyfin Server Dashboards, wie das Feld \"Hinzugefügt am\" interpretiert werden soll", "ConfirmDeleteImage": "Bild löschen?", "ConfirmDeleteItem": "Löschen dieses Eintrages bedeutet das Löschen der Datei und das Entfernen aus der Medien-Bibliothek. Möchtest du wirklich fortfahren?", "ConfirmDeleteItems": "Das Löschen dieser Objekte löscht die Dateien vom Laufwerk und in deiner Medienbibliothek. Bist du wirklich sicher?", @@ -344,7 +343,7 @@ "HeaderFrequentlyPlayed": "Oft gesehen", "HeaderGuideProviders": "Fernsehprogramm Quellen", "HeaderIdentification": "Identifizierung", - "HeaderIdentificationCriteriaHelp": "Gebe mindestens ein Identifikationskriterium an.", + "HeaderIdentificationCriteriaHelp": "Gib mindestens ein Identifikationskriterium an.", "HeaderIdentificationHeader": "Identfikations Header", "HeaderIdentifyItemHelp": "Gib ein oder mehrere Suchkriterien ein. Entferne Kriterien um die Suchergebnisse zu erweitern.", "HeaderImageOptions": "Bild Einstellungen", @@ -354,7 +353,7 @@ "HeaderItems": "Inhalte", "HeaderKeepRecording": "Aufnahme behalten", "HeaderKeepSeries": "Serie behalten", - "HeaderKodiMetadataHelp": "Jellyfin bietet native Unterstützung von Nfo Metadatendateien. Um Nfo Metadaten zu aktivieren oder deaktivieren, verwende den \"Metadaten\" Tab um die Optionen für deinen Medientypen zu konfigurieren.", + "HeaderKodiMetadataHelp": "Jellyfin bietet native Unterstützung von NFO Metadatendateien. Um NFO Metadaten zu aktivieren oder deaktivieren, verwende den \"Metadaten\" Tab um die Optionen für deinen Medientypen zu konfigurieren.", "HeaderLatestEpisodes": "Neueste Episoden", "HeaderLatestMedia": "Neueste Medien", "HeaderLatestMovies": "Neueste Filme", @@ -594,8 +593,6 @@ "LabelExtractChaptersDuringLibraryScan": "Erzeuge Kapitelbilder während des Bibliothekscans", "LabelExtractChaptersDuringLibraryScanHelp": "Fall aktiviert, werden Kapitelbilder während des Imports von Videos beim Bibliothekenscan erzeugt. Falls deaktiviert, werden die Kapitelbilder während einer eigens dafür geplanten Aufgabe erstellt, was den regelmäßig Bibliothekenscan beschleunigt.", "LabelFailed": "Fehlgeschlagen", - "LabelFanartApiKey": "Persönlicher API Schlüssel:", - "LabelFanartApiKeyHelp": "Fanart Anfragen ohne einen persönlichen API Schlüssel liefert Bilder der letzten 7 Tage. Bei Verwendung eines persönlichen API Schlüssels werden Ergebnisse der letzten 48 Stunden, und als VIP Member, der letzten 10 Minuten geliefert.", "LabelFileOrUrl": "Datei oder URL:", "LabelFinish": "Fertig", "LabelFont": "Schriftart:", @@ -629,7 +626,7 @@ "LabelKodiMetadataEnableExtraThumbs": "Kopiere Extrafanart in Extrathumbs", "LabelKodiMetadataEnableExtraThumbsHelp": "Beim downloaden von Bildern können diese sowohl als Extrafanart als auch als Extrathumb gespeichert werden, um maximale Kodi Kompatibilität zu erzielen.", "LabelKodiMetadataEnablePathSubstitution": "Aktiviere Pfadersetzung", - "LabelKodiMetadataEnablePathSubstitutionHelp": "Aktiviert die Pfadersetzung für Bildpfade durch Benutzung der Server Pfadersetzung Einstellungen", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Aktiviert die Pfadersetzung für Bildpfade durch Benutzung der Server Pfadersetzung Einstellungen.", "LabelKodiMetadataSaveImagePaths": "Speicher Bildpfade innerhalb der NFO Dateien", "LabelKodiMetadataSaveImagePathsHelp": "Dies ist empfehlenswert wenn du Dateinamen hast, die nicht den Kodi Richtlinien entsprechen.", "LabelKodiMetadataUser": "Speichere den \"Gesehen\" Status von Benutzern in NFO's für:", @@ -666,8 +663,8 @@ "LabelMetadataSaversHelp": "Wähle das Dateiformat in dem deine Metadaten gespeichert werden sollen.", "LabelMethod": "Methode:", "LabelMinBackdropDownloadWidth": "Minimale Breite für zu herunterladende Hintergründe:", - "LabelMinResumeDuration": "Minimale Dauer für Wiederaufnahme (Sekunden):", - "LabelMinResumeDurationHelp": "Titel die kürzer als dieser Wert sind, werden nicht fortsetzbar sein", + "LabelMinResumeDuration": "Minimale Dauer für Wiederaufnahme:", + "LabelMinResumeDurationHelp": "Die kürzeste Videolänge in Sekunden, die den Wiedergabeplatz speichert und dich fortsetzen lässt", "LabelMinResumePercentage": "Minimale Prozent für Wiederaufnahme:", "LabelMinResumePercentageHelp": "Titel werden als \"Ungesehen\" eingetragen, wenn sie vor dieser Zeit gestoppt werden", "LabelMinScreenshotDownloadWidth": "Minimale Breite für zu herunterladende Screenshot:", @@ -684,7 +681,7 @@ "LabelMusicStreamingTranscodingBitrateHelp": "Wähle die maximale Bitrate für das streamen von Musik", "LabelNewName": "Neuer Name:", "LabelNewPassword": "Neues Passwort:", - "LabelNewPasswordConfirm": "Neues Passwort wiederhohlen:", + "LabelNewPasswordConfirm": "Neues Passwort wiederholen:", "LabelNewsCategories": "Nachrichtenkategorien:", "LabelNext": "Nächstes", "LabelNotificationEnabled": "Aktiviere diese Benachrichtigung", @@ -754,7 +751,7 @@ "LabelSkipBackLength": "Sprungweite rückwärts:", "LabelSkipForwardLength": "Sprungweite vorwärts:", "LabelSkipIfAudioTrackPresent": "Überspringen, falls der Ton bereits der herunterladbaren Sprache entspricht", - "LabelSkipIfAudioTrackPresentHelp": "Entferne den Haken, um sicherzustellen das alle Videos Untertitel haben, unabhängig von der Audiosprache", + "LabelSkipIfAudioTrackPresentHelp": "Entferne den Haken, um sicherzustellen das alle Videos Untertitel haben, unabhängig von der Audiosprache.", "LabelSkipIfGraphicalSubsPresent": "Überspringen, falls das Video bereits eingebettete Untertitel enthält", "LabelSkipIfGraphicalSubsPresentHelp": "Das Vorhalten von textbasierten Untertiteln führt zu einer effizienteren Anzeige und verringert die Wahrscheinlichkeit einer Videotranskodierung.", "LabelSonyAggregationFlags": "Sony Aggregation Flags:", @@ -814,7 +811,7 @@ "LabelZipCode": "PLZ:", "LabelffmpegPath": "FFmpeg Verzeichnis:", "LabelffmpegPathHelp": "Verzeichnis zur runtergeladenen FFmpeg Applikation oder zum Ordner, der FFMpeg enthält.", - "LanNetworksHelp": "Komma separierte Liste von IP Adressen oder IP Masken die als lokale Netzwerke behandelt werden sollen um Bandbreitenlimitationen auszusetzen. Wenn befüllt werden alle anderen IP Adressen als externe Netzwerke behandelt und unterliegen den Bandbreitenlimitationen für externe Verbindungen. Wenn leer, wird nur das SubNetz des Servers als Lokales Netz gesetzt-", + "LanNetworksHelp": "Komma separierte Liste von IP Adressen oder IP Masken die als lokale Netzwerke behandelt werden sollen um Bandbreitenlimitationen auszusetzen. Wenn befüllt werden alle anderen IP Adressen als externe Netzwerke behandelt und unterliegen den Bandbreitenlimitationen für externe Verbindungen. Wenn leer, wird nur das SubNetz des Servers als Lokales Netz gesetzt.", "Large": "Groß", "LatestFromLibrary": "Neueste {0}", "LearnHowYouCanContribute": "Erfahre, wie du unterstützen kannst.", @@ -848,7 +845,7 @@ "MediaInfoTimestamp": "Zeitstempel", "MediaIsBeingConverted": "Das Medium wird in ein Format konvertiert, das mit dem Abspielgerät kompatibel ist.", "Menu": "Menü", - "MessageAlreadyInstalled": "Diese Version ist bereits installiert", + "MessageAlreadyInstalled": "Diese Version ist bereits installiert.", "MessageAreYouSureDeleteSubtitles": "Bist du dir sicher diese Untertitel Datei löschen zu wollen?", "MessageAreYouSureYouWishToRemoveMediaFolder": "Bist du dir sicher dieses Medienverzeichnis entfernen zu wollen?", "MessageConfirmDeleteGuideProvider": "Möchten Sie diese Quelle wirklich löschen?", @@ -873,8 +870,8 @@ "MessageInstallPluginFromApp": "Dieses Plugin muss von der App aus installiert werden, mit der du es benutzen willst.", "MessageInvalidForgotPasswordPin": "Ein ungültiger oder abgelaufener PIN wurde eingegeben. Bitte versuche es noch einmal.", "MessageInvalidUser": "Falscher Benutzername oder Passwort. Bitte versuche es noch einmal.", - "MessageItemSaved": "Element gespeichert", - "MessageItemsAdded": "Einträge hinzugefügt", + "MessageItemSaved": "Element gespeichert.", + "MessageItemsAdded": "Einträge hinzugefügt.", "MessageLeaveEmptyToInherit": "Freilassen für die Vererbung von Berechtigungen oder dem systemweiten Standardwert.", "MessageNoAvailablePlugins": "Keine verfügbaren Erweiterungen.", "MessageNoMovieSuggestionsAvailable": "Momentan sind keine Filmvorschläge verfügbar. Schaue und bewerte zuerst deine Filme. Komme danach zurück, um deine Filmvorschläge anzuschauen.", @@ -888,7 +885,7 @@ "MessagePluginConfigurationRequiresLocalAccess": "Melde dich bitte direkt an deinem lokalen Server an, um dieses Plugin konfigurieren zu können.", "MessagePluginInstallDisclaimer": "Plugins aus der Jellyfin Community sind eine gute Möglichkeit um Jellyfin mit weiteren Funktionen und Vorteilen aufzuwerten. Bevor Sie diese jedoch installieren, seien Sie sich den daraus resultierenden möglichen Umständen für Jellyfin bewusst. Dies können z.B. längere Bibliotheken Scans, weiterführende Verarbeitung von Daten im Hintergrund sowie Systeminstabilität sein.", "MessageReenableUser": "Für Reaktivierung schauen Sie unten", - "MessageSettingsSaved": "Einstellungen gespeichert", + "MessageSettingsSaved": "Einstellungen gespeichert.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Die folgenden Medienverzeichnisse werden aus der Jellyfin Bibliothek entfernt:", "MessageUnableToConnectToServer": "Wir können gerade keine Verbindung zum gewählten Server herstellen. Bitte stellen Sie sicher das dieser läuft und versuchen Sie es erneut.", "MessageUnsetContentHelp": "Inhalte werden als Verzeichnisse dargestellt. Für eine besser Anzeige nutzen Sie nach Möglichkeit den Meta-Data Manager und wählen Sie einen Medien-Typen für Unterverzeichnisse.", @@ -947,13 +944,13 @@ "OptionAllowRemoteControlOthers": "Erlaube Fernsteuerung anderer Benutzer", "OptionAllowRemoteSharedDevices": "Erlaube Fernsteuerung geteilter Geräte", "OptionAllowRemoteSharedDevicesHelp": "DLNA-Geräte werden gemeinsam genutzt, bis ein Benutzer die Steuerung übernimmt.", - "OptionAllowSyncTranscoding": "Erlaube Herunterladen von Dateien, die transkodiert werden müssen.", + "OptionAllowSyncTranscoding": "Erlaube Herunterladen von Dateien, die transkodiert werden müssen", "OptionAllowUserToManageServer": "Dieser Benutzer kann den Server managen", "OptionAllowVideoPlaybackRemuxing": "Erlaube Video-Wiedergabe mittels Konvertierung ohne Neu-Enkodierung", "OptionAllowVideoPlaybackTranscoding": "Erlaube Video-Wiedergabe die Transkodierung benötigt", "OptionArtist": "Interpret", "OptionAscending": "Aufsteigend", - "OptionAutomaticallyGroupSeries": "Vermische Serieninhalte, die in verschiedenen Ordnern abgelegt sind.", + "OptionAutomaticallyGroupSeries": "Vermische Serieninhalte, die in verschiedenen Ordnern abgelegt sind", "OptionAutomaticallyGroupSeriesHelp": "Wenn aktiviert, werden Inhalte einer Serie in verschiedenen Ordnern innerhalb einer Bibliothek als eine Serie angezeigt.", "OptionBlockBooks": "Bücher", "OptionBlockChannelContent": "Internet Channelinhalte", @@ -1030,9 +1027,9 @@ "OptionPlayed": "Gesehen", "OptionPremiereDate": "Premiere", "OptionReleaseDate": "Veröffentlichungsdatum", - "OptionReportByteRangeSeekingWhenTranscoding": "Teilt die Unterstützung der Bytesuche während des transkodierens auf dem Server mit.", + "OptionReportByteRangeSeekingWhenTranscoding": "Teilt die Unterstützung der Bytesuche während des transkodierens auf dem Server mit", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Dies wird für manche Abspielgeräte benötigt, auf denen die Zeitsuche nicht gut funktioniert.", - "OptionRequirePerfectSubtitleMatch": "Lade nur Untertitel mit einem perfekten Ergebnis zu meinen Videos.", + "OptionRequirePerfectSubtitleMatch": "Lade nur Untertitel mit einem perfekten Ergebnis zu meinen Videos", "OptionRequirePerfectSubtitleMatchHelp": "Perfektes Ergebnis wählt beim Filtern nur Untertitel, welche getestet und für deine exakte Videodatei verifiziert wurden. Die Abwahl dieser Option erhöht die Chance, dass Untertitel heruntergeladen werden, die Möglichkeit falscher Untertitel oder dass Text an falschen Positionen angezeigt wird ist aber ebenfalls größer.", "OptionResElement": "Res Element", "OptionResumable": "Fortsetzen", @@ -1053,20 +1050,20 @@ "OptionWeekly": "Wöchentlich", "OriginalAirDateValue": "Erstausstrahlung: {0}", "Overview": "Übersicht", - "PackageInstallCancelled": "{0} Installation abgebrochen", - "PackageInstallCompleted": "{0} Installation abgeschlossen", - "PackageInstallFailed": "{0} Installation fehlgeschlagen", + "PackageInstallCancelled": "{0} Installation abgebrochen.", + "PackageInstallCompleted": "{0} Installation abgeschlossen.", + "PackageInstallFailed": "{0} Installation fehlgeschlagen.", "ParentalRating": "Altersfreigabe", "PasswordMatchError": "Die Passwörter müssen übereinstimmen.", "PasswordResetComplete": "Das Passwort wurde zurückgesetzt.", "PasswordResetConfirmation": "Möchtest du das Passwort wirklich zurücksetzen?", "PasswordResetHeader": "Passwort zurücksetzen", - "PasswordSaved": "Passwort gespeichert", + "PasswordSaved": "Passwort gespeichert.", "People": "Personen", "PerfectMatch": "Perfektes Ergbnis", "Photos": "Fotos", "PictureInPicture": "Bild-in-Bild", - "PinCodeResetComplete": "Der PIN wurde zurückgesetzt", + "PinCodeResetComplete": "Der PIN wurde zurückgesetzt.", "PinCodeResetConfirmation": "Sind Sie sich sicher, dass Sie Ihren PIN Code zurücksetzen möchten?", "PlaceFavoriteChannelsAtBeginning": "Platziere favorisierte Kanäle am Anfang", "Play": "Abspielen", @@ -1085,7 +1082,7 @@ "PluginInstalledMessage": "Das Plugin wurde erfolgreich installiert. Der Jellyfin-Server muss neu gestartet werden, um die Änderungen zu übernehmen.", "PreferEmbeddedTitlesOverFileNames": "Bevorzuge eingebettete Titel vor Dateinamen", "PreferEmbeddedTitlesOverFileNamesHelp": "Das bestimmt den Standard Displaytitel wenn keine lokale oder Internetmetadaten verfügbar sind.", - "PreferredNotRequired": "Bevorzugt, aber nicht benötigt.", + "PreferredNotRequired": "Bevorzugt, aber nicht benötigt", "Premieres": "Premieren", "Previous": "Vorheriges", "Primary": "Primär", @@ -1163,7 +1160,7 @@ "Shows": "Serien", "Shuffle": "Zufallswiedergabe", "SimultaneousConnectionLimitHelp": "Die maximale Anzahl der parallel erlaubten Streams. 0 für kein Limit.", - "SkipEpisodesAlreadyInMyLibrary": "Nehme keine Episoden auf, die schon in meiner Bibliothek verfügbar sind.", + "SkipEpisodesAlreadyInMyLibrary": "Nehme keine Episoden auf, die schon in meiner Bibliothek verfügbar sind", "SkipEpisodesAlreadyInMyLibraryHelp": "Episoden werden mittels Staffel- und Episodennummer verglichen, wenn verfügbar.", "Small": "Klein", "SmallCaps": "Kapitälchen", @@ -1197,7 +1194,6 @@ "TabDirectPlay": "Direktwiedergabe", "TabDisplay": "Anzeige", "TabEpisodes": "Episoden", - "TabExpert": "Experte", "TabFavorites": "Favoriten", "TabGuide": "Programm", "TabLatest": "Neueste", @@ -1209,7 +1205,7 @@ "TabMusicVideos": "Musikvideos", "TabMyPlugins": "Meine Plugins", "TabNetworks": "Sendergruppen", - "TabNfoSettings": "Nfo Einstellungen", + "TabNfoSettings": "NFO Einstellungen", "TabNotifications": "Benachrichtigungen", "TabOther": "Andere", "TabParentalControl": "Kindersicherung", @@ -1221,9 +1217,8 @@ "TabProfiles": "Profile", "TabRecordings": "Aufnahmen", "TabResponses": "Antworten", - "TabResumeSettings": "Fortsetzen Einstellungen", + "TabResumeSettings": "Fortsetzen", "TabScheduledTasks": "Geplante Aufgaben", - "TabSecurity": "Sicherheit", "TabSeries": "Serie", "TabSettings": "Einstellungen", "TabShows": "Serien", @@ -1384,7 +1379,6 @@ "TV": "TV", "TabCodecs": "Codecs", "TabGenres": "Genres", - "TabHosting": "Hosting", "TabInfo": "Info", "TabLogs": "Protokoll", "TabPlugins": "Plugins", @@ -1442,10 +1436,12 @@ "MediaInfoStreamTypeEmbeddedImage": "Eingebettetes Bild", "MediaInfoStreamTypeSubtitle": "Untertitel", "MediaInfoStreamTypeVideo": "Video", - "MessageNoCollectionsAvailable": "Sammlungen ermöglichen es, personalisierte Gruppierungen von Filmen, Serien und Alben zu genießen. Klicken Sie auf die Schaltfläche +, um mit der Erstellung von Sammlungen zu beginnen.", + "MessageNoCollectionsAvailable": "Sammlungen ermöglichen es, personalisierte Gruppierungen von Filmen, Serien und Alben zu genießen. Klicken Sie auf die Schaltfläche +, um mit der Erstellung von Sammlungen zu beginnen.", "OptionDownloadBoxImage": "Box", "OptionLoginAttemptsBeforeLockout": "Legt fest, wie viele falsche Anmeldeversuche durchgeführt werden können, bevor es zur Sperrung kommt.", "OptionLoginAttemptsBeforeLockoutHelp": "0 bedeutet, die Vorgabe von 3 für Nicht-Administratoren und 5 für Administratoren zu übernehmen, -1 deaktiviert die Sperre", "PasswordResetProviderHelp": "Wählen Sie einen Password Reset Provider, der verwendet werden soll, wenn dieser Benutzer ein Passwort zurücksetzen möchte", - "Box": "Box" + "Box": "Box", + "HeaderHome": "Home", + "HeaderHomeSettings": "Home Einstellungen" } diff --git a/src/strings/el.json b/src/strings/el.json index 00fa6a90ae..2c4f0fe8e2 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -8,7 +8,6 @@ "AddToPlaylist": "Πρόσθεσε σε λίστα", "AddedOnValue": "Προστέθηκε {0}", "AdditionalNotificationServices": "Περιηγηθείτε στον κατάλογο plugin για να εγκαταστήσετε πρόσθετες υπηρεσίες ειδοποίησης.", - "Advanced": "Για προχωρημένους", "AirDate": "Ημερομηνία προβολής", "Aired": "Προβλήθηκε", "Albums": "Άλμπουμ", @@ -534,8 +533,6 @@ "LabelExtractChaptersDuringLibraryScan": "Εξαγωγή εικόνων κεφαλαίου κατά τη διάρκεια της σάρωσης βιβλιοθήκης", "LabelExtractChaptersDuringLibraryScanHelp": "Αν είναι ενεργοποιημένη, οι εικόνες κεφαλαίων θα εξαχθούν όταν εισάγονται βίντεο κατά τη διάρκεια της σάρωσης της βιβλιοθήκης. Αν απενεργοποιηθούν, θα εξαχθούν κατά τη διάρκεια της προγραμματισμένης εργασίας των κεφαλαίων, επιτρέποντας την ταχύτερη ολοκλήρωση της σάρωσης κανονικής βιβλιοθήκης.", "LabelFailed": "Αποτυχία", - "LabelFanartApiKey": "Προσωπικό κλειδί api :", - "LabelFanartApiKeyHelp": "Τα αιτήματα για προβολή χωρίς προσωπικό κλειδί API επιστρέφουν εικόνες που εγκρίθηκαν πριν από 7 ημέρες. Με ένα προσωπικό κλειδί API που πέφτει σε 48 ώρες και αν είστε επίσης fanart μέλος VIP που θα μειωθεί περαιτέρω σε περίπου 10 λεπτά.", "LabelFinish": "Τέλος", "LabelFont": "Γραμματοσειρά: ", "LabelForgotPasswordUsernameHelp": "Εισαγωγή όνομα χρήστη,αν το θυμάστε.", @@ -1072,11 +1069,9 @@ "TabDirectPlay": "Άμεση Αναπαραγωγή", "TabDisplay": "Εμφάνιση", "TabEpisodes": "Επεισόδια", - "TabExpert": "Ειδικός", "TabFavorites": "Αγαπημένα", "TabGenres": "Είδη", "TabGuide": "Οδηγός", - "TabHosting": "Φιλοξενία", "TabInfo": "Πληροφορία", "TabLatest": "Τελευταία", "TabLibrary": "Βιβλιοθήκη", @@ -1100,7 +1095,6 @@ "TabRecordings": "Εγγραφές", "TabResponses": "Απαντήσεις", "TabScheduledTasks": "Προγραμματισμένες Εργασίες", - "TabSecurity": "Aσφάλεια ", "TabSeries": "Σειρές", "TabServer": "Διακομιστής", "TabSettings": "Ρυθμισεις", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index cdf0df51c5..5873d8ae70 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -58,7 +58,6 @@ "AddToPlayQueue": "Add to play queue", "AddToPlaylist": "Add to playlist", "AddedOnValue": "Added {0}", - "Advanced": "Advanced", "AirDate": "Air date", "Aired": "Aired", "Alerts": "Alerts", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index ae8f41141d..06145a2421 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -9,7 +9,6 @@ "AddToPlaylist": "Add to playlist", "AddedOnValue": "Added {0}", "AdditionalNotificationServices": "Browse the plugin catalog to install additional notification services.", - "Advanced": "Advanced", "AirDate": "Air date", "Aired": "Aired", "Albums": "Albums", @@ -299,7 +298,7 @@ "HeaderAllowMediaDeletionFrom": "Allow Media Deletion From", "HeaderApiKey": "API Key", "HeaderApiKeys": "API Keys", - "HeaderApiKeysHelp": "External applications are required to have an API key in order to communicate with Jellyfin Server. Keys are issued by logging in with an Jellyfin account, or by manually granting the application a key.", + "HeaderApiKeysHelp": "External applications are required to have an API key in order to communicate with Jellyfin Server. Keys are issued by logging in with a Jellyfin account, or by manually granting the application a key.", "HeaderApp": "App", "HeaderAppearsOn": "Appears On", "HeaderAudioBooks": "Audio Books", @@ -371,7 +370,7 @@ "HeaderGuideProviders": "TV Guide Data Providers", "HeaderHome": "Home", "HeaderHomeSettings": "Home Settings", - "HeaderHttpHeaders": "Http Headers", + "HeaderHttpHeaders": "HTTP Headers", "HeaderIdentification": "Identification", "HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.", "HeaderIdentificationHeader": "Identification Header", @@ -636,8 +635,6 @@ "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", "LabelFailed": "Failed", - "LabelFanartApiKey": "Personal api key:", - "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return images that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", "LabelFileOrUrl": "File or url:", "LabelFinish": "Finish", "LabelFont": "Font:", @@ -677,7 +674,7 @@ "LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files", "LabelKodiMetadataSaveImagePathsHelp": "This is recommended if you have image file names that don't conform to Kodi guidelines.", "LabelKodiMetadataUser": "Save user watch data to nfo's for:", - "LabelKodiMetadataUserHelp": "Enable this to save watch data to Nfo files for other applications to utilize.", + "LabelKodiMetadataUserHelp": "Enable this to save watch data to NFO files for other applications to utilize.", "LabelLanNetworks": "LAN networks:", "LabelLanguage": "Language:", "LabelLineup": "Lineup:", @@ -693,11 +690,11 @@ "LabelMaxBackdropsPerItem": "Maximum number of backdrops per item:", "LabelMaxChromecastBitrate": "Chromecast streaming quality:", "LabelMaxParentalRating": "Maximum allowed parental rating:", - "LabelMaxResumePercentage": "Max resume percentage:", + "LabelMaxResumePercentage": "Maximum resume percentage:", "LabelMaxResumePercentageHelp": "Titles are assumed fully played if stopped after this time", "LabelMaxScreenshotsPerItem": "Maximum number of screenshots per item:", - "LabelMaxStreamingBitrate": "Max streaming quality:", - "LabelMaxStreamingBitrateHelp": "Specify a max bitrate when streaming.", + "LabelMaxStreamingBitrate": "Maximum streaming quality:", + "LabelMaxStreamingBitrateHelp": "Specify a maximum bitrate when streaming.", "LabelMessageText": "Message text:", "LabelMessageTitle": "Message title:", "LabelMetadata": "Metadata:", @@ -711,9 +708,9 @@ "LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.", "LabelMethod": "Method:", "LabelMinBackdropDownloadWidth": "Minimum backdrop download width:", - "LabelMinResumeDuration": "Min resume duration (seconds):", - "LabelMinResumeDurationHelp": "Titles shorter than this will not be resumable", - "LabelMinResumePercentage": "Min resume percentage:", + "LabelMinResumeDuration": "Minimum resume duration:", + "LabelMinResumeDurationHelp": "The shortest video length in seconds that will save playback location and let you resume", + "LabelMinResumePercentage": "Minimum resume percentage:", "LabelMinResumePercentageHelp": "Titles are assumed unplayed if stopped before this time", "LabelMinScreenshotDownloadWidth": "Minimum screenshot download width:", "LabelModelDescription": "Model description", @@ -965,7 +962,7 @@ "MessageItemsAdded": "Items added.", "MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item, or the global default value.", "MessageNoAvailablePlugins": "No available plugins.", - "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, and albums Albums. Click the + button to start creating collections.", + "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, and Albums. Click the + button to start creating collections.", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoPluginsInstalled": "You have no plugins installed.", "MessageNoServersAvailable": "No servers have been found using the automatic server discovery.", @@ -997,6 +994,9 @@ "MoveRight": "Move right", "MovieLibraryHelp": "Review the {0}Jellyfin movie naming guide{1}.", "Movies": "Movies", + "MusicAlbum": "Music Album", + "MusicArtist": "Music Artist", + "MusicVideo": "Music Video", "Mute": "Mute", "MySubtitles": "My Subtitles", "Name": "Name", @@ -1310,6 +1310,7 @@ "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "These settings also apply to any Chromecast playback started by this device.", "SubtitleAppearanceSettingsDisclaimer": "These settings will not apply to graphical subtitles (PGS, DVD, etc), or subtitles that have their own styles embedded (ASS/SSA).", "SubtitleDownloadersHelp": "Enable and rank your preferred subtitle downloaders in order of priority.", + "SubtitleOffset": "Subtitle Offset", "Subtitles": "Subtitles", "Suggestions": "Suggestions", "Sunday": "Sunday", @@ -1331,11 +1332,9 @@ "TabDirectPlay": "Direct Play", "TabDisplay": "Display", "TabEpisodes": "Episodes", - "TabExpert": "Expert", "TabFavorites": "Favorites", "TabGenres": "Genres", "TabGuide": "Guide", - "TabHosting": "Hosting", "TabInfo": "Info", "TabLatest": "Latest", "TabLibrary": "Library", @@ -1347,7 +1346,8 @@ "TabMusicVideos": "Music Videos", "TabMyPlugins": "My Plugins", "TabNetworks": "Networks", - "TabNfoSettings": "Nfo Settings", + "TabNetworking": "Networking", + "TabNfoSettings": "NFO Settings", "TabNotifications": "Notifications", "TabOther": "Other", "TabParentalControl": "Parental Control", @@ -1360,9 +1360,8 @@ "TabProfiles": "Profiles", "TabRecordings": "Recordings", "TabResponses": "Responses", - "TabResumeSettings": "Resume Settings", + "TabResumeSettings": "Resume", "TabScheduledTasks": "Scheduled Tasks", - "TabSecurity": "Security", "TabSeries": "Series", "TabServer": "Server", "TabSettings": "Settings", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index fed2376c9a..fb5d031d17 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -56,7 +56,6 @@ "AddToPlaylist": "Añadir a la lista de reproducción", "AddedOnValue": "Añadidos {0}", "AdditionalNotificationServices": "Navegue el catálogo de plugins para instalar servicios de notificación adicionales.", - "Advanced": "Avanzado", "AirDate": "Fecha de emisión", "Aired": "Emitido", "Alerts": "Alertas", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 05e6eb91dc..3d97101656 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -9,7 +9,6 @@ "AddToPlaylist": "Agregar a lista de reproducción", "AddedOnValue": "Agregado {0}", "AdditionalNotificationServices": "Explore el catálogo de complementos para instalar servicios de notificación adicionales.", - "Advanced": "Avanzado", "AirDate": "Fecha de emisión", "Aired": "Transmitido", "Albums": "Álbumes", @@ -289,8 +288,8 @@ "HeaderAlbums": "Álbumes", "HeaderAlert": "Alerta", "HeaderAllowMediaDeletionFrom": "Permitir Eliminacion de Medios De", - "HeaderApiKey": "Llave de API", - "HeaderApiKeys": "Llaves de API", + "HeaderApiKey": "Clave API", + "HeaderApiKeys": "Claves de API", "HeaderApiKeysHelp": "Son necesarias aplicaciones externas para obtener una clave Api para comunicarse con el Servidor Jellyfin. Las clave son emitidas accediendo con una cuenta Jellyfin, u obteniendo manualmente la clave de la aplicación.", "HeaderAppearsOn": "Aparece En", "HeaderAudioBooks": "Audio Libros", @@ -301,7 +300,7 @@ "HeaderBranding": "Establecer Marca", "HeaderCancelRecording": "Cancelar Grabación", "HeaderCancelSeries": "Cancelar Serie", - "HeaderCastAndCrew": "Reparto & Personal:", + "HeaderCastAndCrew": "Reparto & Personal", "HeaderCastCrew": "Reparto y Personal", "HeaderChannelAccess": "Acceso a los Canales", "HeaderChannels": "Canales", @@ -389,7 +388,7 @@ "HeaderMyDevice": "Mi Dispositivo", "HeaderMyMedia": "Mis Medios", "HeaderMyMediaSmall": "Mis medios (pequeño)", - "HeaderNewApiKey": "Nueva llave de API", + "HeaderNewApiKey": "Nueva clave API", "HeaderNewDevices": "Nuevos Dispositivos", "HeaderNextEpisodePlayingInValue": "El Siguiente Episodio se Reproducirá en {0}", "HeaderNextUp": "A Continuación", @@ -421,7 +420,7 @@ "HeaderRemoteControl": "Control Remoto", "HeaderRemoveMediaFolder": "Eliminar Carpteta de Medios", "HeaderRemoveMediaLocation": "Eliminar Ubicación de Medios", - "HeaderResponseProfile": "Perfil de Respuesta:", + "HeaderResponseProfile": "Perfil de Respuesta", "HeaderResponseProfileHelp": "Los perfiles de respuesta proporcionan un medio para personalizar la información enviada a un dispositivo cuando se reproducen ciertos tipos de medios.", "HeaderRestart": "Reiniciar", "HeaderRevisionHistory": "Historial de Versiones", @@ -440,7 +439,7 @@ "HeaderSelectTranscodingPath": "Seleccionar Ruta para Transcodificación Temporal", "HeaderSelectTranscodingPathHelp": "Explore o introduzca la ruta a utilizar para los archivos temporales de transcodificación. La carpeta debe tener permisos de escritura.", "HeaderSendMessage": "Enviar Mensaje", - "HeaderSeries": "Series:", + "HeaderSeries": "Series", "HeaderSeriesOptions": "Opciones de Serie", "HeaderSeriesStatus": "Estado de la Serie", "HeaderServerSettings": "Configuración del Servidor", @@ -508,7 +507,7 @@ "LabelAirsAfterSeason": "Transmisión después de la temporada:", "LabelAirsBeforeEpisode": "Transmisión antes del episodio:", "LabelAirsBeforeSeason": "Transmisión antes de la temporada:", - "LabelAlbum": "Álbum", + "LabelAlbum": "Álbum:", "LabelAlbumArtHelp": "PN usado para arte del álbum, dentro del atributo dlna:profileID en upnp:albumArtURI. Algunos dispositivos requieren valores específicos, independientemente del tamaño de la imagen.", "LabelAlbumArtMaxHeight": "Altura máxima para arte del álbum:", "LabelAlbumArtMaxHeightHelp": "Máxima resolución para arte del album expuesta via upnp:albumArtURI.", @@ -610,8 +609,6 @@ "LabelExtractChaptersDuringLibraryScan": "Extraer imágenes de capítulos durante la exploración de la biblioteca", "LabelExtractChaptersDuringLibraryScanHelp": "Si se activa, las imágenes de capítulos serán extraídas cuando los videos sean importados durante la exploración de la biblioteca. Si se deshabilita, serán extraídas durante la ejecución de la tarea programada de extracción de imágenes de capítulos, permitiéndo que la exploración normal de la biblioteca se complete más rápidamente.", "LabelFailed": "Fallido", - "LabelFanartApiKey": "Clave api personal:", - "LabelFanartApiKeyHelp": "Solicitar fanart sin una clave API personal muestra los imagenes que fueron aprobadas hace 7 días. Con una clave API personal se reduce a 48 horas y si eres miembro VIP de fanart será alrededor de 10 minutos.", "LabelFileOrUrl": "Archivo o url:", "LabelFinish": "Terminar", "LabelFont": "Fuente:", @@ -661,8 +658,8 @@ "LabelLoginDisclaimer": "Aviso legal:", "LabelLoginDisclaimerHelp": "Esto se mostrara al final de la pagina de inicio de sesión.", "LabelLogs": "Bitácoras:", - "LabelManufacturer": "Fabricante:", - "LabelManufacturerUrl": "URL del fabricante:", + "LabelManufacturer": "Fabricante", + "LabelManufacturerUrl": "URL del fabricante", "LabelMatchType": "Tipo de Coincidencia:", "LabelMaxBackdropsPerItem": "Número máximo de imágenes de fondo por ítem:", "LabelMaxChromecastBitrate": "Tasa maxima de bits para El Chromecast:", @@ -690,10 +687,10 @@ "LabelMinResumePercentage": "Porcentaje mínimo para continuar:", "LabelMinResumePercentageHelp": "Se asumirá que los títulos no han sido reproducidos si se detienen antes de este momento", "LabelMinScreenshotDownloadWidth": "Anchura mínima de descarga de capturas de pantalla:", - "LabelModelDescription": "Descripción del modelo:", - "LabelModelName": "Nombre del modelo:", - "LabelModelNumber": "Número del modelo:", - "LabelModelUrl": "URL del modelo:", + "LabelModelDescription": "Descripción del modelo", + "LabelModelName": "Nombre del modelo", + "LabelModelNumber": "Número del modelo", + "LabelModelUrl": "URL del modelo", "LabelMonitorUsers": "Monitorear actividad desde:", "LabelMovieCategories": "Categorías de películas:", "LabelMoviePrefix": "Prefijo de la película:", @@ -709,7 +706,7 @@ "LabelNext": "Siguiente", "LabelNotificationEnabled": "Habilitar esta notificación", "LabelNumber": "Número:", - "LabelNumberOfGuideDays": "Número de días de datos de la programación a descargar", + "LabelNumberOfGuideDays": "Número de días de datos de la programación a descargar:", "LabelNumberOfGuideDaysHelp": "Descargar más días de datos de programación permite programar con mayor anticipación y ver más listados, pero tomará más tiempo en descargar. Auto hará la selección basada en el número de canales.", "LabelOptionalNetworkPath": "(Opcional) Carpeta de red compartida:", "LabelOptionalNetworkPathHelp": "Si esta carpeta es compartida en su red, proveer la ruta del recurso compartido de red puede permitir a las aplicaciones Jellyfin en otros dispositivos acceder a los archivos de medios directamente.", @@ -767,7 +764,7 @@ "LabelSelectUsers": "Seleccionar Usuarios:", "LabelSelectVersionToInstall": "Seleccionar versión a instalar:", "LabelSendNotificationToUsers": "Enviar la notificación a:", - "LabelSerialNumber": "Número de serie:", + "LabelSerialNumber": "Número de serie", "LabelSeriesRecordingPath": "Ruta para grabaciones de Series (Opcional):", "LabelServerHost": "Servidor:", "LabelServerHostHelp": "192.168.1.100 O https://miservidor.com", @@ -800,7 +797,7 @@ "LabelSupportedMediaTypes": "Tipos de Medios Soportados:", "LabelTVHomeScreen": "Modo de pantalla de TV:", "LabelTag": "Etiqueta:", - "LabelTagline": "Eslogan", + "LabelTagline": "Eslogan:", "LabelTextBackgroundColor": "Color de fondo para el texto:", "LabelTextColor": "Color de texto:", "LabelTextSize": "Tamaño de texto:", @@ -846,7 +843,7 @@ "LabelffmpegPathHelp": "La ruta hacia el archivo de aplicación de ffmpeg, o la carpeta que contenga ffmpeg.", "LanNetworksHelp": "Lista separada por comas de direcciones IP/mascaras de subred para las redes que serán consideradas como locales al enforzar restricciones de ancho de banda. Si se establece, todas las demás direcciones IP serán consideradas como redes externas y estarán sujetas a restricciones de ancho de banda. Si se deja en blanco, sólo la subred del servidor será considerada como red local.", "Large": "Grande", - "LatestFromLibrary": "Más recientes {0}", + "LatestFromLibrary": "Más recientes - {0}", "LearnHowYouCanContribute": "Aprenda como puede contribuír.", "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podrán editar todas las carpetas usando el administrador de metadatos.", "Like": "Me gusta", @@ -920,7 +917,7 @@ "MessageNoPluginsInstalled": "No tienes extensiones instaladas.", "MessageNoTrailersFound": "No se encontraron tráilers. Instale el canal de tráilers para mejorar su experiencia con películas al agregar una biblioteca de tráilers desde el Internet.", "MessageNothingHere": "Nada aquí.", - "MessagePasswordResetForUsers": "Las contraseñas han sido eliminadas para los siguientes usuarios. Para acceder, inicie sesión con la contraseña en blanco.", + "MessagePasswordResetForUsers": "Los siguientes usuarios han restablecido sus contraseñas. Ahora pueden iniciar sesión con los códigos PIN que se usaron para realizar el restablecimiento.", "MessagePlayAccessRestricted": "La reproducción de este contenido se encuentra restringida actualmente. Por favor contacte a su administrador del Servidor Jellyfin para mas información.", "MessagePleaseEnsureInternetMetadata": "Por favor asegúrese que la descarga de metadatos de internet esta habilitada.", "MessagePleaseWait": "Espere por favor. Esto podría tomar un minuto.", @@ -1038,7 +1035,7 @@ "OptionEnableExternalContentInSuggestions": "Habilitar contenido externo en las sugerencias", "OptionEnableExternalContentInSuggestionsHelp": "Permitir que los trailers de Internet y programas de tv en vivo sean incluidos dentro del contenido sugerido.", "OptionEnableForAllTuners": "Habilitar para todos los dispositivos sintonizadores", - "OptionEnableM2tsMode": "Habilitar modo M2ts:", + "OptionEnableM2tsMode": "Habilitar modo M2ts", "OptionEnableM2tsModeHelp": "Habilita el modo m2ts cuando se codifican mpegs.", "OptionEnded": "Finalizado", "OptionEquals": "Igual a", @@ -1255,11 +1252,9 @@ "TabDirectPlay": "Reproducción Directa", "TabDisplay": "Pantalla", "TabEpisodes": "Episodios", - "TabExpert": "Experto", "TabFavorites": "Favoritos", "TabGenres": "Géneros", "TabGuide": "Guía", - "TabHosting": "Hospedaje", "TabLatest": "Recientes", "TabLibrary": "Biblioteca", "TabLiveTV": "TV en Vivo", @@ -1285,7 +1280,6 @@ "TabResponses": "Respuestas", "TabResumeSettings": "Configuración para Continuar", "TabScheduledTasks": "Tareas Programadas", - "TabSecurity": "Seguridad", "TabServer": "Servidor", "TabSettings": "Configuración", "TabShows": "Programas", @@ -1368,5 +1362,89 @@ "ButtonInfo": "Info", "ButtonNo": "No", "ButtonOk": "Ok", - "ButtonTrailer": "Trailer" + "ButtonTrailer": "Trailer", + "AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario", + "Director": "Director", + "DirectorValue": "Director: {0}", + "Extras": "Extras", + "General": "General", + "HeaderAdmin": "Administrador", + "HeaderApp": "App", + "HeaderAudioLanguages": "Idiomas de audio", + "HeaderError": "Error", + "HeaderFavoriteMovies": "Peliculas favoritas", + "HeaderFavoriteShows": "Programas favoritos", + "HeaderFavoriteEpisodes": "Episodios favoritos", + "HeaderFavoriteAlbums": "Álbumes favoritos", + "HeaderFavoriteArtists": "Artistas favoritos", + "HeaderFavoriteSongs": "Canciones favoritas", + "HeaderFavoriteVideos": "Videos favoritos", + "HeaderHome": "Inicio", + "HeaderHomeSettings": "Configuraciones de Inicio", + "HeaderRestartingServer": "Reiniciando servidor", + "HeaderVideos": "Videos", + "Horizontal": "Horizontal", + "LabelAudio": "Audio:", + "LabelAuthProvider": "Proveedor de autenticación:", + "LabelDynamicExternalId": "{0} Id:", + "LabelPasswordResetProvider": "Proveedor de restablecimiento de contraseña:", + "LabelProfileCodecs": "Codecs:", + "LabelServerName": "Nombre del servidor:", + "LabelTranscodePath": "Ruta de transcodificación:", + "LabelTranscodes": "Transcodificaciones:", + "LabelUserLoginAttemptsBeforeLockout": "Intentos fallidos de inicio de sesión antes de que el usuario se bloquee:", + "DashboardVersionNumber": "Versión: {0}", + "DashboardServerName": "Servidor: {0}", + "DashboardOperatingSystem": "Sistema operativo: {0}", + "DashboardArchitecture": "Arquitectura: {0}", + "LabelVideo": "Video:", + "LabelWeb": "Web: ", + "LaunchWebAppOnStartup": "Iniciar la aplicación web Jellyfin en mi navegador web cuando se inicie Jellyfin Server", + "LaunchWebAppOnStartupHelp": "Esto abrirá la aplicación web en su navegador web predeterminado cuando Jellyfin Server se inicie inicialmente. Esto no ocurrirá cuando se utiliza la función de reinicio del servidor.", + "LeaveBlankToNotSetAPassword": "Opcional - Dejar en blanco para no establecer una contraseña", + "MediaInfoCodec": "Codec", + "MediaInfoSoftware": "Software", + "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoStreamTypeData": "Dato", + "MediaInfoStreamTypeEmbeddedImage": "Imagen incrustada", + "MediaInfoStreamTypeSubtitle": "Subtitulo", + "MediaInfoStreamTypeVideo": "Video", + "MessageImageFileTypeAllowed": "Solo se admite archivos JPEG y PNG.", + "MessageImageTypeNotSelected": "Seleccione un tipo de imagen en el menú desplegable.", + "MessageNoCollectionsAvailable": "Las colecciones le permiten disfrutar de agrupaciones personalizadas de películas, series y álbumes. Haga clic en el botón + para comenzar a crear colecciones.", + "MessageNoServersAvailable": "No se encontraron servidores utilizando el descubrimiento automático del servidor.", + "MusicAlbum": "Álbum de música", + "MusicArtist": "Artista musical", + "MusicVideo": "Video musical", + "No": "No", + "Normal": "Normal", + "Option3D": "3D", + "OptionBanner": "Banner", + "OptionBluray": "Bluray", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionDownloadLogoImage": "Logo", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionList": "Lista", + "OptionLoginAttemptsBeforeLockout": "Determina cuántos intentos de inicio de sesión incorrectos se pueden hacer antes de que ocurra el bloqueo.", + "OptionLoginAttemptsBeforeLockoutHelp": "0 significa heredar el valor predeterminado de 3 para no administrador y 5 para administrador, -1 deshabilita el bloqueo", + "OptionPoster": "Póster", + "OptionPosterCard": "Ficha de póster", + "OptionProfileAudio": "Audio", + "OptionProfileVideo": "Video", + "OptionProtocolHttp": "HTTP", + "OptionRegex": "Expresión regular", + "PasswordResetProviderHelp": "Elija un proveedor de restablecimiento de contraseña para usar cuando este usuario solicite un restablecimiento de contraseña", + "PlaybackData": "Datos de reproducción", + "Series": "Series", + "SubtitleOffset": "Desplazamiento de subtítulos", + "TV": "TV", + "TabCodecs": "Codecs", + "TabInfo": "Información", + "TabSeries": "Series", + "ValueMinutes": "{0} min", + "ValueSeriesCount": "{0} series", + "Vertical": "Vertical", + "OptionThumb": "Miniatura", + "OptionThumbCard": "Pequeña miniatura" } diff --git a/src/strings/es.json b/src/strings/es.json index dcba19865c..546a163c2a 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1,12 +1,11 @@ { - "AccessRestrictedTryAgainLater": "El acceso está restringido actualmente. Por favor inténtalo más tarde.", + "AccessRestrictedTryAgainLater": "El acceso está restringido actualmente. Por favor, inténtalo más tarde.", "Add": "Añadir", "AddItemToCollectionHelp": "Agregue elementos a las colecciones buscando en ellos y utilizando sus menús con el botón derecho del ratón o pulsando en los menús para agregarlos a una colección.", "AddToCollection": "Añadir a la colección", "AddToPlaylist": "Añadir a la lista de reproducción", "AddedOnValue": "Añadido {0}", - "AdditionalNotificationServices": "Visite el catálogo de plugins para instalar servicios de notificación adicionales.", - "Advanced": "Avanzado", + "AdditionalNotificationServices": "Visite el catálogo de complementos para instalar servicios de notificación adicionales.", "Albums": "Álbumes", "Alerts": "Alertas", "All": "Todo", @@ -15,15 +14,15 @@ "AllEpisodes": "Todos los episodios", "AllLanguages": "Todos los idiomas", "AllLibraries": "Todas las bibliotecas", - "AllowHWTranscodingHelp": "Si está habilitado, permita que el sintonizador transcodifique secuencias sobre la marcha. Esto puede ayudar a reducir la transcodificación requerida por Jellyfin Server.", + "AllowHWTranscodingHelp": "Si está habilitado, permite que el sintonizador transcodifique secuencias sobre la marcha. Esto puede ayudar a reducir la transcodificación requerida por el servidor Jellyfin.", "AllowMediaConversion": "Permitir convertir los medios", - "AllowMediaConversionHelp": "Concede o niega el acceso a la función de conversión de medios.", + "AllowMediaConversionHelp": "Concede o deniega el acceso a la función de conversión de medios.", "AllowOnTheFlySubtitleExtraction": "Permitir la extracción de subtítulos sobre la marcha", "AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden extraerse de los vídeos y enviarse a las aplicaciones de Jellyfin en texto sin formato para evitar la transcodificación del vídeo. En algunos sistemas, esto puede llevar mucho tiempo y hacer que la reproducción de vídeo se bloquee durante el proceso de extracción. Deshabilite esto para tener subtítulos incrustados grabados con transcodificación de video cuando no sean compatibles de forma nativa con el dispositivo del cliente.", - "AllowRemoteAccess": "Permitir conexiones remotas a este servidor Jellyfin", + "AllowRemoteAccess": "Permitir conexiones remotas a este servidor Jellyfin.", "AllowRemoteAccessHelp": "Si no está activado, todas las conexiones remotas serán bloqueadas.", "AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP o entradas de IP / máscara de red para redes a las que se les permitirá conectarse de forma remota. Si se deja en blanco, se permitirán todas las direcciones remotas.", - "AlwaysPlaySubtitles": "Mostrar siempre subtítulos", + "AlwaysPlaySubtitles": "Mostrar subtítulos siempre", "AlwaysPlaySubtitlesHelp": "Los subtítulos que concuerden con la preferencia de idioma se cargarán independientemente del idioma de audio.", "Art": "Arte", "Artists": "Artistas", @@ -32,7 +31,7 @@ "AttributeNew": "Nuevo", "Backdrop": "Imagen de fondo", "Backdrops": "Imágenes de fondo", - "BirthDateValue": "Nació: {0}", + "BirthDateValue": "Nacido: {0}", "BirthLocation": "Lugar de nacimiento", "BirthPlaceValue": "Lugar de nacimiento: {0}", "Blacklist": "Lista negra", @@ -92,7 +91,7 @@ "ButtonRemove": "Quitar", "ButtonRename": "Renombrar", "ButtonRepeat": "Repetir", - "ButtonResetEasyPassword": "Restablecer fácil código PIN", + "ButtonResetEasyPassword": "Restablecer código PIN", "ButtonResetPassword": "Reiniciar Contraseña", "ButtonRestart": "Reiniciar", "ButtonResume": "Continuar", @@ -128,10 +127,10 @@ "ChannelNameOnly": "Canal {0} solo", "ChannelNumber": "Número de canal", "Channels": "Canales", - "CinemaModeConfigurationHelp": "El modo cine proporciona la experiencia del cine directamente en su sala de estar con la capacidad de reproducir trailers e introducciones personalizadas antes de la función principal.", + "CinemaModeConfigurationHelp": "El modo cine proporciona la experiencia del cine directamente en su sala con la capacidad de reproducir tráilers e introducciones personalizadas antes de la función principal.", "Collections": "Colecciones", "Composer": "Compositor", - "ConfigureDateAdded": "Configura como la fecha añadida se determina en el Panel de Control del servidor Jellyfin en los ajustes de la biblioteca.", + "ConfigureDateAdded": "Configura como la fecha añadida se determina en el Panel de Control del servidor Jellyfin en los ajustes de la biblioteca", "ConfirmDeleteImage": "¿Borrar imagen?", "ConfirmDeleteItem": "Al borrar este ítem se borrará del sistema de archivos y de la biblioteca. ¿Quieres continuar?", "ConfirmDeleteItems": "Al borrar este ítem se borrará del sistema de archivos y de la biblioteca. ¿Quieres continuar?", @@ -147,14 +146,14 @@ "DefaultSubtitlesHelp": "Los subtítulos se activan en función de los ajustes por defecto y etiquetas en los metadatos integrados. Los ajustes de idioma se tienen en cuenta cuando hay varias opciones disponibles.", "Delete": "Borrar", "DeleteDeviceConfirmation": "¿Estás seguro de que quieres borrar este dispositivo? Volverá a aparecer la próxima vez que un usuario inicie sesión en él.", - "DeleteImage": "Borrar Imagen", + "DeleteImage": "Borrar imagen", "DeleteImageConfirmation": "Está seguro que desea borrar esta imagen?", "DeleteMedia": "Eliminar medios", - "DeleteUser": "Borrar Usuario", + "DeleteUser": "Borrar usuario", "DeleteUserConfirmation": "¿Estás seguro de que quieres borrar este usuario?", "Desktop": "Escritorio", "DetectingDevices": "Detectando dispositvos", - "DeviceAccessHelp": "Esto solo aplica a equipos que puedan ser singularmente identificados y no prevendrá acceso al navegador. Filtrar el acceso de equipos del usuario les prevendrá que usen nuevos equipos hasta que sean aprobados aqui.", + "DeviceAccessHelp": "Esto solo aplica a equipos que puedan ser singularmente identificados y no prevendrá acceso al navegador. Filtrar el acceso de equipos del usuario les prevendrá que usen nuevos equipos hasta que sean aprobados aquí.", "DirectPlaying": "Reproducción directa", "DirectStreaming": "Streaming directo", "Disabled": "Desactivado", @@ -167,7 +166,7 @@ "Download": "Descargar", "DownloadsValue": "Descargas: {0}", "DrmChannelsNotImported": "Los canales con DRM no se importarán.", - "EasyPasswordHelp": "Su código pin es para el acceso sin conexión en la aplicaciones de Jellyfin soportadas, también puede ser usado para iniciar sesión en línea más cómodamente.", + "EasyPasswordHelp": "Su código PIN usarse para el acceso sin conexión en la aplicaciones de Jellyfin soportadas, también puede ser usado para iniciar sesión en línea más cómodamente.", "Edit": "Editar", "EditImages": "Editar imágenes", "EditSubtitles": "Editar subtítulos", @@ -185,10 +184,10 @@ "EndsAtValue": "Termina a las {0}", "Episodes": "Episodios", "ErrorAddingListingsToSchedulesDirect": "Ha habido un error añadiendo la alineación a tu cuenta de Schedules Direct. Schedules Direct solo permite un determinado número de alineaciones por cuenta. Necesitarás iniciar sesión en la web de Schedules Direct y quitar otras listas de tu cuenta antes de proceder.", - "ErrorAddingMediaPathToVirtualFolder": "Ha habido un error añadiendo la ruta de los medios. Por favor asegúrate de que la ruta es válida y que el proceso del servidor Jellyfin tiene acceso a esa ubicación.", + "ErrorAddingMediaPathToVirtualFolder": "Ha habido un error añadiendo la ruta de los medios. Por favor, asegúrate de que la ruta es válida y que el proceso del servidor Jellyfin tiene acceso a esa ubicación.", "ErrorAddingTunerDevice": "Ha habido un error añadiendo el dispositivo sintonizador. Por favor, asegúrate de que es accesible e inténtalo otra vez.", "ErrorAddingXmlTvFile": "Ha habido un error accediendo al archivo XmlTV. Por favor, asegúrate de que existe e inténtalo de nuevo.", - "ErrorGettingTvLineups": "Ha habido un error descargando las alineaciones de TV. Por favor asegúrate de la información es correcta e inténtalo otra vez.", + "ErrorGettingTvLineups": "Ha habido un error descargando las alineaciones de TV. Por favor, asegúrate de la información es correcta e inténtalo otra vez.", "ErrorMessageStartHourGreaterThanEnd": "La hora de finalización tiene que ser mayor que la de inicio.", "ErrorPleaseSelectLineup": "Por favor selecciona una alineación e inténtalo otra vez. Si no hay alineaciones disponibles, revisa que tu nombre de usuario, contraseña y código postal son correctos.", "ErrorSavingTvProvider": "Ha habido un error guardando el proveedor de TV. Por favor, asegúrate de que es accesible e inténtalo otra vez.", @@ -205,9 +204,9 @@ "FileReadCancelled": "La lectura del archivo se ha cancelado.", "FileReadError": "Se encontró un error al leer el archivo.", "FolderTypeBooks": "Libros", - "FolderTypeMovies": "Peliculas", - "FolderTypeMusic": "Musica", - "FolderTypeMusicVideos": "Videos Musicales", + "FolderTypeMovies": "Películas", + "FolderTypeMusic": "Música", + "FolderTypeMusicVideos": "Vídeos Musicales", "FolderTypeTvShows": "Series de TV", "FolderTypeUnset": "Sin especificar (contenido mixto)", "ForAdditionalLiveTvOptions": "Para proveedores adicionales de TV en directo, haga clic en la pestaña Servicios para ver las opciones disponibles.", @@ -233,36 +232,36 @@ "HeaderAddToCollection": "Agregar a la colección", "HeaderAddToPlaylist": "Añadir a la lista", "HeaderAddUpdateImage": "Añadir/Actualizar imagen", - "HeaderAddUser": "Agregar Usuario", + "HeaderAddUser": "Agregar usuario", "HeaderAdditionalParts": "Partes adicionales", "HeaderAdmin": "Administrador", "HeaderAlert": "Alerta", "HeaderAllowMediaDeletionFrom": "Permitir borrar contenido desde", - "HeaderApiKey": "Clave Api", - "HeaderApiKeys": "Keys de Api", - "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, o otorgando manualmente una clave a la aplicación.", + "HeaderApiKey": "Clave API", + "HeaderApiKeys": "Claves API", + "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", - "HeaderCancelSeries": "Cancelar Series", + "HeaderCancelRecording": "Cancelar grabación", + "HeaderCancelSeries": "Cancelar series", "HeaderCastAndCrew": "Reparto y equipo", "HeaderCastCrew": "Reparto y equipo técnico", "HeaderChannelAccess": "Acceso a los canales", "HeaderChannels": "Canales", "HeaderChapterImages": "Imágenes de capítulos", - "HeaderCodecProfile": "Perfil de codec", - "HeaderCodecProfileHelp": "Perfiles de codec indican las limitaciones de un dispositivo cuando se reproducen codecs específicos. Si se aplica una limitación entonces el medio se transcodificará, incluso si el codec está configurado para reproducción directa.", + "HeaderCodecProfile": "Perfil de códec", + "HeaderCodecProfileHelp": "Perfiles de códec indican las limitaciones de un dispositivo cuando se reproducen códecs específicos. Si se aplica una limitación entonces el medio se transcodificará, incluso si el códec está configurado para reproducción directa.", "HeaderConfigureRemoteAccess": "Configurar acceso remoto", - "HeaderConfirmPluginInstallation": "Confirmar la instalación del Plugin", + "HeaderConfirmPluginInstallation": "Confirmar la instalación del plugin", "HeaderConfirmProfileDeletion": "Confirmar borrado del perfil", - "HeaderConfirmRevokeApiKey": "Revocar Clave Api", + "HeaderConfirmRevokeApiKey": "Revocar clave API", "HeaderConnectToServer": "Conectar al servidor", "HeaderConnectionFailure": "Fallo de conexión", "HeaderContainerProfile": "Perfil de contenedor", - "HeaderContainerProfileHelp": "Perfiles de codec indican las limitaciones de un dispositivo mientras reproduce formatos específicos. If se aplica una limitación entonces el medio se transcodificará, incluso si el formato está configurado para reproducción directa.", + "HeaderContainerProfileHelp": "Perfiles de códec indican las limitaciones de un dispositivo mientras reproduce formatos específicos. Si se aplica una limitación entonces el medio se transcodificará, incluso si el formato está configurado para reproducción directa.", "HeaderContinueListening": "Continuar escuchando", "HeaderContinueWatching": "Continuar viendo", "HeaderCustomDlnaProfiles": "Perfiles personalizados", @@ -270,27 +269,27 @@ "HeaderDefaultRecordingSettings": "Configuración predeterminada de grabación", "HeaderDeleteDevice": "Borrar dispositivo", "HeaderDeleteItem": "Borrar elemento", - "HeaderDeleteItems": "Borrar ítems", + "HeaderDeleteItems": "Borrar elementos", "HeaderDeleteProvider": "Borrar proveedor", "HeaderDeleteTaskTrigger": "Eliminar tarea de activación", "HeaderDetectMyDevices": "Detectar mis dispositivos", "HeaderDeveloperInfo": "Información del desarrollador", - "HeaderDeviceAccess": "Acceso de Equipo", + "HeaderDeviceAccess": "Acceso de equipo", "HeaderDevices": "Dispositivos", "HeaderDirectPlayProfile": "Perfil de reproducción directa", "HeaderDirectPlayProfileHelp": "Añadir perfiles de reproducción directa para indicar qué formatos puede utilizar el dispositivo de forma nativa.", "HeaderDisplay": "Mostrar", "HeaderDisplaySettings": "Opciones de pantalla", "HeaderDownloadSync": "Descargar y sincronizar", - "HeaderEasyPinCode": "Código PIN fácil:", - "HeaderEditImages": "Editar Imágenes", + "HeaderEasyPinCode": "Código PIN", + "HeaderEditImages": "Editar imágenes", "HeaderEnabledFields": "Campos activados", "HeaderEnabledFieldsHelp": "Desmarca un campo para bloquearlo y evitar que se cambie su contenido.", "HeaderEpisodes": "Episodios", - "HeaderExternalIds": "Ids externos:", + "HeaderExternalIds": "IDs externos:", "HeaderFeatureAccess": "Permisos de acceso", "HeaderFeatures": "Características", - "HeaderFetchImages": "Buscar imágenes", + "HeaderFetchImages": "Buscar imágenes:", "HeaderFetcherSettings": "Ajustes del capturador", "HeaderFilters": "Filtros", "HeaderForKids": "Para niños", @@ -298,28 +297,28 @@ "HeaderFrequentlyPlayed": "Reproducido frecuentemente", "HeaderGenres": "Géneros", "HeaderGuideProviders": "Proveedores de guías", - "HeaderHttpHeaders": "Cabeceras Http", + "HeaderHttpHeaders": "Cabeceras HTTP", "HeaderIdentification": "Identificación", "HeaderIdentificationCriteriaHelp": "Entre al menos un criterio de identificación.", "HeaderIdentificationHeader": "Cabecera de indentificación", - "HeaderIdentifyItemHelp": "Asigna uno o más criterios de búsqueda. Quita criterios para aumentar el número de resultados de búsqueda", + "HeaderIdentifyItemHelp": "Asigna uno o más criterios de búsqueda. Quita criterios para aumentar el número de resultados de búsqueda.", "HeaderImageOptions": "Opciones de imagen", - "HeaderImageSettings": "Opciones de imágen", + "HeaderImageSettings": "Opciones de imagen", "HeaderInstall": "Instalar", - "HeaderInstantMix": "Mix instantáneo", - "HeaderItems": "Ítems", - "HeaderKeepRecording": "Mantener Grabación", - "HeaderKeepSeries": "Mantener Series", - "HeaderKodiMetadataHelp": "Jellyfin incluye soporte nativo para archivos de metadatos Nfo. Para habilitar o deshabilitar los metadatos Nfo, use la pestaña Metadatos para configurar las opciones para tu tipo de contenido.", - "HeaderLatestEpisodes": "Ultimos episodios", + "HeaderInstantMix": "Mezcla instantánea", + "HeaderItems": "Elementos", + "HeaderKeepRecording": "Mantener grabación", + "HeaderKeepSeries": "Mantener series", + "HeaderKodiMetadataHelp": "Jellyfin incluye soporte nativo para archivos de metadatos NFO. Para habilitar o deshabilitar los metadatos NFO, use la pestaña Metadatos para configurar las opciones para tu tipo de contenido.", + "HeaderLatestEpisodes": "Últimos episodios", "HeaderLatestMedia": "Últimos medios", "HeaderLatestMovies": "Últimas películas", "HeaderLatestMusic": "Última música", - "HeaderLatestRecordings": "Últimas Grabaciones", + "HeaderLatestRecordings": "Últimas grabaciones", "HeaderLibraries": "Blibliotecas", "HeaderLibraryAccess": "Acceso a la biblioteca", - "HeaderLibraryFolders": "Carpetas de la Biblioteca", - "HeaderLibraryOrder": "Orden de la Biblioteca", + "HeaderLibraryFolders": "Carpetas de la biblioteca", + "HeaderLibraryOrder": "Orden de la biblioteca", "HeaderLibrarySettings": "Ajustes de la biblioteca", "HeaderLiveTV": "TV en directo", "HeaderLiveTv": "TV en directo", @@ -327,42 +326,42 @@ "HeaderLoginFailure": "Fallo de inicio de sesión", "HeaderMedia": "Medios", "HeaderMediaFolders": "Carpetas de medios", - "HeaderMediaInfo": "Info multimedia", + "HeaderMediaInfo": "Información multimedia", "HeaderMetadataSettings": "Ajustes de metadatos", "HeaderMoreLikeThis": "Más como éste", "HeaderMovies": "Películas", "HeaderMusicVideos": "Vídeos musicales", "HeaderMyDevice": "Mi dispositivo", - "HeaderMyMedia": "Mis Contenidos", - "HeaderMyMediaSmall": "Mis Contenidos (pequeño)", - "HeaderNewApiKey": "Nueva Clave Api", + "HeaderMyMedia": "Mis contenidos", + "HeaderMyMediaSmall": "Mis contenidos (pequeño)", + "HeaderNewApiKey": "Nueva clave API", "HeaderNewDevices": "Nuevos dispositivos", "HeaderNextEpisodePlayingInValue": "Siguiente episodio empezará en {0}", "HeaderNextUp": "Siguiendo", "HeaderNextVideoPlayingInValue": "Siguiente vídeo empezará en {0}", - "HeaderOnNow": "Transmitiendo Ahora", - "HeaderOtherItems": "Otros ítems", + "HeaderOnNow": "Transmitiendo ahora", + "HeaderOtherItems": "Otros elementos", "HeaderParentalRatings": "Clasificación parental", "HeaderPassword": "Contraseña", "HeaderPasswordReset": "Reestablecer contraseña", "HeaderPaths": "Ruta", "HeaderPendingInvitations": "Invitaciones pendientes", "HeaderPeople": "Gente", - "HeaderPinCodeReset": "Restablecer Código PIN", + "HeaderPinCodeReset": "Restablecer código PIN", "HeaderPlayAll": "Reproducir todo", "HeaderPlayOn": "Reproducir en", "HeaderPlayback": "Reproducción de contenido", "HeaderPlaybackError": "Error de reproducción", "HeaderPlaybackSettings": "Ajustes de reproducción", - "HeaderPleaseSignIn": "Por favor inicie sesión", + "HeaderPleaseSignIn": "Por favor, inicie sesión", "HeaderPluginInstallation": "Instalación del plugin", - "HeaderPreferredMetadataLanguage": "Idioma preferido para metadata", + "HeaderPreferredMetadataLanguage": "Idioma preferido para los metadatos", "HeaderProfile": "Perfil", "HeaderProfileInformation": "Información del perfil", "HeaderProfileServerSettingsHelp": "Estos valores controlan como el servidor Jellyfin se presenta al dispositivo.", "HeaderRecentlyPlayed": "Reproducido recientemente", "HeaderRecordingOptions": "Ajustes de grabación", - "HeaderRecordingPostProcessing": "Grabación Post Procesamiento", + "HeaderRecordingPostProcessing": "Grabación post procesamiento", "HeaderRemoteControl": "Control remoto", "HeaderRemoveMediaFolder": "Quitar carpeta de medios", "HeaderRemoveMediaLocation": "Quitar ubicación de medios", @@ -385,9 +384,9 @@ "HeaderSelectTranscodingPath": "Seleccione la ruta temporal del transcodificador", "HeaderSelectTranscodingPathHelp": "Busque o escriba la ruta de acceso que se utilizará para la transcodificación de archivos temporales. La carpeta debe tener permiso de escritura.", "HeaderSendMessage": "Enviar mensaje", - "HeaderSeries": "Series:", - "HeaderSeriesOptions": "Opciones de Series", - "HeaderServerSettings": "Ajustes del Servidor", + "HeaderSeries": "Series", + "HeaderSeriesOptions": "Opciones de series", + "HeaderServerSettings": "Ajustes del servidor", "HeaderSettings": "Ajustes", "HeaderSetupLibrary": "Configure sus bibliotecas de medios", "HeaderShutdown": "Apagar", @@ -399,10 +398,10 @@ "HeaderStatus": "Estado", "HeaderSubtitleAppearance": "Apariencia de los subtítulos", "HeaderSubtitleDownloads": "Descargas de subtítulos", - "HeaderSubtitleProfile": "Perfil de subtítulos", - "HeaderSubtitleProfiles": "Perfil de subtítulos", + "HeaderSubtitleProfile": "Perfil del subtítulo", + "HeaderSubtitleProfiles": "Perfil de los subtítulos", "HeaderSubtitleProfilesHelp": "El perfil de los subtítulos describe el formato soportado por el dispositivo.", - "HeaderSubtitleSettings": "Ajustes de subtítulos", + "HeaderSubtitleSettings": "Ajustes de los subtítulos", "HeaderSystemDlnaProfiles": "Perfiles del sistema", "HeaderTags": "Etiquetas", "HeaderTaskTriggers": "Tareas de activación", @@ -425,19 +424,19 @@ "HeaderXmlDocumentAttributes": "Atributos del documento xml", "HeaderXmlSettings": "Ajustes xml", "HeaderYears": "Años", - "HeadersFolders": "Carpetas:", + "HeadersFolders": "Carpetas", "Help": "Ayuda", - "Hide": "Esconder", + "Hide": "Ocultar", "HideWatchedContentFromLatestMedia": "Esconder medios vistos de los medios más recientes", - "HttpsRequiresCert": "Para requerir https para conexiones externas, deberas proporcionar un certificado SSL de confianza, como los de Lets Encrypt.", + "HttpsRequiresCert": "Para requerir HTTPS para las conexiones externas, deberás proporcionar un certificado SSL de confianza, como los de Lets Encrypt.", "Identify": "Identificar", "Images": "Imágenes", "ImportFavoriteChannelsHelp": "Si está activado, sólo los canales guardados como favoritos en el sintonizador se importarán.", "ImportMissingEpisodesHelp": "Si está activada, la información sobre los episodios que faltan se importará en su base de datos Jellyfin y se mostrará en temporadas y series. Esto puede causar exploraciones de bibliotecas significativamente más largas.", "InstallingPackage": "Instalando {0}", "InstantMix": "Mix instantáneo", - "ItemCount": "ítems {0}", - "Items": "Ítems", + "ItemCount": "Elementos {0}", + "Items": "Elemento", "Kids": "Infantil", "Label3DFormat": "Formato 3D:", "LabelAbortedByServerShutdown": "(Abortado por cierre del servidor)", @@ -449,54 +448,54 @@ "LabelAirsAfterSeason": "Se emite después de la temporada:", "LabelAirsBeforeEpisode": "Se emite antes del episodio:", "LabelAirsBeforeSeason": "Se emite antes de la temporada:", - "LabelAlbum": "Álbum", + "LabelAlbum": "Álbum:", "LabelAlbumArtHelp": "PN utilizado para la carátula del álbum, dentro del atributo dlna: profileID en upnp: albumArtURI. Algunos dispositivos requieren un valor específico, independientemente del tamaño de la imagen.", "LabelAlbumArtMaxHeight": "Altura máxima de la carátula del album:", - "LabelAlbumArtMaxHeightHelp": "Resolución máxima de la carátula del álbum expuesta a través de upnp:albumArtURI.", + "LabelAlbumArtMaxHeightHelp": "Resolución máxima de la carátula del álbum expuesta a través de upnp: albumArtURI.", "LabelAlbumArtMaxWidth": "Anchura máxima de la carátula del album:", - "LabelAlbumArtMaxWidthHelp": "Resolución máxima de la carátula del álbum expuesta a través de upnp:albumArtURI.", + "LabelAlbumArtMaxWidthHelp": "Resolución máxima de la carátula del álbum expuesta a través de upnp: albumArtURI.", "LabelAlbumArtPN": "Carátula del album PN:", - "LabelAlbumArtists": "Artistas de los álbumes", + "LabelAlbumArtists": "Artistas de los álbumes:", "LabelAll": "Todo", "LabelAllowHWTranscoding": "Permitir transcodificación por hardware", "LabelAllowServerAutoRestart": "Permitir al servidor reiniciarse automáticamente para aplicar las actualizaciones", - "LabelAllowServerAutoRestartHelp": "El servidor sólo se reiniciará durante periodos de reposo, cuando no hayan usuarios activos.", + "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 app", + "LabelAppName": "Nombre de la aplicación", "LabelAppNameExample": "Ejemplo: Sickbeard, NzbDrone", "LabelArtists": "Artistas:", - "LabelArtistsHelp": "Separar multiples usando ;", - "LabelAudioLanguagePreference": "Idioma de audio preferido", + "LabelArtistsHelp": "Separar múltiples artistas usando ;", + "LabelAudioLanguagePreference": "Idioma de audio preferido:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Actualizar los metadatos automáticamente de internet:", "LabelBindToLocalNetworkAddress": "Vincular a la dirección de red local:", - "LabelBindToLocalNetworkAddressHelp": "Opcional. Anule la dirección IP local para enlazar el servidor http. Si se deja vacío, el servidor se enlazará a todas las direcciones disponibles. Para cambiar este valor, debe reiniciar Jellyfin Server.", + "LabelBindToLocalNetworkAddressHelp": "Opcional. Anule la dirección IP local para enlazar el servidor HTTP. Si se deja vacío, el servidor se enlazará a todas las direcciones disponibles. Para cambiar este valor, debe reiniciar el servidor Jellyfin.", "LabelBirthDate": "Fecha de nacimiento:", "LabelBirthYear": "Año de nacimiento:", "LabelBlastMessageInterval": "Intervalo para mensajes en vivo (segundos)", - "LabelBlastMessageIntervalHelp": "Determina la duración en segundos entre los mensajes en vivo del servidor .", + "LabelBlastMessageIntervalHelp": "Determina la duración en segundos entre los mensajes en vivo del servidor.", "LabelBlockContentWithTags": "Bloquear artículos sin etiquetas:", "LabelCache": "Caché:", "LabelCachePath": "Ruta del caché:", - "LabelCachePathHelp": "Especifica una ruta para los archivos del caché del servidor, como las imágenes. Vacío para usar la ruta por defecto.", + "LabelCachePathHelp": "Especifica una ruta para los archivos del caché del servidor, como las imágenes. Si se deja vacío se usa la ruta por defecto.", "LabelCancelled": "Cancelado", - "LabelCertificatePassword": "Contraseña del certificado", - "LabelCertificatePasswordHelp": "Si tu certificado requiere una contraseña, por favor introducela aqui", - "LabelChannels": "Canales", + "LabelCertificatePassword": "Contraseña del certificado:", + "LabelCertificatePasswordHelp": "Si tu certificado requiere una contraseña, por favor, introdúcela aquí.", + "LabelChannels": "Canales:", "LabelCollection": "Colección:", - "LabelCommunityRating": "Puntuación de la comunidad", + "LabelCommunityRating": "Puntuación de la comunidad:", "LabelContentType": "Tipo de contenido:", "LabelCountry": "País:", "LabelCriticRating": "Valoración de la crítica:", - "LabelCurrentPassword": "Contraseña actual", - "LabelCustomCertificatePath": "Lugar ssl certificado personalizado:", + "LabelCurrentPassword": "Contraseña actual:", + "LabelCustomCertificatePath": "Ruta del certificado SSL personalizado:", "LabelCustomCertificatePathHelp": "Ruta a un archivo PKCS # 12 que contiene un certificado y una clave privada para habilitar el soporte de TLS en un dominio personalizado.", - "LabelCustomCss": "css modificado:", - "LabelCustomCssHelp": "Aplique su propio css modificado a la interfaz de la web.", + "LabelCustomCss": "CSS modificado:", + "LabelCustomCssHelp": "Aplique su propio CSS modificado a la interfaz de la web.", "LabelCustomDeviceDisplayName": "Nombre para mostrar:", - "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre para mostrar o déjelo vacío para usar el nombre comunicado por el dispositivo.", + "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre para mostrar o déjelo vacío para usar el nombre proporcionado por el dispositivo.", "LabelCustomRating": "Valoración pesonalizada:", - "LabelDateAdded": "Fecha añadido:", + "LabelDateAdded": "Fecha de añadido:", "LabelDateAddedBehavior": "Comportamiento de la fecha añadida para contenido nuevo:", "LabelDateAddedBehaviorHelp": "Si un valor de metadato está disponible su usará siempre antes que ninguna de esas opciones.", "LabelDay": "Día:", @@ -504,7 +503,7 @@ "LabelDefaultUser": "Usuario por defecto:", "LabelDefaultUserHelp": "Determina de qúe usuario se utilizará su biblioteca de medios para mostrarla por defecto en los dipositivos conectados. Esto puede cambiarse para cada dispositivo mediante el uso de perfiles.", "LabelDeviceDescription": "Descripción del dispositivo", - "LabelDidlMode": "Modo didl:", + "LabelDidlMode": "Modo DIDL:", "LabelDiscNumber": "Número de disco:", "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en temporadas", "LabelDisplayMode": "Modo de visualización:", @@ -516,7 +515,7 @@ "LabelDownloadLanguages": "Idiomas de descarga:", "LabelDropImageHere": "Soltar imagen aquí, o pulsar para navegar.", "LabelDynamicExternalId": "{0} id:", - "LabelEasyPinCode": "Fácil código PIN:", + "LabelEasyPinCode": "Código PIN:", "LabelEmbedAlbumArtDidl": "Incorporar la carátula del álbum en didl", "LabelEmbedAlbumArtDidlHelp": "Algunos dispositivos prefieren este método para obtener la carátula del álbum. Otros pueden fallar al reproducir con esta opción habilitada.", "LabelEnableAutomaticPortMap": "Habilitar asignación de puertos automático", @@ -524,15 +523,15 @@ "LabelEnableBlastAliveMessages": "Explotar mensajes en vivo", "LabelEnableBlastAliveMessagesHelp": "Active aquí si el servidor no es detectado correctamente por otros dispositivos UPnP en su red.", "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de detección de cliente (segundos)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración in segundos entre la búsqueda SSDP hechas por Jellyfin.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre la búsqueda SSDP hechas por Jellyfin.", "LabelEnableDlnaDebugLogging": "Activar el registro de depuración de DLNA", - "LabelEnableDlnaDebugLoggingHelp": "Esto creará archivos de registro de gran tamaño y sólo debe ser utilizado cuando sea necesario para solucionar problemas.", - "LabelEnableDlnaPlayTo": "Actvar la reproducción en DLNAi", + "LabelEnableDlnaDebugLoggingHelp": "Esto creará archivos de registro de gran tamaño y solo debe ser utilizado cuando sea necesario para solucionar problemas.", + "LabelEnableDlnaPlayTo": "Activar la reproducción en DLNAi", "LabelEnableDlnaPlayToHelp": "Jellyfin puede detectar equipos dentro de su red y puede ofrecer la habilidad de controlarlos remotamente.", - "LabelEnableDlnaServer": "Habilitar servidor Dlna", - "LabelEnableDlnaServerHelp": "Permite que los aparatos con tecnologia UPnP en su red local pudan acceder los contenidos en Jellyfin.", + "LabelEnableDlnaServer": "Habilitar el servidor DLNA", + "LabelEnableDlnaServerHelp": "Permite que los aparatos con tecnología UPnP en su red local pudan acceder los contenidos en Jellyfin.", "LabelEnableHardwareDecodingFor": "Activar decodificación por hardware para:", - "LabelEnableRealtimeMonitor": "Activar monitoreo en tiempo real", + "LabelEnableRealtimeMonitor": "Activar la monitorización en tiempo real", "LabelEnableRealtimeMonitorHelp": "Los cambios se procesarán inmediatamente, en sistemas de archivo que lo soporten.", "LabelEnableSingleImageInDidlLimit": "Limitar a una imagen integrada", "LabelEnableSingleImageInDidlLimitHelp": "Algunos dispositivos no renderizan correctamente si hay muchas imágenes integradas en Didl.", @@ -541,13 +540,11 @@ "LabelEvent": "Evento:", "LabelEveryXMinutes": "Cada:", "LabelExternalDDNS": "Dominio externo:", - "LabelExternalDDNSHelp": "Si tienes un DNS dinámico introdúcelo aquí. Las aplicaciones de Jellyfin lo usarán para conectarse remotamente. Este campo es necesario cuando utilices un certificado ssl personalizado. Ejemplo: midominio.com.", + "LabelExternalDDNSHelp": "Si tienes un DNS dinámico introdúcelo aquí. Las aplicaciones de Jellyfin lo usarán para conectarse remotamente. Este campo es necesario cuando utilices un certificado SSL personalizado. Ejemplo: example.com.", "LabelExtractChaptersDuringLibraryScan": "Extraer imágenes de los capítulos durante el escaneo de la biblioteca", "LabelExtractChaptersDuringLibraryScanHelp": "Si está activado, se extraerán imágenes de capíulos cuando se importen vídeos durante el escaneo de las bibliotecas. Si se desactiva, las imágenes se descargarán cuando se ejecute la terea programada para ello, permitiendo asi un escaneo de la biblioteca más rápido.", "LabelFailed": "Error", - "LabelFanartApiKey": "Clave personal de API:", - "LabelFanartApiKeyHelp": "Las solicitudes de fanart sin una clave de API personal devuelven imágenes que fueron aprobadas hace más de 7 días. Con una clave de API personal se reduce a 48 horas y si también eres un miembro VIP de fanart se reducirá a alrededor de 10 minutos.", - "LabelFileOrUrl": "Archivo o url:", + "LabelFileOrUrl": "Archivo o URL:", "LabelFinish": "Terminar", "LabelFont": "Fuente:", "LabelForgotPasswordUsernameHelp": "Introduce tu nombre de usuario, si te acuerdas.", @@ -561,57 +558,57 @@ "LabelHardwareAccelerationType": "Aceleración por hardware:", "LabelHardwareAccelerationTypeHelp": "Disponible sólo en sistemas soportados.", "LabelHomeScreenSectionValue": "Sección de la pantalla de inicio {0}:", - "LabelHttpsPort": "Número de puerto local de https:", - "LabelHttpsPortHelp": "Número de puerto al que el servidor de tcp de Jellyfin debe de ser enlazado.", + "LabelHttpsPort": "Número de puerto local de HTTPS:", + "LabelHttpsPortHelp": "Número de puerto al que el servidor de TCP de Jellyfin debe de ser enlazado.", "LabelIconMaxHeight": "Altura máxima de icono:", - "LabelIconMaxHeightHelp": "Resolución máxima de los iconos expuestos via upnp:icon.", + "LabelIconMaxHeightHelp": "Resolución máxima de los iconos expuestos vía upnp:icon.", "LabelIconMaxWidth": "Anchura máxima de icono:", - "LabelIconMaxWidthHelp": "Resolución máxima de los iconos expuestos via upnp:icon.", + "LabelIconMaxWidthHelp": "Resolución máxima de los iconos expuestos vía upnp:icon.", "LabelIdentificationFieldHelp": "Una subcadena insensible a mayúsculas o minúsculas o una expresión regex.", "LabelImageFetchersHelp": "Activa y ordena tus buscadores de imágenes en orden de prioridad.", "LabelImageType": "Tipo de imagen:", "LabelImportOnlyFavoriteChannels": "Reestringir a los canales marcados como favoritos", - "LabelInNetworkSignInWithEasyPassword": "Activar inicio de sesión en línea con código pin", - "LabelInNetworkSignInWithEasyPasswordHelp": "Si está activado, serás capaz de usar tu código pin para iniciar sesión en las aplicaciones de Jellyfin desde tu red local. Sólo necesitarás tu contraseña para cuando estés fuera de casa. Si dejas el código pin en blanco, no necesitarás contraseña en tu red local.", + "LabelInNetworkSignInWithEasyPassword": "Activar inicio de sesión en línea con código PIN", + "LabelInNetworkSignInWithEasyPasswordHelp": "Si está activado, serás capaz de usar tu código PIN para iniciar sesión en las aplicaciones de Jellyfin desde tu red local. Sólo necesitarás tu contraseña para cuando estés fuera de casa. Si dejas el código PIN en blanco, no necesitarás contraseña en tu red local.", "LabelInternetQuality": "Calidad en internet:", "LabelKeepUpTo": "Mantener hasta:", "LabelKidsCategories": "Categorías de niños:", "LabelKodiMetadataDateFormat": "Formato de fecha de lanzamiento:", - "LabelKodiMetadataDateFormatHelp": "Todas las fechas de los nfo's se leerán y escribirán usando este formato.", + "LabelKodiMetadataDateFormatHelp": "Todas las fechas de los NFO's se leerán y escribirán usando este formato.", "LabelKodiMetadataEnableExtraThumbs": "Copiar fanart extra en vistas previas extras", "LabelKodiMetadataEnableExtraThumbsHelp": "Cuando se descarguen imágenes pueden ser guardadas tanto en extrafanart como en extrathumbs para maximizar la compatibilidad con los temas de Kodi.", "LabelKodiMetadataEnablePathSubstitution": "Habilitar rutas de sustitución", "LabelKodiMetadataEnablePathSubstitutionHelp": "Permite la sustitución de las rutas de imágenes utilizando la configuración de rutas de sustitución en las opciones del servidor.", - "LabelKodiMetadataSaveImagePaths": "Guardar la ruta de las imágenes en los archivos nfo", - "LabelKodiMetadataSaveImagePathsHelp": "Esto se recomienda si tienes archivos de imágenes que no se ajustan a las directrices de Kodi.", - "LabelKodiMetadataUser": "Sincronizar los datos de reproducciones del usuario al nfo para:", - "LabelKodiMetadataUserHelp": "Activa esta opción para guardar los datos de visualización a archivos NFO para que otras aplicaciones lo puedan utilizar", + "LabelKodiMetadataSaveImagePaths": "Guardar la ruta de las imágenes en los archivos NFO", + "LabelKodiMetadataSaveImagePathsHelp": "Esto se recomienda si tienes imágenes que no se ajustan a las directrices de Kodi.", + "LabelKodiMetadataUser": "Sincronizar los datos de reproducciones del usuario al NFO para:", + "LabelKodiMetadataUserHelp": "Activa esta opción para guardar los datos de visualización a archivos NFO para que otras aplicaciones lo puedan utilizar.", "LabelLanNetworks": "Redes locales:", "LabelLanguage": "Idioma:", "LabelLineup": "Reparto:", - "LabelLocalHttpServerPortNumber": "Numero local de puerto de http:", - "LabelLocalHttpServerPortNumberHelp": "Número de puerto al que el servidor de http de Jellyfin debe de ser enlazado.", + "LabelLocalHttpServerPortNumber": "Numero local de puerto de HTTP:", + "LabelLocalHttpServerPortNumberHelp": "Número de puerto al que el servidor de HTTP de Jellyfin debe de ser enlazado.", "LabelLockItemToPreventChanges": "Bloquear este ítem para evitar futuros cambios", - "LabelLoginDisclaimer": "Login renuncia:", + "LabelLoginDisclaimer": "Descargo de responsabilidad de inicio de sesión:", "LabelLoginDisclaimerHelp": "Esto se mostrará en la parte inferior de la página de inicio de sesión.", "LabelLogs": "Registros:", "LabelManufacturer": "Fabricante", - "LabelManufacturerUrl": "Url del fabricante", - "LabelMatchType": "Tipo de emparejamiento", + "LabelManufacturerUrl": "URL del fabricante", + "LabelMatchType": "Tipo de emparejamiento:", "LabelMaxBackdropsPerItem": "Máximo número de imágenes de fondo por ítem:", - "LabelMaxChromecastBitrate": "Bitrate de reproducción Chromecast", - "LabelMaxParentalRating": "Máxima clasificación permitida", - "LabelMaxResumePercentage": "Porcentaje máximo para reanudación::", + "LabelMaxChromecastBitrate": "Bitrate de reproducción Chromecast:", + "LabelMaxParentalRating": "Máxima clasificación permitida:", + "LabelMaxResumePercentage": "Porcentaje máximo para reanudación:", "LabelMaxResumePercentageHelp": "Los títulos se asumirán como reproducidos si se paran después de este momento", "LabelMaxScreenshotsPerItem": "Máximo número de capturas de pantalla por ítem:", "LabelMaxStreamingBitrate": "Calidad de transmisión máxima:", - "LabelMaxStreamingBitrateHelp": "Especificar tasa de bits máxima en la transmisión.", + "LabelMaxStreamingBitrateHelp": "Especificar la tasa de bits máxima en la transmisión.", "LabelMessageText": "Mensaje de texto:", "LabelMessageTitle": "Título del mensaje:", "LabelMetadata": "Metadatos:", - "LabelMetadataDownloadLanguage": "Idioma preferido visualizado", + "LabelMetadataDownloadLanguage": "Idioma preferido de visualizado:", "LabelMetadataDownloadersHelp": "Activa y ordena tus descargadores de metadatos por prioridad. Los que tengan menor prioridad se sólo se utilizarán para llenar la información faltante.", - "LabelMetadataPath": "Ruta de Metadata:", + "LabelMetadataPath": "Ruta de los metadatos:", "LabelMetadataPathHelp": "Especifica una ruta para los pósteres y metadatos.", "LabelMetadataReaders": "Lectores de metadatos:", "LabelMetadataReadersHelp": "Ordena tus fuentes de metadatos locales por prioridad. Se leerá el primer archivo encontrado.", @@ -619,7 +616,7 @@ "LabelMetadataSaversHelp": "Elige el formato de archivo para guardar tus metadatos.", "LabelMethod": "Método:", "LabelMinBackdropDownloadWidth": "Anchura mínima de descarga de imágenes de fondo:", - "LabelMinResumeDuration": "Duración mínima de reanudación (segundos):", + "LabelMinResumeDuration": "Duración mínima de reanudación:", "LabelMinResumeDurationHelp": "Los títulos más cortos de esto no serán reanudables", "LabelMinResumePercentage": "Porcentaje mínimo para reanudación:", "LabelMinResumePercentageHelp": "Los títulos se asumirán como no reproducidos si se paran antes de este momento", @@ -627,28 +624,28 @@ "LabelModelDescription": "Descripción de modelo", "LabelModelName": "Nombre de modelo", "LabelModelNumber": "Número de modelo", - "LabelModelUrl": "Url del modelo", + "LabelModelUrl": "URL del modelo", "LabelMonitorUsers": "Supervisar la actividad de:", "LabelMovieCategories": "Categorías de películas:", "LabelMoviePrefix": "Prefijo de película:", "LabelMoviePrefixHelp": "Si se aplica un prefijo a títulos de películas, introdúzcalo aquí para que Jellyfin pueda manejarlo correctamente.", "LabelMovieRecordingPath": "Ruta de grabaciones de películas (opcional):", "LabelMusicStreamingTranscodingBitrate": "Tasa de bits de transcodificación de música:", - "LabelMusicStreamingTranscodingBitrateHelp": "Especificar tasa de bits cuando se transmita música", + "LabelMusicStreamingTranscodingBitrateHelp": "Especificar la tasa de bits cuando se transmita música", "LabelName": "Nombre:", "LabelNewName": "Nuevo nombre:", - "LabelNewPassword": "Nueva Contraseña:", - "LabelNewPasswordConfirm": "Confirmación de contraseña nueva:", + "LabelNewPassword": "Nueva contraseña:", + "LabelNewPasswordConfirm": "Confirmación de la nueva contraseña:", "LabelNewsCategories": "Categorías de noticias:", "LabelNext": "Siguiente", "LabelNotificationEnabled": "Activar esta notificación", "LabelNumber": "Número:", - "LabelNumberOfGuideDays": "Número de días de descarga de la guía.", + "LabelNumberOfGuideDays": "Número de días a descargar de la guía:", "LabelNumberOfGuideDaysHelp": "Descargar más días de la guía ofrece la posibilidad de programar grabaciones con mayor antelación y ver más listas, pero también tarda más en descargarse. Auto elegirá en función del número de canales.", "LabelOptionalNetworkPath": "(Opcional) Carpeta de red compartida:", "LabelOptionalNetworkPathHelp": "Si esta carpeta se comparte en la red, el suministro de la ruta de acceso compartido de red puede permitir a las aplicaciones Jellyfin de otros dispositivos acceder directamente a los archivos multimedia.", "LabelOriginalAspectRatio": "Relación de aspecto original:", - "LabelOriginalTitle": "Título original", + "LabelOriginalTitle": "Título original:", "LabelOverview": "Resumen:", "LabelParentalRating": "Clasificación parental:", "LabelPassword": "Contraseña:", @@ -662,25 +659,25 @@ "LabelPostProcessor": "Aplicación de post-procesamiento:", "LabelPostProcessorArguments": "Argumentos de línea de comandos posprocesador:", "LabelPostProcessorArgumentsHelp": "Utilice {path} como ruta del archivo de grabación.", - "LabelPreferredDisplayLanguage": "Idioma preferido visualizado", + "LabelPreferredDisplayLanguage": "Idioma preferido visualizado:", "LabelPreferredDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en marcha.", - "LabelPreferredSubtitleLanguage": "Idioma de subtítulos preferido", + "LabelPreferredSubtitleLanguage": "Idioma de subtítulos preferido:", "LabelPrevious": "Anterior", - "LabelProfileAudioCodecs": "Codecs de audio:", + "LabelProfileAudioCodecs": "Códecs de audio:", "LabelProfileCodecs": "Códecs:", - "LabelProfileCodecsHelp": "Separados por comas. Esto se puede dejar vacío para aplicar a todos los codecs.", + "LabelProfileCodecsHelp": "Separados por comas. Esto se puede dejar vacío para aplicar a todos los códecs.", "LabelProfileContainer": "Contenedor:", "LabelProfileContainersHelp": "Separados por comas. Esto se puede dejar vacío para aplicar a todos los contenedores.", - "LabelProfileVideoCodecs": "Codecs de video:", + "LabelProfileVideoCodecs": "Códecs de video:", "LabelProtocol": "Protocolo:", "LabelProtocolInfo": "Información de protocolo:", "LabelProtocolInfoHelp": "El valor que se utilizará cuando se responde a una solicitud GetProtocolInfo desde el dispositivo.", - "LabelPublicHttpPort": "Número de puerto público de http:", - "LabelPublicHttpPortHelp": "El número de puerto público que debe ser enlazado al puerto local http:", - "LabelPublicHttpsPort": "Número de puerto público de https:", - "LabelPublicHttpsPortHelp": "El número de puerto público que debe ser enlazado al puerto local https:", + "LabelPublicHttpPort": "Número de puerto público de HTTP:", + "LabelPublicHttpPortHelp": "El número de puerto público que debe ser enlazado al puerto local HTTP.", + "LabelPublicHttpsPort": "Número de puerto público de HTTPS:", + "LabelPublicHttpsPortHelp": "El número de puerto público que debe ser enlazado al puerto local HTTPS.", "LabelReadHowYouCanContribute": "Aprenda cómo contribuir.", - "LabelReasonForTranscoding": "Motivo de transcodificación", + "LabelReasonForTranscoding": "Motivo de la transcodificación:", "LabelRecord": "Grabar:", "LabelRecordingPath": "Ruta de grabaciones por defecto:", "LabelRecordingPathHelp": "Especifica la ubicación por defecto para guardar las grabaciones. Si lo dejas vacío se usará la carpeta de datos del servidor.", @@ -688,17 +685,17 @@ "LabelReleaseDate": "Fecha de lanzamiento:", "LabelRemoteClientBitrateLimit": "Límite de la transmisión de tasa de bits por internet (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Un límite opcional de tasa de bits para todos los dispositivos fuera de la red. Esto es útil para evitar que los dispositivos soliciten una tasa de bits más alta que la que su conexión a Internet puede manejar. Esto puede ocasionar una mayor carga de la CPU en su servidor para transcodificar vídeos sobre la marcha a una tasa de bits más baja.", - "LabelRuntimeMinutes": "Tiempo e ejecución (minutos):", - "LabelSaveLocalMetadata": "Guardar imágenes y metadata en las carpetas de medios", + "LabelRuntimeMinutes": "Tiempo de ejecución (minutos):", + "LabelSaveLocalMetadata": "Guardar imágenes y metadatos en las carpetas de medios", "LabelSaveLocalMetadataHelp": "Guardar imágenes y metadatos directamente en las carpetas de medios, permitirá colocarlas en un lugar donde se pueden editar fácilmente.", "LabelScheduledTaskLastRan": "Última ejecución {0}, tardando {1}.", - "LabelScreensaver": "Salvapantallas", - "LabelSeasonNumber": "Temporada número:", + "LabelScreensaver": "Salvapantallas:", + "LabelSeasonNumber": "Número de temporada:", "LabelSecureConnectionsMode": "Modo de conexión segura:", "LabelSelectFolderGroups": "Agrupar contenido automáticamente desde las siguientes carpetas en vistas como Películas, Música y Series:", "LabelSelectFolderGroupsHelp": "Las carpetas sin seleccionar se mostrarán ellas mismas en su propia vista.", "LabelSelectUsers": "Seleccionar usuarios:", - "LabelSelectVersionToInstall": "Seleccionar versión a instalar", + "LabelSelectVersionToInstall": "Seleccionar versión a instalar:", "LabelSendNotificationToUsers": "Enviar la notificación a:", "LabelSerialNumber": "Número de serie", "LabelSeriesRecordingPath": "Ruta de grabaciones de series (opcional):", @@ -713,14 +710,14 @@ "LabelSonyAggregationFlagsHelp": "Determina el contenido del elemento aggregationFlags en el espacio de nombre urn:schemas-sonycom:av.", "LabelSortTitle": "Clasificar por título:", "LabelSource": "Fuente:", - "LabelSpecialSeasonsDisplayName": "Nombre para mostrar la temporada especial", + "LabelSpecialSeasonsDisplayName": "Nombre para mostrar la temporada especial:", "LabelSportsCategories": "Categorías de deportes:", "LabelStartWhenPossible": "Empezar cuando sea posible:", "LabelStatus": "Estado:", "LabelStopWhenPossible": "Parar cuando sea posible:", "LabelStopping": "Deteniendo", "LabelSubtitleDownloaders": "Descargadores de subtítulos:", - "LabelSubtitleFormatHelp": "Ejemplo: srt", + "LabelSubtitleFormatHelp": "Ejemplo: .srt", "LabelSubtitlePlaybackMode": "Modo de subtítulo:", "LabelSupportedMediaTypes": "Tipos de medio soportados:", "LabelTag": "Etiqueta:", @@ -730,15 +727,15 @@ "LabelTextSize": "Tamaño del texto:", "LabelTheme": "Tema:", "LabelTime": "Hora:", - "LabelTimeLimitHours": "Limite de tiempo (horas):", - "LabelTitle": "Título", + "LabelTimeLimitHours": "Límite de tiempo (horas):", + "LabelTitle": "Título:", "LabelTrackNumber": "Número de pista:", - "LabelTranscodingAudioCodec": "Codec de audio:", + "LabelTranscodingAudioCodec": "Códec de audio:", "LabelTranscodingContainer": "Contenedor:", "LabelTranscodingTempPathHelp": "Esta carpeta contiene achivos en uso por el transcodificador. Especificar una ruta personalizada, o dejarla vacía para usar la ruta predeterminada en la carpeta de datos del servidor.", "LabelTranscodingThreadCount": "Cantidad de instancias de transcodificación:", "LabelTranscodingThreadCountHelp": "Selecciona el número máximo de instancias de transcodificación. Reducirlas disminuirá la carga del procesador pero no convertirá lo suficientemente rápido para una reproducción fluida.", - "LabelTranscodingVideoCodec": "Codec de video:", + "LabelTranscodingVideoCodec": "Códec de video:", "LabelTriggerType": "Tipo de evento:", "LabelTunerIpAddress": "IP del sintonizador:", "LabelTunerType": "Tipo de sintonizador:", @@ -752,7 +749,7 @@ "LabelUserLibraryHelp": "Seleccione de qué usuario se utilizará la librería en el dispositivo. Déjelo vacío para utilizar la configuración por defecto.", "LabelUserRemoteClientBitrateLimitHelp": "Esto anulará el valor global predeterminado establecido en la configuración de reproducción del servidor.", "LabelUsername": "Nombre de usuario:", - "LabelVaapiDevice": "VA API Dispositivo:", + "LabelVaapiDevice": "Dispositivo VAAPI:", "LabelVaapiDeviceHelp": "Este es el nodo de procesamiento que se utiliza para la aceleración de hardware.", "LabelValue": "Valor:", "LabelVersionInstalled": "{0} instalado", @@ -761,11 +758,11 @@ "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": "Ha Terminado!", - "LabelZipCode": "Código Zip:", - "LabelffmpegPath": "FFmpeg ruta:", - "LabelffmpegPathHelp": "a ruta de acceso al archivo de la aplicación ffmpeg o la carpeta que contiene ffmpeg.", - "LanNetworksHelp": "Lista de direcciones IP separadas por comas o entradas de IP / máscara de red para redes que se considerarán en la red local al imponer 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.", + "LabelYoureDone": "¡Ya está!", + "LabelZipCode": "Código postal:", + "LabelffmpegPath": "Ruta de FFmpeg:", + "LabelffmpegPathHelp": "a ruta de acceso al archivo de la aplicación FFmpeg o la carpeta que contiene FFmpeg.", + "LanNetworksHelp": "Lista de direcciones IP separadas por comas o entradas de dirección IP / máscara de red para redes que se considerarán en la red local al imponer 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.", "Large": "Grande", "LatestFromLibrary": "Últimas {0}", "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podrán editar todas las carpetas usando el gestor de metadatos.", @@ -790,7 +787,7 @@ "MediaInfoDefault": "Por defecto", "MediaInfoExternal": "Externo", "MediaInfoForced": "Forzado", - "MediaInfoFramerate": "Cuadros por segundo", + "MediaInfoFramerate": "Fotogramas por segundo", "MediaInfoInterlaced": "Entrelazado", "MediaInfoLanguage": "Idioma", "MediaInfoLayout": "Diseño", @@ -804,48 +801,48 @@ "MediaInfoSize": "Tamaño", "MediaInfoTimestamp": "Fecha y hora", "Menu": "Menú", - "MessageAlreadyInstalled": "Esta versión ya está instalada", + "MessageAlreadyInstalled": "Esta versión ya está instalada.", "MessageAreYouSureDeleteSubtitles": "¿Está seguro que desea eliminar este archivo de subtítulos?", - "MessageAreYouSureYouWishToRemoveMediaFolder": "¿Estás seguro de que quieres quitar esta carpeta de medios?", - "MessageConfirmDeleteGuideProvider": "¿Estás seguro de que quieres borrar este proveedor de guía?", - "MessageConfirmDeleteTunerDevice": "¿Estás seguro de que quieres borrar este dispositivo?", + "MessageAreYouSureYouWishToRemoveMediaFolder": "¿Está seguro de que quieres quitar esta carpeta de medios?", + "MessageConfirmDeleteGuideProvider": "¿Está seguro de que quieres borrar este proveedor de guía?", + "MessageConfirmDeleteTunerDevice": "¿Está seguro de que quieres borrar este dispositivo?", "MessageConfirmProfileDeletion": "¿Está seguro que desea eliminar este perfil?", "MessageConfirmRecordingCancellation": "¿Está seguro que desea cancelar esta grabación?", "MessageConfirmRemoveMediaLocation": "¿Estás seguro que quieres quitar esta ubicación?", - "MessageConfirmRestart": "¿Estás seguro de que quieres reiniciar el servidor?", - "MessageConfirmRevokeApiKey": "¿Estás seguro de que quieres revocar esta clave API? Las conexiones de aplicaciones que usen la API se terminarán.", - "MessageConfirmShutdown": "¿Estás seguro de que quieres apagar el servidor?", - "MessageContactAdminToResetPassword": "Por favor contacta con el administrador del sistema para restablecer tu contraseña.", + "MessageConfirmRestart": "¿Está seguro de que quieres reiniciar el servidor?", + "MessageConfirmRevokeApiKey": "¿Está seguro de que quieres revocar esta clave API? Las conexiones de aplicaciones que usen la API se terminarán.", + "MessageConfirmShutdown": "¿Está seguro de que quieres apagar el servidor?", + "MessageContactAdminToResetPassword": "Por favor, contacta con el administrador del sistema para restablecer tu contraseña.", "MessageCreateAccountAt": "Crear una cuenta en {0}", "MessageDeleteTaskTrigger": "¿Está seguro que desea eliminar esta tarea de activación?", "MessageDirectoryPickerBSDInstruction": "Para BSD, necesitarás configurar el almacenamiento del \"FreeNAS Jail\" para poder permitir a Jellyfin acceder a él.", "MessageDirectoryPickerInstruction": "Rutas de red pueden ser introducidas manualmente en el caso de que el botón de la red no pueda localizar sus dispositivos. Por ejemplo, {0} o {1}.", - "MessageDirectoryPickerLinuxInstruction": "Para Arch Linux, CentOS, Debian, Fedora, OpenSuse, o Ubuntu, tienes que permitir al usuario de Jellyfin acceso de lectura a las ubicaciones de almacenamiento.", + "MessageDirectoryPickerLinuxInstruction": "Para las distribuciones GNU/Linux tiene que permitir al usuario que ejecuta Jellyfin acceso de lectura a las ubicaciones de almacenamiento.", "MessageDownloadQueued": "Descarga en cola.", "MessageEnablingOptionLongerScans": "Activar esta opción implicará escaneos de la biblioteca más largos.", - "MessageFileReadError": "Ha habido un error leyendo el fichero. Por favor inténtalo más tarde.", + "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.", + "MessageForgotPasswordInNetworkRequired": "Por favor, inténtalo de nuevo desde tu red de casa para iniciar el proceso de restablecimiento de la contraseña.", "MessageInstallPluginFromApp": "Este plugin debe instalarse desde la aplicación donde lo vayas a usar.", "MessageInvalidForgotPasswordPin": "Se ingresó 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.", + "MessageInvalidUser": "Usuario o contraseña inválidos. Por favor, inténtalo otra vez.", "MessageItemSaved": "Elemento grabado.", - "MessageItemsAdded": "Items añadidos", + "MessageItemsAdded": "Ítems añadidos.", "MessageLeaveEmptyToInherit": "Dejar en blanco para heredar la configuración de un elemento principal, o el valor predeterminado global.", "MessageNoAvailablePlugins": "No hay plugins disponibles.", "MessageNoMovieSuggestionsAvailable": "No hay sugerencias de películas disponibles. Comience ver y calificar sus películas y vuelva para ver las recomendaciones.", "MessageNoPluginsInstalled": "No tiene plugins instalados.", - "MessageNoTrailersFound": "No se han encontrado tráilers. Instala el canal de tráilers para mejorar su experiencia añadiendo una biblioteca de tráilers por internet.", + "MessageNoTrailersFound": "No se han encontrado tráilers. Instala el canal de tráilers para mejorar su experiencia añadiendo una biblioteca de tráilers por internet.", "MessageNothingHere": "Nada aquí.", - "MessagePasswordResetForUsers": "Las contraseñas se han eliminado para los siguientes usuarios. Para iniciar sesión, hazlo sin contraseña.", - "MessagePleaseEnsureInternetMetadata": "Por favor asegúrese que la descarga de metadatos de internet está habilitada", - "MessagePleaseWait": "Por favor espera. Esto puede tardar un minuto.", - "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este plugin por favor inicia sesión en tu servidor local directamente.", - "MessagePluginInstallDisclaimer": "Los plugins creados por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia Jellyfin con características adicionales y otros beneficios. Antes de instalarlos, por favor considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.", + "MessagePasswordResetForUsers": "Se han restablecido las contraseñas de los siguientes usuarios. Ahora pueden iniciar sesión con los códigos PIN que usaron para el restablecimiento.", + "MessagePleaseEnsureInternetMetadata": "Por favor, asegúrese que la descarga de metadatos de internet está habilitada.", + "MessagePleaseWait": "Por favor, espere.", + "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este plugin inicia sesión en tu servidor local directamente.", + "MessagePluginInstallDisclaimer": "Los plugins creados por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia Jellyfin con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.", "MessageReenableUser": "Mira abajo para reactivarlo", "MessageSettingsSaved": "Ajustes guardados.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Se eliminarán las siguientes ubicaciones de medios de tu biblioteca de Jellyfin:", - "MessageUnableToConnectToServer": "No podemos conectar con el servidor seleccionado ahora mismo. Por favor asegúrate de que esta funcionando e inténtalo otra vez.", + "MessageUnableToConnectToServer": "No podemos conectar con el servidor seleccionado ahora mismo. Por favor, asegúrate de que esta funcionando e inténtalo otra vez.", "MessageUnsetContentHelp": "El contenido se mostrará como carpetas planas. Para tener mejores resultados utiliza el gestor de metadatos para establecer los tipos de contenidos de las sub-carpetas.", "MessageYouHaveVersionInstalled": "Actualmente tienes la versión {0} instalada.", "Metadata": "Metadatos", @@ -857,13 +854,13 @@ "Monday": "Lunes", "More": "Más", "MoreFromValue": "Más de {0}", - "MoreUsersCanBeAddedLater": "Se pueden agregar más usuarios desde el panel de control después.", - "MoveLeft": "Mover izquierda", - "MoveRight": "Mover derecha", + "MoreUsersCanBeAddedLater": "Se pueden agregar más usuarios desde el Panel de control después.", + "MoveLeft": "Mover a la izquierda", + "MoveRight": "Mover a la derecha", "MovieLibraryHelp": "Revise la {0}guía de nombres de películas Jellyfin{1}.", "Movies": "Películas", "Mute": "Silencio", - "MySubtitles": "Mis Subtitulos", + "MySubtitles": "Mis subtítulos", "Name": "Nombre", "Never": "Nunca", "NewCollection": "Nueva colección", @@ -882,13 +879,13 @@ "None": "Nada", "NumLocationsValue": "{0} carpetas", "OneChannel": "Un canal", - "OnlyForcedSubtitles": "Sólo subtítulos forzados", - "OnlyForcedSubtitlesHelp": "Sólo se cargarán los subtítulos marcados como forzados.", - "OnlyImageFormats": "Solo formatos de imagen (VOBSUB, PGS, SUB/IDX, etc.)", - "OpenSubtitleInstructions": "Deberás configurar la información de la cuenta de Open Subtitles en la pantalla de configuración de Open Subtitles en el panel de control del servidor.", + "OnlyForcedSubtitles": "Solo subtítulos forzados", + "OnlyForcedSubtitlesHelp": "Solo se cargarán los subtítulos marcados como forzados.", + "OnlyImageFormats": "Solo formatos de imagen (VOBSUB, PGS, SUB/IDX, etc.)", + "OpenSubtitleInstructions": "Deberá configurar la información de la cuenta de Open Subtitles en la pantalla de configuración de Open Subtitles en el panel de control del servidor.", "OptionAdminUsers": "Administradores", "OptionAlbum": "Álbum", - "OptionAlbumArtist": "Album Artista", + "OptionAlbumArtist": "Artista de álbum", "OptionAllUsers": "Todos los usuarios", "OptionAllowAudioPlaybackTranscoding": "Permitir reproducción de audio que requiere transcodificación", "OptionAllowBrowsingLiveTv": "Permitir acceso a la TV en directo", @@ -898,12 +895,12 @@ "OptionAllowManageLiveTv": "Habilitar la administración de grabación de TV en directo", "OptionAllowMediaPlayback": "Permitir la reproducción de medios", "OptionAllowMediaPlaybackTranscodingHelp": "Restringir el acceso a la transcodificación puede causar fallos de reproducción en aplicaciones Jellyfin debido a formatos de medios no compatibles.", - "OptionAllowRemoteControlOthers": "Habilitar el control remote de otros usuarios", - "OptionAllowRemoteSharedDevices": "Habilitar el control remote de otros equipos compartidos", + "OptionAllowRemoteControlOthers": "Habilitar el control remoto de otros usuarios", + "OptionAllowRemoteSharedDevices": "Habilitar el control remoto de otros equipos compartidos", "OptionAllowRemoteSharedDevicesHelp": "Los equipos DLNA son considerados compartidos hasta que un usuario empiece a controlarlo.", - "OptionAllowSyncTranscoding": "Permitir descarga que requiera transcodificación", + "OptionAllowSyncTranscoding": "Permitir la descarga que requiera transcodificación", "OptionAllowUserToManageServer": "Permite a este usuario administrar el servidor", - "OptionAllowVideoPlaybackRemuxing": "Permitir reproducción de vídeo que requiere conversión sin necesidad de volver a codificar", + "OptionAllowVideoPlaybackRemuxing": "Permitir la reproducción de vídeo que requiere conversión sin necesidad de volver a codificar", "OptionAllowVideoPlaybackTranscoding": "Permitir reproducción de vídeo que requiere transcodificación", "OptionArtist": "Artista", "OptionAscending": "Ascendente", @@ -915,9 +912,9 @@ "OptionBlockMovies": "Películas", "OptionBlockMusic": "Música", "OptionBlockTvShows": "Programas TV", - "OptionCommunityRating": "Valoración comunidad", + "OptionCommunityRating": "Valoración de la comunidad", "OptionContinuing": "Continuando", - "OptionCriticRating": "Valoración crítica", + "OptionCriticRating": "Valoración de la crítica", "OptionCustomUsers": "A medida", "OptionDaily": "Diario", "OptionDateAdded": "Añadido el", @@ -935,7 +932,7 @@ "OptionDownloadBannerImage": "Pancarta", "OptionDownloadBoxImage": "Caja", "OptionDownloadDiscImage": "Disco", - "OptionDownloadImagesInAdvance": "Descargar imagenes con antelación", + "OptionDownloadImagesInAdvance": "Descargar imágenes con antelación", "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes solo se descargan cuando lo solicita una aplicación Jellyfin. Activa esta opción para descargar todas las imágenes por adelantado, a medida que se importan nuevos medios. Esto puede causar escaneos de biblioteca significativamente más largos.", "OptionDownloadMenuImage": "Menú", "OptionDownloadPrimaryImage": "Principal", @@ -948,14 +945,14 @@ "OptionEnableExternalContentInSuggestions": "Habilitar contenido externo en sugerencias", "OptionEnableExternalContentInSuggestionsHelp": "Permita que los trailers de Internet y los programas de TV en vivo se incluyan en el contenido sugerido.", "OptionEnableForAllTuners": "Activar para todos los dispositivos sintonizadores", - "OptionEnableM2tsMode": "Activar modo M2ts", - "OptionEnableM2tsModeHelp": "Activar modo m2ts cuando se codifique a mpegts", + "OptionEnableM2tsMode": "Activar modo M2TS", + "OptionEnableM2tsModeHelp": "Activar modo M2TS cuando se codifique a MPEGTS.", "OptionEnded": "Finalizado", "OptionEquals": "Igual", - "OptionEstimateContentLength": "Estimar longitud del contenido al transcodificar", + "OptionEstimateContentLength": "Estimar la longitud del contenido al transcodificar", "OptionEveryday": "Todos los días", "OptionExternallyDownloaded": "Descarga externa", - "OptionExtractChapterImage": "Habilitar la extracción de imágenes de capítulo", + "OptionExtractChapterImage": "Habilitar la extracción de imágenes de los capítulos", "OptionFavorite": "Favoritos", "OptionFriday": "Viernes", "OptionHasSpecialFeatures": "Características especiales", @@ -964,7 +961,7 @@ "OptionHasThemeVideo": "Vídeo temático", "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesión", "OptionHideUserFromLoginHelp": "Útil para privado o cuentas de administradores escondidos. El usuario tendrá que acceder entrando su nombre de usuario y contraseña manualmente.", - "OptionHlsSegmentedSubtitles": "Subtítulos segmentados hls", + "OptionHlsSegmentedSubtitles": "Subtítulos segmentados HLS", "OptionHomeVideos": "Vídeos caseros y fotos", "OptionIgnoreTranscodeByteRangeRequests": "Ignorar las solicitudes de intervalo de bytes de transcodificación", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Si está activado, estas solicitudes serán atendidas pero ignorarán el encabezado de intervalo de bytes.", @@ -979,27 +976,27 @@ "OptionOnAppStartup": "Al iniciar la aplicación", "OptionOnInterval": "En un intervalo", "OptionParentalRating": "Clasificación parental", - "OptionPlainStorageFolders": "Ver todas las carpetas como carpetas de almacenamiento sin formato.", + "OptionPlainStorageFolders": "Ver todas las carpetas como carpetas de almacenamiento sin formato", "OptionPlainStorageFoldersHelp": "Si está activado, todas las carpetas se representan en DIDL como \"object.container.storageFolder\" en lugar de un tipo más específico, como por ejemplo \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Mostrar todos los videos como elementos de video sin formato", "OptionPlainVideoItemsHelp": "Si está habilitado, todos los vídeos están representados en DIDL como \"object.item.videoItem\" en lugar de un tipo más específico, como por ejemplo \"object.item.videoItem.movie\".", - "OptionPlayCount": "Número de reproducc.", + "OptionPlayCount": "Número de reproducciones", "OptionPlayed": "Reproducido", "OptionPremiereDate": "Fecha de estreno", "OptionProfilePhoto": "Foto", - "OptionProfileVideoAudio": "Video audio", + "OptionProfileVideoAudio": "Vídeo y audio", "OptionProtocolHls": "Emisión HTTP en directo", - "OptionReleaseDate": "Fecha de Lanzamiento", + "OptionReleaseDate": "Fecha de lanzamiento", "OptionReportByteRangeSeekingWhenTranscoding": "Indicar que el servidor soporta la búsqueda de byte al transcodificar", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Esto es necesario para algunos dispositivos que no buscan el tiempo muy bien.", "OptionRequirePerfectSubtitleMatch": "Sólo descargar subtítulos que son una combinación perfecta para mis archivos de vídeo", "OptionRequirePerfectSubtitleMatchHelp": "Requerir una coincidencia perfecta filtra los subtítulos para incluir sólo aquellos que coinciden con el archivo de vídeo. Desmarcando esta opción, aumentará la probabilidad de que los subtítulos se descarguen, pero puede que el texto del subtítulo no coincida con el vídeo.", - "OptionResElement": "elemento res", + "OptionResElement": "Elemento res", "OptionResumable": "Se puede continuar", "OptionRuntime": "Tiempo", "OptionSaturday": "Sábado", "OptionSaveMetadataAsHidden": "Guardar los metadatos e imágenes como archivos ocultos", - "OptionSaveMetadataAsHiddenHelp": "Cambiar esto se aplicará a los nuevos metadatos guardados en el futuro. Los archivos de metadatos existentes se actualizarán la próxima vez que sean guardados por Jellyfin Server.", + "OptionSaveMetadataAsHiddenHelp": "Cambiar esto se aplicará a los nuevos metadatos guardados en el futuro. Los archivos de metadatos existentes se actualizarán la próxima vez que sean guardados por el servidor Jellyfin.", "OptionSpecialEpisode": "Especiales", "OptionSunday": "Domingo", "OptionThursday": "Jueves", @@ -1018,19 +1015,19 @@ "PackageInstallCancelled": "{0} instalación cancelada.", "PackageInstallCompleted": "{0} instalación completada.", "PackageInstallFailed": "{0} instalación fallida.", - "ParentalRating": "Parental Rating", + "ParentalRating": "Calificación de los padres", "PasswordMatchError": "La contraseña y la confirmación de la contraseña deben de ser iguales.", "PasswordResetComplete": "La contraseña se ha restablecido.", - "PasswordResetConfirmation": "Esta seguro que desea restablecer la contraseña?", - "PasswordResetHeader": "Reestablecer contraseña", + "PasswordResetConfirmation": "¿Esta seguro de que desea restablecer la contraseña?", + "PasswordResetHeader": "Restablecer contraseña", "PasswordSaved": "Contraseña guardada.", "People": "Gente", "PinCodeResetComplete": "El código PIN se ha restablecido.", - "PinCodeResetConfirmation": "¿Está seguro que desea restablecer el código PIN?", + "PinCodeResetConfirmation": "¿Está seguro de que desea restablecer el código PIN?", "PlaceFavoriteChannelsAtBeginning": "Situar los canales favoritos al principio", "Play": "Reproducir", "PlayAllFromHere": "Reproducir todos desde aquí", - "PlayFromBeginning": "Iniciar desde el principio", + "PlayFromBeginning": "Reproducir desde el principio", "PlayNext": "Reproducir siguiente", "PlayNextEpisodeAutomatically": "Reproducir siguiente episodio automáticamente", "Played": "Reproducido", @@ -1053,8 +1050,8 @@ "QueueAllFromHere": "En cola todos desde aquí", "Rate": "Califica", "RecentlyWatched": "Vistos recientemente", - "RecommendationBecauseYouLike": "Ya que te ha gustado {0}, mira estas", - "RecommendationBecauseYouWatched": "Ya que has visto {0}, mira estas", + "RecommendationBecauseYouLike": "Ya que te ha gustado {0}, quizá te pueda interesar", + "RecommendationBecauseYouWatched": "Ya que has visto {0}, quizá te pueda interesar", "RecommendationDirectedBy": "Dirigida por {0}", "RecommendationStarring": "Protagonizada por {0}", "Record": "Grabar", @@ -1065,7 +1062,7 @@ "Recordings": "Grabaciones", "Refresh": "Refrescar", "RefreshMetadata": "Actualizar metadatos", - "RefreshQueued": "Actualiza la cola", + "RefreshQueued": "Actualización programada.", "ReleaseDate": "Fecha de lanzamiento", "RememberMe": "Recuérdame", "RemoveFromCollection": "Quitar de la colección", @@ -1080,11 +1077,11 @@ "RequiredForAllRemoteConnections": "Requerido para todas las conexiones remotas", "ResumeAt": "Continuar desde {0}", "Rewind": "Rebobinar", - "Runtime": "Tiempo de Ejecución", + "Runtime": "Tiempo de ejecución", "Saturday": "Sábado", "Save": "Grabar", - "SaveSubtitlesIntoMediaFolders": "Guarda los subtítulos en carpetas multimedia", - "SaveSubtitlesIntoMediaFoldersHelp": "Almacenar los subtítulos junto a los archivos de video te permitirá administrarlos más fácilmente.", + "SaveSubtitlesIntoMediaFolders": "Guarda los subtítulos en las carpetas de medios", + "SaveSubtitlesIntoMediaFoldersHelp": "Almacenar los subtítulos junto a los archivos de vídeo te permitirá administrarlos más fácilmente.", "ScanForNewAndUpdatedFiles": "Buscar archivos nuevos y actualizados", "ScanLibrary": "Escanear biblioteca", "Schedule": "Horario", @@ -1093,16 +1090,16 @@ "Search": "Buscar", "SearchForCollectionInternetMetadata": "Buscar en internet ilustraciones y metadatos", "SearchForMissingMetadata": "Buscar metadatos faltantes", - "SearchForSubtitles": "Búsqueda de Subtítulos", - "SearchResults": "Resultados de la Búsqueda", + "SearchForSubtitles": "Búsqueda de subtítulos", + "SearchResults": "Resultados de la búsqueda", "SendMessage": "Enviar mensaje", "SeriesCancelled": "Serie cancelada.", "SeriesRecordingScheduled": "Grabación de series programada.", "SeriesSettings": "Ajustes de series", "SeriesYearToPresent": "{0} - Actualidad", - "ServerNameIsRestarting": "El Servidor de Jellyfin - {0} se esta reiniciando.", - "ServerNameIsShuttingDown": "El Servidor de Jellyfin - {0} se esta apagando.", - "ServerRestartNeededAfterPluginInstall": "El servidor de Jellyfin necesitará ser reiniciado tras instalarse un plugin.", + "ServerNameIsRestarting": "El servidor Jellyfin - {0} se esta reiniciando.", + "ServerNameIsShuttingDown": "El servidor Jellyfin - {0} se esta apagando.", + "ServerRestartNeededAfterPluginInstall": "El servidor Jellyfin necesitará ser reiniciado tras instalarse un plugin.", "ServerUpdateNeeded": "El servidor necesita actualizarse. Para descargar la última versión visita {0}", "Settings": "Ajustes", "SettingsSaved": "Configuración guardada.", @@ -1113,10 +1110,10 @@ "Shows": "Series", "Shuffle": "Mezclar", "SimultaneousConnectionLimitHelp": "Número máximo de transmisiones simultáneas permitidas. Pon 0 para no tener límite.", - "SkipEpisodesAlreadyInMyLibrary": "No grabar episodios que ya están en mi libreria", + "SkipEpisodesAlreadyInMyLibrary": "No grabar episodios que ya están en mi librería", "SkipEpisodesAlreadyInMyLibraryHelp": "Los episodios serán comparados usando el número de temporada y de episodio, cuando estén disponibles.", "Small": "Pequeño", - "Smart": "Listo", + "Smart": "Inteligente", "SmartSubtitlesHelp": "Los subtítulos que coincidan con el idioma preferido se activarán cuando el audio esté en otro idioma.", "Songs": "Canciones", "SortChannelsBy": "Ordenar canales por:", @@ -1129,10 +1126,10 @@ "Suggestions": "Sugerencias", "Sunday": "Domingo", "Sync": "Sincronizar", - "SystemDlnaProfilesHelp": "El perfil del Sistema es solo lectura. Cambios al perfil del sistema seran guardados en un perfil nuevo modificado.", + "SystemDlnaProfilesHelp": "El perfil del sistema es solo lectura. Cambios al perfil del sistema seran guardados en un perfil nuevo modificado.", "TabAccess": "Acceso", "TabAdvanced": "Avanzado", - "TabAlbumArtists": "Album Artistas", + "TabAlbumArtists": "Artistas de los álbumes", "TabAlbums": "Álbumes", "TabArtists": "Artistas", "TabCatalog": "Catálogo", @@ -1145,21 +1142,19 @@ "TabDirectPlay": "Reproducción directa", "TabDisplay": "Pantalla", "TabEpisodes": "Episodios", - "TabExpert": "Experto", "TabFavorites": "Favoritos", "TabGenres": "Géneros", "TabGuide": "Guía", - "TabHosting": "Servidor", "TabLatest": "Novedades", "TabLibrary": "Biblioteca", "TabLiveTV": "TV en directo", "TabMetadata": "Metadatos", "TabMovies": "Películas", "TabMusic": "Música", - "TabMusicVideos": "Videos Musicales", - "TabMyPlugins": "Mis Plugins", + "TabMusicVideos": "Videos musicales", + "TabMyPlugins": "Mis plugins", "TabNetworks": "redes", - "TabNfoSettings": "Ajustes de Nfo", + "TabNfoSettings": "Ajustes de NFO", "TabNotifications": "Notificaciones", "TabOther": "Otros", "TabParentalControl": "Control parental", @@ -1173,7 +1168,6 @@ "TabResponses": "Respuestas", "TabResumeSettings": "Ajustes de reanudación", "TabScheduledTasks": "Tareas programadas", - "TabSecurity": "Seguridad", "TabServer": "Servidor", "TabSettings": "Opciones", "TabShows": "Programas", @@ -1184,28 +1178,28 @@ "TabUpcoming": "Próximos", "TabUsers": "Usuarios", "Tags": "Etiquetas", - "TellUsAboutYourself": "Díganos acerca de usted", + "TellUsAboutYourself": "Háblenos acerca de usted", "TheseSettingsAffectSubtitlesOnThisDevice": "Estas opciones afectan a los subtítulos en este dispositivo", "ThisWizardWillGuideYou": "Este asistente lo guiará en el proceso de instalación. Para comenzar, seleccione su idioma preferido.", "Thumb": "Miniatura", "Thursday": "Jueves", "TitleHardwareAcceleration": "Aceleración por Hardware", - "TitleHostingSettings": "Configuración de Hosting", + "TitleHostingSettings": "Configuración del alojamiento", "TitlePlayback": "Reproducción", "TrackCount": "{0} pistas", "Transcoding": "Transcodificación", "Tuesday": "Martes", "TvLibraryHelp": "Revisa la {0}guía de nombres de Series de TV de Jellyfin{1}.", - "UninstallPluginConfirmation": "Esta seguro que desea desinstalar {0}?", - "UninstallPluginHeader": "Desinstalar Plugin", + "UninstallPluginConfirmation": "¿Esta seguro que desea desinstalar {0}?", + "UninstallPluginHeader": "Desinstalar plugin", "Unmute": "Activar audio", "Unrated": "Sin clasificar", "Up": "Arriba", "Upload": "Subir", - "UserAgentHelp": "Proporciona una cabecera http personalizada de agente-usuario, si es necesario.", + "UserAgentHelp": "Proporciona una cabecera HTTP personalizada de agente-usuario si es necesario.", "UserProfilesIntro": "Jellyfin incluye soporte interno para perfiles de usuarios, permitiendo que cada usuario tenga sus propios ajustes, estado de reproducción y control parental.", "ValueAlbumCount": "{0} álbumes", - "ValueAudioCodec": "Codec de audio: {0}", + "ValueAudioCodec": "Códec de audio: {0}", "ValueConditions": "Condiciones: {0}", "ValueContainer": "Contenedor: {0}", "ValueDiscNumber": "Disco {0}", @@ -1223,23 +1217,23 @@ "ValueSpecialEpisodeName": "Especial - {0}", "ValueTimeLimitMultiHour": "Tiempo límite: {0} hora", "ValueTimeLimitSingleHour": "Tiempo límite: 1 hora", - "ValueVideoCodec": "Codec de video: {0}", + "ValueVideoCodec": "Códec de video: {0}", "ViewAlbum": "Ver album", "ViewArtist": "Ver artista", - "ViewPlaybackInfo": "Ver info de la reproducción", + "ViewPlaybackInfo": "Ver información de la reproducción", "Watched": "Visto", "Wednesday": "Miércoles", "WelcomeToProject": "¡Bienvenido a Jellyfin!", "Whitelist": "Lista blanca", - "WizardCompleted": "Eso es todo lo que necesitamos por ahora. Jellyfin a empezado a recolectar información de su biblioteca. Echale un vistazo a nuestras aplicaciones, y después presione Finalizar para ver el Panel de control", + "WizardCompleted": "Eso es todo lo que necesitamos por ahora. Jellyfin a empezado a recolectar información de su biblioteca. Échale un vistazo a nuestras aplicaciones, y después presione Finalizar para ver el Panel de control.", "Writer": "Escritor", "XmlDocumentAttributeListHelp": "Estos atributos se aplican al elemento raíz de cada respuesta xml.", "XmlTvKidsCategoriesHelp": "Los programas con estas categorías se mostrarán como programas para niños. Separe el múltiplo con '|'.", "XmlTvMovieCategoriesHelp": "Los programas con estas categorías se mostrarán como películas. Separe el múltiplo con '|'.", "XmlTvNewsCategoriesHelp": "Los programas con estas categorías se mostrarán como programas de noticias. Separe el múltiplo con '|'.", - "XmlTvPathHelp": "Una ruta de acceso a un archivo xml tv. Jellyfin leerá este archivo y comprobará periódicamente si hay actualizaciones. Usted es responsable de crear y actualizar el archivo.", + "XmlTvPathHelp": "Una ruta de acceso a un archivo XML TV. Jellyfin leerá este archivo y comprobará periódicamente si hay actualizaciones. Usted es responsable de crear y actualizar el archivo.", "XmlTvSportsCategoriesHelp": "Los programas con estas categorías se mostrarán como programas deportivos. Separe el múltiplo con '|'.", - "Yes": "Si", + "Yes": "Sí", "Yesterday": "Ayer", "Absolute": "Absoluto", "Actor": "Actor", @@ -1254,7 +1248,7 @@ "Auto": "Automático", "AutoBasedOnLanguageSetting": "Automático (basado en la configuración de idioma)", "Banner": "Pancarta", - "BurnSubtitlesHelp": "Determina si el servidor debería incrustar los subtítulos al convertir el vídeo dependiendo del formato de los subtítulos. Evitar incrustar los subtítulos mejorará el rendimiento del servidor. Seleccionar Auto para incrustar subítulos basados en imágenes (ej. VOBSUB, PGS, SUB/IDX, etc.) así como algunos subtítulos ASS/SSA", + "BurnSubtitlesHelp": "Determina si el servidor debería incrustar los subtítulos al convertir el vídeo dependiendo del formato de los subtítulos. Evitar incrustar los subtítulos mejorará el rendimiento del servidor. Seleccionar Auto para incrustar subítulos basados en imágenes, por ejemplo: VOBSUB, PGS, SUB/IDX, etc. Así como algunos subtítulos ASS/SSA", "ButtonInfo": "Información", "ChangingMetadataImageSettingsNewContent": "Los cambios a la configuración de descarga de metadatos o arte sólo se aplicará al nuevo contenido añadido a la biblioteca. Para aplicar los cambios a los títulos existentes, necesitarás actualizar los metadatos manualmente.", "ColorPrimaries": "Colores primarios", @@ -1305,7 +1299,7 @@ "HeaderError": "Error", "HeaderMusicQuality": "Calidad de sonido", "HeaderPhotoAlbums": "Álbum de fotos", - "HeaderSeriesStatus": "Estado de series", + "HeaderSeriesStatus": "Estado de las series", "HeaderStopRecording": "Parar grabación", "HeaderTracks": "Pistas", "HeaderVideoType": "Tipo de vídeo", @@ -1346,7 +1340,7 @@ "Photos": "Fotos", "Playlists": "Listas de reproducción", "Depressed": "Deprimido", - "MessagePlayAccessRestricted": "La reproducción de este contenido está restringida. Por favor contacta al administrador de este Servidor Jellyfin para más información.", + "MessagePlayAccessRestricted": "La reproducción de este contenido está restringida. Por favor, contacta al administrador de este servidor Jellyfin para más información.", "NewCollectionHelp": "Las colecciones le permiten crear agrupaciones personalizadas de películas y otros contenidos de la biblioteca.", "No": "No", "Normal": "Normal", @@ -1368,5 +1362,90 @@ "OptionHasTrailer": "Tráiler", "OptionIsHD": "HD", "OptionIsSD": "SD", - "AuthProviderHelp": "Selecciona un proveedor de autenticación para ser utilizado en la autenticación de este usuario" + "AuthProviderHelp": "Selecciona un proveedor de autenticación para ser utilizado en la autenticación de este usuario", + "HeaderFavoriteMovies": "Películas favoritas", + "HeaderFavoriteShows": "Series favoritas", + "HeaderFavoriteEpisodes": "Episodios favoritos", + "HeaderFavoriteAlbums": "Álbumes favoritos", + "HeaderFavoriteArtists": "Artistas favoritos", + "HeaderFavoriteSongs": "Canciones favoritas", + "HeaderFavoriteVideos": "Vídeos favoritos", + "HeaderHome": "Inicio", + "HeaderHomeSettings": "Ajustes de inicio", + "HeaderRestartingServer": "Reiniciando servidor", + "LabelAuthProvider": "Proveedor de autenticación:", + "LabelPasswordResetProvider": "Proveedor de restablecimiento de contraseña:", + "LabelServerName": "Nombre del servidor:", + "LabelTranscodePath": "Ruta de transcodificación:", + "LabelTranscodes": "Transcodificaciones:", + "LabelUserLoginAttemptsBeforeLockout": "Intentos fallidos de inicio de sesión antes de que el usuario sea bloqueado:", + "DashboardVersionNumber": "Versión: {0}", + "DashboardServerName": "Servidor: {0}", + "DashboardOperatingSystem": "Sistema operativo: {0}", + "DashboardArchitecture": "Arquitectura: {0}", + "LabelWeb": "Web: ", + "LaunchWebAppOnStartup": "Iniciar la aplicación web Jellyfin en mi navegador cuando se inicia el servidor Jellyfin", + "LaunchWebAppOnStartupHelp": "Esto abrirá la aplicación web en tu navegador por defecto cuando se inicie por primera vez el servidor Jellyfin. Esto no ocurrirá cuando se utilice la función de reinicio del servidor.", + "MediaInfoSoftware": "Software", + "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoStreamTypeData": "Datos", + "MediaInfoStreamTypeEmbeddedImage": "Imagen incrustada", + "MediaInfoStreamTypeSubtitle": "Subtítulo", + "MediaInfoStreamTypeVideo": "Vídeo", + "MessageNoCollectionsAvailable": "Las colecciones te permiten disfrutar de grupos personalizados de películas, series y álbumes. Haz clic en el botón + para empezar a crear colecciones.", + "MessageNoServersAvailable": "No se ha encontrado ningún servidor usando la detección automática de servidores.", + "MusicAlbum": "Álbum de música", + "MusicArtist": "Artista musical", + "MusicVideo": "Vídeo musical", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionList": "Lista", + "OptionLoginAttemptsBeforeLockout": "Determina cuántos intentos de inicio de sesión fallidos se pueden realizar antes de que se produzca el bloqueo.", + "OptionLoginAttemptsBeforeLockoutHelp": "0 significa heredar el valor por defecto de 3 para no administradores y 5 para administradores, -1 desactiva el bloqueo", + "OptionPoster": "Póster", + "OptionPosterCard": "Cartelera", + "OptionProfileAudio": "Audio", + "OptionProfileVideo": "Vídeo", + "OptionProtocolHttp": "HTTP", + "OptionRegex": "Regex", + "OptionSubstring": "Subcadena", + "OptionThumb": "Miniatura", + "OptionThumbCard": "Miniatura pequeña", + "PasswordResetProviderHelp": "Elige un proveedor de restablecimiento de contraseña que se utilizará cuando este usuario solicite un restablecimiento de contraseña", + "PerfectMatch": "Coincidencia perfecta", + "PictureInPicture": "Segundo plano", + "PlaybackData": "Datos de reproducción", + "PlayCount": "Número de reproducciones", + "Premiere": "Estreno", + "Raised": "Elevación", + "RefreshDialogHelp": "Los metadatos se actualizan en función de la configuración y los servicios de Internet que están habilitados en el panel de control del servidor Jellyfin.", + "RestartPleaseWaitMessage": "Por favor, espera mientras el servidor Jellyfin se apaga y se reinicia. Puede que tarde un minuto o dos.", + "RunAtStartup": "Ejecutar al inicio", + "Series": "Series", + "SeriesDisplayOrderHelp": "Organizar los episodios por fecha de emisión, orden de DVD o numeración absoluta.", + "ShowTitle": "Mostrar título", + "ShowYear": "Mostrar año", + "SmallCaps": "Versalitas", + "Smaller": "Más pequeño", + "Sort": "Ordenar", + "SortByValue": "Ordenar por {0}", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Estos ajustes también se aplican a cualquier reproducción en Chromecast iniciada por este dispositivo.", + "SubtitleAppearanceSettingsDisclaimer": "Estos ajustes no se aplicarán a los subtítulos gráficos (PGS, DVD, etc.), ni a los subtítulos que tengan sus propios estilos incrustados (ASS/SSA).", + "SubtitleOffset": "Desplazamiento de subtítulos", + "TV": "TV", + "TabInfo": "Info", + "TabLogs": "Registros", + "TabPlugins": "Plugins", + "TabSeries": "Series", + "TabTrailers": "Tráilers", + "TagsValue": "Etiquetas: {0}", + "ThemeSongs": "Banda sonora", + "Trailers": "Tráilers", + "Uniform": "Uniforme", + "Unplayed": "No reproducido", + "ValueCodec": "Códec: {0}", + "ValueMinutes": "{0} min", + "ValueSeriesCount": "{0} series", + "Vertical": "Vertical", + "VideoRange": "Rango de vídeo", + "ThemeVideos": "Vídeos de tema" } diff --git a/src/strings/fa.json b/src/strings/fa.json index 710e8b962a..d63c1d1bc2 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -1,5 +1,4 @@ { - "Advanced": "پیشرفته", "All": "همه", "AllowMediaConversion": "اجازه تبدیل رسانه ها", "AllowMediaConversionHelp": "دادن یا ندادن دسترسی به ویژگی تبدیل رسانه ها", @@ -108,7 +107,6 @@ "TabPlaylist": "لیست پخش", "TabProfile": "پروفایل", "TabProfiles": "پروفایل ها", - "TabSecurity": "امنیت", "TabShows": "سریال ها", "TabSongs": "آهنگ ها", "TabSuggestions": "پیشنهادات", @@ -139,5 +137,10 @@ "Shows": "سریال ها", "Songs": "آهنگ ها", "Sync": "همگامسازی", - "ValueSpecialEpisodeName": "ویژه- {0}" + "ValueSpecialEpisodeName": "ویژه- {0}", + "AllEpisodes": "تمام قسمت ها", + "AllLanguages": "تمام زبان ها", + "AllLibraries": "تمام کتابخانه ها", + "AllowHWTranscodingHelp": "اگر فعال شود, اجازه میدهید تبدیل ( کم و زیاد کردن کیفیت ) درلحظه و توسط کارت دریافت سیگنال صورت گیرد. این کمک میکند به اینکه سرور جلیفین کمتر عمل تبدیل را انجام دهد.", + "AllowOnTheFlySubtitleExtraction": "اجازه میدهد در لحظه زیرنویس بازشود" } diff --git a/src/strings/fi.json b/src/strings/fi.json index f4c8d47e78..06ecc13ca4 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -58,7 +58,6 @@ "TabPassword": "Salasana", "TabProfile": "Profiili", "TabProfiles": "Profiilit", - "TabSecurity": "Suojaus", "TellUsAboutYourself": "Kerro meille itsestäsi", "ThisWizardWillGuideYou": "Tämä työkalu auttaa sinua asennus prosessin aikana. loittaaksesi valitse kieli.", "UninstallPluginConfirmation": "Oletko varma, että haluat poistaa {0}?", @@ -84,13 +83,12 @@ "AllLanguages": "Kaikki kielet", "AllLibraries": "Kaikki kirjastot", "AllowDeletionFromAll": "Salli tiedostojen poistaminen kaikista kirjastoista", - "AllowOnTheFlySubtitleExtraction": "Salli tekstitysten purkamien lennossa", + "AllowOnTheFlySubtitleExtraction": "Salli tekstitysten purkaminen lennossa", "AccessRestrictedTryAgainLater": "Pääsy on toistaiseksi estetty. Yritä myöhemmin uudelleen.", "AddGuideProviderHelp": "Lisää lähde ohjelmaoppaalle.", "AddItemToCollectionHelp": "Lisää nimikkeitä etsimällä niitä ja käyttämällä hiiren oikeaa nappia tai valikkoa lisätäksesi ne kokoelmaan.", - "Advanced": "Lisäasetukset", "Aired": "Esityspäivä", - "AllowHWTranscodingHelp": "Jos sallittu, salli virittimen muuntaa bittivirta lennossa. Tämä voi vähentää tarvetta muunnokseen Jellyfin palvelimella.", + "AllowHWTranscodingHelp": "Jos sallittu, salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää tarvetta muunnokseen Jellyfin palvelimella.", "AllowMediaConversion": "Salli median muunto", "AllowMediaConversionHelp": "Salli tai kiellä pääsy median muunnostoimintoon.", "AllowOnTheFlySubtitleExtractionHelp": "Sulautetut tekstitykset voi erottaa videoista ja toimittaa Jellyfin ohjelmalle tekstinä, jotta videoita ei tarvitse uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa videotoiston pysähtymisen purun ajaksi. Poista tämä liittääksesi tekstiyksen videokuvaankon asiakaslaite ei tue tekstiyksiä.", @@ -98,13 +96,13 @@ "AllowRemoteAccessHelp": "Jos merkki puuttuu, kaikki ulkopuoliset yhteydet estetään.", "AllowSeasonalThemes": "Salli automaattiset vuodenaikateemat", "AllowSeasonalThemesHelp": "Jos asetettu, vuodenaikateemat satunnaisesti yliajavat teema-asetuksesi.", - "AllowedRemoteAddressesHelp": "Pilkuilla eroteltu lista IP osoitteista tai IP/verkonpeite merkinnöistä verkoille, joille sallitaan etäyhteys palvelimeen. Tyhjäksi jätetty lista tarkoittaa, että kaikki osoitteet sallitaan.", + "AllowedRemoteAddressesHelp": "Pilkuilla eroteltu lista IP-osoitteista tai IP/verkonpeite merkinnöistä verkoille, joille sallitaan etäyhteys palvelimeen. Tyhjäksi jätetty lista tarkoittaa, että kaikki osoitteet sallitaan.", "AlwaysPlaySubtitles": "Näytä aina tekstitykset", - "AlwaysPlaySubtitlesHelp": "Kieliasetusta vastaava tekstitys ladataan käyttöön ääniraidan kielestä huolimatta.", + "AlwaysPlaySubtitlesHelp": "Oletuskieliasetusta vastaava tekstitys otetaan käyttöön ääniraidan kielestä huolimatta.", "AnamorphicVideoNotSupported": "Anamorfinen video ei ole tuettu", "AndroidUnlockRestoreHelp": "Palauttaaksesi aikaisemman ostoksesi, varmista, että olet kirjautuneena samalla Google (tai Amazon) tunnuksella, jolla teit alkuperäisen oston. Varmista, että sovelluskauppa on päällä eikä sitä ole rajoitettu vanhempien lukolla. Varmista myös, että sinulla on toimiva internet -yhteys. Sinun tarvitsee tehdä taämä vain kerran.", "AnyLanguage": "Mikä tahansa kieli", - "Anytime": "Koska tahansa", + "Anytime": "Milloin tahansa", "AroundTime": "Noin {0}", "Art": "Taide", "Artists": "Esiintyjät", @@ -113,7 +111,7 @@ "AspectRatio": "Kuvasuhde", "AttributeNew": "Uusi", "Audio": "Ääni", - "AuthProviderHelp": "Valitse todentamispalvelu, jota käytetään todentamaan tämän käyttäjän salasana", + "AuthProviderHelp": "Valitse todentamispalvelu, jota käytetään tämän käyttäjän salasanan todentamisessa", "Auto": "Automaattinen", "AutoBasedOnLanguageSetting": "Automaattinen (perustuu kieliasetukseen)", "Backdrop": "Tausta", @@ -166,5 +164,104 @@ "ButtonOff": "Pois päältä", "ButtonOk": "Ok", "ButtonOpen": "Avoin", - "ButtonOther": "Muu" + "ButtonOther": "Muu", + "BurnSubtitlesHelp": "Määrittää jos palvelimen pitäisi upottaa tekstitykset suoraan videotiedostoon muuntamisvaiheessa tekstitysformaatista riippuen. Upottamisen välttäminen parantaa palvelimen suorituskykyä. Valitse Automaattinen upottaaksesi sekä kuvapohjaiset- (esim. VOBSUB, PGS, SUB/IDX, jne.) että ASS/SSA tekstitysmuodot", + "ButtonParentalControl": "Lapsilukko", + "ButtonPause": "Tauko", + "ButtonPlay": "Toista", + "ButtonPreviousTrack": "Edellinen raita", + "ButtonProfile": "Profiili", + "ButtonQuickStartGuide": "Pikaopas", + "ButtonRefresh": "Päivitä", + "ButtonRefreshGuideData": "Päivitä oppaan tiedot", + "ButtonRemove": "Poista", + "ButtonRename": "Nimeä uudelleen", + "ButtonRepeat": "Uudelleentoisto", + "ButtonResetEasyPassword": "Nollaa helppo PIN-koodi", + "ButtonRestart": "Käynnistä uudelleen", + "ButtonResume": "Jatka", + "ButtonRevoke": "Peruuta", + "ButtonScanAllLibraries": "Skannaa kaikki kirjastot", + "ButtonSearch": "Haku", + "ButtonSelectDirectory": "Valitse hakemisto", + "ButtonSelectServer": "Valitse palvelin", + "ButtonSelectView": "Valitse näkymä", + "ButtonSend": "Lähetä", + "ButtonSettings": "Asetukset", + "ButtonShuffle": "Satunnaistoisto", + "ButtonShutdown": "Sammuta", + "ButtonSignIn": "Kirjaudu sisään", + "ButtonSort": "Lajittele", + "ButtonSplitVersionsApart": "Erota versiot toisistaan", + "ButtonStart": "Käynnistä", + "ButtonStop": "Pysäytä", + "ButtonSubmit": "Lähetä", + "ButtonSubtitles": "Tekstitykset", + "ButtonTrailer": "Traileri", + "ButtonUninstall": "Poista asennus", + "ButtonUp": "Ylös", + "ButtonViewWebsite": "Näytä nettisivusto", + "ButtonWebsite": "Nettisivusto", + "CancelRecording": "Peruuta tallennus", + "Categories": "Kategoriat", + "ChangingMetadataImageSettingsNewContent": "Muutokset metadatan tai kuvituksien lataamisasetuksiin vaikuttaa ainoastaan tulevaan kirjaston sisältöön. Päivittääksesi myös vanhan sisällön sinun täytyy päivittää metadata manuaalisesti.", + "ChannelAccessHelp": "Valitse kanavat jotka jaetaan tämän käyttäjän kanssa. Järjestelmänvalvojat pystyvät muuttamaan kaikkia kanavia käyttämällä metadatan hallintatyökalua.", + "ChannelNameOnly": "Kanava {0} ainoastaan", + "Channels": "Kanavat", + "CinemaModeConfigurationHelp": "Elokuvatila tuo teatterikokemuksen suoraan olohuoneeseesi mahdollistamalla trailereiden ja omien introjen toistamisen ennen päänumeroa.", + "Collections": "Kokoelmat", + "ColorPrimaries": "Päävärit", + "ColorSpace": "Väriavaruus", + "ColorTransfer": "Värien siirto", + "CommunityRating": "Yhteisön arvosana", + "Composer": "Säveltäjä", + "ConfigureDateAdded": "Lisäyspäivämäärän määritykset löytyvät kirjaston asetuksien alta Jellyfin-palvelimen kojelaudalla", + "ConfirmDeleteImage": "Poista kuva?", + "ConfirmDeleteItem": "Tämän esineen poistaminen poistaa sen sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", + "ConfirmDeleteItems": "Näiden esineiden poistaminen poistaa ne sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", + "ConfirmDeletion": "Vahvista poistaminen", + "ConfirmEndPlayerSession": "Haluaisitko sammuttaa Jellyfinin tähän aikaan {0}?", + "Connect": "Yhdistä", + "ContinueWatching": "Jatka katselua", + "Continuing": "Jatketaan", + "CriticRating": "Kriitikoiden arvosana", + "DateAdded": "Lisäyspäivämäärä", + "DatePlayed": "Toistopäivämäärä", + "Default": "Oletus", + "DefaultErrorMessage": "Pyynnön käsittelyssä tapahtui virhe. Yritä myöhemmin uudelleen.", + "DefaultMetadataLangaugeDescription": "Nämä ovat sinun oletuksetasetukset ja niitä voidaan muokata kirjastokohtaisesti.", + "DefaultSubtitlesHelp": "Tekstitykset ladataan pakotettu- ja oletusmäärityksien upotetun metadatan mukaan. Kieliasetukset otetaan huomioon, kun on enemmän kuin yksi tekstitys josta valita.", + "DeleteDeviceConfirmation": "Oletko varma, että haluat positaa tämän laitteen? Se ilmaantuu uudelleen seuraavan kerran, kun jokin käyttäjä kirjautuu sillä.", + "DeleteMedia": "Poista media", + "Descending": "Laskeva", + "Desktop": "Työpöytä", + "DetectingDevices": "Tunnistetaan laitteita", + "DeviceAccessHelp": "Tämä pätee ainoastaan laitteisiin, jotka voidaan tunnistaa uniikkina ja ei estä selainpääsyä. Uusien laitteiden suodattaminen estää niiden käyttämisen ennen hyväksyntää täältä.", + "DirectPlaying": "Suoraan toistaminen", + "DirectStreamHelp1": "Tämä media on yhteensopiva laitteen kanssa katsoen resoluutiota ja mediatyyppiä (H.264, AC3, jne.), mutta se ei ole yhteensopivassa tiedostosäiliössä (.mkv, .avi, .wmv, etc.). Tämä video uudelleenpakataan lennossa ennen laitteeseen toistoa.", + "DirectStreamHelp2": "Tiedoston suoraan toistaminen käyttää erittäin vähän prosessorin resursseja ilman laadun heikentämistä.", + "DirectStreaming": "Suora suoratoisto", + "Director": "Ohjaaja", + "DirectorValue": "Ohjaaja: {0}", + "DirectorsValue": "Ohjaajat: {0}", + "Disabled": "Pois päältä kytkettynä", + "Disc": "Levy", + "Disconnect": "Katkaise yhteys", + "Dislike": "Älä tykkää", + "DisplayInMyMedia": "Näytä kotinäytöllä", + "DisplayInOtherHomeScreenSections": "Näytä kotinäytöllä osastoja kuten viimeisin media ja jatka katselua", + "DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa", + "DisplayMissingEpisodesWithinSeasonsHelp": "Tämän pitää aktivoida TV-kirjastoille myös Jellyfin-palvelimen asennusvaiheessa.", + "DisplayModeHelp": "Valitse näyttölaitteen tyyppi jolla pyörität Jellyfiniä.", + "DoNotRecord": "Älä tallenna", + "Down": "Alas", + "Download": "Lataa", + "DownloadsValue": "{0} latausta", + "DrmChannelsNotImported": "Kanavia joissa on tekijänoikeusesto-ohjelmia, ei ladata.", + "DropShadow": "Tiputa varjo", + "EasyPasswordHelp": "Sinun helppoa PIN-koodia käytetään offline-käytössä tuetuissa Jellyfin-sovelluksissa, ja voidaan myös nopeuttaa verkkoon kirjautumista.", + "Edit": "Muokkaa", + "EditImages": "Muokkaa kuvia", + "EditMetadata": "Muokkaa metadataa", + "EditSubtitles": "Muokkaa tekstityksiä" } diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 07c3b3eb33..d4d6ce0b40 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -2,7 +2,6 @@ "Add": "Ajouter", "AddToCollection": "Ajouter à la collection", "AddToPlaylist": "Ajouter à la liste de lecture", - "Advanced": "Avancé", "AttributeNew": "Nouveau", "ButtonCancel": "Annuler", "ButtonGotIt": "J'ai compris", diff --git a/src/strings/fr.json b/src/strings/fr.json index 7048a299c8..7b4e6e2bcd 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -9,18 +9,17 @@ "AddToPlaylist": "Ajouter à la liste de lecture", "AddedOnValue": "Ajouté le {0}", "AdditionalNotificationServices": "Visitez le catalogue d'extensions pour installer des services de notifications supplémentaires.", - "Advanced": "Avancé", "AirDate": "Date de diffusion", "Aired": "Diffusé", "Alerts": "Alertes", "All": "Tout", "AllChannels": "Toutes les chaînes", - "AllComplexFormats": "Tous les formats complexes (ASS, SSA, VOBSUB, PGS, SUB/IDX etc)", + "AllComplexFormats": "Tous les formats complexes (ASS, SSA, VOBSUB, PGS, SUB/IDX, etc…)", "AllEpisodes": "Tous les épisodes", - "AllLanguages": "Tous les langages", + "AllLanguages": "Toutes les langues", "AllLibraries": "Toutes les médiathèques", "AllowDeletionFromAll": "Autoriser la suppression de média depuis toutes les médiathèques", - "AllowHWTranscodingHelp": "Si l'option est activée, permet au récepteur TV de transcoder les flux à la volée. Cela peut aider à réduire le transcodage requis par le serveur Jellyfin.", + "AllowHWTranscodingHelp": "Si l'option est activée, permet au tuner TV de transcoder les flux à la volée. Cela peut aider à réduire le transcodage requis par le serveur Jellyfin.", "AllowMediaConversion": "Autoriser la conversion des médias", "AllowMediaConversionHelp": "Autoriser ou refuser l'accès à la fonctionnalité de conversion des médias.", "AllowOnTheFlySubtitleExtraction": "Autoriser l'extraction des sous-titres à la volée", @@ -36,7 +35,7 @@ "Artists": "Artistes", "AsManyAsPossible": "Autant que possible", "Ascending": "Croissant", - "AspectRatio": "Ratio d'aspect original", + "AspectRatio": "Format d'image", "AttributeNew": "Nouveau", "AutoBasedOnLanguageSetting": "Auto (basé sur le réglage de la langue)", "Backdrop": "Arrière-plan", @@ -347,7 +346,7 @@ "HeaderForgotPassword": "Mot de passe oublié", "HeaderFrequentlyPlayed": "Fréquemment lus", "HeaderGuideProviders": "Fournisseurs de données de guides TV", - "HeaderHttpHeaders": "En-têtes HTTP", + "HeaderHttpHeaders": "En-têtes Http", "HeaderIdentificationCriteriaHelp": "Saisissez au moins un critère d'identification.", "HeaderIdentificationHeader": "En-tête d'identification", "HeaderIdentifyItemHelp": "Entrez un ou plusieurs critères de recherche. Retirez des critères pour élargir les résultats de la recherche.", @@ -605,8 +604,6 @@ "LabelExtractChaptersDuringLibraryScan": "Extraire les images des chapitres pendant l'actualisation de la médiathèque", "LabelExtractChaptersDuringLibraryScanHelp": "Si l'option est activée, les images des chapitres seront extraites lors de l'importation de vidéos pendant l'actualisation de la médiathèque. Sinon elles seront extraites pendant la tâche planifiée des images des chapitres, permettant de terminer plus rapidement les actualisations de la médiathèque.", "LabelFailed": "Échoué", - "LabelFanartApiKey": "Clé d'API personnelle :", - "LabelFanartApiKeyHelp": "Les requêtes de fanart sans clé d'API personnelle renvoient des résultats approuvés il y a plus de 7 jours. Avec une clé d'API personnelle, cette valeur descend à 48 heures, et si vous êtes aussi membre fanart VIP, cette valeur descendra encore plus, à environ 10 minutes.", "LabelFileOrUrl": "Fichier ou URL :", "LabelFinish": "Terminer", "LabelFont": "Police :", @@ -914,7 +911,7 @@ "MessageNoPluginsInstalled": "Vous n'avez aucune extension installée.", "MessageNoTrailersFound": "Aucune bande-annonce trouvée. Installez la chaîne Trailers pour améliorer votre expérience, par l'ajout d'une médiathèque de bandes-annonces disponibles sur Internet.", "MessageNothingHere": "Il n'y a rien ici.", - "MessagePasswordResetForUsers": "Les mot de passes ont été supprimés pour les utilisateurs suivants. Pour vous connecter, identifiez-vous avec un mot de passe vide.", + "MessagePasswordResetForUsers": "Les mot de passes de ces utilisateurs ont été réinitialisés. Ils peuvent se reconnecter avec le code PIN utilisé pour la réinitialisation.", "MessagePlayAccessRestricted": "La lecture de ce contenu est actuellement restreinte. Contactez l'administrateur de votre serveur Jellyfin pour plus d'informations.", "MessagePleaseEnsureInternetMetadata": "Veuillez vous assurer que le téléchargement des métadonnées depuis Internet est activé.", "MessagePleaseWait": "Veuillez patienter. Ceci peut prendre quelques minutes.", @@ -1220,7 +1217,7 @@ "Sort": "Tri", "SortByValue": "Trier par {0}", "SortChannelsBy": "Trier les chaînes par :", - "SortName": "Nom de tri", + "SortName": "Trier par nom", "StopRecording": "Arrêter l'enregistrement", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Ces paramètres s'appliquent également à toute lecture Chromecast démarrée par cet appareil.", "SubtitleAppearanceSettingsDisclaimer": "Ces paramètres ne s'appliqueront pas aux sous-titres graphiques (PGS, DVD etc) ou aux sous-titres qui ont leurs propres styles incorporés (ASS/SSA).", @@ -1242,7 +1239,6 @@ "TabDisplay": "Affichage", "TabEpisodes": "Épisodes", "TabFavorites": "Favoris", - "TabHosting": "Hébergement", "TabLatest": "Derniers", "TabLibrary": "Médiathèque", "TabLiveTV": "TV en direct", @@ -1266,7 +1262,6 @@ "TabResponses": "Réponses", "TabResumeSettings": "Paramètres de reprise", "TabScheduledTasks": "Tâches planifiées", - "TabSecurity": "Sécurité", "TabSeries": "Séries", "TabServer": "Serveur", "TabSettings": "Paramètres", @@ -1391,7 +1386,6 @@ "TabAlbums": "Albums", "TabCodecs": "Codecs", "TabCollections": "Collections", - "TabExpert": "Expert", "TabGenres": "Genres", "TabGuide": "Guide", "TabInfo": "Informations", @@ -1419,5 +1413,30 @@ "MediaInfoStreamTypeAudio": "Audio", "MediaInfoStreamTypeData": "Données", "MediaInfoStreamTypeSubtitle": "Sous-titres", - "MediaInfoStreamTypeVideo": "Video" + "MediaInfoStreamTypeVideo": "Video", + "AuthProviderHelp": "Sélectionnez le fournisseur d'authentification à utiliser pour identifier cet utilisateur par mot de passe", + "PasswordResetProviderHelp": "Choisissez un Fournisseur de réinitialisation de mot de passe à utiliser lorsqu'un utilisateur demande la réinitialisation de son mot de passe", + "HeaderHome": "Accueil", + "HeaderHomeSettings": "Paramètre d'Accueil", + "LabelUserLoginAttemptsBeforeLockout": "Tentatives de connexion erronées avant blocage de l'utilisateur :", + "DashboardOperatingSystem": "Système d'Exploitation: {0}", + "DashboardArchitecture": "Architecture: {0}", + "LaunchWebAppOnStartup": "Démarrer Jellyfin dans mon navigateur quand le serveur Jellyfin est lancé", + "LaunchWebAppOnStartupHelp": "Cette fonction ouvrira l'application Jellyfin dans votre navigateur internet quand le serveur Jellyfin sera démarré la première fois. Cela ne se produira pas quand le serveur redémarre.", + "MediaInfoStreamTypeEmbeddedImage": "Image intégrée", + "MessageNoCollectionsAvailable": "Les collections vous permettent de profiter de groupes personnalisés de Films, Séries et d'Albums. Cliquer sur le bouton + pour démarrer la création de collections.", + "MessageNoServersAvailable": "Aucun serveur n'a été trouvé en utilisant la recherche automatique de serveur.", + "OptionBanner": "Bannière", + "OptionList": "Liste", + "OptionLoginAttemptsBeforeLockout": "Détermine le nombre de tentative de connexion infructueuse avant le blocage d'accès.", + "OptionPoster": "Affiche", + "OptionPosterCard": "Affichette", + "OptionThumb": "Index", + "LabelAuthProvider": "Fournisseur d'authentification :", + "LabelPasswordResetProvider": "Fournisseur de réinitialisation de mot de passe :", + "LabelTranscodePath": "Chemin pour le transcodage :", + "LabelTranscodes": "Transcodages :", + "MusicAlbum": "Album de musique", + "MusicArtist": "Artiste musical", + "MusicVideo": "Clip musical" } diff --git a/src/strings/gsw.json b/src/strings/gsw.json index b9e8d3af73..24e1de7899 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -122,7 +122,6 @@ "TabPlaylist": "Playliste", "TabProfile": "Profil", "TabProfiles": "Profil", - "TabSecurity": "Sicherheit", "TabShows": "Serie", "TabSuggestions": "Vorschläg", "TabUpcoming": "Usstehend", diff --git a/src/strings/he.json b/src/strings/he.json index 2d509fe65b..3fbf788fd0 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -5,7 +5,6 @@ "AddToPlayQueue": "הוסף לתור הפעלה", "AddToPlaylist": "הוסף לרשימת ניגון", "AdditionalNotificationServices": "עיין בקטלוג התוספים להתקנת שרותי התראות נוספים", - "Advanced": "מתקדם", "All": "הכל", "AllChannels": "כל הערוצים", "AllEpisodes": "כל הפרקים", @@ -475,7 +474,6 @@ "TabProfile": "פרופיל", "TabProfiles": "פרופילים", "TabRecordings": "הקלטות", - "TabSecurity": "בטיחות", "TabSeries": "סדרות", "TabServer": "שרת", "TabSettings": "הגדרות", diff --git a/src/strings/hr.json b/src/strings/hr.json index d55a5d0c4f..d141cb4b6f 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -5,7 +5,6 @@ "AddToCollection": "Dodaj u kolekciju", "AddToPlaylist": "Dodaj u popis", "AdditionalNotificationServices": "Pretražite katalog dodataka kako bi instalirali dodatne servise za obavijesti.", - "Advanced": "Napredno", "AllChannels": "Svi kanali", "AllEpisodes": "Sve epizode", "AllowHWTranscodingHelp": "Ako je omogućeno, omogućite TV/radio uređaju da konvertira strujanja u letu. Ovo može pomoći smanjiti konvertiranje koje zahtijeva Jellyfin Server.", @@ -427,8 +426,6 @@ "LabelExtractChaptersDuringLibraryScan": "Izvadi slike poglavlja dok traje skeniranje biblioteke", "LabelExtractChaptersDuringLibraryScanHelp": "Ako je omogućeno, slike poglavlje će se izdvojiti kad se videozapisi uvezu tijekom skeniranja biblioteke. Ako je onemogućeno izdvojiti će se u rasporedu zadatka slika poglavlja, čime se omogućuje da se skeniranje redovne biblioteke završiti brže.", "LabelFailed": "Neuspješno", - "LabelFanartApiKey": "Osobni api ključ:", - "LabelFanartApiKeyHelp": "Zahtjev za fanart bez osobnog API ključ za povratak slika koje su odobrene prije više od sedam dana. Uz osobni API ključ to se spušta do 48 sati, a ako ste i VIP član fanart-a to će još dodatno pasti na oko 10 minuta.", "LabelFileOrUrl": "Datoteka ili url:", "LabelFinish": "Kraj", "LabelForgotPasswordUsernameHelp": "Unesite korisničko ime, ako se sjećate.", @@ -931,11 +928,9 @@ "TabDirectPlay": "Direktna reprodukcija", "TabDisplay": "Prikaz", "TabEpisodes": "Epizode", - "TabExpert": "Stručnjak", "TabFavorites": "Omiljeni", "TabGenres": "Žanrovi", "TabGuide": "Vodič", - "TabHosting": "Posluživanje", "TabLatest": "Zadnje", "TabLibrary": "Biblioteka", "TabLiveTV": "TV uživo", @@ -961,7 +956,6 @@ "TabResponses": "Odazivi", "TabResumeSettings": "Postavke nastavka", "TabScheduledTasks": "Zakazani zadaci", - "TabSecurity": "Sigurnost", "TabSeries": "Serije", "TabSettings": "Postavke", "TabShows": "Emisije", diff --git a/src/strings/hu.json b/src/strings/hu.json index 5aefdfb769..f68990484b 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -4,7 +4,6 @@ "AddToPlaylist": "Lejátszási listához adni", "AddedOnValue": "Hozzáadva: {0}", "AdditionalNotificationServices": "Keresd meg a Bővítmények katalógust további értesítési szolgáltatások telepítéséhez.", - "Advanced": "Haladó", "Alerts": "Riasztások", "All": "Összes", "AllEpisodes": "Összes epizód", @@ -142,7 +141,7 @@ "HeaderConnectToServer": "Kapcsolódás a Szerverhez", "HeaderContinueWatching": "Folyamatban lévő filmek", "HeaderCustomDlnaProfiles": "Egyedi profilok", - "HeaderDetectMyDevices": "Érzékelje az eszközöket", + "HeaderDetectMyDevices": "Eszközök érzékelése", "HeaderDeveloperInfo": "Fejlesztői információk", "HeaderDeviceAccess": "Eszköz Hozzáférések", "HeaderDevices": "Eszközök", @@ -167,15 +166,15 @@ "HeaderLatestMovies": "Legújabb Filmek", "HeaderLibraries": "Könyvtárak", "HeaderLibraryAccess": "Könyvtár Hozzáférés", - "HeaderLibraryFolders": "Könyvtár mappák", + "HeaderLibraryFolders": "Médiatár mappák", "HeaderLibraryOrder": "Médiatár rendezés", - "HeaderLibrarySettings": "Könyvtárbeállítások", + "HeaderLibrarySettings": "Médiatár beállítások", "HeaderLiveTvTunerSetup": "Élő TV tuner beállítása", "HeaderMedia": "Média", "HeaderMediaFolders": "Média Könyvtárak", "HeaderMediaInfo": "Média Infó", "HeaderMetadataSettings": "Metaadat Beállítások", - "HeaderMoreLikeThis": "További hasonló filmek", + "HeaderMoreLikeThis": "További ehhez hasonló", "HeaderMovies": "Filmek", "HeaderMusicVideos": "Zenei videók", "HeaderMyDevice": "Jelenlegi eszköz", @@ -194,7 +193,7 @@ "HeaderPlaybackSettings": "Lejátszási beállítások", "HeaderPleaseSignIn": "Kérlek jelentkezz be", "HeaderPluginInstallation": "Bővítmény Telepítése", - "HeaderPreferredMetadataLanguage": "Elsődleges metaadat nyelv", + "HeaderPreferredMetadataLanguage": "Előnyben részesített metaadat nyelv", "HeaderProfile": "Profil", "HeaderRecentlyPlayed": "Nemrég játszott", "HeaderRemoteControl": "Távirányítás", @@ -254,14 +253,14 @@ "LabelCustomRating": "Egyéni értékelés:", "LabelDashboardTheme": "Szerver vezérlőpult kinézet:", "LabelDateAdded": "Hozzáadva:", - "LabelDateTimeLocale": "Földrajzi dátum:", + "LabelDateTimeLocale": "Dátum és idő formátum:", "LabelDay": "Nap:", "LabelDisplayMissingEpisodesWithinSeasons": "Hiányzó évad epizódok megjelenítése", "LabelDisplayName": "Megjelenítendő név:", "LabelDisplayOrder": "Megjelenítési sorrend:", "LabelDownloadLanguages": "Nyelvek letöltése:", "LabelEasyPinCode": "Pin kód:", - "LabelEnableAutomaticPortMap": "Automatikus port mapping engedélyezése", + "LabelEnableAutomaticPortMap": "Automatikus port átirányítás engedélyezése", "LabelEnableHardwareDecodingFor": "Hardveres dekódolás engedélyezése a következőkhöz:", "LabelEnableRealtimeMonitor": "Valós idejű figyelés engedélyezése", "LabelEnableRealtimeMonitorHelp": "A módosítások azonnal feldolgozásra kerülnek a támogatott fájlrendszereken.", @@ -271,7 +270,7 @@ "LabelFinish": "Befejez", "LabelForgotPasswordUsernameHelp": "Add meg a felhasználóneved, ha emlékszel rá.", "LabelGroupMoviesIntoCollections": "Filmek csoportosítása gyűjteményekbe", - "LabelH264EncodingPreset": "H264 kódolási beállítások:", + "LabelH264EncodingPreset": "H264 enkóder beállítások:", "LabelHardwareAccelerationType": "Hardveres gyorsítás:", "LabelHardwareAccelerationTypeHelp": "Csak támogatott rendszereken érhető el.", "LabelHomeScreenSectionValue": "Kezdőképernyő blokk {0}:", @@ -282,7 +281,7 @@ "LabelMessageText": "Üzenet szövege:", "LabelMessageTitle": "Üzenet címe:", "LabelMetadata": "Metaadat:", - "LabelMetadataDownloadLanguage": "Elsődleges letöltendő nyelv:", + "LabelMetadataDownloadLanguage": "Előnyben részesített letöltendő nyelv:", "LabelMetadataPath": "Metaadat útvonal:", "LabelMetadataReaders": "Metaadat olvasók:", "LabelMetadataSavers": "Metaadat mentés:", @@ -522,11 +521,9 @@ "TabDevices": "Eszközök", "TabDisplay": "Megjelenítés", "TabEpisodes": "Epizódok", - "TabExpert": "Szakértő", "TabFavorites": "Kedvencek", "TabGenres": "Műfajok", "TabGuide": "Leírás", - "TabHosting": "Szerver", "TabInfo": "Infó", "TabLatest": "Legújabb", "TabLibrary": "Médiatár", @@ -537,7 +534,7 @@ "TabMusicVideos": "Zenei Videók", "TabMyPlugins": "Telepített bővítmények", "TabNetworks": "Csatornák", - "TabNfoSettings": "Nfo Beállítások", + "TabNfoSettings": "NFO Beállítások", "TabNotifications": "Értesítések", "TabOther": "Egyéb", "TabParentalControl": "Szülői Felügyelet", @@ -550,7 +547,6 @@ "TabProfiles": "Profilok", "TabRecordings": "Felvételek", "TabScheduledTasks": "Ütemezett feladatok", - "TabSecurity": "Biztonság", "TabSeries": "Sorozatok", "TabServer": "Szerver", "TabSettings": "Beállítások", @@ -727,8 +723,8 @@ "HeaderAlbumArtists": "Album Előadók", "HeaderAlert": "Figyelem", "HeaderAllowMediaDeletionFrom": "Média törlés engedélyezése", - "HeaderApiKey": "API Key", - "HeaderApiKeys": "API Keys", + "HeaderApiKey": "API Kulcs", + "HeaderApiKeys": "API Kulcsok", "HeaderAppearsOn": "Megjelenik", "HeaderAudioLanguages": "Audió nyelv", "HeaderBooks": "Könyvek", @@ -759,7 +755,7 @@ "HeaderFetchImages": "Képek letöltése:", "HeaderFetcherSettings": "Letöltő beállítások", "HeaderForKids": "Gyerekeknek", - "HeaderHttpHeaders": "Http Headers", + "HeaderHttpHeaders": "HTTP Fejlécek", "HeaderIdentification": "Azonosítás", "HeaderIdentificationCriteriaHelp": "Adj meg legalább egy azonosítási kritériumot.", "HeaderIdentificationHeader": "Azonosító fejléc", @@ -768,8 +764,8 @@ "HeaderItems": "Elemek", "HeaderKeepRecording": "Felvétel készítése", "HeaderKodiMetadataHelp": "Az Nfo metaadatok engedélyezéséhez vagy letiltásához szerkeszd a könyvtárat a Jellyfin Médiatár beállításaiban és keresd meg a metaadat letöltő részt.", - "HeaderLatestMusic": "Legújabb zene", - "HeaderLatestRecordings": "Legfrissebb felvételek", + "HeaderLatestMusic": "Legújabb Zene", + "HeaderLatestRecordings": "Legújabb Felvételek", "HeaderLiveTV": "Élő TV", "HeaderLiveTv": "Élő TV", "HeaderLoginFailure": "Bejelentkezési hiba", @@ -787,7 +783,7 @@ "HeaderProfileServerSettingsHelp": "Ezek az értékek szabályozzák, hogy a Jellyfin Szerver hogyan jelenik meg az eszközökön.", "HeaderRecordingOptions": "Felvétel beállítások", "HeaderRecordingPostProcessing": "Felvétel utáni feldolgozás", - "HeaderRemoveMediaFolder": "Média mappa törlése", + "HeaderRemoveMediaFolder": "Média mappa eltávolítása", "HeaderRemoveMediaLocation": "Média eltávolítása", "HeaderResponseProfile": "Válaszprofil", "HeaderResponseProfileHelp": "A válaszprofilok lehetővé teszik az eszközre küldött információk testreszabását bizonyos médiák lejátszásakor.", @@ -828,9 +824,9 @@ "HeaderTypeImageFetchers": "{0} képgyűjtők", "HeaderTypeText": "Írd be a szöveget", "HeaderVideoQuality": "Videóminőség", - "HeaderVideoTypes": "Videó típusa:", + "HeaderVideoTypes": "Videó típusok", "HeaderXmlDocumentAttribute": "XML dokumentum attribútum", - "HeaderXmlDocumentAttributes": "XML dokumentum attribútum", + "HeaderXmlDocumentAttributes": "XML dokumentum attribútumok", "HeaderXmlSettings": "XML beállítások", "Hide": "Elrejt", "Horizontal": "Vízszintes", @@ -887,7 +883,7 @@ "LabelArtistsHelp": "Ha több van használd a következő elválasztót ;", "LabelDisplayCollectionsView": "Jelenítse meg a Gyűjtemények menüpontot a filmgyűjtemények megjelenítéséhez", "LabelDisplayCollectionsViewHelp": "Ez külön menüpontot hoz létre a filmgyűjtemények megjelenítéséhez. Gyűjtemény létrehozásához kattints jobb gombbal vagy kattints a három pontra bármelyik filmen, és válaszd a 'Hozzáadás gyűjteményhez' lehetőséget. ", - "LabelEnableAutomaticPortMapHelp": "Az UPnP segítségével próbáld meg automatikusan átirányítani a nyilvános portot a helyi portra. Előfordulhat, hogy egyes router modelleken ez nem működik.", + "LabelEnableAutomaticPortMapHelp": "A szerver az UPnP segítségével a routeren megpróbálja automatikusan átirányítani a nyilvános portot a helyi portra. Előfordulhat, hogy egyes router modelleken ez nem működik.", "LabelEnableBlastAliveMessagesHelp": "Engedélyezd ezt ha a szerver nem észleli megbízhatóan a hálózat más UPnP-eszközeit.", "LabelEnableDlnaClientDiscoveryInterval": "Kliens felderítési intervallum (másodperc)", "LabelEnableDlnaClientDiscoveryIntervalHelp": "A Jellyfin által végrehajtott SSDP keresések időtartamát határozza meg másodpercben.", @@ -902,17 +898,16 @@ "LabelEndDate": "Befejezés dátuma:", "LabelExternalDDNS": "Külső domain:", "LabelExternalDDNSHelp": "Ha dinamikus DNS-t használsz, írd be ide. A Jellyfin alkalmazások fogják ezt használni távoli kapcsolódáskor. Ezt a mezőt akkor kell megadni ha egyéni SSL tanúsítványt használsz. Példa: mydomain.com.", - "LabelExtractChaptersDuringLibraryScan": "A fejezet képeinek elkészítése a könyvtár beolvasása során", + "LabelExtractChaptersDuringLibraryScan": "Fejezet képek készítése a könyvtár beolvasása során", "LabelExtractChaptersDuringLibraryScanHelp": "Ha engedélyezve van, a fejezetképek elkészítése a könyvtár beolvasása során történik meg. Ha le van tiltva, akkor az elkészítés az Ütemezett feladatokban meghatározott időben készül el, ami lehetővé teszi a könyvtárbeolvasás gyorsítását.", "LabelFailed": "Sikertelen", - "LabelFanartApiKey": "Személyes API kulcs:", "LabelFileOrUrl": "Fájl vagy URL:", "LabelFont": "Betűtípus:", "LabelFormat": "Formátum:", "LabelFriendlyName": "Könnyen megjegyezhető név:", "LabelServerNameHelp": "Ez a név kerül a Szerver azonosítására. Ha üresen marad, a számítógép neve kerül felhasználásra.", "LabelGroupMoviesIntoCollectionsHelp": "A filmlisták megjelenítésekor a gyűjteményhez tartozó filmek egy csoportos elemként jelennek meg.", - "LabelH264Crf": "H264 encoding CRF:", + "LabelH264Crf": "H264 enkóder CRF:", "LabelHomeNetworkQuality": "Otthoni hálózat minősége:", "LabelHttpsPort": "Helyi https port száma:", "LabelImageFetchersHelp": "Engedélyezd és rangsorold az előnyben részesített képletöltőket prioritásuk sorrendjében.", @@ -933,13 +928,13 @@ "LabelLockItemToPreventChanges": "Az elem zárolása a jövőbeni változások elkerülése érdekében", "LabelLoginDisclaimer": "Bejelentkezési nyilatkozat:", "LabelLoginDisclaimerHelp": "Ez a bejelentkezési oldal alján jelenik meg.", - "LabelManufacturer": "Készítő", - "LabelManufacturerUrl": "Készítő url címe", + "LabelManufacturer": "Gyártó", + "LabelManufacturerUrl": "Gyártó url címe", "LabelMatchType": "Egyezés típusa:", "LabelMaxBackdropsPerItem": "A hátterek maximális száma elemenként:", "LabelMaxChromecastBitrate": "Chromecast streaming minősége:", "LabelMaxParentalRating": "Maximálisan megengedett szülői minősítés:", - "LabelMaxStreamingBitrate": "Max streaming minőség:", + "LabelMaxStreamingBitrate": "Maximum streaming minőség:", "LabelMetadataDownloadersHelp": "Engedélyezd és rangsorold az előnyben részesített metaadat letöltőket prioritásuk sorrendjében. Az alacsonyabb prioritású letöltőket csak a hiányzó információk letöltésére használjuk.", "LabelMetadataPathHelp": "Add meg a letöltött artwork és metaadatok egyéni helyét.", "LabelMethod": "Módszer:", @@ -988,9 +983,9 @@ "MessageForgotPasswordFileCreated": "A következő fájl jött létre a szerveren, ami utasításokat tartalmaz a folytatáshoz:", "OptionDateAddedFileTime": "Használja a fájl létrehozásának dátumát", "LabelMinBackdropDownloadWidth": "A letöltendő háttérkép minimális szélessége:", - "LabelMinResumeDuration": "A folytatás min. időtartama (másodperc):", - "LabelMinResumeDurationHelp": "A rövidebb címek nem lesznek folytathatónak jelölve", - "LabelMinResumePercentage": "Min. folytatás százalékban:", + "LabelMinResumeDuration": "A folytatás minimum időtartama:", + "LabelMinResumeDurationHelp": "A rövidebb videó hosszúság másodpercben, melynél a lejátszás helye mentésre kerül, így később folytatható lesz", + "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:", @@ -1140,7 +1135,7 @@ "OptionDownloadImagesInAdvance": "Képek előzetes letöltése", "OptionDownloadImagesInAdvanceHelp": "Alapértelmezés szerint a legtöbb kép csak akkor töltődik le, ha azt egy Jellyfin alkalmazás kéri. Engedélyezd ezt az opciót az összes kép előzetes letöltéséhez, mikor új médiát importál. Ez jelentősen hosszabb könyvtár vizsgálatot eredményezhet.", "OptionDownloadPrimaryImage": "Elsődleges", - "OptionDvd": "Dvd", + "OptionDvd": "DVD", "OptionEmbedSubtitles": "Beágyazva tárolóba", "OptionEnableExternalContentInSuggestions": "Külső tartalom engedélyezése a javaslatokban", "OptionEnableExternalContentInSuggestionsHelp": "Engedélyezze az internetes előzeteseket és az élő tv műsorokat a javasolt tartalomban.", @@ -1259,7 +1254,7 @@ "TabDirectPlay": "Közvetlen lejátszás", "TabLiveTV": "Élő TV", "TabResponses": "Válaszok", - "TabResumeSettings": "Folytatás beállítások", + "TabResumeSettings": "Folytatás", "TabStreaming": "Streaming", "TagsValue": "Címkék: {0}", "ThemeSongs": "Téma dalok", @@ -1291,7 +1286,7 @@ "VideoRange": "Videó tartomány", "ViewAlbum": "Album megtekintése", "ViewArtist": "Művész megtekintése", - "Whitelist": "Whitelist", + "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 Befejezés gombra a Szerver Vezérlőpult megtekintéséhez.", "XmlTvKidsCategoriesHelp": "Az ilyen kategóriákkal rendelkező programok gyerekeknek szóló programokként jelennek meg. Válaszd el őket a '|' elválasztóval.", "XmlTvMovieCategoriesHelp": "Az ilyen kategóriákkal rendelkező programok filmként jelennek meg. Válaszd el őket a '|' elválasztóval.", @@ -1299,9 +1294,9 @@ "XmlTvPathHelp": "Az xml tv-fájl elérési útvonala. A Jellyfin elolvassa ezt a fájlt és rendszeresen ellenőrzi a frissítéseket. Te vagy a felelős a fájl létrehozásáért és frissítéséért.", "XmlTvSportsCategoriesHelp": "Az ilyen kategóriákkal rendelkező programok sportprogramként jelennek meg. Válaszd el őket a '|' elválasztóval.", "Yes": "Igen", - "LabelMaxResumePercentage": "Max. folytatás százalékban:", + "LabelMaxResumePercentage": "Maximum folytatás százalékban:", "LabelMaxResumePercentageHelp": "A címeket teljesen lejátszottnak tekintjük, ha ezen idő után fejezed be", - "LabelMaxStreamingBitrateHelp": "Adj meg egy max bitrátát a streameléshez.", + "LabelMaxStreamingBitrateHelp": "Adj meg egy maximum bitrátát a streameléshez.", "LabelMinResumePercentageHelp": "A címeket nem lejátszottnak tekintjük, ha ez alatt az idő alatt fejezed be", "LabelMusicStreamingTranscodingBitrateHelp": "Határozz meg egy streamelési max bitrátát a zenékhez", "DashboardVersionNumber": "Verzió: {0}", @@ -1310,5 +1305,74 @@ "MediaInfoSoftware": "Szoftver", "MediaInfoStreamTypeAudio": "Audió", "MediaInfoStreamTypeSubtitle": "Felirat", - "MediaInfoStreamTypeVideo": "Videó" + "MediaInfoStreamTypeVideo": "Videó", + "LabelUserAgent": "Felhasználó ügynök:", + "LabelUserLoginAttemptsBeforeLockout": "Sikertelen bejelentkezési kísérletek a felhasználó zárolása előtt:", + "DashboardOperatingSystem": "Operációs rendszer: {0}", + "DashboardArchitecture": "Rendszer típusa: {0}", + "LaunchWebAppOnStartup": "Indítsa el a Jellyfin webes alkalmazást a böngészőben, amikor a Jellyfin Szerver elindul", + "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.", + "TabNetworking": "Hálózat", + "HeaderFavoriteArtists": "Kedvenc Előadók", + "SmallCaps": "Kiskapitális", + "AllowOnTheFlySubtitleExtractionHelp": "A beágyazott feliratokat ki lehet távolítani a videókból és elküldeni a Jellyfin alkalmazásoknak sima szöveg formátumba, hogy ne legyen átkódolás. Néhány eszközön ez hosszú ideig is eltarthat, valamint a videó lejátszás megakadhat az eltávolítási folyamat futása közben. Ezt kikapcsolva a beágyazott feliratok videó átkódolással beégetésre kerülnek azon kliens eszközökre melyek nem támogatják a külső feliratokat.", + "Art": "ClearArt", + "AuthProviderHelp": "Válaszd ki az azonosítási szolgáltatást amely ezen felhasználó jelszavának ellenőrzését valósítja meg.", + "BurnSubtitlesHelp": "Meghatározza, hogy a szervernek be kell-e égetnie a feliratot videó átkódolás esetén a felirat típusának függvényében. A beégetés elkerülésével a szerver teljesítménye javul. Válaszd az Auto lehetőséget a kép alapú feliratok (pl. VOBSUB, PGS, SUB/IDX, stb) és bizonyos ASS/SSA feliratok beégetéséhez.", + "ButtonAddScheduledTaskTrigger": "Vezérlő Hozzáadása", + "ButtonGuide": "Műsorújság", + "ButtonRefreshGuideData": "Műsorújság Frissítése", + "ColorPrimaries": "Alapszínek", + "DefaultSubtitlesHelp": "A feliratok a beágyazott metaadatok alapértelmezett és forced jelölői által meghatározottak alapján kerülnek betöltésre. A nyelvi beállítások akkor kerülnek figyelembe vételre, ha több lehetőség is rendelkezésre áll.", + "EnableStreamLooping": "Élő műsorfolyamok automatikus újrajátszása", + "EnableStreamLoopingHelp": "Kapcsold be, ha az élő stream csak néhány másodpercnyi adatot tartalmaz és folyamatosan újra kell kérni. Ennek szükségtelen bekapcsolása problémát okozhat.", + "Guide": "Műsorújság", + "H264CrfHelp": "A Constant Rate Factor (CRF) az alapértelmezett minőségi beállítás az x264 enkóderhez. Az értékek 0 és 51 között állíthatók, ahol az alacsonyabb érték jobb minőséget eredményez (nagyobb fájl méret mellett). Az ajánlott érték 18 és 28 között van. Az x264 alapértelmezett beállítása 23, ez lehet kiindulási alap.", + "HeaderAddScheduledTaskTrigger": "Vezérlő Hozzáadása", + "HeaderApiKeysHelp": "A külső alkalmazásoknak egy API kulcsra van szükésge, hogy kommunikáljanak a Jellyfin szerverrel. A kulcsokat egy Jellyfin fiókkal történő belépéssel lehet megkapni, vagy kézileg felvenni egy alkalmazáshoz tartozó kulcsot.", + "HeaderBranding": "Személyes Márka", + "HeaderContinueListening": "Folyamatban lévő zenék", + "HeaderDeleteTaskTrigger": "Feladatvezérlő törlése", + "HeaderFavoriteMovies": "Kedvenc Filmek", + "HeaderFavoriteShows": "Kedvenc Sorozatok", + "HeaderFavoriteEpisodes": "Kedvenc Epizódok", + "HeaderFavoriteAlbums": "Kedvenc Albumok", + "HeaderFavoriteSongs": "Kedvenc Dalok", + "HeaderFavoriteVideos": "Kedvenc Videók", + "HeaderGuideProviders": "TV műsorújság Szolgáltatók", + "HeaderHome": "Kezdőlap", + "HeaderHomeSettings": "Kezdőlap Beállítások", + "HeaderRestartingServer": "Szerver újraindítása", + "HeaderUpcomingOnTV": "Következő TV műsorok", + "ImportFavoriteChannelsHelp": "Ha engedélyezve van, csak a tuner eszközön kedvencként megjelölt csatornák kerülnek importálásra.", + "LabelAlbumArtHelp": "A használandó PN érték az albumborítók esetében, mely a upnp:albumArtURI dlna:profileID tulajdonságában szerepel. Néhány eszköz meghatározott értéket vár el, függetlenül a kép méretétől.", + "LabelAlbumArtMaxHeight": "Albumborító maximális magasság:", + "LabelAlbumArtMaxHeightHelp": "Albumborító maximális magasság mely upnp:albumArtURI kiajánlásra kerül.", + "LabelAlbumArtMaxWidth": "Albumborító maximális szélesség:", + "LabelAlbumArtMaxWidthHelp": "Albumborító maximális szélesség mely upnp:albumArtURI kiajánlásra kerül.", + "LabelAlbumArtPN": "Albumborító PN:", + "LabelAuthProvider": "Azonosítási Szolgáltató:", + "LabelBurnSubtitles": "Feliratok beégetése:", + "LabelCustomCertificatePathHelp": "A PKCS #12 fájl elérési útja, mely tartalmazza a tanúsítványt és privát kulcsot az egyedi tartományon történő TLS támogatás engedélyezéséhez.", + "LabelDateAddedBehavior": "Új tartalom esetén alkalmazandó hozzáadás dátuma mód:", + "LabelDateAddedBehaviorHelp": "Ha egy metaadat érték jelen van, akkor mindig az lesz előnyben részesítve ezen opciók előtt.", + "LabelDownMixAudioScale": "Hangkiemelés átkódolás esetén:", + "LabelDownMixAudioScaleHelp": "Hangkiemelés átkódoláskor. Állítsd 1-re az eredeti hangerő érték megőrzéséhez.", + "LabelEmbedAlbumArtDidl": "Albumborító beágyazása a Didl-be", + "LabelEmbedAlbumArtDidlHelp": "Néhány eszköz ezt a megoldást részesíti előnyben az albumborítók esetében. Mások esetlegesen lejátszási hibát jeleznek, ha ez az opció engedélyezve van.", + "LabelEnableBlastAliveMessages": "Blast alive üzenetek", + "LabelHttpsPortHelp": "A TCP port száma, melyen a Jellyfin HTTPS szervere figyel.", + "LabelIconMaxHeight": "Ikon maximális magasság:", + "LabelIconMaxHeightHelp": "Ikon maximális magasság, mely az upnp:icon keresztül kiajánlásra kerül.", + "LabelIconMaxWidth": "Ikon maximális szélesség:", + "LabelIconMaxWidthHelp": "Ikon maximális szélesség, mely az upnp:icon keresztül kiajánlásra kerül.", + "LabelIdentificationFieldHelp": "Kis-és nagybetű különbséget figyelmen kívül hagyó szöveg vagy reguláris kifejezés.", + "LabelKeepUpTo": "Őrizd meg:", + "LabelKodiMetadataUser": "Mentsd el a következő felhasználó megtekintési adatát az nfo-ba:", + "LabelKodiMetadataUserHelp": "Ha ezt engedélyezed, akkor a kiválasztott felhasználó megtekintési adata elmentésre kerül az NFO fájlokba, melyet azután más alkalmazások használhatnak.", + "LabelLocalHttpServerPortNumberHelp": "A TCP port száma, melyen a Jellyfin HTTP szerver figyel.", + "UserAgentHelp": "Adj meg egy egyedi http user-agent fejlécet, amennyiben szükséges.", + "XmlDocumentAttributeListHelp": "Ezek a tulajdonságok minden xml válaszüzenet gyökér elemére alkalmazásra kerülnek." } diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 10be300a09..302260727b 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -1,5 +1,4 @@ { - "Advanced": "Ítarlegt", "All": "Allt", "Browse": "Vafra", "ButtonCancel": "Hætta við", diff --git a/src/strings/it.json b/src/strings/it.json index 936ce3ed12..9ffaa90f9e 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -9,7 +9,6 @@ "AddToPlaylist": "Aggiungi alla playlist", "AddedOnValue": "Aggiunto {0}", "AdditionalNotificationServices": "Sfoglia il catalogo plugin per installare i servizi di notifica aggiuntivi.", - "Advanced": "Avanzate", "AirDate": "Data messa in Onda", "Aired": "In onda", "Albums": "Album", @@ -231,7 +230,7 @@ "Favorite": "Preferito", "Favorites": "Preferiti", "Features": "Caratteristiche", - "FileNotFound": "File non trovato", + "FileNotFound": "File non trovato.", "FileReadCancelled": "Il file letto è stato cancellato.", "FileReadError": "Errore durante la lettura del file.", "Filters": "Filtri", @@ -587,8 +586,6 @@ "LabelExtractChaptersDuringLibraryScan": "Estrarre immagini capitolo durante la scansione della libreria", "LabelExtractChaptersDuringLibraryScanHelp": "Se abilitata, le immagini capitolo verranno estratti quando i video vengono importati durante la scansione della libreria. Se disabilitata verranno estratti durante l'operazione pianificata di estrazione delle immagini capitolo, permettendo la scansione della libreria più velocemente.", "LabelFailed": "Fallito", - "LabelFanartApiKey": "Chiavi API personali", - "LabelFanartApiKeyHelp": "Le richieste di fanart effettuate senza una chiave API personale restituiranno immagini approvate più di 7 giorni fa. Con una chiave API personale questo tempo scende a 48 ore e, se sei un membro VIP, questo tempo scenderà ulteriormente a circa 10 minuti.", "LabelFileOrUrl": "File o URL:", "LabelFinish": "Finito", "LabelForgotPasswordUsernameHelp": "Inserisci il tuo nome utente, se te lo ricordi.", @@ -1200,7 +1197,6 @@ "TabDirectPlay": "Riproduzione Diretta", "TabDisplay": "Schermo", "TabEpisodes": "Episodi", - "TabExpert": "Esperto", "TabFavorites": "Preferiti", "TabGenres": "Generi", "TabGuide": "Guida", @@ -1225,7 +1221,6 @@ "TabResponses": "Risposte", "TabResumeSettings": "Ripristina Impostazioni", "TabScheduledTasks": "Operazioni Pianificate", - "TabSecurity": "Sicurezza", "TabSeries": "Serie TV", "TabSettings": "Impostazioni", "TabShows": "Spettacoli", @@ -1333,7 +1328,7 @@ "HeaderFavoriteEpisodes": "Episodi Favoriti", "HeaderFavoriteAlbums": "Album Favoriti", "HeaderFavoriteArtists": "Artisti Preferiti", - "HeaderFavoriteSongs": "Canzoni Preferite", + "HeaderFavoriteSongs": "Brani Preferiti", "HeaderFavoriteVideos": "Video Preferiti", "HeaderFetcherSettings": "Impostazioni Fetcher", "HeaderImageOptions": "Opzioni Immagine", diff --git a/src/strings/ja.json b/src/strings/ja.json new file mode 100644 index 0000000000..c0b95102d9 --- /dev/null +++ b/src/strings/ja.json @@ -0,0 +1,518 @@ +{ + "Absolute": "絶対", + "AccessRestrictedTryAgainLater": "アクセスは現在制限されています。後でもう一度やり直してください。", + "Actor": "アクター", + "Add": "追加", + "AddToCollection": "コレクションに追加", + "AddToPlayQueue": "再生リストに追加", + "AddToPlaylist": "プレイリストに追加", + "AddedOnValue": "{0}を追加しました", + "AdditionalNotificationServices": "プラグインカタログから通知サービスを追加してください。", + "AirDate": "放送日", + "Aired": "放映された", + "Albums": "アルバム", + "Alerts": "アーティスト", + "All": "すべて", + "AllChannels": "すべてのチャンネル", + "AllComplexFormats": "すべての複雑なフォーマット (ASS, SSA, VOBSUB, PGS, SUB/IDX, etc.)", + "AllEpisodes": "すべてのエピソード", + "AllLanguages": "すべての言語", + "AllLibraries": "すべてのライブラリ", + "AllowHWTranscodingHelp": "これを有効にした場合チューナーからトランスコードしてストリーミングします。 これによりJellyfin Serverによるトランスコードを減らします。", + "AllowMediaConversion": "メディアの変換を許可する", + "AllowMediaConversionHelp": "メディア変換機能へのアクセスを許可もしくは、拒否します。", + "AllowOnTheFlySubtitleExtraction": "字幕の抽出の許可/拒否", + "AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコーディングを防ぐために、ビデオから抽出してプレーンテキストでJellyfin クライアントに配信できます。 システムによっては、これに時間がかかり、抽出プロセス中にビデオの再生が止まることがあります。 これを無効にすると、埋め込み字幕がクライアントデバイスでネイティブにサポートされていないときにビデオのトランスコーディングが強制されます。", + "AllowRemoteAccess": "Jellyfin Serverへのリモート接続の許可。", + "AllowRemoteAccessHelp": "チェックが入っていない場合すべてのリモート接続をブロックします。", + "AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/マスク長 空白のままにすると、すべてのリモートアドレスが許可されます。", + "AlwaysPlaySubtitles": "字幕を常に有効にする", + "AlwaysPlaySubtitlesHelp": "言語に合った字幕が音声言語に関係なく読み込まれます。", + "AnyLanguage": "いずれかの言語", + "Anytime": "いつでも", + "AroundTime": "{0}頃", + "Art": "アート", + "Artists": "アーティスト", + "AsManyAsPossible": "できるだけ多く", + "Ascending": "昇順", + "AspectRatio": "アスペクト比", + "Audio": "オーディオ", + "AuthProviderHelp": "認証プロバイダを選択してください ユーザーのパスワードを認証するために使用されます", + "Auto": "自動", + "AutoBasedOnLanguageSetting": "自動選択(設定されている言語を優先)", + "Backdrop": "背景", + "Backdrops": "背景", + "Banner": "バナー", + "BirthDateValue": "誕生日:{0}", + "BirthLocation": "生まれた場所", + "BirthPlaceValue": "生まれた場所: {0}", + "Blacklist": "ブラックリスト", + "BookLibraryHelp": "オーディオブックとテキストブックに対応しています。{0}Jellyfin Book naming guide{1}.", + "Books": "ブック", + "Box": "ボックス", + "BoxRear": "ボックス(後)", + "Browse": "ブラウズ", + "BrowsePluginCatalogMessage": "利用可能なプラグインを表示するには、プラグインカタログを参照してください。", + "BurnSubtitlesHelp": "字幕フォーマットに応じて、ビデオを変換するときにサーバーが字幕を直接書き込むかどうかを決定します。 字幕の書き込みを避けると、サーバーのパフォーマンスが向上します。 特定のASS / SSA字幕だけでなく画像ベースのフォーマット(e.g. VOBSUB, PGS, SUB/IDX, etc.)を焼くには自動を選択します", + "ButtonAdd": "追加", + "ButtonAddMediaLibrary": "メディアライブラリを追加", + "ButtonAddScheduledTaskTrigger": "トリガーを追加", + "ButtonAddServer": "サーバーを追加", + "ButtonAddUser": "ユーザーを追加", + "ButtonArrowDown": "下", + "ButtonArrowLeft": "左", + "ButtonArrowRight": "右", + "ButtonArrowUp": "上", + "ButtonAudioTracks": "オーディオトラック", + "ButtonBack": "戻る", + "ButtonCancel": "キャンセル", + "ButtonChangeServer": "サーバーを変更", + "ButtonConnect": "接続", + "ButtonDelete": "削除", + "ButtonDeleteImage": "イメージを削除", + "ButtonDown": "下", + "ButtonDownload": "ダウンロード", + "ButtonEdit": "編集", + "ButtonEditImages": "イメージを編集", + "ButtonEditOtherUserPreferences": "ユーザーのアバターイメージやプロフィールなどの個人設定を編集。", + "ButtonFilter": "フィルタ", + "ButtonForgotPassword": "パスワードを忘れました", + "ButtonFullscreen": "フルスクリーン", + "ButtonGotIt": "了解", + "ButtonGuide": "ガイド", + "ButtonHelp": "ヘルプ", + "ButtonHome": "ホーム", + "ButtonInfo": "情報", + "ButtonLearnMore": "もっと詳しく", + "ButtonLibraryAccess": "ライブラリへアクセス", + "ButtonManualLogin": "マニュアルログイン", + "ButtonMore": "もっと", + "ButtonNetwork": "ネットワーク", + "ButtonNextTrack": "次のトラック", + "ButtonOk": "OK", + "ButtonOpen": "開く", + "ButtonOther": "その他", + "ButtonParentalControl": "ペアレンタルコントロール", + "ButtonPause": "一時停止", + "ButtonPlay": "再生", + "ButtonPreviousTrack": "前のトラック", + "ButtonProfile": "プロフィール", + "ButtonQuickStartGuide": "クイックスタートガイド", + "ButtonRefresh": "更新", + "ButtonRefreshGuideData": "ガイドデータの更新", + "ButtonRemove": "削除", + "ButtonRename": "名前の変更", + "ButtonRepeat": "リピート", + "ButtonResetEasyPassword": "easy pin code をリセット", + "ButtonResetPassword": "パスワードをリセット", + "ButtonRestart": "再起動", + "ButtonResume": "レジューム", + "ButtonRevoke": "取り消す", + "ButtonSave": "保存", + "ButtonScanAllLibraries": "すべてのライブラリをスキャン", + "ButtonSearch": "検索", + "ButtonSelectDirectory": "ディレクトリの選択", + "ButtonSelectServer": "サーバーの選択", + "ButtonSelectView": "ビューを選択", + "ButtonSend": "送る", + "ButtonSettings": "設定", + "ButtonShuffle": "シャッフル", + "ButtonShutdown": "シャットダウン", + "ButtonSignIn": "サインイン", + "ButtonSignOut": "サインアウト", + "ButtonSort": "ソート", + "ButtonSplitVersionsApart": "バージョンを分割する", + "ButtonStart": "スタート", + "ButtonStop": "ストップ", + "ButtonSubmit": "提出", + "ButtonSubtitles": "字幕", + "ButtonTrailer": "予告", + "ButtonUninstall": "アンインストール", + "ButtonUp": "上", + "ButtonUpload": "アップロード", + "ButtonViewWebsite": "ウェブサイトで見る", + "ButtonWebsite": "ウェブサイト", + "CancelRecording": "レコーディングをキャンセル", + "CancelSeries": "中止したシリーズ", + "Categories": "カテゴリ", + "ChangingMetadataImageSettingsNewContent": "メタデータまたはアートワークのダウンロード設定に対する変更は、ライブラリに追加された新しいコンテンツにのみ適用されます。 既存のタイトルに変更を適用するには、それらのメタデータを手動で更新する必要があります。", + "ChannelAccessHelp": "ユーザーと共有するチャンネルを選択してください。管理者はメタデータマネージャを使用してすべてのチャンネルを編集できます。", + "ChannelNameOnly": "チャンネル{0} のみ", + "ChannelNumber": "チャンネル番号", + "Channels": "チャンネル", + "CinemaModeConfigurationHelp": "シネマモードでは、再生前に予告編やカスタムイントロを再生することができ、まるで映画館に居るような没入感を楽しめます。", + "Collections": "コレクション", + "ColorPrimaries": "プライマリカラー", + "ColorSpace": "カラースペース", + "CommunityRating": "コミュニティ評価", + "Composer": "作曲者", + "ConfigureDateAdded": "日時を設定します", + "ConfirmDeleteImage": "イメージを削除しますか?", + "ConfirmDeleteItem": "このアイテムを削除すると、ファイルシステムとメディアライブラリの両方から削除されます。 続行しますか?", + "ConfirmDeleteItems": "これらの項目を削除すると、ファイルシステムとメディアライブラリの両方からそれらが削除されます。 続行しますか?", + "ConfirmDeletion": "削除を確認", + "ConfirmEndPlayerSession": "{0}のJellyfinをシャットダウンしますか?", + "Connect": "接続", + "ContinueWatching": "視聴中", + "Continuing": "続く", + "CriticRating": "批評家の評価", + "CustomDlnaProfilesHelp": "カスタムプロファイルを作成して新しいデバイスをターゲットにするか、システムプロファイルを上書きします。", + "DateAdded": "追加日時", + "DatePlayed": "再生日時", + "Default": "デフォルト", + "DefaultErrorMessage": "要求の処理中にエラーが発生しました。 後でもう一度やり直してください。", + "DefaultMetadataLangaugeDescription": "これらはデフォルトであり、ライブラリごとにカスタマイズすることができます。", + "DefaultSubtitlesHelp": "字幕は、埋め込みメタデータのデフォルトフラグと強制フラグに基づいてロードされます。 複数のオプションが利用可能な場合は、言語設定が考慮されます。", + "Delete": "削除", + "DeleteDeviceConfirmation": "このデバイスを削除してよろしいですか?次回ユーザーがサインインしたときに再び表示されます。", + "DeleteImage": "イメージを削除", + "DeleteImageConfirmation": "この画像を削除してもよろしいですか?", + "DeleteMedia": "メディアを削除", + "DeleteUser": "ユーザーの削除", + "DeleteUserConfirmation": "このユーザーを削除してよろしいですか?", + "Descending": "降順", + "Desktop": "デスクトップ", + "DetectingDevices": "検出デバイス", + "DeviceAccessHelp": "これは、識別できるデバイスにのみ適用され、ブラウザへのアクセスを妨げることはありません。 ユーザーのデバイスアクセスをフィルタリングすると、ここで承認されるまで新しいデバイスを使用できなくなります。", + "DirectPlaying": "ダイレクト再生", + "DirectStreamHelp1": "メディアの種類 (H.264, AC3, etc.)がお使いのデバイスに対応している場合Jellyfin Serverからメディアファイルの直接再生が可能です。互換性のないファイルコンテナ(.mkv, .avi, .wmv, etc.)はトランスコードを行い再生されます。", + "DirectStreamHelp2": "ファイルのダイレクトストリーミングは、ビデオ品質を損なうことなく、Jellyfin Serverにもほとんど負荷がありません。", + "DirectStreaming": "ダイレクトストリーミング", + "Director": "ディレクター", + "DirectorValue": "ディレクター: {0}", + "DirectorsValue": "ディレクターズ: {0}", + "Disabled": "無効", + "Disc": "ディスク", + "Disconnect": "切断", + "Dislike": "嫌い", + "Display": "ディスプレイ", + "DisplayInMyMedia": "ホームスクリーンに表示", + "DisplayInOtherHomeScreenSections": "最新のメディアなどをホーム画面に表示する", + "DisplayMissingEpisodesWithinSeasons": "シーズンの欠けているエピソードを表示する", + "DisplayMissingEpisodesWithinSeasonsHelp": "これは Jellyfin ServerのTVライブラリーに対しても有効にする必要があります。", + "DisplayModeHelp": "ellyfinを実行している画面の種類を選択します。", + "DoNotRecord": "記録しない", + "Down": "下", + "Download": "ダウンロード", + "DownloadsValue": "{0} ダウンロード", + "DrmChannelsNotImported": "DRMのあるチャンネルはインポートされません。", + "DropShadow": "ドロップシャドウ", + "EasyPasswordHelp": "簡単なPINコードを設定することで、サポートされているJellyfinアプリケーションとのオフラインアクセスに使用できます。また、簡単なネットワーク内サインインにも使用できます。", + "Edit": "編集", + "EditImages": "イメージを編集", + "EditMetadata": "メタデータを編集", + "EditSubtitles": "字幕を編集", + "EnableBackdrops": "背景を有効にする", + "EnableBackdropsHelp": "有効にすると、ライブラリを閲覧している間、背景がいくつかのページの背景に表示されます。", + "EnableCinemaMode": "シネマモードを有効にする", + "EnableColorCodedBackgrounds": "color coded backgrounds を有効にする", + "EnableDisplayMirroring": "ミラー表示を有効にする", + "EnableExternalVideoPlayers": "外部ビデオプレイヤーを有効にする", + "EnableExternalVideoPlayersHelp": "ビデオの再生を開始すると、外部プレーヤーメニューが表示されます。", + "EnableHardwareEncoding": "ハードウェアエンコーディングを有効にする", + "EnableNextVideoInfoOverlay": "再生中に次のビデオ情報を有効にする", + "EnableNextVideoInfoOverlayHelp": "動画の最後に、現在のプレイリストに表示されている次の動画に関する情報を表示します。", + "EnablePhotos": "フォトを有効にする", + "EnablePhotosHelp": "写真が検出され、他のメディアファイルと一緒に表示されます。", + "EnableStreamLooping": "ライブストリームの自動ループ", + "EnableStreamLoopingHelp": "ライブストリームに数秒のデータしか含まれず、継続的に要求する必要がある場合は、これを有効にします。不要なときにこれを有効にすると、問題が発生する可能性があります。", + "EnableThemeSongs": "テーマソングを有効にする", + "EnableThemeSongsHelp": "有効にした場合、テーマソングはライブラリを閲覧している間バックグラウンドで再生されます。", + "EnableThemeVideos": "テーマ動画を有効にする", + "EnableThemeVideosHelp": "有効にした場合、テーマビデオはライブラリを閲覧中にバックグラウンドで再生されます。", + "Ended": "終了", + "EndsAtValue": "{0}に終了", + "Episodes": "エピソード", + "HeaderInstantMix": "インスタントミックス", + "HeaderMoreLikeThis": "これに似たもの", + "InstantMix": "インスタントミックス", + "More": "もっと", + "MoreFromValue": "もっと詳しく {0}", + "AddItemToCollectionHelp": "アイテムをコレクションに追加するには右クリックメニューかタップメニューから追加してください。", + "AttributeNew": "新規", + "ButtonNew": "新規", + "ButtonOff": "オフ", + "ColorTransfer": "Color transfer", + "DeathDateValue": "死亡日:{0}", + "Depressed": "陰鬱", + "ErrorAddingListingsToSchedulesDirect": "Schedules Directのアカウントにラインナップを追加中にエラーが発生しました。 スケジュールダイレクトでは、アカウントごとに限られた数のラインナップしか許可されません。続けるには、Schedules Direct にログインしてアカウントから他のリストを削除する必要があります。", + "ErrorAddingMediaPathToVirtualFolder": "メディアパスの追加中にエラーが発生しました。 パスが有効で、Jellyfin サーバープロセスがその場所にアクセスできることを確認してください。", + "ErrorAddingTunerDevice": "チューナーデバイスの追加中にエラーが発生しました。 アクセス可能であることを確認して、もう一度やり直してください。", + "ErrorAddingXmlTvFile": "XmlTV ファイルへのアクセス中にエラーが発生しました。 ファイルが存在することを確認して、やり直してください。", + "ErrorDeletingItem": "Jellyfin サーバーからアイテムを削除中にエラーが発生しました。 Jellyfin サーバーがメディアフォルダーへの書き込みアクセス権を持っていることを確認して、もう一度やり直してください。", + "ErrorGettingTvLineups": "TV ラインナップ のダウンロード中にエラーが発生しました。 あなたの情報が正しいことを確認してもう一度やり直してください。", + "ErrorMessageStartHourGreaterThanEnd": "終了時間は開始時間より長くなければなりません。", + "ErrorPleaseSelectLineup": "ラインナップを選択してもう一度やり直してください。 ラインナップが利用できない場合は、あなたのユーザー名、パスワード、および郵便番号が正しいことを確認してください。", + "ErrorSavingTvProvider": "TV プロバイダの保存中にエラーが発生しました。 アクセス可能であることを確認して、もう一度やり直してください。", + "EveryNDays": "{0}日ごと", + "ExitFullscreen": "フルスクリーンを終了する", + "ExtraLarge": "特大", + "ExtractChapterImagesHelp": "チャプタ画像を抽出すると、Jellyfin アプリケーションはグラフィカルシーン選択メニューを表示できます。 このプロセスは遅く、CPUに負荷がかかり、数ギガバイトのスペースが必要になる場合があります。 動画が発見されたときに実行され、夜間のスケジュールされたタスクとしても実行されます。 スケジュールは、スケジュール済みタスク領域で構成可能です。 ピーク時にこのタスクを実行することはお勧めできません。", + "Extras": "エクストラ", + "FFmpegSavePathNotFound": "入力されたパスからFFmpegを見つけることができませんでした。 FFprobeも必須であり、同じフォルダーに存在しなければなりません。 これらのコンポーネントは通常、同じダウンロードにまとめられています。 パスを確認してもう一度やり直してください。", + "FastForward": "早送り", + "Favorite": "お気に入り", + "Favorites": "お気に入り", + "Features": "機能", + "File": "ファイル", + "FileNotFound": "ファイルが見つかりませんでした。", + "FileReadCancelled": "ファイルの読み込みをキャンセルしました。", + "FileReadError": "ファイルの読み込み中にエラーが発生しました。", + "Filters": "フィルタ", + "FolderTypeBooks": "ブック", + "FolderTypeMovies": "ムービー", + "FolderTypeMusic": "音楽", + "FolderTypeMusicVideos": "音楽ビデオ", + "FolderTypeTvShows": "テレビ番組", + "FolderTypeUnset": "ミックスコンテンツ", + "Folders": "フォルダー", + "ForAdditionalLiveTvOptions": "その他のLive TV プロバイダーの場合は、[サービス]タブをクリックして利用可能なオプションを確認してください。", + "FormatValue": "フォーマット: {0}", + "Friday": "金曜日", + "Fullscreen": "フルスクリーン", + "General": "全般", + "GenreValue": "ジャンル: {0}", + "Genres": "ジャンル", + "GenresValue": "ジャンル: {0}", + "GroupBySeries": "シリーズグループ", + "GroupVersions": "グループバージョン", + "GuestStar": "ゲストスター", + "Guide": "ガイド", + "GuideProviderLogin": "ログイン", + "GuideProviderSelectListings": "リストを選択", + "H264CrfHelp": "固定レートファクタ(CRF)は、x264エンコーダのデフォルトの品質設定です。 0から51までの値を設定できます。値が小さいほど品質が高くなります(ファイルサイズが大きくなりますが)。 正しい値は18から28の間です。x264のデフォルトは23なので、これを出発点として使用できます。", + "H264EncodingPresetHelp": "パフォーマンスを向上させるには小さい値を、品質を向上させるには大きい値を選択してください。", + "HDPrograms": "HD番組", + "HandledByProxy": "リバースプロキシで処理", + "HardwareAccelerationWarning": "ハードウェアアクセラレーションを有効にすると、環境によっては不安定になる可能性があります。 オペレーティングシステムとビデオドライバが完全に最新であることを確認してください。 これを有効にした後でビデオの再生が困難な場合は、設定を[自動]に戻す必要があります。", + "HeaderAccessSchedule": "アクセススケジュール", + "HeaderAccessScheduleHelp": "アクセススケジュールを作成して、アクセスを特定の時間に制限します。", + "HeaderActiveDevices": "アクティブデバイス", + "HeaderActiveRecordings": "アクティブな録画", + "HeaderActivity": "アクティビティ", + "HeaderAddScheduledTaskTrigger": "トリガーを追加", + "HeaderAddToCollection": "コレクションに追加", + "HeaderAddToPlaylist": "プレイリストに追加", + "HeaderAddUpdateImage": "イメージの追加/更新", + "HeaderAddUser": "ユーザーの追加", + "HeaderAdditionalParts": "追加のパーツ", + "HeaderAdmin": "管理者", + "HeaderAlbumArtists": "アルバムアーティスト", + "HeaderAlbums": "アルバム", + "HeaderAlert": "アラート", + "HeaderAllowMediaDeletionFrom": "メディアの削除を許可", + "HeaderApiKey": "API キー", + "HeaderApiKeys": "API キー", + "HeaderApiKeysHelp": "Jellyfin サーバーと通信するには、外部アプリケーション用ににAPIキーが必要です。 キーはJellyfinアカウントでログインするか、手動でアプリケーションにキーを付与することによって発行されます。", + "HeaderApp": "アプリ", + "HeaderAppearsOn": "表示", + "HeaderAudioBooks": "オーディオブック", + "HeaderAudioLanguages": "音声言語", + "HeaderAudioSettings": "音声設定", + "HeaderAutomaticUpdates": "自動更新", + "HeaderBlockItemsWithNoRating": "評価情報がない、または認識できないアイテムをブロックします。", + "HeaderBooks": "ブック", + "HeaderBranding": "ブランディング", + "HeaderCancelRecording": "録画の停止", + "HeaderCancelSeries": "シリーズをキャンセル", + "HeaderCastAndCrew": "キャスト&クルー", + "HeaderCastCrew": "キャスト&クルー", + "HeaderChannelAccess": "チャンネルアクセス", + "HeaderChannels": "チャンネル", + "HeaderChapterImages": "チャプターイメージ", + "HeaderCodecProfile": "コーデックプロファイル", + "HeaderCodecProfileHelp": "コーデックプロファイルは、特定のコーデックを再生するときのデバイスの制限を示します。 制限が適用される場合、コーデックが直接再生用に設定されていても、メディアはトランスコードされます。", + "HeaderConfigureRemoteAccess": "リモートアクセスの設定", + "HeaderConfirmPluginInstallation": "プラグインのインストールを確認する", + "HeaderConfirmProfileDeletion": "プロファイル削除の確認", + "HeaderConfirmRevokeApiKey": "APIキーの取消", + "HeaderConnectToServer": "サーバーに接続", + "HeaderConnectionFailure": "接続失敗", + "HeaderContainerProfile": "コンテナプロファイル", + "HeaderContainerProfileHelp": "コンテナプロファイルは、特定のフォーマットを再生するときのデバイスの制限を示します。 制限が適用される場合は、フォーマットが直接再生用に設定されていても、メディアはトランスコードされます。", + "HeaderContinueListening": "視聴を続ける", + "HeaderContinueWatching": "視聴を続ける", + "HeaderCustomDlnaProfiles": "カスタムプロファイル", + "HeaderDateIssued": "発行日", + "HeaderDefaultRecordingSettings": "デフォルトの録画設定", + "HeaderDeleteDevice": "デバイスを削除", + "HeaderDeleteItem": "アイテムの削除", + "HeaderDeleteItems": "アイテムの削除", + "HeaderDeleteProvider": "プロバイダの削除", + "HeaderDeleteTaskTrigger": "タスクトリガーの削除", + "HeaderDetectMyDevices": "デバイスを検出する", + "HeaderDeveloperInfo": "デベロッパー情報", + "HeaderDeviceAccess": "デバイスアクセス", + "HeaderDevices": "デバイス", + "HeaderDirectPlayProfile": "ダイレクトプレイ プロファイル", + "HeaderDirectPlayProfileHelp": "ダイレクトプレイプロファイルを追加して、デバイスがどのフォーマットをネイティブに処理できるかを示します。", + "HeaderDisplay": "ディスプレイ", + "HeaderDisplaySettings": "ディスプレイ設定", + "HeaderDownloadSync": "ダウンロード&同期", + "HeaderEasyPinCode": "簡単なPINコード", + "HeaderEditImages": "イメージの編集", + "HeaderEnabledFields": "有効なフィールド", + "HeaderEnabledFieldsHelp": "フィールドをオフにしてロックし、データが変更されないようにします。", + "HeaderEpisodes": "エピソード", + "HeaderError": "エラー", + "HeaderExternalIds": "外部ID:", + "HeaderFavoriteMovies": "お気に入りのムービー", + "HeaderFavoriteShows": "お気に入りの番組", + "HeaderFavoriteEpisodes": "お気に入りのエピソード", + "HeaderFavoriteAlbums": "お気に入りのアルバム", + "HeaderFavoriteArtists": "お気に入りのアーティスト", + "HeaderFavoriteSongs": "お気に入りの曲", + "HeaderFavoriteVideos": "お気に入りのビデオ", + "HeaderFeatureAccess": "機能へのアクセス", + "HeaderFeatures": "機能", + "HeaderFetchImages": "画像を取得する:", + "HeaderFetcherSettings": "フェッチャー設定", + "HeaderFilters": "フィルタ", + "HeaderForKids": "子供向け", + "HeaderForgotPassword": "パスワードを忘れました", + "HeaderFrequentlyPlayed": "よく再生する", + "HeaderGenres": "ジャンル", + "HeaderGuideProviders": "TV番組情報のプロバイダ", + "HeaderHome": "ホーム", + "HeaderHomeSettings": "ホーム設定", + "HeaderHttpHeaders": "httpヘッダー", + "HeaderIdentification": "識別", + "HeaderIdentificationCriteriaHelp": "少なくとも1つの識別基準を入力してください。", + "HeaderIdentificationHeader": "識別ヘッダー", + "HeaderIdentifyItemHelp": "1つ以上の検索基準を入力してください。 検索結果を増やすために基準を削除します。", + "HeaderImageOptions": "イメージオプション", + "HeaderImageSettings": "イメージ設定", + "HeaderInstall": "インストール", + "HeaderItems": "アイテム", + "HeaderKeepRecording": "録画を続ける", + "HeaderKeepSeries": "シリーズを続ける", + "HeaderKodiMetadataHelp": "NFOメタデータを有効または無効にするには、Jellyfinライブラリ設定でライブラリを編集し、メタデータ保存機能セクションを見つけます。", + "HeaderLatestEpisodes": "最新のエピソード", + "HeaderLatestMedia": "最新のメディア", + "HeaderLatestMovies": "最新のムービー", + "HeaderLatestMusic": "最新のミュージック", + "HeaderLatestRecordings": "最新の録画", + "HeaderLibraries": "ライブラリ", + "HeaderLibraryAccess": "ライブラリアクセス", + "HeaderLibraryFolders": "ライブラリフォルダ", + "HeaderLibraryOrder": "ライブラリの順番", + "HeaderLibrarySettings": "ライブラリ設定", + "HeaderLiveTV": "ライブTV", + "HeaderLiveTv": "ライブTV", + "HeaderLiveTvTunerSetup": "ライブTV チューナーのセットアップ", + "HeaderLoginFailure": "ログイン失敗", + "HeaderMedia": "メディア", + "HeaderMediaFolders": "メディアフォルダ", + "HeaderMediaInfo": "メディア情報", + "HeaderMetadataSettings": "メタデータ設定", + "HeaderMovies": "ムービー", + "HeaderMusicQuality": "ミュージックの品質", + "HeaderMusicVideos": "ミュージックビデオ", + "HeaderMyDevice": "マイデバイス", + "HeaderMyMedia": "マイメディア", + "HeaderMyMediaSmall": "マイメディア(small)", + "HeaderNewApiKey": "新規のAPIキー", + "HeaderNewDevices": "新規のデバイス", + "HeaderNextEpisodePlayingInValue": "次のエピソードの再生まで {0}", + "HeaderNextUp": "次", + "HeaderNextVideoPlayingInValue": "次のビデオの再生まで{0}", + "HeaderOnNow": "今", + "HeaderOtherItems": "その他のアイテム", + "HeaderParentalRatings": "ペアレンタルレーティング", + "HeaderPassword": "パスワード", + "HeaderPasswordReset": "パスワードリセット", + "HeaderPaths": "パス", + "HeaderPendingInvitations": "保留中の招待状", + "HeaderPeople": "人", + "HeaderPhotoAlbums": "フォトアルバム", + "HeaderPinCodeReset": "PINコードのリセット", + "HeaderPlayAll": "すべて再生", + "HeaderPlayOn": "ここから再生", + "HeaderPlayback": "メディア再生", + "HeaderPlaybackError": "再生エラー", + "HeaderPlaybackSettings": "再生設定", + "HeaderPleaseSignIn": "サインインしてください", + "HeaderPluginInstallation": "プラグインのインストール", + "HeaderPreferredMetadataLanguage": "優先するメタデータ言語", + "HeaderProfile": "プロファイル", + "HeaderProfileInformation": "プロファイル情報", + "HeaderProfileServerSettingsHelp": "これらの値はJellyfinサーバーがそれ自体をデバイスに提示する方法を制御します。", + "HeaderRecentlyPlayed": "最近再生した", + "HeaderRecordingOptions": "録画設定", + "HeaderRecordingPostProcessing": "録画後の処理", + "HeaderRemoteControl": "リモートコントロール", + "HeaderRemoveMediaFolder": "メディアフォルダの削除", + "HeaderRemoveMediaLocation": "メディアロケーションの削除", + "HeaderResponseProfile": "レスポンスプロファイル", + "HeaderResponseProfileHelp": "レスポンスプロファイルは、特定の種類のメディアを再生するときにデバイスに送信される情報をカスタマイズする方法を提供します。", + "HeaderRestart": "リスタート", + "HeaderRestartingServer": "サーバーの再起動", + "HeaderRevisionHistory": "更新履歴", + "HeaderRunningTasks": "実行中のタスク", + "HeaderScenes": "シーン", + "HeaderSchedule": "スケジュール", + "HeaderSeasons": "シーズン", + "HeaderSecondsValue": "{0} 秒", + "HeaderSelectCertificatePath": "証明書のパスを選択", + "HeaderSelectMetadataPath": "メタデータのパスを選択", + "HeaderSelectMetadataPathHelp": "メタデータを保存するパスを参照または入力します。 フォルダは書き込み可能でなければなりません。", + "HeaderSelectPath": "パスの選択", + "HeaderSelectServer": "サーバーの選択", + "HeaderSelectServerCachePath": "サーバーキャッシュのパスを選択", + "HeaderSelectServerCachePathHelp": "サーバーキャッシュファイルに使用するパスを参照または入力します。 フォルダは書き込み可能でなければなりません。", + "HeaderSelectTranscodingPath": "トランスコーディング用の一時パスの選択", + "HeaderSelectTranscodingPathHelp": "一時ファイルのトランスコードに使用するパスを参照または入力します。 フォルダは書き込み可能でなければなりません。", + "HeaderSendMessage": "メッセージの送信", + "HeaderSeries": "シリーズ", + "HeaderSeriesOptions": "シリーズオプション", + "HeaderSeriesStatus": "シリーズの状態", + "HeaderServerSettings": "サーバー設定", + "HeaderSettings": "設定", + "HeaderSetupLibrary": "メディアライブラリを設定する", + "HeaderShutdown": "シャットダウン", + "HeaderSortBy": "ソート", + "HeaderSortOrder": "ソート順", + "HeaderSpecialEpisodeInfo": "スペシャルエピソード情報", + "HeaderSpecialFeatures": "特別な機能", + "HeaderStartNow": "今すぐ始める", + "HeaderStatus": "状態", + "HeaderStopRecording": "録画停止", + "HeaderSubtitleAppearance": "字幕の外観", + "HeaderSubtitleDownloads": "字幕のダウンロード", + "HeaderSubtitleProfile": "字幕のプロファイル", + "HeaderSubtitleProfiles": "字幕のプロファイル", + "HeaderSubtitleProfilesHelp": "字幕プロファイルは、デバイスでサポートされている字幕フォーマットを表します。", + "HeaderSubtitleSettings": "字幕設定", + "HeaderSystemDlnaProfiles": "システムプロファイル", + "HeaderTags": "タグ", + "HeaderTaskTriggers": "タスクトリガー", + "HeaderThisUserIsCurrentlyDisabled": "このユーザーは現在無効になっています", + "HeaderTracks": "トラック", + "HeaderTranscodingProfile": "トランスコーディングプロファイル", + "HeaderTranscodingProfileHelp": "トランスコーディングが必要なときにどのフォーマットを使用するかを示すために、トランスコーディングプロファイルを追加します。", + "HeaderTunerDevices": "チューナーデバイス", + "HeaderTuners": "チューナー", + "HeaderTypeImageFetchers": "{0} 件のイメージを取得", + "HeaderTypeText": "テキストを入力", + "HeaderUpcomingOnTV": "今後追加されるTV", + "HeaderUploadImage": "イメージのアップロード", + "HeaderUploadNewImage": "新規のイメージをアップロード", + "HeaderUser": "ユーザー", + "HeaderUsers": "ユーザー", + "HeaderVideoQuality": "ビデオ品質", + "HeaderVideoType": "ビデオタイプ", + "HeaderVideoTypes": "ビデオタイプ", + "HeaderVideos": "ビデオ", + "HeaderXmlSettings": "XML設定", + "HeaderYears": "年", + "HeadersFolders": "フォルダ", + "Help": "ヘルプ", + "Hide": "隠す", + "Movies": "ムービー", + "Photos": "フォト", + "Playlists": "プレイリスト", + "Shows": "番組", + "Songs": "曲", + "Sync": "同期", + "ValueSpecialEpisodeName": "スペシャル - {0}" +} diff --git a/src/strings/kk.json b/src/strings/kk.json index 8054287cea..2ffcf68b47 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -9,7 +9,6 @@ "AddToPlaylist": "Oınatý tizimine ústeý", "AddedOnValue": "Ústelgeni {0}", "AdditionalNotificationServices": "Qosymsha habarlandyrý qyzmetterin ornatý úshin plagınder tizimdemesin sholyńyz.", - "Advanced": "Keńeıtilgen", "AirDate": "Efır kúni", "Aired": "Efırlik", "Albums": "Álbomdar", @@ -182,7 +181,7 @@ "DeleteMedia": "Tasyǵyshderekti joıý", "DeleteUser": "Paıdalanýshyny alastaý", "DeleteUserConfirmation": "Shynymen osy paıdalanýshyny joıý qajet pe?", - "Depressed": "Tómen túsirilgen", + "Depressed": "Batyq", "Descending": "Kemýi boıynsha", "Desktop": "Jumys ústeli", "DetectingDevices": "Qurylǵylardy tabýda", @@ -234,7 +233,7 @@ "EnableThemeVideos": "Taqyryptyq beınelerdi qosý", "EnableThemeVideosHelp": "Qosylǵanda, tasyǵyshhanany sholý kezinde taqyryptyq beıneler óńde oınatylady.", "Ended": "Aıaqtaldy", - "EndsAtValue": "Aıaqtalýy: {0}", + "EndsAtValue": "Sońy: {0}", "Episodes": "Bólimder", "ErrorAddingListingsToSchedulesDirect": "Schedules Direct tirkelgińizge tizbek ústeý kezinde qate oryn aldy. Schedules Direct tirkelgisinde tizbekterdiń tek qana shekteýli sany rýqsat etiledi. Oryndamas buryn Schedules Direct saıtyna kirip jáne tirkelgiden basqa tizbelerdi alastaý qajet bolýy múmkin.", "ErrorAddingMediaPathToVirtualFolder": "Tasyǵyshderekter jolyn ústegen kezinde qate oryn aldy. Jol durys ekenine jáne Jellyfin Server prosesi osy jaıǵasymǵa qatynaıtyna kóz jetkizińiz.", @@ -242,7 +241,7 @@ "ErrorAddingXmlTvFile": "XmlTV faılyna qatynaý kezinde qate oryn aldy. Faıl bar bolýyna kóz jetkizińiz de áreketti qaıtalańyz.", "ErrorDeletingItem": "Jellyfin Server elementin joıý kezinde qate oryn aldy. Jellyfin Server tasyǵysh qaltasyna jazýǵa ruqsaty bar ekenin tekserip, qaıtalap kórińiz.", "ErrorGettingTvLineups": "TD kezekterin júktep alý kezinde qate oryn aldy. Málimetterińiz durys ekenine kóz jetkizińiz de áreketti qaıtalańyz.", - "ErrorMessageStartHourGreaterThanEnd": "Aıaqtaý ýaqyty bastaý ýaqytynan keıinrek bolýy qajet etedi.", + "ErrorMessageStartHourGreaterThanEnd": "Aıaqtalý ýaqyty bastaý ýaqytynan keıinrek bolýy qajet etedi.", "ErrorPleaseSelectLineup": "Tizbekti tańdańyz jáne áreketti qaıtalańyz. Eger eshqandaı tizbek qoljetimdi bolmasa, onda paıdalanýshy atyńyzdy, parólińizdi jáne poshta kodyn durys ekenin tekserińiz.", "ErrorSavingTvProvider": "TD jetkizýshisin saqtaý kezinde qate oryn aldy. Bul qatynaýly ekenine kóz jetkizińiz de áreketti qaıtalańyz.", "EveryNDays": "{0} kún saıyn", @@ -318,8 +317,8 @@ "HeaderCameraUploadHelp": "Utqyr qurylǵylaryńyzda túsirilgen fotosýretterdi Jellyfin qoldanbalary avtomatty Jellyfin Server ishine júktep salý múmkin.", "HeaderCancelRecording": "Jazýdy boldyrmaý", "HeaderCancelSeries": "Telehıkaıany boldyrmaý", - "HeaderCastAndCrew": "Somdaýshylar men túsirýshiler", - "HeaderCastCrew": "Somdaýshylar men túsirýshiler", + "HeaderCastAndCrew": "Róldegiler men qyzmetkerler", + "HeaderCastCrew": "Róldegiler men qyzmetkerler", "HeaderChannelAccess": "Arnaǵa qatynaý", "HeaderChannels": "Arnalar", "HeaderChapterImages": "Sahna sýretteri", @@ -522,7 +521,7 @@ "Label3DFormat": "3D pishimi:", "LabelAbortedByServerShutdown": "(Server jumysty aıaqtaý sebebinen toqtatyldy)", "LabelAccessDay": "Apta kúni:", - "LabelAccessEnd": "Aıaqtaý ýaqyty:", + "LabelAccessEnd": "Aıaqtalý ýaqyty:", "LabelAccessStart": "Bastaý ýaqyty:", "LabelAirDays": "Efır kúnderi:", "LabelAirTime": "Efır ýaqyty:", @@ -636,8 +635,6 @@ "LabelExtractChaptersDuringLibraryScan": "Sahna sýretterin tasyǵyshhanany skanerleý mezgilinde shyǵaryp alý", "LabelExtractChaptersDuringLibraryScanHelp": "Qosylǵanda, sahna sýretteri tasyǵyshhanany skanerleý mezgilinde, beıneler sheten ákelingende, bólinip alynady. Ajyratylǵanda, bular sahna sýretterine josparlaǵan tapsyrmasy mezgilinde, turaqty tasyǵyshhanany skanerleýin jyldamyraq aıaqtalýy ushin ruqsat etip, bólinip alynady.", "LabelFailed": "Sátsiz", - "LabelFanartApiKey": "Ózindik API-kilt:", - "LabelFanartApiKeyHelp": "Ózindik API-kiltisiz Fanart úshin jiberilgen saýaldarǵa 7 kúninen buryn rastalǵan sýretter qaıtarylady. Ózindik API-kiltimen bul 48 saǵatqa deıin qysqartylady, al,sondaı-aq, Fanart VIP-múshesi bolsańyz, bul shamamen 10 mınótke deıin taǵy da qysqartylady.", "LabelFileOrUrl": "Faıl nemese URL:", "LabelFinish": "Aıaqtaý", "LabelFont": "Qarip:", @@ -711,8 +708,8 @@ "LabelMetadataSaversHelp": "Metaderekterdi qaıda saqtaıtyn faıl pishimderin tańdaý.", "LabelMethod": "Ádis:", "LabelMinBackdropDownloadWidth": "Artqy sýrettiń júktep alynatyn eń az eni:", - "LabelMinResumeDuration": "Jalǵastyrý úshin eń az uzaqtyǵy (sekýnd):", - "LabelMinResumeDurationHelp": "Budan qysqa týyndylar jalǵastyrylmaıdy", + "LabelMinResumeDuration": "Jalǵastyrý úshin eń az uzaqtyǵy:", + "LabelMinResumeDurationHelp": "Oınatý orny saqtalatyn jáne jalǵastyrýǵa múmkindik beretin sekýndtar arqyly eń qysqa beıne uzyndyǵy", "LabelMinResumePercentage": "Jalǵastyrý úshin eń az paıyzy:", "LabelMinResumePercentageHelp": "Bul kezden buryn toqtatylsa týyndylar oınatylmaǵan dep boljaldy", "LabelMinScreenshotDownloadWidth": "Júktep alý úshin eń az skrınshot eni:", @@ -1076,7 +1073,7 @@ "OptionDownloadMenuImage": "Mázir", "OptionDownloadPrimaryImage": "Negizgi", "OptionDownloadThumbImage": "Nobaı", - "OptionDvd": "", + "OptionDvd": "DVD", "OptionEmbedSubtitles": "Konteınermen endirýli", "OptionEnableAccessFromAllDevices": "Barlyq qurylǵylardan qatynaýdy qosý", "OptionEnableAccessToAllChannels": "Barlyq arnalarǵa qatynaýdy qosý", @@ -1129,7 +1126,7 @@ "OptionProfileVideo": "Beıne", "OptionProfileVideoAudio": "Beıne Dybys", "OptionProtocolHls": "HTTP Тікелей Тасымалдау", - "OptionProtocolHttp": "", + "OptionProtocolHttp": "HTTP", "OptionRegex": "Udaıy órnek", "OptionReleaseDate": "Shyǵarý kúni", "OptionReportByteRangeSeekingWhenTranscoding": "Qaıta kodtaý kezinde server baıt irikteýin qoldasa baıandaý", @@ -1199,7 +1196,7 @@ "Programs": "Kórsetimder", "Quality": "Sapasy", "QueueAllFromHere": "Bul aradan bárin kezekke", - "Raised": "Kóterilgen", + "Raised": "Dónesti", "Rate": "Baǵalaý", "RecentlyWatched": "Jýyqta qaralǵan", "RecommendationBecauseYouLike": "Óıtkeni {0} jarattyńyz", @@ -1311,11 +1308,9 @@ "TabDirectPlay": "Tikeleı oınatý", "TabDisplay": "Beıneleý", "TabEpisodes": "TD-bólimder", - "TabExpert": "Sarapshylyq", "TabFavorites": "Tańdaýlylar", "TabGenres": "Janrlar", "TabGuide": "Telegıd", - "TabHosting": "Ornalasý", "TabInfo": "Profaıl týraly", "TabLatest": "Eń keıingi", "TabLibrary": "Tasyǵyshhana", @@ -1340,9 +1335,8 @@ "TabProfiles": "Profaıldar", "TabRecordings": "Jazbalar", "TabResponses": "Ún qatýlar", - "TabResumeSettings": "Jalǵastyrý parametrleri", + "TabResumeSettings": "Jalǵastyrý", "TabScheduledTasks": "Josparlaýshy", - "TabSecurity": "Qaýipsizdik", "TabSeries": "Telehıkaıalar", "TabServer": "Server", "TabSettings": "Parametrler", @@ -1417,7 +1411,7 @@ "WelcomeToProject": "Jellyfin úshin qosh keldińiz!", "Whitelist": "Aq tizim", "WizardCompleted": "Ázirshe bul bizge kereginiń bári bolyp tabylady. Jellyfin tasyǵyshhanańyz týraly málimetterdi jınaı bastady. Endi keıbir bizdiń qoldanbalarymyzben tanysyńyz, jáne keıin Aıaqtaý túımeshigin basyńyz, sonda Server taqtasy qaraýǵa shyǵa keledi.", - "Writer": "Ssenarııshi", + "Writer": "Senarıshy", "XmlDocumentAttributeListHelp": "Osy tólsıpattar árbir XML ún qatýlardyń túbir elementi úshin qoldanylady.", "XmlTvKidsCategoriesHelp": "Osy sanattaǵy baǵdarlamalar balalyq baǵdarlamary retinde beınelenedi. Birneshýin '|' arqyly bólińiz.", "XmlTvMovieCategoriesHelp": "Osy sanattaǵy baǵdarlamalar fılmder retinde beınelenedi. Birneshýin '|' arqyly bólińiz.", @@ -1432,5 +1426,56 @@ "LeaveBlankToNotSetAPassword": "Mindetti emes - bos qaldyrsańyz, paról paıdalanylmaıdy", "MessageImageFileTypeAllowed": "Tek qana JPEG jáne PNG faıldary qoldaýda.", "MessageImageTypeNotSelected": "Sýret túrin ashylmaly mázirden tandańyz.", - "OptionResElement": "res elementi" + "OptionResElement": "res elementi", + "AuthProviderHelp": "Osy paıdalanýshynyń parólin rastaý úshin paıdalanylatyn túpnusqalyq rastama jetkizýshisin bólekteńiz", + "HeaderFavoriteMovies": "Tańdaýly fılmder", + "HeaderFavoriteShows": "Tańdaýly kórsetimder", + "HeaderFavoriteEpisodes": "Tańdaýly bólimder", + "HeaderFavoriteAlbums": "Tańdaýly álbomdar", + "HeaderFavoriteArtists": "Tańdaýly oryndaýshylar", + "HeaderFavoriteSongs": "Tańdaýly áýender", + "HeaderFavoriteVideos": "Tandaýly beıneler", + "HeaderHome": "Basqy", + "HeaderHomeSettings": "Basqy ekran parametrleri", + "HeaderRestartingServer": "Serverdi qaıta iske qosý", + "LabelAuthProvider": "Túpnusqalyq rastamasyn jetkizýshi:", + "LabelPasswordResetProvider": "Paróldi ysyrý jetkizýshisi:", + "LabelServerName": "Server aty:", + "LabelTranscodePath": "Qaıta kodtaý joly:", + "LabelTranscodes": "Qaıta kodtaýlar:", + "LabelUserLoginAttemptsBeforeLockout": "Paıdalanýshy qulyptalmas buryn kirý áreketteri sátsiz aıaqtaldy:", + "DashboardVersionNumber": "Nusqa: {0}", + "DashboardServerName": "Server: {0}", + "DashboardOperatingSystem": "Operasıalyq júıe: {0}", + "DashboardArchitecture": "Arhıtektýrasy: {0}", + "LabelWeb": "Ýeb: ", + "LaunchWebAppOnStartup": "Jellyfin serveri iske qosylǵan kezde ýeb-sholǵyshta Jellyfin veb-qoldanbasyn iske qosý", + "LaunchWebAppOnStartupHelp": "Jellyfin serveri bastapqyda iske qosylǵan kezde, ol ýeb-qoldanbany ádepki ýeb-sholǵyshta ashady. 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", + "MediaInfoStreamTypeSubtitle": "Sýbtıtrler", + "MediaInfoStreamTypeVideo": "Beıne", + "MessageNoCollectionsAvailable": "Jıyntyqtar fılmder, telehıkaıalar jáne álbomdar derbestendirilgen toptarymen rahattanýǵa múmkindik beredi. Jıyntyq jasaýyn bastaý úshin + túımeshigin basyńyz.", + "MessageNoServersAvailable": "Serverdi avtomatty tabý arqyly eshqandaı server tabylmady.", + "MusicAlbum": "Mýzykalyq álbom", + "MusicArtist": "Mýzyka oryndaýshysy", + "MusicVideo": "Mýzykalyq beıne", + "Option3D": "3D", + "OptionBanner": "Baner", + "OptionCaptionInfoExSamsung": "CaptionInfoEx [Samsung]", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionList": "Tizim", + "OptionLoginAttemptsBeforeLockout": "Qulyptalǵansha deıin qansha durys emes kirý áreketi jasalýy múmkin ekendigin anyqtaıdy.", + "OptionLoginAttemptsBeforeLockoutHelp": "0 ádepkini ıelenýdi bildiredi, 3 ákimshi emes úshin, jáne 5 ákimshi úshin, -1 qulyptaýdy óshiredi", + "OptionPoster": "Póster", + "OptionPosterCard": "Poster-karta", + "OptionThumb": "Nobaı", + "OptionThumbCard": "Nobaı-karta", + "PasswordResetProviderHelp": "Bul paıdalanýshy paróldi ysyrý saýalyn jibergen kezde paıdalanylatyn paróldi ysyrý jetkizýshisin tańdańyz", + "PlaybackData": "Oınatý derekteri", + "SubtitleOffset": "Sýbtıtrler yǵysýy", + "TabNetworking": "Jelilik jumys" } diff --git a/src/strings/ko.json b/src/strings/ko.json index afa748c8af..3603fdf85b 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -341,7 +341,6 @@ "LabelExtractChaptersDuringLibraryScan": "라이브러리를 검색할 때 챕터 이미지 추출", "LabelExtractChaptersDuringLibraryScanHelp": "이 옵션을 켜면 라이브러리를 검색하여 비디오를 가져올 때 챕터 이미지를 추출합니다. 옵션을 끄면 예약 작업을 통해 정기적으로 라이브러리를 검색할 때 추출합니다.", "LabelFailed": "실패", - "LabelFanartApiKey": "개인 API 키:", "LabelFinish": "끝내기", "LabelForgotPasswordUsernameHelp": "기억하고 있다면, 사용자명을 입력하세요.", "LabelFormat": "형식:", @@ -718,7 +717,6 @@ "TabFavorites": "즐겨찾기", "TabGenres": "장르", "TabGuide": "가이드", - "TabHosting": "호스팅", "TabInfo": "정보", "TabLatest": "최근", "TabLibrary": "라이브러리", @@ -743,7 +741,6 @@ "TabRecordings": "녹화", "TabResponses": "회신", "TabScheduledTasks": "예약 작업", - "TabSecurity": "보안", "TabSeries": "시리즈", "TabServer": "서버", "TabSettings": "설정", @@ -794,5 +791,63 @@ "Wednesday": "수요일", "WelcomeToProject": "Jellyfin에 오신 것을 환영합니다!", "WizardCompleted": "지금 필요한 것은 이것이 전부입니다. Jellyfin가 귀하의 미디어 라이브러리 정보를 모으기 시작했습니다. 우리의 다른 앱을 확인해 보세요. 서버 대시보드를 보려면 끝내기를 클릭하세요.", - "Writer": "작가" + "Writer": "작가", + "Albums": "앨범", + "Artists": "아티스트", + "Books": "책", + "Channels": "채널", + "Collections": "컬렉션", + "Favorites": "즐겨찾기", + "Folders": "폴더", + "Genres": "장르", + "HeaderAlbumArtists": "앨범 아티스트", + "HeaderFavoriteShows": "즐겨찾는 쇼", + "HeaderFavoriteEpisodes": "좋아하는 에피소드", + "HeaderFavoriteAlbums": "좋아하는 앨범", + "HeaderFavoriteArtists": "좋아하는 아티스트", + "HeaderFavoriteSongs": "좋아하는 노래", + "Movies": "영화", + "Photos": "사진", + "Playlists": "재생목록", + "Shows": "프로그램", + "Songs": "노래", + "Sync": "동기화", + "AddItemToCollectionHelp": "항목을 컬렉션에 추가하려면 검색한 뒤 우클릭이나 탭 매뉴를 이용하여 주십시오.", + "AddToCollection": "컬렉션에 추가", + "AddToPlayQueue": "재생 대기열에 추가", + "AddedOnValue": "{0}을(를) 추가함", + "AirDate": "방영 일자", + "Aired": "방영됨", + "Alerts": "경고", + "AllComplexFormats": "모든 복잡한 포맷 (ASS, SSA, VOBSUB, PGS, SUB/IDX 등)", + "AllLibraries": "모든 라이브러리", + "AllowMediaConversion": "미디어 변환 허용", + "AllowOnTheFlySubtitleExtraction": "스트리밍 시 자막 추출 허용", + "AllowOnTheFlySubtitleExtractionHelp": "비디오 트랜스코딩을 방지하기 위해 내장된 자막을 비디오에서 추출하여 텍스트로 Jellyfin 앱에 전송할 수 있습니다. 다만, 당 과정은 일부 시스템에서 긴 시간을 소요할 수 있으며 멈출 가능성도 존재합니다. 클라이언트에서 트랜스코딩을 사용할 수 없는 경우 이 기능을 비활성화하여 트랜스코딩 시 자막을 비디오에 삽입하십시오.", + "AllowRemoteAccess": "본 Jellyfin 서버에 원격 접속을 허용합니다.", + "AllowRemoteAccessHelp": "체크 해제 시 모든 외부 접속은 차단됩니다.", + "AllowedRemoteAddressesHelp": "외부 접속을 허용할 IP 혹은 IP 넷마스크를 반점(,)으로 구분하여 입력하십시오. 공란으로 남길 시 모든 외부 접속이 허용됩니다.", + "AlwaysPlaySubtitles": "항상 자막 표시", + "AlwaysPlaySubtitlesHelp": "오디오 언어를 불문하고 언어 설정에 적합한 자막이 로드됩니다.", + "AnyLanguage": "모든 언어", + "AroundTime": "대략 {0}", + "Art": "아트", + "AsManyAsPossible": "최대한 많이", + "Ascending": "오름차순", + "AspectRatio": "종횡비", + "AuthProviderHelp": "본 이용자의 비밀번호를 인증할 때 사용할 인증 서비스 제공자를 선택하십시오", + "Auto": "자동", + "AutoBasedOnLanguageSetting": "자동 (언어 설정에 따름)", + "Backdrop": "배경", + "Banner": "배너", + "BookLibraryHelp": "오디오 혹은 텍스트 책이 지원됩니다. {0}Jellyfin 책 작명 가이드{1}를 참고해 주십시오.", + "Box": "박스", + "Browse": "탐색", + "ButtonEditImages": "이미지 편집", + "ButtonFullscreen": "전체 화면", + "HeaderEpisodes": "에피소드", + "HeaderExternalIds": "외부 ID:", + "HeaderFavoriteMovies": "즐겨찾는 영화", + "HeaderFavoriteVideos": "즐겨찾는 동영상", + "LabelDropImageHere": "이미지를 여기 드롭하거나 클릭하여 찾아보십시오." } diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index fef531f22b..b7d6154f05 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -4,7 +4,6 @@ "AddToCollection": "Pridėti į kolekciją", "AddToPlaylist": "Pridėti į grojaraštį", "AdditionalNotificationServices": "Naršykite įskiepių katalogą ir įsidiekite papildomų pranešimų paslaugų.", - "Advanced": "Smulkiau", "AllChannels": "Visi kanalai", "AllEpisodes": "Visas serijas", "Anytime": "Bet kada", @@ -209,8 +208,6 @@ "LabelEveryXMinutes": "Kas:", "LabelExternalDDNS": "Išorinis domenas:", "LabelFailed": "Nepavyko", - "LabelFanartApiKey": "Asmeninis api raktas:", - "LabelFanartApiKeyHelp": "Fanų meno užklausos be asmeninio API rakto pateiks paveikslus, kurie buvo patvirtinti seniau nei prieš 7 dienas. Su asmeniniu API raktu šis laikas sumažėja iki 48 valandų, o jei esate fanų meno VIP narys, šis laikas dar sumažės iki maždaug 10 minučių.", "LabelFinish": "Baigti", "LabelFriendlyName": "Draugiškas pavadinimas:", "LabelServerNameHelp": "Šis pavadinimas bus naudojamas serverio identifikavimui. Palikus tuščią bus naudojamas kompiuterio pavadinimas.", @@ -502,7 +499,6 @@ "TabProfile": "Profilis", "TabProfiles": "Profiliai", "TabRecordings": "Įrašai", - "TabSecurity": "Saugumas", "TabSeries": "Laidos", "TabServer": "Serveris", "TabSettings": "Nustatymai", @@ -541,7 +537,7 @@ "WelcomeToProject": "Sveiki atvykę į Jellyfin!", "WizardCompleted": "Kol kas to užteks. Jellyfin pradėjo rinkti duomenis apie Jūsų medijos biblioteką. Peržiūrėkite programėles, o po to spauskite Baigti ir perkelsime jus į Serverio skydelį.", "Writer": "Rašytojas", - "AccessRestrictedTryAgainLater": "Prieiga šiuo metu yra apribota. Bandykite vėliau", + "AccessRestrictedTryAgainLater": "Prieiga šiuo metu yra apribota. Bandykite vėliau.", "Albums": "Albumai", "Alerts": "Perspėjimai", "All": "Visi", @@ -617,5 +613,40 @@ "Folders": "Katalogai", "HeaderAlbumArtists": "Albumo atlikėjai", "HeaderFavoriteAlbums": "Mėgstami Albumai", - "HeaderFavoriteArtists": "Mėgstami Atlikėjai" + "HeaderFavoriteArtists": "Mėgstami Atlikėjai", + "AddedOnValue": "Pridėtas {0}", + "AirDate": "Išleidimo data", + "Aired": "Išleista", + "AllowOnTheFlySubtitleExtraction": "Leisti subtitrų ištraukimą grojimo metu", + "AlwaysPlaySubtitlesHelp": "Subtitrai atitinkantys kalbos parinktį bus visada užkraunami nepaisant garso takelio kalbos.", + "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}Jellyfin knygų vardinimo gidą{1}.", + "ButtonEditOtherUserPreferences": "Keisti šio vartotojo profilį, paveikslą ir asmeninius nustatymus.", + "ButtonResetEasyPassword": "Atstatyti pin kodą", + "ButtonShuffle": "Sumaišyti", + "ColorPrimaries": "Pirminės spalvos", + "ConfirmEndPlayerSession": "Ar norite išjungti Jellyfin ant {0}?", + "Descending": "Mažėjančia tvarka", + "DetectingDevices": "Iėškoma įrenginių", + "DirectorValue": "Režisierius: {0}", + "DirectorsValue": "Režisieriai: {0}", + "Disabled": "Išjungtas", + "Disc": "Diskas", + "Disconnect": "Atsijungti", + "DisplayInMyMedia": "Rodyti pradiniame ekrane", + "DisplayMissingEpisodesWithinSeasons": "Rodyti trūkstamus episodus sezonuose", + "DisplayModeHelp": "Pasirinkite ekrano tipą ant kurio veikia Jellyfin.", + "Down": "Žemyn", + "DownloadsValue": "{0} atsisiuntimų", + "DrmChannelsNotImported": "Kanalai su DRM nebus importuojami.", + "EasyPasswordHelp": "Pin kodas yra naudojamas lokaliame tinkle su palaikomom Jellyfin programomis.", + "EditMetadata": "Keisti metaduomenis", + "EnableNextVideoInfoOverlay": "Rodyti informacija apie sekantį vaizdo įrašą grojimo metu", + "EnableNextVideoInfoOverlayHelp": "Vaizo įrašo pabaigoje rodyti informacija apie sekantį vaizdo įrašą, esantį grojaraštyje.", + "EnablePhotos": "Rodyti nuotraukas", + "EnablePhotosHelp": "Nuotraukos bus rodomos šalia kitų medijos failų.", + "EnableThemeSongs": "Groti temines dainas" } diff --git a/src/strings/ms.json b/src/strings/ms.json index 6d6d05b58b..018b767a2b 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -35,7 +35,6 @@ "AllowOnTheFlySubtitleExtractionHelp": "Sarikata-sarikata yang sedia ada dapat diekstrak dari video-video dan dihantar ke aplikasi Jellyfin dalam teks biasa. Ini untuk menghindari video daripada transkoding. Pada sistem-sistem lain, ia dapat mengambil masa panjang dan menyebabkan video main balik terhenti semasa proses pengekstrakan. Ciri ini dapat dimatikan supaya sarikata yang sedia ada akan dibakar bersama video transkoding, jika ianya tidak disokong secara asal oleh peranti klien.", "AllowRemoteAccess": "Membenarkan persambungan jauh ke pelayan Jellyfin ini.", "AllowRemoteAccessHelp": "Jika tidak disemak, semua persambungan jauh akan disekat.", - "Advanced": "Carian terperinci", "AllowHWTranscodingHelp": "Jika diaktifkan, penala dibolehkan untuk transkod strim dengan serta-merta. Ini dapat bantu mengurangkan transkoding yang diperlukan dari pelayan Jellyfin.", "AlwaysPlaySubtitles": "Sentiasa main sarikata", "AlwaysPlaySubtitlesHelp": "Sarikata sepadan dengan bahasa yang dipilih akan masih dimuatkan tanpa mengira bahasa audio.", diff --git a/src/strings/nb.json b/src/strings/nb.json index c60a652548..455952c0ce 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -8,7 +8,6 @@ "AddToPlaylist": "Legg til spilleliste", "AddedOnValue": "Lagt til {0}", "AdditionalNotificationServices": "Bla gjennom katalogen over programtillegg for å installere valgfrie varslingstjenester.", - "Advanced": "Avansert", "Aired": "Sendt tidligere", "Albums": "Album", "Alerts": "Varsler", @@ -488,7 +487,6 @@ "LabelExtractChaptersDuringLibraryScan": "Hent ut kapittel bilder under bibliotek skann", "LabelExtractChaptersDuringLibraryScanHelp": "Hvis aktivert, vil kapittel bilder bli hentet ut mens videoer importeres under bibliotek skanning.\nHvis deaktivert, vil de bli hentet ut under planlagte oppgaver for kapittel bilder, som medfører at vanlig bibliotek skanning blir fortere ferdig.", "LabelFailed": "Feilet", - "LabelFanartApiKey": "Personlig API-nøkkel:", "LabelFileOrUrl": "Fil eller URL:", "LabelFinish": "Slutt", "LabelForgotPasswordUsernameHelp": "Skriv inn ditt brukernavn, hvis du husker det.", @@ -1022,10 +1020,8 @@ "TabDirectPlay": "Direkte Avspill", "TabDisplay": "Skjerm", "TabEpisodes": "Episoder", - "TabExpert": "Ekspert", "TabFavorites": "Favoritter", "TabGenres": "Sjangre", - "TabHosting": "Hoster", "TabLatest": "Siste", "TabLibrary": "Bibliotek", "TabLogs": "Logger", @@ -1049,7 +1045,6 @@ "TabResponses": "Svar", "TabResumeSettings": "Resume innstillinger.", "TabScheduledTasks": "Planlagte Oppgaver", - "TabSecurity": "Sikkerhet", "TabSeries": "Serier", "TabSettings": "Innstillinger", "TabShows": "Show", diff --git a/src/strings/nl.json b/src/strings/nl.json index 474d3d0ff3..829da15b67 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -9,7 +9,6 @@ "AddToPlaylist": "Toevoegen aan afspeellijst", "AddedOnValue": "Toegevoegd {0}", "AdditionalNotificationServices": "Blader door de Plug-in catalogus om aanvullende meldingsdiensten te installeren.", - "Advanced": "Geavanceerd", "AirDate": "Uitzenddatum", "Aired": "Uitgezonden", "Alerts": "Meldingen", @@ -582,8 +581,6 @@ "LabelExtractChaptersDuringLibraryScan": "Hoofdstuk afbeeldingen uitpakken tijdens het scannen van de bibliotheek", "LabelExtractChaptersDuringLibraryScanHelp": "Wanneer ingeschakeld worden hoofdstuk afbeeldingen uitgepakt wanneer video's worden geïmporteerd tijdens het scannen van de bibliotheek. Wanneer uitgeschakeld worden de hoofdstuk afbeeldingen uitgepakt tijdens de geplande taak \"Hoofdstukken uitpakken\", waardoor de standaard bibliotheek scan sneller voltooid is.", "LabelFailed": "Mislukt", - "LabelFanartApiKey": "Persoonlijke api sleutel:", - "LabelFanartApiKeyHelp": "Verzoeken voor fanart zonder persoonlijk API-sleutel resulteren in afbeeldingen die langer dan 7 dagen geleden zijn goedgekeurd. Met een persoonlijke API-sleutel daalt het tot 48 uur en als je ook een fanart VIP-lid bent, dan zal het verder dalen tot ongeveer 10 minuten.", "LabelFileOrUrl": "Bstand of URL:", "LabelFinish": "Voltooien", "LabelFont": "Lettertype:", @@ -1206,7 +1203,6 @@ "TabResponses": "Reacties", "TabResumeSettings": "Instellingen voor hervatten", "TabScheduledTasks": "Geplande taken", - "TabSecurity": "Beveiliging", "TabSeries": "Serie", "TabSettings": "Instellingen", "TabShows": "Series", diff --git a/src/strings/pl.json b/src/strings/pl.json index a761d5cb94..8762dddf42 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -9,7 +9,6 @@ "AddToPlaylist": "Dodaj do listy", "AddedOnValue": "Dodano {0}", "AdditionalNotificationServices": "Przeglądaj katalog wtyczek, aby zainstalować dodatkowe usługi powiadomień.", - "Advanced": "Zaawansowane", "AirDate": "Data emisji", "Aired": "Premiera", "Albums": "Albumy", @@ -446,7 +445,7 @@ "HeaderSelectTranscodingPath": "Wybierz folder tymczasowy transkodowania", "HeaderSelectTranscodingPathHelp": "Przeglądaj lub wprowadź folder plików tymczasowych transkodowania. Folder musi umożliwiać zapis plików.", "HeaderSendMessage": "Wyślij wiadomość", - "HeaderSeries": "Seriale:", + "HeaderSeries": "Seriale", "HeaderSeriesOptions": "Opcje nagrywania serialu", "HeaderSeriesStatus": "Stan serialu", "HeaderServerSettings": "Ustawienia serwera", @@ -516,14 +515,14 @@ "LabelAirsAfterSeason": "Emisja po sezonie:", "LabelAirsBeforeEpisode": "Emisja przed odcinkiem:", "LabelAirsBeforeSeason": "Emisja przed sezonem:", - "LabelAlbum": "Album", + "LabelAlbum": "Album:", "LabelAlbumArtHelp": "PN używany jako okładka albumu z dlna:profileID w atrybucie upnp:albumArtURI. Niektóre urządzenia wymagają konkretnych wartości, niezależnie od rozmiaru obrazu.", "LabelAlbumArtMaxHeight": "Maksymalna wysokość okładki albumu:", "LabelAlbumArtMaxHeightHelp": "Maksymalna rozdzielczość okładki albumu wystawiana przez upnp:albumArtURI.", "LabelAlbumArtMaxWidth": "Maksymalna szerokość okładki albumu:", "LabelAlbumArtMaxWidthHelp": "Maksymalna rozdzielczość okładki albumu wystawiana przez upnp:albumArtURI.", "LabelAlbumArtPN": "PN okładki albumu:", - "LabelAlbumArtists": "Wykonawcy albumów", + "LabelAlbumArtists": "Wykonawcy albumów:", "LabelAll": "Wszystkie", "LabelAllowHWTranscoding": "Zezwalaj na sprzętowe transkodowanie", "LabelAllowServerAutoRestart": "Zezwalaj na ponowne uruchomienie serwera, w celu instalacji aktualizacji", @@ -535,7 +534,7 @@ "LabelArtists": "Wykonawcy:", "LabelArtistsHelp": "Oddzielaj używając ;", "LabelAudio": "Dźwięk:", - "LabelAudioLanguagePreference": "Preferowany język ścieżki dźwiękowej", + "LabelAudioLanguagePreference": "Preferowany język ścieżki dźwiękowej:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Odświeżaj automatycznie metadane z Internetu:", "LabelBindToLocalNetworkAddress": "Przypisz do lokalnego adresu sieciowego:", "LabelBindToLocalNetworkAddressHelp": "Opcjonalne. Zastąpi to lokalny adres IP adresem serwera HTTP Jeśli pozostanie puste, serwer będzie wiązać się z wszystkimi dostępnymi adresami. Zmiana tej wartości wymaga ponownego uruchomienia serwera Jellyfin.", @@ -554,7 +553,7 @@ "LabelChannels": "Kanały:", "LabelCollection": "Kolekcja:", "LabelCommunityRating": "Ocena społeczności:", - "LabelContentType": "Typ zawartości", + "LabelContentType": "Typ zawartości:", "LabelCountry": "Kraj:", "LabelCriticRating": "Ocena krytyków:", "LabelCurrentPassword": "Aktualne hasło:", @@ -619,8 +618,6 @@ "LabelExtractChaptersDuringLibraryScan": "Wydobywaj obrazy rozdziałów podczas skanowania biblioteki", "LabelExtractChaptersDuringLibraryScanHelp": "Jeśli aktywne, obrazy rozdziałów będą wydobywane, kiedy pliki wideo są importowane, podczas skanowania biblioteki. Jeżeli nieaktywne, będą one wydobywane podczas zaplanowanego zadania, dzięki czemu zwykłe skanowanie biblioteki będzie wykonywało się szybciej.", "LabelFailed": "Nieudane", - "LabelFanartApiKey": "Osobisty klucz API:", - "LabelFanartApiKeyHelp": "Żądania fototapet, bez osobistego klucza API, zwrócą obrazy, które były zatwierdzone 7 dni temu. Z osobistym kluczem API wartość spada do 48 godzin, a jeżeli jesteś członkiem VIP fototapety wartość ta spadnie do około 10 minut.", "LabelFileOrUrl": "Plik, lub adres url:", "LabelFinish": "Zakończ", "LabelFont": "Czcionka:", @@ -703,7 +700,7 @@ "LabelModelNumber": "Numer modelu", "LabelModelUrl": "Url modelu", "LabelMonitorUsers": "Monitoruj aktywność z:", - "LabelMovieCategories": "Kategorie filmowe", + "LabelMovieCategories": "Kategorie filmowe:", "LabelMoviePrefix": "Prefiks filmu:", "LabelMoviePrefixHelp": "Jeśli stosujesz prefiksy dla tytułów filmów, wprowadź go tutaj, aby Jellyfin mógł je obsługiwać prawidłowo.", "LabelMovieRecordingPath": "Folder nagrywania filmów (opcjonalne):", @@ -736,7 +733,7 @@ "LabelPlayDefaultAudioTrack": "Odtwarzaj domyślną ścieżkę dźwiękową niezależnie od języka", "LabelPlaylist": "Lista odtwarzania:", "LabelPostProcessor": "Aplikacja finalnego przetwarzania:", - "LabelPostProcessorArguments": "Argumenty linii poleceń aplikacji finalnego przetwarzania", + "LabelPostProcessorArguments": "Argumenty linii poleceń dla aplikacji przetwarzania:", "LabelPostProcessorArgumentsHelp": "Skorzystaj z wypełniacza {path} jako folder pliku nagrania.", "LabelPreferredDisplayLanguage": "Preferowany język interfejsu:", "LabelPreferredDisplayLanguageHelp": "Tłumaczenie Jellyfin to projekt w ciągłym rozwoju.", @@ -756,7 +753,7 @@ "LabelPublicHttpsPort": "Publiczny numer portu HTTPS:", "LabelPublicHttpsPortHelp": "Publiczny numer port na który ma być zmapowany lokalny port https.", "LabelReadHowYouCanContribute": "Dowiedz się jak możesz pomóc.", - "LabelReasonForTranscoding": "Powód transkodowania", + "LabelReasonForTranscoding": "Powód transkodowania:", "LabelRecord": "Nagraj:", "LabelRecordingPath": "Folder domyślny nagrań:", "LabelRecordingPathHelp": "Określ domyślną lokalizację zapisywania nagrań. Jeśli pozostanie pusta, zostaną one zapisane w folderze danych serwera.", @@ -773,8 +770,8 @@ "LabelSecureConnectionsMode": "Tryb zabezpieczania połączenia:", "LabelSelectFolderGroups": "Grupuj zawartość z następujących folderów w widokach taki, jak Filmy, Muzyka i Seriale:", "LabelSelectFolderGroupsHelp": "Foldery, które nie zostały zaznaczone, będą wyświetlane w swoich własnych, osobnych widokach.", - "LabelSelectUsers": "Wybierz użytkowników", - "LabelSelectVersionToInstall": "Wybierz wersję do instalacji", + "LabelSelectUsers": "Wybierz użytkowników:", + "LabelSelectVersionToInstall": "Wybierz wersję do instalacji:", "LabelSendNotificationToUsers": "Wyślij powiadomienie do:", "LabelSerialNumber": "Numer seryjny", "LabelSeriesRecordingPath": "Folder nagrywania seriali (opcjonalne):", @@ -791,11 +788,11 @@ "LabelSonyAggregationFlags": "Flagi agregacji Sony:", "LabelSonyAggregationFlagsHelp": "Określ zawartość elementu AggregationFlags w przestrzeni nazw urn:schemas-sonycom:av.", "LabelSortBy": "Sortuj po:", - "LabelSortOrder": "Porządek sortowania", + "LabelSortOrder": "Porządek sortowania:", "LabelSortTitle": "Tytuł sortowania:", - "LabelSoundEffects": "Efekty dźwiękowe", + "LabelSoundEffects": "Efekty dźwiękowe:", "LabelSource": "Źródło:", - "LabelSpecialSeasonsDisplayName": "Nazwa sezonu odcinków specjalnych", + "LabelSpecialSeasonsDisplayName": "Nazwa sezonu odcinków specjalnych:", "LabelSportsCategories": "Kategorie wydarzeń sportowych:", "LabelStartWhenPossible": "Zaczynaj kiedy możliwe:", "LabelStatus": "Stan:", @@ -805,7 +802,7 @@ "LabelSubtitleFormatHelp": "Przykład: srt", "LabelSubtitlePlaybackMode": "Tryb napisów:", "LabelSubtitles": "Napisy:", - "LabelSupportedMediaTypes": "Obsługiwane typy mediów", + "LabelSupportedMediaTypes": "Obsługiwane typy mediów:", "LabelTVHomeScreen": "Ekran startowy trybu telewizyjnego:", "LabelTag": "Znacznik:", "LabelTagline": "Motto:", @@ -1129,7 +1126,7 @@ "PasswordSaved": "Hasło zapisane.", "People": "Osoby", "PerfectMatch": "Perfekcyjne dopasowanie", - "Photos": "Fotografie", + "Photos": "Zdjęcia", "PictureInPicture": "Obraz w obrazie", "PinCodeResetComplete": "Kod PIN został wyczyszczony.", "PinCodeResetConfirmation": "Czy na pewno chcesz wyczyścić kod PIN?", @@ -1141,7 +1138,7 @@ "PlayNext": "Odtwarzaj następne", "PlayNextEpisodeAutomatically": "Odtwarzaj następny odcinek automatycznie", "Played": "Odtworzone", - "Playlists": "Listy", + "Playlists": "Listy odtwarzania", "PleaseAddAtLeastOneFolder": "Proszę dodaj przynajmniej jeden folder do tej listy poprzez kliknięcie guzika Dodaj", "PleaseConfirmPluginInstallation": "Kliknij OK aby potwierdzić, iż zapoznałeś się z powyższym i chcesz zainstalować plugin.", "PleaseEnterNameOrId": "Proszę wprowadź nazwę lub zewnętrzne Id.", @@ -1269,11 +1266,9 @@ "TabDirectPlay": "Odtwarzanie Bezposrednie", "TabDisplay": "Wyświetlanie", "TabEpisodes": "Odcinki", - "TabExpert": "Eksperckie", "TabFavorites": "Ulubione", "TabGenres": "Gatunki", "TabGuide": "Przewodnik", - "TabHosting": "Usługa", "TabInfo": "Informacje", "TabLatest": "Ostatnio dodane", "TabLibrary": "Biblioteka", @@ -1300,7 +1295,6 @@ "TabResponses": "Odpowiedzi", "TabResumeSettings": "Wznawianie", "TabScheduledTasks": "Harmonogram zadań", - "TabSecurity": "Zabezpieczenia", "TabSeries": "Seriale", "TabServer": "Serwer", "TabSettings": "Ustawienia", @@ -1378,5 +1372,24 @@ "XmlTvPathHelp": "Folder pliku xml tv. Jellyfin będzie wczytywać ten plik i okresowo sprawdzać aktualizacje. Jesteś odpowiedzialny za utworzenie i aktualizowanie tego pliku.", "XmlTvSportsCategoriesHelp": "Programy z tymi kategoriami, będą wyświetlane jako sportowe. Oddziel je używając '|'.", "Yes": "Tak", - "Yesterday": "Wczoraj" + "Yesterday": "Wczoraj", + "ButtonOk": "Ok", + "ButtonStart": "Start", + "FormatValue": "Format: {0}", + "HeaderAudioLanguages": "Języki Audio", + "HeaderFavoriteMovies": "Ulubione filmy", + "HeaderFavoriteShows": "Ulubione seriale", + "HeaderFavoriteEpisodes": "Ulubione odcinki", + "HeaderFavoriteAlbums": "Ulubione albumy", + "HeaderFavoriteArtists": "Ulubieni wykonawcy", + "HeaderFavoriteSongs": "Ulubione utwory", + "HeaderFavoriteVideos": "Ulubione filmy", + "HeaderHome": "Strona główna", + "HeaderHomeSettings": "Ustawienia strony głównej", + "HeaderRestartingServer": "Ponowne uruchamianie serwera", + "LabelAuthProvider": "Dostawca autentykacji:", + "LabelDynamicExternalId": "{0} Id:", + "LabelFormat": "Format:", + "LabelServerName": "Nazwa serwera:", + "LabelServerPort": "Port:" } diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 1f9b518ba4..cdc1ea9076 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -9,7 +9,6 @@ "AddToPlaylist": "Adicionar à lista de reprodução", "AddedOnValue": "Adicionado {0}", "AdditionalNotificationServices": "Explore o catálogo do plugin para instalar serviços adicionais de notificação.", - "Advanced": "Avançado", "AirDate": "Data da exibição", "Aired": "Exibido", "Albums": "Álbuns", @@ -244,8 +243,8 @@ "FolderTypeBooks": "Livros", "FolderTypeMovies": "Filmes", "FolderTypeMusic": "Música", - "FolderTypeMusicVideos": "Vídeos musicais", - "FolderTypeTvShows": "Séries de TV", + "FolderTypeMusicVideos": "Clipes", + "FolderTypeTvShows": "Séries", "FolderTypeUnset": "Conteúdo misto", "Folders": "Pastas", "ForAdditionalLiveTvOptions": "Para provedores de TV ao Vivo adicionais, clique na guia Serviços para ver as opções disponíveis.", @@ -602,8 +601,6 @@ "LabelExtractChaptersDuringLibraryScan": "Extrair imagens dos capítulos durante o rastreamento da biblioteca", "LabelExtractChaptersDuringLibraryScanHelp": "Se ativado, as imagens dos capítulos serão extraídas quando os vídeos forem importados durante o rastreamento da biblioteca. Se desativado, elas serão extraídas durante a tarefa agendada de imagens dos capítulos, permitindo que a tarefa de rastreamento da biblioteca seja mais rápida.", "LabelFailed": "Falhou", - "LabelFanartApiKey": "Chave de api pessoal:", - "LabelFanartApiKeyHelp": "Solicitações para fanart sem uma chave de API pessoal retornarão imagens que foram aprovadas há mais de 7 dias. Com uma chave de API pessoal isso diminui para 48 horas e se você for um membro VIP da fanart, isso diminuirá para aproximadamente 10 minutos.", "LabelFileOrUrl": "Arquivo ou url:", "LabelFinish": "Finalizar", "LabelFont": "Fonte:", @@ -842,8 +839,8 @@ "ManageLibrary": "Gerenciar biblioteca", "ManageRecording": "Gerenciar gravação", "MapChannels": "Mapear Canais", - "MarkPlayed": "Marcar como reproduzido", - "MarkUnplayed": "Marcar como não-reproduzido", + "MarkPlayed": "Marcar como assistido", + "MarkUnplayed": "Marcar como não assistido", "MaxParentalRatingHelp": "Conteúdo com classificação maior será ocultado do usuário.", "MediaInfoAnamorphic": "Anamórfico", "MediaInfoAspectRatio": "Proporção da imagem", @@ -981,7 +978,7 @@ "OptionBlockLiveTvChannels": "Canais de TV ao vivo", "OptionBlockMovies": "Filmes", "OptionBlockMusic": "Música", - "OptionBlockTvShows": "Séries de TV", + "OptionBlockTvShows": "Séries", "OptionCommunityRating": "Avaliação da Comunidade", "OptionContinuing": "Em Exibição", "OptionCriticRating": "Avaliação da Crítica", @@ -1050,7 +1047,7 @@ "OptionPlainVideoItems": "Exibir todos os vídeos como itens de vídeo simples", "OptionPlainVideoItemsHelp": "Se ativado, todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", "OptionPlayCount": "Nº de Reproduções", - "OptionPlayed": "Reproduzido", + "OptionPlayed": "Assistido", "OptionPremiereDate": "Data da Estréia", "OptionProfileAudio": "Áudio", "OptionProfilePhoto": "Foto", @@ -1074,7 +1071,7 @@ "OptionTuesday": "Terça-feira", "OptionTvdbRating": "Avaliação Tvdb", "OptionUnairedEpisode": "Episódios Por Estrear", - "OptionUnplayed": "Não-reproduzido", + "OptionUnplayed": "Não assistido", "OptionWakeFromSleep": "Despertar da hibernação", "OptionWednesday": "Quarta-feira", "OptionWeekdays": "Dias da semana", @@ -1103,7 +1100,7 @@ "PlayFromBeginning": "Reproduzir do início", "PlayNext": "Reproduzir próximo", "PlayNextEpisodeAutomatically": "Reproduzir próximo episódio automaticamente", - "Played": "Reproduzido", + "Played": "Assistido", "Playlists": "Listas de Reprodução", "PleaseAddAtLeastOneFolder": "Por favor, adicione ao menos uma pasta a esta biblioteca, clicando no botão Adicionar.", "PleaseConfirmPluginInstallation": "Por favor, clique em OK para confirmar que você leu e deseja prosseguir com a instalação do plugin.", @@ -1227,11 +1224,9 @@ "TabDirectPlay": "Reprodução Direta", "TabDisplay": "Exibição", "TabEpisodes": "Episódios", - "TabExpert": "Avançado", "TabFavorites": "Favoritos", "TabGenres": "Gêneros", "TabGuide": "Guia", - "TabHosting": "Hospedagem", "TabLatest": "Recentes", "TabLibrary": "Biblioteca", "TabLiveTV": "TV ao Vivo", @@ -1255,7 +1250,6 @@ "TabResponses": "Respostas", "TabResumeSettings": "Ajustes para Retomar", "TabScheduledTasks": "Tarefas Agendadas", - "TabSecurity": "Segurança", "TabSeries": "Séries", "TabServer": "Servidor", "TabSettings": "Ajustes", @@ -1283,7 +1277,7 @@ "UninstallPluginConfirmation": "Deseja realmente desinstalar {0}?", "UninstallPluginHeader": "Desinstalar Plugin", "Unmute": "Sair do Mudo", - "Unplayed": "Não Reproduzido", + "Unplayed": "Não Assistido", "Unrated": "Não-classificado", "Up": "Para cima", "Upload": "Carregar", @@ -1364,5 +1358,28 @@ "MessageImageTypeNotSelected": "Por favor selecione um tipo de imagem na lista de seleção do menu.", "Normal": "Normal", "Option3D": "3D", - "OptionAuto": "Automático" + "OptionAuto": "Automático", + "AuthProviderHelp": "Selecione um provedor de autenticação que sera usado para autenticar a senha do usuário", + "HeaderFavoriteMovies": "Filmes Favoritos", + "HeaderFavoriteShows": "Séries Favoritas", + "HeaderFavoriteEpisodes": "Episódios Favoritos", + "HeaderFavoriteAlbums": "Álbuns Favoritos", + "HeaderFavoriteArtists": "Artistas Favoritos", + "HeaderFavoriteSongs": "Músicas Favoritas", + "HeaderFavoriteVideos": "Videos Favoritos", + "HeaderHome": "Inicio", + "HeaderHomeSettings": "Configurações Iniciais", + "HeaderRestartingServer": "Reiniciando Servidor", + "LabelAuthProvider": "Provedor de Autenticação:", + "LabelServerName": "Nome do Servidor:", + "LabelTranscodePath": "Caminho de transcodificação:", + "LabelTranscodes": "Transcodificação:", + "LabelUserLoginAttemptsBeforeLockout": "Numero Tentativas de login com falha antes que o usuário seja bloqueado:", + "DashboardVersionNumber": "Versão: {0}", + "DashboardServerName": "Servidor: {0}", + "DashboardOperatingSystem": "Sistema Operacional: {0}", + "DashboardArchitecture": "Arquitetura: {0}", + "LabelPasswordResetProvider": "Provedor para Redefinir a Senha:", + "LabelWeb": "Web: ", + "OptionBluray": "Bluray" } diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 86656df30f..21447fee94 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -1,770 +1,819 @@ { - "Actor": "Ator", - "Add": "Adicionar", - "AddToPlaylist": "Adicionar à lista de reprodução", - "AdditionalNotificationServices": "Explore o catálogo de extensões para instalar serviços adicionais de notificação.", - "Advanced": "Avançado", - "All": "Tudo", - "AttributeNew": "Novo", - "Audio": "Áudio", - "Backdrops": "Imagens de Fundo", - "BrowsePluginCatalogMessage": "Navegue o nosso catálogo de extensões, para ver as extensões disponíveis.", - "ButtonAdd": "Adicionar", - "ButtonAddMediaLibrary": "Adicionar Biblioteca de Multimédia", - "ButtonAddScheduledTaskTrigger": "Adicionar Disparador", - "ButtonAddServer": "Adicionar Servidor", - "ButtonAddUser": "Adicionar Utilizador", - "ButtonArrowDown": "Baixo", - "ButtonArrowLeft": "Esquerda", - "ButtonArrowRight": "Direita", - "ButtonArrowUp": "Cima", - "ButtonBack": "Voltar", - "ButtonCancel": "Cancelar", - "ButtonChangeServer": "Alterar Servidor", - "ButtonConnect": "Conectar", - "ButtonDelete": "Remover", - "ButtonDeleteImage": "Apagar imagem", - "ButtonEdit": "Editar", - "ButtonEditOtherUserPreferences": "Editar este perfil de utilizador, imagem e preferências pessoais.", - "ButtonFilter": "Filtro", - "ButtonForgotPassword": "Esqueci a senha", - "ButtonFullscreen": "Ecrã Inteiro", - "ButtonHelp": "Ajuda", - "ButtonHome": "Início", - "ButtonInfo": "Informação", - "ButtonLearnMore": "Saiba mais", - "ButtonManualLogin": "Início de Sessão Manual", - "ButtonMore": "Mais", - "ButtonNetwork": "Rede", - "ButtonNew": "Novo", - "ButtonNextTrack": "Faixa seguinte", - "ButtonOpen": "Abrir", - "ButtonPause": "Pausar", - "ButtonPlay": "Reproduzir", - "ButtonPreviousTrack": "Faixa anterior", - "ButtonProfile": "Perfil", - "ButtonQuickStartGuide": "Guia rápido", - "ButtonRefresh": "Atualizar", - "ButtonRefreshGuideData": "Atualizar Dados do Guia", - "ButtonRemove": "Remover", - "ButtonRepeat": "Repetir", - "ButtonResetEasyPassword": "Redefinir código pin fácil", - "ButtonResetPassword": "Redefinir Senha", - "ButtonRestart": "Reiniciar", - "ButtonResume": "Retomar", - "ButtonRevoke": "Revogar", - "ButtonSave": "Guardar", - "ButtonScanAllLibraries": "Analisar todas as Bibliotecas", - "ButtonSearch": "Procurar", - "ButtonSelectDirectory": "Selecione a diretoria", - "ButtonSelectView": "Selecionar visualização", - "ButtonSend": "Enviar", - "ButtonSettings": "Ajustes", - "ButtonShuffle": "Aleatório", - "ButtonShutdown": "Encerrar", - "ButtonSignIn": "Iniciar Sessão", - "ButtonSignOut": "Sair", - "ButtonSort": "Organizar", - "ButtonSplitVersionsApart": "Separar Versões", - "ButtonStart": "Iniciar", - "ButtonStop": "Parar", - "ButtonSubmit": "Enviar", - "ButtonSubtitles": "Legendas", - "ButtonUninstall": "Desinstalar", - "ButtonUpload": "Carregar", - "ButtonViewWebsite": "Ver website", - "ChannelAccessHelp": "Selecione os canais a compartilhar com este utilizador. Administradores poderão editar todos os canais usando o gestor de metadados.", - "CinemaModeConfigurationHelp": "O modo cinema traz a experiência do cinema para a sua sala, possibilitando reproduzir trailers e introduções personalizadas antes da longa-metragem.", - "Composer": "Compositor", - "ConfirmDeleteItem": "Excluir este item o excluirá do sistema de arquivos e também da biblioteca multimédia. Deseja realmente continuar?", - "ConfirmDeleteItems": "Ao excluir estes itens você os excluirá do sistema de arquivos e de sua biblioteca multimédia. Deseja realmente continuar?", - "ConfirmDeletion": "Confirmar Exclusão", - "Connect": "Conectar", - "Continuing": "A Continuar", - "CustomDlnaProfilesHelp": "Crie um perfil personalizado para um novo dispositivo ou para sobrepor um perfil de sistema.", - "Delete": "Remover", - "DeleteDeviceConfirmation": "Deseja realmente excluir este dispositivo? Ele reaparecerá da próxima vez que um utilizador o utilize.", - "DeleteImage": "Apagar Imagem", - "DeleteImageConfirmation": "Tem a certeza que deseja apagar a imagem?", - "DeleteMedia": "Remover multimédia", - "DeleteUser": "Apagar Utilizador", - "DeleteUserConfirmation": "Tem a certeza que deseja apagar este utilizador?", - "DeviceAccessHelp": "Isto apenas se aplica para dispositivos que podem ser identificados como únicos e não evitarão o acesso do navegador. Filtrar o acesso ao dispositivo do utilizador evita que sejam usados novos dispositivos até que sejam aprovados aqui.", - "Director": "Diretor", - "EasyPasswordHelp": "Seu código pin fácil é usado para acesso off-line com apps suportados pelo Jellyfin e pode ser usado para acesso fácil dentro da rede.", - "Edit": "Editar", - "EnableCinemaMode": "Ativar modo cinema", - "Ended": "Terminado", - "ErrorAddingMediaPathToVirtualFolder": "Ocorreu um erro ao adicionar o local dos seus ficheiros. Por favor, assegure-se que o local é valido e que o processo do Jellyfin Server tenha acesso a essa localização.", - "ErrorGettingTvLineups": "Ocorreu um erro ao fazer download da programação da tv. Por favor, certifique-se que a sua informação está correta e tente novamente.", - "ErrorPleaseSelectLineup": "Por favor selecione a programação e tente novamente. Se não houver programações disponíveis, verifique se o seu nome de utilizador, senha e código postal estão corretos.", - "ExitFullscreen": "Sair do ecrã inteiro", - "FastForward": "Avanço rápido", - "FileNotFound": "Ficheiro não encontrado.", - "FileReadCancelled": "A leitura do ficheiro foi cancelada.", - "FileReadError": "Ocorreu um erro ao ler o ficheiro.", - "FolderTypeBooks": "Livros", - "FolderTypeMovies": "Filmes", - "FolderTypeMusic": "Música", - "FolderTypeMusicVideos": "Vídeos musicais", - "FolderTypeTvShows": "TV", - "Friday": "Sexta", - "Fullscreen": "Ecrã inteiro", - "GuideProviderSelectListings": "Selecionar Listas", - "HeaderAccessSchedule": "Agendamento de Acesso", - "HeaderAccessScheduleHelp": "Criar um agendamento de acesso para limitar o acesso a certas horas.", - "HeaderActiveDevices": "Dispositivos Ativos", - "HeaderActiveRecordings": "Gravações ativas", - "HeaderActivity": "Atividade", - "HeaderAddScheduledTaskTrigger": "Adicionar Disparador", - "HeaderAddToCollection": "Adicionar à Coleção", - "HeaderAddUpdateImage": "Adicionar/Atualizar Imagem", - "HeaderAddUser": "Adicionar Utilizador", - "HeaderAdditionalParts": "Partes Adicionais", - "HeaderApiKey": "Chave da Api", - "HeaderApiKeys": "Chaves da Api", - "HeaderApiKeysHelp": "As aplicações externas precisam ter uma chave da Api para se comunicarem com o Servidor Jellyfin. As chaves são emitidas ao entrar com uma conta Jellyfin ou concedendo manualmente a chave à aplicação.", - "HeaderApp": "Aplicação", - "HeaderAudioSettings": "Ajustes de Áudio", - "HeaderAutomaticUpdates": "Atualizações automáticas", - "HeaderBlockItemsWithNoRating": "Bloquear conteúdo sem informação de classificação etária ou com informação desconhecida:", - "HeaderBranding": "Marca", - "HeaderCastCrew": "Elenco e Equipa", - "HeaderChannelAccess": "Acesso ao Canal", - "HeaderChannels": "Canais", - "HeaderCodecProfile": "Perfil do Codec", - "HeaderCodecProfileHelp": "Perfis do Codec indicam as limitações de um dispositivo ao reproduzir codecs específicos. Se uma limitação ocorre, o ficheiro multimédia será transcodificado, mesmo se o codec estiver configurado para reprodução direta.", - "HeaderConfirmProfileDeletion": "Confirmar Remoção do Perfil", - "HeaderConfirmRevokeApiKey": "Revogar Chave da Api", - "HeaderConnectToServer": "Conectar ao Servidor", - "HeaderContainerProfile": "Perfil do Container", - "HeaderContainerProfileHelp": "Perfis do Container indicam as limitações de um dispositivo ao reproduzir formatos específicos. Se uma limitação ocorre, o ficheiro multimédia será transcodificado, mesmo se o formato estiver configurado para reprodução direta.", - "HeaderContinueWatching": "Continuar a ver", - "HeaderCustomDlnaProfiles": "Perfis Personalizados", - "HeaderDateIssued": "Data da Emissão", - "HeaderDeleteItem": "Remover item", - "HeaderDeleteItems": "Remover Itens", - "HeaderDeleteTaskTrigger": "Excluir Disparador da Tarefa", - "HeaderDeveloperInfo": "Informação do Programador", - "HeaderDeviceAccess": "Acesso ao Dispositivo", - "HeaderDevices": "Dispositivos", - "HeaderDirectPlayProfile": "Perfil da Reprodução Direta", - "HeaderDirectPlayProfileHelp": "Adicionar perfis de reprodução direta que indiquem que formatos o dispositivo pode suportar nativamente.", - "HeaderDisplay": "Exibição", - "HeaderDisplaySettings": "Apresentar Configurações", - "HeaderEasyPinCode": "Código de Pin fácil:", - "HeaderEnabledFields": "Campos Ativados", - "HeaderEnabledFieldsHelp": "Desmarque um campo para bloqueá-lo e evitar que seus dados sejam alterados.", - "HeaderError": "Erro", - "HeaderFeatureAccess": "Acesso a Características", - "HeaderFeatures": "Recursos", - "HeaderFetchImages": "Buscar Imagens:", - "HeaderFilters": "Filtros", - "HeaderForgotPassword": "Esqueci a Senha", - "HeaderFrequentlyPlayed": "Reproduzido frequentemente", - "HeaderGenres": "Gêneros", - "HeaderGuideProviders": "Provedores de Guia", - "HeaderHttpHeaders": "Cabeçalhos de Http", - "HeaderIdentification": "Identificação", - "HeaderIdentificationCriteriaHelp": "Digite, pelo menos, um critério de identificação.", - "HeaderIdentificationHeader": "Cabeçalho de Identificação", - "HeaderIdentifyItemHelp": "Digite um ou mais critérios de busca. Exclua o critério para aumentar os resultados da busca.", - "HeaderImageSettings": "Opções da Imagem", - "HeaderInstall": "Instalar", - "HeaderInstantMix": "Mix instantâneo", - "HeaderLatestEpisodes": "Últimos Episódios", - "HeaderLatestMedia": "Multimédia Recente", - "HeaderLatestMovies": "Últimos Filmes", - "HeaderLatestMusic": "Últimas Músicas", - "HeaderLatestRecordings": "Últimas Gravações", - "HeaderLibraries": "Bibliotecas", - "HeaderLibraryAccess": "Acesso à Biblioteca", - "HeaderLibraryFolders": "Pastas multimédia", - "HeaderLibrarySettings": "Definições da Biblioteca", - "HeaderLiveTV": "TV ao Vivo", - "HeaderLiveTv": "TV ao Vivo", - "HeaderLoginFailure": "Falha no Login", - "HeaderMedia": "Multimédia", - "HeaderMediaFolders": "Pastas Multimédia", - "HeaderMediaInfo": "Informações Multimédia", - "HeaderMetadataSettings": "Ajustes dos Metadados", - "HeaderMusicVideos": "Vídeos de Música", - "HeaderMyMedia": "A Minha Multimédia", - "HeaderNewApiKey": "Nova Chave da Api", - "HeaderNextUp": "A Seguir", - "HeaderParentalRatings": "Classificações Parentais", - "HeaderPassword": "Senha", - "HeaderPasswordReset": "Redefinição de Senha", - "HeaderPaths": "Localizações", - "HeaderPendingInvitations": "Convites pendentes", - "HeaderPeople": "Pessoas", - "HeaderPinCodeReset": "Redefinir Código Pin", - "HeaderPlayAll": "Reproduzir Todos", - "HeaderPlayback": "Reprodução de Mídia", - "HeaderPlaybackError": "Erro na Reprodução", - "HeaderPlaybackSettings": "Opções de Reprodução", - "HeaderPleaseSignIn": "Por favor inicie a sessão", - "HeaderPreferredMetadataLanguage": "Idioma Preferencial dos Metadados", - "HeaderProfile": "Perfil", - "HeaderProfileInformation": "Informação do Perfil", - "HeaderProfileServerSettingsHelp": "Estes valores controlam como o Servidor Jellyfin se apresenta a si mesmo para o dispositivo.", - "HeaderRecentlyPlayed": "Reproduzido recentemente", - "HeaderRemoteControl": "Controlo Remoto", - "HeaderRemoveMediaFolder": "Excluir Pasta Multimédia", - "HeaderRemoveMediaLocation": "Remover Localização dos ficheiros multimédia", - "HeaderResponseProfile": "Perfil de Resposta", - "HeaderResponseProfileHelp": "Perfis de resposta oferecem uma forma de personalizar a informação enviada para o dispositivo ao executar certos ficheiros multimédia.", - "HeaderRestart": "Reiniciar", - "HeaderRevisionHistory": "Histórico de Versões", - "HeaderRunningTasks": "Tarefas em Execução", - "HeaderScenes": "Cenas", - "HeaderSchedule": "Agendamento", - "HeaderSelectCertificatePath": "Selecione o Local do Certificado", - "HeaderSelectMetadataPath": "Selecione o Local dos Metadados", - "HeaderSelectMetadataPathHelp": "Localize ou digite o local que você gostaria de armazenar os metadados. A pasta deve ser gravável.", - "HeaderSelectPath": "Selecione o Local", - "HeaderSelectServer": "Selecionar Servidor", - "HeaderSelectServerCachePath": "Selecione o Local do Cache do Servidor", - "HeaderSelectServerCachePathHelp": "Localize ou digite o local para armazenar o cache do servidor. A pasta deve permitir gravação.", - "HeaderSelectTranscodingPath": "Selecione o Local Temporário da Transcodificação", - "HeaderSelectTranscodingPathHelp": "Localize ou insira o local para usar para os ficheiros temporários de transcodificação. A pasta deve permitir a escrita.", - "HeaderSendMessage": "Enviar mensagem", - "HeaderSeries": "Series:", - "HeaderServerSettings": "Opções do Servidor", - "HeaderSettings": "Ajustes", - "HeaderSetupLibrary": "Configurar as suas bibliotecas multimédia", - "HeaderShutdown": "Encerrar", - "HeaderSpecialEpisodeInfo": "Informação do Episódio Especial", - "HeaderSpecialFeatures": "Extras", - "HeaderStatus": "Estado", - "HeaderSubtitleProfile": "Perfil da Legenda", - "HeaderSubtitleProfiles": "Perfis da Legenda", - "HeaderSubtitleProfilesHelp": "Perfis da legenda descrevem os formatos da legenda suportados pelo dispositivo.", - "HeaderSubtitleSettings": "Ajustes de Legenda", - "HeaderSystemDlnaProfiles": "Perfis de Sistema", - "HeaderTaskTriggers": "Disparadores de Tarefa", - "HeaderThisUserIsCurrentlyDisabled": "Este utilizador está desativado atualmente", - "HeaderTranscodingProfile": "Perfil da Transcodificação", - "HeaderTranscodingProfileHelp": "Adicionar perfis de transcodificação que indiquem que formatos deverão ser usados quando a transcodificação é necessária.", - "HeaderTunerDevices": "Sintonizadores", - "HeaderTypeText": "Inserir texto", - "HeaderUploadNewImage": "Carregar Nova Imagem", - "HeaderUser": "Utilizador", - "HeaderUsers": "Utilizadores", - "HeaderVideoTypes": "Tipos de Vídeo", - "HeaderVideos": "Vídeos", - "HeaderXmlDocumentAttribute": "Atributo do Documento Xml", - "HeaderXmlDocumentAttributes": "Atributos do Documento Xml", - "HeaderXmlSettings": "Ajustes do Xml", - "HeaderYears": "Anos", - "HeadersFolders": "Pastas", - "Help": "Ajuda", - "Identify": "Identificar", - "Images": "Imagens", - "ImportFavoriteChannelsHelp": "Se ativado, apenas canais que estão marcados como favoritos no sintonizador serão importados.", - "ImportMissingEpisodesHelp": "Se ativo, a informação acerca dos episódios em falta, serão importados para a sua base de dados do Jellyfin e exibida dentro das temporadas e séries. Isto pode aumentar significativamente a duração da análise da biblioteca.", - "InstantMix": "Mix instântaneo", - "ItemCount": "{0} itens", - "Label3DFormat": "Formato 3D:", - "LabelAccessDay": "Dia da semana:", - "LabelAccessEnd": "Hora final:", - "LabelAccessStart": "Hora inicial:", - "LabelAirDays": "Dias da exibição:", - "LabelAirTime": "Horário:", - "LabelAirsAfterSeason": "Exibido depois da temporada:", - "LabelAirsBeforeEpisode": "Exibido antes do episódio:", - "LabelAirsBeforeSeason": "Exibido antes da temporada:", - "LabelAlbum": "Álbum:", - "LabelAlbumArtMaxHeight": "Altura máxima da capa do álbum:", - "LabelAlbumArtMaxHeightHelp": "Resolução máxima da capa do álbum que é exposta via upnp:albumArtURI.", - "LabelAlbumArtMaxWidth": "Largura máxima da capa do álbum:", - "LabelAlbumArtMaxWidthHelp": "Resolução máxima da capa do álbum que é exposta via upnp:albumArtURI.", - "LabelAlbumArtPN": "PN da capa do álbum:", - "LabelAlbumArtists": "Artistas do Álbum:", - "LabelAll": "Todos", - "LabelAllowServerAutoRestart": "Permitir ao servidor reiniciar automaticamente para aplicar as atualizações", - "LabelAllowServerAutoRestartHelp": "O servidor irá reiniciar apenas durante períodos em que não esteja a ser usado, quando nenhum utilizador estiver ativo.", - "LabelAppName": "Nome do app", - "LabelAppNameExample": "Exemplo: Sickbeard, NzbDrone", - "LabelArtists": "Artistas:", - "LabelArtistsHelp": "Separa múltiplas com ;", - "LabelAudioLanguagePreference": "Preferências de Idioma de Audio:", - "LabelBlastMessageInterval": "Intervalo das mensagens de reconhecimento (segundos)", - "LabelBlastMessageIntervalHelp": "Determina a duração em segundos entre as mensagens de exploração enviadas pelo servidor.", - "LabelBlockContentWithTags": "Bloquear conteúdo com tags:", - "LabelCachePath": "Localização da cache:", - "LabelCachePathHelp": "Defina uma localização para os arquivos de cache como, por exemplo, imagens. Por favor, deixe em branco para usar o padrão do servidor.", - "LabelCancelled": "Cancelado", - "LabelCollection": "Coleção", - "LabelCommunityRating": "Avaliação da comunidade:", - "LabelContentType": "Tipo de conteúdo:", - "LabelCountry": "País:", - "LabelCriticRating": "Avaliação da crítica:", - "LabelCurrentPassword": "Senha actual:", - "LabelCustomCertificatePath": "Localização do certificado SSL personalizado:", - "LabelCustomCertificatePathHelp": "Forneça o seu próprio ficheiro .pfx do certificado ssl.", - "LabelCustomCss": "CSS personalizado:", - "LabelCustomCssHelp": "Adiciona o teu css personalizado à interface web.", - "LabelCustomDeviceDisplayName": "Nome para exibição:", - "LabelCustomDeviceDisplayNameHelp": "Forneça um nome para exibição ou deixe em branco para usar o nome informado pelo dispositivo.", - "LabelCustomRating": "Classificação personalizada:", - "LabelDateAdded": "Data adicionado:", - "LabelDateAddedBehavior": "Data de adição de comportamento para o novo conteúdo:", - "LabelDateAddedBehaviorHelp": "Se um valor de metadados estiver presente, ele sempre será utilizado antes destas opções.", - "LabelDay": "Dia:", - "LabelDefaultUser": "Utilizador padrão:", - "LabelDefaultUserHelp": "Determina qual utilizador será exibido nos dispositivos conectados. Isto pode ser ignorado para cada dispositivo usando perfis.", - "LabelDeviceDescription": "Descrição do dispositivo", - "LabelDidlMode": "Modo Didl:", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar episódios em falta dentro das temporadas", - "LabelDisplayName": "Nome para exibição:", - "LabelDisplayOrder": "Ordem de exibição:", - "LabelDisplaySpecialsWithinSeasons": "Exibir especiais dentro das temporadas em que são exibidos", - "LabelDownMixAudioScale": "Escala do aumento de áudio ao fazer downmix:", - "LabelDownMixAudioScaleHelp": "Aumentar o áudio ao fazer downmix. Defina como 1 para preservar o volume original.", - "LabelDownloadLanguages": "Idiomas para download:", - "LabelEasyPinCode": "Código pin fácil:", - "LabelEmbedAlbumArtDidl": "Inserir a capa do álbum no Didl", - "LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a capa do álbum. Outros podem falhar para reproduzir com esta opção ativada", - "LabelEnableAutomaticPortMap": "Ativar mapeamento automático de portas", - "LabelEnableAutomaticPortMapHelp": "Tentativa de mapear automaticamente a porta pública para a porta local através de UPnP. Isto poderá não funcionar em alguns modelos de roteadores.", - "LabelEnableBlastAliveMessages": "Propagar mensagens de reconhecimento", - "LabelEnableBlastAliveMessagesHelp": "Ativar isto se o servidor não é detetado convenientemente por outros dispositivos UPnP na sua rede.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervalo para a descoberta do cliente (segundos)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina a duração em segundos entre buscas SSDP executadas pelo Jellyfin.", - "LabelEnableDlnaDebugLogging": "Ativar log de depuração do DLNA", - "LabelEnableDlnaDebugLoggingHelp": "Isto irá criar ficheiros de log grandes e deve ser usado apenas quando é necessário para depurar problemas.", - "LabelEnableDlnaPlayTo": "Ativar DLNA Play To", - "LabelEnableDlnaPlayToHelp": "Jellyfin pode detectar dispositivos dentro de sua rede e oferece a possibilidade de controlá-los.", - "LabelEnableDlnaServer": "Ativar servidor DLNA", - "LabelEnableDlnaServerHelp": "Permite que dispositivos UPnP em sua rede naveguem e reproduzam conteúdo do Jellyfin.", - "LabelEnableHardwareDecodingFor": "Ativar descodificação por hardware para:", - "LabelEnableRealtimeMonitor": "Ativar monitorização em tempo real", - "LabelEnableRealtimeMonitorHelp": "As alterações irão ser processadas imediatamente em sistemas de ficheiros suportados.", - "LabelEnableSingleImageInDidlLimit": "Limitar a uma imagem incorporada", - "LabelEnableSingleImageInDidlLimitHelp": "Alguns dispositivos não interpretarão apropriadamente se múltiplas imagens estiverem incorporadas dentro do Didl.", - "LabelEndDate": "Data final:", - "LabelEpisodeNumber": "Número do episódio:", - "LabelEvent": "Evento:", - "LabelEveryXMinutes": "Todos", - "LabelExternalDDNS": "Domínio externo:", - "LabelExternalDDNSHelp": "Se tem um servidor DNS dinâmico insira-o aqui. As aplicações do Jellyfin irão usá-lo ao conectar remotamente. Este campo é obrigatório quando usado com um certificado SSL personalizado. Exemplo: omeudominio.com", - "LabelExtractChaptersDuringLibraryScan": "Extrair imagens dos capítulos durante o rastreamento da biblioteca", - "LabelExtractChaptersDuringLibraryScanHelp": "Se ativado, as imagens dos capítulos serão extraídas quando os vídeos forem importados durante a pesquisa na biblioteca. Se desativado, elas serão extraídas durante a tarefa agendada de imagens dos capítulos, permitindo que a pesquisa na biblioteca seja mais rápida.", - "LabelFailed": "Falhou", - "LabelFanartApiKey": "Chave da api pessoal:", - "LabelFinish": "Terminar", - "LabelForgotPasswordUsernameHelp": "Digite o nome de seu utilizador, se lembrar.", - "LabelFormat": "Formato:", - "LabelFriendlyName": "Nome amigável", - "LabelServerNameHelp": "Será usado este nome para identificar o servidor. Se não for preenchido, será usado o nome do computador.", - "LabelGroupMoviesIntoCollections": "Agrupar filmes nas coleções", - "LabelGroupMoviesIntoCollectionsHelp": "Ao exibir listas de filmes, filmes que pertençam a uma coleção serão exibidos como um único item agrupado.", - "LabelHardwareAccelerationType": "Aceleração de hardware:", - "LabelHardwareAccelerationTypeHelp": "Disponível apenas em sistemas suportados.", - "LabelHttpsPort": "Número da porta https local:", - "LabelHttpsPortHelp": "O número da porta tcp que o servidor https do Jellyfin deveria se conectar.", - "LabelIconMaxHeight": "Altura máxima do ícone:", - "LabelIconMaxHeightHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", - "LabelIconMaxWidth": "Largura máxima do ícone:", - "LabelIconMaxWidthHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", - "LabelIdentificationFieldHelp": "Uma substring ou expressão regex que não diferencia maiúscula de minúsculas.", - "LabelImageType": "Tipo de imagem:", - "LabelImportOnlyFavoriteChannels": "Restringir a canais marcados como favoritos", - "LabelInNetworkSignInWithEasyPassword": "Ativar acesso dentro da rede com meu código pin fácil", - "LabelInNetworkSignInWithEasyPasswordHelp": "Se ativado, você poderá usar um código pin fácil para entrar nos apps do Jellyfin dentro de sua rede. A sua senha normal só será necessária fora de sua casa. Se o código pin for deixado em branco, não será necessária uma senha dentro de sua rede doméstica.", - "LabelKodiMetadataDateFormat": "Formato da data de lançamento:", - "LabelKodiMetadataDateFormatHelp": "Todas as datas dentro dos nfo's serão lidas e gravadas usando este formato.", - "LabelKodiMetadataEnableExtraThumbs": "Copiar extrafanart para extrathumbs", - "LabelKodiMetadataEnableExtraThumbsHelp": "Ao fazer download das imagens, elas podem ser salvas em ambas extrafanart e extrathumbs para uma maior compatibilidade com as skins do Kodi.", - "LabelKodiMetadataEnablePathSubstitution": "Ativar substituição de local", - "LabelKodiMetadataEnablePathSubstitutionHelp": "Ativa a substituição do local das imagens usando as opções de substituição de caminho no servidor.", - "LabelKodiMetadataSaveImagePaths": "Salvar o local das imagens dentro dos arquivos nfo's", - "LabelKodiMetadataSaveImagePathsHelp": "Esta opção é recomendada se você tiver nomes de arquivos de imagem que não estão de acordo às recomendações do Kodi.", - "LabelLanguage": "Idioma:", - "LabelLineup": "Programação:", - "LabelLocalHttpServerPortNumber": "Número da porta http local:", - "LabelLocalHttpServerPortNumberHelp": "O número da porta tcp que o servidor http do Jellyfin deveria se conectar.", - "LabelLockItemToPreventChanges": "Bloquear este item para evitar alterações futuras", - "LabelLoginDisclaimer": "Aviso legal no login:", - "LabelLoginDisclaimerHelp": "Este aviso será exibido na parte inferior da página de login.", - "LabelManufacturer": "Fabricante", - "LabelManufacturerUrl": "URL do fabricante", - "LabelMatchType": "Tipo de correspondência", - "LabelMaxBackdropsPerItem": "Número máximo de imagens de fundo por item:", - "LabelMaxParentalRating": "Controlo Parental máximo permitido:", - "LabelMaxResumePercentage": "Percentagem máxima para retomar:", - "LabelMaxResumePercentageHelp": "Os títulos são considerados totalmente assistidos se parados depois deste tempo", - "LabelMaxScreenshotsPerItem": "Número máximo de imagens de ecrã por item:", - "LabelMaxStreamingBitrateHelp": "Defina uma taxa máxima para fazer streaming.", - "LabelMessageText": "Texto da mensagem:", - "LabelMessageTitle": "Titulo da mensagem:", - "LabelMetadata": "Metadados:", - "LabelMetadataDownloadLanguage": "Idioma preferido para download:", - "LabelMetadataPath": "Localização dos metadados:", - "LabelMetadataPathHelp": "Define um local para artwork e metadados baixados da internet.", - "LabelMethod": "Método:", - "LabelMinBackdropDownloadWidth": "Transferir Imagens de fundo com o tamanho mínimo:", - "LabelMinResumeDuration": "Duração mínima da retoma (segundos):", - "LabelMinResumeDurationHelp": "Títulos mais curtos que isto não serão retomáveis", - "LabelMinResumePercentage": "Percentagem mínima para retomar:", - "LabelMinResumePercentageHelp": "Os títulos são considerados não assistidos se parados antes deste tempo", - "LabelMinScreenshotDownloadWidth": "Transferir imagens de ecrã com o tamanho mínimo:", - "LabelModelDescription": "Descrição do modelo", - "LabelModelName": "Nome do modelo", - "LabelModelNumber": "Número do modelo", - "LabelModelUrl": "URL do modelo", - "LabelMonitorUsers": "Monitorizar atividade de:", - "LabelMusicStreamingTranscodingBitrate": "Taxa de transcodificação das músicas:", - "LabelMusicStreamingTranscodingBitrateHelp": "Defina a taxa máxima ao fazer streaming das músicas", - "LabelName": "Nome:", - "LabelNewPassword": "Nova senha:", - "LabelNewPasswordConfirm": "Confirmar nova senha:", - "LabelNext": "Seguinte", - "LabelNotificationEnabled": "Ativar esta notificação", - "LabelNumberOfGuideDays": "Número de dias de informação do guia para transferir:", - "LabelNumberOfGuideDaysHelp": "Transferir mais dias de informação do guia permite agendar com maior antecedência e ver mais listagens, no entanto irá levar mais tempo a transferir. Se optar que seja Automático, será escolhido baseado no número de canais.", - "LabelOriginalAspectRatio": "Proporção da imagem original:", - "LabelOverview": "Sinopse:", - "LabelParentalRating": "Classificação parental:", - "LabelPassword": "Senha:", - "LabelPasswordConfirm": "Senha (confirmar):", - "LabelPasswordRecoveryPinCode": "Código pin:", - "LabelPath": "Local:", - "LabelPersonRole": "Personagem:", - "LabelPlaceOfBirth": "Local de nascimento:", - "LabelPlayDefaultAudioTrack": "Reproduzir a faixa de áudio padrão independentemente do idioma", - "LabelPreferredDisplayLanguage": "Idioma de visualização preferencial:", - "LabelPreferredDisplayLanguageHelp": "A tradução do Jellyfin é um projeto contínuo.", - "LabelPrevious": "Anterior", - "LabelProfileAudioCodecs": "Codecs do áudio:", - "LabelProfileCodecsHelp": "Separados por vírgula. Pode ser deixado em branco para usar com todos os codecs.", - "LabelProfileContainer": "Contentor:", - "LabelProfileContainersHelp": "Separados por vírgula. Pode ser deixado em branco para usar com todos os containers.", - "LabelProfileVideoCodecs": "Codecs do vídeo:", - "LabelProtocol": "Protocolo:", - "LabelProtocolInfo": "Informação do protocolo:", - "LabelProtocolInfoHelp": "O valor que será usado ao responder os pedidos GetProtocolInfo do dispositivo.", - "LabelPublicHttpPort": "Número da porta pública de http:", - "LabelPublicHttpPortHelp": "O número da porta pública que deverá ser mapeada para a porta local de http.", - "LabelPublicHttpsPort": "Número da porta pública de https:", - "LabelPublicHttpsPortHelp": "O número da porta pública que deverá ser mapeada para a porta local de https.", - "LabelReadHowYouCanContribute": "Aprenda como pode contribuir.", - "LabelRecordingPath": "Localização predefinida das gravações:", - "LabelReleaseDate": "Data do lançamento:", - "LabelRemoteClientBitrateLimit": "Limite de taxa de bits para streaming da Internet (Mbps):", - "LabelRuntimeMinutes": "Duração (minutos):", - "LabelSaveLocalMetadata": "Guardar imagens e metadados nas pastas multimédia", - "LabelSaveLocalMetadataHelp": "Guardar imagens e metadados diretamente nas pastas multimédia, vai colocá-los num local de fácil acesso para poderem ser editados facilmente.", - "LabelScheduledTaskLastRan": "Última execução {0}, demorando {1}.", - "LabelSeasonNumber": "Número da temporada:", - "LabelSelectUsers": "Selecionar utilizadores:", - "LabelSelectVersionToInstall": "Selecione a versão para instalar:", - "LabelSendNotificationToUsers": "Enviar notificação para:", - "LabelSerialNumber": "Número de série", - "LabelServerHost": "Servidor:", - "LabelServerHostHelp": "192.168.1.100 ou https://meuservidor.com", - "LabelServerPort": "Porta:", - "LabelSkipIfAudioTrackPresent": "Ignorar se a faixa de áudio padrão coincidir com o idioma de download", - "LabelSkipIfAudioTrackPresentHelp": "Desmarque esta opção para garantir que todos os vídeos têm legendas, independentemente do idioma do áudio.", - "LabelSkipIfGraphicalSubsPresent": "Ignorar se o vídeo já possuir legendas embutidas", - "LabelSkipIfGraphicalSubsPresentHelp": "Manter versões das legendas em texto resultará em uma entrega mais eficiente e diminuirá a necessidade de transcodificação do vídeo.", - "LabelSonyAggregationFlags": "Flags de agregação da Sony:", - "LabelSonyAggregationFlagsHelp": "Determina o conteúdo do elemento aggregationFlags no namespace urn:schemas-sonycom:av.", - "LabelSource": "Fonte:", - "LabelStartWhenPossible": "Começar quando possível:", - "LabelStatus": "Estado:", - "LabelStopWhenPossible": "Parar quando possível:", - "LabelStopping": "Parando", - "LabelSubtitleFormatHelp": "Exemplo: srt", - "LabelSubtitlePlaybackMode": "Modo da Legenda:", - "LabelSupportedMediaTypes": "Tipos de Conteúdos Suportados:", - "LabelTagline": "Slogan:", - "LabelTime": "Tempo:", - "LabelTimeLimitHours": "Limite de tempo (horas):", - "LabelTranscodingAudioCodec": "Codec do Áudio:", - "LabelTranscodingContainer": "Contentor:", - "LabelTranscodingTempPathHelp": "Esta pasta contém arquivos ativos usados pelo transcodificador. Especifique um local personalizado ou deixe em branco para usar o padrão dentro da pasta de dados do servidor.", - "LabelTranscodingThreadCount": "Contagem de threads da transcodificação:", - "LabelTranscodingThreadCountHelp": "Selecione o número máximo de threads a ser usado quando transcodificar. Reduzir o número de threads irá diminuir o uso da CPU, mas pode não converter rápido o suficiente para uma experiência de reprodução suave.", - "LabelTranscodingVideoCodec": "Codec do vídeo:", - "LabelTriggerType": "Tipo do Acionador:", - "LabelTunerIpAddress": "Endereço IP do Sintonizador:", - "LabelTunerType": "Tipo do sintonizador:", - "LabelType": "Tipo:", - "LabelTypeText": "Texto", - "LabelUseNotificationServices": "Usar os seguintes serviços:", - "LabelUser": "Utilizador:", - "LabelUserLibrary": "Biblioteca do utilizador:", - "LabelUserLibraryHelp": "Selecione qual é a biblioteca de utilizador a mostrar no dispositivo. Deixe em branco para herdar a definição padrão.", - "LabelUsername": "Nome de Utilizador:", - "LabelValue": "Valor:", - "LabelVersionInstalled": "{0} instalado", - "LabelVersionNumber": "Versão {0}", - "LabelXDlnaCapHelp": "Determina o conteúdo do elemento X_DLNACAP no namespace urn:schemas-dlna-org:device-1-0.", - "LabelXDlnaDocHelp": "Determina o conteúdo do elemento X_DLNADOC no namespace urn:schemas-dlna-org:device-1-0", - "LabelYourFirstName": "O seu primeiro nome:", - "LabelYoureDone": "Concluiu!", - "LabelZipCode": "CEP:", - "LibraryAccessHelp": "Escolha as pastas multimédia a partilhar com este utilizador. Os Administradores poderão editar todas as pastas, usando o Gestor de Metadados.", - "MaxParentalRatingHelp": "Conteúdo com classificação mais elevada será escondida deste utilizador.", - "MessageAreYouSureDeleteSubtitles": "Deseja realmente remover este arquivo de legendas?", - "MessageAreYouSureYouWishToRemoveMediaFolder": "Deseja realmente excluir esta pasta multimédia?", - "MessageConfirmProfileDeletion": "Deseja realmente remover este perfil?", - "MessageConfirmRecordingCancellation": "Deseja realmente cancelar esta gravação?", - "MessageConfirmRestart": "Deseja realmente reiniciar o Servidor Jellyfin?", - "MessageConfirmRevokeApiKey": "Deseja realmente revogar esta chave de api? A conexão da aplicação com o Servidor Jellyfin será abruptamente encerrada.", - "MessageConfirmShutdown": "Deseja realmente desligar o Servidor Jellyfin?", - "MessageDeleteTaskTrigger": "Deseja realmente excluir este disparador de tarefa?", - "MessageDirectoryPickerBSDInstruction": "Para BSD, você precisará configurar o disco dentro de seu Jail do FreeNAS para permitir que o Jellyfin tenha acesso a ele.", - "MessageDirectoryPickerInstruction": "Os locais de rede podem ser digitados manualmente caso o botão de Rede não consiga localizar seus dispositivos. Por exemplo, {0} ou {1}.", - "MessageDirectoryPickerLinuxInstruction": "Para Linux no Arch Linux, CentOS, Debian, Fedora, OpenSuse ou Ubuntu, você deve permitir que o utilizador Jellyfin tenha ao menos acesso de leitura no seu disco.", - "MessageEnablingOptionLongerScans": "Ativar esta opção pode aumentar significativamente a duração da análise da biblioteca.", - "MessageFileReadError": "Ocorreu um erro ao ler este arquivo.", - "MessageInvalidUser": "Nome de utilizador ou senha inválidos. Por favor, tente novamente.", - "MessageItemSaved": "Item salvo.", - "MessageItemsAdded": "Itens adicionados", - "MessageLeaveEmptyToInherit": "Deixar em branco para herdar os ajustes de um item superior, ou o valor padrão global", - "MessageNoAvailablePlugins": "Sem extensões disponíveis.", - "MessageNoMovieSuggestionsAvailable": "Não existem sugestões de filmes disponíveis atualmente. Comece por assistir e avaliar seus filmes e, então, volte para verificar suas recomendações.", - "MessageNoPluginsInstalled": "Você não possui plugins instalados.", - "MessageNoTrailersFound": "Nenhum trailer encontrado. Instale o canal Trailer para melhorar sua experiência com filmes, adicionando uma biblioteca de trailers da internet.", - "MessageNothingHere": "Nada aqui.", - "MessagePasswordResetForUsers": "As senhas foram removidas dos seguintes utilizadores. Para entrar, acesse com uma senha em branco", - "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transferência de metadados da internet está activa.", - "MessageReenableUser": "Veja abaixo para reativar", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "As localizações dos ficheiros multimédia abaixo serão excluídas de sua biblioteca Jellyfin:", - "MinutesAfter": "minutos depois", - "MinutesBefore": "minutos antes", - "Monday": "Segunda", - "More": "Mais", - "MoreUsersCanBeAddedLater": "É possível adicionar utilizadores mais tarde no Painel Principal", - "Mute": "Desativar Som", - "NewCollection": "Nova Coleção", - "NewCollectionNameExample": "Exemplo: Coleção Guerra das Estrelas", - "NoNextUpItemsMessage": "Nenhum encontrado. Comece a ver os seus programas!", - "OptionAdminUsers": "Administradores", - "OptionAlbum": "Álbum", - "OptionAlbumArtist": "Artista do Álbum", - "OptionAllUsers": "Todos os utilizadores", - "OptionAllowAudioPlaybackTranscoding": "Permitir reprodução de áudio que necessite de transcodificação", - "OptionAllowBrowsingLiveTv": "Permitir acesso a TV ao Vivo", - "OptionAllowContentDownloading": "Permitir download dos ficheiros multimédia", - "OptionAllowLinkSharing": "Permitir partilha nas redes sociais", - "OptionAllowManageLiveTv": "Permitir gerir gravações de TV ao Vivo", - "OptionAllowMediaPlayback": "Permitir reprodução de média", - "OptionAllowMediaPlaybackTranscodingHelp": "Restringir o acesso à transcodificação pode causar falhas de reprodução nas aplicações do Jellyfin devido a formatos multimédia não suportados.", - "OptionAllowRemoteControlOthers": "Permitir controlo remoto de outros utilizadores", - "OptionAllowRemoteSharedDevices": "Permitir controlo remoto de dispositivos compartilhados", - "OptionAllowRemoteSharedDevicesHelp": "Dispositivos DLNA são considerados compartilhados até que um utilizador comece a controlá-lo.", - "OptionAllowUserToManageServer": "Permitir a este utilizador gerir o servidor", - "OptionAllowVideoPlaybackTranscoding": "Permitir reprodução de vídeo que necessite de transcodificação", - "OptionArtist": "Artista", - "OptionAscending": "Ascendente", - "OptionAutomatic": "Automático", - "OptionBlockBooks": "Livros", - "OptionBlockChannelContent": "Conteúdo do Canal de Internet", - "OptionBlockLiveTvChannels": "Canais de TV ao vivo", - "OptionBlockMovies": "Filmes", - "OptionBlockMusic": "Música", - "OptionBlockTvShows": "Séries de TV", - "OptionCommunityRating": "Classificação da Comunidade", - "OptionContinuing": "A Continuar", - "OptionCriticRating": "Classificação dos críticos", - "OptionCustomUsers": "Personalizado", - "OptionDaily": "Diariamente", - "OptionDateAdded": "Data de adição", - "OptionDateAddedFileTime": "Usar a data de criação do arquivo", - "OptionDateAddedImportTime": "Usar a data obtida na biblioteca", - "OptionDatePlayed": "Data de reprodução", - "OptionDescending": "Descendente", - "OptionDisableUser": "Desativar este utilizador", - "OptionDisableUserHelp": "Se desativado, o servidor não permite nenhuma conexão deste utilizador. Conexões existentes serão terminadas.", - "OptionDislikes": "Não gostos", - "OptionDownloadArtImage": "Arte", - "OptionDownloadBackImage": "Traseira", - "OptionDownloadBoxImage": "Caixa", - "OptionDownloadDiscImage": "Disco", - "OptionDownloadImagesInAdvanceHelp": "Por padrão, a maioria das imagens são descarregadas só quando uma aplicação do Jellyfin solicita. Ativar esta opção para descarregar todas as imagens antencipadamente, assim que os novos ficheiros multimédia são importados. Isto pode aumentar significativamente a duração da análise da biblioteca.", - "OptionDownloadPrimaryImage": "Principal", - "OptionDownloadThumbImage": "Miniatura", - "OptionDvd": "DVD", - "OptionEmbedSubtitles": "Incorporar no recipiente", - "OptionEnableAccessFromAllDevices": "Ativar acesso de todos os dispositivos", - "OptionEnableAccessToAllChannels": "Permitir acesso a todos os canais", - "OptionEnableAccessToAllLibraries": "Permitir acesso a todas as bibliotecas", - "OptionEnableAutomaticServerUpdates": "Ativar as atualizações automáticas do servidor", - "OptionEnableM2tsMode": "Ativar modo M2ts", - "OptionEnableM2tsModeHelp": "Ative o modo m2ts quando codificar para mpegts.", - "OptionEnded": "Terminado", - "OptionEquals": "Iguais", - "OptionEstimateContentLength": "Estimar o tamanho do conteúdo ao transcodificar", - "OptionEveryday": "Todos os dias", - "OptionExternallyDownloaded": "Download Externo", - "OptionFavorite": "Favoritos", - "OptionFriday": "Sexta", - "OptionHasSpecialFeatures": "Extras", - "OptionHasSubtitles": "Legendas", - "OptionHasThemeSong": "Música de Tema", - "OptionHasThemeVideo": "Vídeo de Tema", - "OptionHideUser": "Ocultar este utilizador dos formulários de início de sessão", - "OptionHideUserFromLoginHelp": "Útil para contas de administrador privadas ou ocultas. O utilizador necessita de entrar manualmente, introduzindo o seu nome de utilizador e senha.", - "OptionHlsSegmentedSubtitles": "Legendas segmentadas hls", - "OptionIgnoreTranscodeByteRangeRequests": "Ignorar requisições de extensão do byte de transcodificação", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Se ativadas, estas requisições serão honradas mas irão ignorar o cabeçalho da extensão do byte.", - "OptionImdbRating": "Classificação no IMDb", - "OptionLikes": "Gostos", - "OptionMax": "Máx", - "OptionMissingEpisode": "Episódios em Falta", - "OptionMonday": "Segunda", - "OptionNameSort": "Nome", - "OptionNew": "Nova...", - "OptionNone": "Nenhum", - "OptionOnAppStartup": "Ao iniciar a aplicação", - "OptionOnInterval": "Num intervalo", - "OptionParentalRating": "Classificação Parental", - "OptionPlainStorageFolders": "Mostrar todas as pasta como pastas de armazenamento simples.", - "OptionPlainStorageFoldersHelp": "Se ativado, todas as pastas são representadas no DIDL como \"object.container.storageFolder\" ao invés de um tipo mais específico como, por exemplo, \"object.container.person.musicArtist\".", - "OptionPlainVideoItems": "Exibir todos os vídeos como itens de vídeo simples", - "OptionPlainVideoItemsHelp": "Se ativado, todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", - "OptionPlayCount": "N.º Visualizações", - "OptionPlayed": "Reproduzido", - "OptionPremiereDate": "Data de Estreia", - "OptionProfileAudio": "Áudio", - "OptionProfilePhoto": "Fotografia", - "OptionProfileVideo": "Vídeo", - "OptionProfileVideoAudio": "Áudio do Vídeo", - "OptionReleaseDate": "Data de Lançamento:", - "OptionReportByteRangeSeekingWhenTranscoding": "Reportar que o servidor suporta busca de byte quando transcodificar", - "OptionReportByteRangeSeekingWhenTranscodingHelp": "Isto é necessário para alguns dispositivos que não procuram o tempo muito bem.", - "OptionResElement": "elemento res", - "OptionResumable": "Retomável", - "OptionRuntime": "Duração", - "OptionSaturday": "Sábado", - "OptionSaveMetadataAsHidden": "Salvar metadados e imagens como arquivos ocultos", - "OptionSpecialEpisode": "Especiais", - "OptionSunday": "Domingo", - "OptionThursday": "Quinta", - "OptionTrackName": "Nome da pista", - "OptionTuesday": "Terça", - "OptionTvdbRating": "Classificação no Tvdb", - "OptionUnairedEpisode": "Episódios por Estrear", - "OptionUnplayed": "Por reproduzir", - "OptionWakeFromSleep": "Retomar da suspensão", - "OptionWednesday": "Quarta", - "OptionWeekdays": "Dias da semana", - "OptionWeekends": "Fins-de-semana", - "OptionWeekly": "Semanalmente", - "ParentalRating": "Parental Rating", - "PasswordMatchError": "A senha e a confirmação da senha devem coincidir.", - "PasswordResetComplete": "A senha foi redefinida.", - "PasswordResetConfirmation": "Tem a certeza que deseja redefinir a senha?", - "PasswordResetHeader": "Redefinir Senha", - "PasswordSaved": "Senha guardada.", - "PinCodeResetComplete": "O código pin foi redefinido.", - "PinCodeResetConfirmation": "Deseja realmente redefinir o código pin?", - "Play": "Reproduzir", - "PlayNextEpisodeAutomatically": "Reproduzir próximo episódio automaticamente", - "PleaseEnterNameOrId": "Por favor, digite um nome ou Id externo.", - "PleaseSelectTwoItems": "Por favor selecione pelo menos dois itens.", - "Producer": "Produtor", - "RecommendationBecauseYouLike": "Porque gosta de {0}", - "RecommendationBecauseYouWatched": "Porque viu {0}", - "RecommendationDirectedBy": "Realizado por {0}", - "RecommendationStarring": "{0} como protagonista", - "Record": "Gravar", - "RecordingCancelled": "Gravação cancelada.", - "RecordingScheduled": "Gravação agendada.", - "Refresh": "Atualizar", - "Repeat": "Repetir", - "ReplaceExistingImages": "Substituir imagens existentes", - "Rewind": "Retroceder", - "Saturday": "Sábado", - "Save": "Guardar", - "ScanLibrary": "Analisar biblioteca", - "Search": "Busca", - "SearchForCollectionInternetMetadata": "Procurar na internet por imagens e metadados", - "SearchForSubtitles": "Buscar Legendas", - "SendMessage": "Enviar mensagem", - "Series": "Séries", - "ServerUpdateNeeded": "Este Servidor Jellyfin precisa ser atualizado. Para fazer download da versão mais recente, por favor visite {0}", - "Settings": "Ajustes", - "SettingsSaved": "Configurações guardadas.", - "Share": "Partilhar", - "Shuffle": "Aleatório", - "Subtitles": "Legendas", - "Sunday": "Domingo", - "SystemDlnaProfilesHelp": "Perfis de sistema são apenas de leitura. Mudanças a um perfil de sistema serão guardadas num novo perfil personalizado.", - "TabAccess": "Acesso", - "TabAdvanced": "Avançado", - "TabAlbumArtists": "Artistas do Álbum", - "TabAlbums": "Álbuns", - "TabArtists": "Artistas", - "TabCatalog": "Catálogo", - "TabChannels": "Canais", - "TabCollections": "Coleções", - "TabContainers": "Contentores", - "TabDashboard": "Painel Principal", - "TabDevices": "Dispositivos", - "TabDirectPlay": "Reprodução Direta", - "TabDisplay": "Exibição", - "TabEpisodes": "Episódios", - "TabFavorites": "Favoritos", - "TabGenres": "Géneros", - "TabGuide": "Guia", - "TabHosting": "Hospedagem", - "TabLatest": "Mais recente", - "TabLibrary": "Biblioteca", - "TabLiveTV": "TV ao Vivo", - "TabMetadata": "Metadados", - "TabMovies": "Filmes", - "TabMusic": "Música", - "TabMusicVideos": "Videos Musicais", - "TabMyPlugins": "As minhas extensões", - "TabNetworks": "Redes", - "TabNfoSettings": "Ajustes para Nfo", - "TabNotifications": "Notificações", - "TabOther": "Outro", - "TabParentalControl": "Controlo Parental", - "TabPassword": "Senha", - "TabPlayback": "Reprodução", - "TabPlaylist": "Lista de Reprodução", - "TabPlaylists": "Listas de Reprodução", - "TabPlugins": "Extensões", - "TabProfile": "Perfil", - "TabProfiles": "Perfis", - "TabRecordings": "Gravações", - "TabResponses": "Respostas", - "TabScheduledTasks": "Tarefas Agendadas", - "TabSecurity": "Segurança", - "TabSeries": "Séries", - "TabServer": "Servidor", - "TabSettings": "Configurações", - "TabShows": "Séries", - "TabSongs": "Músicas", - "TabSuggestions": "Sugestões", - "TabTranscoding": "Transcodificação", - "TabUpcoming": "Próximos", - "TabUsers": "Utilizadores", - "TellUsAboutYourself": "Fale-nos sobre si", - "ThisWizardWillGuideYou": "Este assistente irá ajudá-lo durante o processo de configuração. Para começar, selecione o idioma.", - "Thursday": "Quinta", - "TitlePlayback": "Reprodução", - "TrackCount": "{0} faixas", - "Tuesday": "Terça", - "UninstallPluginConfirmation": "Tem a certeza que deseja desinstalar {0}?", - "UninstallPluginHeader": "Desinstalar extensão", - "Unmute": "Ativar Som", - "UserProfilesIntro": "O Jellyfin inclui suporte nativo de perfis de utilizadores, permitindo que cada utilizador tenha as suas configurações de visualização, estado da reprodução e controlos parentais.", - "ValueAudioCodec": "Codec de Áudio: {0}", - "ValueConditions": "Condições: {0}", - "ValueSpecialEpisodeName": "Especial - {0}", - "ValueTimeLimitMultiHour": "Limite de tempo: {0} horas", - "ValueTimeLimitSingleHour": "Limite de tempo: 1 hora", - "ValueVideoCodec": "Codec de Vídeo: {0}", - "Wednesday": "Quarta", - "WelcomeToProject": "Bem-vindo ao Jellyfin!", - "WizardCompleted": "É tudo, de momento. O Jellyfin começou a recolher informações da sua biblioteca multimédia. Confira algumas das nossas apps e de seguida clique Terminar para ver o Painel Principal do Servidor", - "Writer": "Escritor", - "XmlDocumentAttributeListHelp": "Estes atributos são aplicados ao elemento principal de cada resposta xml." + "Actor": "Ator", + "Add": "Adicionar", + "AddToPlaylist": "Adicionar à lista de reprodução", + "AdditionalNotificationServices": "Explore o catálogo de extensões para instalar serviços adicionais de notificação.", + "All": "Tudo", + "AttributeNew": "Novo", + "Audio": "Áudio", + "Backdrops": "Imagens de Fundo", + "BrowsePluginCatalogMessage": "Procure extensões disponíveis no nosso catálogo.", + "ButtonAdd": "Adicionar", + "ButtonAddMediaLibrary": "Adicionar Biblioteca de Multimédia", + "ButtonAddScheduledTaskTrigger": "Adicionar Disparador", + "ButtonAddServer": "Adicionar Servidor", + "ButtonAddUser": "Adicionar Utilizador", + "ButtonArrowDown": "Baixo", + "ButtonArrowLeft": "Esquerda", + "ButtonArrowRight": "Direita", + "ButtonArrowUp": "Cima", + "ButtonBack": "Voltar", + "ButtonCancel": "Cancelar", + "ButtonChangeServer": "Alterar Servidor", + "ButtonConnect": "Conectar", + "ButtonDelete": "Remover", + "ButtonDeleteImage": "Apagar imagem", + "ButtonEdit": "Editar", + "ButtonEditOtherUserPreferences": "Editar este perfil de utilizador, imagem e preferências pessoais.", + "ButtonFilter": "Filtro", + "ButtonForgotPassword": "Esqueci a senha", + "ButtonFullscreen": "Ecrã Inteiro", + "ButtonHelp": "Ajuda", + "ButtonHome": "Início", + "ButtonInfo": "Informação", + "ButtonLearnMore": "Saiba mais", + "ButtonManualLogin": "Início de Sessão Manual", + "ButtonMore": "Mais", + "ButtonNetwork": "Rede", + "ButtonNew": "Novo", + "ButtonNextTrack": "Faixa seguinte", + "ButtonOpen": "Abrir", + "ButtonPause": "Pausar", + "ButtonPlay": "Reproduzir", + "ButtonPreviousTrack": "Faixa anterior", + "ButtonProfile": "Perfil", + "ButtonQuickStartGuide": "Guia rápido", + "ButtonRefresh": "Atualizar", + "ButtonRefreshGuideData": "Atualizar Dados do Guia", + "ButtonRemove": "Remover", + "ButtonRepeat": "Repetir", + "ButtonResetEasyPassword": "Redefinir código pin fácil", + "ButtonResetPassword": "Redefinir Senha", + "ButtonRestart": "Reiniciar", + "ButtonResume": "Retomar", + "ButtonRevoke": "Revogar", + "ButtonSave": "Guardar", + "ButtonScanAllLibraries": "Analisar todas as Bibliotecas", + "ButtonSearch": "Procurar", + "ButtonSelectDirectory": "Selecione a diretoria", + "ButtonSelectView": "Selecionar visualização", + "ButtonSend": "Enviar", + "ButtonSettings": "Ajustes", + "ButtonShuffle": "Aleatório", + "ButtonShutdown": "Encerrar", + "ButtonSignIn": "Iniciar Sessão", + "ButtonSignOut": "Sair", + "ButtonSort": "Organizar", + "ButtonSplitVersionsApart": "Separar Versões", + "ButtonStart": "Iniciar", + "ButtonStop": "Parar", + "ButtonSubmit": "Enviar", + "ButtonSubtitles": "Legendas", + "ButtonUninstall": "Desinstalar", + "ButtonUpload": "Carregar", + "ButtonViewWebsite": "Ver website", + "ChannelAccessHelp": "Selecione os canais a compartilhar com este utilizador. Administradores poderão editar todos os canais usando o gestor de metadados.", + "CinemaModeConfigurationHelp": "O modo cinema traz a experiência do cinema para a sua sala, possibilitando reproduzir trailers e introduções personalizadas antes da longa-metragem.", + "Composer": "Compositor", + "ConfirmDeleteItem": "Excluir este item o excluirá do sistema de arquivos e também da biblioteca multimédia. Deseja realmente continuar?", + "ConfirmDeleteItems": "Ao excluir estes itens você os excluirá do sistema de arquivos e de sua biblioteca multimédia. Deseja realmente continuar?", + "ConfirmDeletion": "Confirmar Exclusão", + "Connect": "Conectar", + "Continuing": "A Continuar", + "CustomDlnaProfilesHelp": "Crie um perfil personalizado para um novo dispositivo ou para sobrepor um perfil de sistema.", + "Delete": "Remover", + "DeleteDeviceConfirmation": "Deseja realmente excluir este dispositivo? Ele reaparecerá da próxima vez que um utilizador o utilize.", + "DeleteImage": "Apagar Imagem", + "DeleteImageConfirmation": "Tem a certeza que deseja apagar a imagem?", + "DeleteMedia": "Remover multimédia", + "DeleteUser": "Apagar Utilizador", + "DeleteUserConfirmation": "Tem a certeza que deseja apagar este utilizador?", + "DeviceAccessHelp": "Isto apenas se aplica para dispositivos que podem ser identificados como únicos e não evitarão o acesso do navegador. Filtrar o acesso ao dispositivo do utilizador evita que sejam usados novos dispositivos até que sejam aprovados aqui.", + "Director": "Diretor", + "EasyPasswordHelp": "Seu código pin fácil é usado para acesso off-line com apps suportados pelo Jellyfin e pode ser usado para acesso fácil dentro da rede.", + "Edit": "Editar", + "EnableCinemaMode": "Ativar modo cinema", + "Ended": "Terminado", + "ErrorAddingMediaPathToVirtualFolder": "Ocorreu um erro ao adicionar o local dos seus ficheiros. Por favor, assegure-se que o local é valido e que o processo do Jellyfin Server tenha acesso a essa localização.", + "ErrorGettingTvLineups": "Ocorreu um erro ao fazer download da programação da tv. Por favor, certifique-se que a sua informação está correta e tente novamente.", + "ErrorPleaseSelectLineup": "Por favor selecione a programação e tente novamente. Se não houver programações disponíveis, verifique se o seu nome de utilizador, senha e código postal estão corretos.", + "ExitFullscreen": "Sair do ecrã inteiro", + "FastForward": "Avanço rápido", + "FileNotFound": "Ficheiro não encontrado.", + "FileReadCancelled": "A leitura do ficheiro foi cancelada.", + "FileReadError": "Ocorreu um erro ao ler o ficheiro.", + "FolderTypeBooks": "Livros", + "FolderTypeMovies": "Filmes", + "FolderTypeMusic": "Música", + "FolderTypeMusicVideos": "Vídeos musicais", + "FolderTypeTvShows": "TV", + "Friday": "Sexta", + "Fullscreen": "Ecrã inteiro", + "GuideProviderSelectListings": "Selecionar Listas", + "HeaderAccessSchedule": "Agendamento de Acesso", + "HeaderAccessScheduleHelp": "Criar um agendamento de acesso para limitar o acesso a certas horas.", + "HeaderActiveDevices": "Dispositivos Ativos", + "HeaderActiveRecordings": "Gravações ativas", + "HeaderActivity": "Atividade", + "HeaderAddScheduledTaskTrigger": "Adicionar Disparador", + "HeaderAddToCollection": "Adicionar à Coleção", + "HeaderAddUpdateImage": "Adicionar/Atualizar Imagem", + "HeaderAddUser": "Adicionar Utilizador", + "HeaderAdditionalParts": "Partes Adicionais", + "HeaderApiKey": "Chave da API", + "HeaderApiKeys": "Chaves da API", + "HeaderApiKeysHelp": "As aplicações externas necessitam de uma chave da API para comunicar com o Jellyfin Server. As chaves são emitidas ao entrar com uma conta Jellyfin ou concedendo manualmente a chave à aplicação.", + "HeaderApp": "Aplicação", + "HeaderAudioSettings": "Ajustes de Áudio", + "HeaderAutomaticUpdates": "Atualizações automáticas", + "HeaderBlockItemsWithNoRating": "Bloquear conteúdo sem informação de classificação etária ou com informação desconhecida:", + "HeaderBranding": "Marca", + "HeaderCastCrew": "Elenco e Equipa", + "HeaderChannelAccess": "Acesso ao Canal", + "HeaderChannels": "Canais", + "HeaderCodecProfile": "Perfil do Codec", + "HeaderCodecProfileHelp": "Perfis do Codec indicam as limitações de um dispositivo ao reproduzir codecs específicos. Se uma limitação ocorre, o ficheiro multimédia será transcodificado, mesmo se o codec estiver configurado para reprodução direta.", + "HeaderConfirmProfileDeletion": "Confirmar Remoção do Perfil", + "HeaderConfirmRevokeApiKey": "Revogar Chave da API", + "HeaderConnectToServer": "Conectar ao Servidor", + "HeaderContainerProfile": "Perfil do Container", + "HeaderContainerProfileHelp": "Perfis do Container indicam as limitações de um dispositivo ao reproduzir formatos específicos. Se uma limitação ocorre, o ficheiro multimédia será transcodificado, mesmo se o formato estiver configurado para reprodução direta.", + "HeaderContinueWatching": "Continuar a Ver", + "HeaderCustomDlnaProfiles": "Perfis Personalizados", + "HeaderDateIssued": "Data da Emissão", + "HeaderDeleteItem": "Remover item", + "HeaderDeleteItems": "Remover Itens", + "HeaderDeleteTaskTrigger": "Excluir Disparador da Tarefa", + "HeaderDeveloperInfo": "Informação do Programador", + "HeaderDeviceAccess": "Acesso ao Dispositivo", + "HeaderDevices": "Dispositivos", + "HeaderDirectPlayProfile": "Perfil da Reprodução Direta", + "HeaderDirectPlayProfileHelp": "Adicionar perfis de reprodução direta que indiquem que formatos o dispositivo pode suportar nativamente.", + "HeaderDisplay": "Exibição", + "HeaderDisplaySettings": "Apresentar Configurações", + "HeaderEasyPinCode": "Código PIN", + "HeaderEnabledFields": "Campos Ativados", + "HeaderEnabledFieldsHelp": "Desmarque um campo para bloqueá-lo e evitar que seus dados sejam alterados.", + "HeaderError": "Erro", + "HeaderFeatureAccess": "Acesso a Características", + "HeaderFeatures": "Recursos", + "HeaderFetchImages": "Buscar Imagens:", + "HeaderFilters": "Filtros", + "HeaderForgotPassword": "Esqueci a Senha", + "HeaderFrequentlyPlayed": "Reproduzido frequentemente", + "HeaderGenres": "Gêneros", + "HeaderGuideProviders": "Provedores de Guia", + "HeaderHttpHeaders": "Cabeçalhos HTTP", + "HeaderIdentification": "Identificação", + "HeaderIdentificationCriteriaHelp": "Digite, pelo menos, um critério de identificação.", + "HeaderIdentificationHeader": "Cabeçalho de Identificação", + "HeaderIdentifyItemHelp": "Digite um ou mais critérios de busca. Exclua o critério para aumentar os resultados da busca.", + "HeaderImageSettings": "Opções da Imagem", + "HeaderInstall": "Instalar", + "HeaderInstantMix": "Mix instantâneo", + "HeaderLatestEpisodes": "Últimos Episódios", + "HeaderLatestMedia": "Multimédia Recente", + "HeaderLatestMovies": "Últimos Filmes", + "HeaderLatestMusic": "Últimas Músicas", + "HeaderLatestRecordings": "Últimas Gravações", + "HeaderLibraries": "Bibliotecas", + "HeaderLibraryAccess": "Acesso à Biblioteca", + "HeaderLibraryFolders": "Pastas multimédia", + "HeaderLibrarySettings": "Definições da Biblioteca", + "HeaderLiveTV": "TV em Direto", + "HeaderLiveTv": "TV ao Vivo", + "HeaderLoginFailure": "Falha no Login", + "HeaderMedia": "Multimédia", + "HeaderMediaFolders": "Pastas Multimédia", + "HeaderMediaInfo": "Informações Multimédia", + "HeaderMetadataSettings": "Ajustes dos Metadados", + "HeaderMusicVideos": "Vídeos de Música", + "HeaderMyMedia": "A Minha Multimédia", + "HeaderNewApiKey": "Nova Chave da API", + "HeaderNextUp": "A Seguir", + "HeaderParentalRatings": "Classificações Parentais", + "HeaderPassword": "Senha", + "HeaderPasswordReset": "Redefinição de Senha", + "HeaderPaths": "Localizações", + "HeaderPendingInvitations": "Convites pendentes", + "HeaderPeople": "Pessoas", + "HeaderPinCodeReset": "Redefinir Código Pin", + "HeaderPlayAll": "Reproduzir Todos", + "HeaderPlayback": "Reprodução de Mídia", + "HeaderPlaybackError": "Erro na Reprodução", + "HeaderPlaybackSettings": "Opções de Reprodução", + "HeaderPleaseSignIn": "Por favor inicie a sessão", + "HeaderPreferredMetadataLanguage": "Idioma Preferencial dos Metadados", + "HeaderProfile": "Perfil", + "HeaderProfileInformation": "Informação do Perfil", + "HeaderProfileServerSettingsHelp": "Estes valores controlam como o Servidor Jellyfin se apresenta a si mesmo para o dispositivo.", + "HeaderRecentlyPlayed": "Reproduzido recentemente", + "HeaderRemoteControl": "Controlo Remoto", + "HeaderRemoveMediaFolder": "Excluir Pasta Multimédia", + "HeaderRemoveMediaLocation": "Remover Localização dos ficheiros multimédia", + "HeaderResponseProfile": "Perfil de Resposta", + "HeaderResponseProfileHelp": "Perfis de resposta oferecem uma forma de personalizar a informação enviada para o dispositivo ao executar certos ficheiros multimédia.", + "HeaderRestart": "Reiniciar", + "HeaderRevisionHistory": "Histórico de Versões", + "HeaderRunningTasks": "Tarefas em Execução", + "HeaderScenes": "Cenas", + "HeaderSchedule": "Agendamento", + "HeaderSelectCertificatePath": "Selecione o Local do Certificado", + "HeaderSelectMetadataPath": "Selecione o Local dos Metadados", + "HeaderSelectMetadataPathHelp": "Localize ou digite o local que você gostaria de armazenar os metadados. A pasta deve ser gravável.", + "HeaderSelectPath": "Selecione o Local", + "HeaderSelectServer": "Selecionar Servidor", + "HeaderSelectServerCachePath": "Selecione o Local do Cache do Servidor", + "HeaderSelectServerCachePathHelp": "Localize ou digite o local para armazenar o cache do servidor. A pasta deve permitir gravação.", + "HeaderSelectTranscodingPath": "Selecione o Local Temporário da Transcodificação", + "HeaderSelectTranscodingPathHelp": "Localize ou insira o local para usar para os ficheiros temporários de transcodificação. A pasta deve permitir a escrita.", + "HeaderSendMessage": "Enviar mensagem", + "HeaderSeries": "Série", + "HeaderServerSettings": "Opções do Servidor", + "HeaderSettings": "Ajustes", + "HeaderSetupLibrary": "Configurar as suas bibliotecas multimédia", + "HeaderShutdown": "Encerrar", + "HeaderSpecialEpisodeInfo": "Informação do Episódio Especial", + "HeaderSpecialFeatures": "Extras", + "HeaderStatus": "Estado", + "HeaderSubtitleProfile": "Perfil da Legenda", + "HeaderSubtitleProfiles": "Perfis da Legenda", + "HeaderSubtitleProfilesHelp": "Perfis da legenda descrevem os formatos da legenda suportados pelo dispositivo.", + "HeaderSubtitleSettings": "Ajustes de Legenda", + "HeaderSystemDlnaProfiles": "Perfis de Sistema", + "HeaderTaskTriggers": "Disparadores de Tarefa", + "HeaderThisUserIsCurrentlyDisabled": "Este utilizador está desativado atualmente", + "HeaderTranscodingProfile": "Perfil da Transcodificação", + "HeaderTranscodingProfileHelp": "Adicionar perfis de transcodificação que indiquem que formatos deverão ser usados quando a transcodificação é necessária.", + "HeaderTunerDevices": "Sintonizadores", + "HeaderTypeText": "Inserir texto", + "HeaderUploadNewImage": "Carregar Nova Imagem", + "HeaderUser": "Utilizador", + "HeaderUsers": "Utilizadores", + "HeaderVideoTypes": "Tipos de Vídeo", + "HeaderVideos": "Vídeos", + "HeaderXmlDocumentAttribute": "Atributo do Documento Xml", + "HeaderXmlDocumentAttributes": "Atributos do Documento Xml", + "HeaderXmlSettings": "Ajustes do Xml", + "HeaderYears": "Anos", + "HeadersFolders": "Pastas", + "Help": "Ajuda", + "Identify": "Identificar", + "Images": "Imagens", + "ImportFavoriteChannelsHelp": "Se ativado, apenas canais que estão marcados como favoritos no sintonizador serão importados.", + "ImportMissingEpisodesHelp": "Se ativo, a informação acerca dos episódios em falta, serão importados para a sua base de dados do Jellyfin e exibida dentro das temporadas e séries. Isto pode aumentar significativamente a duração da análise da biblioteca.", + "InstantMix": "Mix instântaneo", + "ItemCount": "{0} itens", + "Label3DFormat": "Formato 3D:", + "LabelAccessDay": "Dia da semana:", + "LabelAccessEnd": "Hora final:", + "LabelAccessStart": "Hora inicial:", + "LabelAirDays": "Dias da exibição:", + "LabelAirTime": "Horário:", + "LabelAirsAfterSeason": "Exibido depois da temporada:", + "LabelAirsBeforeEpisode": "Exibido antes do episódio:", + "LabelAirsBeforeSeason": "Exibido antes da temporada:", + "LabelAlbum": "Álbum:", + "LabelAlbumArtMaxHeight": "Altura máxima da capa do álbum:", + "LabelAlbumArtMaxHeightHelp": "Resolução máxima da capa do álbum que é exposta via upnp:albumArtURI.", + "LabelAlbumArtMaxWidth": "Largura máxima da capa do álbum:", + "LabelAlbumArtMaxWidthHelp": "Resolução máxima da capa do álbum que é exposta via upnp:albumArtURI.", + "LabelAlbumArtPN": "PN da capa do álbum:", + "LabelAlbumArtists": "Artistas do Álbum:", + "LabelAll": "Todos", + "LabelAllowServerAutoRestart": "Permitir ao servidor reiniciar automaticamente para aplicar as atualizações", + "LabelAllowServerAutoRestartHelp": "O servidor irá reiniciar apenas durante períodos em que não esteja a ser usado, quando nenhum utilizador estiver ativo.", + "LabelAppName": "Nome do app", + "LabelAppNameExample": "Exemplo: Sickbeard, NzbDrone", + "LabelArtists": "Artistas:", + "LabelArtistsHelp": "Separa múltiplas com ;", + "LabelAudioLanguagePreference": "Preferências de Idioma de Audio:", + "LabelBlastMessageInterval": "Intervalo das mensagens de reconhecimento (segundos)", + "LabelBlastMessageIntervalHelp": "Determina a duração em segundos entre as mensagens de exploração enviadas pelo servidor.", + "LabelBlockContentWithTags": "Bloquear conteúdo com tags:", + "LabelCachePath": "Localização da cache:", + "LabelCachePathHelp": "Defina uma localização para os arquivos de cache como, por exemplo, imagens. Por favor, deixe em branco para usar o padrão do servidor.", + "LabelCancelled": "Cancelado", + "LabelCollection": "Coleção:", + "LabelCommunityRating": "Avaliação da comunidade:", + "LabelContentType": "Tipo de conteúdo:", + "LabelCountry": "País:", + "LabelCriticRating": "Avaliação da crítica:", + "LabelCurrentPassword": "Senha actual:", + "LabelCustomCertificatePath": "Localização do certificado SSL personalizado:", + "LabelCustomCertificatePathHelp": "Forneça o seu próprio ficheiro .pfx do certificado ssl.", + "LabelCustomCss": "CSS personalizado:", + "LabelCustomCssHelp": "Adiciona o teu css personalizado à interface web.", + "LabelCustomDeviceDisplayName": "Nome para exibição:", + "LabelCustomDeviceDisplayNameHelp": "Forneça um nome para exibição ou deixe em branco para usar o nome informado pelo dispositivo.", + "LabelCustomRating": "Classificação personalizada:", + "LabelDateAdded": "Data adicionado:", + "LabelDateAddedBehavior": "Data de adição de comportamento para o novo conteúdo:", + "LabelDateAddedBehaviorHelp": "Se um valor de metadados estiver presente, ele sempre será utilizado antes destas opções.", + "LabelDay": "Dia:", + "LabelDefaultUser": "Utilizador padrão:", + "LabelDefaultUserHelp": "Determina qual utilizador será exibido nos dispositivos conectados. Isto pode ser ignorado para cada dispositivo usando perfis.", + "LabelDeviceDescription": "Descrição do dispositivo", + "LabelDidlMode": "Modo DIDL:", + "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar episódios em falta dentro das temporadas", + "LabelDisplayName": "Nome para exibição:", + "LabelDisplayOrder": "Ordem de exibição:", + "LabelDisplaySpecialsWithinSeasons": "Exibir especiais dentro das temporadas em que são exibidos", + "LabelDownMixAudioScale": "Escala do aumento de áudio ao fazer downmix:", + "LabelDownMixAudioScaleHelp": "Aumentar o áudio ao fazer downmix. Defina como 1 para preservar o volume original.", + "LabelDownloadLanguages": "Idiomas para download:", + "LabelEasyPinCode": "Código pin fácil:", + "LabelEmbedAlbumArtDidl": "Inserir a capa do álbum no Didl", + "LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a capa do álbum. Outros podem falhar a reprodução com esta opção ativada.", + "LabelEnableAutomaticPortMap": "Ativar mapeamento automático de portas", + "LabelEnableAutomaticPortMapHelp": "Tentativa de mapear automaticamente a porta pública para a porta local através de UPnP. Isto poderá não funcionar em alguns modelos de roteadores.", + "LabelEnableBlastAliveMessages": "Propagar mensagens de reconhecimento", + "LabelEnableBlastAliveMessagesHelp": "Ativar isto se o servidor não é detetado convenientemente por outros dispositivos UPnP na sua rede.", + "LabelEnableDlnaClientDiscoveryInterval": "Intervalo para a descoberta do cliente (segundos)", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina a duração em segundos entre buscas SSDP executadas pelo Jellyfin.", + "LabelEnableDlnaDebugLogging": "Ativar log de depuração do DLNA", + "LabelEnableDlnaDebugLoggingHelp": "Isto irá criar ficheiros de log grandes e deve ser usado apenas quando é necessário para depurar problemas.", + "LabelEnableDlnaPlayTo": "Ativar DLNA Play To", + "LabelEnableDlnaPlayToHelp": "Jellyfin pode detectar dispositivos dentro de sua rede e oferece a possibilidade de controlá-los.", + "LabelEnableDlnaServer": "Ativar servidor DLNA", + "LabelEnableDlnaServerHelp": "Permite que dispositivos UPnP em sua rede naveguem e reproduzam conteúdo do Jellyfin.", + "LabelEnableHardwareDecodingFor": "Ativar descodificação por hardware para:", + "LabelEnableRealtimeMonitor": "Ativar monitorização em tempo real", + "LabelEnableRealtimeMonitorHelp": "As alterações irão ser processadas imediatamente em sistemas de ficheiros suportados.", + "LabelEnableSingleImageInDidlLimit": "Limitar a uma imagem incorporada", + "LabelEnableSingleImageInDidlLimitHelp": "Alguns dispositivos não interpretarão apropriadamente se múltiplas imagens estiverem incorporadas dentro do Didl.", + "LabelEndDate": "Data final:", + "LabelEpisodeNumber": "Número do episódio:", + "LabelEvent": "Evento:", + "LabelEveryXMinutes": "A cada:", + "LabelExternalDDNS": "Domínio externo:", + "LabelExternalDDNSHelp": "Se tem um servidor DNS dinâmico insira-o aqui. As aplicações do Jellyfin irão usá-lo ao ligar-se remotamente. Este campo é obrigatório quando usado com um certificado SSL personalizado. Exemplo: omeudominio.com.", + "LabelExtractChaptersDuringLibraryScan": "Extrair imagens dos capítulos durante o rastreamento da biblioteca", + "LabelExtractChaptersDuringLibraryScanHelp": "Se ativado, as imagens dos capítulos serão extraídas quando os vídeos forem importados durante a pesquisa na biblioteca. Se desativado, elas serão extraídas durante a tarefa agendada de imagens dos capítulos, permitindo que a pesquisa na biblioteca seja mais rápida.", + "LabelFailed": "Falhou", + "LabelFinish": "Terminar", + "LabelForgotPasswordUsernameHelp": "Digite o nome de seu utilizador, se lembrar.", + "LabelFormat": "Formato:", + "LabelFriendlyName": "Nome amigável:", + "LabelServerNameHelp": "Será usado este nome para identificar o servidor. Se não for preenchido, será usado o nome do computador.", + "LabelGroupMoviesIntoCollections": "Agrupar filmes nas coleções", + "LabelGroupMoviesIntoCollectionsHelp": "Ao exibir listas de filmes, filmes que pertençam a uma coleção serão exibidos como um único item agrupado.", + "LabelHardwareAccelerationType": "Aceleração de hardware:", + "LabelHardwareAccelerationTypeHelp": "Disponível apenas em sistemas suportados.", + "LabelHttpsPort": "Número da porta https local:", + "LabelHttpsPortHelp": "O número da porta tcp que o servidor https do Jellyfin deveria se conectar.", + "LabelIconMaxHeight": "Altura máxima do ícone:", + "LabelIconMaxHeightHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", + "LabelIconMaxWidth": "Largura máxima do ícone:", + "LabelIconMaxWidthHelp": "Resolução máxima do ícone que é exposto via upnp:icon.", + "LabelIdentificationFieldHelp": "Uma substring ou expressão regex que não diferencia maiúscula de minúsculas.", + "LabelImageType": "Tipo de imagem:", + "LabelImportOnlyFavoriteChannels": "Restringir a canais marcados como favoritos", + "LabelInNetworkSignInWithEasyPassword": "Ativar acesso dentro da rede com meu código pin fácil", + "LabelInNetworkSignInWithEasyPasswordHelp": "Se ativado, você poderá usar um código pin fácil para entrar nos apps do Jellyfin dentro de sua rede. A sua senha normal só será necessária fora de sua casa. Se o código pin for deixado em branco, não será necessária uma senha dentro de sua rede doméstica.", + "LabelKodiMetadataDateFormat": "Formato da data de lançamento:", + "LabelKodiMetadataDateFormatHelp": "Todas as datas dentro dos nfo's serão lidas e gravadas usando este formato.", + "LabelKodiMetadataEnableExtraThumbs": "Copiar extrafanart para extrathumbs", + "LabelKodiMetadataEnableExtraThumbsHelp": "Ao fazer download das imagens, elas podem ser salvas em ambas extrafanart e extrathumbs para uma maior compatibilidade com as skins do Kodi.", + "LabelKodiMetadataEnablePathSubstitution": "Ativar substituição de local", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Ativa a substituição do local das imagens usando as opções de substituição de caminho no servidor.", + "LabelKodiMetadataSaveImagePaths": "Salvar o local das imagens dentro dos arquivos nfo's", + "LabelKodiMetadataSaveImagePathsHelp": "Esta opção é recomendada se você tiver nomes de arquivos de imagem que não estão de acordo às recomendações do Kodi.", + "LabelLanguage": "Idioma:", + "LabelLineup": "Programação:", + "LabelLocalHttpServerPortNumber": "Número da porta http local:", + "LabelLocalHttpServerPortNumberHelp": "O número da porta tcp que o servidor http do Jellyfin deveria se conectar.", + "LabelLockItemToPreventChanges": "Bloquear este item para evitar alterações futuras", + "LabelLoginDisclaimer": "Aviso legal no login:", + "LabelLoginDisclaimerHelp": "Este aviso será exibido na parte inferior da página de login.", + "LabelManufacturer": "Fabricante", + "LabelManufacturerUrl": "URL do fabricante", + "LabelMatchType": "Tipo de Correspondência:", + "LabelMaxBackdropsPerItem": "Número máximo de imagens de fundo por item:", + "LabelMaxParentalRating": "Controlo Parental máximo permitido:", + "LabelMaxResumePercentage": "Percentagem máxima para retomar:", + "LabelMaxResumePercentageHelp": "Os títulos são considerados totalmente assistidos se parados depois deste tempo", + "LabelMaxScreenshotsPerItem": "Número máximo de imagens de ecrã por item:", + "LabelMaxStreamingBitrateHelp": "Defina uma taxa máxima de streaming.", + "LabelMessageText": "Texto da mensagem:", + "LabelMessageTitle": "Titulo da mensagem:", + "LabelMetadata": "Metadados:", + "LabelMetadataDownloadLanguage": "Idioma preferido para download:", + "LabelMetadataPath": "Localização dos metadados:", + "LabelMetadataPathHelp": "Define um local para artwork e metadados baixados da internet.", + "LabelMethod": "Método:", + "LabelMinBackdropDownloadWidth": "Transferir Imagens de fundo com o tamanho mínimo:", + "LabelMinResumeDuration": "Duração mínima da retoma (segundos):", + "LabelMinResumeDurationHelp": "Conteúdos com duração inferior não permitirão parar e retomar a reprodução", + "LabelMinResumePercentage": "Percentagem mínima para retomar:", + "LabelMinResumePercentageHelp": "Os títulos são considerados não assistidos se parados antes deste tempo", + "LabelMinScreenshotDownloadWidth": "Transferir imagens de ecrã com o tamanho mínimo:", + "LabelModelDescription": "Descrição do modelo", + "LabelModelName": "Nome do modelo", + "LabelModelNumber": "Número do modelo", + "LabelModelUrl": "URL do modelo", + "LabelMonitorUsers": "Monitorizar atividade de:", + "LabelMusicStreamingTranscodingBitrate": "Taxa de transcodificação das músicas:", + "LabelMusicStreamingTranscodingBitrateHelp": "Defina a taxa máxima ao fazer streaming das músicas", + "LabelName": "Nome:", + "LabelNewPassword": "Nova senha:", + "LabelNewPasswordConfirm": "Confirmar nova senha:", + "LabelNext": "Seguinte", + "LabelNotificationEnabled": "Ativar esta notificação", + "LabelNumberOfGuideDays": "Número de dias de informação do guia para transferir:", + "LabelNumberOfGuideDaysHelp": "Transferir mais dias de informação do guia permite agendar com maior antecedência e ver mais listagens, no entanto irá levar mais tempo a transferir. Se optar que seja Automático, será escolhido baseado no número de canais.", + "LabelOriginalAspectRatio": "Proporção da imagem original:", + "LabelOverview": "Sinopse:", + "LabelParentalRating": "Classificação parental:", + "LabelPassword": "Senha:", + "LabelPasswordConfirm": "Senha (confirmar):", + "LabelPasswordRecoveryPinCode": "Código pin:", + "LabelPath": "Local:", + "LabelPersonRole": "Personagem:", + "LabelPlaceOfBirth": "Local de nascimento:", + "LabelPlayDefaultAudioTrack": "Reproduzir a faixa de áudio padrão independentemente do idioma", + "LabelPreferredDisplayLanguage": "Idioma de visualização preferencial:", + "LabelPreferredDisplayLanguageHelp": "A tradução do Jellyfin é um projeto contínuo.", + "LabelPrevious": "Anterior", + "LabelProfileAudioCodecs": "Codecs do áudio:", + "LabelProfileCodecsHelp": "Separados por vírgula. Pode ser deixado em branco para usar com todos os codecs.", + "LabelProfileContainer": "Contentor:", + "LabelProfileContainersHelp": "Separados por vírgula. Pode ser deixado em branco para usar com todos os containers.", + "LabelProfileVideoCodecs": "Codecs do vídeo:", + "LabelProtocol": "Protocolo:", + "LabelProtocolInfo": "Informação do protocolo:", + "LabelProtocolInfoHelp": "O valor que será usado ao responder os pedidos GetProtocolInfo do dispositivo.", + "LabelPublicHttpPort": "Número da porta pública de http:", + "LabelPublicHttpPortHelp": "O número da porta pública que deverá ser mapeada para a porta local de http.", + "LabelPublicHttpsPort": "Número da porta pública de https:", + "LabelPublicHttpsPortHelp": "O número da porta pública que deverá ser mapeada para a porta local de https.", + "LabelReadHowYouCanContribute": "Aprenda como pode contribuir.", + "LabelRecordingPath": "Localização predefinida das gravações:", + "LabelReleaseDate": "Data do lançamento:", + "LabelRemoteClientBitrateLimit": "Limite de taxa de bits para streaming da Internet (Mbps):", + "LabelRuntimeMinutes": "Duração (minutos):", + "LabelSaveLocalMetadata": "Guardar imagens e metadados nas pastas multimédia", + "LabelSaveLocalMetadataHelp": "Guardar imagens e metadados diretamente nas pastas multimédia, vai colocá-los num local de fácil acesso para poderem ser editados facilmente.", + "LabelScheduledTaskLastRan": "Última execução {0}, demorando {1}.", + "LabelSeasonNumber": "Número da temporada:", + "LabelSelectUsers": "Selecionar utilizadores:", + "LabelSelectVersionToInstall": "Selecione a versão para instalar:", + "LabelSendNotificationToUsers": "Enviar notificação para:", + "LabelSerialNumber": "Número de série", + "LabelServerHost": "Servidor:", + "LabelServerHostHelp": "192.168.1.100 ou https://meuservidor.com", + "LabelServerPort": "Porta:", + "LabelSkipIfAudioTrackPresent": "Ignorar se a faixa de áudio padrão coincidir com o idioma de download", + "LabelSkipIfAudioTrackPresentHelp": "Desmarque esta opção para garantir que todos os vídeos têm legendas, independentemente do idioma do áudio.", + "LabelSkipIfGraphicalSubsPresent": "Ignorar se o vídeo já possuir legendas embutidas", + "LabelSkipIfGraphicalSubsPresentHelp": "Manter versões das legendas em texto resultará em uma entrega mais eficiente e diminuirá a necessidade de transcodificação do vídeo.", + "LabelSonyAggregationFlags": "Flags de agregação da Sony:", + "LabelSonyAggregationFlagsHelp": "Determina o conteúdo do elemento aggregationFlags no namespace urn:schemas-sonycom:av.", + "LabelSource": "Fonte:", + "LabelStartWhenPossible": "Começar quando possível:", + "LabelStatus": "Estado:", + "LabelStopWhenPossible": "Parar quando possível:", + "LabelStopping": "Parando", + "LabelSubtitleFormatHelp": "Exemplo: srt", + "LabelSubtitlePlaybackMode": "Modo da Legenda:", + "LabelSupportedMediaTypes": "Tipos de Conteúdos Suportados:", + "LabelTagline": "Slogan:", + "LabelTime": "Tempo:", + "LabelTimeLimitHours": "Limite de tempo (horas):", + "LabelTranscodingAudioCodec": "Codec do Áudio:", + "LabelTranscodingContainer": "Contentor:", + "LabelTranscodingTempPathHelp": "Esta pasta contém arquivos ativos usados pelo transcodificador. Especifique um local personalizado ou deixe em branco para usar o padrão dentro da pasta de dados do servidor.", + "LabelTranscodingThreadCount": "Contagem de threads da transcodificação:", + "LabelTranscodingThreadCountHelp": "Selecione o número máximo de threads a ser usado quando transcodificar. Reduzir o número de threads irá diminuir o uso da CPU, mas pode não converter rápido o suficiente para uma experiência de reprodução suave.", + "LabelTranscodingVideoCodec": "Codec do vídeo:", + "LabelTriggerType": "Tipo do Acionador:", + "LabelTunerIpAddress": "Endereço IP do Sintonizador:", + "LabelTunerType": "Tipo do sintonizador:", + "LabelType": "Tipo:", + "LabelTypeText": "Texto", + "LabelUseNotificationServices": "Usar os seguintes serviços:", + "LabelUser": "Utilizador:", + "LabelUserLibrary": "Biblioteca do utilizador:", + "LabelUserLibraryHelp": "Selecione qual é a biblioteca de utilizador a mostrar no dispositivo. Deixe em branco para herdar a definição padrão.", + "LabelUsername": "Nome de Utilizador:", + "LabelValue": "Valor:", + "LabelVersionInstalled": "{0} instalado", + "LabelVersionNumber": "Versão {0}", + "LabelXDlnaCapHelp": "Determina o conteúdo do elemento X_DLNACAP no namespace urn:schemas-dlna-org:device-1-0.", + "LabelXDlnaDocHelp": "Determina o conteúdo do elemento X_DLNADOC no namespace urn:schemas-dlna-org:device-1-0.", + "LabelYourFirstName": "O seu primeiro nome:", + "LabelYoureDone": "Concluiu!", + "LabelZipCode": "CEP:", + "LibraryAccessHelp": "Escolha as pastas multimédia a partilhar com este utilizador. Os Administradores poderão editar todas as pastas, usando o Gestor de Metadados.", + "MaxParentalRatingHelp": "Conteúdo com classificação mais elevada será escondida deste utilizador.", + "MessageAreYouSureDeleteSubtitles": "Deseja realmente remover este arquivo de legendas?", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Deseja realmente excluir esta pasta multimédia?", + "MessageConfirmProfileDeletion": "Deseja realmente remover este perfil?", + "MessageConfirmRecordingCancellation": "Deseja realmente cancelar esta gravação?", + "MessageConfirmRestart": "Deseja realmente reiniciar o Servidor Jellyfin?", + "MessageConfirmRevokeApiKey": "Deseja realmente revogar esta chave de api? A conexão da aplicação com o Servidor Jellyfin será abruptamente encerrada.", + "MessageConfirmShutdown": "Deseja realmente desligar o Servidor Jellyfin?", + "MessageDeleteTaskTrigger": "Deseja realmente excluir este disparador de tarefa?", + "MessageDirectoryPickerBSDInstruction": "Para BSD, você precisará configurar o disco dentro de seu Jail do FreeNAS para permitir que o Jellyfin tenha acesso a ele.", + "MessageDirectoryPickerInstruction": "Os locais de rede podem ser digitados manualmente caso o botão de Rede não consiga localizar seus dispositivos. Por exemplo, {0} ou {1}.", + "MessageDirectoryPickerLinuxInstruction": "Para Linux no Arch Linux, CentOS, Debian, Fedora, OpenSuse ou Ubuntu, você deve permitir que o utilizador Jellyfin tenha ao menos acesso de leitura no seu disco.", + "MessageEnablingOptionLongerScans": "Ativar esta opção pode aumentar significativamente a duração da análise da biblioteca.", + "MessageFileReadError": "Ocorreu um erro ao ler este arquivo.", + "MessageInvalidUser": "Nome de utilizador ou senha inválidos. Por favor, tente novamente.", + "MessageItemSaved": "Item salvo.", + "MessageItemsAdded": "Itens adicionados.", + "MessageLeaveEmptyToInherit": "Deixar em branco para herdar as configurações do item pai, ou o valor global por defeito.", + "MessageNoAvailablePlugins": "Sem extensões disponíveis.", + "MessageNoMovieSuggestionsAvailable": "Não existem sugestões de filmes disponíveis atualmente. Comece por assistir e avaliar seus filmes e, então, volte para verificar suas recomendações.", + "MessageNoPluginsInstalled": "Você não possui plugins instalados.", + "MessageNoTrailersFound": "Nenhum trailer encontrado. Instale o canal Trailer para melhorar sua experiência com filmes, adicionando uma biblioteca de trailers da internet.", + "MessageNothingHere": "Nada aqui.", + "MessagePasswordResetForUsers": "As palavras-passe dos utilizadores seguintes foram repostas. Deverão utilizar o PIN de reposição de palavra-passe para fazer login.", + "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transferência de metadados da internet está activa.", + "MessageReenableUser": "Veja abaixo para reativar", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "As localizações dos ficheiros multimédia abaixo serão excluídas de sua biblioteca Jellyfin:", + "MinutesAfter": "minutos depois", + "MinutesBefore": "minutos antes", + "Monday": "Segunda", + "More": "Mais", + "MoreUsersCanBeAddedLater": "É possível adicionar utilizadores mais tarde no Painel Principal.", + "Mute": "Desativar Som", + "NewCollection": "Nova Coleção", + "NewCollectionNameExample": "Exemplo: Coleção Guerra das Estrelas", + "NoNextUpItemsMessage": "Nenhum encontrado. Comece a ver os seus programas!", + "OptionAdminUsers": "Administradores", + "OptionAlbum": "Álbum", + "OptionAlbumArtist": "Artista do Álbum", + "OptionAllUsers": "Todos os utilizadores", + "OptionAllowAudioPlaybackTranscoding": "Permitir reprodução de áudio que necessite de transcodificação", + "OptionAllowBrowsingLiveTv": "Permitir acesso a TV ao Vivo", + "OptionAllowContentDownloading": "Permitir download dos ficheiros multimédia", + "OptionAllowLinkSharing": "Permitir partilha nas redes sociais", + "OptionAllowManageLiveTv": "Permitir gerir gravações de TV ao Vivo", + "OptionAllowMediaPlayback": "Permitir reprodução de média", + "OptionAllowMediaPlaybackTranscodingHelp": "Restringir o acesso à transcodificação pode causar falhas de reprodução nas aplicações do Jellyfin devido a formatos multimédia não suportados.", + "OptionAllowRemoteControlOthers": "Permitir controlo remoto de outros utilizadores", + "OptionAllowRemoteSharedDevices": "Permitir controlo remoto de dispositivos compartilhados", + "OptionAllowRemoteSharedDevicesHelp": "Dispositivos DLNA são considerados compartilhados até que um utilizador comece a controlá-lo.", + "OptionAllowUserToManageServer": "Permitir a este utilizador gerir o servidor", + "OptionAllowVideoPlaybackTranscoding": "Permitir reprodução de vídeo que necessite de transcodificação", + "OptionArtist": "Artista", + "OptionAscending": "Ascendente", + "OptionAutomatic": "Automático", + "OptionBlockBooks": "Livros", + "OptionBlockChannelContent": "Conteúdo do Canal de Internet", + "OptionBlockLiveTvChannels": "Canais de TV ao vivo", + "OptionBlockMovies": "Filmes", + "OptionBlockMusic": "Música", + "OptionBlockTvShows": "Séries de TV", + "OptionCommunityRating": "Classificação da Comunidade", + "OptionContinuing": "A Continuar", + "OptionCriticRating": "Classificação dos críticos", + "OptionCustomUsers": "Personalizado", + "OptionDaily": "Diariamente", + "OptionDateAdded": "Data de adição", + "OptionDateAddedFileTime": "Usar a data de criação do arquivo", + "OptionDateAddedImportTime": "Usar a data obtida na biblioteca", + "OptionDatePlayed": "Data de reprodução", + "OptionDescending": "Descendente", + "OptionDisableUser": "Desativar este utilizador", + "OptionDisableUserHelp": "Se desativado, o servidor não permite nenhuma conexão deste utilizador. Conexões existentes serão terminadas.", + "OptionDislikes": "Não gostos", + "OptionDownloadArtImage": "Arte", + "OptionDownloadBackImage": "Traseira", + "OptionDownloadBoxImage": "Caixa", + "OptionDownloadDiscImage": "Disco", + "OptionDownloadImagesInAdvanceHelp": "Por padrão, a maioria das imagens são descarregadas só quando uma aplicação do Jellyfin solicita. Ativar esta opção para descarregar todas as imagens antencipadamente, assim que os novos ficheiros multimédia são importados. Isto pode aumentar significativamente a duração da análise da biblioteca.", + "OptionDownloadPrimaryImage": "Principal", + "OptionDownloadThumbImage": "Miniatura", + "OptionDvd": "DVD", + "OptionEmbedSubtitles": "Incorporar no recipiente", + "OptionEnableAccessFromAllDevices": "Ativar acesso de todos os dispositivos", + "OptionEnableAccessToAllChannels": "Permitir acesso a todos os canais", + "OptionEnableAccessToAllLibraries": "Permitir acesso a todas as bibliotecas", + "OptionEnableAutomaticServerUpdates": "Ativar as atualizações automáticas do servidor", + "OptionEnableM2tsMode": "Ativar modo M2ts", + "OptionEnableM2tsModeHelp": "Ative o modo m2ts quando codificar para mpegts.", + "OptionEnded": "Terminado", + "OptionEquals": "Iguais", + "OptionEstimateContentLength": "Estimar o tamanho do conteúdo ao transcodificar", + "OptionEveryday": "Todos os dias", + "OptionExternallyDownloaded": "Download Externo", + "OptionFavorite": "Favoritos", + "OptionFriday": "Sexta", + "OptionHasSpecialFeatures": "Extras", + "OptionHasSubtitles": "Legendas", + "OptionHasThemeSong": "Música de Tema", + "OptionHasThemeVideo": "Vídeo de Tema", + "OptionHideUser": "Ocultar este utilizador dos formulários de início de sessão", + "OptionHideUserFromLoginHelp": "Útil para contas de administrador privadas ou ocultas. O utilizador necessita de entrar manualmente, introduzindo o seu nome de utilizador e senha.", + "OptionHlsSegmentedSubtitles": "Legendas segmentadas hls", + "OptionIgnoreTranscodeByteRangeRequests": "Ignorar requisições de extensão do byte de transcodificação", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Se ativadas, estas requisições serão honradas mas irão ignorar o cabeçalho da extensão do byte.", + "OptionImdbRating": "Classificação no IMDb", + "OptionLikes": "Gostos", + "OptionMax": "Máx", + "OptionMissingEpisode": "Episódios em Falta", + "OptionMonday": "Segunda", + "OptionNameSort": "Nome", + "OptionNew": "Nova...", + "OptionNone": "Nenhum", + "OptionOnAppStartup": "Ao iniciar a aplicação", + "OptionOnInterval": "Num intervalo", + "OptionParentalRating": "Classificação Parental", + "OptionPlainStorageFolders": "Mostrar todas as pastas como pastas de armazenamento simples", + "OptionPlainStorageFoldersHelp": "Se ativado, todas as pastas são representadas no DIDL como \"object.container.storageFolder\" ao invés de um tipo mais específico como, por exemplo, \"object.container.person.musicArtist\".", + "OptionPlainVideoItems": "Exibir todos os vídeos como itens de vídeo simples", + "OptionPlainVideoItemsHelp": "Se ativado, todos os vídeos são representados no DIDL como \"object.item.videoItem\" ao invés de um tipo mais específico como, por exemplo, \"object.item.videoItem.movie\".", + "OptionPlayCount": "N.º Visualizações", + "OptionPlayed": "Reproduzido", + "OptionPremiereDate": "Data de Estreia", + "OptionProfileAudio": "Áudio", + "OptionProfilePhoto": "Fotografia", + "OptionProfileVideo": "Vídeo", + "OptionProfileVideoAudio": "Áudio do Vídeo", + "OptionReleaseDate": "Data de Lançamento", + "OptionReportByteRangeSeekingWhenTranscoding": "Reportar que o servidor suporta busca de byte quando transcodificar", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "Isto é necessário para alguns dispositivos que não procuram o tempo muito bem.", + "OptionResElement": "elemento res", + "OptionResumable": "Retomável", + "OptionRuntime": "Duração", + "OptionSaturday": "Sábado", + "OptionSaveMetadataAsHidden": "Salvar metadados e imagens como arquivos ocultos", + "OptionSpecialEpisode": "Especiais", + "OptionSunday": "Domingo", + "OptionThursday": "Quinta", + "OptionTrackName": "Nome da pista", + "OptionTuesday": "Terça", + "OptionTvdbRating": "Classificação no Tvdb", + "OptionUnairedEpisode": "Episódios por Estrear", + "OptionUnplayed": "Por reproduzir", + "OptionWakeFromSleep": "Retomar da suspensão", + "OptionWednesday": "Quarta", + "OptionWeekdays": "Dias da semana", + "OptionWeekends": "Fins-de-semana", + "OptionWeekly": "Semanalmente", + "ParentalRating": "Parental Rating", + "PasswordMatchError": "A senha e a confirmação da senha devem coincidir.", + "PasswordResetComplete": "A senha foi redefinida.", + "PasswordResetConfirmation": "Tem a certeza que deseja redefinir a senha?", + "PasswordResetHeader": "Redefinir Senha", + "PasswordSaved": "Senha guardada.", + "PinCodeResetComplete": "O código pin foi redefinido.", + "PinCodeResetConfirmation": "Deseja realmente redefinir o código pin?", + "Play": "Reproduzir", + "PlayNextEpisodeAutomatically": "Reproduzir próximo episódio automaticamente", + "PleaseEnterNameOrId": "Por favor, digite um nome ou Id externo.", + "PleaseSelectTwoItems": "Por favor selecione pelo menos dois itens.", + "Producer": "Produtor", + "RecommendationBecauseYouLike": "Porque gosta de {0}", + "RecommendationBecauseYouWatched": "Porque viu {0}", + "RecommendationDirectedBy": "Realizado por {0}", + "RecommendationStarring": "{0} como protagonista", + "Record": "Gravar", + "RecordingCancelled": "Gravação cancelada.", + "RecordingScheduled": "Gravação agendada.", + "Refresh": "Atualizar", + "Repeat": "Repetir", + "ReplaceExistingImages": "Substituir imagens existentes", + "Rewind": "Retroceder", + "Saturday": "Sábado", + "Save": "Guardar", + "ScanLibrary": "Analisar biblioteca", + "Search": "Busca", + "SearchForCollectionInternetMetadata": "Procurar na internet por imagens e metadados", + "SearchForSubtitles": "Buscar Legendas", + "SendMessage": "Enviar mensagem", + "Series": "Séries", + "ServerUpdateNeeded": "Este Servidor Jellyfin precisa ser atualizado. Para fazer download da versão mais recente, por favor visite {0}", + "Settings": "Ajustes", + "SettingsSaved": "Configurações guardadas.", + "Share": "Partilhar", + "Shuffle": "Aleatório", + "Subtitles": "Legendas", + "Sunday": "Domingo", + "SystemDlnaProfilesHelp": "Perfis de sistema são apenas de leitura. Mudanças a um perfil de sistema serão guardadas num novo perfil personalizado.", + "TabAccess": "Acesso", + "TabAdvanced": "Avançado", + "TabAlbumArtists": "Artistas do Álbum", + "TabAlbums": "Álbuns", + "TabArtists": "Artistas", + "TabCatalog": "Catálogo", + "TabChannels": "Canais", + "TabCollections": "Coleções", + "TabContainers": "Contentores", + "TabDashboard": "Painel Principal", + "TabDevices": "Dispositivos", + "TabDirectPlay": "Reprodução Direta", + "TabDisplay": "Exibição", + "TabEpisodes": "Episódios", + "TabFavorites": "Favoritos", + "TabGenres": "Géneros", + "TabGuide": "Guia", + "TabLatest": "Mais recente", + "TabLibrary": "Biblioteca", + "TabLiveTV": "TV ao Vivo", + "TabMetadata": "Metadados", + "TabMovies": "Filmes", + "TabMusic": "Música", + "TabMusicVideos": "Videos Musicais", + "TabMyPlugins": "As minhas extensões", + "TabNetworks": "Redes", + "TabNfoSettings": "Definições de ficheiros NFO", + "TabNotifications": "Notificações", + "TabOther": "Outro", + "TabParentalControl": "Controlo Parental", + "TabPassword": "Senha", + "TabPlayback": "Reprodução", + "TabPlaylist": "Lista de Reprodução", + "TabPlaylists": "Listas de Reprodução", + "TabPlugins": "Extensões", + "TabProfile": "Perfil", + "TabProfiles": "Perfis", + "TabRecordings": "Gravações", + "TabResponses": "Respostas", + "TabScheduledTasks": "Tarefas Agendadas", + "TabSeries": "Séries", + "TabServer": "Servidor", + "TabSettings": "Configurações", + "TabShows": "Séries", + "TabSongs": "Músicas", + "TabSuggestions": "Sugestões", + "TabTranscoding": "Transcodificação", + "TabUpcoming": "Próximos", + "TabUsers": "Utilizadores", + "TellUsAboutYourself": "Fale-nos sobre si", + "ThisWizardWillGuideYou": "Este assistente irá ajudá-lo durante o processo de configuração. Para começar, selecione o idioma.", + "Thursday": "Quinta", + "TitlePlayback": "Reprodução", + "TrackCount": "{0} faixas", + "Tuesday": "Terça", + "UninstallPluginConfirmation": "Tem a certeza que deseja desinstalar {0}?", + "UninstallPluginHeader": "Desinstalar extensão", + "Unmute": "Ativar Som", + "UserProfilesIntro": "O Jellyfin inclui suporte nativo de perfis de utilizadores, permitindo que cada utilizador tenha as suas configurações de visualização, estado da reprodução e controlos parentais.", + "ValueAudioCodec": "Codec de Áudio: {0}", + "ValueConditions": "Condições: {0}", + "ValueSpecialEpisodeName": "Especial - {0}", + "ValueTimeLimitMultiHour": "Limite de tempo: {0} horas", + "ValueTimeLimitSingleHour": "Limite de tempo: 1 hora", + "ValueVideoCodec": "Codec de Vídeo: {0}", + "Wednesday": "Quarta", + "WelcomeToProject": "Bem-vindo ao Jellyfin!", + "WizardCompleted": "É tudo, de momento. O Jellyfin iniciou a recolha de informações da sua biblioteca multimédia. Reveja algumas das nossas aplicações e, de seguida, clique Terminar para ver o Painel Principal do Servidor.", + "Writer": "Escritor", + "XmlDocumentAttributeListHelp": "Estes atributos são aplicados ao elemento principal de cada resposta xml.", + "AccessRestrictedTryAgainLater": "Acesso restrito. Por favor, tente mais tarde.", + "AddItemToCollectionHelp": "Adicione itens às coleções pesquisando-os e utilizando o respetivo menu de toque ou clique direito para as adicionar a uma coleção.", + "AddToCollection": "Adicionar à coleção", + "AddToPlayQueue": "Adicionar à fila de reprodução", + "AddedOnValue": "Adicionado {0}", + "AirDate": "Data de estreia", + "Albums": "Álbuns", + "Alerts": "Alertas", + "AllChannels": "Todos os canais", + "AllComplexFormats": "Todos os formatos complexos (ASS, SSA, VOBSUB, PGS, SUB/IDX, etc.)", + "AllEpisodes": "Todos os episódios", + "AllLanguages": "Todos os idiomas", + "AllLibraries": "Todas as bibliotecas", + "AllowHWTranscodingHelp": "Quando ativado, permite ao sintonizador converter streams em tempo real. Poderá reduzir a necessidade de conversão a fazer pelo Jellyfin Server.", + "AllowMediaConversion": "Permitir conversão multimédia", + "AllowMediaConversionHelp": "Permitir ou negar acesso à funcionalidade de conversão multimédia.", + "AllowOnTheFlySubtitleExtraction": "Permitir a extração de legendas em tempo real", + "AllowOnTheFlySubtitleExtractionHelp": "Legendas integradas podem ser extraídas do vídeo e enviadas como texto simples para as aplicações Jellyfin para evitar transcode. Em certos dispositivos, isto é uma operação demorada e pode causar paragens de reprodução durante o processo de extração. Desative esta opção para que as legendas sejam integradas no vídeo durante a conversão para um formato suportado pelo dispositivo de destino.", + "AllowRemoteAccess": "Permitir ligações remotas a este Jellyfin Server.", + "AllowRemoteAccessHelp": "Se inativo, todas as ligações remotas serão bloqueadas.", + "AllowedRemoteAddressesHelp": "Lista de IP ou IP/Máscara, separados por vírgulas, com permissão para se ligar remotamente. Se deixado em branco, todos os endereços remotos serão permitidos.", + "AlwaysPlaySubtitles": "Mostrar sempre legendas", + "AlwaysPlaySubtitlesHelp": "Legendas correspondentes à língua preferencial vão ser sempre carregadas, independentemente do idioma do áudio.", + "AnyLanguage": "Qualquer idioma", + "Artists": "Artistas", + "Ascending": "Crescente", + "AspectRatio": "Formato", + "AuthProviderHelp": "Selecione um mecanismo de autenticação a ser utilizado para validar as credenciais deste utilizador", + "Auto": "Automático", + "AutoBasedOnLanguageSetting": "Auomático (baseado no idioma definido)", + "BirthDateValue": "Nascimento: {0}", + "BirthPlaceValue": "Local de nascimento: {0}", + "Blacklist": "Lista Negra", + "Books": "Livros", + "BurnSubtitlesHelp": "Determina se o servidor deve integrar as legendas durante a conversão de vídeo, dependendo do formato da legenda. Evitar integração de legendas melhora o desempenho do servidor. Selecione Auto para que legendas baseadas em imagem (VOBSUB, PGS, SUB/IDX, etc.), assim como alguns formatos ASS/SSA sejam integrados", + "Channels": "Canais", + "Collections": "Coleções", + "Favorites": "Favoritos", + "Folders": "Pastas", + "Genres": "Géneros", + "HeaderAlbumArtists": "Artistas do Álbum", + "HeaderFavoriteShows": "Séries Favoritas", + "HeaderFavoriteEpisodes": "Episódios Favoritos", + "HeaderFavoriteAlbums": "Álbuns Favoritos", + "HeaderFavoriteArtists": "Artistas Favoritos", + "HeaderFavoriteSongs": "Músicas Favoritas", + "Movies": "Filmes", + "Photos": "Fotografias", + "Playlists": "Listas de Reprodução", + "Shows": "Séries", + "Songs": "Músicas", + "Sync": "Sincronização", + "Absolute": "Absoluta" } diff --git a/src/strings/ro.json b/src/strings/ro.json index 96f31ffad8..7af264ac54 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -79,8 +79,6 @@ "LabelCustomCertificatePath": "Calea către certificatul personalizat:", "LabelCustomCertificatePathHelp": "Furnizați propriul fișier care conține un certificat SSL in format .pfx.", "LabelDisplayMissingEpisodesWithinSeasons": "Afișeaza episoadele lipsă din seriale", - "LabelFanartApiKey": "Cheie API pesonală:", - "LabelFanartApiKeyHelp": "Cererile către Fanart fără o cheie API personală returnează imagini care au fost aprobate acum mai bine de 7 zile. Cu o cheie API personală perioada scade la 48 de ore și dacă sunteți membru VIP Fanart intervalul va fi redus la 10 minute.", "LabelFinish": "Termină", "LabelLanguage": "Limba:", "LabelMaxBackdropsPerItem": "Numărul maxim de fundaluri pentru fiecare element:", @@ -211,7 +209,6 @@ "TabProfile": "Profil", "TabProfiles": "Profile", "TabRecordings": "Înregistrări", - "TabSecurity": "Securitate", "TabSeries": "Seriale", "TabSettings": "Setări", "TabShows": "Seriale", diff --git a/src/strings/ru.json b/src/strings/ru.json index b5515210d7..61c0892efb 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -9,7 +9,6 @@ "AddToPlaylist": "Добавить в плей-лист", "AddedOnValue": "Добавлено {0}", "AdditionalNotificationServices": "Просмотрите каталог плагинов, чтобы установить дополнительные услуги для уведомлений.", - "Advanced": "Расширенное", "AirDate": "Дата эфира", "Aired": "Эфирный", "Albums": "Альбомы", @@ -621,8 +620,6 @@ "LabelExtractChaptersDuringLibraryScan": "Извлекать рисунки сцен в процессе сканирования медиатеки", "LabelExtractChaptersDuringLibraryScanHelp": "При включении, рисунки сцен будут извлечены, когда видео импортируется в процессе сканирования медиатеки. При отключении, они будут извлечены в процессе назначенной задачи «Рисунки сцен», позволяя регулярному сканированию медиатеки завершаться быстрее.", "LabelFailed": "Неудачно", - "LabelFanartApiKey": "Индивидуальный API-ключ:", - "LabelFanartApiKeyHelp": "Запросы к Fanart без индивидуального API-ключа возвращают рисунки из одобренных свыше 7 дней назад. С индивидуальным API-ключом срок уменьшается до 48 часов, а если вы также являетесь VIP-членом Fanart, то это время уменьшится почти до 10 минут.", "LabelFileOrUrl": "Файл или URL:", "LabelFinish": "Завершить", "LabelFont": "Шрифт:", @@ -682,7 +679,7 @@ "LabelMaxResumePercentageHelp": "Произведения предполагаются воспроизведёнными полностью, при остановке после данного момента", "LabelMaxScreenshotsPerItem": "Макс. число снимков экрана на элемент:", "LabelMaxStreamingBitrate": "Макс. качество трансляции:", - "LabelMaxStreamingBitrateHelp": "Укажите максимальную потоковую скорость при трансляции.", + "LabelMaxStreamingBitrateHelp": "Укажите макс. потоковую скорость трансляции.", "LabelMessageText": "Текст сообщения:", "LabelMessageTitle": "Заголовок сообщения:", "LabelMetadata": "Метаданные:", @@ -696,8 +693,8 @@ "LabelMetadataSaversHelp": "Выберите форматы файлов, куда будут сохраняться метаданные.", "LabelMethod": "Метод:", "LabelMinBackdropDownloadWidth": "Мин. ширина загружаемого задника:", - "LabelMinResumeDuration": "Мин. длительность для возобновления, с:", - "LabelMinResumeDurationHelp": "Невозможно возобновление для произведений, при длительности менее данного", + "LabelMinResumeDuration": "Мин. длительность для возобновления:", + "LabelMinResumeDurationHelp": "Наименьшая длительность видео в секундах, при которой сохраняется позиция воспроизведения и позволяется возобновление", "LabelMinResumePercentage": "Мин. доля для возобновления, %:", "LabelMinResumePercentageHelp": "Произведения предполагаются не воспроизведёнными, при остановке до данного момента", "LabelMinScreenshotDownloadWidth": "Мин. ширина загружаемого снимка экрана:", @@ -1100,7 +1097,7 @@ "OptionProfileVideo": "Видео", "OptionProfileVideoAudio": "Видео Аудио", "OptionProtocolHls": "Прямая трансляция по HTTP (HLS)", - "OptionProtocolHttp": "", + "OptionProtocolHttp": "HTTP", "OptionRegex": "Рег. выражение", "OptionReleaseDate": "Дата выпуска", "OptionReportByteRangeSeekingWhenTranscoding": "Выдавать, что сервер поддерживает побайтовую перемотку при перекодировке", @@ -1279,11 +1276,9 @@ "TabDirectPlay": "Прямое воспр-ие", "TabDisplay": "Отображение", "TabEpisodes": "Эпизоды", - "TabExpert": "Экспертные", "TabFavorites": "Избранное", "TabGenres": "Жанры", "TabGuide": "Телегид", - "TabHosting": "Размещение", "TabInfo": "Инфо", "TabLatest": "Новейшее", "TabLibrary": "Медиатека", @@ -1308,9 +1303,8 @@ "TabProfiles": "Профили", "TabRecordings": "Записи", "TabResponses": "Отклики", - "TabResumeSettings": "Параметры возобновления", + "TabResumeSettings": "Возобновление", "TabScheduledTasks": "Планировщик", - "TabSecurity": "Безопасность", "TabSeries": "Сериалы", "TabServer": "Сервер", "TabSettings": "Параметры", @@ -1397,5 +1391,56 @@ "LeaveBlankToNotSetAPassword": "Необязательно - оставьте пустым, чтобы не назначать пароль", "MessageImageFileTypeAllowed": "Поддерживаются только файлы JPEG и PNG.", "MessageImageTypeNotSelected": "Выберите тип рисунка из выпадающего меню.", - "OptionResElement": "res-элемент" + "OptionResElement": "res-элемент", + "AuthProviderHelp": "Выберите поставщика аутентификации, который будет использоваться для аутентификации пароля этого пользователя", + "HeaderFavoriteMovies": "Избранные фильмы", + "HeaderFavoriteShows": "Избранные передачи", + "HeaderFavoriteEpisodes": "Избранные эпизоды", + "HeaderFavoriteAlbums": "Избранные альбомы", + "HeaderFavoriteArtists": "Избранные исполнители", + "HeaderFavoriteSongs": "Избранные композиции", + "HeaderFavoriteVideos": "Избранные видео", + "HeaderHome": "Главное", + "HeaderHomeSettings": "Параметры главного экрана", + "HeaderRestartingServer": "Перезапустить сервер", + "LabelAuthProvider": "Поставщик аутентификации:", + "LabelPasswordResetProvider": "Поставщик сброса пароля:", + "LabelServerName": "Имя сервера:", + "LabelTranscodePath": "Путь перекодировки:", + "LabelTranscodes": "Перекодировки:", + "LabelUserLoginAttemptsBeforeLockout": "Неудачные попытки входа до блокировки пользователя:", + "DashboardVersionNumber": "Версия: {0}", + "DashboardServerName": "Сервер: {0}", + "DashboardOperatingSystem": "Операционная система: {0}", + "DashboardArchitecture": "Архитектура: {0}", + "LabelWeb": "Веб: ", + "LaunchWebAppOnStartup": "Запустить веб-приложение Jellyfin в моем веб-браузере при запуске Jellyfin Server", + "LaunchWebAppOnStartupHelp": "Это откроет веб-приложение в веб-браузере по умолчанию при начальном запуске Jellyfin Server. Это не произойдет при использовании функции перезапуска сервера.", + "MediaInfoSoftware": "ПО", + "MediaInfoStreamTypeAudio": "Аудио", + "MediaInfoStreamTypeData": "Данные", + "MediaInfoStreamTypeEmbeddedImage": "Внедрённый рисунок", + "MediaInfoStreamTypeSubtitle": "Субтитры", + "MediaInfoStreamTypeVideo": "Видео", + "MessageNoCollectionsAvailable": "Коллекции позволяют вам наслаждаться персонализированными группами фильмов, сериалов и альбомов. Нажмите кнопку +, чтобы начать создавать коллекции.", + "MessageNoServersAvailable": "Не найдено ни одного сервера, используя автоматическое обнаружение сервера.", + "MusicAlbum": "Музыкальный альбом", + "MusicArtist": "Муз. исполнитель", + "MusicVideo": "Муз. видео", + "Option3D": "3D", + "OptionBanner": "Баннер", + "OptionCaptionInfoExSamsung": "CaptionInfoEx [Samsung]", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionList": "Список", + "OptionLoginAttemptsBeforeLockout": "Определяет, сколько неудачных попыток входа можно сделать до блокировки.", + "OptionLoginAttemptsBeforeLockoutHelp": "0 означает наследование по умолчанию, 3 для не-администратора и 5 для администратора, -1 отключает блокировку", + "OptionPoster": "Постер", + "OptionPosterCard": "Постер-карта", + "OptionThumb": "Бегунок", + "OptionThumbCard": "Бегунок-карта", + "PasswordResetProviderHelp": "Выберите поставщика сброса пароля, который будет использоваться, когда этот пользователь запрашивает сброс пароля", + "PlaybackData": "Данные воспроизведения", + "SubtitleOffset": "Сдвиг субтитров", + "TabNetworking": "Работа в сети" } diff --git a/src/strings/sk.json b/src/strings/sk.json index 47005b9df0..2e1785e569 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -2,7 +2,6 @@ "Actor": "Herec", "Add": "Pridať", "AddToCollection": "Pridať do zbierky", - "Advanced": "Pokročilé", "Albums": "Albumy", "All": "Všetko", "AllChannels": "Všetky kanály", @@ -26,7 +25,7 @@ "BirthDateValue": "Narodil sa: {0}", "BirthLocation": "Miesto narodenia", "BirthPlaceValue": "Miesto narodenia: {0}", - "BookLibraryHelp": "Audioknihy a učebnice sú podporované", + "BookLibraryHelp": "Audioknihy a učebnice sú podporované. Prečítajte si {0}pravidlá pre názvy kníh v Jellyfin{1}.", "Books": "Knihy", "ButtonAdd": "Pridať", "ButtonAddMediaLibrary": "Pridať knižnicu médií", @@ -92,7 +91,7 @@ "ButtonSubmit": "Potvrdiť", "ButtonSubtitles": "Titulky", "ButtonTrailer": "Ukážka", - "ButtonUninstall": "Odinštalovať.", + "ButtonUninstall": "Odinštalovať", "ButtonUp": "Hore", "ButtonUpload": "Nahrať", "ButtonViewWebsite": "Zobraziť web stránku", @@ -132,7 +131,7 @@ "Disconnect": "Odpojiť", "Dislike": "Nepáči sa mi to", "DisplayInMyMedia": "Zobraziť na domácej obrazovke", - "DisplayMissingEpisodesWithinSeasons": "Zobraziť chýbajúce epizódy v rámci sezóny.", + "DisplayMissingEpisodesWithinSeasons": "Zobraziť chýbajúce epizódy v rámci sezóny", "DoNotRecord": "Nenahrávať", "Down": "Dole", "Download": "Stiahnuť", @@ -199,7 +198,7 @@ "HeaderConnectToServer": "Propojiť sa k serveru", "HeaderConnectionFailure": "Chyba pripojenia", "HeaderContinueListening": "Pokračovať v počúvaní", - "HeaderContinueWatching": "Pokračovať v pozeraní", + "HeaderContinueWatching": "Pokračujte v pozeraní", "HeaderCustomDlnaProfiles": "Vlastné profily", "HeaderDateIssued": "Dátum vydania", "HeaderDeleteDevice": "Zmazať zariadenie", @@ -281,7 +280,7 @@ "HeaderSelectPath": "Vybrať priečinok", "HeaderSelectServer": "Vybrať server", "HeaderSendMessage": "Poslať správu", - "HeaderSeries": "Series:", + "HeaderSeries": "Seriál", "HeaderServerSettings": "Nastavenia servera", "HeaderSettings": "Nastavenia", "HeaderSetupLibrary": "Nastavte Vaše knižnice médií", @@ -356,7 +355,7 @@ "LabelDay": "Deň:", "LabelDeathDate": "Dátum úmrtia:", "LabelDefaultScreen": "Predvolená obrazovka:", - "LabelDefaultUser": "Predvolený používateľ", + "LabelDefaultUser": "Predvolený používateľ:", "LabelDeviceDescription": "Popis zariadenia", "LabelDiscNumber": "Číslo disku:", "LabelDisplayLanguage": "Jazyk rozhrania:", @@ -379,14 +378,13 @@ "LabelExternalDDNS": "Externá doména:", "LabelExtractChaptersDuringLibraryScan": "Extrahovať obrázky kapitol počas prehľadávania knižnice", "LabelFailed": "Zlyhalo", - "LabelFanartApiKey": "Osobný api kľúč:", "LabelFileOrUrl": "Súbor alebo URL:", "LabelFinish": "Ukončiť", "LabelFont": "Písmo:", "LabelForgotPasswordUsernameHelp": "Zadajte svoje používateľské meno, ak si ho pamätáte.", "LabelFormat": "Formát:", "LabelServerNameHelp": "Toto meno bude použité na identifikáciu servera. Ak ostane prázdne, bude použitý názov počítača.", - "LabelGroupMoviesIntoCollections": "Zoskupiť filmy do kolekcií.", + "LabelGroupMoviesIntoCollections": "Zoskupiť filmy do kolekcií", "LabelGroupMoviesIntoCollectionsHelp": "Pri zobrazení zoznamu filmov budú filmy patriace do kolekcie zobrazené ako jedna zoskupená položka.", "LabelHardwareAccelerationType": "Hardvérová akcelerácia:", "LabelHardwareAccelerationTypeHelp": "Dostupné iba na podporovaných systémoch.", @@ -398,7 +396,7 @@ "LabelImportOnlyFavoriteChannels": "Obmedziť na kanály označené ako obľúbené", "LabelInNetworkSignInWithEasyPassword": "Povoliť prihlásenie jednoduchým PIN kódom vnútri lokálnej siete", "LabelKeepUpTo": "Ponechať najviac:", - "LabelKidsCategories": "Detské kategórie", + "LabelKidsCategories": "Detské kategórie:", "LabelKodiMetadataDateFormat": "Formát dátumu vydania:", "LabelKodiMetadataSaveImagePaths": "Uložiť cesty k obrázkom do NFO súborov", "LabelKodiMetadataSaveImagePathsHelp": "Je to odporúčané ak máte obrázky s názvami, ktoré sa neriadia pravidlami Kodi.", @@ -440,7 +438,7 @@ "LabelOriginalAspectRatio": "Pôvodný pomer strán:", "LabelOriginalTitle": "Pôvodný názov:", "LabelOverview": "Prehľad:", - "LabelParentalRating": "Rodičovské hodnotenie", + "LabelParentalRating": "Rodičovské hodnotenie:", "LabelPassword": "Heslo:", "LabelPasswordConfirm": "Heslo (potvrdenie):", "LabelPasswordRecoveryPinCode": "PIN kód:", @@ -478,7 +476,7 @@ "LabelSortBy": "Zoradiť podľa:", "LabelSoundEffects": "Zvukové efekty:", "LabelSource": "Zdroj:", - "LabelSportsCategories": "Športové kategórie", + "LabelSportsCategories": "Športové kategórie:", "LabelStartWhenPossible": "Spustiť akonáhle je možné:", "LabelStatus": "Stav:", "LabelSubtitleFormatHelp": "Príklad: srt", @@ -508,7 +506,7 @@ "LabelYear": "Rok:", "LabelYourFirstName": "Meno:", "LabelYoureDone": "Hotovo!", - "LabelZipCode": "PSČ", + "LabelZipCode": "PSČ:", "LabelffmpegPath": "Cesta k FFmpeg:", "Large": "Veľké", "LatestFromLibrary": "Najnovšie {0}", @@ -753,7 +751,7 @@ "Screenshot": "Snímka obrazovky", "Screenshots": "Snímky obrazovky", "Search": "Hľadať", - "SearchForCollectionInternetMetadata": "Vyhľadať metadáta a obrázky na Internete.", + "SearchForCollectionInternetMetadata": "Vyhľadať metadáta a obrázky na Internete", "SearchForMissingMetadata": "Hľadať chýbajúce metadáta", "SearchForSubtitles": "Hľadať titulky", "SearchResults": "Výsledky vyhľadávania", @@ -807,7 +805,7 @@ "TabMusicVideos": "Hudobné videá", "TabMyPlugins": "Moje rozšírenia", "TabNetworks": "Siete", - "TabNfoSettings": "Nfo nastavenia", + "TabNfoSettings": "NFO nastavenia", "TabNotifications": "Upozornenia", "TabOther": "Iné", "TabParentalControl": "Rodičovská kontrola", @@ -819,7 +817,6 @@ "TabResponses": "Odpovede", "TabResumeSettings": "Nastavenia pokračovania", "TabScheduledTasks": "Naplánované úlohy", - "TabSecurity": "Zabezpečenie", "TabSeries": "Seriály", "TabSettings": "Nastavenia", "TabShows": "Seriály", @@ -870,16 +867,163 @@ "ViewArtist": "Zobraziť umelca", "Wednesday": "Streda", "WelcomeToProject": "Vitajte v Jellyfin!", - "WizardCompleted": "To je zatiaľ všetko, čo potrebujeme. Jellyfin začal zhromažďovať údaje o vašej multimediálnej knižnici. Pozrite si niektoré z našich aplikácií a potom kliknite na Ukončiť pre zobrazenie Dashboardu serveru", + "WizardCompleted": "To je zatiaľ všetko, čo potrebujeme. Jellyfin začal zhromažďovať údaje o vašej multimediálnej knižnici. Pozrite si niektoré z našich aplikácií a potom kliknite na Ukončiť pre zobrazenie prístrojovej dosky serveru.", "Yes": "Áno", "Yesterday": "Včera", "AccessRestrictedTryAgainLater": "Prístup je momentálne obmedzený. Skúste to prosím neskôr znova.", - "AddedOnValue": "Pridaané {0}", + "AddedOnValue": "Pridané {0}", "Anytime": "Kedykoľvek", "Audio": "Zvuk", "Backdrop": "Pozadie", "ButtonGuide": "Sprievodca", "ButtonRevoke": "Odvolať", "ButtonSelectView": "Výber zobrazenia", - "CancelRecording": "Zrušiť nahrávanie" + "CancelRecording": "Zrušiť nahrávanie", + "AirDate": "Dátum vysielania", + "Aired": "Vysielané", + "Alerts": "Upozornenia", + "AllowOnTheFlySubtitleExtraction": "Povoliť extrahovanie titulkov za behu", + "ButtonFilter": "Filter", + "ButtonInfo": "Info", + "ButtonOff": "Vypnúť", + "ButtonOk": "Ok", + "ButtonStart": "Štart", + "ButtonStop": "Zastaviť", + "ChannelNameOnly": "Iba kanál {0}", + "ChannelNumber": "Číslo kanálu", + "DirectPlaying": "Priame prehrávanie", + "Disabled": "Vypnuté", + "Display": "Zobrazenie", + "EnableBackdrops": "Povoliť pozadia", + "EnableDisplayMirroring": "Povoliť zrkadlenie obrazu", + "Ended": "Ukončené", + "FileReadCancelled": "Čítanie súboru bolo zrušené.", + "Folders": "Priečinky", + "GuideProviderLogin": "Prihlásenie", + "HeaderCancelRecording": "Zrušiť nahrávanie", + "HeaderDetectMyDevices": "Nájsť moje zariadenia", + "HeaderFavoriteMovies": "Obľúbené filmy", + "HeaderFavoriteShows": "Obľúbené seriály", + "HeaderFavoriteEpisodes": "Obľúbené epizódy", + "HeaderFavoriteAlbums": "Obľúbené albumy", + "HeaderFavoriteArtists": "Obľúbení umelci", + "HeaderFavoriteSongs": "Obľúbené pesničky", + "HeaderFavoriteVideos": "Obľúbené videá", + "HeaderRecordingOptions": "Nastavenia nahrávania", + "HeaderStatus": "Stav", + "LabelAccessEnd": "Koniec:", + "LabelAccessStart": "Začiatok:", + "LabelAirsAfterSeason": "Vysielané po sezóne:", + "LabelAlbum": "Album:", + "LabelCustomRating": "Vlastné hodnotenie:", + "LabelDynamicExternalId": "{0} Id:", + "LabelTypeMetadataDownloaders": "{0} sťahovače metadát:", + "LabelTypeText": "Text", + "DashboardVersionNumber": "Verzia: {0}", + "DashboardServerName": "Server: {0}", + "DashboardOperatingSystem": "Operačný systém: {0}", + "DashboardArchitecture": "Architektúra: {0}", + "LabelWeb": "Web: ", + "LeaveBlankToNotSetAPassword": "Voliteľné - ponechajte prázdne pre nastavenie bez hesla", + "LinksValue": "Odkazy: {0}", + "List": "Zoznam", + "Logo": "Logo", + "MediaInfoSoftware": "Softvér", + "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoStreamTypeData": "Dáta", + "MediaInfoStreamTypeSubtitle": "Titulky", + "MediaInfoStreamTypeVideo": "Video", + "MessageImageFileTypeAllowed": "Sú podporované iba súbory JPEG a PNG.", + "Playlists": "Zoznamy skladieb", + "Sync": "Synchronizácia", + "Box": "Puzdro", + "BoxRear": "Zadnýá časť puzdra", + "ButtonLibraryAccess": "Prístup ku knižnici", + "ButtonSplitVersionsApart": "Rozdeliť verzie", + "ConfirmDeleteItem": "Zmazaním tejto položky odstránite súbor zo súborového systému aj z knižnice médií. Ste si istý/á, že chcete pokračovať?", + "ConfirmDeleteItems": "Zmazaním týchto položiek odstránite súbory zo súborového systému aj z knižnice médií. Ste si istý/á, že chcete pokračovať?", + "Continuing": "Pokračovanie", + "Default": "Predvolené", + "DirectStreamHelp2": "Priame streamovanie súboru používa veľmi málo procesorového výkonu bez straty kvality videa.", + "DirectStreaming": "Priame streamovanie", + "DisplayMissingEpisodesWithinSeasonsHelp": "Toto musí byť zapnuté aj pre TV knižnive v nastaveniach Jellyfin servera.", + "DisplayModeHelp": "Zvoľte typ obrazovky, na ktorej používate Jellyfin.", + "EnableCinemaMode": "Povoliť kino režim", + "EnableNextVideoInfoOverlay": "Povoliť informácie o nasledujúcom videu počas prehrávania", + "EnableNextVideoInfoOverlayHelp": "Na konci videa sa zobrazia informácie o nasledujúcom videu v aktuálnom playliste.", + "ErrorAddingMediaPathToVirtualFolder": "Pri pridávaní cesty k mediám nastala chyba. Uistite sa prosím, že cesta je platná, a že proces Jellyfin servera má prístup k umiestneniu.", + "HeaderAddScheduledTaskTrigger": "Pridať spúšťač", + "HeaderAddToPlaylist": "Pridať do playlistu", + "HeaderAlert": "Upozornenie", + "HeaderCastCrew": "Herci a obsadenie", + "HeaderDownloadSync": "Sťahovanie a synchronizácia", + "HeaderExternalIds": "Externé ID:", + "HeaderFeatureAccess": "Prístup k funkciám", + "HeaderFeatures": "Funkcie", + "HeaderHome": "Domov", + "HeaderHomeSettings": "Nastavenia domovskej obrazovky", + "HeaderLoginFailure": "Prihlásenie zlyhalo", + "HeaderMediaFolders": "Priečinky médií", + "HeaderRemoveMediaFolder": "Odstrániť priečinok médií", + "HeaderSelectCertificatePath": "Vybrať cestu k certifikátu", + "HeaderSortOrder": "Poradie zoradzovania", + "HeaderSpecialEpisodeInfo": "Informácie o špeciálnej epizóde", + "HeaderSpecialFeatures": "Špeciálne funkcie", + "HeaderSubtitleDownloads": "Sťahovanie titulkov", + "HeaderTags": "Tagy", + "HeaderVideoType": "Typ videa", + "HeaderVideoTypes": "Typy videí", + "LabelAirsBeforeSeason": "Vysielané pred sezónou:", + "LabelAudio": "Zvuk:", + "LabelBlockContentWithTags": "Blokovať položky s tagmi:", + "LabelDisplayMode": "Režim zobrazenia:", + "LabelDisplaySpecialsWithinSeasons": "Zobraziť špeciálne epizódy v sezóne, v ktorej boli odvysielané", + "Option3D": "3D", + "OptionAlbum": "Album", + "OptionBluray": "Bluray", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionDownloadLogoImage": "Logo", + "OptionDownloadMenuImage": "Ponuka", + "OptionDownloadPrimaryImage": "Primárne", + "OptionDvd": "DVD", + "OptionExtractChapterImage": "Povoliť extrakciu obrázkov z videa", + "OptionHasSpecialFeatures": "Špeciálne funkcie", + "OptionHasTrailer": "Ukážka/Trailer", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionList": "Zoznam", + "OptionMax": "Max", + "OptionPoster": "Plagát", + "OptionProfileAudio": "Zvuk", + "OptionProfileVideo": "Video", + "OptionProtocolHls": "Živý HTTP stream", + "OptionRequirePerfectSubtitleMatch": "Sťahovať iba titulky, ktoré perfektne sedia k mojim video súborom", + "OptionThumb": "Náhľad", + "Rate": "Hodnotenie", + "Recordings": "Nahrávky", + "RemoveFromPlaylist": "Odobrať z playlistu", + "RepeatMode": "Režim opakovania", + "RequiredForAllRemoteConnections": "Vyžadované pre všetky vzdialené pripojenia", + "Rewind": "Pretočiť späť", + "Runtime": "Dĺžka", + "Schedule": "Naplánovné úlohy", + "SeriesDisplayOrderHelp": "Zoradiť epizódy podľa dátumu vysielania, poradia na DVD alebo absolútneho číslovania.", + "SeriesYearToPresent": "{0} - Súčasnosť", + "ShowIndicatorsFor": "Zobraziť indikátory pre:", + "ShowTitle": "Zobraziť názov", + "Smaller": "Menšie", + "SortName": "Zoradiť podľa názvu", + "TabDirectPlay": "Priame prehrávanie", + "TabLogs": "Záznamy", + "TabPlayback": "Prehrávanie", + "TabPlaylist": "Playlist", + "TabPlaylists": "Playlisty", + "TabServer": "Server", + "TabStreaming": "Streamovanie", + "Tags": "Tagy", + "TagsValue": "Tagy: {0}", + "TitlePlayback": "Prehrávanie", + "Transcoding": "Prekódovavanie", + "ValueMinutes": "{0} min", + "ValueOneAlbum": "1 album" } diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index bb6f019213..dd7d1e1e6d 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -59,7 +59,6 @@ "TabPlaylist": "Playlista", "TabProfile": "Profil", "TabProfiles": "Profili", - "TabSecurity": "Varnost", "TabShows": "Oddaje", "TabSuggestions": "Priporocila", "TabUpcoming": "V prihodu", @@ -75,7 +74,6 @@ "AddToPlaylist": "Dodaj na seznam predvajanja", "AddedOnValue": "Dodano {0}", "AdditionalNotificationServices": "Prebrskaj katalog dodatkov za dodatne storitve obveščanja.", - "Advanced": "Napredno", "AirDate": "Datum predvajanja", "Aired": "Predvajano", "Albums": "Albumi", diff --git a/src/strings/sv.json b/src/strings/sv.json index bad7930463..65d9cde6d0 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -8,7 +8,6 @@ "AddToPlaylist": "Lägg till i spellista", "AddedOnValue": "Tillagd {0}", "AdditionalNotificationServices": "Sök efter fler meddelandetillägg i tilläggskatalogen.", - "Advanced": "Avancerat", "AirDate": "Sändningstid", "Aired": "Sändes", "Albums": "Album", @@ -575,8 +574,6 @@ "LabelExtractChaptersDuringLibraryScan": "Extrahera kapitelbildrutor vid genomsökning av biblioteket", "LabelExtractChaptersDuringLibraryScanHelp": "Om aktiverat extraheras kapitelbildrutor när videor importeras vid genomsökning av biblioteket. Om avaktiverat kommer extrahering att ske vid schemalagd kapitelbildrutebehandling, för att snabba upp den regelbundna genomsökningen av biblioteket.", "LabelFailed": "Misslyckades", - "LabelFanartApiKey": "Personlig api-nyckel:", - "LabelFanartApiKeyHelp": "Hämtningar av fanart utan en personling api-nyckel ger tillgång till filer som godkänts för över 7 dagar sedan. Med en personlig API-nyckel ändras det till 48 timmar. Om du även är VIP-medlem ändras det ytterligare till cirka 10 minuter.", "LabelFileOrUrl": "Fil eller url:", "LabelFinish": "Klart", "LabelFont": "Typsnitt:", @@ -1188,7 +1185,6 @@ "TabFavorites": "Favoriter", "TabGenres": "Genrer", "TabGuide": "TV-guide", - "TabHosting": "Värd", "TabLatest": "Nytillkommet", "TabLibrary": "Bibliotek", "TabLiveTV": "Live-TV", @@ -1213,7 +1209,6 @@ "TabResponses": "Svar", "TabResumeSettings": "Återuppta-inställningar", "TabScheduledTasks": "Schemalagda aktiviteter", - "TabSecurity": "Säkerhet", "TabSeries": "Serie", "TabSettings": "Inställningar", "TabShows": "Serier", diff --git a/src/strings/tr.json b/src/strings/tr.json index 985a5e0cde..94a40d068a 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -234,7 +234,6 @@ "TabProfile": "Profil", "TabProfiles": "Profiller", "TabRecordings": "Kayıtlar", - "TabSecurity": "Güvenlik", "TabSeries": "Seriler", "TabServer": "Sunucu", "TabSettings": "Ayarlar", @@ -264,7 +263,6 @@ "AddToPlaylist": "Çalma listesine ekle", "AddedOnValue": "{0} eklendi", "AdditionalNotificationServices": "Ek bildirim hizmetleri yüklemek için eklenti kataloguna göz atın.", - "Advanced": "Gelişmiş", "AirDate": "Yayın tarihi", "Aired": "Yayınlanma tarihi", "Alerts": "Uyarılar", @@ -286,5 +284,10 @@ "Playlists": "Çalma listeleri", "Shows": "Diziler", "Songs": "Şarkılar", - "Sync": "Eşitle" + "Sync": "Eşitle", + "AllChannels": "Bütün kanallar", + "AllComplexFormats": "Bütün karmaşık formatlar (ASS, SSA, VOBSUB, PGS, SUB/IDX, vb.)", + "AllEpisodes": "Bütün bölümler", + "AllLanguages": "Bütün diller", + "AllowMediaConversion": "Medya dönüşümüne izin ver" } diff --git a/src/strings/uk.json b/src/strings/uk.json index 90f83d6be4..88c9c4e589 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -77,7 +77,6 @@ "TabPlugins": "Додатки", "TabProfile": "Профіль", "TabProfiles": "Профілі", - "TabSecurity": "Безпека", "TabTrailers": "Трейлери", "TabUsers": "Користувачі", "ValueAlbumCount": "{0} альбомів", diff --git a/src/strings/vi.json b/src/strings/vi.json index be93a913eb..0ce870cfa2 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -110,7 +110,6 @@ "TabPassword": "Mật khẩu", "TabProfile": "Hồ sơ", "TabProfiles": "Hồ sơ", - "TabSecurity": "Bảo mật", "TabServer": "Máy chủ", "TabSongs": "Các ca khúc", "TabTranscoding": "Mã hóa", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 92a20bb42c..9423fc3720 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -8,7 +8,6 @@ "AddToPlaylist": "添加到播放列表", "AddedOnValue": "已添加 {0}", "AdditionalNotificationServices": "浏览插件目录安装额外的通知访问。", - "Advanced": "高级", "AirDate": "播出日期", "Aired": "已发布", "Albums": "专辑", @@ -49,7 +48,7 @@ "Books": "书籍", "Browse": "浏览", "BrowsePluginCatalogMessage": "浏览我们的插件目录来查看现有插件。", - "BurnSubtitlesHelp": "根据字幕格式确定服务器在转换视频时是否应烧录字幕。避免烧录字幕会提高服务器性能。选择“自动”以烧录基于图像的字幕格式(如 VOBSUB, PGS, SUB/IDX 等)和一些复杂的 ASS/SSA 字幕。", + "BurnSubtitlesHelp": "根据字幕格式确定服务器在转换视频时是否应烧录字幕。避免烧录字幕会提高服务器性能。选择“自动”以烧录基于图像的字幕格式(如 VOBSUB, PGS, SUB/IDX 等)和一些复杂的 ASS/SSA 字幕", "ButtonAdd": "添加", "ButtonAddMediaLibrary": "添加媒体库", "ButtonAddScheduledTaskTrigger": "添加触发", @@ -70,7 +69,7 @@ "ButtonDownload": "下载", "ButtonEdit": "编辑", "ButtonEditImages": "修改图片", - "ButtonEditOtherUserPreferences": "编辑这个用户的用户配置,图片和个人参数", + "ButtonEditOtherUserPreferences": "编辑这个用户的用户配置,图片和个人参数。", "ButtonFilter": "筛选", "ButtonForgotPassword": "忘记密码", "ButtonFullscreen": "全屏", @@ -153,7 +152,7 @@ "DeathDateValue": "去世: {0}", "Default": "默认", "DefaultErrorMessage": "处理请求时发生错误。请稍后尝试。", - "DefaultMetadataLangaugeDescription": "这些是你的默认设置并且可以在你的每个媒体库中被单独自定义", + "DefaultMetadataLangaugeDescription": "这些是你的默认设置并且可以在你的每个媒体库中被单独自定义。", "DefaultSubtitlesHelp": "字幕将基于内嵌元数据中的“默认”标志和“强制”标志来载入。当多个选项可用时,将根据语言偏好决定。", "Delete": "删除", "DeleteDeviceConfirmation": "你确定你希望删除这个设备吗?当下一次有用户通过这个设备登录时,这个设备会再次出现。", @@ -271,7 +270,7 @@ "HeaderAllowMediaDeletionFrom": "允许从中删除媒体", "HeaderApiKey": "API 密钥", "HeaderApiKeys": "API 密钥", - "HeaderApiKeysHelp": "外部应用程序需要 API 密钥才能与 Jellyfin 服务器进行通信。使用 Jellyfin 账户进行登录时密钥将会自动生成,您也可以手动为某个应用程序分配一个密钥。", + "HeaderApiKeysHelp": "外部应用程序需要 API 密钥才能与 Jellyfin Server 进行通信。使用 Jellyfin 账户进行登录时密钥将会自动生成,您也可以手动为某个应用程序分配一个密钥。", "HeaderAudioBooks": "有声读物", "HeaderAudioSettings": "声音设置", "HeaderAutomaticUpdates": "自动更新", @@ -412,7 +411,7 @@ "HeaderSelectTranscodingPath": "选择临时解码路径", "HeaderSelectTranscodingPathHelp": "浏览或输入一个路径用于临时转码,此文件夹必须可写。", "HeaderSendMessage": "发送消息", - "HeaderSeries": "电视剧:", + "HeaderSeries": "电视剧", "HeaderSeriesOptions": "系列选项", "HeaderServerSettings": "服务器设置", "HeaderSettings": "设置", @@ -514,7 +513,7 @@ "LabelChannels": "频道:", "LabelCollection": "收藏:", "LabelCommunityRating": "公众评分:", - "LabelContentType": "内容类型", + "LabelContentType": "内容类型:", "LabelCountry": "国家:", "LabelCriticRating": "影评人评分:", "LabelCurrentPassword": "当前密码:", @@ -548,7 +547,7 @@ "LabelDownMixAudioScale": "缩混音频增强:", "LabelDownMixAudioScaleHelp": "缩混音频增强。设置为1,将保留原来的音量·。", "LabelDownloadLanguages": "下载语言:", - "LabelDropImageHere": "把图像拖放在这里", + "LabelDropImageHere": "拖拽或点击选择图像于此处。", "LabelDropShadow": "阴影:", "LabelDynamicExternalId": "{0} Id:", "LabelEasyPinCode": "简易PIN码:", @@ -580,8 +579,6 @@ "LabelExtractChaptersDuringLibraryScan": "媒体库扫描过程中解压章节图像", "LabelExtractChaptersDuringLibraryScanHelp": "如果启用,当媒体库导入视频并扫描时,将提取章节图像。如果禁用,章节图像将在之后的计划任务提取,而媒体库会更快完成扫描。", "LabelFailed": "失败", - "LabelFanartApiKey": "个人 API 密钥:", - "LabelFanartApiKeyHelp": "请求 fanart 没有个人 API 密钥返回已在7天前批准的图像。与个人 API 的Key, 下降到48小时, 如果你也是一个 fanart VIP 会员, 将进一步下降到约10分钟。", "LabelFileOrUrl": "文件或网址:", "LabelFinish": "完成", "LabelFont": "字体:", @@ -591,7 +588,7 @@ "LabelServerNameHelp": "此名称将用做服务器名,如果留空,将使用计算机名。", "LabelGroupMoviesIntoCollections": "批量添加电影到收藏", "LabelGroupMoviesIntoCollectionsHelp": "显示电影列表时,属于一个收藏的电影将显示为一个分组。", - "LabelH264Crf": "H264 编码速率控制", + "LabelH264Crf": "H264 CRF 编码质量等级:", "LabelH264EncodingPreset": "H264 编码预设:", "LabelHardwareAccelerationType": "硬件加速:", "LabelHardwareAccelerationTypeHelp": "只能在支持的系统上使用。", @@ -623,7 +620,7 @@ "LabelKodiMetadataUserHelp": "启用此项以保存观看历史数据至 Nfo 文件中以供其他应用程序利用。", "LabelLanNetworks": "LAN网络:", "LabelLanguage": "语言:", - "LabelLineup": "排队", + "LabelLineup": "排队:", "LabelLocalHttpServerPortNumber": "本地 HTTP 端口号:", "LabelLocalHttpServerPortNumberHelp": "Jellyfin HTTP 服务器监听的 TCP 端口。", "LabelLockItemToPreventChanges": "锁定此项目防止改动", @@ -647,7 +644,7 @@ "LabelMetadataDownloadLanguage": "首选下载语言:", "LabelMetadataDownloadersHelp": "启用媒体资料下载器的优先级排序,低优先级的下载器只会用来填补缺少的信息。", "LabelMetadataPath": "媒体资料路径:", - "LabelMetadataPathHelp": "指定下载图像和资料的自定义路径", + "LabelMetadataPathHelp": "为下载的图像和元数据指定自定义路径", "LabelMetadataReaders": "媒体资料读取器:", "LabelMetadataReadersHelp": "为你首选的本地媒体资料源按优先级排序。找到的第一个文件将被读取。", "LabelMetadataSavers": "媒体资料储存方式:", @@ -742,15 +739,15 @@ "LabelSimultaneousConnectionLimit": "并发流限制:", "LabelSkin": "皮肤:", "LabelSkipBackLength": "跳过长度:", - "LabelSkipForwardLength": "快进长度", + "LabelSkipForwardLength": "快进时限:", "LabelSkipIfAudioTrackPresent": "如果默认音轨的语言和下载语言一样则跳过", "LabelSkipIfAudioTrackPresentHelp": "取消此选项,则确保所有的视频都下载字幕,无论音频语言是否一致。", "LabelSkipIfGraphicalSubsPresent": "跳过带内嵌字幕的视频", "LabelSkipIfGraphicalSubsPresentHelp": "保持字幕的文本版本将导致更有效的传递和降低视频转码的可能性。", "LabelSonyAggregationFlags": "索尼聚合标志:", "LabelSonyAggregationFlagsHelp": "决定在 urn:schemas-dlna-org:device-1-0 namespace 中的\n aggregationFlags 元素的内容。", - "LabelSortBy": "排序方式", - "LabelSortOrder": "排序顺序", + "LabelSortBy": "排序依据:", + "LabelSortOrder": "排序顺序:", "LabelSortTitle": "短标题:", "LabelSoundEffects": "音效:", "LabelSource": "来源:", @@ -777,7 +774,7 @@ "LabelTitle": "标题:", "LabelTrackNumber": "音轨号码:", "LabelTranscodingAudioCodec": "音频编解码器:", - "LabelTranscodingContainer": "媒体载体", + "LabelTranscodingContainer": "容器:", "LabelTranscodingTempPathHelp": "此文件夹包含用于转码的工作文件。请自定义路径,或留空以使用默认的服务器数据文件夹。", "LabelTranscodingThreadCount": "转码线程数:", "LabelTranscodingThreadCountHelp": "选择转码时使用的最大线程数。\n减少线程数量将会降低CPU使用率,可能无法快速进行转换并流畅的播放。", @@ -786,12 +783,12 @@ "LabelTunerIpAddress": "调谐器 IP 地址:", "LabelTunerType": "调谐器类型:", "LabelType": "类型:", - "LabelTypeMetadataDownloaders": "{0}元数据下载器", + "LabelTypeMetadataDownloaders": "{0} 元数据下载器:", "LabelTypeText": "文本", "LabelUseNotificationServices": "使用以下服务:", "LabelUser": "用户:", "LabelUserAgent": "用户代理:", - "LabelUserLibrary": "用户媒体库", + "LabelUserLibrary": "用户程序库:", "LabelUserLibraryHelp": "选择一个在设备上显示的用户媒体库。留空则使用默认设置。", "LabelUserRemoteClientBitrateLimitHelp": "这将会覆盖服务器“播放”设置中为全局设置的默认值。", "LabelUsername": "用户名:", @@ -999,7 +996,7 @@ "OptionEnableAccessToAllChannels": "允许访问所有频道", "OptionEnableAccessToAllLibraries": "允许访问所有媒体库", "OptionEnableAutomaticServerUpdates": "开启自动服务器更新", - "OptionEnableExternalContentInSuggestions": "在建议中启用外部内容。", + "OptionEnableExternalContentInSuggestions": "在建议中启用外部内容", "OptionEnableExternalContentInSuggestionsHelp": "允许建议的内容中包含互联网预告片和电视直播节目。", "OptionEnableForAllTuners": "给所有调谐器开启", "OptionEnableM2tsMode": "启用M2ts模式", @@ -1082,7 +1079,7 @@ "PackageInstallFailed": "{0} 安装失败。", "ParentalRating": "家长分级", "PasswordMatchError": "密码和确认密码必须匹配。", - "PasswordResetComplete": "密码已重置", + "PasswordResetComplete": "密码已重置。", "PasswordResetConfirmation": "你确定要重置密码?", "PasswordResetHeader": "密码重置", "PasswordSaved": "密码已保存。", @@ -1125,7 +1122,7 @@ "RecordSeries": "录制电视剧", "RecordingCancelled": "录制已取消。", "RecordingPathChangeMessage": "更改录制文件夹不会将现有录制从旧位置迁移到新的。您需要手动移动它们 (如果需要)。", - "RecordingScheduled": "录制计划", + "RecordingScheduled": "录制预设", "Refresh": "刷新", "RefreshMetadata": "刷新元数据", "RefreshQueued": "列队已刷新。", @@ -1158,8 +1155,8 @@ "SearchResults": "搜索结果", "SendMessage": "发送消息", "Series": "电视剧", - "SeriesCancelled": "电视剧已取消", - "SeriesRecordingScheduled": "电视剧录制计划", + "SeriesCancelled": "电视剧已取消。", + "SeriesRecordingScheduled": "电视剧录制计划。", "SeriesSettings": "系列设定", "SeriesYearToPresent": "{0} - 现在", "ServerNameIsRestarting": "Jellyfin Server - {0} 重启中。", @@ -1210,11 +1207,9 @@ "TabDirectPlay": "直接播放", "TabDisplay": "显示", "TabEpisodes": "剧集", - "TabExpert": "专家", "TabFavorites": "我的最爱", "TabGenres": "风格", "TabGuide": "指南", - "TabHosting": "主机", "TabInfo": "信息", "TabLatest": "最新", "TabLibrary": "媒体库", @@ -1241,7 +1236,6 @@ "TabResponses": "响应", "TabResumeSettings": "恢复设置", "TabScheduledTasks": "计划任务", - "TabSecurity": "安全措施", "TabSeries": "电视剧", "TabServer": "服务器", "TabSettings": "设置", @@ -1350,7 +1344,7 @@ "LabelTranscodes": "转码:", "AuthProviderHelp": "选择用于验证此用户密码的身份验证提供者", "ColorPrimaries": "基色", - "ConfigureDateAdded": "在媒体库设置里服务器如何判定添加日期", + "ConfigureDateAdded": "在Jellyfin Server仪表板媒体库的设置里确认如何添加日期", "DisplayModeHelp": "选择您正在运行Jellyfin的屏幕类型。", "EnableColorCodedBackgrounds": "启用彩色背景", "ErrorDeletingItem": "服务器删除项目时出错。请确认服务器具有对媒体文件夹的写入权限并重试。", @@ -1432,5 +1426,26 @@ "Vertical": "垂直的", "VideoRange": "视频范围", "Depressed": "凹陷", - "Uniform": "轮廓" + "Uniform": "轮廓", + "HeaderHome": "主页", + "HeaderHomeSettings": "主页设置", + "DashboardOperatingSystem": "操作系统:{0}", + "DashboardArchitecture": "架构:{0}", + "GroupVersions": "按版本分组", + "LaunchWebAppOnStartup": "当 Jellyfin 服务器启动时,在我的 Web 浏览器中打开 Jellyfin Web 应用程序", + "LaunchWebAppOnStartupHelp": "这个插件已经被成功安装。Jellyfin 服务器需要重启以使该插件生效。", + "MusicAlbum": "音乐专辑", + "MusicArtist": "音乐艺术家", + "MusicVideo": "音乐视频", + "OptionBanner": "横幅", + "OptionList": "列表", + "OptionPoster": "海报", + "OptionPosterCard": "海报卡片", + "OptionThumb": "缩略图", + "OptionThumbCard": "缩略图卡片", + "PlaybackData": "回放数据", + "SmallCaps": "小型大写字母", + "SubtitleOffset": "字幕偏移", + "MessageNoServersAvailable": "未能自动发现服务器。", + "TabNetworking": "联网" } diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 176a60ee4e..6ed8abded2 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -120,7 +120,6 @@ "LabelEvent": "事件:", "LabelEveryXMinutes": "每次:", "LabelFailed": "失敗", - "LabelFanartApiKey": "個人 API 鎖匙:", "LabelFinish": "完成", "LabelServerNameHelp": "名稱用於識辨伺服器。如果留空,將使用本機(伺服器)名稱。", "LabelHttpsPort": "本地 https 連接埠號碼:", @@ -317,7 +316,6 @@ "TabProfile": "簡介", "TabProfiles": "簡介", "TabRecordings": "錄影", - "TabSecurity": "安全性", "TabSeries": "電視劇", "TabServer": "伺服器", "TabSettings": "設定", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index b2d763b555..1f21d6857e 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1,6 +1,5 @@ { "Add": "添加", - "Advanced": "進階", "All": "全部", "AllowRemoteAccessHelp": "如果未勾選,所有連線都將被阻擋。", "Browse": "瀏覽", @@ -162,7 +161,7 @@ "MessageItemsAdded": "已新增項目。", "MessageNoMovieSuggestionsAvailable": "目前並沒有推薦的電影。開始觀看並對您的電影評分後,我們就會為您推薦您可能會喜歡的內容。", "MessageNothingHere": "這裡沒有什麼。", - "MessagePasswordResetForUsers": "該使用者的密碼已被移除。要以該使用者登入時,請將密碼欄位留白。", + "MessagePasswordResetForUsers": "下列使用者的密碼已被重新設置。從現時起,該使用者可以使用在密碼重置時所使用之 PIN 代碼進行登入。", "MessagePleaseEnsureInternetMetadata": "請確保已啟用從互聯網下載媒體資料。", "Monday": "星期一", "MoreUsersCanBeAddedLater": "往後可以在控制台內添加更多用戶。", @@ -285,7 +284,6 @@ "TabProfile": "配置", "TabProfiles": "配置", "TabRecordings": "錄影", - "TabSecurity": "安全性", "TabSeries": "電視劇", "TabServer": "伺服器", "TabSettings": "設定", @@ -577,9 +575,9 @@ "HeaderAlbums": "專輯", "HeaderAlert": "通知", "HeaderAllowMediaDeletionFrom": "允許從中刪除媒體", - "HeaderApiKey": "API金鑰", - "HeaderApiKeys": "API金鑰", - "HeaderApiKeysHelp": "外部應用程式需要有一個 API 金鑰以用於和 Jellyfin 伺服器溝通。金鑰將在通過 Jellyfin 帳戶登錄時自動發行,或者你可以手動為應用程生生成一個金鑰。", + "HeaderApiKey": "API 金鑰", + "HeaderApiKeys": "API 金鑰", + "HeaderApiKeysHelp": "外部應用程式需要有一個 API 金鑰以用於和 Jellyfin 伺服器溝通。金鑰將在通過 Jellyfin 帳戶登錄時自動發行,或者你可以手動為應用程式生成一個金鑰。", "HeaderApp": "應用程式", "HeaderAppearsOn": "同時出現於", "HeaderAudio": "音訊", @@ -679,7 +677,7 @@ "HeaderHomePage": "主畫面", "HeaderHomeScreen": "主畫面", "HeaderHomeScreenSettings": "主畫面設定", - "HeaderHttpHeaders": "Http 開頭", + "HeaderHttpHeaders": "Http 標頭", "HeaderIdentification": "身份識別", "HeaderIdentificationCriteriaHelp": "至少輸入一個識別標準。", "HeaderIdentificationHeader": "身份識別標題", @@ -700,7 +698,7 @@ "HeaderJellyfinAccountRemoved": "已移除 Jellyfin 帳戶", "HeaderKeepRecording": "繼續錄製", "HeaderKeepSeries": "保存系列", - "HeaderKodiMetadataHelp": "要啟用或禁用 Nfo 數據, 請在 Jellyfin 媒體庫安裝程序中編輯媒體庫, 然後找到“數據儲存”部分。", + "HeaderKodiMetadataHelp": "要啟用或禁用 NFO 元數據, 請在 Jellyfin “建立媒體庫”頁面中編輯該媒體庫, 然後找到“元數據儲存”部分。", "HeaderLanguage": "語言", "HeaderLatestChannelItems": "最近節目項目", "HeaderLatestChannelMedia": "最近節目項目", @@ -737,7 +735,7 @@ "HeaderName": "名字", "HeaderNavigation": "導覽", "HeaderNetwork": "網路", - "HeaderNewApiKey": "新API金鑰", + "HeaderNewApiKey": "新 API 金鑰", "HeaderNewApiKeyHelp": "允許一個應用程式存取Jellyfin伺服器。", "HeaderNewDevices": "新裝置", "HeaderNewServer": "新伺服器", @@ -951,5 +949,15 @@ "LabelCustomCertificatePathHelp": "提供一個包含了證書和金鑰的 PKCS #12 文件的路徑以在一個自定義域名上啟動 TLS 支持。", "LabelCustomCss": "自訂 CSS:", "LabelCustomCssHelp": "應用自訂 CSS Web 界面。", - "LabelCustomDeviceDisplayName": "顯示名稱:" + "LabelCustomDeviceDisplayName": "顯示名稱:", + "Depressed": "凹陷", + "HeaderHome": "主頁", + "HeaderHomeSettings": "主頁設定", + "HeaderSelectMetadataPathHelp": "瀏覽或者鍵入一個文件庫路徑以用於保存原數據。請確保該文件庫可以被寫入。", + "HeaderSelectServerCachePathHelp": "瀏覽或者鍵入一個文件庫路徑以用於伺服器緩存檔案。請確保該文件庫可以被寫入。", + "LabelCustomDeviceDisplayNameHelp": "為設備提供一個自訂的顯示名稱,或者留空以使用設備自己報告的名稱。", + "LabelCustomRating": "自訂分級:", + "LabelDashboardTheme": "儀表板佈景主題:", + "LabelDateAdded": "新增日期:", + "LabelDateAddedBehavior": "新内容加入的日期應使用:" } diff --git a/src/usernew.html b/src/usernew.html index f53bc60b9f..207a68ffe3 100644 --- a/src/usernew.html +++ b/src/usernew.html @@ -1,8 +1,6 @@
    -
    -
    @@ -11,7 +9,11 @@
    - + +
    + +
    +
    @@ -29,6 +31,7 @@
    +