diff --git a/.eslintrc.js b/.eslintrc.js index a4e972c83e..7de812ea6e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,3 +1,5 @@ +const restrictedGlobals = require('confusing-browser-globals'); + module.exports = { root: true, plugins: [ @@ -39,14 +41,15 @@ module.exports = { 'no-floating-decimal': ['error'], 'no-multi-spaces': ['error'], 'no-multiple-empty-lines': ['error', { 'max': 1 }], + 'no-restricted-globals': ['error'].concat(restrictedGlobals), 'no-trailing-spaces': ['error'], - 'no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }], - 'no-unused-vars': ['error', { 'vars': 'all', 'args': 'none', 'ignoreRestSiblings': true }], + '@babel/no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }], + //'no-unused-vars': ['error', { 'vars': 'all', 'args': 'none', 'ignoreRestSiblings': true }], 'one-var': ['error', 'never'], 'padded-blocks': ['error', 'never'], //'prefer-const': ['error', {'destructuring': 'all'}], 'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }], - 'semi': ['error'], + '@babel/semi': ['error'], 'space-before-blocks': ['error'], 'space-infix-ops': 'error', 'yoda': 'error' @@ -106,6 +109,7 @@ module.exports = { // TODO: Fix warnings and remove these rules 'no-redeclare': ['off'], 'no-useless-escape': ['off'], + 'no-unused-vars': ['off'], // TODO: Remove after ES6 migration is complete 'import/no-unresolved': ['off'] }, diff --git a/package.json b/package.json index fb3c2dbd30..d6e8c1941f 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "repository": "https://github.com/jellyfin/jellyfin-web", "license": "GPL-2.0-or-later", "devDependencies": { - "@babel/core": "^7.11.1", - "@babel/eslint-parser": "^7.11.3", + "@babel/core": "^7.11.4", + "@babel/eslint-parser": "^7.11.4", "@babel/eslint-plugin": "^7.11.3", "@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-private-methods": "^7.10.1", @@ -16,8 +16,9 @@ "autoprefixer": "^9.8.6", "babel-loader": "^8.0.6", "browser-sync": "^2.26.12", + "confusing-browser-globals": "^1.0.9", "copy-webpack-plugin": "^5.1.1", - "css-loader": "^4.2.1", + "css-loader": "^4.2.2", "cssnano": "^4.1.10", "del": "^5.1.0", "eslint": "^7.7.0", @@ -38,7 +39,7 @@ "gulp-postcss": "^8.0.0", "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", - "gulp-terser": "^1.3.2", + "gulp-terser": "^1.4.0", "html-webpack-plugin": "^4.3.0", "lazypipe": "^1.0.2", "node-sass": "^4.13.1", @@ -63,7 +64,7 @@ "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", "headroom.js": "^0.11.0", - "hls.js": "^0.14.8", + "hls.js": "^0.14.9", "howler": "^2.2.0", "intersection-observer": "^0.11.0", "jellyfin-apiclient": "^1.4.1", @@ -96,6 +97,7 @@ "src/components/alphaPicker/alphaPicker.js", "src/components/appFooter/appFooter.js", "src/components/apphost.js", + "src/components/appRouter.js", "src/components/autoFocuser.js", "src/components/backdrop/backdrop.js", "src/components/cardbuilder/cardBuilder.js", @@ -144,6 +146,7 @@ "src/components/multiSelect/multiSelect.js", "src/components/notifications/notifications.js", "src/components/nowPlayingBar/nowPlayingBar.js", + "src/components/packageManager.js", "src/components/playback/brightnessosd.js", "src/components/playback/mediasession.js", "src/components/playback/nowplayinghelper.js", @@ -159,16 +162,21 @@ "src/components/playerstats/playerstats.js", "src/components/playlisteditor/playlisteditor.js", "src/components/playmenu.js", + "src/components/pluginManager.js", "src/components/prompt/prompt.js", "src/components/recordingcreator/recordingbutton.js", "src/components/recordingcreator/recordingcreator.js", "src/components/recordingcreator/seriesrecordingeditor.js", "src/components/recordingcreator/recordinghelper.js", "src/components/refreshdialog/refreshdialog.js", + "src/components/recordingcreator/recordingeditor.js", + "src/components/recordingcreator/recordingfields.js", "src/components/qualityOptions.js", "src/components/remotecontrol/remotecontrol.js", "src/components/sanatizefilename.js", "src/components/scrollManager.js", + "src/plugins/experimentalWarnings/plugin.js", + "src/plugins/sessionPlayer/plugin.js", "src/plugins/htmlAudioPlayer/plugin.js", "src/plugins/chromecastPlayer/plugin.js", "src/components/slideshow/slideshow.js", @@ -313,11 +321,13 @@ "src/plugins/backdropScreensaver/plugin.js", "src/plugins/bookPlayer/plugin.js", "src/plugins/bookPlayer/tableOfContents.js", + "src/plugins/chromecastPlayer/chromecastHelper.js", "src/plugins/photoPlayer/plugin.js", "src/plugins/youtubePlayer/plugin.js", "src/scripts/alphanumericshortcuts.js", "src/scripts/autoBackdrops.js", "src/scripts/browser.js", + "src/scripts/clientUtils.js", "src/scripts/datetime.js", "src/scripts/deleteHelper.js", "src/scripts/dfnshelper.js", diff --git a/src/components/appRouter.js b/src/components/appRouter.js index e6bd86336b..f986e71357 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -1,68 +1,298 @@ -define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdrop', 'browser', 'page', 'appSettings', 'apphost', 'connectionManager'], function (loading, globalize, events, viewManager, skinManager, backdrop, browser, page, appSettings, appHost, connectionManager) { - 'use strict'; +import appHost from 'apphost'; +import appSettings from 'appSettings'; +import backdrop from 'backdrop'; +import browser from 'browser'; +import connectionManager from 'connectionManager'; +import events from 'events'; +import globalize from 'globalize'; +import itemHelper from 'itemHelper'; +import loading from 'loading'; +import page from 'page'; +import viewManager from 'viewManager'; - appHost = appHost.default || appHost; - viewManager = viewManager.default || viewManager; - browser = browser.default || browser; - loading = loading.default || loading; +class AppRouter { + allRoutes = []; + backdropContainer; + backgroundContainer; + currentRouteInfo; + currentViewLoadRequest; + firstConnectionResult; + forcedLogoutMsg; + handleAnchorClick = page.clickHandler; + isDummyBackToHome; + msgTimeout; + popstateOccurred = false; + resolveOnNextShow; + /** + * Pages of "no return" (when "Go back" should behave differently, probably quitting the application). + */ + startPages = ['home', 'login', 'selectserver']; - var appRouter = { - showLocalLogin: function (serverId, manualLogin) { - var pageName = manualLogin ? 'manuallogin' : 'login'; - show('/startup/' + pageName + '.html?serverid=' + serverId); - }, - showSelectServer: function () { - show('/startup/selectserver.html'); - }, - showWelcome: function () { - show('/startup/welcome.html'); - }, - showSettings: function () { - show('/settings/settings.html'); - }, - showNowPlaying: function () { - show('queue'); + constructor() { + window.addEventListener('popstate', () => { + this.popstateOccurred = true; + }); + + document.addEventListener('viewshow', () => { + const resolve = this.resolveOnNextShow; + if (resolve) { + this.resolveOnNextShow = null; + resolve(); + } + }); + + this.baseRoute = window.location.href.split('?')[0].replace(this.getRequestFile(), ''); + // support hashbang + this.baseRoute = this.baseRoute.split('#')[0]; + if (this.baseRoute.endsWith('/') && !this.baseRoute.endsWith('://')) { + this.baseRoute = this.baseRoute.substring(0, this.baseRoute.length - 1); } - }; - function beginConnectionWizard() { + this.setBaseRoute(); + } + + /** + * @private + */ + setBaseRoute() { + let baseRoute = window.location.pathname.replace(this.getRequestFile(), ''); + if (baseRoute.lastIndexOf('/') === baseRoute.length - 1) { + baseRoute = baseRoute.substring(0, baseRoute.length - 1); + } + console.debug('setting page base to ' + baseRoute); + page.base(baseRoute); + } + + addRoute(path, newRoute) { + page(path, this.getHandler(newRoute)); + this.allRoutes.push(newRoute); + } + + showLocalLogin(serverId) { + Dashboard.navigate('login.html?serverid=' + serverId); + } + + showVideoOsd() { + return Dashboard.navigate('video'); + } + + showSelectServer() { + Dashboard.navigate(AppInfo.isNativeApp ? 'selectserver.html' : 'login.html'); + } + + showWelcome() { + Dashboard.navigate(AppInfo.isNativeApp ? 'selectserver.html' : 'login.html'); + } + + showSettings() { + Dashboard.navigate('mypreferencesmenu.html'); + } + + showNowPlaying() { + this.show('queue'); + } + + beginConnectionWizard() { backdrop.clearBackdrop(); loading.show(); connectionManager.connect({ enableAutoLogin: appSettings.enableAutoLogin() - }).then(function (result) { - handleConnectionResult(result); + }).then((result) => { + this.handleConnectionResult(result); }); } - function handleConnectionResult(result) { + param(name, url) { + name = name.replace(/[[]/, '\\[').replace(/[\]]/, '\\]'); + const regexS = '[\\?&]' + name + '=([^&#]*)'; + const regex = new RegExp(regexS, 'i'); + + const results = regex.exec(url || getWindowLocationSearch()); + if (results == null) { + return ''; + } else { + return decodeURIComponent(results[1].replace(/\+/g, ' ')); + } + } + + back() { + page.back(); + } + + show(path, options) { + if (path.indexOf('/') !== 0 && path.indexOf('://') === -1) { + path = '/' + path; + } + + path = path.replace(this.baseUrl(), ''); + + if (this.currentRouteInfo && this.currentRouteInfo.path === path) { + // can't use this with home right now due to the back menu + if (this.currentRouteInfo.route.type !== 'home') { + loading.hide(); + return Promise.resolve(); + } + } + + return new Promise((resolve) => { + this.resolveOnNextShow = resolve; + page.show(path, options); + }); + } + + showDirect(path) { + return new Promise(function(resolve) { + this.resolveOnNextShow = resolve; + page.show(this.baseUrl() + path); + }); + } + + start(options) { + loading.show(); + this.initApiClients(); + + events.on(appHost, 'beforeexit', this.onBeforeExit); + events.on(appHost, 'resume', this.onAppResume); + + connectionManager.connect({ + enableAutoLogin: appSettings.enableAutoLogin() + }).then((result) => { + this.firstConnectionResult = result; + options = options || {}; + page({ + click: options.click !== false, + hashbang: options.hashbang !== false + }); + }).catch().then(() => { + loading.hide(); + }); + } + + baseUrl() { + return this.baseRoute; + } + + canGoBack() { + const curr = this.current(); + if (!curr) { + return false; + } + + if (!document.querySelector('.dialogContainer') && this.startPages.indexOf(curr.type) !== -1) { + return false; + } + + return window.history.length > 1; + } + + current() { + return this.currentRouteInfo ? this.currentRouteInfo.route : null; + } + + invokeShortcut(id) { + if (id.indexOf('library-') === 0) { + id = id.replace('library-', ''); + id = id.split('_'); + + this.showItem(id[0], id[1]); + } else if (id.indexOf('item-') === 0) { + id = id.replace('item-', ''); + id = id.split('_'); + this.showItem(id[0], id[1]); + } else { + id = id.split('_'); + this.show(this.getRouteUrl(id[0], { + serverId: id[1] + })); + } + } + + showItem(item, serverId, options) { + // TODO: Refactor this so it only gets items, not strings. + if (typeof (item) === 'string') { + const apiClient = serverId ? connectionManager.getApiClient(serverId) : connectionManager.currentApiClient(); + apiClient.getItem(apiClient.getCurrentUserId(), item).then((itemObject) => { + this.showItem(itemObject, options); + }); + } else { + if (arguments.length === 2) { + options = arguments[1]; + } + + const url = this.getRouteUrl(item, options); + this.show(url, { + item: item + }); + } + } + + setTransparency(level) { + if (!this.backdropContainer) { + this.backdropContainer = document.querySelector('.backdropContainer'); + } + if (!this.backgroundContainer) { + this.backgroundContainer = document.querySelector('.backgroundContainer'); + } + + if (level === 'full' || level === 2) { + backdrop.clearBackdrop(true); + document.documentElement.classList.add('transparentDocument'); + this.backgroundContainer.classList.add('backgroundContainer-transparent'); + this.backdropContainer.classList.add('hide'); + } else if (level === 'backdrop' || level === 1) { + backdrop.externalBackdrop(true); + document.documentElement.classList.add('transparentDocument'); + this.backgroundContainer.classList.add('backgroundContainer-transparent'); + this.backdropContainer.classList.add('hide'); + } else { + backdrop.externalBackdrop(false); + document.documentElement.classList.remove('transparentDocument'); + this.backgroundContainer.classList.remove('backgroundContainer-transparent'); + this.backdropContainer.classList.remove('hide'); + } + } + + getRoutes() { + return this.allRoutes; + } + + pushState(state, title, url) { + state.navigate = false; + window.history.pushState(state, title, url); + } + + enableNativeHistory() { + return false; + } + + handleConnectionResult(result) { switch (result.State) { case 'SignedIn': loading.hide(); Emby.Page.goHome(); break; case 'ServerSignIn': - result.ApiClient.getPublicUsers().then(function (users) { + result.ApiClient.getPublicUsers().then((users) => { if (users.length) { - appRouter.showLocalLogin(result.Servers[0].Id); + this.showLocalLogin(result.Servers[0].Id); } else { - appRouter.showLocalLogin(result.Servers[0].Id, true); + this.showLocalLogin(result.Servers[0].Id, true); } }); break; case 'ServerSelection': - appRouter.showSelectServer(); + this.showSelectServer(); break; case 'ConnectSignIn': - appRouter.showWelcome(); + this.showWelcome(); break; case 'ServerUpdateNeeded': - require(['alert'], function (alert) { - alert.default({ + import('alert').then(({default: alert}) =>{ + alert({ text: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin'), html: globalize.translate('ServerUpdateNeeded', 'https://github.com/jellyfin/jellyfin') - }).then(function () { - appRouter.showSelectServer(); + }).then(() => { + this.showSelectServer(); }); }); break; @@ -71,8 +301,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro } } - function loadContentUrl(ctx, next, route, request) { - var url; + loadContentUrl(ctx, next, route, request) { + let url; if (route.contentPath && typeof (route.contentPath) === 'function') { url = route.contentPath(ctx.querystring); } else { @@ -85,55 +315,54 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro url = '/' + url; } - url = baseUrl() + url; + url = this.baseUrl() + url; } if (ctx.querystring && route.enableContentQueryString) { url += '?' + ctx.querystring; } - require(['text!' + url], function (html) { - loadContent(ctx, route, html, request); + import('text!' + url).then(({default: html}) => { + this.loadContent(ctx, route, html, request); }); } - function handleRoute(ctx, next, route) { - authenticate(ctx, route, function () { - initRoute(ctx, next, route); + handleRoute(ctx, next, route) { + this.authenticate(ctx, route, () => { + this.initRoute(ctx, next, route); }); } - function initRoute(ctx, next, route) { - var onInitComplete = function (controllerFactory) { - sendRouteToViewManager(ctx, next, route, controllerFactory); + initRoute(ctx, next, route) { + const onInitComplete = (controllerFactory) => { + this.sendRouteToViewManager(ctx, next, route, controllerFactory); }; if (route.controller) { - require(['controllers/' + route.controller], onInitComplete); + import('controllers/' + route.controller).then(onInitComplete); } else { onInitComplete(); } } - function cancelCurrentLoadRequest() { - var currentRequest = currentViewLoadRequest; + cancelCurrentLoadRequest() { + const currentRequest = this.currentViewLoadRequest; if (currentRequest) { currentRequest.cancel = true; } } - var currentViewLoadRequest; - function sendRouteToViewManager(ctx, next, route, controllerFactory) { - if (isDummyBackToHome && route.type === 'home') { - isDummyBackToHome = false; + sendRouteToViewManager(ctx, next, route, controllerFactory) { + if (this.isDummyBackToHome && route.type === 'home') { + this.isDummyBackToHome = false; return; } - cancelCurrentLoadRequest(); - var isBackNav = ctx.isBack; + this.cancelCurrentLoadRequest(); + const isBackNav = ctx.isBack; - var currentRequest = { - url: baseUrl() + ctx.path, + const currentRequest = { + url: this.baseUrl() + ctx.path, transition: route.transition, isBack: isBackNav, state: ctx.state, @@ -146,11 +375,11 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro }, autoFocus: route.autoFocus }; - currentViewLoadRequest = currentRequest; + this.currentViewLoadRequest = currentRequest; - var onNewViewNeeded = function () { + const onNewViewNeeded = () => { if (typeof route.path === 'string') { - loadContentUrl(ctx, next, route, currentRequest); + this.loadContentUrl(ctx, next, route, currentRequest); } else { next(); } @@ -160,64 +389,62 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro onNewViewNeeded(); return; } - viewManager.tryRestoreView(currentRequest, function () { - currentRouteInfo = { + viewManager.tryRestoreView(currentRequest, () => { + this.currentRouteInfo = { route: route, path: ctx.path }; - }).catch(function (result) { + }).catch((result) => { if (!result || !result.cancelled) { onNewViewNeeded(); } }); } - var msgTimeout; - var forcedLogoutMsg; - function onForcedLogoutMessageTimeout() { - var msg = forcedLogoutMsg; - forcedLogoutMsg = null; + onForcedLogoutMessageTimeout() { + const msg = this.forcedLogoutMsg; + this.forcedLogoutMsg = null; if (msg) { - require(['alert'], function (alert) { + import('alert').then((alert) => { alert(msg); }); } } - function showForcedLogoutMessage(msg) { - forcedLogoutMsg = msg; - if (msgTimeout) { - clearTimeout(msgTimeout); + showForcedLogoutMessage(msg) { + this.forcedLogoutMsg = msg; + if (this.msgTimeout) { + clearTimeout(this.msgTimeout); } - msgTimeout = setTimeout(onForcedLogoutMessageTimeout, 100); + this.msgTimeout = setTimeout(this.onForcedLogoutMessageTimeout, 100); } - function onRequestFail(e, data) { - var apiClient = this; + onRequestFail(e, data) { + const apiClient = this; if (data.status === 403) { if (data.errorCode === 'ParentalControl') { - var isCurrentAllowed = currentRouteInfo ? (currentRouteInfo.route.anonymous || currentRouteInfo.route.startup) : true; + const isCurrentAllowed = this.currentRouteInfo ? (this.currentRouteInfo.route.anonymous || this.currentRouteInfo.route.startup) : true; // Bounce to the login screen, but not if a password entry fails, obviously if (!isCurrentAllowed) { - showForcedLogoutMessage(globalize.translate('AccessRestrictedTryAgainLater')); - appRouter.showLocalLogin(apiClient.serverId()); + this.showForcedLogoutMessage(globalize.translate('AccessRestrictedTryAgainLater')); + this.showLocalLogin(apiClient.serverId()); } } } } - function onBeforeExit(e) { + onBeforeExit() { if (browser.web0s) { page.restorePreviousState(); } } - function normalizeImageOptions(options) { - var setQuality; + normalizeImageOptions(options) { + let setQuality; if (options.maxWidth || options.width || options.maxHeight || options.height) { setQuality = true; } @@ -227,10 +454,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro } } - function getMaxBandwidth() { + getMaxBandwidth() { /* eslint-disable compat/compat */ if (navigator.connection) { - var max = navigator.connection.downlinkMax; + let max = navigator.connection.downlinkMax; if (max && max > 0 && max < Number.POSITIVE_INFINITY) { max /= 8; max *= 1000000; @@ -243,90 +470,65 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro return null; } - function getMaxBandwidthIOS() { + getMaxBandwidthIOS() { return 800000; } - function onApiClientCreated(e, newApiClient) { - newApiClient.normalizeImageOptions = normalizeImageOptions; + onApiClientCreated(e, newApiClient) { + newApiClient.normalizeImageOptions = this.normalizeImageOptions; if (browser.iOS) { - newApiClient.getMaxBandwidth = getMaxBandwidthIOS; + newApiClient.getMaxBandwidth = this.getMaxBandwidthIOS; } else { - newApiClient.getMaxBandwidth = getMaxBandwidth; + newApiClient.getMaxBandwidth = this.getMaxBandwidth; } - events.off(newApiClient, 'requestfail', onRequestFail); - events.on(newApiClient, 'requestfail', onRequestFail); + events.off(newApiClient, 'requestfail', this.onRequestFail); + events.on(newApiClient, 'requestfail', this.onRequestFail); } - function initApiClient(apiClient) { - onApiClientCreated({}, apiClient); + initApiClient(apiClient, instance) { + instance.onApiClientCreated({}, apiClient); } - function initApiClients() { - connectionManager.getApiClients().forEach(initApiClient); + initApiClients() { + connectionManager.getApiClients().forEach((apiClient) => { + this.initApiClient(apiClient, this); + }); - events.on(connectionManager, 'apiclientcreated', onApiClientCreated); + events.on(connectionManager, 'apiclientcreated', this.onApiClientCreated); } - function onAppResume() { - var apiClient = connectionManager.currentApiClient(); + onAppResume() { + const apiClient = connectionManager.currentApiClient(); if (apiClient) { apiClient.ensureWebSocket(); } } - var firstConnectionResult; - function start(options) { - loading.show(); - - initApiClients(); - - events.on(appHost, 'beforeexit', onBeforeExit); - events.on(appHost, 'resume', onAppResume); - - connectionManager.connect({ - enableAutoLogin: appSettings.enableAutoLogin() - }).then(function (result) { - firstConnectionResult = result; - options = options || {}; - page({ - click: options.click !== false, - hashbang: options.hashbang !== false - }); - }).catch().then(function() { - loading.hide(); - }); - } - - function enableNativeHistory() { - return false; - } - - function authenticate(ctx, route, callback) { - var firstResult = firstConnectionResult; + authenticate(ctx, route, callback) { + const firstResult = this.firstConnectionResult; if (firstResult) { - firstConnectionResult = null; + this.firstConnectionResult = null; if (firstResult.State !== 'SignedIn' && !route.anonymous) { - handleConnectionResult(firstResult); + this.handleConnectionResult(firstResult); return; } } - var apiClient = connectionManager.currentApiClient(); - var pathname = ctx.pathname.toLowerCase(); + const apiClient = connectionManager.currentApiClient(); + const pathname = ctx.pathname.toLowerCase(); console.debug('appRouter - processing path request ' + pathname); - var isCurrentRouteStartup = currentRouteInfo ? currentRouteInfo.route.startup : true; - var shouldExitApp = ctx.isBack && route.isDefaultRoute && isCurrentRouteStartup; + const isCurrentRouteStartup = this.currentRouteInfo ? this.currentRouteInfo.route.startup : true; + const shouldExitApp = ctx.isBack && route.isDefaultRoute && isCurrentRouteStartup; if (!shouldExitApp && (!apiClient || !apiClient.isLoggedIn()) && !route.anonymous) { console.debug('appRouter - route does not allow anonymous access, redirecting to login'); - beginConnectionWizard(); + this.beginConnectionWizard(); return; } @@ -346,9 +548,9 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro Emby.Page.goHome(); return; } else if (route.roles) { - validateRoles(apiClient, route.roles).then(function () { + this.validateRoles(apiClient, route.roles).then(() => { callback(); - }, beginConnectionWizard); + }, this.beginConnectionWizard); return; } } @@ -357,15 +559,15 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro callback(); } - function validateRoles(apiClient, roles) { - return Promise.all(roles.split(',').map(function (role) { - return validateRole(apiClient, role); + validateRoles(apiClient, roles) { + return Promise.all(roles.split(',').map((role) => { + return this.validateRole(apiClient, role); })); } - function validateRole(apiClient, role) { + validateRole(apiClient, role) { if (role === 'admin') { - return apiClient.getCurrentUser().then(function (user) { + return apiClient.getCurrentUser().then((user) => { if (user.Policy.IsAdministrator) { return Promise.resolve(); } @@ -377,15 +579,13 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro return Promise.resolve(); } - var isDummyBackToHome; - - function loadContent(ctx, route, html, request) { + loadContent(ctx, route, html, request) { html = globalize.translateHtml(html, route.dictionary); request.view = html; viewManager.loadView(request); - currentRouteInfo = { + this.currentRouteInfo = { route: route, path: ctx.path }; @@ -393,10 +593,10 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro ctx.handled = true; } - function getRequestFile() { - var path = self.location.pathname || ''; + getRequestFile() { + let path = window.location.pathname || ''; - var index = path.lastIndexOf('/'); + const index = path.lastIndexOf('/'); if (index !== -1) { path = path.substring(index); } else { @@ -410,39 +610,19 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro return path; } - function endsWith(str, srch) { - return str.lastIndexOf(srch) === srch.length - 1; - } - - var baseRoute = self.location.href.split('?')[0].replace(getRequestFile(), ''); - // support hashbang - baseRoute = baseRoute.split('#')[0]; - if (endsWith(baseRoute, '/') && !endsWith(baseRoute, '://')) { - baseRoute = baseRoute.substring(0, baseRoute.length - 1); - } - - function baseUrl() { - return baseRoute; - } - - var popstateOccurred = false; - window.addEventListener('popstate', function () { - popstateOccurred = true; - }); - - function getHandler(route) { - return function (ctx, next) { - ctx.isBack = popstateOccurred; - handleRoute(ctx, next, route); - popstateOccurred = false; + getHandler(route) { + return (ctx, next) => { + ctx.isBack = this.popstateOccurred; + this.handleRoute(ctx, next, route); + this.popstateOccurred = false; }; } - function getWindowLocationSearch(win) { - var currentPath = currentRouteInfo ? (currentRouteInfo.path || '') : ''; + getWindowLocationSearch() { + const currentPath = this.currentRouteInfo ? (this.currentRouteInfo.path || '') : ''; - var index = currentPath.indexOf('?'); - var search = ''; + const index = currentPath.indexOf('?'); + let search = ''; if (index !== -1) { search = currentPath.substring(index); @@ -451,199 +631,218 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro return search || ''; } - function param(name, url) { - name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); - var regexS = '[\\?&]' + name + '=([^&#]*)'; - var regex = new RegExp(regexS, 'i'); - - var results = regex.exec(url || getWindowLocationSearch()); - if (results == null) { - return ''; - } else { - return decodeURIComponent(results[1].replace(/\+/g, ' ')); - } + showGuide() { + Dashboard.navigate('livetv.html?tab=1'); } - function back() { - page.back(); + goHome() { + Dashboard.navigate('home.html'); } - /** - * Pages of "no return" (when "Go back" should behave differently, probably quitting the application). - */ - var startPages = ['home', 'login', 'selectserver']; - - function canGoBack() { - var curr = current(); - if (!curr) { - return false; - } - - if (!document.querySelector('.dialogContainer') && startPages.indexOf(curr.type) !== -1) { - return false; - } - - return (page.len || 0) > 0; + showSearch() { + Dashboard.navigate('search.html'); } - function showDirect(path) { - return new Promise(function(resolve, reject) { - resolveOnNextShow = resolve; - page.show(baseUrl() + path); - }); + showLiveTV() { + Dashboard.navigate('livetv.html'); } - function show(path, options) { - if (path.indexOf('/') !== 0 && path.indexOf('://') === -1) { - path = '/' + path; + showRecordedTV() { + Dashboard.navigate('livetv.html?tab=3'); + } + + showFavorites() { + Dashboard.navigate('home.html?tab=1'); + } + + setTitle(title) { + LibraryMenu.setTitle(title); + } + + getRouteUrl(item, options) { + if (!item) { + throw new Error('item cannot be null'); } - path = path.replace(baseUrl(), ''); + if (item.url) { + return item.url; + } - if (currentRouteInfo && currentRouteInfo.path === path) { - // can't use this with home right now due to the back menu - if (currentRouteInfo.route.type !== 'home') { - loading.hide(); - return Promise.resolve(); + const context = options ? options.context : null; + const id = item.Id || item.ItemId; + + if (!options) { + options = {}; + } + + let url; + // TODO: options will never be false. Replace condition with lodash's isEmpty() + const itemType = item.Type || (options ? options.itemType : null); + const serverId = item.ServerId || options.serverId; + + if (item === 'settings') { + return 'mypreferencesmenu.html'; + } + + if (item === 'wizard') { + return 'wizardstart.html'; + } + + if (item === 'manageserver') { + return 'dashboard.html'; + } + + if (item === 'recordedtv') { + return 'livetv.html?tab=3&serverId=' + options.serverId; + } + + if (item === 'nextup') { + return 'list.html?type=nextup&serverId=' + options.serverId; + } + + if (item === 'list') { + let url = 'list.html?serverId=' + options.serverId + '&type=' + options.itemTypes; + + if (options.isFavorite) { + url += '&IsFavorite=true'; + } + + return url; + } + + if (item === 'livetv') { + if (options.section === 'programs') { + return 'livetv.html?tab=0&serverId=' + options.serverId; + } + if (options.section === 'guide') { + return 'livetv.html?tab=1&serverId=' + options.serverId; + } + + if (options.section === 'movies') { + return 'list.html?type=Programs&IsMovie=true&serverId=' + options.serverId; + } + + if (options.section === 'shows') { + return 'list.html?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId=' + options.serverId; + } + + if (options.section === 'sports') { + return 'list.html?type=Programs&IsSports=true&serverId=' + options.serverId; + } + + if (options.section === 'kids') { + return 'list.html?type=Programs&IsKids=true&serverId=' + options.serverId; + } + + if (options.section === 'news') { + return 'list.html?type=Programs&IsNews=true&serverId=' + options.serverId; + } + + if (options.section === 'onnow') { + return 'list.html?type=Programs&IsAiring=true&serverId=' + options.serverId; + } + + if (options.section === 'dvrschedule') { + return 'livetv.html?tab=4&serverId=' + options.serverId; + } + + if (options.section === 'seriesrecording') { + return 'livetv.html?tab=5&serverId=' + options.serverId; + } + + return 'livetv.html?serverId=' + options.serverId; + } + + if (itemType == 'SeriesTimer') { + return 'details?seriesTimerId=' + id + '&serverId=' + serverId; + } + + if (item.CollectionType == 'livetv') { + return 'livetv.html'; + } + + if (item.Type === 'Genre') { + url = 'list.html?genreId=' + item.Id + '&serverId=' + serverId; + + if (context === 'livetv') { + url += '&type=Programs'; + } + + if (options.parentId) { + url += '&parentId=' + options.parentId; + } + + return url; + } + + if (item.Type === 'MusicGenre') { + url = 'list.html?musicGenreId=' + item.Id + '&serverId=' + serverId; + + if (options.parentId) { + url += '&parentId=' + options.parentId; + } + + return url; + } + + if (item.Type === 'Studio') { + url = 'list.html?studioId=' + item.Id + '&serverId=' + serverId; + + if (options.parentId) { + url += '&parentId=' + options.parentId; + } + + return url; + } + + if (context !== 'folders' && !itemHelper.isLocalItem(item)) { + if (item.CollectionType == 'movies') { + url = 'movies.html?topParentId=' + item.Id; + + if (options && options.section === 'latest') { + url += '&tab=1'; + } + + return url; + } + + if (item.CollectionType == 'tvshows') { + url = 'tv.html?topParentId=' + item.Id; + + if (options && options.section === 'latest') { + url += '&tab=2'; + } + + return url; + } + + if (item.CollectionType == 'music') { + return 'music.html?topParentId=' + item.Id; } } - return new Promise(function (resolve, reject) { - resolveOnNextShow = resolve; - page.show(path, options); - }); - } + const itemTypes = ['Playlist', 'TvChannel', 'Program', 'BoxSet', 'MusicAlbum', 'MusicGenre', 'Person', 'Recording', 'MusicArtist']; - var resolveOnNextShow; - document.addEventListener('viewshow', function () { - var resolve = resolveOnNextShow; - if (resolve) { - resolveOnNextShow = null; - resolve(); + if (itemTypes.indexOf(itemType) >= 0) { + return 'details?id=' + id + '&serverId=' + serverId; } - }); - var currentRouteInfo; - function current() { - return currentRouteInfo ? currentRouteInfo.route : null; - } + const contextSuffix = context ? '&context=' + context : ''; - function showItem(item, serverId, options) { - // TODO: Refactor this so it only gets items, not strings. - if (typeof (item) === 'string') { - var apiClient = serverId ? connectionManager.getApiClient(serverId) : connectionManager.currentApiClient(); - apiClient.getItem(apiClient.getCurrentUserId(), item).then(function (itemObject) { - appRouter.showItem(itemObject, options); - }); - } else { - if (arguments.length === 2) { - options = arguments[1]; + if (itemType == 'Series' || itemType == 'Season' || itemType == 'Episode') { + return 'details?id=' + id + contextSuffix + '&serverId=' + serverId; + } + + if (item.IsFolder) { + if (id) { + return 'list.html?parentId=' + id + '&serverId=' + serverId; } - var url = appRouter.getRouteUrl(item, options); - appRouter.show(url, { - item: item - }); - } - } - - var allRoutes = []; - - function addRoute(path, newRoute) { - page(path, getHandler(newRoute)); - allRoutes.push(newRoute); - } - - function getRoutes() { - return allRoutes; - } - - var backdropContainer; - var backgroundContainer; - function setTransparency(level) { - if (!backdropContainer) { - backdropContainer = document.querySelector('.backdropContainer'); - } - if (!backgroundContainer) { - backgroundContainer = document.querySelector('.backgroundContainer'); + return '#'; } - if (level === 'full' || level === 2) { - backdrop.clearBackdrop(true); - document.documentElement.classList.add('transparentDocument'); - backgroundContainer.classList.add('backgroundContainer-transparent'); - backdropContainer.classList.add('hide'); - } else if (level === 'backdrop' || level === 1) { - backdrop.externalBackdrop(true); - document.documentElement.classList.add('transparentDocument'); - backgroundContainer.classList.add('backgroundContainer-transparent'); - backdropContainer.classList.add('hide'); - } else { - backdrop.externalBackdrop(false); - document.documentElement.classList.remove('transparentDocument'); - backgroundContainer.classList.remove('backgroundContainer-transparent'); - backdropContainer.classList.remove('hide'); - } + return 'details?id=' + id + '&serverId=' + serverId; } +} - function pushState(state, title, url) { - state.navigate = false; - history.pushState(state, title, url); - } - - function setBaseRoute() { - var baseRoute = self.location.pathname.replace(getRequestFile(), ''); - if (baseRoute.lastIndexOf('/') === baseRoute.length - 1) { - baseRoute = baseRoute.substring(0, baseRoute.length - 1); - } - - console.debug('setting page base to ' + baseRoute); - page.base(baseRoute); - } - - setBaseRoute(); - - function invokeShortcut(id) { - if (id.indexOf('library-') === 0) { - id = id.replace('library-', ''); - id = id.split('_'); - - appRouter.showItem(id[0], id[1]); - } else if (id.indexOf('item-') === 0) { - id = id.replace('item-', ''); - id = id.split('_'); - - appRouter.showItem(id[0], id[1]); - } else { - id = id.split('_'); - appRouter.show(appRouter.getRouteUrl(id[0], { - serverId: id[1] - })); - } - } - - appRouter.addRoute = addRoute; - appRouter.param = param; - appRouter.back = back; - appRouter.show = show; - appRouter.showDirect = showDirect; - appRouter.start = start; - appRouter.baseUrl = baseUrl; - appRouter.canGoBack = canGoBack; - appRouter.current = current; - appRouter.beginConnectionWizard = beginConnectionWizard; - appRouter.invokeShortcut = invokeShortcut; - appRouter.showItem = showItem; - appRouter.setTransparency = setTransparency; - appRouter.getRoutes = getRoutes; - appRouter.pushState = pushState; - appRouter.enableNativeHistory = enableNativeHistory; - appRouter.handleAnchorClick = page.clickHandler; - appRouter.TransparencyLevel = { - None: 0, - Backdrop: 1, - Full: 2 - }; - - return appRouter; -}); +export default new AppRouter(); diff --git a/src/components/apphost.js b/src/components/apphost.js index c3e9342827..33ca5a0b79 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -55,7 +55,7 @@ function replaceAll(originalString, strReplace, strWith) { function generateDeviceId() { const keys = []; - if (keys.push(navigator.userAgent), keys.push(new Date().getTime()), self.btoa) { + if (keys.push(navigator.userAgent), keys.push(new Date().getTime()), window.btoa) { const result = replaceAll(btoa(keys.join('|')), '=', '1'); return Promise.resolve(result); } @@ -404,9 +404,9 @@ document.addEventListener(visibilityChange, function () { } }, false); -if (self.addEventListener) { - self.addEventListener('focus', onAppVisible); - self.addEventListener('blur', onAppHidden); +if (window.addEventListener) { + window.addEventListener('focus', onAppVisible); + window.addEventListener('blur', onAppHidden); } export default appHost; diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index ef5ea6604c..74c376e85b 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -239,33 +239,13 @@ button::-moz-focus-inner { border: none; } -.cardImage-img { - max-height: 100%; - max-width: 100%; - - /* This is simply for lazy image purposes, to ensure the image is visible sooner when scrolling */ - min-height: 70%; - min-width: 70%; - margin: auto; -} - -.coveredImage-img { - width: 100%; - height: 100%; -} - -.coveredImage-noscale-img { - max-height: none; - max-width: none; -} - .coveredImage { background-size: cover; background-position: center center; } -.coveredImage-noScale { - background-size: cover; +.coveredImage.coveredImage-contain { + background-size: contain; } .cardFooter { @@ -372,6 +352,8 @@ button::-moz-focus-inner { .cardDefaultText { white-space: normal; text-align: center; + font-size: 2em; + font-weight: bold; } .cardImageContainer .cardImageIcon { diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index e644365906..63eaf2bdfe 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -986,6 +986,10 @@ import 'programStyles'; lines = []; } + if (overlayText && showTitle) { + lines = [item.Name]; + } + const addRightTextMargin = isOuterFooter && options.cardLayout && !options.centerText && options.cardFooterAside !== 'none' && layoutManager.mobile; html += getCardTextLines(lines, cssClass, !options.overlayText, isOuterFooter, options.cardLayout, addRightTextMargin, options.lines); @@ -1117,7 +1121,7 @@ import 'programStyles'; function importRefreshIndicator() { if (!refreshIndicatorLoaded) { refreshIndicatorLoaded = true; - /* eslint-disable-next-line no-unused-expressions */ + /* eslint-disable-next-line @babel/no-unused-expressions */ import('emby-itemrefreshindicator'); } } @@ -1212,8 +1216,8 @@ import 'programStyles'; if (coveredImage) { cardImageContainerClass += ' coveredImage'; - if (item.MediaType === 'Photo' || item.Type === 'PhotoAlbum' || item.Type === 'Folder' || item.ProgramInfo || item.Type === 'Program' || item.Type === 'Recording') { - cardImageContainerClass += ' coveredImage-noScale'; + if (item.Type === 'TvChannel') { + cardImageContainerClass += ' coveredImage-contain'; } } @@ -1449,7 +1453,7 @@ import 'programStyles'; const userData = item.UserData || {}; if (itemHelper.canMarkPlayed(item)) { - /* eslint-disable-next-line no-unused-expressions */ + /* eslint-disable-next-line @babel/no-unused-expressions */ import('emby-playstatebutton'); html += ''; } @@ -1457,7 +1461,7 @@ import 'programStyles'; if (itemHelper.canRate(item)) { const likes = userData.Likes == null ? '' : userData.Likes; - /* eslint-disable-next-line no-unused-expressions */ + /* eslint-disable-next-line @babel/no-unused-expressions */ import('emby-ratingbutton'); html += ''; } diff --git a/src/components/confirm/confirm.js b/src/components/confirm/confirm.js index 0670816a53..eca612ccb8 100644 --- a/src/components/confirm/confirm.js +++ b/src/components/confirm/confirm.js @@ -19,7 +19,7 @@ export default (() => { } const text = replaceAll(options.text || '', '
', '\n'); - const result = confirm(text); + const result = window.confirm(text); if (result) { return Promise.resolve(); diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index a6f664149c..e1a267fed2 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -85,9 +85,9 @@ import 'scrollStyles'; } if (!self.closedByBack && isHistoryEnabled(dlg)) { - const state = history.state || {}; + const state = window.history.state || {}; if (state.dialogId === hash) { - history.back(); + window.history.back(); } } @@ -213,7 +213,7 @@ import 'scrollStyles'; export function close(dlg) { if (isOpened(dlg)) { if (isHistoryEnabled(dlg)) { - history.back(); + window.history.back(); } else { closeDialog(dlg); } @@ -375,7 +375,7 @@ import 'scrollStyles'; dlg.setAttribute('data-lockscroll', 'true'); } - if (options.enableHistory !== false && appRouter.enableNativeHistory()) { + if (options.enableHistory !== false) { dlg.setAttribute('data-history', 'true'); } diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 5c44db3b15..4205e04a4f 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -125,7 +125,7 @@ import 'emby-button'; html += ``; html += ''; if (!readOnlyAttribute) { - html += ``; + html += ``; } html += ''; if (!readOnlyAttribute) { diff --git a/src/components/displaySettings/displaySettings.template.html b/src/components/displaySettings/displaySettings.template.html index e751ce56c4..1b9bf00376 100644 --- a/src/components/displaySettings/displaySettings.template.html +++ b/src/components/displaySettings/displaySettings.template.html @@ -170,7 +170,7 @@
${EnableThemeSongsHelp}
@@ -178,7 +178,7 @@
${EnableThemeVideosHelp}
diff --git a/src/components/guide/guide.css b/src/components/guide/guide.css index 3b776e6dde..4373f697ec 100644 --- a/src/components/guide/guide.css +++ b/src/components/guide/guide.css @@ -70,6 +70,10 @@ contain: strict; } +.programContainer.emby-scroller { + margin: 0; +} + .channelPrograms { height: 4.42em; contain: strict; diff --git a/src/components/homeScreenSettings/homeScreenSettings.template.html b/src/components/homeScreenSettings/homeScreenSettings.template.html index 19f79ea5da..615598a1a6 100644 --- a/src/components/homeScreenSettings/homeScreenSettings.template.html +++ b/src/components/homeScreenSettings/homeScreenSettings.template.html @@ -1,6 +1,6 @@
-

${HeaderHome}

+

${Home}

- ${LabelDisplayMissingEpisodesWithinSeasons} + ${DisplayMissingEpisodesWithinSeasons}
${ImportMissingEpisodesHelp}
diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index 8ea165743b..1d78d490a2 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -9,7 +9,6 @@ import 'programStyles'; import 'emby-button'; /* eslint-disable indent */ - function getTimerIndicator(item) { let status; diff --git a/src/components/packageManager.js b/src/components/packageManager.js index 936f5a4029..2a15a14f34 100644 --- a/src/components/packageManager.js +++ b/src/components/packageManager.js @@ -1,134 +1,140 @@ -define(['appSettings', 'pluginManager'], function (appSettings, pluginManager) { - 'use strict'; +import appSettings from 'appSettings'; +import pluginManager from 'pluginManager'; +/* eslint-disable indent */ - var settingsKey = 'installedpackages1'; + class PackageManager { + #packagesList = []; + #settingsKey = 'installedpackages1'; - function addPackage(packageManager, pkg) { - packageManager.packagesList = packageManager.packagesList.filter(function (p) { - return p.name !== pkg.name; - }); + init() { + console.groupCollapsed('loading packages'); + var manifestUrls = JSON.parse(appSettings.get(this.#settingsKey) || '[]'); - packageManager.packagesList.push(pkg); - } + return Promise.all(manifestUrls.map((url) => { + return this.loadPackage(url); + })) + .then(() => { + console.debug('finished loading packages'); + return Promise.resolve(); + }) + .catch(() => { + return Promise.resolve(); + }).finally(() => { + console.groupEnd('loading packages'); + }); + } - function removeUrl(url) { - var manifestUrls = JSON.parse(appSettings.get(settingsKey) || '[]'); + get packages() { + return this.#packagesList.slice(0); + } - manifestUrls = manifestUrls.filter(function (i) { - return i !== url; - }); + install(url) { + return this.loadPackage(url, true).then((pkg) => { + var manifestUrls = JSON.parse(appSettings.get(this.#settingsKey) || '[]'); - appSettings.set(settingsKey, JSON.stringify(manifestUrls)); - } - - function loadPackage(packageManager, url, throwError) { - return new Promise(function (resolve, reject) { - var xhr = new XMLHttpRequest(); - var originalUrl = url; - url += url.indexOf('?') === -1 ? '?' : '&'; - url += 't=' + new Date().getTime(); - - xhr.open('GET', url, true); - - var onError = function () { - if (throwError === true) { - reject(); - } else { - removeUrl(originalUrl); - resolve(); + if (!manifestUrls.includes(url)) { + manifestUrls.push(url); + appSettings.set(this.#settingsKey, JSON.stringify(manifestUrls)); } - }; - xhr.onload = function (e) { - if (this.status < 400) { - var pkg = JSON.parse(this.response); - pkg.url = originalUrl; + return pkg; + }); + } - addPackage(packageManager, pkg); + uninstall(name) { + var pkg = this.#packagesList.filter((p) => { + return p.name === name; + })[0]; - var plugins = pkg.plugins || []; - if (pkg.plugin) { - plugins.push(pkg.plugin); - } - var promises = plugins.map(function (pluginUrl) { - return pluginManager.loadPlugin(packageManager.mapPath(pkg, pluginUrl)); - }); - Promise.all(promises).then(resolve, resolve); - } else { - onError(); - } - }; + if (pkg) { + this.#packagesList = this.#packagesList.filter((p) => { + return p.name !== name; + }); - xhr.onerror = onError; - - xhr.send(); - }); - } - - function PackageManager() { - this.packagesList = []; - } - - PackageManager.prototype.init = function () { - var manifestUrls = JSON.parse(appSettings.get(settingsKey) || '[]'); - - var instance = this; - return Promise.all(manifestUrls.map(function (u) { - return loadPackage(instance, u); - })).then(function () { - return Promise.resolve(); - }, function () { - return Promise.resolve(); - }); - }; - - PackageManager.prototype.packages = function () { - return this.packagesList.slice(0); - }; - - PackageManager.prototype.install = function (url) { - return loadPackage(this, url, true).then(function (pkg) { - var manifestUrls = JSON.parse(appSettings.get(settingsKey) || '[]'); - - if (manifestUrls.indexOf(url) === -1) { - manifestUrls.push(url); - appSettings.set(settingsKey, JSON.stringify(manifestUrls)); + this.removeUrl(pkg.url); } - return pkg; - }); - }; + return Promise.resolve(); + } - PackageManager.prototype.uninstall = function (name) { - var pkg = this.packagesList.filter(function (p) { - return p.name === name; - })[0]; + mapPath(pkg, pluginUrl) { + var urlLower = pluginUrl.toLowerCase(); + if (urlLower.startsWith('http:') || urlLower.startsWith('https:') || urlLower.startsWith('file:')) { + return pluginUrl; + } - if (pkg) { - this.packagesList = this.packagesList.filter(function (p) { - return p.name !== name; + var packageUrl = pkg.url; + packageUrl = packageUrl.substring(0, packageUrl.lastIndexOf('/')); + + packageUrl += '/'; + packageUrl += pluginUrl; + + return packageUrl; + } + + addPackage(pkg) { + this.#packagesList = this.#packagesList.filter((p) => { + return p.name !== pkg.name; }); - removeUrl(pkg.url); + this.#packagesList.push(pkg); } - return Promise.resolve(); - }; + removeUrl(url) { + var manifestUrls = JSON.parse(appSettings.get(this.#settingsKey) || '[]'); - PackageManager.prototype.mapPath = function (pkg, pluginUrl) { - var urlLower = pluginUrl.toLowerCase(); - if (urlLower.indexOf('http:') === 0 || urlLower.indexOf('https:') === 0 || urlLower.indexOf('file:') === 0) { - return pluginUrl; + manifestUrls = manifestUrls.filter((i) => { + return i !== url; + }); + + appSettings.set(this.#settingsKey, JSON.stringify(manifestUrls)); } - var packageUrl = pkg.url; - packageUrl = packageUrl.substring(0, packageUrl.lastIndexOf('/')); + loadPackage(url, throwError = false) { + return new Promise((resolve, reject) => { + var xhr = new XMLHttpRequest(); + var originalUrl = url; + url += url.indexOf('?') === -1 ? '?' : '&'; + url += 't=' + new Date().getTime(); - packageUrl += '/'; - packageUrl += pluginUrl; + xhr.open('GET', url, true); - return packageUrl; - }; + var onError = () => { + if (throwError === true) { + reject(); + } else { + this.removeUrl(originalUrl); + resolve(); + } + }; - return new PackageManager(); -}); + xhr.onload = () => { + if (this.status < 400) { + var pkg = JSON.parse(this.response); + pkg.url = originalUrl; + + this.addPackage(pkg); + + var plugins = pkg.plugins || []; + if (pkg.plugin) { + plugins.push(pkg.plugin); + } + var promises = plugins.map((pluginUrl) => { + return pluginManager.loadPlugin(this.mapPath(pkg, pluginUrl)); + }); + Promise.all(promises).then(resolve, resolve); + } else { + onError(); + } + }; + + xhr.onerror = onError; + + xhr.send(); + }); + } + } + +/* eslint-enable indent */ + +export default new PackageManager(); diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 8502b551af..3b4099d540 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1112,6 +1112,52 @@ class PlaybackManager { } }; + self.increasePlaybackRate = function (player) { + player = player || self._currentPlayer; + if (player) { + let current = self.getPlaybackRate(player); + let supported = self.getSupportedPlaybackRates(player); + + let index = -1; + for (let i = 0, length = supported.length; i < length; i++) { + if (supported[i].id === current) { + index = i; + break; + } + } + + index = Math.min(index + 1, supported.length - 1); + self.setPlaybackRate(supported[index].id, player); + } + }; + + self.decreasePlaybackRate = function (player) { + player = player || self._currentPlayer; + if (player) { + let current = self.getPlaybackRate(player); + let supported = self.getSupportedPlaybackRates(player); + + let index = -1; + for (let i = 0, length = supported.length; i < length; i++) { + if (supported[i].id === current) { + index = i; + break; + } + } + + index = Math.max(index - 1, 0); + self.setPlaybackRate(supported[index].id, player); + } + }; + + self.getSupportedPlaybackRates = function (player) { + player = player || self._currentPlayer; + if (player && player.getSupportedPlaybackRates) { + return player.getSupportedPlaybackRates(); + } + return []; + }; + let brightnessOsdLoaded; self.setBrightness = function (val, player) { player = player || self._currentPlayer; @@ -1416,8 +1462,8 @@ class PlaybackManager { self.toggleFullscreen = function (player) { player = player || self._currentPlayer; - if (!player.isLocalPlayer || player.toggleFulscreen) { - return player.toggleFulscreen(); + if (!player.isLocalPlayer || player.toggleFullscreen) { + return player.toggleFullscreen(); } if (screenfull.isEnabled) { @@ -3697,6 +3743,9 @@ class PlaybackManager { case 'SetAspectRatio': this.setAspectRatio(cmd.Arguments.AspectRatio, player); break; + case 'PlaybackRate': + this.setPlaybackRate(cmd.Arguments.PlaybackRate, player); + break; case 'SetBrightness': this.setBrightness(cmd.Arguments.Brightness, player); break; diff --git a/src/components/playback/playbackorientation.js b/src/components/playback/playbackorientation.js index 1aa939da04..b73377bade 100644 --- a/src/components/playback/playbackorientation.js +++ b/src/components/playback/playbackorientation.js @@ -18,7 +18,7 @@ events.on(playbackManager, 'playbackstart', function (e, player, state) { if (isLocalVideo && layoutManager.mobile) { /* eslint-disable-next-line compat/compat */ - var lockOrientation = screen.lockOrientation || screen.mozLockOrientation || screen.msLockOrientation || (screen.orientation && screen.orientation.lock); + var lockOrientation = window.screen.lockOrientation || window.screen.mozLockOrientation || window.screen.msLockOrientation || (window.screen.orientation && window.screen.orientation.lock); if (lockOrientation) { try { @@ -39,7 +39,7 @@ events.on(playbackManager, 'playbackstart', function (e, player, state) { events.on(playbackManager, 'playbackstop', function (e, playbackStopInfo) { if (orientationLocked && !playbackStopInfo.nextMediaType) { /* eslint-disable-next-line compat/compat */ - var unlockOrientation = screen.unlockOrientation || screen.mozUnlockOrientation || screen.msUnlockOrientation || (screen.orientation && screen.orientation.unlock); + var unlockOrientation = window.screen.unlockOrientation || window.screen.mozUnlockOrientation || window.screen.msUnlockOrientation || (window.screen.orientation && window.screen.orientation.unlock); if (unlockOrientation) { try { diff --git a/src/components/playback/playersettingsmenu.js b/src/components/playback/playersettingsmenu.js index 71dd7a86ff..cd227afcb4 100644 --- a/src/components/playback/playersettingsmenu.js +++ b/src/components/playback/playersettingsmenu.js @@ -149,6 +149,28 @@ function showAspectRatioMenu(player, btn) { }); } +function showPlaybackRateMenu(player, btn) { + // each has a name and id + const currentId = playbackManager.getPlaybackRate(player); + const menuItems = playbackManager.getSupportedPlaybackRates(player).map(i => ({ + id: i.id, + name: i.name, + selected: i.id === currentId + })); + + return actionsheet.show({ + items: menuItems, + positionTo: btn + }).then(function (id) { + if (id) { + playbackManager.setPlaybackRate(id, player); + return Promise.resolve(); + } + + return Promise.reject(); + }); +} + function showWithUser(options, player, user) { var supportedCommands = playbackManager.getSupportedCommands(player); @@ -166,6 +188,17 @@ function showWithUser(options, player, user) { }); } + if (supportedCommands.indexOf('PlaybackRate') !== -1) { + const currentPlaybackRateId = playbackManager.getPlaybackRate(player); + const currentPlaybackRate = playbackManager.getSupportedPlaybackRates(player).filter(i => i.id === currentPlaybackRateId)[0]; + + menuItems.push({ + name: globalize.translate('PlaybackRate'), + id: 'playbackrate', + asideText: currentPlaybackRate ? currentPlaybackRate.name : null + }); + } + if (user && user.Policy.EnableVideoPlaybackTranscoding) { var secondaryQualityText = getQualitySecondaryText(player); @@ -230,6 +263,8 @@ function handleSelectedOption(id, options, player) { return showQualityMenu(player, options.positionTo); case 'aspectratio': return showAspectRatioMenu(player, options.positionTo); + case 'playbackrate': + return showPlaybackRateMenu(player, options.positionTo); case 'repeatmode': return showRepeatModeMenu(player, options.positionTo); case 'stats': diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index df4a0c42b7..55a5c230ff 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -1,37 +1,38 @@ -define(['events', 'globalize'], function (events, globalize) { - 'use strict'; +import events from 'events'; +import globalize from 'globalize'; +/* eslint-disable indent */ // TODO: replace with each plugin version var cacheParam = new Date().getTime(); - function loadStrings(plugin) { - var strings = plugin.getTranslations ? plugin.getTranslations() : []; - return globalize.loadStrings({ - name: plugin.id || plugin.packageName, - strings: strings - }); - } + class PluginManager { + pluginsList = []; - function definePluginRoute(pluginManager, route, plugin) { - route.contentPath = pluginManager.mapPath(plugin, route.path); - route.path = pluginManager.mapRoute(plugin, route); + get plugins() { + return this.pluginsList; + } - Emby.App.defineRoute(route, plugin.id); - } + #loadStrings(plugin) { + var strings = plugin.getTranslations ? plugin.getTranslations() : []; + return globalize.loadStrings({ + name: plugin.id || plugin.packageName, + strings: strings + }); + } - function PluginManager() { - this.pluginsList = []; - } + #definePluginRoute(route, plugin) { + route.contentPath = this.mapPath(plugin, route.path); + route.path = this.#mapRoute(plugin, route); - PluginManager.prototype.loadPlugin = function(pluginSpec) { - var instance = this; + Emby.App.defineRoute(route, plugin.id); + } - function registerPlugin(plugin) { - instance.register(plugin); + #registerPlugin(plugin) { + this.#register(plugin); if (plugin.getRoutes) { - plugin.getRoutes().forEach(function (route) { - definePluginRoute(instance, route, plugin); + plugin.getRoutes().forEach((route) => { + this.#definePluginRoute(route, plugin); }); } @@ -40,7 +41,7 @@ define(['events', 'globalize'], function (events, globalize) { return Promise.resolve(plugin); } else { return new Promise((resolve, reject) => { - loadStrings(plugin) + this.#loadStrings(plugin) .then(function () { resolve(plugin); }) @@ -49,103 +50,102 @@ define(['events', 'globalize'], function (events, globalize) { } } - if (typeof pluginSpec === 'string') { - console.debug('Loading plugin (via deprecated requirejs method): ' + pluginSpec); + loadPlugin(pluginSpec) { + if (typeof pluginSpec === 'string') { + console.debug('Loading plugin (via deprecated requirejs method): ' + pluginSpec); - return new Promise(function (resolve, reject) { - require([pluginSpec], (pluginFactory) => { - var plugin = pluginFactory.default ? new pluginFactory.default() : new pluginFactory(); + return new Promise((resolve, reject) => { + require([pluginSpec], (pluginFactory) => { + var plugin = pluginFactory.default ? new pluginFactory.default() : new pluginFactory(); - // See if it's already installed - var existing = instance.pluginsList.filter(function (p) { - return p.id === plugin.id; - })[0]; + // See if it's already installed + var existing = this.pluginsList.filter(function (p) { + return p.id === plugin.id; + })[0]; - if (existing) { - resolve(pluginSpec); - } + if (existing) { + resolve(pluginSpec); + } - plugin.installUrl = pluginSpec; + plugin.installUrl = pluginSpec; - var separatorIndex = Math.max(pluginSpec.lastIndexOf('/'), pluginSpec.lastIndexOf('\\')); - plugin.baseUrl = pluginSpec.substring(0, separatorIndex); + var separatorIndex = Math.max(pluginSpec.lastIndexOf('/'), pluginSpec.lastIndexOf('\\')); + plugin.baseUrl = pluginSpec.substring(0, separatorIndex); - var paths = {}; - paths[plugin.id] = plugin.baseUrl; + var paths = {}; + paths[plugin.id] = plugin.baseUrl; - requirejs.config({ - waitSeconds: 0, - paths: paths + requirejs.config({ + waitSeconds: 0, + paths: paths + }); + + this.#registerPlugin(plugin).then(resolve).catch(reject); }); - - registerPlugin(plugin).then(resolve).catch(reject); }); + } else if (pluginSpec.then) { + return pluginSpec.then(pluginBuilder => { + return pluginBuilder(); + }).then((plugin) => { + console.debug(`Plugin loaded: ${plugin.id}`); + return this.#registerPlugin(plugin); + }); + } else { + const err = new TypeError('Plugins have to be a Promise that resolves to a plugin builder function or a RequireJS url (deprecated)'); + console.error(err); + return Promise.reject(err); + } + } + + // In lieu of automatic discovery, plugins will register dynamic objects + // Each object will have the following properties: + // name + // type (skin, screensaver, etc) + #register(obj) { + this.pluginsList.push(obj); + events.trigger(this, 'registered', [obj]); + } + + ofType(type) { + return this.pluginsList.filter((o) => { + return o.type === type; }); - } else if (pluginSpec.then) { - return pluginSpec.then(pluginBuilder => { - return pluginBuilder(); - }).then(plugin => { - console.debug(`Plugin loaded: ${plugin.id}`); - return registerPlugin(plugin); - }); - } else { - const err = new Error('Plugins have to be a Promise that resolves to a plugin builder function or a requirejs urls (deprecated)'); - console.error(err); - return Promise.reject(err); - } - }; - - // In lieu of automatic discovery, plugins will register dynamic objects - // Each object will have the following properties: - // name - // type (skin, screensaver, etc) - PluginManager.prototype.register = function (obj) { - this.pluginsList.push(obj); - events.trigger(this, 'registered', [obj]); - }; - - PluginManager.prototype.ofType = function (type) { - return this.pluginsList.filter(function (o) { - return o.type === type; - }); - }; - - PluginManager.prototype.plugins = function () { - return this.pluginsList; - }; - - PluginManager.prototype.mapRoute = function (plugin, route) { - if (typeof plugin === 'string') { - plugin = this.pluginsList.filter(function (p) { - return (p.id || p.packageName) === plugin; - })[0]; } - route = route.path || route; + #mapRoute(plugin, route) { + if (typeof plugin === 'string') { + plugin = this.pluginsList.filter((p) => { + return (p.id || p.packageName) === plugin; + })[0]; + } - if (route.toLowerCase().indexOf('http') === 0) { - return route; + route = route.path || route; + + if (route.toLowerCase().startsWith('http')) { + return route; + } + + return '/plugins/' + plugin.id + '/' + route; } - return '/plugins/' + plugin.id + '/' + route; - }; + mapPath(plugin, path, addCacheParam) { + if (typeof plugin === 'string') { + plugin = this.pluginsList.filter((p) => { + return (p.id || p.packageName) === plugin; + })[0]; + } - PluginManager.prototype.mapPath = function (plugin, path, addCacheParam) { - if (typeof plugin === 'string') { - plugin = this.pluginsList.filter(function (p) { - return (p.id || p.packageName) === plugin; - })[0]; + var url = plugin.baseUrl + '/' + path; + + if (addCacheParam) { + url += url.includes('?') ? '&' : '?'; + url += 'v=' + cacheParam; + } + + return url; } + } - var url = plugin.baseUrl + '/' + path; +/* eslint-enable indent */ - if (addCacheParam) { - url += url.indexOf('?') === -1 ? '?' : '&'; - url += 'v=' + cacheParam; - } - - return url; - }; - - return new PluginManager(); -}); +export default new PluginManager(); diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index f4ae64977d..9cb4e41d2e 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -118,7 +118,7 @@ function reload(context, programId, serverId, refreshRecordingStateOnly) { function executeCloseAction(action, programId, serverId) { if (action === 'play') { - import('playbackManager').then(({default: playbackManager}) => { + import('playbackManager').then(({ default: playbackManager }) => { const apiClient = connectionManager.getApiClient(serverId); apiClient.getLiveTvProgram(programId, apiClient.getCurrentUserId()).then(function (item) { @@ -138,7 +138,7 @@ function showEditor(itemId, serverId) { loading.show(); - import('text!./recordingcreator.template.html').then(({default: template}) => { + import('text!./recordingcreator.template.html').then(({ default: template }) => { const dialogOptions = { removeOnClose: true, scrollY: false diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index e9aca85347..096ea3b62c 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -1,151 +1,155 @@ -define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'scrollStyles', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader) { - 'use strict'; +import dialogHelper from 'dialogHelper'; +import globalize from 'globalize'; +import layoutManager from 'layoutManager'; +import connectionManager from 'connectionManager'; +import loading from 'loading'; +import scrollHelper from 'scrollHelper'; +import 'scrollStyles'; +import 'emby-button'; +import 'emby-collapse'; +import 'emby-input'; +import 'paper-icon-button-light'; +import 'css!./../formdialog'; +import 'css!./recordingcreator'; +import 'material-icons'; +import 'flexStyles'; - scrollHelper = scrollHelper.default || scrollHelper; - loading = loading.default || loading; - layoutManager = layoutManager.default || layoutManager; +let currentDialog; +let recordingDeleted = false; +let currentItemId; +let currentServerId; +let currentResolve; - var currentDialog; - var recordingDeleted = false; - var currentItemId; - var currentServerId; - var currentResolve; +function deleteTimer(apiClient, timerId) { + return import('recordingHelper').then(({ default: recordingHelper }) => { + recordingHelper.cancelTimerWithConfirmation(timerId, apiClient.serverId()); + }); +} - function deleteTimer(apiClient, timerId) { - return new Promise(function (resolve, reject) { - require(['recordingHelper'], function (recordingHelper) { - recordingHelper = recordingHelper.default || recordingHelper; +function renderTimer(context, item, apiClient) { + context.querySelector('#txtPrePaddingMinutes').value = item.PrePaddingSeconds / 60; + context.querySelector('#txtPostPaddingMinutes').value = item.PostPaddingSeconds / 60; - recordingHelper.cancelTimerWithConfirmation(timerId, apiClient.serverId()).then(resolve, reject); - }); + loading.hide(); +} + +function closeDialog(isDeleted) { + recordingDeleted = isDeleted; + dialogHelper.close(currentDialog); +} + +function onSubmit(e) { + const form = this; + + const apiClient = connectionManager.getApiClient(currentServerId); + + apiClient.getLiveTvTimer(currentItemId).then(function (item) { + item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60; + item.PostPaddingSeconds = form.querySelector('#txtPostPaddingMinutes').value * 60; + apiClient.updateLiveTvTimer(item).then(currentResolve); + }); + + e.preventDefault(); + + // Disable default form submission + return false; +} + +function init(context) { + context.querySelector('.btnCancel').addEventListener('click', function () { + closeDialog(false); + }); + + context.querySelector('.btnCancelRecording').addEventListener('click', function () { + const apiClient = connectionManager.getApiClient(currentServerId); + + deleteTimer(apiClient, currentItemId).then(function () { + closeDialog(true); }); - } + }); - function renderTimer(context, item, apiClient) { - context.querySelector('#txtPrePaddingMinutes').value = item.PrePaddingSeconds / 60; - context.querySelector('#txtPostPaddingMinutes').value = item.PostPaddingSeconds / 60; + context.querySelector('form').addEventListener('submit', onSubmit); +} +function reload(context, id) { + loading.show(); + currentItemId = id; + + const apiClient = connectionManager.getApiClient(currentServerId); + apiClient.getLiveTvTimer(id).then(function (result) { + renderTimer(context, result, apiClient); loading.hide(); - } + }); +} - function closeDialog(isDeleted) { - recordingDeleted = isDeleted; - - dialogHelper.close(currentDialog); - } - - function onSubmit(e) { - var form = this; - - var apiClient = connectionManager.getApiClient(currentServerId); - - apiClient.getLiveTvTimer(currentItemId).then(function (item) { - item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60; - item.PostPaddingSeconds = form.querySelector('#txtPostPaddingMinutes').value * 60; - apiClient.updateLiveTvTimer(item).then(currentResolve); - }); - - e.preventDefault(); - - // Disable default form submission - return false; - } - - function init(context) { - context.querySelector('.btnCancel').addEventListener('click', function () { - closeDialog(false); - }); - - context.querySelector('.btnCancelRecording').addEventListener('click', function () { - var apiClient = connectionManager.getApiClient(currentServerId); - deleteTimer(apiClient, currentItemId).then(function () { - closeDialog(true); - }); - }); - - context.querySelector('form').addEventListener('submit', onSubmit); - } - - function reload(context, id) { +function showEditor(itemId, serverId, options) { + return new Promise(function (resolve, reject) { + recordingDeleted = false; + currentServerId = serverId; loading.show(); - currentItemId = id; + options = options || {}; + currentResolve = resolve; - var apiClient = connectionManager.getApiClient(currentServerId); - apiClient.getLiveTvTimer(id).then(function (result) { - renderTimer(context, result, apiClient); - loading.hide(); - }); - } + import('text!./recordingeditor.template.html').then(({default: template}) => { + const dialogOptions = { + removeOnClose: true, + scrollY: false + }; - function showEditor(itemId, serverId, options) { - return new Promise(function (resolve, reject) { - recordingDeleted = false; - currentServerId = serverId; - loading.show(); - options = options || {}; - currentResolve = resolve; + if (layoutManager.tv) { + dialogOptions.size = 'fullscreen'; + } - require(['text!./recordingeditor.template.html'], function (template) { - var dialogOptions = { - removeOnClose: true, - scrollY: false - }; + const dlg = dialogHelper.createDialog(dialogOptions); - if (layoutManager.tv) { - dialogOptions.size = 'fullscreen'; + dlg.classList.add('formDialog'); + dlg.classList.add('recordingDialog'); + + if (!layoutManager.tv) { + dlg.style['min-width'] = '20%'; + dlg.classList.add('dialog-fullscreen-lowres'); + } + + let html = ''; + + html += globalize.translateHtml(template, 'core'); + + dlg.innerHTML = html; + + if (options.enableCancel === false) { + dlg.querySelector('.formDialogFooter').classList.add('hide'); + } + + currentDialog = dlg; + + dlg.addEventListener('closing', function () { + if (!recordingDeleted) { + dlg.querySelector('.btnSubmit').click(); } - - var dlg = dialogHelper.createDialog(dialogOptions); - - dlg.classList.add('formDialog'); - dlg.classList.add('recordingDialog'); - - if (!layoutManager.tv) { - dlg.style['min-width'] = '20%'; - dlg.classList.add('dialog-fullscreen-lowres'); - } - - var html = ''; - - html += globalize.translateHtml(template, 'core'); - - dlg.innerHTML = html; - - if (options.enableCancel === false) { - dlg.querySelector('.formDialogFooter').classList.add('hide'); - } - - currentDialog = dlg; - - dlg.addEventListener('closing', function () { - if (!recordingDeleted) { - dlg.querySelector('.btnSubmit').click(); - } - }); - - dlg.addEventListener('close', function () { - if (recordingDeleted) { - resolve({ - updated: true, - deleted: true - }); - } - }); - - if (layoutManager.tv) { - scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false); - } - - init(dlg); - - reload(dlg, itemId); - - dialogHelper.open(dlg); }); - }); - } - return { - show: showEditor - }; -}); + dlg.addEventListener('close', function () { + if (recordingDeleted) { + resolve({ + updated: true, + deleted: true + }); + } + }); + + if (layoutManager.tv) { + scrollHelper.centerFocus.on(dlg.querySelector('.formDialogContent'), false); + } + + init(dlg); + + reload(dlg, itemId); + + dialogHelper.open(dlg); + }); + }); +} + +export default { + show: showEditor +}; diff --git a/src/components/recordingcreator/recordingfields.js b/src/components/recordingcreator/recordingfields.js index c93200d053..d9d7c0098c 100644 --- a/src/components/recordingcreator/recordingfields.js +++ b/src/components/recordingcreator/recordingfields.js @@ -1,223 +1,126 @@ -define(['globalize', 'connectionManager', 'serverNotifications', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'paper-icon-button-light', 'emby-button', 'css!./recordingfields', 'flexStyles'], function (globalize, connectionManager, serverNotifications, require, loading, appHost, dom, recordingHelper, events) { - 'use strict'; +import globalize from 'globalize'; +import connectionManager from 'connectionManager'; +import serverNotifications from 'serverNotifications'; +import loading from 'loading'; +import dom from 'dom'; +import recordingHelper from 'recordingHelper'; +import events from 'events'; +import 'paper-icon-button-light'; +import 'emby-button'; +import 'css!./recordingfields'; +import 'flexStyles'; - serverNotifications = serverNotifications.default || serverNotifications; - recordingHelper = recordingHelper.default || recordingHelper; - loading = loading.default || loading; +/*eslint prefer-const: "error"*/ - function loadData(parent, program, apiClient) { - if (program.IsSeries) { - parent.querySelector('.recordSeriesContainer').classList.remove('hide'); +function loadData(parent, program, apiClient) { + if (program.IsSeries) { + parent.querySelector('.recordSeriesContainer').classList.remove('hide'); + } else { + parent.querySelector('.recordSeriesContainer').classList.add('hide'); + } + + if (program.SeriesTimerId) { + parent.querySelector('.btnManageSeriesRecording').classList.remove('hide'); + parent.querySelector('.seriesRecordingButton .recordingIcon').classList.add('recordingIcon-active'); + parent.querySelector('.seriesRecordingButton .buttonText').innerHTML = globalize.translate('CancelSeries'); + } else { + parent.querySelector('.btnManageSeriesRecording').classList.add('hide'); + parent.querySelector('.seriesRecordingButton .recordingIcon').classList.remove('recordingIcon-active'); + parent.querySelector('.seriesRecordingButton .buttonText').innerHTML = globalize.translate('RecordSeries'); + } + + if (program.TimerId && program.Status !== 'Cancelled') { + parent.querySelector('.btnManageRecording').classList.remove('hide'); + parent.querySelector('.singleRecordingButton .recordingIcon').classList.add('recordingIcon-active'); + if (program.Status === 'InProgress') { + parent.querySelector('.singleRecordingButton .buttonText').innerHTML = globalize.translate('StopRecording'); } else { - parent.querySelector('.recordSeriesContainer').classList.add('hide'); + parent.querySelector('.singleRecordingButton .buttonText').innerHTML = globalize.translate('DoNotRecord'); } + } else { + parent.querySelector('.btnManageRecording').classList.add('hide'); + parent.querySelector('.singleRecordingButton .recordingIcon').classList.remove('recordingIcon-active'); + parent.querySelector('.singleRecordingButton .buttonText').innerHTML = globalize.translate('Record'); + } +} - if (program.SeriesTimerId) { - parent.querySelector('.btnManageSeriesRecording').classList.remove('hide'); - parent.querySelector('.seriesRecordingButton .recordingIcon').classList.add('recordingIcon-active'); - parent.querySelector('.seriesRecordingButton .buttonText').innerHTML = globalize.translate('CancelSeries'); - } else { - parent.querySelector('.btnManageSeriesRecording').classList.add('hide'); - parent.querySelector('.seriesRecordingButton .recordingIcon').classList.remove('recordingIcon-active'); - parent.querySelector('.seriesRecordingButton .buttonText').innerHTML = globalize.translate('RecordSeries'); +function fetchData(instance) { + const options = instance.options; + const apiClient = connectionManager.getApiClient(options.serverId); + + options.parent.querySelector('.recordingFields').classList.remove('hide'); + return apiClient.getLiveTvProgram(options.programId, apiClient.getCurrentUserId()).then(function (program) { + instance.TimerId = program.TimerId; + instance.Status = program.Status; + instance.SeriesTimerId = program.SeriesTimerId; + loadData(options.parent, program, apiClient); + }); +} + +function onTimerChangedExternally(e, apiClient, data) { + const options = this.options; + let refresh = false; + + if (data.Id) { + if (this.TimerId === data.Id) { + refresh = true; } - - if (program.TimerId && program.Status !== 'Cancelled') { - parent.querySelector('.btnManageRecording').classList.remove('hide'); - parent.querySelector('.singleRecordingButton .recordingIcon').classList.add('recordingIcon-active'); - if (program.Status === 'InProgress') { - parent.querySelector('.singleRecordingButton .buttonText').innerHTML = globalize.translate('StopRecording'); - } else { - parent.querySelector('.singleRecordingButton .buttonText').innerHTML = globalize.translate('DoNotRecord'); - } - } else { - parent.querySelector('.btnManageRecording').classList.add('hide'); - parent.querySelector('.singleRecordingButton .recordingIcon').classList.remove('recordingIcon-active'); - parent.querySelector('.singleRecordingButton .buttonText').innerHTML = globalize.translate('Record'); + } + if (data.ProgramId && options) { + if (options.programId === data.ProgramId) { + refresh = true; } } - function fetchData(instance) { - var options = instance.options; - var apiClient = connectionManager.getApiClient(options.serverId); - - options.parent.querySelector('.recordingFields').classList.remove('hide'); - return apiClient.getLiveTvProgram(options.programId, apiClient.getCurrentUserId()).then(function (program) { - instance.TimerId = program.TimerId; - instance.Status = program.Status; - instance.SeriesTimerId = program.SeriesTimerId; - loadData(options.parent, program, apiClient); - }); + if (refresh) { + this.refresh(); } +} - function onTimerChangedExternally(e, apiClient, data) { - var options = this.options; - var refresh = false; +function onSeriesTimerChangedExternally(e, apiClient, data) { + const options = this.options; + let refresh = false; - if (data.Id) { - if (this.TimerId === data.Id) { - refresh = true; - } + if (data.Id) { + if (this.SeriesTimerId === data.Id) { + refresh = true; } - if (data.ProgramId && options) { - if (options.programId === data.ProgramId) { - refresh = true; - } - } - - if (refresh) { - this.refresh(); + } + if (data.ProgramId && options) { + if (options.programId === data.ProgramId) { + refresh = true; } } - function onSeriesTimerChangedExternally(e, apiClient, data) { - var options = this.options; - var refresh = false; - - if (data.Id) { - if (this.SeriesTimerId === data.Id) { - refresh = true; - } - } - if (data.ProgramId && options) { - if (options.programId === data.ProgramId) { - refresh = true; - } - } - - if (refresh) { - this.refresh(); - } + if (refresh) { + this.refresh(); } +} - function RecordingEditor(options) { +class RecordingEditor { + constructor(options) { this.options = options; this.embed(); - var timerChangedHandler = onTimerChangedExternally.bind(this); + const timerChangedHandler = onTimerChangedExternally.bind(this); this.timerChangedHandler = timerChangedHandler; events.on(serverNotifications, 'TimerCreated', timerChangedHandler); events.on(serverNotifications, 'TimerCancelled', timerChangedHandler); - var seriesTimerChangedHandler = onSeriesTimerChangedExternally.bind(this); + const seriesTimerChangedHandler = onSeriesTimerChangedExternally.bind(this); this.seriesTimerChangedHandler = seriesTimerChangedHandler; events.on(serverNotifications, 'SeriesTimerCreated', seriesTimerChangedHandler); events.on(serverNotifications, 'SeriesTimerCancelled', seriesTimerChangedHandler); } - function onManageRecordingClick(e) { - var options = this.options; - if (!this.TimerId || this.Status === 'Cancelled') { - return; - } - - var self = this; - require(['recordingEditor'], function (recordingEditor) { - recordingEditor.show(self.TimerId, options.serverId, { - enableCancel: false - }).then(function () { - self.changed = true; - }); - }); - } - - function onManageSeriesRecordingClick(e) { - var options = this.options; - - if (!this.SeriesTimerId) { - return; - } - - var self = this; - - require(['seriesRecordingEditor'], function (seriesRecordingEditor) { - seriesRecordingEditor.show(self.SeriesTimerId, options.serverId, { - - enableCancel: false - - }).then(function () { - self.changed = true; - }); - }); - } - - function onRecordChange(e) { - this.changed = true; - - var self = this; - var options = this.options; - var apiClient = connectionManager.getApiClient(options.serverId); - - var button = dom.parentWithTag(e.target, 'BUTTON'); - var isChecked = !button.querySelector('.material-icons').classList.contains('recordingIcon-active'); - - var hasEnabledTimer = this.TimerId && this.Status !== 'Cancelled'; - - if (isChecked) { - if (!hasEnabledTimer) { - loading.show(); - recordingHelper.createRecording(apiClient, options.programId, false).then(function () { - events.trigger(self, 'recordingchanged'); - fetchData(self); - loading.hide(); - }); - } - } else { - if (hasEnabledTimer) { - loading.show(); - recordingHelper.cancelTimer(apiClient, this.TimerId, true).then(function () { - events.trigger(self, 'recordingchanged'); - fetchData(self); - loading.hide(); - }); - } - } - } - - function sendToast(msg) { - require(['toast'], function (toast) { - toast(msg); - }); - } - - function onRecordSeriesChange(e) { - this.changed = true; - - var self = this; - var options = this.options; - var apiClient = connectionManager.getApiClient(options.serverId); - - var button = dom.parentWithTag(e.target, 'BUTTON'); - var isChecked = !button.querySelector('.material-icons').classList.contains('recordingIcon-active'); - - if (isChecked) { - options.parent.querySelector('.recordSeriesContainer').classList.remove('hide'); - if (!this.SeriesTimerId) { - var promise = this.TimerId ? - recordingHelper.changeRecordingToSeries(apiClient, this.TimerId, options.programId) : - recordingHelper.createRecording(apiClient, options.programId, true); - promise.then(function () { - fetchData(self); - }); - } - } else { - if (this.SeriesTimerId) { - apiClient.cancelLiveTvSeriesTimer(this.SeriesTimerId).then(function () { - sendToast(globalize.translate('RecordingCancelled')); - fetchData(self); - }); - } - } - } - - RecordingEditor.prototype.embed = function () { - var self = this; + embed() { + const self = this; return new Promise(function (resolve, reject) { - require(['text!./recordingfields.template.html'], function (template) { - var options = self.options; - var context = options.parent; + import('text!./recordingfields.template.html').then(({default: template}) => { + const options = self.options; + const context = options.parent; context.innerHTML = globalize.translateHtml(template, 'core'); context.querySelector('.singleRecordingButton').addEventListener('click', onRecordChange.bind(self)); @@ -228,29 +131,134 @@ define(['globalize', 'connectionManager', 'serverNotifications', 'require', 'loa fetchData(self).then(resolve); }); }); - }; + } - RecordingEditor.prototype.hasChanged = function () { + hasChanged() { return this.changed; - }; + } - RecordingEditor.prototype.refresh = function () { + refresh() { fetchData(this); - }; + } - RecordingEditor.prototype.destroy = function () { - var timerChangedHandler = this.timerChangedHandler; + destroy() { + const timerChangedHandler = this.timerChangedHandler; this.timerChangedHandler = null; events.off(serverNotifications, 'TimerCreated', timerChangedHandler); events.off(serverNotifications, 'TimerCancelled', timerChangedHandler); - var seriesTimerChangedHandler = this.seriesTimerChangedHandler; + const seriesTimerChangedHandler = this.seriesTimerChangedHandler; this.seriesTimerChangedHandler = null; events.off(serverNotifications, 'SeriesTimerCreated', seriesTimerChangedHandler); events.off(serverNotifications, 'SeriesTimerCancelled', seriesTimerChangedHandler); - }; + } +} - return RecordingEditor; -}); +function onManageRecordingClick(e) { + const options = this.options; + if (!this.TimerId || this.Status === 'Cancelled') { + return; + } + + const self = this; + import('recordingEditor').then(({default: recordingEditor}) => { + recordingEditor.show(self.TimerId, options.serverId, { + enableCancel: false + }).then(function () { + self.changed = true; + }); + }); +} + +function onManageSeriesRecordingClick(e) { + const options = this.options; + + if (!this.SeriesTimerId) { + return; + } + + const self = this; + + import('seriesRecordingEditor').then(({default: seriesRecordingEditor}) => { + seriesRecordingEditor.show(self.SeriesTimerId, options.serverId, { + + enableCancel: false + + }).then(function () { + self.changed = true; + }); + }); +} + +function onRecordChange(e) { + this.changed = true; + + const self = this; + const options = this.options; + const apiClient = connectionManager.getApiClient(options.serverId); + + const button = dom.parentWithTag(e.target, 'BUTTON'); + const isChecked = !button.querySelector('.material-icons').classList.contains('recordingIcon-active'); + + const hasEnabledTimer = this.TimerId && this.Status !== 'Cancelled'; + + if (isChecked) { + if (!hasEnabledTimer) { + loading.show(); + recordingHelper.createRecording(apiClient, options.programId, false).then(function () { + events.trigger(self, 'recordingchanged'); + fetchData(self); + loading.hide(); + }); + } + } else { + if (hasEnabledTimer) { + loading.show(); + recordingHelper.cancelTimer(apiClient, this.TimerId, true).then(function () { + events.trigger(self, 'recordingchanged'); + fetchData(self); + loading.hide(); + }); + } + } +} + +function sendToast(msg) { + import('toast').then(({default: toast}) => { + toast(msg); + }); +} + +function onRecordSeriesChange(e) { + this.changed = true; + + const self = this; + const options = this.options; + const apiClient = connectionManager.getApiClient(options.serverId); + + const button = dom.parentWithTag(e.target, 'BUTTON'); + const isChecked = !button.querySelector('.material-icons').classList.contains('recordingIcon-active'); + + if (isChecked) { + options.parent.querySelector('.recordSeriesContainer').classList.remove('hide'); + if (!this.SeriesTimerId) { + const promise = this.TimerId ? + recordingHelper.changeRecordingToSeries(apiClient, this.TimerId, options.programId) : + recordingHelper.createRecording(apiClient, options.programId, true); + promise.then(function () { + fetchData(self); + }); + } + } else { + if (this.SeriesTimerId) { + apiClient.cancelLiveTvSeriesTimer(this.SeriesTimerId).then(function () { + sendToast(globalize.translate('RecordingCancelled')); + fetchData(self); + }); + } + } +} + +export default RecordingEditor; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index ed463f67fe..8e1eb55a1d 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -66,7 +66,7 @@ function showSubtitleMenu(context, player, button, item) { }); menuItems.unshift({ id: -1, - name: globalize.translate('ButtonOff'), + name: globalize.translate('Off'), selected: currentIndex == null }); diff --git a/src/components/require/requiretext.js b/src/components/require/requiretext.js index 8c68daed92..28ddeb21c8 100644 --- a/src/components/require/requiretext.js +++ b/src/components/require/requiretext.js @@ -2,7 +2,7 @@ define(function () { 'use strict'; // hack to work around the server's auto-redirection feature - var addRedirectPrevention = self.dashboardVersion != null && self.Dashboard && !self.AppInfo.isNativeApp; + var addRedirectPrevention = window.dashboardVersion != null && window.Dashboard && !window.AppInfo.isNativeApp; return { diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index 5f96d01a4d..339d521bbc 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -26,7 +26,7 @@ }); } - self.addEventListener('notificationclick', function (event) { + window.addEventListener('notificationclick', function (event) { var notification = event.notification; notification.close(); diff --git a/src/controllers/dashboard/devices/device.html b/src/controllers/dashboard/devices/device.html index 4d8fb86537..aec73db008 100644 --- a/src/controllers/dashboard/devices/device.html +++ b/src/controllers/dashboard/devices/device.html @@ -9,7 +9,7 @@
- +
${LabelCustomDeviceDisplayNameHelp}
diff --git a/src/controllers/dashboard/dlna/profile.html b/src/controllers/dashboard/dlna/profile.html index 22c7ce73ef..3ac3a71c6c 100644 --- a/src/controllers/dashboard/dlna/profile.html +++ b/src/controllers/dashboard/dlna/profile.html @@ -8,7 +8,7 @@
- ${TabInfo} + ${ButtonInfo} ${TabDirectPlay} ${Transcoding} ${TabContainers} @@ -319,7 +319,7 @@
- +
@@ -341,16 +341,16 @@
- +
- +
- +
diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index 320a679b37..dfad07618c 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -128,7 +128,7 @@ import libraryMenu from 'libraryMenu'; name: globalize.translate('Transcoding') }, { href: 'playbackconfiguration.html', - name: globalize.translate('TabResumeSettings') + name: globalize.translate('ButtonResume') }, { href: 'streamingsettings.html', name: globalize.translate('TabStreaming') diff --git a/src/controllers/dashboard/general.html b/src/controllers/dashboard/general.html index 078d9d6055..e3a1769c24 100644 --- a/src/controllers/dashboard/general.html +++ b/src/controllers/dashboard/general.html @@ -17,7 +17,7 @@
-
${LabelPreferredDisplayLanguageHelp}
+
${LabelDisplayLanguageHelp}
${LearnHowYouCanContribute}
diff --git a/src/controllers/dashboard/library.js b/src/controllers/dashboard/library.js index 0400df7570..85d9a4b1b2 100644 --- a/src/controllers/dashboard/library.js +++ b/src/controllers/dashboard/library.js @@ -93,7 +93,7 @@ import 'emby-itemrefreshindicator'; const virtualFolder = virtualFolders[index]; const menuItems = []; menuItems.push({ - name: globalize.translate('ButtonEditImages'), + name: globalize.translate('EditImages'), id: 'editimages', icon: 'photo' }); diff --git a/src/controllers/dashboard/playback.html b/src/controllers/dashboard/playback.html index 47ae22c21c..e5f392ead4 100644 --- a/src/controllers/dashboard/playback.html +++ b/src/controllers/dashboard/playback.html @@ -3,7 +3,7 @@
-

${TabResumeSettings}

+

${ButtonResume}

diff --git a/src/controllers/dashboard/playback.js b/src/controllers/dashboard/playback.js index 0406c21926..101c3ac0a2 100644 --- a/src/controllers/dashboard/playback.js +++ b/src/controllers/dashboard/playback.js @@ -32,7 +32,7 @@ import globalize from 'globalize'; name: globalize.translate('Transcoding') }, { href: 'playbackconfiguration.html', - name: globalize.translate('TabResumeSettings') + name: globalize.translate('ButtonResume') }, { href: 'streamingsettings.html', name: globalize.translate('TabStreaming') diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtask.html b/src/controllers/dashboard/scheduledtasks/scheduledtask.html index dc17d9bf07..8d0b2e24e0 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtask.html +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.html @@ -23,7 +23,7 @@
-

${HeaderAddScheduledTaskTrigger}

+

${ButtonAddScheduledTaskTrigger}

diff --git a/src/controllers/dashboard/streaming.js b/src/controllers/dashboard/streaming.js index c54fbea472..5db888dfc1 100644 --- a/src/controllers/dashboard/streaming.js +++ b/src/controllers/dashboard/streaming.js @@ -27,7 +27,7 @@ import globalize from 'globalize'; name: globalize.translate('Transcoding') }, { href: 'playbackconfiguration.html', - name: globalize.translate('TabResumeSettings') + name: globalize.translate('ButtonResume') }, { href: 'streamingsettings.html', name: globalize.translate('TabStreaming') diff --git a/src/controllers/dashboard/users/usernew.html b/src/controllers/dashboard/users/usernew.html index 26142c9ca2..67f1f61ebc 100644 --- a/src/controllers/dashboard/users/usernew.html +++ b/src/controllers/dashboard/users/usernew.html @@ -4,7 +4,7 @@
-

${HeaderAddUser}

+

${ButtonAddUser}

${Help}
diff --git a/src/controllers/dashboard/users/userpasswordpage.js b/src/controllers/dashboard/users/userpasswordpage.js index d399804d3e..9a3f7dfaac 100644 --- a/src/controllers/dashboard/users/userpasswordpage.js +++ b/src/controllers/dashboard/users/userpasswordpage.js @@ -83,7 +83,7 @@ import 'emby-button'; loading.hide(); import('toast').then(({default: toast}) => { - toast(globalize.translate('MessageSettingsSaved')); + toast(globalize.translate('SettingsSaved')); }); loadUser(view, params); diff --git a/src/controllers/itemDetails/index.html b/src/controllers/itemDetails/index.html index bd0821eebe..a69d917874 100644 --- a/src/controllers/itemDetails/index.html +++ b/src/controllers/itemDetails/index.html @@ -18,7 +18,7 @@
-
-

${HeaderCastCrew}

+

${HeaderCastAndCrew}

diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index c57190139f..f837d3fc1d 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1,6 +1,7 @@ import appHost from 'apphost'; import loading from 'loading'; import appRouter from 'appRouter'; +import itemShortcuts from 'itemShortcuts'; import layoutManager from 'layoutManager'; import connectionManager from 'connectionManager'; import * as userSettings from 'userSettings'; @@ -242,7 +243,7 @@ import 'emby-select'; return m.Type === 'Audio'; }); const select = page.querySelector('.selectAudio'); - select.setLabel(globalize.translate('LabelAudio')); + select.setLabel(globalize.translate('Audio')); const selectedId = mediaSource.DefaultAudioStreamIndex; select.innerHTML = tracks.map(function (v) { const selected = v.Index === selectedId ? ' selected' : ''; @@ -271,7 +272,7 @@ import 'emby-select'; return m.Type === 'Subtitle'; }); const select = page.querySelector('.selectSubtitles'); - select.setLabel(globalize.translate('LabelSubtitles')); + select.setLabel(globalize.translate('Subtitles')); const selectedId = mediaSource.DefaultSubtitleStreamIndex == null ? -1 : mediaSource.DefaultSubtitleStreamIndex; const videoTracks = mediaSource.MediaStreams.filter(function (m) { @@ -758,8 +759,8 @@ import 'emby-select'; overlayText: false, transition: false, disableIndicators: true, - disableHoverMenu: true, overlayPlayButton: true, + action: 'play', width: dom.getWindowSize().innerWidth * 0.25 }); @@ -1066,7 +1067,7 @@ import 'emby-select'; } function enableScrollX() { - return browser.mobile && screen.availWidth <= 1000; + return browser.mobile && window.screen.availWidth <= 1000; } function getPortraitShape(scrollX) { @@ -1438,7 +1439,7 @@ import 'emby-select'; name: globalize.translate('Albums'), type: 'MusicAlbum' }, { - name: globalize.translate('HeaderBooks'), + name: globalize.translate('Books'), type: 'Book' }]; renderCollectionItems(page, item, collectionItemTypes, result.Items); @@ -1446,7 +1447,7 @@ import 'emby-select'; }); if (item.Type == 'Season') { - page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderEpisodes'); + page.querySelector('#childrenTitle').innerHTML = globalize.translate('Episodes'); } else if (item.Type == 'Series') { page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderSeasons'); } else if (item.Type == 'MusicAlbum') { @@ -1895,6 +1896,10 @@ import 'emby-select'; playCurrentItem(this, this.getAttribute('data-mode')); } + function onPosterClick(e) { + itemShortcuts.onClick.call(view.querySelector('.detailImageContainer'), e); + } + function onInstantMixClick() { playbackManager.instantMix(currentItem); } @@ -1935,14 +1940,19 @@ import 'emby-select'; } function onMoreCommandsClick() { - const button = this; - apiClient.getCurrentUser().then(function (user) { - itemContextMenu.show(getContextMenuOptions(currentItem, user, button)).then(function (result) { - if (result.deleted) { - appRouter.goHome(); - } else if (result.updated) { - reload(self, view, params); - } + var button = this; + var selectedItem = currentItem; + apiClient.getItem(apiClient.getCurrentUserId(), view.querySelector('.selectSource').value).then(function (item) { + selectedItem = item; + + apiClient.getCurrentUser().then(function (user) { + itemContextMenu.show(getContextMenuOptions(selectedItem, user, button)).then(function (result) { + if (result.deleted) { + appRouter.goHome(); + } else if (result.updated) { + reload(self, view, params); + } + }); }); }); } @@ -1981,6 +1991,7 @@ import 'emby-select'; bindAll(view, '.btnCancelSeriesTimer', 'click', onCancelSeriesTimerClick); bindAll(view, '.btnCancelTimer', 'click', onCancelTimerClick); bindAll(view, '.btnDownload', 'click', onDownloadClick); + view.querySelector('.detailImageContainer').addEventListener('click', onPosterClick); view.querySelector('.trackSelections').addEventListener('submit', onTrackSelectionsSubmit); view.querySelector('.btnSplitVersions').addEventListener('click', function () { splitVersions(self, view, apiClient, params); diff --git a/src/controllers/livetv.html b/src/controllers/livetv.html index 753521f40b..fa6c3125d5 100644 --- a/src/controllers/livetv.html +++ b/src/controllers/livetv.html @@ -63,7 +63,7 @@
- +
diff --git a/src/controllers/livetvsettings.html b/src/controllers/livetvsettings.html index 3f93e0a7fa..ad3a9de7af 100644 --- a/src/controllers/livetvsettings.html +++ b/src/controllers/livetvsettings.html @@ -11,7 +11,7 @@
diff --git a/src/controllers/session/forgotPassword/index.js b/src/controllers/session/forgotPassword/index.js index 45e05409da..0f2464e2d8 100644 --- a/src/controllers/session/forgotPassword/index.js +++ b/src/controllers/session/forgotPassword/index.js @@ -6,14 +6,14 @@ import globalize from 'globalize'; if (result.Action == 'ContactAdmin') { return void Dashboard.alert({ message: globalize.translate('MessageContactAdminToResetPassword'), - title: globalize.translate('HeaderForgotPassword') + title: globalize.translate('ButtonForgotPassword') }); } if (result.Action == 'InNetworkRequired') { return void Dashboard.alert({ message: globalize.translate('MessageForgotPasswordInNetworkRequired'), - title: globalize.translate('HeaderForgotPassword') + title: globalize.translate('ButtonForgotPassword') }); } @@ -27,7 +27,7 @@ import globalize from 'globalize'; msg += '
'; return void Dashboard.alert({ message: msg, - title: globalize.translate('HeaderForgotPassword'), + title: globalize.translate('ButtonForgotPassword'), callback: function () { Dashboard.navigate('forgotpasswordpin.html'); } diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index 8bac557a20..e8541563f0 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -115,11 +115,11 @@ import 'emby-checkbox'; tag: user.PrimaryImageTag, type: 'Primary' }); - html += '
"; + html += '
"; } else { const background = getMetroColor(user.Id); imgUrl = 'assets/img/avatar.png'; - html += '
'; + html += '
'; } html += '
'; diff --git a/src/controllers/shows/tvrecommended.html b/src/controllers/shows/tvrecommended.html index 2302279ed7..b5b54a5eb5 100644 --- a/src/controllers/shows/tvrecommended.html +++ b/src/controllers/shows/tvrecommended.html @@ -5,7 +5,7 @@
- +
@@ -61,7 +61,7 @@
- +
diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index ea95e99386..c58a2faad3 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -29,7 +29,7 @@ import 'emby-button'; }, { name: globalize.translate('TabNetworks') }, { - name: globalize.translate('TabEpisodes') + name: globalize.translate('Episodes') }]; } diff --git a/src/controllers/user/home/index.html b/src/controllers/user/home/index.html index 79c5ccc4bd..f98f373cb0 100644 --- a/src/controllers/user/home/index.html +++ b/src/controllers/user/home/index.html @@ -1,4 +1,4 @@ -
+
diff --git a/src/controllers/user/menu/index.html b/src/controllers/user/menu/index.html index 851a817203..4d91f1206f 100644 --- a/src/controllers/user/menu/index.html +++ b/src/controllers/user/menu/index.html @@ -25,7 +25,7 @@
-
${HeaderHome}
+
${Home}
diff --git a/src/elements/emby-tabs/emby-tabs.js b/src/elements/emby-tabs/emby-tabs.js index db7ad56f5d..7e16e31dd4 100644 --- a/src/elements/emby-tabs/emby-tabs.js +++ b/src/elements/emby-tabs/emby-tabs.js @@ -12,7 +12,7 @@ import 'scrollStyles'; const buttonClass = 'emby-tab-button'; const activeButtonClass = buttonClass + '-active'; - function setActiveTabButton(tabs, newButton, oldButton, animate) { + function setActiveTabButton(newButton) { newButton.classList.add(activeButtonClass); } @@ -77,7 +77,7 @@ import 'scrollStyles'; const previousIndex = current ? parseInt(current.getAttribute('data-index')) : null; - setActiveTabButton(tabs, tabButton, current, true); + setActiveTabButton(tabButton); const index = parseInt(tabButton.getAttribute('data-index')); @@ -101,6 +101,15 @@ import 'scrollStyles'; } } + function onFocusOut(e) { + const parentContainer = e.target.parentNode; + const previousFocus = parentContainer.querySelector('.lastFocused'); + if (previousFocus) { + previousFocus.classList.remove('lastFocused'); + } + e.target.classList.add('lastFocused'); + } + function initScroller(tabs) { if (tabs.scroller) { return; @@ -146,13 +155,18 @@ import 'scrollStyles'; dom.addEventListener(this, 'click', onClick, { passive: true }); + + dom.addEventListener(this, 'focusout', onFocusOut); }; - EmbyTabs.focus = function () { - const selected = this.querySelector('.' + activeButtonClass); + EmbyTabs.focus = function onFocusIn() { + const selectedTab = this.querySelector('.' + activeButtonClass); + const lastFocused = this.querySelector('.lastFocused'); - if (selected) { - focusManager.focus(selected); + if (lastFocused) { + focusManager.focus(lastFocused); + } else if (selectedTab) { + focusManager.focus(selectedTab); } else { focusManager.autoFocus(this); } @@ -178,7 +192,7 @@ import 'scrollStyles'; const newTabButton = tabButtons[currentIndex]; if (newTabButton) { - setActiveTabButton(this, newTabButton, current, false); + setActiveTabButton(newTabButton); } } @@ -226,7 +240,7 @@ import 'scrollStyles'; })); const currentTabButton = tabButtons[current]; - setActiveTabButton(tabs, tabButtons[selected], currentTabButton, false); + setActiveTabButton(tabButtons[selected]); if (current !== selected && currentTabButton) { currentTabButton.classList.remove(activeButtonClass); diff --git a/src/legacy/focusPreventScroll.js b/src/legacy/focusPreventScroll.js index 97d6b0b120..93f53dca29 100644 --- a/src/legacy/focusPreventScroll.js +++ b/src/legacy/focusPreventScroll.js @@ -1,4 +1,3 @@ -// TODO: Move to external library (https://github.com/calvellido/focus-options-polyfill) // Polyfill to add support for preventScroll by focus function if (HTMLElement.prototype.nativeFocus === undefined) { diff --git a/src/plugins/chromecastPlayer/chromecastHelper.js b/src/plugins/chromecastPlayer/chromecastHelper.js index 3fbff5507b..7aac76c544 100644 --- a/src/plugins/chromecastPlayer/chromecastHelper.js +++ b/src/plugins/chromecastPlayer/chromecastHelper.js @@ -1,229 +1,229 @@ -define(['events'], function (events) { - 'use strict'; +import events from 'events'; - // LinkParser +// LinkParser +// +// https://github.com/ravisorg/LinkParser +// +// Locate and extract almost any URL within a string. Handles protocol-less domains, IPv4 and +// IPv6, unrecognised TLDs, and more. +// +// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. +// http://creativecommons.org/licenses/by-sa/4.0/ +(function () { + // Original URL regex from the Android android.text.util.Linkify function, found here: + // http://stackoverflow.com/a/19696443 // - // https://github.com/ravisorg/LinkParser + // However there were problems with it, most probably related to the fact it was + // written in 2007, and it's been highly modified. // - // Locate and extract almost any URL within a string. Handles protocol-less domains, IPv4 and - // IPv6, unrecognised TLDs, and more. + // 1) I didn't like the fact that it was tied to specific TLDs, since new ones + // are being added all the time it wouldn't be reasonable to expect developer to + // be continually updating their regular expressions. // - // This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. - // http://creativecommons.org/licenses/by-sa/4.0/ - (function () { - // Original URL regex from the Android android.text.util.Linkify function, found here: - // http://stackoverflow.com/a/19696443 - // - // However there were problems with it, most probably related to the fact it was - // written in 2007, and it's been highly modified. - // - // 1) I didn't like the fact that it was tied to specific TLDs, since new ones - // are being added all the time it wouldn't be reasonable to expect developer to - // be continually updating their regular expressions. - // - // 2) It didn't allow unicode characters in the domains which are now allowed in - // many languages, (including some IDN TLDs). Again these are constantly being - // added to and it doesn't seem reasonable to hard-code them. Note this ended up - // not being possible in standard JS due to the way it handles multibyte strings. - // It is possible using XRegExp, however a big performance hit results. Disabled - // for now. - // - // 3) It didn't allow for IPv6 hostnames - // IPv6 regex from http://stackoverflow.com/a/17871737 - // - // 4) It was very poorly commented - // - // 5) It wasn't as smart as it could have been about what should be part of a - // URL and what should be part of human language. + // 2) It didn't allow unicode characters in the domains which are now allowed in + // many languages, (including some IDN TLDs). Again these are constantly being + // added to and it doesn't seem reasonable to hard-code them. Note this ended up + // not being possible in standard JS due to the way it handles multibyte strings. + // It is possible using XRegExp, however a big performance hit results. Disabled + // for now. + // + // 3) It didn't allow for IPv6 hostnames + // IPv6 regex from http://stackoverflow.com/a/17871737 + // + // 4) It was very poorly commented + // + // 5) It wasn't as smart as it could have been about what should be part of a + // URL and what should be part of human language. - var protocols = '(?:(?:http|https|rtsp|ftp):\\/\\/)'; - var credentials = "(?:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,64}" // username (1-64 normal or url escaped characters) - + "(?:\\:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,25})?" // followed by optional password (: + 1-25 normal or url escaped characters) - + '\\@)'; + const protocols = '(?:(?:http|https|rtsp|ftp):\\/\\/)'; + const credentials = "(?:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,64}" // username (1-64 normal or url escaped characters) + + "(?:\\:(?:[a-z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-f0-9]{2})){1,25})?" // followed by optional password (: + 1-25 normal or url escaped characters) + + '\\@)'; - // IPv6 Regex http://forums.intermapper.com/viewtopic.php?t=452 - // by Dartware, LLC is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License - // http://intermapper.com/ - var ipv6 = '(' - + '(([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))' - + '|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' - + '|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' - + '|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + '|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + '|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + '|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + '|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' - + ')(%.+)?'; + // IPv6 Regex http://forums.intermapper.com/viewtopic.php?t=452 + // by Dartware, LLC is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License + // http://intermapper.com/ + const ipv6 = '(' + + '(([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))' + + '|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' + + '|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))' + + '|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + '|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))' + + ')(%.+)?'; - var ipv4 = '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.' - + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' - + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' - + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])'; + const ipv4 = '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.' + + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' + + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.' + + '(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])'; - // This would have been a lot cleaner if JS RegExp supported conditionals... - var linkRegExpString = + // This would have been a lot cleaner if JS RegExp supported conditionals... + const linkRegExpString = - // begin match for protocol / username / password / host - '(?:' + // begin match for protocol / username / password / host + '(?:' - // ============================ - // If we have a recognized protocol at the beginning of the URL, we're - // more relaxed about what we accept, because we assume the user wants - // this to be a URL, and we're not accidentally matching human language - + protocols + '?' + // ============================ + // If we have a recognized protocol at the beginning of the URL, we're + // more relaxed about what we accept, because we assume the user wants + // this to be a URL, and we're not accidentally matching human language + + protocols + '?' - // optional username:password@ - + credentials + '?' + // optional username:password@ + + credentials + '?' - // IP address (both v4 and v6) - + '(?:' + // IP address (both v4 and v6) + + '(?:' - // IPv6 - + ipv6 + // IPv6 + + ipv6 - // IPv4 - + '|' + ipv4 + // IPv4 + + '|' + ipv4 - + ')' + + ')' - // end match for protocol / username / password / host - + ')' + // end match for protocol / username / password / host + + ')' - // optional port number - + '(?:\\:\\d{1,5})?' + // optional port number + + '(?:\\:\\d{1,5})?' - // plus optional path and query params (no unicode allowed here?) - + '(?:' - + '\\/(?:' - // some characters we'll accept because it's unlikely human language - // would use them after a URL unless they were part of the url - + '(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])' - + '|(?:\\%[a-f0-9]{2})' - // some characters are much more likely to be used AFTER a url and - // were not intended to be included in the url itself. Mostly end - // of sentence type things. It's also likely that the URL would - // still work if any of these characters were missing from the end - // because we parsed it incorrectly. For these characters to be accepted - // they must be followed by another character that we're reasonably - // sure is part of the url - + "|(?:[\\;\\?\\:\\.\\!\\'\\(\\)\\,\\=]+(?=(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2})))" - + ')*' - + '|\\b|\$' - + ')'; + // plus optional path and query params (no unicode allowed here?) + + '(?:' + + '\\/(?:' + // some characters we'll accept because it's unlikely human language + // would use them after a URL unless they were part of the url + + '(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])' + + '|(?:\\%[a-f0-9]{2})' + // some characters are much more likely to be used AFTER a url and + // were not intended to be included in the url itself. Mostly end + // of sentence type things. It's also likely that the URL would + // still work if any of these characters were missing from the end + // because we parsed it incorrectly. For these characters to be accepted + // they must be followed by another character that we're reasonably + // sure is part of the url + + "|(?:[\\;\\?\\:\\.\\!\\'\\(\\)\\,\\=]+(?=(?:[a-z0-9\\/\\@\\&\\#\\~\\*\\_\\-\\+])|(?:\\%[a-f0-9]{2})))" + + ')*' + + '|\\b|\$' + + ')'; - // regex = XRegExp(regex,'gi'); - var linkRegExp = RegExp(linkRegExpString, 'gi'); + // regex = XRegExp(regex,'gi'); + const linkRegExp = RegExp(linkRegExpString, 'gi'); - var protocolRegExp = RegExp('^' + protocols, 'i'); + const protocolRegExp = RegExp('^' + protocols, 'i'); - // if url doesn't begin with a known protocol, add http by default - function ensureProtocol(url) { - if (!url.match(protocolRegExp)) { - url = 'http://' + url; - } - return url; + // if url doesn't begin with a known protocol, add http by default + function ensureProtocol(url) { + if (!url.match(protocolRegExp)) { + url = 'http://' + url; } + return url; + } - // look for links in the text - var LinkParser = { - parse: function (text) { - var links = []; - var match; + // look for links in the text + const LinkParser = { + parse: function (text) { + const links = []; + let match; - // eslint-disable-next-line no-cond-assign - while (match = linkRegExp.exec(text)) { - console.debug(match); - var txt = match[0]; - var pos = match.index; - var len = txt.length; - var url = ensureProtocol(text); - links.push({ 'pos': pos, 'text': txt, 'len': len, 'url': url }); - } - - return links; + // eslint-disable-next-line no-cond-assign + while (match = linkRegExp.exec(text)) { + console.debug(match); + const txt = match[0]; + const pos = match.index; + const len = txt.length; + const url = ensureProtocol(text); + links.push({ 'pos': pos, 'text': txt, 'len': len, 'url': url }); } - }; - - window.LinkParser = LinkParser; - })(); - - var cache = {}; - - function isValidIpAddress(address) { - var links = LinkParser.parse(address); - - return links.length == 1; - } - - function isLocalIpAddress(address) { - address = address.toLowerCase(); - - if (address.indexOf('127.0.0.1') !== -1) { - return true; - } - if (address.indexOf('localhost') !== -1) { - return true; + return links; } - return false; - } - - function getServerAddress(apiClient) { - var serverAddress = apiClient.serverAddress(); - - if (isValidIpAddress(serverAddress) && !isLocalIpAddress(serverAddress)) { - return Promise.resolve(serverAddress); - } - - var cachedValue = getCachedValue(serverAddress); - if (cachedValue) { - return Promise.resolve(cachedValue); - } - - return apiClient.getEndpointInfo().then(function (endpoint) { - if (endpoint.IsInNetwork) { - return apiClient.getPublicSystemInfo().then(function (info) { - var localAddress = info.LocalAddress; - if (!localAddress) { - console.debug('No valid local address returned, defaulting to external one'); - localAddress = serverAddress; - } - addToCache(serverAddress, localAddress); - return localAddress; - }); - } else { - addToCache(serverAddress, serverAddress); - return serverAddress; - } - }); - } - - function clearCache() { - cache = {}; - } - - function addToCache(key, value) { - cache[key] = { - value: value, - time: new Date().getTime() - }; - } - - function getCachedValue(key) { - var obj = cache[key]; - - if (obj && (new Date().getTime() - obj.time) < 180000) { - return obj.value; - } - - return null; - } - - events.on(ConnectionManager, 'localusersignedin', clearCache); - events.on(ConnectionManager, 'localusersignedout', clearCache); - - return { - getServerAddress: getServerAddress }; -}); + + window.LinkParser = LinkParser; +})(); + +let cache = {}; + +// TODO: Replace with isIP (https://www.npmjs.com/package/is-ip) +function isValidIpAddress(address) { + const links = LinkParser.parse(address); + + return links.length == 1; +} + +// TODO: Add IPv6 support. Potentially replace with isLocalhost (https://www.npmjs.com/package/is-localhost-ip) +function isLocalIpAddress(address) { + address = address.toLowerCase(); + + if (address.includes('127.0.0.1')) { + return true; + } + if (address.includes('localhost')) { + return true; + } + + return false; +} + +export function getServerAddress(apiClient) { + const serverAddress = apiClient.serverAddress(); + + if (isValidIpAddress(serverAddress) && !isLocalIpAddress(serverAddress)) { + return Promise.resolve(serverAddress); + } + + const cachedValue = getCachedValue(serverAddress); + if (cachedValue) { + return Promise.resolve(cachedValue); + } + + return apiClient.getEndpointInfo().then(function (endpoint) { + if (endpoint.IsInNetwork) { + return apiClient.getPublicSystemInfo().then(function (info) { + let localAddress = info.LocalAddress; + if (!localAddress) { + console.debug('No valid local address returned, defaulting to external one'); + localAddress = serverAddress; + } + addToCache(serverAddress, localAddress); + return localAddress; + }); + } else { + addToCache(serverAddress, serverAddress); + return serverAddress; + } + }); +} + +function clearCache() { + cache = {}; +} + +function addToCache(key, value) { + cache[key] = { + value: value, + time: new Date().getTime() + }; +} + +function getCachedValue(key) { + const obj = cache[key]; + + if (obj && (new Date().getTime() - obj.time) < 180000) { + return obj.value; + } + + return null; +} + +events.on(ConnectionManager, 'localusersignedin', clearCache); +events.on(ConnectionManager, 'localusersignedout', clearCache); + +export default { + getServerAddress: getServerAddress +}; diff --git a/src/plugins/experimentalWarnings/plugin.js b/src/plugins/experimentalWarnings/plugin.js index 76b45fad4e..bc301f01af 100644 --- a/src/plugins/experimentalWarnings/plugin.js +++ b/src/plugins/experimentalWarnings/plugin.js @@ -1,61 +1,61 @@ -define(['connectionManager', 'globalize', 'userSettings', 'apphost'], function (connectionManager, globalize, userSettings, appHost) { - 'use strict'; +import globalize from 'globalize'; +import * as userSettings from 'userSettings'; +import appHost from 'apphost'; - appHost = appHost.default || appHost; +// TODO: Replace with date-fns +// https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php +function getWeek(date) { + const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); + const dayNum = d.getUTCDay() || 7; + d.setUTCDate(d.getUTCDate() + 4 - dayNum); + const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); + return Math.ceil((((d - yearStart) / 86400000) + 1) / 7); +} - // TODO: Replace with date-fns - // https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php - function getWeek(date) { - var d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); - var dayNum = d.getUTCDay() || 7; - d.setUTCDate(d.getUTCDate() + 4 - dayNum); - var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); - return Math.ceil((((d - yearStart) / 86400000) + 1) / 7); +function showMessage(text, userSettingsKey, appHostFeature) { + if (appHost.supports(appHostFeature)) { + return Promise.resolve(); } - function showMessage(text, userSettingsKey, appHostFeature) { - if (appHost.supports(appHostFeature)) { - return Promise.resolve(); - } + const now = new Date(); - var now = new Date(); + // TODO: Use date-fns + userSettingsKey += now.getFullYear() + '-w' + getWeek(now); - // TODO: Use date-fns - userSettingsKey += now.getFullYear() + '-w' + getWeek(now); + if (userSettings.get(userSettingsKey, false) === '1') { + return Promise.resolve(); + } - if (userSettings.get(userSettingsKey, false) === '1') { - return Promise.resolve(); - } + return new Promise(function (resolve, reject) { + userSettings.set(userSettingsKey, '1', false); - return new Promise(function (resolve, reject) { - userSettings.set(userSettingsKey, '1', false); - - require(['alert'], function (alert) { - return alert(text).then(resolve, resolve); - }); + import('alert').then(({default: alert}) => { + return alert(text).then(resolve, resolve); }); - } + }); +} - function showBlurayMessage() { - return showMessage(globalize.translate('UnsupportedPlayback'), 'blurayexpirementalinfo', 'nativeblurayplayback'); - } +function showBlurayMessage() { + return showMessage(globalize.translate('UnsupportedPlayback'), 'blurayexpirementalinfo', 'nativeblurayplayback'); +} - function showDvdMessage() { - return showMessage(globalize.translate('UnsupportedPlayback'), 'dvdexpirementalinfo', 'nativedvdplayback'); - } +function showDvdMessage() { + return showMessage(globalize.translate('UnsupportedPlayback'), 'dvdexpirementalinfo', 'nativedvdplayback'); +} - function showIsoMessage() { - return showMessage(globalize.translate('UnsupportedPlayback'), 'isoexpirementalinfo', 'nativeisoplayback'); - } +function showIsoMessage() { + return showMessage(globalize.translate('UnsupportedPlayback'), 'isoexpirementalinfo', 'nativeisoplayback'); +} - function ExpirementalPlaybackWarnings() { +class ExpirementalPlaybackWarnings { + constructor() { this.name = 'Experimental playback warnings'; this.type = 'preplayintercept'; this.id = 'expirementalplaybackwarnings'; } - ExpirementalPlaybackWarnings.prototype.intercept = function (options) { - var item = options.item; + intercept(options) { + const item = options.item; if (!item) { return Promise.resolve(); } @@ -73,7 +73,7 @@ define(['connectionManager', 'globalize', 'userSettings', 'apphost'], function ( } return Promise.resolve(); - }; + } +} - return ExpirementalPlaybackWarnings; -}); +export default ExpirementalPlaybackWarnings; diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index ba497729bb..58c8624e34 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -150,7 +150,7 @@ function tryRemoveElement(elem) { /** * @type {string} */ - name + name; /** * @type {string} */ @@ -730,7 +730,7 @@ function tryRemoveElement(elem) { const elem = e.target; this.destroyCustomTrack(elem); onEndedInternal(this, elem, this.onError); - } + }; /** * @private @@ -760,7 +760,7 @@ function tryRemoveElement(elem) { } events.trigger(this, 'timeupdate'); - } + }; /** * @private @@ -773,7 +773,7 @@ function tryRemoveElement(elem) { const elem = e.target; saveVolume(elem.volume); events.trigger(this, 'volumechange'); - } + }; /** * @private @@ -785,7 +785,7 @@ function tryRemoveElement(elem) { this.onStartedAndNavigatedToOsd(); } - } + }; /** * @private @@ -832,14 +832,14 @@ function tryRemoveElement(elem) { } } events.trigger(this, 'playing'); - } + }; /** * @private */ onPlay = () => { events.trigger(this, 'unpause'); - } + }; /** * @private @@ -865,21 +865,21 @@ function tryRemoveElement(elem) { */ onClick = () => { events.trigger(this, 'click'); - } + }; /** * @private */ onDblClick = () => { events.trigger(this, 'dblclick'); - } + }; /** * @private */ onPause = () => { events.trigger(this, 'pause'); - } + }; onWaiting() { events.trigger(this, 'waiting'); @@ -929,7 +929,7 @@ function tryRemoveElement(elem) { } onErrorInternal(this, type); - } + }; /** * @private @@ -1634,6 +1634,31 @@ function tryRemoveElement(elem) { return null; } + getSupportedPlaybackRates() { + return [{ + name: '0.5x', + id: 0.5 + }, { + name: '0.75x', + id: 0.75 + }, { + name: '1x', + id: 1.0 + }, { + name: '1.25x', + id: 1.25 + }, { + name: '1.5x', + id: 1.5 + }, { + name: '1.75x', + id: 1.75 + }, { + name: '2x', + id: 2.0 + }]; + } + setVolume(val) { const mediaElement = this.#mediaElement; if (mediaElement) { diff --git a/src/plugins/sessionPlayer/plugin.js b/src/plugins/sessionPlayer/plugin.js index c68e0d7a4a..cbeb6f34b4 100644 --- a/src/plugins/sessionPlayer/plugin.js +++ b/src/plugins/sessionPlayer/plugin.js @@ -1,132 +1,123 @@ -define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'], function (playbackManager, events, serverNotifications, connectionManager) { - 'use strict'; +import playbackManager from 'playbackManager'; +import events from 'events'; +import serverNotifications from 'serverNotifications'; +import connectionManager from 'connectionManager'; - serverNotifications = serverNotifications.default || serverNotifications; - playbackManager = playbackManager.default || playbackManager; +function getActivePlayerId() { + const info = playbackManager.getPlayerInfo(); + return info ? info.id : null; +} - function getActivePlayerId() { - var info = playbackManager.getPlayerInfo(); - return info ? info.id : null; +function sendPlayCommand(apiClient, options, playType) { + const sessionId = getActivePlayerId(); + + const ids = options.ids || options.items.map(function (i) { + return i.Id; + }); + + const remoteOptions = { + ItemIds: ids.join(','), + + PlayCommand: playType + }; + + if (options.startPositionTicks) { + remoteOptions.StartPositionTicks = options.startPositionTicks; } - function sendPlayCommand(apiClient, options, playType) { - var sessionId = getActivePlayerId(); - - var ids = options.ids || options.items.map(function (i) { - return i.Id; - }); - - var remoteOptions = { - ItemIds: ids.join(','), - - PlayCommand: playType - }; - - if (options.startPositionTicks) { - remoteOptions.StartPositionTicks = options.startPositionTicks; - } - - if (options.mediaSourceId) { - remoteOptions.MediaSourceId = options.mediaSourceId; - } - - if (options.audioStreamIndex != null) { - remoteOptions.AudioStreamIndex = options.audioStreamIndex; - } - - if (options.subtitleStreamIndex != null) { - remoteOptions.SubtitleStreamIndex = options.subtitleStreamIndex; - } - - if (options.startIndex != null) { - remoteOptions.StartIndex = options.startIndex; - } - - return apiClient.sendPlayCommand(sessionId, remoteOptions); + if (options.mediaSourceId) { + remoteOptions.MediaSourceId = options.mediaSourceId; } - function sendPlayStateCommand(apiClient, command, options) { - var sessionId = getActivePlayerId(); - - apiClient.sendPlayStateCommand(sessionId, command, options); + if (options.audioStreamIndex != null) { + remoteOptions.AudioStreamIndex = options.audioStreamIndex; } - function getCurrentApiClient(instance) { - var currentServerId = instance.currentServerId; - - if (currentServerId) { - return connectionManager.getApiClient(currentServerId); - } - - return connectionManager.currentApiClient(); + if (options.subtitleStreamIndex != null) { + remoteOptions.SubtitleStreamIndex = options.subtitleStreamIndex; } - function sendCommandByName(instance, name, options) { - var command = { - Name: name - }; - - if (options) { - command.Arguments = options; - } - - instance.sendCommand(command); + if (options.startIndex != null) { + remoteOptions.StartIndex = options.startIndex; } - function unsubscribeFromPlayerUpdates(instance) { - instance.isUpdating = true; + return apiClient.sendPlayCommand(sessionId, remoteOptions); +} - var apiClient = getCurrentApiClient(instance); - apiClient.sendMessage('SessionsStop'); - if (instance.pollInterval) { - clearInterval(instance.pollInterval); - instance.pollInterval = null; - } +function sendPlayStateCommand(apiClient, command, options) { + const sessionId = getActivePlayerId(); + + apiClient.sendPlayStateCommand(sessionId, command, options); +} + +function getCurrentApiClient(instance) { + const currentServerId = instance.currentServerId; + + if (currentServerId) { + return connectionManager.getApiClient(currentServerId); } - function processUpdatedSessions(instance, sessions, apiClient) { - var serverId = apiClient.serverId(); + return connectionManager.currentApiClient(); +} - sessions.map(function (s) { - if (s.NowPlayingItem) { - s.NowPlayingItem.ServerId = serverId; - } - }); +function sendCommandByName(instance, name, options) { + const command = { + Name: name + }; - var currentTargetId = getActivePlayerId(); - - var session = sessions.filter(function (s) { - return s.Id === currentTargetId; - })[0]; - - if (session) { - normalizeImages(session, apiClient); - - var eventNames = getChangedEvents(instance.lastPlayerData, session); - instance.lastPlayerData = session; - - for (var i = 0, length = eventNames.length; i < length; i++) { - events.trigger(instance, eventNames[i], [session]); - } - } else { - instance.lastPlayerData = session; - - playbackManager.setDefaultPlayerActive(); - } + if (options) { + command.Arguments = options; } - function getChangedEvents(state1, state2) { - var names = []; + instance.sendCommand(command); +} - if (!state1) { - names.push('statechange'); - names.push('timeupdate'); - names.push('pause'); +function unsubscribeFromPlayerUpdates(instance) { + instance.isUpdating = true; - return names; + const apiClient = getCurrentApiClient(instance); + apiClient.sendMessage('SessionsStop'); + if (instance.pollInterval) { + clearInterval(instance.pollInterval); + instance.pollInterval = null; + } +} + +function processUpdatedSessions(instance, sessions, apiClient) { + const serverId = apiClient.serverId(); + + sessions.map(function (s) { + if (s.NowPlayingItem) { + s.NowPlayingItem.ServerId = serverId; } + }); - // TODO: Trim these down to prevent the UI from over-refreshing + const currentTargetId = getActivePlayerId(); + + const session = sessions.filter(function (s) { + return s.Id === currentTargetId; + })[0]; + + if (session) { + normalizeImages(session, apiClient); + + const eventNames = getChangedEvents(instance.lastPlayerData, session); + instance.lastPlayerData = session; + + for (let i = 0, length = eventNames.length; i < length; i++) { + events.trigger(instance, eventNames[i], [session]); + } + } else { + instance.lastPlayerData = session; + + playbackManager.setDefaultPlayerActive(); + } +} + +function getChangedEvents(state1, state2) { + const names = []; + + if (!state1) { names.push('statechange'); names.push('timeupdate'); names.push('pause'); @@ -134,53 +125,62 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] return names; } - function onPollIntervalFired() { - var instance = this; - var apiClient = getCurrentApiClient(instance); - if (!apiClient.isMessageChannelOpen()) { - apiClient.getSessions().then(function (sessions) { - processUpdatedSessions(instance, sessions, apiClient); - }); - } + // TODO: Trim these down to prevent the UI from over-refreshing + names.push('statechange'); + names.push('timeupdate'); + names.push('pause'); + + return names; +} + +function onPollIntervalFired() { + const instance = this; + const apiClient = getCurrentApiClient(instance); + if (!apiClient.isMessageChannelOpen()) { + apiClient.getSessions().then(function (sessions) { + processUpdatedSessions(instance, sessions, apiClient); + }); } +} - function subscribeToPlayerUpdates(instance) { - instance.isUpdating = true; +function subscribeToPlayerUpdates(instance) { + instance.isUpdating = true; - var apiClient = getCurrentApiClient(instance); - apiClient.sendMessage('SessionsStart', '100,800'); - if (instance.pollInterval) { - clearInterval(instance.pollInterval); - instance.pollInterval = null; - } - instance.pollInterval = setInterval(onPollIntervalFired.bind(instance), 5000); + const apiClient = getCurrentApiClient(instance); + apiClient.sendMessage('SessionsStart', '100,800'); + if (instance.pollInterval) { + clearInterval(instance.pollInterval); + instance.pollInterval = null; } + instance.pollInterval = setInterval(onPollIntervalFired.bind(instance), 5000); +} - function normalizeImages(state, apiClient) { - if (state && state.NowPlayingItem) { - var item = state.NowPlayingItem; +function normalizeImages(state, apiClient) { + if (state && state.NowPlayingItem) { + const item = state.NowPlayingItem; - if (!item.ImageTags || !item.ImageTags.Primary) { - if (item.PrimaryImageTag) { - item.ImageTags = item.ImageTags || {}; - item.ImageTags.Primary = item.PrimaryImageTag; - } - } - if (item.BackdropImageTag && item.BackdropItemId === item.Id) { - item.BackdropImageTags = [item.BackdropImageTag]; - } - if (item.BackdropImageTag && item.BackdropItemId !== item.Id) { - item.ParentBackdropImageTags = [item.BackdropImageTag]; - item.ParentBackdropItemId = item.BackdropItemId; - } - if (!item.ServerId) { - item.ServerId = apiClient.serverId(); + if (!item.ImageTags || !item.ImageTags.Primary) { + if (item.PrimaryImageTag) { + item.ImageTags = item.ImageTags || {}; + item.ImageTags.Primary = item.PrimaryImageTag; } } + if (item.BackdropImageTag && item.BackdropItemId === item.Id) { + item.BackdropImageTags = [item.BackdropImageTag]; + } + if (item.BackdropImageTag && item.BackdropItemId !== item.Id) { + item.ParentBackdropImageTags = [item.BackdropImageTag]; + item.ParentBackdropItemId = item.BackdropItemId; + } + if (!item.ServerId) { + item.ServerId = apiClient.serverId(); + } } +} - function SessionPlayer() { - var self = this; +class SessionPlayer { + constructor() { + const self = this; this.name = 'Remote Control'; this.type = 'mediaplayer'; @@ -192,7 +192,7 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] }); } - SessionPlayer.prototype.beginPlayerUpdates = function () { + beginPlayerUpdates() { this.playerListenerCount = this.playerListenerCount || 0; if (this.playerListenerCount <= 0) { @@ -202,9 +202,9 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] } this.playerListenerCount++; - }; + } - SessionPlayer.prototype.endPlayerUpdates = function () { + endPlayerUpdates() { this.playerListenerCount = this.playerListenerCount || 0; this.playerListenerCount--; @@ -212,21 +212,21 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] unsubscribeFromPlayerUpdates(this); this.playerListenerCount = 0; } - }; + } - SessionPlayer.prototype.getPlayerState = function () { + getPlayerState() { return this.lastPlayerData || {}; - }; + } - SessionPlayer.prototype.getTargets = function () { - var apiClient = getCurrentApiClient(this); + getTargets() { + const apiClient = getCurrentApiClient(this); - var sessionQuery = { + const sessionQuery = { ControllableByUserId: apiClient.getCurrentUserId() }; if (apiClient) { - var name = this.name; + const name = this.name; return apiClient.getSessions(sessionQuery).then(function (sessions) { return sessions.filter(function (s) { @@ -243,11 +243,9 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] isLocalPlayer: false, supportedCommands: s.Capabilities.SupportedCommands, user: s.UserId ? { - Id: s.UserId, Name: s.UserName, PrimaryImageTag: s.UserPrimaryImageTag - } : null }; }); @@ -255,16 +253,16 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] } else { return Promise.resolve([]); } - }; + } - SessionPlayer.prototype.sendCommand = function (command) { - var sessionId = getActivePlayerId(); + sendCommand(command) { + const sessionId = getActivePlayerId(); - var apiClient = getCurrentApiClient(this); + const apiClient = getCurrentApiClient(this); apiClient.sendCommand(sessionId, command); - }; + } - SessionPlayer.prototype.play = function (options) { + play(options) { options = Object.assign({}, options); if (options.items) { @@ -276,251 +274,233 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'] } return sendPlayCommand(getCurrentApiClient(this), options, 'PlayNow'); - }; + } - SessionPlayer.prototype.shuffle = function (item) { + shuffle(item) { sendPlayCommand(getCurrentApiClient(this), { ids: [item.Id] }, 'PlayShuffle'); - }; + } - SessionPlayer.prototype.instantMix = function (item) { + instantMix(item) { sendPlayCommand(getCurrentApiClient(this), { ids: [item.Id] }, 'PlayInstantMix'); - }; + } - SessionPlayer.prototype.queue = function (options) { + queue(options) { sendPlayCommand(getCurrentApiClient(this), options, 'PlayNext'); - }; + } - SessionPlayer.prototype.queueNext = function (options) { + queueNext(options) { sendPlayCommand(getCurrentApiClient(this), options, 'PlayLast'); - }; + } - SessionPlayer.prototype.canPlayMediaType = function (mediaType) { + canPlayMediaType(mediaType) { mediaType = (mediaType || '').toLowerCase(); return mediaType === 'audio' || mediaType === 'video'; - }; + } - SessionPlayer.prototype.canQueueMediaType = function (mediaType) { + canQueueMediaType(mediaType) { return this.canPlayMediaType(mediaType); - }; + } - SessionPlayer.prototype.stop = function () { + stop() { sendPlayStateCommand(getCurrentApiClient(this), 'stop'); - }; + } - SessionPlayer.prototype.nextTrack = function () { + nextTrack() { sendPlayStateCommand(getCurrentApiClient(this), 'nextTrack'); - }; + } - SessionPlayer.prototype.previousTrack = function () { + previousTrack() { sendPlayStateCommand(getCurrentApiClient(this), 'previousTrack'); - }; + } - SessionPlayer.prototype.seek = function (positionTicks) { + seek(positionTicks) { sendPlayStateCommand(getCurrentApiClient(this), 'seek', { SeekPositionTicks: positionTicks }); - }; + } - SessionPlayer.prototype.currentTime = function (val) { + currentTime(val) { if (val != null) { return this.seek(val); } - var state = this.lastPlayerData || {}; + let state = this.lastPlayerData || {}; state = state.PlayState || {}; return state.PositionTicks; - }; + } - SessionPlayer.prototype.duration = function () { - var state = this.lastPlayerData || {}; + duration() { + let state = this.lastPlayerData || {}; state = state.NowPlayingItem || {}; return state.RunTimeTicks; - }; + } - SessionPlayer.prototype.paused = function () { - var state = this.lastPlayerData || {}; + paused() { + let state = this.lastPlayerData || {}; state = state.PlayState || {}; return state.IsPaused; - }; + } - SessionPlayer.prototype.getVolume = function () { - var state = this.lastPlayerData || {}; + getVolume() { + let state = this.lastPlayerData || {}; state = state.PlayState || {}; return state.VolumeLevel; - }; + } - SessionPlayer.prototype.isMuted = function () { - var state = this.lastPlayerData || {}; + isMuted() { + let state = this.lastPlayerData || {}; state = state.PlayState || {}; return state.IsMuted; - }; + } - SessionPlayer.prototype.pause = function () { + pause() { sendPlayStateCommand(getCurrentApiClient(this), 'Pause'); - }; + } - SessionPlayer.prototype.unpause = function () { + unpause() { sendPlayStateCommand(getCurrentApiClient(this), 'Unpause'); - }; + } - SessionPlayer.prototype.playPause = function () { + playPause() { sendPlayStateCommand(getCurrentApiClient(this), 'PlayPause'); - }; + } - SessionPlayer.prototype.setMute = function (isMuted) { + setMute(isMuted) { if (isMuted) { sendCommandByName(this, 'Mute'); } else { sendCommandByName(this, 'Unmute'); } - }; + } - SessionPlayer.prototype.toggleMute = function () { + toggleMute() { sendCommandByName(this, 'ToggleMute'); - }; + } - SessionPlayer.prototype.setVolume = function (vol) { + setVolume(vol) { sendCommandByName(this, 'SetVolume', { Volume: vol }); - }; + } - SessionPlayer.prototype.volumeUp = function () { + volumeUp() { sendCommandByName(this, 'VolumeUp'); - }; + } - SessionPlayer.prototype.volumeDown = function () { + volumeDown() { sendCommandByName(this, 'VolumeDown'); - }; + } - SessionPlayer.prototype.toggleFullscreen = function () { + toggleFullscreen() { sendCommandByName(this, 'ToggleFullscreen'); - }; + } - SessionPlayer.prototype.audioTracks = function () { - var state = this.lastPlayerData || {}; + audioTracks() { + let state = this.lastPlayerData || {}; state = state.NowPlayingItem || {}; - var streams = state.MediaStreams || []; + const streams = state.MediaStreams || []; return streams.filter(function (s) { return s.Type === 'Audio'; }); - }; + } - SessionPlayer.prototype.getAudioStreamIndex = function () { - var state = this.lastPlayerData || {}; + getAudioStreamIndex() { + let state = this.lastPlayerData || {}; state = state.PlayState || {}; return state.AudioStreamIndex; - }; + } - SessionPlayer.prototype.playTrailers = function (item) { + playTrailers(item) { sendCommandByName(this, 'PlayTrailers', { ItemId: item.Id }); - }; + } - SessionPlayer.prototype.setAudioStreamIndex = function (index) { + setAudioStreamIndex(index) { sendCommandByName(this, 'SetAudioStreamIndex', { Index: index }); - }; + } - SessionPlayer.prototype.subtitleTracks = function () { - var state = this.lastPlayerData || {}; + subtitleTracks() { + let state = this.lastPlayerData || {}; state = state.NowPlayingItem || {}; - var streams = state.MediaStreams || []; + const streams = state.MediaStreams || []; return streams.filter(function (s) { return s.Type === 'Subtitle'; }); - }; + } - SessionPlayer.prototype.getSubtitleStreamIndex = function () { - var state = this.lastPlayerData || {}; + getSubtitleStreamIndex() { + let state = this.lastPlayerData || {}; state = state.PlayState || {}; return state.SubtitleStreamIndex; - }; + } - SessionPlayer.prototype.setSubtitleStreamIndex = function (index) { + setSubtitleStreamIndex(index) { sendCommandByName(this, 'SetSubtitleStreamIndex', { Index: index }); - }; + } - SessionPlayer.prototype.getMaxStreamingBitrate = function () { - - }; - - SessionPlayer.prototype.setMaxStreamingBitrate = function (options) { - - }; - - SessionPlayer.prototype.isFullscreen = function () { - - }; - - SessionPlayer.prototype.toggleFullscreen = function () { - - }; - - SessionPlayer.prototype.getRepeatMode = function () { - - }; - - SessionPlayer.prototype.setRepeatMode = function (mode) { + setRepeatMode(mode) { sendCommandByName(this, 'SetRepeatMode', { RepeatMode: mode }); - }; + } - SessionPlayer.prototype.setQueueShuffleMode = function (mode) { + getRepeatMode() { + } + + setQueueShuffleMode(mode) { sendCommandByName(this, 'SetShuffleQueue', { ShuffleMode: mode }); - }; + } - SessionPlayer.prototype.getQueueShuffleMode = function () { + getQueueShuffleMode() { + } - }; - - SessionPlayer.prototype.displayContent = function (options) { + displayContent(options) { sendCommandByName(this, 'DisplayContent', options); - }; + } - SessionPlayer.prototype.isPlaying = function () { - var state = this.lastPlayerData || {}; + isPlaying() { + const state = this.lastPlayerData || {}; return state.NowPlayingItem != null; - }; + } - SessionPlayer.prototype.isPlayingVideo = function () { - var state = this.lastPlayerData || {}; + isPlayingVideo() { + let state = this.lastPlayerData || {}; state = state.NowPlayingItem || {}; return state.MediaType === 'Video'; - }; + } - SessionPlayer.prototype.isPlayingAudio = function () { - var state = this.lastPlayerData || {}; + isPlayingAudio() { + let state = this.lastPlayerData || {}; state = state.NowPlayingItem || {}; return state.MediaType === 'Audio'; - }; + } - SessionPlayer.prototype.getPlaylist = function () { + getPlaylist() { return Promise.resolve([]); - }; + } - SessionPlayer.prototype.getCurrentPlaylistItemId = function () { - }; + getCurrentPlaylistItemId() { + } - SessionPlayer.prototype.setCurrentPlaylistItem = function (playlistItemId) { + setCurrentPlaylistItem(playlistItemId) { return Promise.resolve(); - }; + } - SessionPlayer.prototype.removeFromPlaylist = function (playlistItemIds) { + removeFromPlaylist(playlistItemIds) { return Promise.resolve(); - }; + } - SessionPlayer.prototype.tryPair = function (target) { + tryPair(target) { return Promise.resolve(); - }; + } +} - return SessionPlayer; -}); +export default SessionPlayer; diff --git a/src/scripts/apploader.js b/src/scripts/apploader.js index e98c82e693..f5f6850c40 100644 --- a/src/scripts/apploader.js +++ b/src/scripts/apploader.js @@ -5,8 +5,8 @@ } const script = document.createElement('script'); - if (self.dashboardVersion) { - src += `?v=${self.dashboardVersion}`; + if (window.dashboardVersion) { + src += `?v=${window.dashboardVersion}`; } script.src = src; script.setAttribute('async', ''); @@ -35,10 +35,10 @@ // Promise() being missing on some legacy browser, and a funky one // is Promise() present but buggy on WebOS 2 window.Promise = undefined; - self.Promise = undefined; + window.Promise = undefined; } - if (!self.Promise) { + if (!window.Promise) { // Load Promise polyfill if they are not natively supported injectScriptElement( './libraries/npo.js', diff --git a/src/scripts/browser.js b/src/scripts/browser.js index b10587cb09..618d930ec8 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -210,7 +210,7 @@ if (userAgent.toLowerCase().indexOf('xbox') !== -1) { browser.tv = true; } browser.animate = typeof document !== 'undefined' && document.documentElement.animate != null; -browser.tizen = userAgent.toLowerCase().indexOf('tizen') !== -1 || self.tizen != null; +browser.tizen = userAgent.toLowerCase().indexOf('tizen') !== -1 || window.tizen != null; browser.web0s = userAgent.toLowerCase().indexOf('Web0S'.toLowerCase()) !== -1; browser.edgeUwp = browser.edge && (userAgent.toLowerCase().indexOf('msapphost') !== -1 || userAgent.toLowerCase().indexOf('webview') !== -1); diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index 5befcb1df5..67c75da901 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -315,10 +315,12 @@ define(['browser'], function (browser) { // Not sure how to test for this var supportsMp2VideoAudio = browser.edgeUwp || browser.tizen || browser.web0s; + /* eslint-disable compat/compat */ var maxVideoWidth = browser.xboxOne ? - (self.screen ? self.screen.width : null) : + (window.screen ? window.screen.width : null) : null; + /* eslint-enable compat/compat */ if (options.maxVideoWidth) { maxVideoWidth = options.maxVideoWidth; } diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js new file mode 100644 index 0000000000..70d42d0782 --- /dev/null +++ b/src/scripts/clientUtils.js @@ -0,0 +1,233 @@ + +export function getCurrentUser() { + return window.ApiClient.getCurrentUser(false); +} + +//TODO: investigate url prefix support for serverAddress function +export function serverAddress() { + if (AppInfo.isNativeApp) { + const apiClient = window.ApiClient; + + if (apiClient) { + return apiClient.serverAddress(); + } + + return null; + } + + const urlLower = window.location.href.toLowerCase(); + const index = urlLower.lastIndexOf('/web'); + + if (index != -1) { + return urlLower.substring(0, index); + } + + const loc = window.location; + let address = loc.protocol + '//' + loc.hostname; + + if (loc.port) { + address += ':' + loc.port; + } + + return address; +} + +export function getCurrentUserId() { + const apiClient = window.ApiClient; + + if (apiClient) { + return apiClient.getCurrentUserId(); + } + + return null; +} + +export function onServerChanged(userId, accessToken, apiClient) { + apiClient = apiClient || window.ApiClient; + window.ApiClient = apiClient; +} + +export function logout() { + ConnectionManager.logout().then(function () { + let loginPage; + + if (AppInfo.isNativeApp) { + loginPage = 'selectserver.html'; + window.ApiClient = null; + } else { + loginPage = 'login.html'; + } + + navigate(loginPage); + }); +} + +export function getConfigurationPageUrl(name) { + return 'configurationpage?name=' + encodeURIComponent(name); +} + +export function getConfigurationResourceUrl(name) { + if (AppInfo.isNativeApp) { + return ApiClient.getUrl('web/ConfigurationPage', { + name: name + }); + } + + return getConfigurationPageUrl(name); +} + +export function navigate(url, preserveQueryString) { + if (!url) { + throw new Error('url cannot be null or empty'); + } + + const queryString = getWindowLocationSearch(); + + if (preserveQueryString && queryString) { + url += queryString; + } + + return new Promise(function (resolve, reject) { + import('appRouter').then(({default: appRouter}) => { + return appRouter.show(url).then(resolve, reject); + }); + }); +} + +export function processPluginConfigurationUpdateResult() { + Promise.all([ + import('loading'), + import('toast') + ]) + .then(([{default: loading}, {default: toast}]) => { + loading.hide(); + toast(Globalize.translate('SettingsSaved')); + }); +} + +export function processServerConfigurationUpdateResult(result) { + Promise.all([ + import('loading'), + import('toast') + ]) + .then(([{default: loading}, {default: toast}]) => { + loading.hide(); + toast(Globalize.translate('SettingsSaved')); + }); +} + +export function processErrorResponse(response) { + import('loading').then(({default: loading}) => { + loading.hide(); + }); + + let status = '' + response.status; + + if (response.statusText) { + status = response.statusText; + } + + alert({ + title: status, + message: response.headers ? response.headers.get('X-Application-Error-Code') : null + }); +} + +export function alert(options) { + if (typeof options == 'string') { + return void import('toast').then(({default: toast}) => { + toast({ + text: options + }); + }); + } + + import('alert').then(({default: alert}) => { + alert({ + title: options.title || Globalize.translate('HeaderAlert'), + text: options.message + }).then(options.callback || function () {}); + }); +} + +export function capabilities(appHost) { + let 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', 'SetShuffleQueue', 'ChannelUp', 'ChannelDown', 'PlayMediaSource', 'PlayTrailers'], + SupportsPersistentIdentifier: window.appMode === 'cordova' || window.appMode === 'android', + SupportsMediaControl: true + }; + return Object.assign(capabilities, appHost.getPushTokenInfo()); +} + +export function selectServer() { + if (window.NativeShell && typeof window.NativeShell.selectServer === 'function') { + window.NativeShell.selectServer(); + } else { + navigate('selectserver.html'); + } +} + +export function hideLoadingMsg() { + import('loading').then(({default: loading}) => { + loading.hide(); + }); +} + +export function showLoadingMsg() { + import('loading').then(({default: loading}) => { + loading.show(); + }); +} + +export function confirm(message, title, callback) { + import('confirm').then(({default: confirm}) => { + confirm(message, title).then(function() { + callback(!0); + }).catch(function() { + callback(!1); + }); + }); +} + +// This is used in plugins and templates, so keep it defined for now. +// TODO: Remove once plugins don't need it +window.Dashboard = { + alert, + capabilities, + confirm, + getConfigurationPageUrl, + getConfigurationResourceUrl, + getCurrentUser, + getCurrentUserId, + hideLoadingMsg, + logout, + navigate, + onServerChanged, + processErrorResponse, + processPluginConfigurationUpdateResult, + processServerConfigurationUpdateResult, + selectServer, + serverAddress, + showLoadingMsg +}; + +export default { + alert, + capabilities, + confirm, + getConfigurationPageUrl, + getConfigurationResourceUrl, + getCurrentUser, + getCurrentUserId, + hideLoadingMsg, + logout, + navigate, + onServerChanged, + processErrorResponse, + processPluginConfigurationUpdateResult, + processServerConfigurationUpdateResult, + selectServer, + serverAddress, + showLoadingMsg +}; diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 7c15eae221..b6a45ccf2c 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -302,7 +302,7 @@ import 'material-icons'; $(document).on('itemsaved', '.metadataEditorPage', function (e, item) { updateEditorNode(this, item); }).on('pagebeforeshow', '.metadataEditorPage', function () { - /* eslint-disable-next-line no-unused-expressions */ + /* eslint-disable-next-line @babel/no-unused-expressions */ import('css!assets/css/metadataeditor.css'); }).on('pagebeforeshow', '.metadataEditorPage', function () { var page = this; diff --git a/src/scripts/gamepadtokey.js b/src/scripts/gamepadtokey.js index 28103bb2db..b6f25f1eea 100644 --- a/src/scripts/gamepadtokey.js +++ b/src/scripts/gamepadtokey.js @@ -19,386 +19,383 @@ // # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // # THE SOFTWARE. -require(['apphost'], function (appHost) { - 'use strict'; - appHost = appHost.default || appHost; +import appHost from 'apphost'; - var _GAMEPAD_A_BUTTON_INDEX = 0; - var _GAMEPAD_B_BUTTON_INDEX = 1; - var _GAMEPAD_DPAD_UP_BUTTON_INDEX = 12; - var _GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13; - var _GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14; - var _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15; - var _GAMEPAD_A_KEY = 'GamepadA'; - var _GAMEPAD_B_KEY = 'GamepadB'; - var _GAMEPAD_DPAD_UP_KEY = 'GamepadDPadUp'; - var _GAMEPAD_DPAD_DOWN_KEY = 'GamepadDPadDown'; - var _GAMEPAD_DPAD_LEFT_KEY = 'GamepadDPadLeft'; - var _GAMEPAD_DPAD_RIGHT_KEY = 'GamepadDPadRight'; - var _GAMEPAD_LEFT_THUMBSTICK_UP_KEY = 'GamepadLeftThumbStickUp'; - var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = 'GamepadLeftThumbStickDown'; - var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = 'GamepadLeftThumbStickLeft'; - var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = 'GamepadLeftThumbStickRight'; - var _GAMEPAD_A_KEYCODE = 0; - var _GAMEPAD_B_KEYCODE = 27; - var _GAMEPAD_DPAD_UP_KEYCODE = 38; - var _GAMEPAD_DPAD_DOWN_KEYCODE = 40; - var _GAMEPAD_DPAD_LEFT_KEYCODE = 37; - var _GAMEPAD_DPAD_RIGHT_KEYCODE = 39; - var _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38; - var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40; - var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37; - var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39; - var _THUMB_STICK_THRESHOLD = 0.75; +var _GAMEPAD_A_BUTTON_INDEX = 0; +var _GAMEPAD_B_BUTTON_INDEX = 1; +var _GAMEPAD_DPAD_UP_BUTTON_INDEX = 12; +var _GAMEPAD_DPAD_DOWN_BUTTON_INDEX = 13; +var _GAMEPAD_DPAD_LEFT_BUTTON_INDEX = 14; +var _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX = 15; +var _GAMEPAD_A_KEY = 'GamepadA'; +var _GAMEPAD_B_KEY = 'GamepadB'; +var _GAMEPAD_DPAD_UP_KEY = 'GamepadDPadUp'; +var _GAMEPAD_DPAD_DOWN_KEY = 'GamepadDPadDown'; +var _GAMEPAD_DPAD_LEFT_KEY = 'GamepadDPadLeft'; +var _GAMEPAD_DPAD_RIGHT_KEY = 'GamepadDPadRight'; +var _GAMEPAD_LEFT_THUMBSTICK_UP_KEY = 'GamepadLeftThumbStickUp'; +var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY = 'GamepadLeftThumbStickDown'; +var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY = 'GamepadLeftThumbStickLeft'; +var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY = 'GamepadLeftThumbStickRight'; +var _GAMEPAD_A_KEYCODE = 0; +var _GAMEPAD_B_KEYCODE = 27; +var _GAMEPAD_DPAD_UP_KEYCODE = 38; +var _GAMEPAD_DPAD_DOWN_KEYCODE = 40; +var _GAMEPAD_DPAD_LEFT_KEYCODE = 37; +var _GAMEPAD_DPAD_RIGHT_KEYCODE = 39; +var _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE = 38; +var _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE = 40; +var _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE = 37; +var _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE = 39; +var _THUMB_STICK_THRESHOLD = 0.75; - var _leftThumbstickUpPressed = false; - var _leftThumbstickDownPressed = false; - var _leftThumbstickLeftPressed = false; - var _leftThumbstickRightPressed = false; - var _dPadUpPressed = false; - var _dPadDownPressed = false; - var _dPadLeftPressed = false; - var _dPadRightPressed = false; - var _gamepadAPressed = false; - var _gamepadBPressed = false; +var _leftThumbstickUpPressed = false; +var _leftThumbstickDownPressed = false; +var _leftThumbstickLeftPressed = false; +var _leftThumbstickRightPressed = false; +var _dPadUpPressed = false; +var _dPadDownPressed = false; +var _dPadLeftPressed = false; +var _dPadRightPressed = false; +var _gamepadAPressed = false; +var _gamepadBPressed = false; - // The set of buttons on the gamepad we listen for. - var ProcessedButtons = [ - _GAMEPAD_DPAD_UP_BUTTON_INDEX, - _GAMEPAD_DPAD_DOWN_BUTTON_INDEX, - _GAMEPAD_DPAD_LEFT_BUTTON_INDEX, - _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX, - _GAMEPAD_A_BUTTON_INDEX, - _GAMEPAD_B_BUTTON_INDEX - ]; +// The set of buttons on the gamepad we listen for. +var ProcessedButtons = [ + _GAMEPAD_DPAD_UP_BUTTON_INDEX, + _GAMEPAD_DPAD_DOWN_BUTTON_INDEX, + _GAMEPAD_DPAD_LEFT_BUTTON_INDEX, + _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX, + _GAMEPAD_A_BUTTON_INDEX, + _GAMEPAD_B_BUTTON_INDEX +]; - var _ButtonPressedState = {}; - _ButtonPressedState.getgamepadA = function () { - return _gamepadAPressed; - }; +var _ButtonPressedState = {}; +_ButtonPressedState.getgamepadA = function () { + return _gamepadAPressed; +}; - _ButtonPressedState.setgamepadA = function (newPressedState) { - raiseKeyEvent(_gamepadAPressed, newPressedState, _GAMEPAD_A_KEY, _GAMEPAD_A_KEYCODE, false, true); - _gamepadAPressed = newPressedState; - }; +_ButtonPressedState.setgamepadA = function (newPressedState) { + raiseKeyEvent(_gamepadAPressed, newPressedState, _GAMEPAD_A_KEY, _GAMEPAD_A_KEYCODE, false, true); + _gamepadAPressed = newPressedState; +}; - _ButtonPressedState.getgamepadB = function () { - return _gamepadBPressed; - }; +_ButtonPressedState.getgamepadB = function () { + return _gamepadBPressed; +}; - _ButtonPressedState.setgamepadB = function (newPressedState) { - raiseKeyEvent(_gamepadBPressed, newPressedState, _GAMEPAD_B_KEY, _GAMEPAD_B_KEYCODE); - _gamepadBPressed = newPressedState; - }; +_ButtonPressedState.setgamepadB = function (newPressedState) { + raiseKeyEvent(_gamepadBPressed, newPressedState, _GAMEPAD_B_KEY, _GAMEPAD_B_KEYCODE); + _gamepadBPressed = newPressedState; +}; - _ButtonPressedState.getleftThumbstickUp = function () { - return _leftThumbstickUpPressed; - }; +_ButtonPressedState.getleftThumbstickUp = function () { + return _leftThumbstickUpPressed; +}; - _ButtonPressedState.setleftThumbstickUp = function (newPressedState) { - raiseKeyEvent(_leftThumbstickUpPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_UP_KEY, _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE, true); - _leftThumbstickUpPressed = newPressedState; - }; +_ButtonPressedState.setleftThumbstickUp = function (newPressedState) { + raiseKeyEvent(_leftThumbstickUpPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_UP_KEY, _GAMEPAD_LEFT_THUMBSTICK_UP_KEYCODE, true); + _leftThumbstickUpPressed = newPressedState; +}; - _ButtonPressedState.getleftThumbstickDown = function () { - return _leftThumbstickDownPressed; - }; +_ButtonPressedState.getleftThumbstickDown = function () { + return _leftThumbstickDownPressed; +}; - _ButtonPressedState.setleftThumbstickDown = function (newPressedState) { - raiseKeyEvent(_leftThumbstickDownPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY, _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE, true); - _leftThumbstickDownPressed = newPressedState; - }; +_ButtonPressedState.setleftThumbstickDown = function (newPressedState) { + raiseKeyEvent(_leftThumbstickDownPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEY, _GAMEPAD_LEFT_THUMBSTICK_DOWN_KEYCODE, true); + _leftThumbstickDownPressed = newPressedState; +}; - _ButtonPressedState.getleftThumbstickLeft = function () { - return _leftThumbstickLeftPressed; - }; +_ButtonPressedState.getleftThumbstickLeft = function () { + return _leftThumbstickLeftPressed; +}; - _ButtonPressedState.setleftThumbstickLeft = function (newPressedState) { - raiseKeyEvent(_leftThumbstickLeftPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY, _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE, true); - _leftThumbstickLeftPressed = newPressedState; - }; +_ButtonPressedState.setleftThumbstickLeft = function (newPressedState) { + raiseKeyEvent(_leftThumbstickLeftPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEY, _GAMEPAD_LEFT_THUMBSTICK_LEFT_KEYCODE, true); + _leftThumbstickLeftPressed = newPressedState; +}; - _ButtonPressedState.getleftThumbstickRight = function () { - return _leftThumbstickRightPressed; - }; +_ButtonPressedState.getleftThumbstickRight = function () { + return _leftThumbstickRightPressed; +}; - _ButtonPressedState.setleftThumbstickRight = function (newPressedState) { - raiseKeyEvent(_leftThumbstickRightPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY, _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE, true); - _leftThumbstickRightPressed = newPressedState; - }; +_ButtonPressedState.setleftThumbstickRight = function (newPressedState) { + raiseKeyEvent(_leftThumbstickRightPressed, newPressedState, _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEY, _GAMEPAD_LEFT_THUMBSTICK_RIGHT_KEYCODE, true); + _leftThumbstickRightPressed = newPressedState; +}; - _ButtonPressedState.getdPadUp = function () { - return _dPadUpPressed; - }; +_ButtonPressedState.getdPadUp = function () { + return _dPadUpPressed; +}; - _ButtonPressedState.setdPadUp = function (newPressedState) { - raiseKeyEvent(_dPadUpPressed, newPressedState, _GAMEPAD_DPAD_UP_KEY, _GAMEPAD_DPAD_UP_KEYCODE, true); - _dPadUpPressed = newPressedState; - }; +_ButtonPressedState.setdPadUp = function (newPressedState) { + raiseKeyEvent(_dPadUpPressed, newPressedState, _GAMEPAD_DPAD_UP_KEY, _GAMEPAD_DPAD_UP_KEYCODE, true); + _dPadUpPressed = newPressedState; +}; - _ButtonPressedState.getdPadDown = function () { - return _dPadDownPressed; - }; +_ButtonPressedState.getdPadDown = function () { + return _dPadDownPressed; +}; - _ButtonPressedState.setdPadDown = function (newPressedState) { - raiseKeyEvent(_dPadDownPressed, newPressedState, _GAMEPAD_DPAD_DOWN_KEY, _GAMEPAD_DPAD_DOWN_KEYCODE, true); - _dPadDownPressed = newPressedState; - }; +_ButtonPressedState.setdPadDown = function (newPressedState) { + raiseKeyEvent(_dPadDownPressed, newPressedState, _GAMEPAD_DPAD_DOWN_KEY, _GAMEPAD_DPAD_DOWN_KEYCODE, true); + _dPadDownPressed = newPressedState; +}; - _ButtonPressedState.getdPadLeft = function () { - return _dPadLeftPressed; - }; +_ButtonPressedState.getdPadLeft = function () { + return _dPadLeftPressed; +}; - _ButtonPressedState.setdPadLeft = function (newPressedState) { - raiseKeyEvent(_dPadLeftPressed, newPressedState, _GAMEPAD_DPAD_LEFT_KEY, _GAMEPAD_DPAD_LEFT_KEYCODE, true); - _dPadLeftPressed = newPressedState; - }; +_ButtonPressedState.setdPadLeft = function (newPressedState) { + raiseKeyEvent(_dPadLeftPressed, newPressedState, _GAMEPAD_DPAD_LEFT_KEY, _GAMEPAD_DPAD_LEFT_KEYCODE, true); + _dPadLeftPressed = newPressedState; +}; - _ButtonPressedState.getdPadRight = function () { - return _dPadRightPressed; - }; +_ButtonPressedState.getdPadRight = function () { + return _dPadRightPressed; +}; - _ButtonPressedState.setdPadRight = function (newPressedState) { - raiseKeyEvent(_dPadRightPressed, newPressedState, _GAMEPAD_DPAD_RIGHT_KEY, _GAMEPAD_DPAD_RIGHT_KEYCODE, true); - _dPadRightPressed = newPressedState; - }; +_ButtonPressedState.setdPadRight = function (newPressedState) { + raiseKeyEvent(_dPadRightPressed, newPressedState, _GAMEPAD_DPAD_RIGHT_KEY, _GAMEPAD_DPAD_RIGHT_KEYCODE, true); + _dPadRightPressed = newPressedState; +}; - var times = {}; +var times = {}; - function throttle(key) { - var time = times[key] || 0; - var now = new Date().getTime(); - - if ((now - time) >= 200) { - //times[key] = now; - return true; - } - - return false; - } - - function resetThrottle(key) { - times[key] = new Date().getTime(); - } - - var isElectron = navigator.userAgent.toLowerCase().indexOf('electron') !== -1; - function allowInput() { - // This would be nice but always seems to return true with electron - if (!isElectron && document.hidden) { /* eslint-disable-line compat/compat */ - return false; - } - - if (appHost.getWindowState() === 'Minimized') { - return false; - } +function throttle(key) { + var time = times[key] || 0; + var now = new Date().getTime(); + if ((now - time) >= 200) { + //times[key] = now; return true; } - function raiseEvent(name, key, keyCode) { - if (!allowInput()) { - return; - } + return false; +} - var event = document.createEvent('Event'); - event.initEvent(name, true, true); - event.key = key; - event.keyCode = keyCode; - (document.activeElement || document.body).dispatchEvent(event); +function resetThrottle(key) { + times[key] = new Date().getTime(); +} + +var isElectron = navigator.userAgent.toLowerCase().indexOf('electron') !== -1; +function allowInput() { + // This would be nice but always seems to return true with electron + if (!isElectron && document.hidden) { /* eslint-disable-line compat/compat */ + return false; } - function clickElement(elem) { - if (!allowInput()) { - return; - } - - elem.click(); + if (appHost.getWindowState() === 'Minimized') { + return false; } - function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRepeatKeyDown, clickonKeyUp) { - // No-op if oldPressedState === newPressedState - if (newPressedState === true) { - // button down - var fire = false; + return true; +} - // always fire if this is the initial down press - if (oldPressedState === false) { - fire = true; - resetThrottle(key); - } else if (enableRepeatKeyDown) { - fire = throttle(key); - } +function raiseEvent(name, key, keyCode) { + if (!allowInput()) { + return; + } - if (fire && keyCode) { - raiseEvent('keydown', key, keyCode); - } - } else if (newPressedState === false && oldPressedState === true) { + var event = document.createEvent('Event'); + event.initEvent(name, true, true); + event.key = key; + event.keyCode = keyCode; + (document.activeElement || document.body).dispatchEvent(event); +} + +function clickElement(elem) { + if (!allowInput()) { + return; + } + + elem.click(); +} + +function raiseKeyEvent(oldPressedState, newPressedState, key, keyCode, enableRepeatKeyDown, clickonKeyUp) { + // No-op if oldPressedState === newPressedState + if (newPressedState === true) { + // button down + var fire = false; + + // always fire if this is the initial down press + if (oldPressedState === false) { + fire = true; resetThrottle(key); + } else if (enableRepeatKeyDown) { + fire = throttle(key); + } - // button up - if (keyCode) { - raiseEvent('keyup', key, keyCode); - } - if (clickonKeyUp) { - clickElement(document.activeElement || window); - } + if (fire && keyCode) { + raiseEvent('keydown', key, keyCode); + } + } else if (newPressedState === false && oldPressedState === true) { + resetThrottle(key); + + // button up + if (keyCode) { + raiseEvent('keyup', key, keyCode); + } + if (clickonKeyUp) { + clickElement(document.activeElement || window); } } +} - var inputLoopTimer; - function runInputLoop() { - // Get the latest gamepad state. - var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ - for (var i = 0, len = gamepads.length; i < len; i++) { - var gamepad = gamepads[i]; - if (!gamepad) { - continue; - } - // Iterate through the axes - var axes = gamepad.axes; - var leftStickX = axes[0]; - var leftStickY = axes[1]; - if (leftStickX > _THUMB_STICK_THRESHOLD) { // Right - _ButtonPressedState.setleftThumbstickRight(true); - } else if (leftStickX < -_THUMB_STICK_THRESHOLD) { // Left - _ButtonPressedState.setleftThumbstickLeft(true); - } else if (leftStickY < -_THUMB_STICK_THRESHOLD) { // Up - _ButtonPressedState.setleftThumbstickUp(true); - } else if (leftStickY > _THUMB_STICK_THRESHOLD) { // Down - _ButtonPressedState.setleftThumbstickDown(true); - } else { - _ButtonPressedState.setleftThumbstickLeft(false); - _ButtonPressedState.setleftThumbstickRight(false); - _ButtonPressedState.setleftThumbstickUp(false); - _ButtonPressedState.setleftThumbstickDown(false); - } - // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. - var buttons = gamepad.buttons; - for (var j = 0, len = buttons.length; j < len; j++) { - if (ProcessedButtons.indexOf(j) !== -1) { - if (buttons[j].pressed) { - switch (j) { - case _GAMEPAD_DPAD_UP_BUTTON_INDEX: - _ButtonPressedState.setdPadUp(true); - break; - case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: - _ButtonPressedState.setdPadDown(true); - break; - case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: - _ButtonPressedState.setdPadLeft(true); - break; - case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: - _ButtonPressedState.setdPadRight(true); - break; - case _GAMEPAD_A_BUTTON_INDEX: - _ButtonPressedState.setgamepadA(true); - break; - case _GAMEPAD_B_BUTTON_INDEX: - _ButtonPressedState.setgamepadB(true); - break; - default: - // No-op - break; - } - } else { - switch (j) { - case _GAMEPAD_DPAD_UP_BUTTON_INDEX: - if (_ButtonPressedState.getdPadUp()) { - _ButtonPressedState.setdPadUp(false); - } - break; - case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: - if (_ButtonPressedState.getdPadDown()) { - _ButtonPressedState.setdPadDown(false); - } - break; - case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: - if (_ButtonPressedState.getdPadLeft()) { - _ButtonPressedState.setdPadLeft(false); - } - break; - case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: - if (_ButtonPressedState.getdPadRight()) { - _ButtonPressedState.setdPadRight(false); - } - break; - case _GAMEPAD_A_BUTTON_INDEX: - if (_ButtonPressedState.getgamepadA()) { - _ButtonPressedState.setgamepadA(false); - } - break; - case _GAMEPAD_B_BUTTON_INDEX: - if (_ButtonPressedState.getgamepadB()) { - _ButtonPressedState.setgamepadB(false); - } - break; - default: - // No-op - break; - } +var inputLoopTimer; +function runInputLoop() { + // Get the latest gamepad state. + var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ + for (var i = 0, len = gamepads.length; i < len; i++) { + var gamepad = gamepads[i]; + if (!gamepad) { + continue; + } + // Iterate through the axes + var axes = gamepad.axes; + var leftStickX = axes[0]; + var leftStickY = axes[1]; + if (leftStickX > _THUMB_STICK_THRESHOLD) { // Right + _ButtonPressedState.setleftThumbstickRight(true); + } else if (leftStickX < -_THUMB_STICK_THRESHOLD) { // Left + _ButtonPressedState.setleftThumbstickLeft(true); + } else if (leftStickY < -_THUMB_STICK_THRESHOLD) { // Up + _ButtonPressedState.setleftThumbstickUp(true); + } else if (leftStickY > _THUMB_STICK_THRESHOLD) { // Down + _ButtonPressedState.setleftThumbstickDown(true); + } else { + _ButtonPressedState.setleftThumbstickLeft(false); + _ButtonPressedState.setleftThumbstickRight(false); + _ButtonPressedState.setleftThumbstickUp(false); + _ButtonPressedState.setleftThumbstickDown(false); + } + // Iterate through the buttons to see if Left thumbstick, DPad, A and B are pressed. + var buttons = gamepad.buttons; + for (var j = 0, len = buttons.length; j < len; j++) { + if (ProcessedButtons.indexOf(j) !== -1) { + if (buttons[j].pressed) { + switch (j) { + case _GAMEPAD_DPAD_UP_BUTTON_INDEX: + _ButtonPressedState.setdPadUp(true); + break; + case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: + _ButtonPressedState.setdPadDown(true); + break; + case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: + _ButtonPressedState.setdPadLeft(true); + break; + case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: + _ButtonPressedState.setdPadRight(true); + break; + case _GAMEPAD_A_BUTTON_INDEX: + _ButtonPressedState.setgamepadA(true); + break; + case _GAMEPAD_B_BUTTON_INDEX: + _ButtonPressedState.setgamepadB(true); + break; + default: + // No-op + break; + } + } else { + switch (j) { + case _GAMEPAD_DPAD_UP_BUTTON_INDEX: + if (_ButtonPressedState.getdPadUp()) { + _ButtonPressedState.setdPadUp(false); + } + break; + case _GAMEPAD_DPAD_DOWN_BUTTON_INDEX: + if (_ButtonPressedState.getdPadDown()) { + _ButtonPressedState.setdPadDown(false); + } + break; + case _GAMEPAD_DPAD_LEFT_BUTTON_INDEX: + if (_ButtonPressedState.getdPadLeft()) { + _ButtonPressedState.setdPadLeft(false); + } + break; + case _GAMEPAD_DPAD_RIGHT_BUTTON_INDEX: + if (_ButtonPressedState.getdPadRight()) { + _ButtonPressedState.setdPadRight(false); + } + break; + case _GAMEPAD_A_BUTTON_INDEX: + if (_ButtonPressedState.getgamepadA()) { + _ButtonPressedState.setgamepadA(false); + } + break; + case _GAMEPAD_B_BUTTON_INDEX: + if (_ButtonPressedState.getgamepadB()) { + _ButtonPressedState.setgamepadB(false); + } + break; + default: + // No-op + break; } } } } - // Schedule the next one - inputLoopTimer = requestAnimationFrame(runInputLoop); } + // Schedule the next one + inputLoopTimer = requestAnimationFrame(runInputLoop); +} - function startInputLoop() { - if (!inputLoopTimer) { - runInputLoop(); +function startInputLoop() { + if (!inputLoopTimer) { + runInputLoop(); + } +} + +function stopInputLoop() { + cancelAnimationFrame(inputLoopTimer); + inputLoopTimer = undefined; +} + +function isGamepadConnected() { + var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ + for (var i = 0, len = gamepads.length; i < len; i++) { + var gamepad = gamepads[i]; + if (gamepad && gamepad.connected) { + return true; } } + return false; +} - function stopInputLoop() { - cancelAnimationFrame(inputLoopTimer); - inputLoopTimer = undefined; +function onFocusOrGamepadAttach(e) { + /* eslint-disable-next-line compat/compat */ + if (isGamepadConnected() && document.hasFocus()) { + console.log('Gamepad connected! Starting input loop'); + startInputLoop(); } +} - function isGamepadConnected() { - var gamepads = navigator.getGamepads(); /* eslint-disable-line compat/compat */ - for (var i = 0, len = gamepads.length; i < len; i++) { - var gamepad = gamepads[i]; - if (gamepad && gamepad.connected) { - return true; - } - } - return false; +function onFocusOrGamepadDetach(e) { + /* eslint-disable-next-line compat/compat */ + if (!isGamepadConnected() || !document.hasFocus()) { + console.log('Gamepad disconnected! No other gamepads are connected, stopping input loop'); + stopInputLoop(); + } else { + console.log('Gamepad disconnected! There are gamepads still connected.'); } +} - function onFocusOrGamepadAttach(e) { - /* eslint-disable-next-line compat/compat */ - if (isGamepadConnected() && document.hasFocus()) { - console.log('Gamepad connected! Starting input loop'); - startInputLoop(); - } - } +// Event listeners for any change in gamepads' state. +window.addEventListener('gamepaddisconnected', onFocusOrGamepadDetach); +window.addEventListener('gamepadconnected', onFocusOrGamepadAttach); +window.addEventListener('blur', onFocusOrGamepadDetach); +window.addEventListener('focus', onFocusOrGamepadAttach); - function onFocusOrGamepadDetach(e) { - /* eslint-disable-next-line compat/compat */ - if (!isGamepadConnected() || !document.hasFocus()) { - console.log('Gamepad disconnected! No other gamepads are connected, stopping input loop'); - stopInputLoop(); - } else { - console.log('Gamepad disconnected! There are gamepads still connected.'); - } - } +onFocusOrGamepadAttach(); - // Event listeners for any change in gamepads' state. - window.addEventListener('gamepaddisconnected', onFocusOrGamepadDetach); - window.addEventListener('gamepadconnected', onFocusOrGamepadAttach); - window.addEventListener('blur', onFocusOrGamepadDetach); - window.addEventListener('focus', onFocusOrGamepadAttach); - - onFocusOrGamepadAttach(); - - // The gamepadInputEmulation is a string property that exists in JavaScript UWAs and in WebViews in UWAs. - // It won't exist in Win8.1 style apps or browsers. - if (window.navigator && typeof window.navigator.gamepadInputEmulation === 'string') { - // We want the gamepad to provide gamepad VK keyboard events rather than moving a - // mouse like cursor. Set to "keyboard", the gamepad will provide such keyboard events - // and provide input to the DOM navigator.getGamepads API. - window.navigator.gamepadInputEmulation = 'gamepad'; - } -}); +// The gamepadInputEmulation is a string property that exists in JavaScript UWAs and in WebViews in UWAs. +// It won't exist in Win8.1 style apps or browsers. +if (window.navigator && typeof window.navigator.gamepadInputEmulation === 'string') { + // We want the gamepad to provide gamepad VK keyboard events rather than moving a + // mouse like cursor. Set to "keyboard", the gamepad will provide such keyboard events + // and provide input to the DOM navigator.getGamepads API. + window.navigator.gamepadInputEmulation = 'gamepad'; +} diff --git a/src/scripts/inputManager.js b/src/scripts/inputManager.js index 077af39bf7..baa3deb0aa 100644 --- a/src/scripts/inputManager.js +++ b/src/scripts/inputManager.js @@ -185,6 +185,12 @@ import appHost from 'apphost'; 'changezoom': () => { playbackManager.toggleAspectRatio(); }, + 'increaseplaybackrate': () => { + playbackManager.increasePlaybackRate(); + }, + 'decreaseplaybackrate': () => { + playbackManager.decreasePlaybackRate(); + }, 'changeaudiotrack': () => { playbackManager.changeAudioStream(); }, diff --git a/src/scripts/itembynamedetailpage.js b/src/scripts/itembynamedetailpage.js index 60be838448..f77bb73652 100644 --- a/src/scripts/itembynamedetailpage.js +++ b/src/scripts/itembynamedetailpage.js @@ -39,14 +39,14 @@ function renderItems(page, item) { if (item.EpisodeCount) { sections.push({ - name: globalize.translate('TabEpisodes'), + name: globalize.translate('Episodes'), type: 'Episode' }); } if (item.TrailerCount) { sections.push({ - name: globalize.translate('TabTrailers'), + name: globalize.translate('Trailers'), type: 'Trailer' }); } @@ -60,7 +60,7 @@ function renderItems(page, item) { if (item.MusicVideoCount) { sections.push({ - name: globalize.translate('TabMusicVideos'), + name: globalize.translate('HeaderMusicVideos'), type: 'MusicVideo' }); } diff --git a/src/scripts/keyboardNavigation.js b/src/scripts/keyboardNavigation.js index 10a9611c33..ec354a7ba3 100644 --- a/src/scripts/keyboardNavigation.js +++ b/src/scripts/keyboardNavigation.js @@ -155,7 +155,7 @@ export function enable() { function attachGamepadScript(e) { console.log('Gamepad connected! Attaching gamepadtokey.js script'); window.removeEventListener('gamepadconnected', attachGamepadScript); - /* eslint-disable-next-line no-unused-expressions */ + /* eslint-disable-next-line @babel/no-unused-expressions */ import('scripts/gamepadtokey'); } diff --git a/src/scripts/libraryBrowser.js b/src/scripts/libraryBrowser.js index debae200c0..5b5a1aad80 100644 --- a/src/scripts/libraryBrowser.js +++ b/src/scripts/libraryBrowser.js @@ -109,7 +109,7 @@ export function getQueryPagingHtml (options) { } if (options.filterButton) { - html += ''; + html += ''; } html += '
'; diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index d237eead9d..07d59c76cc 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -8,7 +8,7 @@ import appRouter from 'appRouter'; import appHost from 'apphost'; import playbackManager from 'playbackManager'; import syncPlayManager from 'syncPlayManager'; -import groupSelectionMenu from 'groupSelectionMenu'; +import * as groupSelectionMenu from 'groupSelectionMenu'; import browser from 'browser'; import globalize from 'globalize'; import imageHelper from 'scripts/imagehelper'; @@ -270,7 +270,7 @@ import 'flexStyles'; function refreshLibraryInfoInDrawer(user, drawer) { let html = ''; html += '
'; - html += '' + globalize.translate('ButtonHome') + ''; + html += '' + globalize.translate('Home') + ''; // libraries are added here html += '
'; @@ -799,7 +799,7 @@ import 'flexStyles'; } function getNavDrawerOptions() { - let drawerWidth = screen.availWidth - 50; + let drawerWidth = window.screen.availWidth - 50; drawerWidth = Math.max(drawerWidth, 240); drawerWidth = Math.min(drawerWidth, 320); return { diff --git a/src/scripts/multiDownload.js b/src/scripts/multiDownload.js index b4ad95a975..d1c717af0e 100644 --- a/src/scripts/multiDownload.js +++ b/src/scripts/multiDownload.js @@ -31,7 +31,7 @@ function sameDomain(url) { var a = document.createElement('a'); a.href = url; - return location.hostname === a.hostname && location.protocol === a.protocol; + return window.location.hostname === a.hostname && window.location.protocol === a.protocol; } function download(url) { @@ -62,4 +62,3 @@ export default function (urls) { download(url); }); } - diff --git a/src/scripts/site.js b/src/scripts/site.js index 8c990077f3..0e1e44251c 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -1,4 +1,4 @@ -function getWindowLocationSearch(win) { +window.getWindowLocationSearch = function(win) { 'use strict'; var search = (win || window).location.search; @@ -12,9 +12,9 @@ function getWindowLocationSearch(win) { } return search || ''; -} +}; -window.getParameterByName = function (name, url) { +window.getParameterByName = function(name, url) { 'use strict'; name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); @@ -29,7 +29,7 @@ window.getParameterByName = function (name, url) { return decodeURIComponent(results[1].replace(/\+/g, ' ')); }; -function pageClassOn(eventName, className, fn) { +window.pageClassOn = function(eventName, className, fn) { 'use strict'; document.addEventListener(eventName, function (event) { @@ -39,7 +39,7 @@ function pageClassOn(eventName, className, fn) { fn.call(target, event); } }); -} +}; window.pageIdOn = function(eventName, id, fn) { 'use strict'; @@ -53,187 +53,6 @@ window.pageIdOn = function(eventName, id, fn) { }); }; -var Dashboard = { - getCurrentUser: function () { - return window.ApiClient.getCurrentUser(false); - }, - - //TODO: investigate url prefix support for serverAddress function - serverAddress: function () { - if (AppInfo.isNativeApp) { - var apiClient = window.ApiClient; - - if (apiClient) { - return apiClient.serverAddress(); - } - - return null; - } - - var urlLower = window.location.href.toLowerCase(); - var index = urlLower.lastIndexOf('/web'); - - if (index != -1) { - return urlLower.substring(0, index); - } - - var loc = window.location; - var address = loc.protocol + '//' + loc.hostname; - - if (loc.port) { - address += ':' + loc.port; - } - - return address; - }, - getCurrentUserId: function () { - var apiClient = window.ApiClient; - - if (apiClient) { - return apiClient.getCurrentUserId(); - } - - return null; - }, - onServerChanged: function (userId, accessToken, apiClient) { - apiClient = apiClient || window.ApiClient; - window.ApiClient = apiClient; - }, - logout: function () { - ConnectionManager.logout().then(function () { - var loginPage; - - if (AppInfo.isNativeApp) { - loginPage = 'selectserver.html'; - window.ApiClient = null; - } else { - loginPage = 'login.html'; - } - - Dashboard.navigate(loginPage); - }); - }, - getConfigurationPageUrl: function (name) { - return 'configurationpage?name=' + encodeURIComponent(name); - }, - getConfigurationResourceUrl: function (name) { - if (AppInfo.isNativeApp) { - return ApiClient.getUrl('web/ConfigurationPage', { - name: name - }); - } - - return Dashboard.getConfigurationPageUrl(name); - }, - navigate: function (url, preserveQueryString) { - if (!url) { - throw new Error('url cannot be null or empty'); - } - - var queryString = getWindowLocationSearch(); - - if (preserveQueryString && queryString) { - url += queryString; - } - - return new Promise(function (resolve, reject) { - require(['appRouter'], function (appRouter) { - return appRouter.show(url).then(resolve, reject); - }); - }); - }, - navigate_direct: function (path) { - return new Promise(function (resolve, reject) { - require(['appRouter'], function (appRouter) { - return appRouter.showDirect(path).then(resolve, reject); - }); - }); - }, - processPluginConfigurationUpdateResult: function () { - require(['loading', 'toast'], function (loading, toast) { - loading.hide(); - toast.default(Globalize.translate('MessageSettingsSaved')); - }); - }, - processServerConfigurationUpdateResult: function (result) { - require(['loading', 'toast'], function (loading, toast) { - loading.hide(); - toast.default(Globalize.translate('MessageSettingsSaved')); - }); - }, - processErrorResponse: function (response) { - require(['loading'], function (loading) { - loading.hide(); - }); - - var status = '' + response.status; - - if (response.statusText) { - status = response.statusText; - } - - Dashboard.alert({ - title: status, - message: response.headers ? response.headers.get('X-Application-Error-Code') : null - }); - }, - alert: function (options) { - if (typeof options == 'string') { - return void require(['toast'], function (toast) { - toast.default({ - text: options - }); - }); - } - - require(['alert'], function (alert) { - alert.default({ - title: options.title || Globalize.translate('HeaderAlert'), - text: options.message - }).then(options.callback || function () {}); - }); - }, - capabilities: function (appHost) { - 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', 'SetShuffleQueue', 'ChannelUp', 'ChannelDown', 'PlayMediaSource', 'PlayTrailers'], - SupportsPersistentIdentifier: self.appMode === 'cordova' || self.appMode === 'android', - SupportsMediaControl: true - }; - appHost.getPushTokenInfo(); - return capabilities = Object.assign(capabilities, appHost.getPushTokenInfo()); - }, - selectServer: function () { - if (window.NativeShell && typeof window.NativeShell.selectServer === 'function') { - window.NativeShell.selectServer(); - } else { - Dashboard.navigate('selectserver.html'); - } - }, - hideLoadingMsg: function() { - 'use strict'; - require(['loading'], function(loading) { - loading.hide(); - }); - }, - showLoadingMsg: function() { - 'use strict'; - require(['loading'], function(loading) { - loading.show(); - }); - }, - confirm: function(message, title, callback) { - 'use strict'; - require(['confirm'], function(confirm) { - confirm(message, title).then(function() { - callback(!0); - }).catch(function() { - callback(!1); - }); - }); - } -}; - var AppInfo = {}; function initClient() { @@ -288,7 +107,7 @@ function initClient() { if (!AppInfo.isNativeApp) { console.debug('loading ApiClient singleton'); - return require(['apiclient'], function (apiClientFactory) { + return require(['apiclient', 'clientUtils'], function (apiClientFactory, clientUtils) { console.debug('creating ApiClient singleton'); var apiClient = new apiClientFactory(Dashboard.serverAddress(), appHost.appName(), appHost.appVersion(), appHost.deviceName(), appHost.deviceId()); @@ -340,7 +159,7 @@ function initClient() { function getPlaybackManager(playbackManager) { window.addEventListener('beforeunload', function () { try { - playbackManager.onAppClose(); + playbackManager.default.onAppClose(); } catch (err) { console.error('error in onAppClose: ' + err); } @@ -368,45 +187,21 @@ function initClient() { } function defineResizeObserver() { - if (self.ResizeObserver) { + if (window.ResizeObserver) { define('ResizeObserver', [], function () { - return self.ResizeObserver; + return window.ResizeObserver; }); } else { define('ResizeObserver', ['resize-observer-polyfill'], returnFirstDependency); } } - function initRequireWithBrowser() { - var componentsPath = getComponentsPath(); - var scriptsPath = getScriptsPath(); - - define('filesystem', [scriptsPath + '/filesystem'], returnFirstDependency); - - define('lazyLoader', [componentsPath + '/lazyLoader/lazyLoaderIntersectionObserver'], returnFirstDependency); - define('shell', [scriptsPath + '/shell'], returnFirstDependency); - - define('alert', [componentsPath + '/alert'], returnFirstDependency); - - defineResizeObserver(); - - define('dialog', [componentsPath + '/dialog/dialog'], returnFirstDependency); - - define('confirm', [componentsPath + '/confirm/confirm'], returnFirstDependency); - - define('prompt', [componentsPath + '/prompt/prompt'], returnFirstDependency); - - define('loading', [componentsPath + '/loading/loading'], returnFirstDependency); - define('multi-download', [scriptsPath + '/multiDownload'], returnFirstDependency); - define('fileDownloader', [scriptsPath + '/fileDownloader'], returnFirstDependency); - - define('castSenderApiLoader', [componentsPath + '/castSenderApi'], returnFirstDependency); - } - function init() { define('livetvcss', ['css!assets/css/livetv.css'], returnFirstDependency); define('detailtablecss', ['css!assets/css/detailtable.css'], returnFirstDependency); + require(['clientUtils']); + var promises = []; if (!window.fetch) { promises.push(require(['fetch'])); @@ -453,8 +248,8 @@ function initClient() { } function onGlobalizeInit(browser, globalize) { - if (self.appMode === 'android') { - if (self.location.href.toString().toLowerCase().indexOf('start=backgroundsync') !== -1) { + if (window.appMode === 'android') { + if (window.location.href.toString().toLowerCase().indexOf('start=backgroundsync') !== -1) { return onAppReady(browser); } } @@ -479,7 +274,7 @@ function initClient() { } function loadPlugins(appHost, browser, shell) { - console.debug('loading installed plugins'); + console.groupCollapsed('loading installed plugins'); return new Promise(function (resolve, reject) { require(['webSettings'], function (webSettings) { webSettings.getPlugins().then(function (list) { @@ -497,11 +292,18 @@ function initClient() { list = list.concat(window.NativeShell.getPlugins()); } - Promise.all(list.map(loadPlugin)).then(function () { - require(['packageManager'], function (packageManager) { - packageManager.init().then(resolve, reject); - }); - }, reject); + Promise.all(list.map(loadPlugin)) + .then(function () { + console.debug('finished loading plugins'); + }) + .catch(() => reject) + .finally(() => { + console.groupEnd('loading installed plugins'); + require(['packageManager'], function (packageManager) { + packageManager.default.init().then(resolve, reject); + }); + }) + ; }); }); }); @@ -510,7 +312,7 @@ function initClient() { function loadPlugin(url) { return new Promise(function (resolve, reject) { require(['pluginManager'], function (pluginManager) { - pluginManager.loadPlugin(url).then(resolve, reject); + pluginManager.default.loadPlugin(url).then(resolve, reject); }); }); } @@ -520,6 +322,7 @@ function initClient() { // ensure that appHost is loaded in this point require(['apphost', 'appRouter'], function (appHost, appRouter) { + appRouter = appRouter.default || appRouter; appHost = appHost.default || appHost; window.Emby = {}; @@ -581,11 +384,15 @@ function initClient() { return response.text(); }) .then(function(css) { - // Inject the branding css as a dom element in body so it will take - // precedence over other stylesheets - var style = document.createElement('style'); - style.appendChild(document.createTextNode(css)); - document.body.appendChild(style); + let style = document.querySelector('#cssBranding'); + if (!style) { + // Inject the branding css as a dom element in body so it will take + // precedence over other stylesheets + style = document.createElement('style'); + style.id = 'cssBranding'; + document.body.appendChild(style); + } + style.textContent = css; }) .catch(function(err) { console.warn('Error applying custom css', err); @@ -597,7 +404,7 @@ function initClient() { function registerServiceWorker() { /* eslint-disable compat/compat */ - if (navigator.serviceWorker && self.appMode !== 'cordova' && self.appMode !== 'android') { + if (navigator.serviceWorker && window.appMode !== 'cordova' && window.appMode !== 'android') { try { navigator.serviceWorker.register('serviceworker.js'); } catch (err) { @@ -610,19 +417,41 @@ function initClient() { } function onWebComponentsReady() { - initRequireWithBrowser(); + var componentsPath = getComponentsPath(); + var scriptsPath = getScriptsPath(); - if (self.appMode === 'cordova' || self.appMode === 'android' || self.appMode === 'standalone') { + define('filesystem', [scriptsPath + '/filesystem'], returnFirstDependency); + + define('lazyLoader', [componentsPath + '/lazyLoader/lazyLoaderIntersectionObserver'], returnFirstDependency); + define('shell', [scriptsPath + '/shell'], returnFirstDependency); + + define('alert', [componentsPath + '/alert'], returnFirstDependency); + + defineResizeObserver(); + + define('dialog', [componentsPath + '/dialog/dialog'], returnFirstDependency); + + define('confirm', [componentsPath + '/confirm/confirm'], returnFirstDependency); + + define('prompt', [componentsPath + '/prompt/prompt'], returnFirstDependency); + + define('loading', [componentsPath + '/loading/loading'], returnFirstDependency); + define('multi-download', [scriptsPath + '/multiDownload'], returnFirstDependency); + define('fileDownloader', [scriptsPath + '/fileDownloader'], returnFirstDependency); + + define('castSenderApiLoader', [componentsPath + '/castSenderApi'], returnFirstDependency); + + if (window.appMode === 'cordova' || window.appMode === 'android' || window.appMode === 'standalone') { AppInfo.isNativeApp = true; } init(); } + var promise; var localApiClient; - let promise; - (function () { + function initRequireJs() { var urlArgs = 'v=' + (window.dashboardVersion || new Date().getDate()); var bowerPath = getBowerPath(); @@ -653,7 +482,9 @@ function initClient() { nowPlayingHelper: componentsPath + '/playback/nowplayinghelper', pluginManager: componentsPath + '/pluginManager', packageManager: componentsPath + '/packageManager', - screensaverManager: componentsPath + '/screensavermanager' + screensaverManager: componentsPath + '/screensavermanager', + clientUtils: scriptsPath + '/clientUtils', + appRouter: 'components/appRouter' }; requirejs.onError = onRequireJsError; @@ -852,267 +683,9 @@ function initClient() { return window.ApiClient; }; }); - define('appRouter', [componentsPath + '/appRouter', 'itemHelper'], function (appRouter, itemHelper) { - function showItem(item, serverId, options) { - if (typeof item == 'string') { - require(['connectionManager'], function (connectionManager) { - var apiClient = connectionManager.currentApiClient(); - apiClient.getItem(apiClient.getCurrentUserId(), item).then(function (item) { - appRouter.showItem(item, options); - }); - }); - } else { - if (arguments.length == 2) { - options = arguments[1]; - } - - appRouter.show('/' + appRouter.getRouteUrl(item, options), { - item: item - }); - } - } - - appRouter.showLocalLogin = function (serverId, manualLogin) { - Dashboard.navigate('login.html?serverid=' + serverId); - }; - - appRouter.showVideoOsd = function () { - return Dashboard.navigate('video'); - }; - - appRouter.showSelectServer = function () { - Dashboard.navigate(AppInfo.isNativeApp ? 'selectserver.html' : 'login.html'); - }; - - appRouter.showWelcome = function () { - Dashboard.navigate(AppInfo.isNativeApp ? 'selectserver.html' : 'login.html'); - }; - - appRouter.showSettings = function () { - Dashboard.navigate('mypreferencesmenu.html'); - }; - - appRouter.showGuide = function () { - Dashboard.navigate('livetv.html?tab=1'); - }; - - appRouter.goHome = function () { - Dashboard.navigate('home.html'); - }; - - appRouter.showSearch = function () { - Dashboard.navigate('search.html'); - }; - - appRouter.showLiveTV = function () { - Dashboard.navigate('livetv.html'); - }; - - appRouter.showRecordedTV = function () { - Dashboard.navigate('livetv.html?tab=3'); - }; - - appRouter.showFavorites = function () { - Dashboard.navigate('home.html?tab=1'); - }; - - appRouter.showSettings = function () { - Dashboard.navigate('mypreferencesmenu.html'); - }; - - appRouter.setTitle = function (title) { - LibraryMenu.setTitle(title); - }; - - appRouter.getRouteUrl = function (item, options) { - if (!item) { - throw new Error('item cannot be null'); - } - - if (item.url) { - return item.url; - } - - var context = options ? options.context : null; - var id = item.Id || item.ItemId; - - if (!options) { - options = {}; - } - - var url; - var itemType = item.Type || (options ? options.itemType : null); - var serverId = item.ServerId || options.serverId; - - if (item === 'settings') { - return 'mypreferencesmenu.html'; - } - - if (item === 'wizard') { - return 'wizardstart.html'; - } - - if (item === 'manageserver') { - return 'dashboard.html'; - } - - if (item === 'recordedtv') { - return 'livetv.html?tab=3&serverId=' + options.serverId; - } - - if (item === 'nextup') { - return 'list.html?type=nextup&serverId=' + options.serverId; - } - - if (item === 'list') { - var url = 'list.html?serverId=' + options.serverId + '&type=' + options.itemTypes; - - if (options.isFavorite) { - url += '&IsFavorite=true'; - } - - return url; - } - - if (item === 'livetv') { - if (options.section === 'programs') { - return 'livetv.html?tab=0&serverId=' + options.serverId; - } - if (options.section === 'guide') { - return 'livetv.html?tab=1&serverId=' + options.serverId; - } - - if (options.section === 'movies') { - return 'list.html?type=Programs&IsMovie=true&serverId=' + options.serverId; - } - - if (options.section === 'shows') { - return 'list.html?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId=' + options.serverId; - } - - if (options.section === 'sports') { - return 'list.html?type=Programs&IsSports=true&serverId=' + options.serverId; - } - - if (options.section === 'kids') { - return 'list.html?type=Programs&IsKids=true&serverId=' + options.serverId; - } - - if (options.section === 'news') { - return 'list.html?type=Programs&IsNews=true&serverId=' + options.serverId; - } - - if (options.section === 'onnow') { - return 'list.html?type=Programs&IsAiring=true&serverId=' + options.serverId; - } - - if (options.section === 'dvrschedule') { - return 'livetv.html?tab=4&serverId=' + options.serverId; - } - - if (options.section === 'seriesrecording') { - return 'livetv.html?tab=5&serverId=' + options.serverId; - } - - return 'livetv.html?serverId=' + options.serverId; - } - - if (itemType == 'SeriesTimer') { - return 'details?seriesTimerId=' + id + '&serverId=' + serverId; - } - - if (item.CollectionType == 'livetv') { - return 'livetv.html'; - } - - if (item.Type === 'Genre') { - url = 'list.html?genreId=' + item.Id + '&serverId=' + serverId; - - if (context === 'livetv') { - url += '&type=Programs'; - } - - if (options.parentId) { - url += '&parentId=' + options.parentId; - } - - return url; - } - - if (item.Type === 'MusicGenre') { - url = 'list.html?musicGenreId=' + item.Id + '&serverId=' + serverId; - - if (options.parentId) { - url += '&parentId=' + options.parentId; - } - - return url; - } - - if (item.Type === 'Studio') { - url = 'list.html?studioId=' + item.Id + '&serverId=' + serverId; - - if (options.parentId) { - url += '&parentId=' + options.parentId; - } - - return url; - } - - if (context !== 'folders' && !itemHelper.isLocalItem(item)) { - if (item.CollectionType == 'movies') { - url = 'movies.html?topParentId=' + item.Id; - - if (options && options.section === 'latest') { - url += '&tab=1'; - } - - return url; - } - - if (item.CollectionType == 'tvshows') { - url = 'tv.html?topParentId=' + item.Id; - - if (options && options.section === 'latest') { - url += '&tab=2'; - } - - return url; - } - - if (item.CollectionType == 'music') { - return 'music.html?topParentId=' + item.Id; - } - } - - var itemTypes = ['Playlist', 'TvChannel', 'Program', 'BoxSet', 'MusicAlbum', 'MusicGenre', 'Person', 'Recording', 'MusicArtist']; - - if (itemTypes.indexOf(itemType) >= 0) { - return 'details?id=' + id + '&serverId=' + serverId; - } - - var contextSuffix = context ? '&context=' + context : ''; - - if (itemType == 'Series' || itemType == 'Season' || itemType == 'Episode') { - return 'details?id=' + id + contextSuffix + '&serverId=' + serverId; - } - - if (item.IsFolder) { - if (id) { - return 'list.html?parentId=' + id + '&serverId=' + serverId; - } - - return '#'; - } - - return 'details?id=' + id + '&serverId=' + serverId; - }; - - appRouter.showItem = showItem; - return appRouter; - }); - })(); + } + initRequireJs(); promise.then(onWebComponentsReady); } diff --git a/src/scripts/themeManager.js b/src/scripts/themeManager.js index d61e9ef67e..03ca621749 100644 --- a/src/scripts/themeManager.js +++ b/src/scripts/themeManager.js @@ -1,13 +1,12 @@ import * as webSettings from 'webSettings'; -var themeStyleElement; +var themeStyleElement = document.querySelector('#cssTheme'); var currentThemeId; function unloadTheme() { var elem = themeStyleElement; if (elem) { - elem.parentNode.removeChild(elem); - themeStyleElement = null; + elem.removeAttribute('href'); currentThemeId = null; } } @@ -45,15 +44,26 @@ function setTheme(id) { var linkUrl = info.stylesheetPath; unloadTheme(); - var link = document.createElement('link'); - link.setAttribute('rel', 'stylesheet'); - link.setAttribute('type', 'text/css'); - link.onload = function () { + let link = themeStyleElement; + + if (!link) { + // Inject the theme css as a dom element in body so it will take + // precedence over other stylesheets + link = document.createElement('link'); + link.id = 'cssTheme'; + link.setAttribute('rel', 'stylesheet'); + link.setAttribute('type', 'text/css'); + document.body.appendChild(link); + } + + const onLoad = function (e) { + e.target.removeEventListener('load', onLoad); resolve(); }; + link.addEventListener('load', onLoad); + link.setAttribute('href', linkUrl); - document.head.appendChild(link); themeStyleElement = link; currentThemeId = info.themeId; }); diff --git a/src/strings/af.json b/src/strings/af.json index f18b2fc14b..df3ca17f3f 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -41,8 +41,6 @@ "Absolute": "Absoluut", "AlbumArtist": "Album Kunstenaar", "TabLatest": "Nuutste", - "TabInfo": "Inligting", - "TabEpisodes": "Episodes", "TabDirectPlay": "Speel Direk", "TabDashboard": "Paneelbord", "TabContainers": "Houers", @@ -123,12 +121,10 @@ "ThemeSongs": "Tema Liedjies", "TellUsAboutYourself": "Vertel ons van jouself", "TabUpcoming": "Komende", - "TabTrailers": "Voorprente", "TabStreaming": "Stroom", "TabSettings": "Instellings", "TabServer": "Bediener", "TabScheduledTasks": "Geskeduleerde Take", - "TabResumeSettings": "Hervat", "TabResponses": "Reaksies", "TabProfiles": "Profiele", "TabProfile": "Profiel", @@ -138,7 +134,6 @@ "TabNfoSettings": "NFO Instellings", "TabNetworking": "Netwerking", "TabNetworks": "Netwerke", - "TabMusicVideos": "Musiek Videos", "TabMusic": "Musiek", "TabLogs": "Logs" } diff --git a/src/strings/ar.json b/src/strings/ar.json index 23cb2c9cab..ba172b57ae 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -21,30 +21,23 @@ "ButtonBack": "خلف", "ButtonCancel": "الغاء", "ButtonChangeServer": "غير الخادم", - "ButtonEdit": "تعديل", - "ButtonEditImages": "تعديل الصور", "ButtonEditOtherUserPreferences": "اضبط إعدادات حساب المستخدم هذا، وصورته وتفضيلاته الشخصية.", - "ButtonFilter": "مرشِّح", "ButtonForgotPassword": "نسيت كلمة السر", "ButtonFullscreen": "ملء الشاشة", "ButtonGuide": "الدليل", - "ButtonHome": "الرئيسية", "ButtonInfo": "معلومات", "ButtonLibraryAccess": "صلاحيات المكتبة", "ButtonManualLogin": "الدخول اليدوي", "ButtonMore": "المزيد", "ButtonNetwork": "الشبكة", "ButtonNextTrack": "المقطوعة التالية", - "ButtonOff": "إيقاف التشغيل", "ButtonOk": "موافق", "ButtonOpen": "إفتح", "ButtonParentalControl": "التحكم الأبوي", "ButtonPause": "توقف مؤقت", - "ButtonPlay": "تشغيل", "ButtonPreviousTrack": "المقطوعة السابقة", "ButtonProfile": "حساب", "ButtonQuickStartGuide": "دليل بدء الاستخدام السريع", - "ButtonRefresh": "إعادة تنشيط", "ButtonRefreshGuideData": "إعادة تنشيط بيانات الدليل", "ButtonRemove": "إزالة", "ButtonRename": "إعادة التسمية", @@ -64,7 +57,6 @@ "ButtonStart": "إبدأ", "ButtonStop": "إيقاف", "ButtonSubmit": "تسليم", - "ButtonSubtitles": "ترجمات", "ButtonTrailer": "العرض الإعلاني", "ButtonUninstall": "إزالة التثبيت", "ButtonWebsite": "موقع إلكتروني", @@ -119,9 +111,7 @@ "HeaderActiveDevices": "الأجهزة المفعّلة", "HeaderActiveRecordings": "التسجيلات المفعلة", "HeaderActivity": "الأنشطة", - "HeaderAddScheduledTaskTrigger": "إضافة زناد", "HeaderAddUpdateImage": "إضافة/تحديث صورة", - "HeaderAddUser": "إضافة مستخدم", "HeaderAdditionalParts": "أدوار إضافية", "HeaderAdmin": "المدير", "HeaderAlert": "تنبيه", @@ -131,10 +121,8 @@ "HeaderApiKeysHelp": "التطبيقات الخارجية تحتاج أن تمتلك مفتاح api لكي تتصل بالخادم. هذه المفاتيح تُصدر عن طريق تسجيل الدخول بمستخدم عادي، أو عن طريق منح التطبيق مفتاحاً أصدر يدوياً.", "HeaderApp": "التطبيق", "HeaderAudioSettings": "إعدادات الصوت", - "HeaderBooks": "الكتب", "HeaderBranding": "وسومات البرنامج", "HeaderCastAndCrew": "الممثلين وطاقم العمل", - "HeaderCastCrew": "الممثلين والطاقم", "HeaderChannelAccess": "صلاحيات القنوات", "HeaderCodecProfile": "عريضة الكودك", "HeaderCodecProfileHelp": "عرائض الكودك تشير إلى محدودية جهاز ما عند تشغيل وسيطة مشفر بكودك معيّن. إن كان هناك أي محدودية مذكورة فستحال الوسيطة إلى التشغير البيني، حتى لو كانت الصيغة مضبوطة للعمل بتلقائية.", @@ -159,12 +147,10 @@ "HeaderDirectPlayProfile": "عريضة التشغيل المباشر", "HeaderDirectPlayProfileHelp": "أضف مباشرةً عريضة تشغيل للإشارة لأي صيغة يتمكن الجهاز من التعامل معه بتلقائية.", "HeaderEasyPinCode": "الرمز الشخصي الميسر", - "HeaderEpisodes": "الحلقات", "HeaderError": "حدث خطأ", "HeaderFeatureAccess": "صلاحية الخاصية", "HeaderFetchImages": "إطهار الصور:", "HeaderForKids": "للأطفال", - "HeaderForgotPassword": "نسيت كلمة السر", "HeaderFrequentlyPlayed": "تم تشغيله مراراً", "HeaderGuideProviders": "مزودو الأدلة", "HeaderHttpHeaders": "رؤوس HTTP", @@ -186,7 +172,6 @@ "HeaderLoginFailure": "فشل في تسجيل الدخول", "HeaderMedia": "الوسائط", "HeaderMediaFolders": "مجلدات الوسائط", - "HeaderMediaInfo": "معلومات الوسيطة", "HeaderMoreLikeThis": "المزيد من الروابط لهذا", "HeaderMusicVideos": "الفيديوهات الموسيقية", "HeaderMyMedia": "وسائطي", @@ -297,7 +282,6 @@ "LabelCustomCertificatePathHelp": "مسار ملف PKCS # 12 يحتوي على شهادة ومفتاح خاص لتمكين دعم TLS على مجال مخصص.", "LabelCustomCss": "تنيسق CSS مخصص:", "LabelCustomCssHelp": "طبق تنسيقك css المخصص لواجهة الويب.", - "LabelCustomDeviceDisplayName": "اسم العرض:", "LabelCustomDeviceDisplayNameHelp": "أذكر اسم عرض مخصوص أو أتركه فارغاً لاستخدام الاسم المبلغ من الجهاز.", "LabelDateAddedBehavior": "كيف يتصرف المحتوى الجديد نحو \"تاريخ الإضافة\" الخاص به:", "LabelDateAddedBehaviorHelp": "إذا اخذت واصفات البيانات قيمة، فإنها سوف تستخدم قبل أن تستخدم أي من هذه الخيارات.", @@ -307,7 +291,6 @@ "LabelDefaultUserHelp": "لتحديد مكتبة المستخدم التي تظهر على الأجهزة المتصلة. بإمكان الامتطاء على هذه القيمة لكل جهاز عن طريق عرائض الأجهزة.", "LabelDeviceDescription": "وصف الجهاز", "LabelDidlMode": "طور DIDL:", - "LabelDisplayMissingEpisodesWithinSeasons": "أظهر الحلقات المفقودة في مجلدات المواسم", "LabelDisplayName": "الاسم المعروض:", "LabelDisplaySpecialsWithinSeasons": "أظهر الحلقات الخاصة في المواسم التي بثت فيها", "LabelDownMixAudioScale": "تعزيز الصوت عند تقليل توزيع قنوات الصوت:", @@ -436,7 +419,6 @@ "LabelPostProcessorArguments": "معطيات سطر الأوامر لتطبيق ما بعد المعالجة", "LabelPostProcessorArgumentsHelp": "استخدم المسار: {path} كمسار لملف التسجيل.", "LabelPreferredDisplayLanguage": "لغة الواجهة المفضلة:", - "LabelPreferredDisplayLanguageHelp": "إن ترجمة أمبي هو مشروع جاري التنفيذ.", "LabelProfileAudioCodecs": "كودك تشفير الصوت", "LabelProfileCodecs": "الكودكات:", "LabelProfileCodecsHelp": "يجب فصل العناصر بفواصل (,). يمكن أن تترك هذه فارغة إذا أريد تطبيقها على كل الكودكات.", @@ -484,12 +466,9 @@ "LabelTag": "البطاقة:", "LabelTime": "الوقت:", "LabelTimeLimitHours": "الوقت المحدد (بالساعة):", - "LabelTranscodingAudioCodec": "كودك تشفير الصوت:", - "LabelTranscodingContainer": "الحاوية:", "LabelTranscodingTempPathHelp": "هذا المجلد يحتوي على ملفات قيد الاستعمال من قبل المشفر البيني. حدد مساراً مخصوصاً او اتركه فارغاً لاستعمال القيمة الافتراضية في مجلد بيانات الخادم.", "LabelTranscodingThreadCount": "عدد مسارات التشفير البيني", "LabelTranscodingThreadCountHelp": "إختر الحد الأقصى المسموح به من مسارات التشفير البيني. إن تقليل عدد المسارات سيقلل من نسبة استخدام المعالج لكنه قد لا يحوّل الوسيطة بالسرعة المطلوبة لتشغيل سلس.", - "LabelTranscodingVideoCodec": "كودك تشفير الفيديو:", "LabelTriggerType": "نوع الزناد:", "LabelTunerIpAddress": "عنوان آي بي المولف:", "LabelTunerType": "نوع المولف:", @@ -573,7 +552,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "لضبط", "MessagePluginInstallDisclaimer": "إن الملحقات التي بناها أعضاء مجتمع أمبي لهي طريقة رائعة لتحسين متعة استخدام أمبي وذلك بإضافة المزايا والخدمات الجديدة. قبل تثبيت الملحقات، نرجو أخذ العلم بالآثار التي قد تلحقها بخادم أمبي الخاص بك، مثل أوقات أطولة لتمشيط مكتبتك، والعمليات الخلفية الإضافية وتقليل استقرار نظامك.", "MessageReenableUser": "أنظر أدناه لإعادة التفعيل", - "MessageSettingsSaved": "تم حفظ الإعدادات.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "مكان الوسائط التالي سيزال من مكتبة أمبي الخاصة بك:", "MessageUnableToConnectToServer": "لم نستطع الاتصال إلى الخادم المختار في الوقت الحالي. الرجاء التأكد من أنه يعمل ثم المحاولة مرة أخرى.", "MessageUnsetContentHelp": "المحتوى سيعرض كمجدات اعتيادية. لأفضل النتائج استخدم مدير واصفات البيانات لإعداد نوع محتوى المجلدات الفرعية.", @@ -611,7 +589,6 @@ "OptionArtist": "الفنان", "OptionAscending": "تصاعدي", "OptionAuto": "آلي", - "OptionAutomatic": "الآلي", "OptionAutomaticallyGroupSeries": "إدمج الحلقات الموزعة بين عدة مجلدات إلى مجلد واحد تلقائياً.", "OptionAutomaticallyGroupSeriesHelp": "في حال التفعيل فإن الحلقات الموزعة بين عدة مجلدات ستدمج تلقائياً في مجلد مسلسل واحد.", "OptionBlockBooks": "الكتب", @@ -749,18 +726,14 @@ "SystemDlnaProfilesHelp": "عرائض النظام تكون مقفلة للقراءة-فقط. وأي تغيير على عريضة من عرائض النظام ستحفظ إلى عريضة مخصوصة جديدة.", "TabAccess": "الدخول", "TabAdvanced": "متقدم", - "TabAlbumArtists": "فنانو الألبومات", "TabCatalog": "الكتالوج", "TabCodecs": "الكودكات", "TabContainers": "الحاويات", "TabDashboard": "لوحة العدادات", "TabDirectPlay": "تشغيل مباشر", - "TabEpisodes": "الحلقات", - "TabInfo": "معلومات", "TabLatest": "الاخير", "TabLogs": "الكشوفات", "TabMusic": "الموسيقى", - "TabMusicVideos": "الفيديوهات الموسيقية", "TabMyPlugins": "ملحقاتي", "TabNetworks": "الشبكات", "TabNfoSettings": "أعدادات Nfo", @@ -771,12 +744,10 @@ "TabProfile": "عريضة", "TabProfiles": "الحسابات", "TabResponses": "الردود", - "TabResumeSettings": "استئناف الإعدادات", "TabScheduledTasks": "المهام المجدولة", "TabServer": "الخادم", "TabSettings": "الإعدادات", "TabStreaming": "التشغيل التدفقي", - "TabTrailers": "العروض الإعلانية", "TabUpcoming": "القادم", "TellUsAboutYourself": "اخبرنا عن نفسك", "ThisWizardWillGuideYou": "مرشد الاعدادات سيساعدك خلال خطوات عملية الاعدادات. للبدء، الرجاء اختيار لغتك المفضلة.", @@ -1001,7 +972,6 @@ "HeaderKeepRecording": "استمر في التسجيل", "HeaderIdentifyItemHelp": "أدخل معيار بحث واحد أو أكثر. إزالة المعايير لزيادة نتائج البحث.", "HeaderHttpsSettings": "إعدادات HTTPS", - "HeaderHome": "الصفحة الرئيسية", "HeaderFetcherSettings": "إعدادات الجلب", "HeaderFavoritePlaylists": "قوائم التشغيل المفضلة", "HeaderFavoriteVideos": "مقاطع الفيديو المفضلة", @@ -1044,9 +1014,7 @@ "ErrorDeletingItem": "حدث خطأ في حذف العنصر من سيرفر Jellyfin. يرجى التحقق من أن سيرفر Jellyfin لديه حق الوصول للكتابة إلى مجلد الوسائط وحاول مرة أخرى.", "Episode": "حلقة", "EnableThemeVideosHelp": "قم بتشغيل الفيديوهات الرئيسية في الخلفية أثناء تصفح المكتبة.", - "EnableThemeVideos": "الفيديوهات الرئيسية", "EnableThemeSongsHelp": "قم بتشغيل اللحن الرئيسي في الخلفية أثناء تصفح المكتبة.", - "EnableThemeSongs": "اللحن الرئيسي", "EnableStreamLoopingHelp": "قم بتمكين هذا إذا كانت عمليات البث المباشر تحتوي فقط على بضع ثوان من البيانات وتحتاج إلى إعادة طلب مستمر. قد يؤدي تمكين هذا عندما لا تكون هناك حاجة إلى مشاكل.", "EnableStreamLooping": "تكرار البث المباشر", "EnableHardwareEncoding": "تمكين تشفير الأجهزة", @@ -1099,7 +1067,6 @@ "LabelAudioChannels": "قنوات الصوت:", "LabelAudioBitrate": "معدل بث الصوت:", "LabelAudioBitDepth": "عمق بث الصوت:", - "LabelAudio": "الصوت", "LabelAllowedRemoteAddressesMode": "وضع مرشح عنوان المضيف IP البعيد:", "LabelAllowedRemoteAddresses": "مرشح عنوان المضيف IP البعيد:", "LabelAirsBeforeSeason": "عروض بث قبل الموسم:", diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 8bd6d2aa31..adaa0e43e1 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -3,7 +3,6 @@ "ButtonOk": "ОК", "ButtonQuickStartGuide": "Кіраўніцтва па запуску", "ButtonSignOut": "Sign out", - "HeaderAddUser": "Даданне карыстальніка", "HeaderEasyPinCode": "Просты PIN-код", "HeaderPaths": "Шляхі", "HeaderTaskTriggers": "Трыгеры задачы", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index 1cc469a9fd..a79650546c 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -28,28 +28,21 @@ "ButtonAudioTracks": "Звукови пътеки", "ButtonBack": "Назад", "ButtonCancel": "Отмяна", - "ButtonEdit": "Редактиране", - "ButtonEditImages": "Редактиране на изображенията", - "ButtonFilter": "Филтър", "ButtonForgotPassword": "Забравена парола", "ButtonGotIt": "Добре", "ButtonGuide": "Справочник", - "ButtonHome": "Начало", "ButtonInfo": "Сведения", "ButtonLibraryAccess": "Достъп до библиотеката", "ButtonManualLogin": "Вход с име и парола", "ButtonMore": "Още", "ButtonNextTrack": "Следваща пътека", - "ButtonOff": "Изключено", "ButtonOk": "Добре", "ButtonOpen": "Отваряне", "ButtonParentalControl": "Родителски контрол", "ButtonPause": "Пауза", - "ButtonPlay": "Пускане", "ButtonPreviousTrack": "Предишна пътека", "ButtonProfile": "Профил", "ButtonQuickStartGuide": "Първи стъпки", - "ButtonRefresh": "Опресняване", "ButtonRefreshGuideData": "Обновяване на данните в справочника", "ButtonRemove": "Премахване", "ButtonRename": "Преименуване", @@ -65,7 +58,6 @@ "ButtonSignOut": "Отписване", "ButtonStop": "Спиране", "ButtonSubmit": "Подаване", - "ButtonSubtitles": "Субтитри", "ButtonUninstall": "Деинсталиране", "ButtonWebsite": "Сайт", "ChannelAccessHelp": "Изберете каналите, които да споделите с потребителя. Администраторите ще могат да редактират всички канали, използвайки управлението на метаданни.", @@ -98,7 +90,6 @@ "EditMetadata": "Редактиране на метаданните", "EditSubtitles": "Редактиране на субтитрите", "EnableCinemaMode": "Режим \"Киносалон\"", - "EnableThemeSongs": "Тематични песни", "Ended": "Приключило", "EndsAtValue": "Свършва на {0}", "Episodes": "Епизоди", @@ -130,11 +121,9 @@ "HeaderActiveDevices": "Активни устройства", "HeaderActiveRecordings": "Активни записи", "HeaderActivity": "Дейност", - "HeaderAddScheduledTaskTrigger": "Добавяне на спусък", "HeaderAddToCollection": "Добавяне към колекция", "HeaderAddToPlaylist": "Добавяне към списък", "HeaderAddUpdateImage": "Добавяне/редактиране на изображение", - "HeaderAddUser": "+ Потребител", "HeaderAdditionalParts": "Допълнителни части", "HeaderAdmin": "Администриране", "HeaderAlbumArtists": "Изпълнители на албуми", @@ -142,9 +131,7 @@ "HeaderApiKeys": "ППИ ключове", "HeaderApp": "Програма", "HeaderAudioSettings": "Настройки на звука", - "HeaderBooks": "Книги", "HeaderCastAndCrew": "Артисти и изпълнители", - "HeaderCastCrew": "Артисти и изпълнители", "HeaderCodecProfile": "Профил на кодека", "HeaderContainerProfile": "Профил на контейнера", "HeaderContinueListening": "Продължаване на слушането", @@ -163,7 +150,6 @@ "HeaderFeatureAccess": "Достъп до функции", "HeaderFetchImages": "Свали изображения:", "HeaderForKids": "Детски", - "HeaderForgotPassword": "Забравена парола", "HeaderFrequentlyPlayed": "Често пускани", "HeaderGuideProviders": "Доставчици на справочници", "HeaderIdentification": "Идентификация", @@ -182,7 +168,6 @@ "HeaderLibrarySettings": "Настройки на библиотеката", "HeaderMedia": "Медия", "HeaderMediaFolders": "Медийни папки", - "HeaderMediaInfo": "Сведения", "HeaderMetadataSettings": "Настройки на метаданните", "HeaderMoreLikeThis": "Подобни", "HeaderMusicQuality": "Качество на музиката", @@ -271,7 +256,6 @@ "LabelCustomCertificatePathHelp": "Път до файл с шифровъчен стандарт №12 (PKCS #12), съдържащ сертификат и частен ключ за поддръжка на протокол TLS на собствен домейн.", "LabelCustomCss": "CSS по избор:", "LabelCustomCssHelp": "Добавете собствен стил към уеб-интерфейса.", - "LabelCustomDeviceDisplayName": "Показвано име:", "LabelCustomRating": "Оценка по избор:", "LabelDateAdded": "Дата на добавяне:", "LabelDateTimeLocale": "Местоположение за дата и час:", @@ -279,7 +263,6 @@ "LabelDeviceDescription": "Описание на устройството", "LabelDisplayLanguage": "Език на показване:", "LabelDisplayLanguageHelp": "Превеждането на Емби е текущ проект.", - "LabelDisplayMissingEpisodesWithinSeasons": "Показване на липсващите епизоди в сезоните", "LabelDisplayMode": "Режим на показване:", "LabelDisplayName": "Показвано име:", "LabelDisplayOrder": "Ред на показване:", @@ -361,7 +344,6 @@ "LabelPlayDefaultAudioTrack": "Да се пуска първоначалната звукова пътечка независимо от езика", "LabelPlaylist": "Списък:", "LabelPreferredDisplayLanguage": "Предпочитан език на показване:", - "LabelPreferredDisplayLanguageHelp": "Превеждането на Емби е текущ проект.", "LabelPreferredSubtitleLanguage": "Предпочитан език на субтитрите:", "LabelProfileAudioCodecs": "Звукови кодеци:", "LabelProfileCodecs": "Кодеци:", @@ -394,7 +376,6 @@ "LabelStatus": "Състояние:", "LabelStopWhenPossible": "Спирай, когато е възможно:", "LabelSubtitlePlaybackMode": "Режим на субтитрите:", - "LabelSubtitles": "Субтитри", "LabelSupportedMediaTypes": "Поддържани типове медия:", "LabelTag": "Етикет:", "LabelTextColor": "Цвят на текста:", @@ -403,9 +384,7 @@ "LabelTime": "Време:", "LabelTimeLimitHours": "Времево ограничение (часове):", "LabelTitle": "Заглавие:", - "LabelTranscodingAudioCodec": "Звуков кодек:", "LabelTranscodingTempPathHelp": "Посочете персонализиран път за файлове,които е необходимо да бъдат транскодирани и доставени на клиентите. Оставете празно ,за да се използва мястото по подразбиране.", - "LabelTranscodingVideoCodec": "Видеокодек:", "LabelTriggerType": "Тип на спусъка:", "LabelType": "Вид:", "LabelTypeText": "Текст", @@ -448,7 +427,6 @@ "MessageNoPluginsInstalled": "Нямате инсталирани приставки.", "MessageNothingHere": "Тук няма нищо.", "MessagePleaseEnsureInternetMetadata": "Моля, уверете се че свалянето на метаданни от интернет е разрешено.", - "MessageSettingsSaved": "Настройките са запазени.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Следните местоположения ще бъдат премахнати от библиотеката ви:", "MessageYouHaveVersionInstalled": "В момента имате инсталирана версия {0}.", "MetadataManager": "Управление на метаданните", @@ -490,7 +468,6 @@ "OptionArtist": "Изпълнител", "OptionAscending": "Възходящо", "OptionAuto": "Автоматично", - "OptionAutomatic": "Автоматично", "OptionBlockBooks": "Книги", "OptionBlockMovies": "Филми", "OptionBlockTvShows": "Телевизионни сериали", @@ -634,18 +611,14 @@ "TV": "Телевизор", "TabAccess": "Достъп", "TabAdvanced": "Допълнителни", - "TabAlbumArtists": "Изпълнители на албуми", "TabCatalog": "Каталог", "TabCodecs": "Кодеци", "TabContainers": "Контейнери", "TabDashboard": "Табло", "TabDirectPlay": "Директно пускане", - "TabEpisodes": "Епизоди", - "TabInfo": "Информация", "TabLatest": "Последни", "TabLogs": "Журнали", "TabMusic": "Музика", - "TabMusicVideos": "Музикални клипове", "TabMyPlugins": "Моите приставки", "TabNetworks": "Мрежи", "TabNfoSettings": "Формат за метаданни NFO", @@ -656,12 +629,10 @@ "TabProfile": "Профил", "TabProfiles": "Профили", "TabResponses": "Отговори", - "TabResumeSettings": "Възобнови", "TabScheduledTasks": "Планирани задачи", "TabServer": "Сървър", "TabSettings": "Настройки", "TabStreaming": "Излъчване", - "TabTrailers": "Трейлъри", "TabUpcoming": "Предстоящи", "Tags": "Етикети", "TagsValue": "Етикети: {0}", @@ -833,7 +804,6 @@ "EnableDetailsBannerHelp": "Покажи картинка с банер в горната част на страницата с детайли.", "EnableDetailsBanner": "Банер с подробности", "EnableThemeVideosHelp": "Пускай тематични видеа на заден план ,докато се разглежда библиотеката.", - "EnableThemeVideos": "Тематични видеа", "EnableThemeSongsHelp": "Пускай тематична музика ,докато се разглежда библиотеката.", "EnableStreamLoopingHelp": "Включи това ,ако поточното видео се предава на кратки интервали и е необходимо да се изпращат заявки постоянно.Включването на тази опция без нужда може да породи проблеми.", "EnableStreamLooping": "Автоматично повторение на поточни видеа", @@ -871,7 +841,6 @@ "HeaderFavoriteMovies": "Любими филми", "HeaderFavoriteBooks": "Любими книги", "HeaderExternalIds": "Външни идентификатори:", - "HeaderEpisodes": "Епизоди", "HeaderEnabledFieldsHelp": "Махни отметката ,за да го заключиш и да предотвратиш неговата промяна.", "HeaderDVR": "DVR (Цифрово записващо устройство)", "HeaderDirectPlayProfileHelp": "Добави профили за директно възпроизвеждане ,за да се укаже кои формати може да възпроизвежда устройството.", @@ -970,7 +939,6 @@ "HeaderIdentificationCriteriaHelp": "Въведете пони един критерии.", "HeaderHttpsSettings": "HTTPS настройки", "HeaderHttpHeaders": "HTTP Хедъри", - "HeaderHome": "Главна", "HeaderFetcherSettings": "Настройки на програмата за изтегляне", "HeaderFavoritePlaylists": "Любими списъци", "LabelDeathDate": "Дата на смърт:", @@ -996,7 +964,6 @@ "LabelAudioChannels": "Аудио канали:", "LabelAudioBitrate": "Скорост на предаване на аудиото:", "LabelAudioBitDepth": "Битова дълбочина на аудиото:", - "LabelAudio": "Аудио", "LabelAppNameExample": "Примерно: Sickbeard, Sonarr", "LabelAllowedRemoteAddressesMode": "Режим на филтъра за външни ИП адреси:", "LabelAllowedRemoteAddresses": "Филтър за външни ИП адреси:", @@ -1176,7 +1143,6 @@ "LabelTranscodingFramerate": "Честота на кадрите при транскодиране:", "LabelTranscodes": "Транскодирания:", "LabelTranscodePath": "Път за транскодиране:", - "LabelTranscodingContainer": "Контейнер:", "LabelTrackNumber": "Номер на песен:", "LabelTextBackgroundColor": "Цвят на фона на текста:", "LabelTagline": "Ключова фраза:", diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index e13514fda4..3f11b4f050 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -17,26 +17,20 @@ "AddToPlaylist": "প্লেলিস্টে অ্যাড করুন", "AddToPlayQueue": "প্লে কিউ তে অ্যাড করুন", "AddToCollection": "কালেকশন এ অ্যাড করুন", - "ButtonPlay": "চালান", "ButtonPause": "বিরতি", "ButtonParentalControl": "অভিভাবকীয় নিয়ন্ত্রণ", "ButtonOpen": "খুলুন", "ButtonOk": "আচ্ছা", - "ButtonOff": "বন্ধ", "ButtonNextTrack": "পরবর্তী ট্র্যাক", "ButtonNetwork": "নেটওয়ার্ক", "ButtonMore": "আরও", "ButtonLibraryAccess": "লাইব্রেরি অ্যাক্সেস", "ButtonInfo": "তথ্য", - "ButtonHome": "হোম", "ButtonGuide": "গাইড", "ButtonGotIt": "বুঝেছি", "ButtonFullscreen": "ফুলস্ক্রিন", "ButtonForgotPassword": "পাসওয়ার্ড ভুলে গেছি", - "ButtonFilter": "ফিলটার", "ButtonEditOtherUserPreferences": "এই ব্যবহারকারীর প্রোফাইল, ছবি এবং ব্যক্তিগত পছন্দগুলি এডিট করুন।", - "ButtonEditImages": "ছবিগুলি এডিট করুন", - "ButtonEdit": "এডিট করুন", "ButtonChangeServer": "সার্ভার পরিবর্তন করুন", "ButtonCancel": "বাতিল", "ButtonBack": "অনগ্রসর", @@ -91,7 +85,6 @@ "ButtonRename": "নামান্তর", "ButtonRemove": "সরান", "ButtonRefreshGuideData": "গাইড ডেটা রিফ্রেশ করুন", - "ButtonRefresh": "রিফ্রেশ", "ButtonQuickStartGuide": "দ্রুত শুরু করার নির্দেশাবলী", "CopyStreamURL": "স্ট্রিম ইউআরএল কপি", "ContinueWatching": "দেখা অব্যাহত রাখুন", diff --git a/src/strings/ca.json b/src/strings/ca.json index 413fef4792..c199cb2cbe 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -23,14 +23,10 @@ "ButtonBack": "Darrera", "ButtonCancel": "Cancel·la", "ButtonChangeServer": "Canvia Servidor", - "ButtonEdit": "Edita", - "ButtonEditImages": "Edita les imatges", "ButtonEditOtherUserPreferences": "Edita el perfil, la imatge i les preferències d'aquest usuari.", - "ButtonFilter": "Filtra", "ButtonForgotPassword": "He oblidat la contrasenya", "ButtonGotIt": "Entesos", "ButtonGuide": "Guia", - "ButtonHome": "Inici", "ButtonLibraryAccess": "Accés a la biblioteca", "ButtonManualLogin": "Inici de sessió manual", "ButtonMore": "Més", @@ -39,11 +35,9 @@ "ButtonOpen": "Obre", "ButtonParentalControl": "Control parental", "ButtonPause": "Pausa", - "ButtonPlay": "Reprodueix", "ButtonPreviousTrack": "Pista anterior", "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guia d'inici ràpid", - "ButtonRefresh": "Refresca", "ButtonRefreshGuideData": "Refresca les Dades de la Guia", "ButtonRemove": "Elimina", "ButtonResetEasyPassword": "Reinicia el codi pin senzill", @@ -59,7 +53,6 @@ "ButtonSignOut": "Tanca sessió", "ButtonStop": "Atura", "ButtonSubmit": "Envia", - "ButtonSubtitles": "Subtítols", "ButtonTrailer": "Tràiler", "CancelRecording": "Cancel·la enregistrament", "CancelSeries": "Cancel·la sèrie", @@ -113,22 +106,18 @@ "HeaderActiveDevices": "Dispositius Actius", "HeaderActiveRecordings": "Enregistraments Actius", "HeaderActivity": "Activitat", - "HeaderAddScheduledTaskTrigger": "Afegir Disparador", "HeaderAddToCollection": "Afegir a Col·lecció", "HeaderAddToPlaylist": "Afegir a la llista de reproducció", "HeaderAddUpdateImage": "Afegir/Actualitzar Imatge", - "HeaderAddUser": "Afegir Usuari", "HeaderAdditionalParts": "Parts addicionals", "HeaderApiKey": "Clau Api", "HeaderApiKeys": "Claus Api", "HeaderApiKeysHelp": "Les aplicacions externes requereixen una Api key pere tal de poder-se comunicar amb el Servidor d'Jellyfin. Les claus són emeses iniciant sessió amb un compte d'Jellyfin, o concedint manualment una clau a l'aplicació.", "HeaderAudioSettings": "Preferències d'Àudio", - "HeaderBooks": "Llibres", "HeaderBranding": "Aparença", "HeaderCancelRecording": "Cancel·lar Enregistrament", "HeaderCancelSeries": "Cancel·lar Sèries", "HeaderCastAndCrew": "Repartiment i Equip", - "HeaderCastCrew": "Repartiment i Equip", "HeaderCodecProfile": "Perfil de Còdec", "HeaderConfirmProfileDeletion": "Confirmar Supressió de Perfil", "HeaderConnectToServer": "Connectar al Servidor", @@ -151,7 +140,6 @@ "HeaderExternalIds": "Identificadors externs:", "HeaderFeatureAccess": "Accés a Funcions", "HeaderFetchImages": "Obtingues Imatges:", - "HeaderForgotPassword": "He oblidat la contrasenya", "HeaderFrequentlyPlayed": "Reproduït Freqüentment", "HeaderHttpHeaders": "Capçaleres Http", "HeaderIdentification": "Identificació", @@ -173,7 +161,6 @@ "HeaderLibraryOrder": "Ordre de la llibreria", "HeaderLibrarySettings": "Preferències de la Biblioteca", "HeaderMediaFolders": "Directoris Multimèdia", - "HeaderMediaInfo": "Info Multimèdia", "HeaderMetadataSettings": "Preferències de Metadades", "HeaderMusicVideos": "Vídeos Musicals", "HeaderMyDevice": "El meu dispositiu", @@ -260,7 +247,6 @@ "LabelCurrentPassword": "Contrasenya actual:", "LabelCustomCss": "CSS propi:", "LabelCustomCssHelp": "Aplica el teu propi css a la interfície web.", - "LabelCustomDeviceDisplayName": "Nom a mostrar:", "LabelDateAdded": "Data afegit:", "LabelDay": "Dia:", "LabelDeathDate": "Data de defunció:", @@ -269,7 +255,6 @@ "LabelDeviceDescription": "Descripció del dispositiu", "LabelDiscNumber": "Disc:", "LabelDisplayLanguage": "Idioma de visualització:", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostra els episodis que manquen dins les temporades", "LabelDisplayName": "Nom a mostrar:", "LabelDisplayOrder": "Ordre de visualització:", "LabelDisplaySpecialsWithinSeasons": "Mostra els especials dins les temporades en que van ser emesos", @@ -354,7 +339,6 @@ "LabelPlayDefaultAudioTrack": "Reprodueix la pista d'àudio per defecte independentment de l'idioma", "LabelPlaylist": "Llista de rep.:", "LabelPreferredDisplayLanguage": "Idioma de visualització preferit:", - "LabelPreferredDisplayLanguageHelp": "La traducció d'Jellyfin és un projecte en curs.", "LabelPreferredSubtitleLanguage": "Idioma preferit de subtítols:", "LabelProfileAudioCodecs": "Còdecs d'àudio:", "LabelProfileCodecs": "Còdecs:", @@ -390,10 +374,7 @@ "LabelTimeLimitHours": "Temps límit (en hores):", "LabelTitle": "Títol:", "LabelTrackNumber": "Pista:", - "LabelTranscodingAudioCodec": "Còdec d'àudio", - "LabelTranscodingContainer": "Contenidor:", "LabelTranscodingTempPathHelp": "Aquest directori conté fitxers emprats pel transcodificador. Especifica un directori personalitzat o deixa-ho en blanc per emprar el per defecte dins el directori de dades del servidor.", - "LabelTranscodingVideoCodec": "Còdec de vídeo:", "LabelTriggerType": "Tipus de Disparador:", "LabelType": "Tipus:", "LabelUseNotificationServices": "Empra els següents serveis:", @@ -433,7 +414,6 @@ "MessageNoTrailersFound": "No s'han trobat tràilers. Instal·la el canal Trailer per millorar la teva experiència amb les pel·lícules afegint una llibreria de tràilers d'internet.", "MessageNothingHere": "Res aquí.", "MessagePleaseEnsureInternetMetadata": "Si et plau, assegura't que la descàrrega de metadades d'internet està habilitada.", - "MessageSettingsSaved": "Preferències desades.", "MessageYouHaveVersionInstalled": "Actualment tens la versió {0} instal·lada.", "MetadataManager": "Gestor de Metadades", "MinutesAfter": "minuts després", @@ -607,11 +587,8 @@ "TabContainers": "Contenidors", "TabDashboard": "Tauler de Control", "TabDirectPlay": "Reproducció Directa", - "TabEpisodes": "Episodis", - "TabInfo": "Informació", "TabLatest": "Novetats", "TabMusic": "Música", - "TabMusicVideos": "Vídeos musicals", "TabMyPlugins": "Els meus complements", "TabNetworks": "Cadenes", "TabNfoSettings": "Preferències d'Nfo", @@ -625,7 +602,6 @@ "TabScheduledTasks": "Tasques Programades", "TabServer": "Servidor", "TabSettings": "Preferències", - "TabTrailers": "Tràilers", "TabUpcoming": "Properament", "Tags": "Etiquetes", "TellUsAboutYourself": "Explica'ns sobre tu", @@ -721,7 +697,6 @@ "ChannelNameOnly": "Número de canal", "ChangingMetadataImageSettingsNewContent": "Els canvis als paràmetres de descàrrega de metadades o d'obra d'art només s'apliquen al contingut nou afegit a la biblioteca. Per aplicar els canvis als títols existents, haureu de refrescar les metadades manualment.", "ButtonTogglePlaylist": "Llista de reproducció", - "ButtonOff": "Apagar", "BurnSubtitlesHelp": "Determina si el servidor hauria de gravar els subtítols en transcodificar vídeos. Evitar això millorarà molt el rendiment. Seleccioneu Automàtica per gravar formats basats en imatges (VOBSUB, PGS, SUB, IDX) i certs subtítols ASS o SSA.", "Browse": "Navega", "BoxRear": "Caixa (posterior)", diff --git a/src/strings/cs.json b/src/strings/cs.json index d796f36a43..cf7b3cf2e9 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -43,29 +43,22 @@ "ButtonBack": "Zpět", "ButtonCancel": "Zrušit", "ButtonChangeServer": "Změna serveru", - "ButtonEdit": "Upravit", - "ButtonEditImages": "Editovat obrázky", "ButtonEditOtherUserPreferences": "Editace uživatelského profilu, avataru a osobních preferencí.", - "ButtonFilter": "Filtr", "ButtonForgotPassword": "Zapomenuté heslo", "ButtonFullscreen": "Celá obrazovka", "ButtonGotIt": "Mám to", "ButtonGuide": "Programový průvodce", - "ButtonHome": "Domů", "ButtonLibraryAccess": "Přístup ke knihovně", "ButtonManualLogin": "Manuální přihlášení", "ButtonMore": "Více", "ButtonNetwork": "Síť", "ButtonNextTrack": "Následující stopa", - "ButtonOff": "Vypnout", "ButtonOpen": "Otevřít", "ButtonParentalControl": "Rodičovská kontrola", "ButtonPause": "Pozastavit", - "ButtonPlay": "Přehrát", "ButtonPreviousTrack": "Předchozí stopa", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Rychlý průvodce", - "ButtonRefresh": "Obnovit", "ButtonRefreshGuideData": "Obnovit data programového průvodce", "ButtonRemove": "Odstranit", "ButtonRename": "Přejmenovat", @@ -83,7 +76,6 @@ "ButtonSignOut": "Odhlásit se", "ButtonStop": "Zastavit", "ButtonSubmit": "Potvrdit", - "ButtonSubtitles": "Titulky", "ButtonTrailer": "Upoutávka", "ButtonUninstall": "Odinstalovat", "ButtonWebsite": "Webové stránky", @@ -151,9 +143,7 @@ "EnableNextVideoInfoOverlay": "Zobrazit informaci o následujícím videu během přehrávání", "EnablePhotos": "Zobrazit fotky", "EnablePhotosHelp": "Obrázky budou detekovány a zobrazeny spolu s dalšími multimediálními soubory.", - "EnableThemeSongs": "Tématická hudba na pozadí", "EnableThemeSongsHelp": "Přehrát tématickou hudbu na pozadí při procházení knihovny.", - "EnableThemeVideos": "Tématická videa", "EnableThemeVideosHelp": "Přehrát tématické video na pozadí při procházení knihovny.", "Ended": "Ukončeno", "EndsAtValue": "Končí v {0}", @@ -202,11 +192,9 @@ "HeaderActiveDevices": "Aktivní zařízení", "HeaderActiveRecordings": "Aktivní nahrávání", "HeaderActivity": "Aktivita", - "HeaderAddScheduledTaskTrigger": "Přidat Spouštěč", "HeaderAddToCollection": "Přidat do Kolekce", "HeaderAddToPlaylist": "Přidat do playlistu", "HeaderAddUpdateImage": "Přidat/aktualizovat obrázek", - "HeaderAddUser": "Přidat uživatele", "HeaderAdditionalParts": "Další součásti", "HeaderAdmin": "Administrátor", "HeaderAlbumArtists": "Umělci alba", @@ -217,12 +205,10 @@ "HeaderApp": "Aplikace", "HeaderAudioBooks": "Audio knihy", "HeaderAudioSettings": "Nastavení zvuku", - "HeaderBooks": "Knihy", "HeaderBranding": "Branding", "HeaderCancelRecording": "Zrušit nahrávání", "HeaderCancelSeries": "Ukončit Seriál", "HeaderCastAndCrew": "Herci a obsazení", - "HeaderCastCrew": "Herci a obsazení", "HeaderChannelAccess": "Přístup ke kanálu", "HeaderCodecProfile": "Profil kodeků", "HeaderCodecProfileHelp": "Kodek profily označují omezení daného zařízení pro přehrávání pomocí specifických kodeků. Jestliže je omezení aplikováno, média budou překódovany i v případě, že kodek je nakonfigurován pro přímé přehrávání.", @@ -252,12 +238,10 @@ "HeaderEditImages": "Editovat obrázky", "HeaderEnabledFields": "Povolené pole", "HeaderEnabledFieldsHelp": "Zrušte zaškrtnutí, abyste zabránily změnám dat.", - "HeaderEpisodes": "Epizody", "HeaderError": "Chyba", "HeaderFeatureAccess": "Přístup k funkcím", "HeaderFetchImages": "Načíst obrázky:", "HeaderForKids": "Pro děti", - "HeaderForgotPassword": "Zapomenuté heslo", "HeaderFrequentlyPlayed": "Nejčastěji přehráváno", "HeaderGuideProviders": "Poskytovatelé programových průvodců", "HeaderHttpHeaders": "Http hlavičky", @@ -283,7 +267,6 @@ "HeaderLoginFailure": "Přihlášení selhalo", "HeaderMedia": "Média", "HeaderMediaFolders": "Složky médií", - "HeaderMediaInfo": "Informace o médiu", "HeaderMetadataSettings": "Nastavení metadat", "HeaderMoreLikeThis": "Podobné položky", "HeaderMusicQuality": "Kvalita hudby", @@ -402,7 +385,6 @@ "LabelAppNameExample": "Příklad: Sickbeard, Sonarr", "LabelArtists": "Umělci:", "LabelArtistsHelp": "Více interpretů se odděluje pomocí středníku.", - "LabelAudio": "Zvuk", "LabelAudioLanguagePreference": "Preferovaný jazyk zvuku:", "LabelBindToLocalNetworkAddress": "Vázat na místní síťovou adresu:", "LabelBindToLocalNetworkAddressHelp": "Změní místní IP adresu serveru HTTP. Pokud je ponecháno prázdné, server bude svázán se všemi dostupnými adresami. Změna této hodnoty vyžaduje restartování.", @@ -422,7 +404,6 @@ "LabelCurrentPassword": "Aktuální heslo:", "LabelCustomCss": "Vlastní CSS:", "LabelCustomCssHelp": "Aplikovat vaše vlastní styly webového rozhraní.", - "LabelCustomDeviceDisplayName": "Jméno pro zobrazení:", "LabelCustomDeviceDisplayNameHelp": "Nahradit vlastním názvem zobrazení nebo ponechte prázdné, aby název byl určen zařízením.", "LabelCustomRating": "Vlastní hodnocení:", "LabelDateAdded": "Datum přidání:", @@ -437,7 +418,6 @@ "LabelDiscNumber": "Číslo disku:", "LabelDisplayLanguage": "Jazyk rozhraní:", "LabelDisplayLanguageHelp": "Překlad projektu Jellyfin se neustále vyvíjí.", - "LabelDisplayMissingEpisodesWithinSeasons": "Zobrazit chybějící epizody", "LabelDisplayMode": "Režim zobrazení:", "LabelDisplayName": "Zobrazované jméno:", "LabelDisplayOrder": "Pořadí zobrazení:", @@ -580,7 +560,6 @@ "LabelPostProcessorArguments": "Argumenty příkazové řádky pro následné zpracování:", "LabelPostProcessorArgumentsHelp": "Použij {path} jako cestu k nahrávanému souboru.", "LabelPreferredDisplayLanguage": "Preferovaný jazyk zobrazení:", - "LabelPreferredDisplayLanguageHelp": "Překlad projektu Jellyfin se neustále vyvíjí.", "LabelPreferredSubtitleLanguage": "Preferovaný jazyk titulků:", "LabelProfileAudioCodecs": "Audio kodeky:", "LabelProfileCodecs": "Kodeky:", @@ -632,7 +611,6 @@ "LabelStopping": "Zastavování", "LabelSubtitleFormatHelp": "Příklad: srt", "LabelSubtitlePlaybackMode": "Mód titulků:", - "LabelSubtitles": "Titulky", "LabelSupportedMediaTypes": "Podporované typy médií:", "LabelTagline": "Slogan:", "LabelTextBackgroundColor": "Barva pozadí textu:", @@ -643,12 +621,9 @@ "LabelTimeLimitHours": "Časový limit (v hodinách):", "LabelTitle": "Název:", "LabelTrackNumber": "Číslo stopy:", - "LabelTranscodingAudioCodec": "Audio kodek:", - "LabelTranscodingContainer": "Obal:", "LabelTranscodingTempPathHelp": "Určete vlastní cestu pro překódované soubory odesílané klientům. Chcete-li použít výchozí nastavení serveru, ponechte pole prázdné.", "LabelTranscodingThreadCount": "Počet vláken pro překódování:", "LabelTranscodingThreadCountHelp": "Zadejte maximální počet vláken pro překódování. Snížením počtu vláken se sníží využití procesoru, ale převod nemusí být dostatečně rychlý pro plynulé přehrávání.", - "LabelTranscodingVideoCodec": "Video kodek:", "LabelTriggerType": "Typ úkolu:", "LabelTunerIpAddress": "IP adresa tuneru:", "LabelTunerType": "Typ tuneru:", @@ -745,7 +720,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Pro konfiguraci zásuvného modulu se přihlaste přímo na lokální server.", "MessagePluginInstallDisclaimer": "Zásuvné moduly vytvořené členy komunity jsou skvělým způsobem, jak si zlepšit prožitek pomocí dalších funkcí. Před instalací se prosím seznamte se všemi dopady, které mohou doplňky na server mít, např.: pomalejší skenování knihovny, delší zpracování na pozadí nebo snížená stabilita systému.", "MessageReenableUser": "Viz níže pro znovuzapnutí", - "MessageSettingsSaved": "Nastavení uloženo.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Z vaší knihovny budou odstraněny následující zdroje médií:", "MessageUnableToConnectToServer": "Nejsme schopni se připojit k vybranému serveru právě teď. Prosím, ujistěte se, že je spuštěn a zkuste to znovu.", "MessageUnsetContentHelp": "Obsah je zobrazen pomocí prostých složek. Pro dosažení nejlepších výsledků pomocí správce metadat nastavte typy obsahu pod-složek.", @@ -802,7 +776,6 @@ "OptionArtist": "Umělec", "OptionAscending": "Vzestupně", "OptionAuto": "Automaticky", - "OptionAutomatic": "Automaticky", "OptionAutomaticallyGroupSeries": "Automatické sloučení k seriálu, které jsou ve více složkách", "OptionAutomaticallyGroupSeriesHelp": "Seriály uložené ve více složkách v této knihovně budou automaticky sloučeny do jednoho seriálu.", "OptionBlockBooks": "Knihy", @@ -1014,16 +987,13 @@ "SystemDlnaProfilesHelp": "Systémové profily jsou jen pro čtení. Chcete-li přepsat profil systému, vytvořit vlastní profil zaměřený na stejné zařízení.", "TabAccess": "Přístup", "TabAdvanced": "Pokročilé", - "TabAlbumArtists": "Umělci alba", "TabCatalog": "Katalog", "TabCodecs": "Kodeky", "TabContainers": "Obaly", "TabDashboard": "Nástěnka", - "TabEpisodes": "Epizody", "TabLatest": "Nejnovější", "TabLogs": "Záznamy", "TabMusic": "Hudba", - "TabMusicVideos": "Hudební videa", "TabMyPlugins": "Moje zásuvné moduly", "TabNetworks": "Stanice", "TabNfoSettings": "NFO nastavení", @@ -1034,11 +1004,9 @@ "TabProfile": "Profil", "TabProfiles": "Profily", "TabResponses": "Odpovědi", - "TabResumeSettings": "Obnovit", "TabScheduledTasks": "Naplánované úlohy", "TabSettings": "Nastavení", "TabStreaming": "Streamování", - "TabTrailers": "Upoutávky", "TabUpcoming": "Nadcházející", "Tags": "Tagy", "TellUsAboutYourself": "Řekněte nám něco o sobě", @@ -1296,7 +1264,6 @@ "SubtitleDownloadersHelp": "Povolte a zařaďte preferované stahovače titulků v pořadí podle priority.", "TV": "TV", "TabDirectPlay": "Přímé přehrávání", - "TabInfo": "Info", "TabServer": "Server", "TagsValue": "Tagy: {0}", "ThemeSongs": "Tematická hudba", @@ -1312,7 +1279,6 @@ "Vertical": "Svisle", "ViewPlaybackInfo": "Zobrazení informací o přehrávání", "Whitelist": "Povolit vše kromě výjimek", - "HeaderHome": "Domů", "DashboardOperatingSystem": "Operační systém: {0}", "DashboardArchitecture": "Architektura: {0}", "MessageNoServersAvailable": "Pomocí automatického zjišťování nebyly nalezeny žádné servery.", @@ -1475,5 +1441,6 @@ "SubtitleVerticalPositionHelp": "Číslo řádku, na kterém se zobrazí text. Kladná čísla znamenají směr shora dolů. Záporná čísla zdola nahoru.", "LabelSubtitleVerticalPosition": "Svislé umístění:", "MessageGetInstalledPluginsError": "Při načítání seznamu nainstalovaných zásuvných modulů došlo k chybě.", - "MessagePluginInstallError": "Při instalaci zásuvného modulu došlo k chybě." + "MessagePluginInstallError": "Při instalaci zásuvného modulu došlo k chybě.", + "PlaybackRate": "Rychlost přehrávání" } diff --git a/src/strings/da.json b/src/strings/da.json index 20e237c7fe..e097d93dd2 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -40,26 +40,20 @@ "ButtonBack": "Tilbage", "ButtonCancel": "Annuller", "ButtonChangeServer": "Skift server", - "ButtonEdit": "Rediger", - "ButtonEditImages": "Rediger billeder", "ButtonEditOtherUserPreferences": "Rediger denne brugers profil, billede og personlige indstillinger.", "ButtonForgotPassword": "Glemt Adgangskode", "ButtonFullscreen": "Fuld skærm", "ButtonGotIt": "Forstået", - "ButtonHome": "Hjem", "ButtonLibraryAccess": "Biblioteksadgang", "ButtonManualLogin": "Manuel Login", "ButtonMore": "Mere", "ButtonNetwork": "Netværk", "ButtonNextTrack": "Næste spor", - "ButtonOff": "Fra", "ButtonOpen": "Åben", "ButtonParentalControl": "Forældrekontrol", - "ButtonPlay": "Afspil", "ButtonPreviousTrack": "Forrige spor", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Hurtig-start guide", - "ButtonRefresh": "Opdater", "ButtonRefreshGuideData": "Opdater Guide data", "ButtonRemove": "Fjern", "ButtonRename": "Omdøb", @@ -77,7 +71,6 @@ "ButtonSignIn": "Log Ind", "ButtonSignOut": "Log ud", "ButtonSubmit": "Indsend", - "ButtonSubtitles": "Undertekster", "ButtonUninstall": "Afinstaller", "ButtonWebsite": "Hjemmeside", "CancelRecording": "Annuller optagelse", @@ -169,11 +162,9 @@ "HeaderActiveDevices": "Aktive enheder", "HeaderActiveRecordings": "Aktive optagelser", "HeaderActivity": "Aktivitet", - "HeaderAddScheduledTaskTrigger": "Tilføj udløser", "HeaderAddToCollection": "Tilføj til samling", "HeaderAddToPlaylist": "Tilføj til afspilningsliste", "HeaderAddUpdateImage": "Tilføj/opdater billede", - "HeaderAddUser": "Tilføj bruger", "HeaderAdditionalParts": "Andre stier", "HeaderAlert": "Advarsel", "HeaderAllowMediaDeletionFrom": "Tillad Media Sletning Fra", @@ -182,11 +173,9 @@ "HeaderApiKeysHelp": "Eksterne applikationer skal have en API-nøgle for at kunne kommunikere med Jellyfin. Nøgler udstedes ved at logge ind med en Jellyfin konto, eller ved manuelt at tildele applikationen en nøgle.", "HeaderAudioSettings": "Lydindstillinger", "HeaderBlockItemsWithNoRating": "Klokér titler uden eller med ukendt bedømmelses information:", - "HeaderBooks": "Bøger", "HeaderCancelRecording": "Annuller Optagelse", "HeaderCancelSeries": "Annuller Serie", "HeaderCastAndCrew": "Medvirkende", - "HeaderCastCrew": "Medvirkende", "HeaderChannelAccess": "Adgang til kanaler", "HeaderChapterImages": "Kapitel Billeder", "HeaderCodecProfile": "Codec profil", @@ -218,14 +207,12 @@ "HeaderEditImages": "Rediger billeder", "HeaderEnabledFields": "Aktivér Felter", "HeaderEnabledFieldsHelp": "Fjern fluebenet fra et felt for at låse det og forhindre dets data fra at blive ændret.", - "HeaderEpisodes": "Episoder", "HeaderError": "Fejl", "HeaderExternalIds": "Eksterne ID'er:", "HeaderFeatureAccess": "Adgang til funktioner", "HeaderFetchImages": "Hent billeder:", "HeaderFetcherSettings": "Henter indstillinger", "HeaderForKids": "For Børn", - "HeaderForgotPassword": "Glemt adgangskode", "HeaderFrequentlyPlayed": "Ofte afspillet", "HeaderGuideProviders": "Guide Udbydere", "HeaderHttpHeaders": "HTTP Headers", @@ -253,7 +240,6 @@ "HeaderLoginFailure": "Login fejl", "HeaderMedia": "Medier", "HeaderMediaFolders": "Mediemapper", - "HeaderMediaInfo": "Medieinformation", "HeaderMetadataSettings": "Indstillinger for metadata", "HeaderMoreLikeThis": "Mere Som Denne", "HeaderMusicVideos": "Musikvideoer", @@ -388,7 +374,6 @@ "LabelCustomCertificatePathHelp": "Sti til PKCS #12 fil indeholdende et certifikat og privat nøgle for at aktivere TLS understøttelse på et brugerdefineret domæne.", "LabelCustomCss": "Brugerdefineret CSS:", "LabelCustomCssHelp": "Anvend din egen stil til webinterfacet.", - "LabelCustomDeviceDisplayName": "Visningsnavn:", "LabelCustomDeviceDisplayNameHelp": "Angiv en brugerdefineret navn. hvis der ikke angives et navn, bruges det navn enheden sender.", "LabelCustomRating": "Brugerdefineret bedømmelse:", "LabelDateAdded": "Dato for tilføjelse:", @@ -401,7 +386,6 @@ "LabelDeviceDescription": "Beskrivelse af enhed", "LabelDidlMode": "DIDL tilstand:", "LabelDiscNumber": "Disk-nummer:", - "LabelDisplayMissingEpisodesWithinSeasons": "Vis manglende episoder i sæsoner", "LabelDisplayName": "Visningsnavn:", "LabelDisplayOrder": "Visningsorden:", "LabelDisplaySpecialsWithinSeasons": "Vis specialepisoder sammen med den sæson de blev sent i", @@ -543,7 +527,6 @@ "LabelPostProcessorArguments": "Kommandolinjeargumenter til efterbehandler:", "LabelPostProcessorArgumentsHelp": "Benyt {path} som stien til optagelsesfilen.", "LabelPreferredDisplayLanguage": "Foretrukket sprog til visning:", - "LabelPreferredDisplayLanguageHelp": "Oversættelse af Jellyfin er et løbende projekt.", "LabelProfileAudioCodecs": "Lyd codecs:", "LabelProfileCodecsHelp": "Adskil med komma. Kan efterlades tom for at gælde for alle codecs.", "LabelProfileContainersHelp": "Adskil med komma. Kan efterlades tom for at gælde for alle containere.", @@ -595,7 +578,6 @@ "LabelTimeLimitHours": "Tidsgrænse (timer):", "LabelTitle": "Titel:", "LabelTrackNumber": "Spor nummer:", - "LabelTranscodingAudioCodec": "Lyd codec:", "LabelTranscodingTempPathHelp": "Definér en bugerdefineret sti til transkodede filer til klienter. Lad den stå tom for at bruge standardmappen i serverens datamappe.", "LabelTranscodingThreadCount": "Antal af omkodningstråde:", "LabelTranscodingThreadCountHelp": "Vælg det maksimale antal af tråde der bruges under transcoding. Reduktion af antallet af tråde sænker CPU-forbrug, men resulterer muligvis i at konverteringer ikke foregår hurtigt nok til en jævn afspilning.", @@ -684,7 +666,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "For at konfigurerer dette plugin log da venligst direkte ind på din lokale server.", "MessagePluginInstallDisclaimer": "Plugins fremstillet af medlemmer fra Jellyfin-fællesskabet er en alle tiders måde at forbedre din oplevelse af Jellyfin med yderligere features og fordele. Før installation, bedes du venligst være opmærksom på de effekter de kan have på din Jellyfin Server; så som lange scantider på biblioteker, yderligere baggrundsbehandling og forringet systemstabilitet.", "MessageReenableUser": "Se nedenfor om genaktivering", - "MessageSettingsSaved": "Indstillinger er gemt.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Følgende medieplaceringer fjernes fra dit bibliotek:", "MessageUnableToConnectToServer": "Vi kan ikke forbinde til den valgte server på nuværende tidspunkt. Sikrer dig venligst at serveren kører og prøv igen.", "MessageUnsetContentHelp": "Indhold vil blive vist som almindelige mapper. For det bedste resultat benyt metadata manageren til at vælge indholdstypen i undermapper.", @@ -931,15 +912,12 @@ "SystemDlnaProfilesHelp": "Systemprofiler kan ikke overskrives. Ændringer i en systemprofil vil blive gemt i en ny brugerdefineret profil.", "TabAccess": "Adgang", "TabAdvanced": "Avanceret", - "TabAlbumArtists": "Album-artister", "TabCatalog": "Katalog", "TabContainers": "Containere", "TabDashboard": "Betjeningspanel", "TabDirectPlay": "Direkte afspilning", - "TabEpisodes": "Episoder", "TabLatest": "Seneste", "TabMusic": "Musik", - "TabMusicVideos": "Musikvideoer", "TabMyPlugins": "Mine tilføjelser", "TabNetworks": "Netværk", "TabNfoSettings": "NFO Indstillinger", @@ -950,10 +928,8 @@ "TabProfile": "Profil", "TabProfiles": "Profiler", "TabResponses": "Svar", - "TabResumeSettings": "Genoptag", "TabScheduledTasks": "Planlagte opgaver", "TabSettings": "Indstillinger", - "TabTrailers": "Trailere", "TabUpcoming": "Kommende", "TellUsAboutYourself": "Fortæl os lidt om dig selv", "ThisWizardWillGuideYou": "Denne guide vil hjælpe dig igennem opsætningen. For at begynde, vælg venligst dit fortrukne sprog.", @@ -1027,7 +1003,6 @@ "Box": "Boks", "BoxRear": "Boks (bagside)", "BurnSubtitlesHelp": "Bestemmer om serveren skal brænde undertekster, når der afspilles transcoding videoer. Undgå dette vil forbedre ydelsen meget. Vælg Auto for at brænde billedbaserede formater (VOBSUB, PGS, SUB, IDX) og bestemte ASS- eller SSA-undertekster.", - "ButtonFilter": "Filter", "ButtonGuide": "Vejledning", "ButtonInfo": "Information", "ButtonOk": "Ok", @@ -1073,9 +1048,7 @@ "EnableExternalVideoPlayersHelp": "En ekstern afspiller menu vil blive vist når video afspilning starter.", "EnableNextVideoInfoOverlay": "Vis næste video information mens der afspilles", "EnableNextVideoInfoOverlayHelp": "I slutningen af en video, vis information om den næste video i nuværende afspilningsliste.", - "EnableThemeSongs": "Tema sange", "EnableThemeSongsHelp": "Afspil tema sange i baggrunden mens man gennemser biblioteket.", - "EnableThemeVideos": "Tema videoer", "EnableThemeVideosHelp": "Afspil tema videoer i baggrunden mens man gennemser biblioteket.", "Episodes": "Afsnit", "ErrorDeletingItem": "Der skete en fejl ved sletningen af mediet fra Jellyfin Server. Tjek venligst at Jellyfin Server har skrive adgang til mediemappen og prøv igen.", @@ -1118,7 +1091,6 @@ "Horizontal": "Horisontalt", "Label3DFormat": "3D format:", "LabelAlbum": "Album:", - "LabelAudio": "Lyd", "LabelBlockContentWithTags": "Blokér filer med etiketter:", "LabelBurnSubtitles": "Brænd undertekster:", "LabelCache": "Cache:", @@ -1155,15 +1127,12 @@ "LabelSortBy": "Sortér efter:", "LabelSortOrder": "Sorteringsorden:", "LabelStatus": "Status:", - "LabelSubtitles": "Undertekster", "LabelTVHomeScreen": "TV modus hjemmeskærm:", "LabelTag": "Mærke:", "LabelTagline": "Taglinje:", "LabelTextBackgroundColor": "Tekst baggrundsfarve:", "LabelTextColor": "Tekstfarve:", "LabelTextSize": "Tekststørrelse:", - "LabelTranscodingContainer": "Beholder:", - "LabelTranscodingVideoCodec": "Video codec:", "LabelType": "Type:", "LabelVersion": "Version:", "LabelVideo": "Video", @@ -1209,7 +1178,6 @@ "OptionAlbum": "Album", "OptionArtist": "Kunstner", "OptionAuto": "Automatisk", - "OptionAutomatic": "Automatisk", "OptionBanner": "Banner", "OptionBluray": "Blu-Ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", @@ -1260,7 +1228,6 @@ "Suggestions": "Forslag", "TV": "TV", "TabCodecs": "Codeks", - "TabInfo": "Information", "TabLogs": "Log", "TabServer": "Server", "TabStreaming": "Streamer", @@ -1294,7 +1261,6 @@ "HeaderFavoriteArtists": "Favoritkunstnere", "HeaderFavoriteSongs": "Favoritsange", "HeaderFavoriteVideos": "Favoritvideoer", - "HeaderHome": "Hjem", "LabelServerName": "Server navn:", "LabelUserLoginAttemptsBeforeLockout": "Fejlede loginforsøg før bruger lukkes ude:", "ButtonAddImage": "Tilføj billede", diff --git a/src/strings/de.json b/src/strings/de.json index 84a34bc9cf..756aa99ab4 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -55,8 +55,6 @@ "ButtonBack": "Zurück", "ButtonCancel": "Abbrechen", "ButtonChangeServer": "Wechsel Server", - "ButtonEdit": "Bearbeiten", - "ButtonEditImages": "Bearbeite Bilder", "ButtonEditOtherUserPreferences": "Bearbeite dieses Benutzerprofil, das Benutzerbild und die persönlichen Einstellungen.", "ButtonForgotPassword": "Passwort vergessen", "ButtonFullscreen": "Vollbild", @@ -67,14 +65,11 @@ "ButtonMore": "Mehr", "ButtonNetwork": "Netzwerk", "ButtonNextTrack": "Nächstes Stück", - "ButtonOff": "Ausschalten", "ButtonOpen": "Öffnen", "ButtonParentalControl": "Kindersicherung", - "ButtonPlay": "Abspielen", "ButtonPreviousTrack": "Vorheriges Stück", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Schnellstart Anleitung", - "ButtonRefresh": "Aktualisieren", "ButtonRefreshGuideData": "Aktualisiere TV-Programmdaten", "ButtonRemove": "Entfernen", "ButtonRename": "Umbenennen", @@ -94,7 +89,6 @@ "ButtonSignOut": "Abmelden", "ButtonStop": "Stopp", "ButtonSubmit": "Bestätigen", - "ButtonSubtitles": "Untertitel", "ButtonUninstall": "Deinstallieren", "CancelRecording": "Aufnahme abbrechen", "CancelSeries": "Serien abbrechen", @@ -176,9 +170,7 @@ "EnablePhotosHelp": "Bilder werden erkannt und neben anderen Mediendateien angezeigt.", "EnableStreamLooping": "Auto-Schleife Live Streams", "EnableStreamLoopingHelp": "Aktivieren, wenn Live Streams nur ein paar Sekunden Daten enthalten und ständig angefragt werden müssen. Kann zu Problemen führen wenn aktiviert, obwohl nicht nötig.", - "EnableThemeSongs": "Titelmelodien", "EnableThemeSongsHelp": "Titelmusik wird während des Blätterns durch die Bibliothek im Hintergrund abgespielt.", - "EnableThemeVideos": "Titelvideos", "EnableThemeVideosHelp": "Titelvideos werden während des Blätterns durch die Bibliothek im Hintergrund abgespielt.", "Ended": "Beendent", "EndsAtValue": "Endet um {0}", @@ -230,11 +222,9 @@ "HeaderActiveDevices": "Aktive Geräte", "HeaderActiveRecordings": "Aktive Aufnahmen", "HeaderActivity": "Aktivitäten", - "HeaderAddScheduledTaskTrigger": "Auslöser hinzufügen", "HeaderAddToCollection": "Zu Sammlung hinzufügen", "HeaderAddToPlaylist": "Zur Wiedergabeliste hinzufügen", "HeaderAddUpdateImage": "Bild hinzufügen/aktualisieren", - "HeaderAddUser": "Benutzer anlegen", "HeaderAdditionalParts": "Zusätzliche Teile", "HeaderAlbumArtists": "Album-Interpreten", "HeaderAlert": "Alarm", @@ -246,12 +236,10 @@ "HeaderAudioBooks": "Hörbücher", "HeaderAudioSettings": "Audioeinstellungen", "HeaderBlockItemsWithNoRating": "Blockiere Inhalte mit keiner oder nicht erkannter Altersfreigabe:", - "HeaderBooks": "Bücher", "HeaderBranding": "Branding / CSS", "HeaderCancelRecording": "Aufnahme abbrechen", "HeaderCancelSeries": "Serie abbrechen", "HeaderCastAndCrew": "Besetzung & Mitwirkende", - "HeaderCastCrew": "Besetzung & Crew", "HeaderChannelAccess": "Channelzugriff", "HeaderChapterImages": "Kapitel Bilder", "HeaderCodecProfile": "Codec Profil", @@ -285,14 +273,12 @@ "HeaderEditImages": "Bilder bearbeiten", "HeaderEnabledFields": "Aktiviere Felder", "HeaderEnabledFieldsHelp": "Wähle Felder ab um das Ändern von Daten zu verhindern.", - "HeaderEpisodes": "Episoden", "HeaderError": "Fehler", "HeaderExternalIds": "Externe IDs:", "HeaderFeatureAccess": "Funktionszugriff", "HeaderFetchImages": "Bilder abrufen:", "HeaderFetcherSettings": "Fetcher Einstellungen", "HeaderForKids": "Für Kinder", - "HeaderForgotPassword": "Passwort vergessen", "HeaderFrequentlyPlayed": "Oft gesehen", "HeaderGuideProviders": "Fernsehprogramm Quellen", "HeaderIdentification": "Identifizierung", @@ -320,7 +306,6 @@ "HeaderLoginFailure": "Login Fehler", "HeaderMedia": "Medien", "HeaderMediaFolders": "Medienverzeichnisse", - "HeaderMediaInfo": "Medieninformation", "HeaderMetadataSettings": "Metadaten Einstellungen", "HeaderMoreLikeThis": "Mehr wie dieses", "HeaderMusicQuality": "Musikqualität", @@ -472,7 +457,6 @@ "LabelCustomCertificatePathHelp": "Pfad zu einer PKCS #12 Datei die ein Zertifikat und einen privaten Schlüssel enthält, um TLS Unterstützung für eine eigene Domain zu aktivieren.", "LabelCustomCss": "Benutzerdefiniertes CSS:", "LabelCustomCssHelp": "Wende deine eigenen benutzerdefinierte Styles auf die Weboberfläche an.", - "LabelCustomDeviceDisplayName": "Angezeigter Name:", "LabelCustomDeviceDisplayNameHelp": "Lege einen individuellen Anzeigenamen fest oder lasse das Feld leer, um den vom gerät übermittelten Namen zu nutzen.", "LabelCustomRating": "Eigene Bewertung:", "LabelDateAdded": "Hinzugefügt am:", @@ -489,7 +473,6 @@ "LabelDiscNumber": "Discnummer:", "LabelDisplayLanguage": "Anzeigesprache:", "LabelDisplayLanguageHelp": "Die Übersetzung von Jellyfin ist ein laufendes Projekt.", - "LabelDisplayMissingEpisodesWithinSeasons": "Zeige fehlende Episoden innerhalb von Staffeln", "LabelDisplayMode": "Bildschirmmodus:", "LabelDisplayName": "Anzeige Name:", "LabelDisplayOrder": "Anzeigereihenfolge:", @@ -640,7 +623,6 @@ "LabelPostProcessorArguments": "Nachbearbeitung Kommandozeilen-Argumente:", "LabelPostProcessorArgumentsHelp": "Verwende {path} als das Verzeichnis für Aufnahmen.", "LabelPreferredDisplayLanguage": "Bevorzugte Anzeigesprache:", - "LabelPreferredDisplayLanguageHelp": "Die Übersetzung von Jellyfin ist ein laufendes Projekt.", "LabelPreferredSubtitleLanguage": "Bevorzugte Untertitelsprache:", "LabelProfileAudioCodecs": "Audio Codecs:", "LabelProfileCodecsHelp": "Getrennt durch Komma. Leerlassen, um auf alle Codecs anzuwenden.", @@ -697,7 +679,6 @@ "LabelSubtitleDownloaders": "Untertitel Downloader:", "LabelSubtitleFormatHelp": "Beispiel: srt", "LabelSubtitlePlaybackMode": "Untertitelmodus:", - "LabelSubtitles": "Untertitel", "LabelSupportedMediaTypes": "Unterstüzte Medientypen:", "LabelTVHomeScreen": "TV-Mode Startseite:", "LabelTextBackgroundColor": "Hintergrundfarbe des Textes:", @@ -708,11 +689,9 @@ "LabelTimeLimitHours": "Zeitlimit (Stunden):", "LabelTitle": "Titel:", "LabelTrackNumber": "Stück Nummer:", - "LabelTranscodingAudioCodec": "Audio Codec:", "LabelTranscodingTempPathHelp": "Wähle einen eigenen Pfad für transkodierte Dateien. Lasse das Feld frei, um den Standardspeicherort zu nutzen.", "LabelTranscodingThreadCount": "Anzahl Transkodierungs-Threads:", "LabelTranscodingThreadCountHelp": "Legen Sie die maximale Anzahl von Transkodierungs-Threads fest. Das Reduzieren der Thread-Anzahl verringert die CPU Auslastung, wird aber möglicherweise die Transkodierung nicht schnell genug für eine störungsfrei Wiedergabe ermöglichen.", - "LabelTranscodingVideoCodec": "Video Codec:", "LabelTriggerType": "Auslöser Typ:", "LabelTunerIpAddress": "Tuner IP Adresse:", "LabelTunerType": "Tuner Typ:", @@ -810,7 +789,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Melde dich bitte direkt an deinem lokalen Server an, um dieses Plugin konfigurieren zu können.", "MessagePluginInstallDisclaimer": "Plugins aus der Community sind eine gute Möglichkeit um dein Erlebnis mit weiteren Funktionen und Vorteilen aufzuwerten. Bevor du diese installierst, sei dir den daraus resultierenden möglichen Umständen für deinen Server 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.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Die folgenden Medienverzeichnisse werden aus der 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.", @@ -1092,15 +1070,12 @@ "SystemDlnaProfilesHelp": "Systemprofile sind schreibgeschützt. Änderungen an einem Systemprofil werden als neues benutzerdefiniertes Profil gespeichert.", "TabAccess": "Zugang", "TabAdvanced": "Erweitert", - "TabAlbumArtists": "Album-Interpreten", "TabCatalog": "Katalog", "TabContainers": "Container", "TabDashboard": "Übersicht", "TabDirectPlay": "Direktwiedergabe", - "TabEpisodes": "Episoden", "TabLatest": "Neueste", "TabMusic": "Musik", - "TabMusicVideos": "Musikvideos", "TabMyPlugins": "Meine Plugins", "TabNetworks": "Sendergruppen", "TabNfoSettings": "NFO Einstellungen", @@ -1110,10 +1085,8 @@ "TabProfile": "Profil", "TabProfiles": "Profile", "TabResponses": "Antworten", - "TabResumeSettings": "Fortsetzen", "TabScheduledTasks": "Geplante Aufgaben", "TabSettings": "Einstellungen", - "TabTrailers": "Trailer", "TabUpcoming": "Bevorstehend", "TellUsAboutYourself": "Sagen Sie uns etwas über sich selbst", "ThemeSongs": "Titelsongs", @@ -1176,8 +1149,6 @@ "Auto": "Auto", "Banner": "Banner", "Blacklist": "Sperrliste", - "ButtonFilter": "Filter", - "ButtonHome": "Startseite", "ButtonOk": "Ok", "ButtonPause": "Pause", "ButtonStart": "Start", @@ -1202,7 +1173,6 @@ "Home": "Startseite", "Horizontal": "Horizontal", "LabelAlbum": "Album:", - "LabelAudio": "Audio", "LabelCache": "Cache:", "LabelFormat": "Format:", "LabelH264Crf": "H264 Encodierungs-CRF:", @@ -1226,7 +1196,6 @@ "Normal": "Normal", "LabelDynamicExternalId": "{0} Id:", "LabelStatus": "Status:", - "LabelTranscodingContainer": "Container:", "Live": "Live", "LiveTV": "Live-TV", "Logo": "Logo", @@ -1238,7 +1207,6 @@ "Option3D": "3D", "OptionAlbum": "Album", "OptionAuto": "Auto", - "OptionAutomatic": "Auto", "OptionBluray": "Blu-ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionDownloadBannerImage": "Banner", @@ -1259,7 +1227,6 @@ "Studios": "Studios", "TV": "TV", "TabCodecs": "Codecs", - "TabInfo": "Info", "TabLogs": "Protokoll", "TabPlugins": "Plugins", "TabServer": "Server", @@ -1311,7 +1278,6 @@ "OptionLoginAttemptsBeforeLockoutHelp": "Null (0) bedeutet den Standardwert von drei Versuchen für normale, sowie fünf für Administrator-Benutzer zu übernehmen. Ein Wert von -1 deaktiviert die Funktion.", "PasswordResetProviderHelp": "Wählen Sie einen Password Reset Provider, der verwendet werden soll, wenn dieser Benutzer ein Passwort zurücksetzen möchte.", "Box": "Box", - "HeaderHome": "Startseite", "LabelAudioCodec": "Audiocodec:", "LabelAudioChannels": "Audiokanäle:", "HeaderTypeImageFetchers": "{0} Bildquellen", @@ -1475,5 +1441,6 @@ "Preview": "Vorschau", "LabelSubtitleVerticalPosition": "Vertikale Position:", "MessageGetInstalledPluginsError": "Beim Abrufen der Liste der derzeit installierten Plugins ist ein Fehler aufgetreten.", - "MessagePluginInstallError": "Bei der Installation des Plugins ist ein Fehler aufgetreten." + "MessagePluginInstallError": "Bei der Installation des Plugins ist ein Fehler aufgetreten.", + "PlaybackRate": "Wiedergabegeschwindigkeit" } diff --git a/src/strings/el.json b/src/strings/el.json index 56d19b0c4a..7ee61d2b62 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -53,15 +53,11 @@ "ButtonBack": "Πίσω", "ButtonCancel": "Ακύρωση", "ButtonChangeServer": "Αλλαγή Διακομιστή", - "ButtonEdit": "Επεξεργασία", - "ButtonEditImages": "Επεξεργασία εικόνων", "ButtonEditOtherUserPreferences": "Επεξεργαστείτε το προφίλ, την εικόνα και τις προσωπικές προτιμήσεις αυτού του χρήστη.", - "ButtonFilter": "Φίλτρο", "ButtonForgotPassword": "Ξέχασα τον κωδικό", "ButtonFullscreen": "Πλήρης οθόνη", "ButtonGotIt": "Το κατάλαβα", "ButtonGuide": "Οδηγός", - "ButtonHome": "Αρχική", "ButtonInfo": "Πληροφορία", "ButtonLibraryAccess": "Πρόσβαση στη βιβλιοθήκη", "ButtonManualLogin": "Χειροκίνητη Είσοδος", @@ -70,11 +66,9 @@ "ButtonOpen": "Άνοιγμα", "ButtonParentalControl": "Γονικός έλεγχος", "ButtonPause": "Παύση", - "ButtonPlay": "Αναπαραγωγή", "ButtonPreviousTrack": "Προηγουμενο", "ButtonProfile": "Προφίλ", "ButtonQuickStartGuide": "Οδηγός Γρήγορης Εκκίνησης", - "ButtonRefresh": "Ανανέωση", "ButtonRefreshGuideData": "Ανανέωση Δεδομένων Οδηγού", "ButtonRemove": "Κατάργηση", "ButtonRename": "Μετονομασία", @@ -95,7 +89,6 @@ "ButtonStart": "Έναρξη", "ButtonStop": "Διακοπή", "ButtonSubmit": "υποβολή", - "ButtonSubtitles": "Υπότιτλοι", "ButtonTrailer": "Τρέϊλερ", "ButtonUninstall": "Απεγκατάσταση", "ButtonWebsite": "Ιστοσελίδα", @@ -177,9 +170,7 @@ "EnableHardwareEncoding": "Ενεργοποίηση αποκωδικοποίησης υλικού", "EnableNextVideoInfoOverlay": "Ενεργοποιήστε τις επόμενες πληροφορίες βίντεο κατά την αναπαραγωγή", "EnableNextVideoInfoOverlayHelp": "Στο τέλος ενός βίντεο, εμφανίστε πληροφορίες σχετικά με το επόμενο βίντεο που εμφανίζεται στην τρέχουσα λίστα αναπαραγωγής.", - "EnableThemeSongs": "Ενεργοποίηση Θεματικών Τραγουδιών", "EnableThemeSongsHelp": "Αν είναι ενεργοποιημένη, τα τραγούδια θεμάτων θα αναπαραχθούν στο παρασκήνιο κατά την περιήγηση στη βιβλιοθήκη.", - "EnableThemeVideos": "Ενεργοποίηση βίντεο θέματος", "EnableThemeVideosHelp": "Αν είναι ενεργοποιημένη, τα βίντεο θεμάτων θα αναπαραχθούν στο παρασκήνιο κατά την περιήγηση στη βιβλιοθήκη.", "Ended": "Τέλος", "EndsAtValue": "Τελειώνει σε {0}", @@ -224,11 +215,9 @@ "HeaderActiveDevices": "Ενεργές Συσκευές", "HeaderActiveRecordings": "Ενεργές εγγραφές", "HeaderActivity": "Δραστηριότητα", - "HeaderAddScheduledTaskTrigger": "Προσθήκη διακόπτη", "HeaderAddToCollection": "Πρόσθεσε στη Συλλογή", "HeaderAddToPlaylist": "Πρόσθεσε σε Λίστα", "HeaderAddUpdateImage": "Προσθήκη / Ενημέρωση εικόνας", - "HeaderAddUser": "Προσθήκη Χρήστη", "HeaderAdditionalParts": "Πρόσθετα Μέρη", "HeaderAdmin": "Διαχειριστής", "HeaderAlbumArtists": "Καλλιτέχνες του Άλμπουμ", @@ -241,11 +230,9 @@ "HeaderAudioBooks": "Μουσικά Βιβλία", "HeaderAudioSettings": "Ρυθμίσεις Ήχου", "HeaderBlockItemsWithNoRating": "Αποκλεισμός στοιχείων χωρίς ή μη αναγνωρισμένων πληροφοριών αξιολόγησης:", - "HeaderBooks": "Βιβλία", "HeaderCancelRecording": "Ακύρωση Εγγραφής", "HeaderCancelSeries": "Ακύρωση Σειράς", "HeaderCastAndCrew": "Ηθοποιοί και Συνεργείο", - "HeaderCastCrew": "Ηθοποιοί και συνεργείο", "HeaderCodecProfileHelp": "Τα προφίλ κωδικοποιητή υποδεικνύουν τους περιορισμούς μιας συσκευής κατά την αναπαραγωγή συγκεκριμένων κωδικοποιητών. Εάν ισχύει περιορισμός, τότε τα μέσα θα κωδικοποιηθούν, ακόμα και αν ο κωδικοποιητής έχει ρυθμιστεί για άμεση αναπαραγωγή.", "HeaderConfigureRemoteAccess": "Ρύθμιση απομακρυσμένης πρόσβασης", "HeaderConfirmPluginInstallation": "Επιβεβαιώστε την εγκατάσταση της προσθήκης", @@ -271,13 +258,11 @@ "HeaderEditImages": "Επεξεργασία εικόνων", "HeaderEnabledFields": "Ενεργά Πεδία", "HeaderEnabledFieldsHelp": "Καταργήστε την επιλογή ενός πεδίου για να το κλειδώσετε και να αποτρέψετε την αλλαγή των δεδομένων του.", - "HeaderEpisodes": "Επεισόδια", "HeaderError": "Σφάλμα", "HeaderExternalIds": "Εξωτερικά ID:", "HeaderFeatureAccess": "Πρόσβαση χαρακτηριστικών", "HeaderFetchImages": "Λήψη εικόνων:", "HeaderForKids": "Για τα Παιδιά", - "HeaderForgotPassword": "Ξέχασα τον κωδικό", "HeaderFrequentlyPlayed": "Συχνά έπαιξε", "HeaderIdentificationCriteriaHelp": "Καταχωρήστε τουλάχιστον ένα κριτήριο αναγνώρισης.", "HeaderIdentificationHeader": "Αναγνωριστικό Header", @@ -301,7 +286,6 @@ "HeaderLoginFailure": "Αποτυχία εισόδου", "HeaderMedia": "Πολυμέσα", "HeaderMediaFolders": "Φάκελοι Πολυμέσων", - "HeaderMediaInfo": "Πληροφορίες πολυμέσων", "HeaderMetadataSettings": "Ρυθμίσεις μεταδεδομένων", "HeaderMoreLikeThis": "Περισσότερα Σαν Αυτό", "HeaderMusicQuality": "Ποιότητα Μουσικής", @@ -410,7 +394,6 @@ "LabelAppNameExample": "Παράδειγμα: Sickbeard, NzbDrone", "LabelArtists": "Καλλιτέχνες:", "LabelArtistsHelp": "Ξεχωρίστε πολλαπλά χρησιμοποιώντας;", - "LabelAudio": "Ήχος", "LabelAudioLanguagePreference": "Προτιμώμενη γλώσσα ήχου:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Αυτόματη ανανέωση μεταδεδομένων από το internet:", "LabelBirthDate": "Ημερομηνία Γενεθλίων:", @@ -433,7 +416,6 @@ "LabelCustomCertificatePathHelp": "Προσθέστε το δικό σας αρχείο .pfx πιστοποιητικού ssl.", "LabelCustomCss": "Προσαρμοσμένο css:", "LabelCustomCssHelp": "Εφαρμόστε το δικό σας προσαρμοσμένο css στην διεπαφή ιστού.", - "LabelCustomDeviceDisplayName": "Εμφάνιση ονόματος:", "LabelCustomRating": "Προσαρμοσμένη αξιολόγηση:", "LabelDateAdded": "Ημερνία προσθήκης:", "LabelDateTimeLocale": "Ημερομηνία τοπική ώρα:", @@ -446,7 +428,6 @@ "LabelDiscNumber": "Αριθμός Δίσκου:", "LabelDisplayLanguage": "Γλώσσα Εμφάνισης:", "LabelDisplayLanguageHelp": "Η μετάφραση του Jellyfin είναι ένα συνεχιζόμενο έργο.", - "LabelDisplayMissingEpisodesWithinSeasons": "Εμφάνιση επεισοδίων που λείπουν από την σαιζόν", "LabelDisplayMode": "Λειτουργία προβολής:", "LabelDisplayName": "Εμφάνιση ονόματος:", "LabelDisplayOrder": "Σειρά εμφάνισης:", @@ -573,7 +554,6 @@ "LabelPlayDefaultAudioTrack": "Αναπαραγωγή προεπιλεγμένου κομματιού ήχου ανεξάρτητα από τη γλώσσα", "LabelPlaylist": "Λίστα:", "LabelPreferredDisplayLanguage": "Προτιμώμενη γλώσσα εμφάνισης:", - "LabelPreferredDisplayLanguageHelp": "Η μετάφραση του Jellyfin είναι ένα συνεχιζόμενο έργο.", "LabelPreferredSubtitleLanguage": "Προτεινόμενη Γλώσσα υποτίτλων:", "LabelProfileCodecsHelp": "Διαχωρίζονται με κόμμα. Αυτό μπορεί να μείνει κενό για να εφαρμοστεί σε όλα τα codecs.", "LabelProfileContainersHelp": "Διαχωρίζονται με κόμμα. Αυτό μπορεί να μείνει κενό για να εφαρμοστεί σε όλα τα containers.", @@ -619,7 +599,6 @@ "LabelStopWhenPossible": "Διακοπή όταν είναι δυνατόν:", "LabelSubtitleFormatHelp": "Παράδειγμα: srt", "LabelSubtitlePlaybackMode": "Λειτουργία υποτίτλων:", - "LabelSubtitles": "Υπότιτλοι", "LabelSupportedMediaTypes": "Υποστηριζόμενοι τύποι μέσων:", "LabelTVHomeScreen": "Αρχική οθόνη λειτουργίας τηλεόρασης:", "LabelTag": "Ετικέτα:", @@ -719,7 +698,6 @@ "MessagePleaseWait": "Παρακαλώ περιμένετε. Αυτό μπορεί να πάρει ένα λεπτό.", "MessagePluginConfigurationRequiresLocalAccess": "Για να ρυθμίσετε αυτό το πρόσθετο παρακαλώ συνδεθείτε στον τοπικό διακομιστή σας άμεσα.", "MessageReenableUser": "Δες παρακάτω για ενεργοποιήση", - "MessageSettingsSaved": "Οι ρυθμίσεις αποθηκεύτηκαν.", "MessageUnableToConnectToServer": "Δεν είναι δυνατή η σύνδεση με τον επιλεγμένο διακομιστή αυτή τη στιγμή. Βεβαιωθείτε ότι εκτελείται και προσπαθήστε ξανά.", "MessageYouHaveVersionInstalled": "Αυτήν τη στιγμή έχετε εγκατεστημένη την έκδοση {0}.", "Metadata": "Μεταδεδομένα", @@ -781,7 +759,6 @@ "OptionArtist": "Καλλιτέχνες", "OptionAscending": "Αύξουσα", "OptionAuto": "Αυτόματο", - "OptionAutomatic": "Αυτόματο", "OptionBlockBooks": "Βιβλία", "OptionBlockChannelContent": "Περιεχόμενο Διαδικτυακών Καναλιών", "OptionBlockLiveTvChannels": "ΚΑΝΑΛΙΑ ΖΩΝΤΑΝΗΣ ΤΗΛΕΟΡΑΣΗΣ", @@ -982,15 +959,11 @@ "TV": "Τηλεόραση", "TabAccess": "Πρόσβαση", "TabAdvanced": "Για προχωρημένους", - "TabAlbumArtists": "Άλμπουμ Καλλιτέχνες", "TabCatalog": "Κατάλογος", "TabDashboard": "Πίνακας Ελέγχου", "TabDirectPlay": "Άμεση Αναπαραγωγή", - "TabEpisodes": "Επεισόδια", - "TabInfo": "Πληροφορία", "TabLatest": "Τελευταία", "TabMusic": "Μουσική", - "TabMusicVideos": "Μουσικά βίντεο", "TabMyPlugins": "Τα πρόσθετα μου", "TabNetworks": "Δίκτυα", "TabNfoSettings": "Ρυθμίσεις NFO", @@ -1005,7 +978,6 @@ "TabServer": "Διακομιστής", "TabSettings": "Ρυθμισεις", "TabStreaming": "Ροή", - "TabTrailers": "Τρέιλερς", "TabUpcoming": "Επερχόμενα", "Tags": "Ετικέτες", "TagsValue": "Ετικέτες: {0}", @@ -1081,7 +1053,6 @@ "HeaderSelectCertificatePath": "Επιλέξτε Διαδρομή Πιστοποιητικού", "HeaderRemoveMediaFolder": "Αφαίρεση Φακέλου Μέσων", "HeaderIdentification": "Ταυτοποίηση", - "HeaderHome": "Αρχική", "HeaderGuideProviders": "Πάροχοι Δεδομένων Προγράμματος Τηλεόρασης", "HeaderFavoriteVideos": "Αγαπημένα Βίντεο", "HeaderFavoriteMovies": "Αγαπημένες Ταινίες", @@ -1111,7 +1082,6 @@ "EnablePhotos": "Εμφάνιση φωτογραφιών", "DrmChannelsNotImported": "Κανάλια με DRM δεν θα εισαχθούν.", "ButtonOk": "Οκ", - "ButtonOff": "Απενεργοποίηση", "ButtonNetwork": "Δίκτυο", "AllowOnTheFlySubtitleExtractionHelp": "Οι ενσωματωμένοι υπότιτλοι μπορούν να εξαχθούν από βίντεο και να σταλούν στις συσκευές σε απλό κείμενο για να αποφευχθούν μετατροπές βίντεο. Σε μερικά συστήματα αυτό μπορεί να πάρει πολύ ώρα και να κάνει το βίντεο να κολλάει κατά την διάρκεια της εξαγωγής. Απενεργοποιήστε το για να έχετε ενσωματωμένους υπότιτλους πάνω στο βίντεο όταν αυτοί δεν υποστηρίζονται από την συσκευή.", "AllowOnTheFlySubtitleExtraction": "Επίτρεψε την εξαγωγή υποτίτλων σε πραγματικό χρόνο", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 023475923e..d44183a4a8 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -105,31 +105,24 @@ "ButtonBack": "Back", "ButtonCancel": "Cancel", "ButtonChangeServer": "Change Server", - "ButtonEdit": "Edit", - "ButtonEditImages": "Edit images", "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", - "ButtonFilter": "Filter", "ButtonForgotPassword": "Forgot Password", "ButtonFullscreen": "Fullscreen", "ButtonGotIt": "Got It", "ButtonGuide": "Guide", - "ButtonHome": "Home", "ButtonInfo": "Info", "ButtonLibraryAccess": "Library access", "ButtonManualLogin": "Manual Login", "ButtonMore": "More", "ButtonNetwork": "Network", "ButtonNextTrack": "Next track", - "ButtonOff": "Off", "ButtonOk": "OK", "ButtonOpen": "Open", "ButtonParentalControl": "Parental control", "ButtonPause": "Pause", - "ButtonPlay": "Play", "ButtonPreviousTrack": "Previous track", "ButtonProfile": "Profile", "ButtonQuickStartGuide": "Quick Start Guide", - "ButtonRefresh": "Refresh", "ButtonRefreshGuideData": "Refresh Guide Data", "ButtonRemove": "Remove", "ButtonRename": "Rename", @@ -150,7 +143,6 @@ "ButtonStart": "Start", "ButtonStop": "Stop", "ButtonSubmit": "Submit", - "ButtonSubtitles": "Subtitles", "ButtonTrailer": "Trailer", "ButtonUninstall": "Uninstall", "ButtonWebsite": "Website", @@ -231,9 +223,7 @@ "EnablePhotosHelp": "Images will be detected and displayed alongside other media files.", "EnableStreamLooping": "Auto-loop live streams", "EnableStreamLoopingHelp": "Enable this if live streams only contain a few seconds of data and need to be continuously requested. Enabling this when not needed may cause problems.", - "EnableThemeSongs": "Theme songs", "EnableThemeSongsHelp": "Play theme songs in the background while browsing the library.", - "EnableThemeVideos": "Theme videos", "EnableThemeVideosHelp": "Play theme videos in the background while browsing the library.", "Ended": "Ended", "EndsAtValue": "Ends at {0}", @@ -285,11 +275,9 @@ "HeaderActiveDevices": "Active Devices", "HeaderActiveRecordings": "Active Recordings", "HeaderActivity": "Activity", - "HeaderAddScheduledTaskTrigger": "Add Trigger", "HeaderAddToCollection": "Add to Collection", "HeaderAddToPlaylist": "Add to Playlist", "HeaderAddUpdateImage": "Add/Update Image", - "HeaderAddUser": "Add User", "HeaderAdditionalParts": "Additional Parts", "HeaderAdmin": "Admin", "HeaderAlert": "Alert", @@ -301,12 +289,10 @@ "HeaderAppearsOn": "Appears On", "HeaderAudioBooks": "Audio Books", "HeaderAudioSettings": "Audio Settings", - "HeaderBooks": "Books", "HeaderBranding": "Branding", "HeaderCancelRecording": "Cancel Recording", "HeaderCancelSeries": "Cancel Series", "HeaderCastAndCrew": "Cast & Crew", - "HeaderCastCrew": "Cast & Crew", "HeaderChannelAccess": "Channel Access", "HeaderChapterImages": "Chapter Images", "HeaderCodecProfile": "Codec Profile", @@ -339,7 +325,6 @@ "HeaderEditImages": "Edit Images", "HeaderEnabledFields": "Enabled Fields", "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", - "HeaderEpisodes": "Episodes", "HeaderError": "Error", "HeaderExternalIds": "External IDs:", "HeaderFavoriteBooks": "Favourite Books", @@ -355,7 +340,6 @@ "HeaderFetchImages": "Fetch Images:", "HeaderFetcherSettings": "Fetcher Settings", "HeaderForKids": "For Kids", - "HeaderForgotPassword": "Forgot Password", "HeaderFrequentlyPlayed": "Frequently Played", "HeaderGuideProviders": "TV Guide Data Providers", "HeaderHttpHeaders": "HTTP Headers", @@ -384,7 +368,6 @@ "HeaderLoginFailure": "Login Failure", "HeaderMedia": "Media", "HeaderMediaFolders": "Media Folders", - "HeaderMediaInfo": "Media Info", "HeaderMetadataSettings": "Metadata Settings", "HeaderMoreLikeThis": "More Like This", "HeaderMusicQuality": "Music Quality", @@ -443,17 +426,14 @@ "TabSettings": "Settings", "TabServer": "Server", "TabScheduledTasks": "Scheduled Tasks", - "TabResumeSettings": "Resume", "TabResponses": "Responses", "TabOther": "Other", "TabNotifications": "Notifications", "TabNetworks": "Networks", "TabMyPlugins": "My Plugins", - "TabMusicVideos": "Music Videos", "TabMusic": "Music", "TabLogs": "Logs", "TabDirectPlay": "Direct Play", - "TabAlbumArtists": "Album Artists", "TabAdvanced": "Advanced", "TabAccess": "Access", "TV": "TV", @@ -723,22 +703,18 @@ "LabelTypeText": "Text", "LabelTunerIpAddress": "Tuner IP Address:", "LabelTriggerType": "Trigger Type:", - "LabelTranscodingVideoCodec": "Video codec:", "LabelTranscodingThreadCountHelp": "Select the maximum number of threads to use when transcoding. Reducing the thread count will lower CPU usage but may not convert fast enough for a smooth playback experience.", "LabelTranscodingThreadCount": "Transcoding thread count:", "LabelTranscodingFramerate": "Transcoding framerate:", "LabelTranscodes": "Transcodes:", "LabelTranscodingTempPathHelp": "Specify a custom path for the transcode files served to clients. Leave blank to use the server default.", "LabelTranscodePath": "Transcode path:", - "LabelTranscodingContainer": "Container:", - "LabelTranscodingAudioCodec": "Audio codec:", "LabelTrackNumber": "Track number:", "LabelTitle": "Title:", "LabelTagline": "Tagline:", "LabelTag": "Tag:", "LabelTVHomeScreen": "TV mode home screen:", "LabelSupportedMediaTypes": "Supported Media Types:", - "LabelSubtitles": "Subtitles", "LabelSubtitlePlaybackMode": "Subtitle mode:", "LabelSubtitleFormatHelp": "Example: srt", "LabelSubtitleDownloaders": "Subtitle downloaders:", @@ -778,7 +754,6 @@ "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local HTTP port.", "LabelPublicHttpPort": "Public HTTP port number:", "LabelMetadataDownloadersHelp": "Enable and rank your preferred metadata downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", "LabelDidlMode": "DIDL mode:", "LabelDefaultUser": "Default user:", "LabelDefaultScreen": "Default screen:", @@ -876,7 +851,6 @@ "TagsValue": "Tags: {0}", "Tags": "Tags", "TabUpcoming": "Upcoming", - "TabTrailers": "Trailers", "LabelDisplayMode": "Display mode:", "LabelDisplayLanguageHelp": "Translating Jellyfin is an ongoing project.", "LabelDisplayLanguage": "Display language:", @@ -890,8 +864,6 @@ "TabNfoSettings": "NFO Settings", "TabNetworking": "Networking", "TabLatest": "Latest", - "TabInfo": "Info", - "TabEpisodes": "Episodes", "TabDashboard": "Dashboard", "TabContainers": "Containers", "TabCodecs": "Codecs", @@ -956,7 +928,6 @@ "LabelProfileCodecsHelp": "Separated by comma. This can be left empty to apply to all codecs.", "LabelProfileAudioCodecs": "Audio codecs:", "LabelPreferredSubtitleLanguage": "Preferred subtitle language:", - "LabelPreferredDisplayLanguageHelp": "Translating Jellyfin is an ongoing project.", "LabelPreferredDisplayLanguage": "Preferred display language:", "LabelPostProcessor": "Post-processing application:", "LabelPlayer": "Player:", @@ -1058,7 +1029,6 @@ "LabelDisplayOrder": "Display order:", "LabelDisplayName": "Display name:", "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.", - "LabelCustomDeviceDisplayName": "Display name:", "LabelCustomCss": "Custom CSS:", "LabelCustomCertificatePathHelp": "Path to a PKCS #12 file containing a certificate and private key to enable TLS support on a custom domain.", "LabelCurrentPassword": "Current password:", @@ -1083,7 +1053,6 @@ "LabelAudioChannels": "Audio channels:", "LabelAudioBitrate": "Audio bitrate:", "LabelAudioBitDepth": "Audio bit depth:", - "LabelAudio": "Audio", "LabelArtistsHelp": "Separate multiple using ;", "LabelArtists": "Artists:", "LabelAppName": "App name", @@ -1274,7 +1243,6 @@ "OptionBlockMusic": "Music", "OptionBlockLiveTvChannels": "Live TV Channels", "OptionBlockBooks": "Books", - "OptionAutomatic": "Auto", "OptionAuto": "Auto", "OptionAscending": "Ascending", "OptionAdminUsers": "Administrators", @@ -1286,7 +1254,6 @@ "MessageYouHaveVersionInstalled": "You currently have version {0} installed.", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:", - "MessageSettingsSaved": "Settings saved.", "MessageReenableUser": "See below to reenable", "MessageLeaveEmptyToInherit": "Leave empty to inherit settings from a parent item or the global default value.", "MessageItemsAdded": "Items added.", @@ -1350,7 +1317,6 @@ "HeaderPlayAll": "Play All", "HeaderPinCodeReset": "Reset Pin Code", "HeaderPhotoAlbums": "Photo Albums", - "HeaderHome": "Home", "HeaderFavoritePeople": "Favourite People", "FetchingData": "Fetching additional data", "ButtonAddImage": "Add Image", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 0f37014b76..f87c1a326e 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -71,31 +71,24 @@ "ButtonBack": "Back", "ButtonCancel": "Cancel", "ButtonChangeServer": "Change Server", - "ButtonEdit": "Edit", - "ButtonEditImages": "Edit images", "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", - "ButtonFilter": "Filter", "ButtonForgotPassword": "Forgot Password", "ButtonFullscreen": "Fullscreen", "ButtonGotIt": "Got It", "ButtonGuide": "Guide", - "ButtonHome": "Home", "ButtonInfo": "Info", "ButtonLibraryAccess": "Library access", "ButtonManualLogin": "Manual Login", "ButtonMore": "More", "ButtonNetwork": "Network", "ButtonNextTrack": "Next track", - "ButtonOff": "Off", "ButtonOk": "Ok", "ButtonOpen": "Open", "ButtonParentalControl": "Parental control", "ButtonPause": "Pause", - "ButtonPlay": "Play", "ButtonPreviousTrack": "Previous track", "ButtonProfile": "Profile", "ButtonQuickStartGuide": "Quick Start Guide", - "ButtonRefresh": "Refresh", "ButtonRefreshGuideData": "Refresh Guide Data", "ButtonRemove": "Remove", "ButtonRename": "Rename", @@ -117,7 +110,6 @@ "ButtonStop": "Stop", "ButtonSplit": "Split", "ButtonSubmit": "Submit", - "ButtonSubtitles": "Subtitles", "ButtonTogglePlaylist": "Playlist", "ButtonTrailer": "Trailer", "ButtonUninstall": "Uninstall", @@ -213,9 +205,7 @@ "EnablePhotosHelp": "Images will be detected and displayed alongside other media files.", "EnableStreamLooping": "Auto-loop live streams", "EnableStreamLoopingHelp": "Enable this if live streams only contain a few seconds of data and need to be continuously requested. Enabling this when not needed may cause problems.", - "EnableThemeSongs": "Theme songs", "EnableThemeSongsHelp": "Play theme songs in the background while browsing the library.", - "EnableThemeVideos": "Theme videos", "EnableThemeVideosHelp": "Play theme videos in the background while browsing the library.", "EnableDetailsBanner": "Details Banner", "EnableDetailsBannerHelp": "Display a banner image at the top of the item details page.", @@ -276,11 +266,9 @@ "HeaderActiveDevices": "Active Devices", "HeaderActiveRecordings": "Active Recordings", "HeaderActivity": "Activity", - "HeaderAddScheduledTaskTrigger": "Add Trigger", "HeaderAddToCollection": "Add to Collection", "HeaderAddToPlaylist": "Add to Playlist", "HeaderAddUpdateImage": "Add/Update Image", - "HeaderAddUser": "Add User", "HeaderAdditionalParts": "Additional Parts", "HeaderAdmin": "Admin", "HeaderAlbumArtists": "Album Artists", @@ -295,12 +283,10 @@ "HeaderAudioBooks": "Audio Books", "HeaderAudioSettings": "Audio Settings", "HeaderBlockItemsWithNoRating": "Block items with no or unrecognized rating information:", - "HeaderBooks": "Books", "HeaderBranding": "Branding", "HeaderCancelRecording": "Cancel Recording", "HeaderCancelSeries": "Cancel Series", "HeaderCastAndCrew": "Cast & Crew", - "HeaderCastCrew": "Cast & Crew", "HeaderChannelAccess": "Channel Access", "HeaderChapterImages": "Chapter Images", "HeaderCodecProfile": "Codec Profile", @@ -335,7 +321,6 @@ "HeaderEditImages": "Edit Images", "HeaderEnabledFields": "Enabled Fields", "HeaderEnabledFieldsHelp": "Uncheck a field to lock it and prevent its data from being changed.", - "HeaderEpisodes": "Episodes", "HeaderError": "Error", "HeaderExternalIds": "External IDs:", "HeaderFavoriteBooks": "Favorite Books", @@ -352,10 +337,8 @@ "HeaderFetchImages": "Fetch Images:", "HeaderFetcherSettings": "Fetcher Settings", "HeaderForKids": "For Kids", - "HeaderForgotPassword": "Forgot Password", "HeaderFrequentlyPlayed": "Frequently Played", "HeaderGuideProviders": "TV Guide Data Providers", - "HeaderHome": "Home", "HeaderHttpHeaders": "HTTP Headers", "HeaderHttpsSettings": "HTTPS Settings", "HeaderIdentification": "Identification", @@ -383,7 +366,6 @@ "HeaderLoginFailure": "Login Failure", "HeaderMedia": "Media", "HeaderMediaFolders": "Media Folders", - "HeaderMediaInfo": "Media Info", "HeaderMetadataSettings": "Metadata Settings", "HeaderMoreLikeThis": "More Like This", "HeaderMusicQuality": "Music Quality", @@ -521,7 +503,6 @@ "LabelAppNameExample": "Example: Sickbeard, Sonarr", "LabelArtists": "Artists:", "LabelArtistsHelp": "Separate multiple artists with a semicolon.", - "LabelAudio": "Audio", "LabelAudioBitDepth": "Audio bit depth:", "LabelAudioBitrate": "Audio bitrate:", "LabelAudioChannels": "Audio channels:", @@ -557,7 +538,6 @@ "LabelCustomCertificatePathHelp": "Path to a PKCS #12 file containing a certificate and private key to enable TLS support on a custom domain.", "LabelCustomCss": "Custom CSS:", "LabelCustomCssHelp": "Apply your own custom styles on the web interface.", - "LabelCustomDeviceDisplayName": "Display name:", "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.", "LabelCustomRating": "Custom rating:", "LabelDateAdded": "Date added:", @@ -575,7 +555,6 @@ "LabelDiscNumber": "Disc number:", "LabelDisplayLanguage": "Display language:", "LabelDisplayLanguageHelp": "Translating Jellyfin is an ongoing project.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", "LabelDisplayMode": "Display mode:", "LabelDisplayName": "Display name:", "LabelDisplayOrder": "Display order:", @@ -747,7 +726,6 @@ "LabelPostProcessorArguments": "Post-processor command line arguments:", "LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.", "LabelPreferredDisplayLanguage": "Preferred display language:", - "LabelPreferredDisplayLanguageHelp": "Translating Jellyfin is an ongoing project.", "LabelPreferredSubtitleLanguage": "Preferred subtitle language:", "LabelProfileAudioCodecs": "Audio codecs:", "LabelProfileCodecs": "Codecs:", @@ -814,7 +792,6 @@ "LabelSubtitleDownloaders": "Subtitle downloaders:", "LabelSubtitleFormatHelp": "Example: srt", "LabelSubtitlePlaybackMode": "Subtitle mode:", - "LabelSubtitles": "Subtitles", "LabelSupportedMediaTypes": "Supported Media Types:", "LabelSyncPlayTimeOffset": "Time offset with the server:", "MillisecondsUnit": "ms", @@ -839,8 +816,6 @@ "LabelTimeLimitHours": "Time limit (hours):", "LabelTitle": "Title:", "LabelTrackNumber": "Track number:", - "LabelTranscodingAudioCodec": "Audio codec:", - "LabelTranscodingContainer": "Container:", "LabelTranscodePath": "Transcode path:", "LabelTranscodingTempPathHelp": "Specify a custom path for the transcode files served to clients. Leave blank to use the server default.", "LabelTranscodes": "Transcodes:", @@ -848,7 +823,6 @@ "LabelTranscodingProgress": "Transcoding progress:", "LabelTranscodingThreadCount": "Transcoding thread count:", "LabelTranscodingThreadCountHelp": "Select the maximum number of threads to use when transcoding. Reducing the thread count will lower CPU usage but may not convert fast enough for a smooth playback experience.", - "LabelTranscodingVideoCodec": "Video codec:", "LabelTriggerType": "Trigger Type:", "LabelTunerIpAddress": "Tuner IP Address:", "LabelTunerType": "Tuner type:", @@ -986,7 +960,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly.", "MessagePluginInstallDisclaimer": "Plugins built by community members are a great way to enhance your experience with additional features and benefits. Before installing, please be aware of the effects they may have on your server, such as longer library scans, additional background processing, and decreased system stability.", "MessageReenableUser": "See below to reenable", - "MessageSettingsSaved": "Settings saved.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", @@ -1077,7 +1050,6 @@ "OptionArtist": "Artist", "OptionAscending": "Ascending", "OptionAuto": "Auto", - "OptionAutomatic": "Auto", "OptionAutomaticallyGroupSeries": "Automatically merge series that are spread across multiple folders", "OptionAutomaticallyGroupSeriesHelp": "Series that are spread across multiple folders within this library will be automatically merged into a single series.", "OptionBanner": "Banner", @@ -1220,6 +1192,7 @@ "Play": "Play", "PlayAllFromHere": "Play all from here", "PlaybackData": "Playback Data", + "PlaybackRate": "Playback Rate", "PlayCount": "Play count", "PlayFromBeginning": "Play from beginning", "PlayNext": "Play next", @@ -1350,19 +1323,15 @@ "TV": "TV", "TabAccess": "Access", "TabAdvanced": "Advanced", - "TabAlbumArtists": "Album Artists", "TabCatalog": "Catalog", "TabRepositories": "Repositories", "TabCodecs": "Codecs", "TabContainers": "Containers", "TabDashboard": "Dashboard", "TabDirectPlay": "Direct Play", - "TabEpisodes": "Episodes", - "TabInfo": "Info", "TabLatest": "Latest", "TabLogs": "Logs", "TabMusic": "Music", - "TabMusicVideos": "Music Videos", "TabMyPlugins": "My Plugins", "TabNetworks": "Networks", "TabNetworking": "Networking", @@ -1374,12 +1343,10 @@ "TabProfile": "Profile", "TabProfiles": "Profiles", "TabResponses": "Responses", - "TabResumeSettings": "Resume", "TabScheduledTasks": "Scheduled Tasks", "TabServer": "Server", "TabSettings": "Settings", "TabStreaming": "Streaming", - "TabTrailers": "Trailers", "TabUpcoming": "Upcoming", "Tags": "Tags", "TagsValue": "Tags: {0}", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 3ff15ab72b..ce3a0c4b7a 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -3,9 +3,7 @@ "ButtonSignOut": "Cerrar sesión", "EnableHardwareEncoding": "Habilitar la codificación de hardware", "FolderTypeTvShows": "TV", - "HeaderAddUser": "Agregar Usuario", "HeaderLatestEpisodes": "Últimos capítulos", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar capítulos no disponibles en temporadas", "LabelFinish": "Terminar", "LabelYoureDone": "Ha terminado!", "MoreUsersCanBeAddedLater": "Se pueden agregar más usuarios más tarde desde el tablero.", @@ -13,7 +11,6 @@ "OptionMissingEpisode": "Capítulos faltantes", "OptionUnairedEpisode": "Capítulos no emitidos", "ParentalRating": "Parental Rating", - "TabEpisodes": "Capítulos", "TellUsAboutYourself": "Contanos acerca de vos", "ThisWizardWillGuideYou": "Este asistente le ayudará a guiarlo durante el proceso de configuración. Para comenzar, seleccione su idioma preferido.", "UserProfilesIntro": "Jellyfin incluye soporte para perfiles de usuario con configuraciones de visualización granulares, estado de reproducción y controles parentales.", @@ -61,7 +58,7 @@ "AllowMediaConversionHelp": "Permitir o denegar acceso a la opción de convertir medios.", "AllowOnTheFlySubtitleExtraction": "Permitir extracción de subtítulos al vuelo", "AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados se pueden extraer de los videos y entregar a los clientes en texto plano, para ayudar a evitar la transcodificación de videos. En algunos sistemas, esto puede llevar mucho tiempo y provocar que la reproducción de video se detenga durante el proceso de extracción. Deshabilite esto para que los subtítulos incrustados se graben con la transcodificación de video cuando el dispositivo cliente no los admite de forma nativa.", - "AllowRemoteAccess": "Permitir conexiones remotas a este servidor Jellyfin.", + "AllowRemoteAccess": "Permitir conexiones remotas a este servidor.", "AllowRemoteAccessHelp": "Si no está tildado, todas las conexiones remotas serán bloqueadas.", "AlwaysPlaySubtitles": "Reproducir siempre", "AnyLanguage": "Cualquier idioma", @@ -99,30 +96,23 @@ "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Cambiar servidor", - "ButtonEdit": "Editar", - "ButtonEditImages": "Editar imágenes", "ButtonEditOtherUserPreferences": "Editar perfil, imagen y preferencias personales del usuario.", - "ButtonFilter": "Filtrar", "ButtonForgotPassword": "Olvidé mi contraseña", "ButtonFullscreen": "Pantalla completa", "ButtonGotIt": "Lo entendí", "ButtonGuide": "Guía", - "ButtonHome": "Inicio", "ButtonInfo": "Información", "ButtonLibraryAccess": "Acceso a la biblioteca", "ButtonManualLogin": "Inicio de sesión manual", "ButtonMore": "Más", "ButtonNetwork": "Red", "ButtonNextTrack": "Pista siguiente", - "ButtonOff": "Desactivado", "ButtonOk": "Aceptar", "ButtonOpen": "Abrir", "ButtonParentalControl": "Control parental", "ButtonPause": "Pausar", - "ButtonPlay": "Reproducir", "ButtonPreviousTrack": "Pista anterior", "ButtonProfile": "Perfil", - "ButtonRefresh": "Actualizar", "ButtonRefreshGuideData": "Actualizar datos de la guía", "ButtonRemove": "Quitar", "ButtonRename": "Renombrar", @@ -142,7 +132,6 @@ "ButtonStart": "Iniciar", "ButtonStop": "Detener", "ButtonSubmit": "Enviar", - "ButtonSubtitles": "Subtítulos", "ButtonTrailer": "Avance", "ButtonUninstall": "Desinstalar", "ButtonWebsite": "Sitio web", @@ -159,7 +148,7 @@ "ColorTransfer": "Transferencia de color", "CommunityRating": "Puntuación de la comunidad", "Composer": "Compositor", - "ConfigureDateAdded": "Configura cómo se va a determinar las fechas de adición en la pestaña Bibliotecas del panel del servidor Jellyfin", + "ConfigureDateAdded": "Configure cómo se determina la fecha agregada en el panel en la configuración de la biblioteca", "ConfirmDeleteImage": "¿Eliminar imagen?", "ConfirmDeleteItem": "Eliminar este elemento lo eliminará tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?", "ConfirmDeleteItems": "Eliminar estos elementos los eliminará tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?", @@ -216,7 +205,7 @@ "EnableBackdropsHelp": "Muestra imágenes de fondo en el fondo de algunas páginas mientras se navega por la biblioteca.", "EnableCinemaMode": "Modo cine", "EnableColorCodedBackgrounds": "Habilitar colores en el fondo del código", - "AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", + "AuthProviderHelp": "Seleccione un proveedor de autenticación para ser utilizado para autenticar la contraseña de este usuario.", "CriticRating": "Valoración crítica", "DefaultSubtitlesHelp": "Los subtítulos se cargan según los indicadores predeterminados y forzados en los metadatos incrustados. Las preferencias de idioma se consideran cuando hay varias opciones disponibles.", "Dislike": "No me gusta", @@ -229,9 +218,7 @@ "EnablePhotosHelp": "Las imágenes serán detectadas y mostradas junto con otros archivos multimedia.", "EnableStreamLooping": "Repetir automáticamente transmisiones en vivo", "EnableStreamLoopingHelp": "Habilita esto sí las transmisiones en vivo sólo contienen unos cuantos segundos y es necesario solicitarlos continuamente. Habilitar esto cuando no es necesario puede causar problemas.", - "EnableThemeSongs": "Canciones temáticas", "EnableThemeSongsHelp": "Reproducir canciones temáticas en el fondo mientras se navega por la biblioteca.", - "EnableThemeVideos": "Videos temáticos", "EnableThemeVideosHelp": "Al habilitarse, los vídeos de tema se reproducirán de fondo mientras navegues por la biblioteca.", "Ended": "Finalizado", "EndsAtValue": "Termina en {0}", @@ -290,7 +277,6 @@ "AllowFfmpegThrottling": "Transcodificación Throttle", "HeaderCancelRecording": "Cancelar Grabación", "HeaderBranding": "Marca", - "HeaderBooks": "Libros", "HeaderBlockItemsWithNoRating": "Bloquear elementos con rating de información vacía o no reconocible:", "HeaderAudioSettings": "Configuraciones de audio", "HeaderAudioBooks": "Audiolibros", @@ -306,7 +292,6 @@ "HeaderAddUpdateImage": "Agregar/Actualizar imagen", "HeaderAddToPlaylist": "Agregar a la lista de reproducción", "HeaderAddToCollection": "Agregar a la Colección", - "HeaderAddScheduledTaskTrigger": "Agregar disparador", "HeaderActivity": "Actividad", "HeaderActiveRecordings": "Grabaciones activas", "HeaderActiveDevices": "Dispositivos activos", @@ -338,7 +323,6 @@ "HeaderCodecProfile": "Perfil del códec", "HeaderChapterImages": "Imágenes del capitulo", "HeaderChannelAccess": "Acceso al canal", - "HeaderCastCrew": "Reparto", "HeaderCastAndCrew": "Reparto", "HeaderCancelSeries": "Cancelar serie", "H264CrfHelp": "El Factor de velocidad constante (CRF) es la configuración de calidad predeterminada para el codificador x264. Puede establecer los valores entre 0 y 51, donde valores más bajos resultarían en una mejor calidad (a expensas de tamaños de archivo más altos). Los valores correctos están entre 18 y 28. El valor predeterminado para x264 es 23, por lo que puede usar esto como punto de partida.", @@ -349,7 +333,6 @@ "HeaderFavoriteBooks": "Libros favoritos", "HeaderExternalIds": "IDs externos:", "HeaderError": "Error", - "HeaderEpisodes": "Capítulos", "HeaderEnabledFields": "Campos habilitados", "HeaderEditImages": "Editar imágenes", "HeaderEasyPinCode": "Código PIN fácil", @@ -390,10 +373,8 @@ "HeaderIdentificationCriteriaHelp": "Ingrese al menos un criterio de identificación.", "HeaderIdentification": "Identificación", "HeaderHttpHeaders": "Encabezados HTTP", - "HeaderHome": "Inicio", "HeaderGuideProviders": "Proveedores de datos de guías de TV", "HeaderFrequentlyPlayed": "Reproducido con frecuencia", - "HeaderForgotPassword": "Olvidé la contraseña", "HeaderForKids": "Para niños", "HeaderFetcherSettings": "Configuración del recuperador", "HeaderFetchImages": "Obtener imágenes:", @@ -510,7 +491,6 @@ "HeaderNextEpisodePlayingInValue": "Reproducción del siguiente capítulo en {0}", "HeaderMoreLikeThis": "Más como esto", "HeaderMetadataSettings": "Configuraciones de metadatos", - "HeaderMediaInfo": "Información de medios", "HeaderHttpsSettings": "Configuraciones HTTPS", "HeaderEnabledFieldsHelp": "Desmarque un campo para bloquearlo y evitar que se modifiquen sus datos.", "HeaderDirectPlayProfileHelp": "Agregue perfiles de reproducción directa para indicar qué formatos puede manejar el dispositivo de forma nativa.", @@ -539,7 +519,6 @@ "LabelAudioCodec": "Códec de audio:", "LabelAudioChannels": "Canales de audio:", "LabelAudioBitrate": "Velocidad de bits de audio:", - "LabelAudio": "Audio", "LabelAllowedRemoteAddresses": "Filtro de dirección IP remota:", "LabelAllowHWTranscoding": "Permitir transcodificación con hardware", "LabelAlbumArtists": "Artistas del álbum:", @@ -639,7 +618,6 @@ "LabelDateAdded": "Fecha agregada:", "LabelCustomRating": "Calificación personalizada:", "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre personalizado para mostrar o déjelo vacío para usar el nombre informado por el dispositivo.", - "LabelCustomDeviceDisplayName": "Nombre para mostrar:", "LabelCustomCssHelp": "Aplique su propio estilo personalizado a la interfaz web.", "LabelCustomCss": "CSS personalizado:", "LabelCustomCertificatePathHelp": "Ruta a un archivo PKCS #12 que contiene un certificado y una clave privada para habilitar el soporte TLS en un dominio personalizado.", @@ -679,7 +657,6 @@ "MillisecondsUnit": "ms", "LabelSyncPlayTimeOffset": "Compensación horaria con el servidor:", "LabelSupportedMediaTypes": "Tipos de medios soportados:", - "LabelSubtitles": "Subtítulos", "LabelSubtitlePlaybackMode": "Modo de subtítulos:", "LabelSubtitleFormatHelp": "Ejemplo: srt", "LabelSubtitleDownloaders": "Descargadores de subtítulos:", @@ -741,7 +718,6 @@ "LabelProfileCodecs": "Códecs:", "LabelProfileAudioCodecs": "Códecs de audio:", "LabelPreferredSubtitleLanguage": "Idioma de subtítulos preferido:", - "LabelPreferredDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en curso.", "LabelPreferredDisplayLanguage": "Idioma de visualización preferido:", "LabelPostProcessorArgumentsHelp": "Use {ruta} como la ruta al archivo de grabación.", "LabelPostProcessorArguments": "Argumentos de la línea de comando del post-procesador:", @@ -829,7 +805,6 @@ "OptionBanner": "Pancarta", "OptionAutomaticallyGroupSeriesHelp": "Si está habilitado, las series que se distribuyen en varias carpetas dentro de esta biblioteca se fusionarán automáticamente en una sola serie.", "OptionAutomaticallyGroupSeries": "Combinar automáticamente series que se extienden a través de múltiples carpetas", - "OptionAutomatic": "Auto", "OptionAuto": "Auto", "OptionAscending": "Ascendente", "OptionArtist": "Artista", @@ -914,7 +889,6 @@ "MessageUnsetContentHelp": "El contenido se mostrará como carpetas simples. Para obtener mejores resultados, use el administrador de metadatos para configurar los tipos de contenido de las subcarpetas.", "MessageUnableToConnectToServer": "No podemos conectarnos al servidor seleccionado en este momento. Asegúrese de que se esté ejecutando e intente nuevamente.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Las siguientes ubicaciones de medios se eliminarán de su biblioteca:", - "MessageSettingsSaved": "Configuraciones guardadas.", "MessageReenableUser": "Ver abajo para volver a habilitar", "MessagePluginInstallDisclaimer": "Los complementos creados por miembros de la comunidad Jellyfin son una excelente manera de mejorar su experiencia Jellyfin con características y beneficios adicionales. Antes de la instalación, tenga en cuenta los efectos que pueden tener en su servidor Jellyfin, como escaneos de bibliotecas más largos, procesamiento en segundo plano adicional y disminución de la estabilidad del sistema.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento, inicie sesión directamente en su servidor local.", @@ -1042,7 +1016,6 @@ "LabelTunerType": "Tipo de sintonizador:", "LabelTunerIpAddress": "Dirección IP del sintonizador:", "LabelTriggerType": "Tipo de disparador:", - "LabelTranscodingVideoCodec": "Códec de vídeo:", "LabelTranscodingThreadCountHelp": "Elija el número máximo de hilos para usar al transcodificar. Reducir el recuento de hilos disminuirá el uso de la CPU, pero es posible que no se convierta lo suficientemente rápido para una experiencia de reproducción fluida.", "LabelTranscodingThreadCount": "Conteo de hilos de transcodificación:", "LabelTranscodingProgress": "Progreso de transcodificación:", @@ -1050,8 +1023,6 @@ "LabelTranscodes": "Transcodificaciones:", "LabelTranscodingTempPathHelp": "Especifique una ruta personalizada para los archivos de transcodificación servidos a los clientes. Déjelo en blanco para usar el servidor predeterminado.", "LabelTranscodePath": "Ruta para las transcodificaciones:", - "LabelTranscodingContainer": "Contenedor:", - "LabelTranscodingAudioCodec": "Códec de audio:", "LabelTrackNumber": "Número de pista:", "LabelTitle": "Título:", "LabelTimeLimitHours": "Límite de tiempo (horas):", @@ -1363,12 +1334,10 @@ "MarkPlayed": "Marcar reproducido", "LabelSkipForwardLength": "Saltar hacia adelante longitud:", "Trailers": "Avances", - "TabTrailers": "Avances", "TabStreaming": "Transmisión", "TabSettings": "Configuraciones", "TabServer": "Servidor", "TabScheduledTasks": "Tareas programadas", - "TabResumeSettings": "Continuar", "TabResponses": "Respuestas", "TabProfiles": "Perfiles", "TabProfile": "Perfil", @@ -1380,18 +1349,15 @@ "TabNetworking": "Redes", "TabNetworks": "Redes", "TabMyPlugins": "Mis complementos", - "TabMusicVideos": "Videos musicales", "TabMusic": "Música", "TabLogs": "Registros", "TabLatest": "Último", - "TabInfo": "Información", "TabDirectPlay": "Reproducción directa", "TabDashboard": "Tablero", "TabContainers": "Contenedores", "TabCodecs": "Códecs", "TabRepositories": "Repositorios", "TabCatalog": "Catálogo", - "TabAlbumArtists": "Artistas del álbum", "TabAdvanced": "Avanzado", "TabAccess": "Acceso", "TV": "TV", @@ -1467,5 +1433,13 @@ "Writers": "Escritores", "ClearQueue": "Eliminar cola", "StopPlayback": "Detener reproducción", - "ViewAlbumArtist": "Ver artista del álbum" + "ViewAlbumArtist": "Ver artista del álbum", + "Preview": "Avance", + "SubtitleVerticalPositionHelp": "Número de línea donde aparece el texto. Los números positivos indican de arriba hacia abajo. Los números negativos indican de abajo hacia arriba.", + "LabelSubtitleVerticalPosition": "Posición vertical:", + "PreviousTrack": "Pasar al anterior", + "MessageGetInstalledPluginsError": "Se produjo un error al obtener la lista de complementos instalados actualmente.", + "MessagePluginInstallError": "Ocurrió un error al instalar el complemento.", + "NextTrack": "Pasar al siguiente", + "LabelUnstable": "Inestable" } diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index c7669c4429..7c392f04b6 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -59,29 +59,22 @@ "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Cambiar servidor", - "ButtonEdit": "Editar", - "ButtonEditImages": "Editar imágenes", "ButtonEditOtherUserPreferences": "Editar el perfil, la imagen y las preferencias personales de este usuario.", - "ButtonFilter": "Filtro", "ButtonForgotPassword": "Olvidé mi contraseña", "ButtonFullscreen": "Pantalla completa", "ButtonGotIt": "Hecho", "ButtonGuide": "Guía", - "ButtonHome": "Inicio", "ButtonLibraryAccess": "Acceso a biblioteca(s)", "ButtonManualLogin": "Inicio de sesión manual", "ButtonMore": "Más", "ButtonNetwork": "Red", "ButtonNextTrack": "Pista siguiente", - "ButtonOff": "Apagar", "ButtonOpen": "Abrir", "ButtonParentalControl": "Control parental", "ButtonPause": "Pausar", - "ButtonPlay": "Reproducir", "ButtonPreviousTrack": "Pista anterior", "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guía de inicio rápido", - "ButtonRefresh": "Actualizar", "ButtonRefreshGuideData": "Actualizar datos de la guía", "ButtonRemove": "Remover", "ButtonRename": "Renombrar", @@ -102,7 +95,6 @@ "ButtonStart": "Iniciar", "ButtonStop": "Detener", "ButtonSubmit": "Enviar", - "ButtonSubtitles": "Subtítulos", "ButtonUninstall": "Desinstalar", "ButtonWebsite": "Sitio web", "CancelRecording": "Cancelar grabación", @@ -189,9 +181,7 @@ "EnablePhotosHelp": "Las imágenes serán detectadas y mostradas junto con otros archivos multimedia.", "EnableStreamLooping": "Repetir automáticamente las transmisiones en vivo", "EnableStreamLoopingHelp": "Habilita esta opción si las transmisiones en vivo contienen solo unos pocos segundos de datos y necesitan ser solicitadas continuamente. Habilitar esto cuando no es requerido puede causar problemas.", - "EnableThemeSongs": "Canciones temáticas", "EnableThemeSongsHelp": "Reproducir canciones temáticas en el fondo mientras se navega por la biblioteca.", - "EnableThemeVideos": "Videos temáticos", "EnableThemeVideosHelp": "Reproducir videos temáticos en el fondo mientras se navega por la biblioteca.", "Ended": "Finalizado", "EndsAtValue": "Termina a las {0}", @@ -246,11 +236,9 @@ "HeaderActiveDevices": "Dispositivos activos", "HeaderActiveRecordings": "Grabaciones activas", "HeaderActivity": "Actividad", - "HeaderAddScheduledTaskTrigger": "Agregar disparador", "HeaderAddToCollection": "Agregar a colección", "HeaderAddToPlaylist": "Agregar a lista de reproducción", "HeaderAddUpdateImage": "Agregar/Actualizar Imagen", - "HeaderAddUser": "Agregar usuario", "HeaderAdditionalParts": "Partes adicionales", "HeaderAlbumArtists": "Artistas del álbum", "HeaderAlert": "Alerta", @@ -262,12 +250,10 @@ "HeaderAudioBooks": "Audiolibros", "HeaderAudioSettings": "Configuración de audio", "HeaderBlockItemsWithNoRating": "Bloquear elementos sin clasificación o con información de clasificación desconocida:", - "HeaderBooks": "Libros", "HeaderBranding": "Establecer marca", "HeaderCancelRecording": "Cancelar grabación", "HeaderCancelSeries": "Cancelar serie", "HeaderCastAndCrew": "Reparto y equipo", - "HeaderCastCrew": "Reparto y equipo", "HeaderChannelAccess": "Acceso a los canales", "HeaderChapterImages": "Imágenes de los capítulos", "HeaderCodecProfile": "Perfil de códec", @@ -301,13 +287,11 @@ "HeaderEditImages": "Editar imágenes", "HeaderEnabledFields": "Campos habilitados", "HeaderEnabledFieldsHelp": "Desmarca un campo para bloquearlo y prevenir que sus datos sean cambiados.", - "HeaderEpisodes": "Episodios", "HeaderExternalIds": "IDs externos:", "HeaderFeatureAccess": "Acceso a características", "HeaderFetchImages": "Obtener imágenes:", "HeaderFetcherSettings": "Configuración del recolector", "HeaderForKids": "Para niños", - "HeaderForgotPassword": "Olvidé mi contraseña", "HeaderFrequentlyPlayed": "Reproducido frecuentemente", "HeaderGuideProviders": "Proveedores de Guías de TV", "HeaderHttpHeaders": "Encabezados HTTP", @@ -336,7 +320,6 @@ "HeaderLoginFailure": "Falló el inicio de sesión", "HeaderMedia": "Medios", "HeaderMediaFolders": "Carpetas de medios", - "HeaderMediaInfo": "Info del medio", "HeaderMetadataSettings": "Configuración de metadatos", "HeaderMoreLikeThis": "Más como esto", "HeaderMusicQuality": "Calidad de la música", @@ -494,7 +477,6 @@ "LabelCustomCertificatePathHelp": "Ruta a un archivo PKCS #12 que contiene un certificado y una clave privada para habilitar el soporte TLS en un dominio personalizado.", "LabelCustomCss": "CSS personalizado:", "LabelCustomCssHelp": "Aplica tu propio estilo personalizado a la interfaz web.", - "LabelCustomDeviceDisplayName": "Nombre a mostrar:", "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre personalizado para mostrar o déjalo vacío para usar el nombre reportado por el dispositivo.", "LabelCustomRating": "Calificación personalizada:", "LabelDateAdded": "Fecha de adición:", @@ -511,7 +493,6 @@ "LabelDiscNumber": "Número de disco:", "LabelDisplayLanguage": "Idioma de pantalla:", "LabelDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en curso.", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar episodios faltantes en las temporadas", "LabelDisplayMode": "Modo de pantalla:", "LabelDisplayName": "Nombre a mostrar:", "LabelDisplayOrder": "Orden para mostrar:", @@ -666,7 +647,6 @@ "LabelPostProcessorArguments": "Argumentos de la línea de comandos del post-procesador:", "LabelPostProcessorArgumentsHelp": "Usar {path} como la ruta del archivo grabado.", "LabelPreferredDisplayLanguage": "Idioma de pantalla preferido:", - "LabelPreferredDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en curso.", "LabelPreferredSubtitleLanguage": "Idioma preferido para los subtítulos:", "LabelProfileAudioCodecs": "Códecs de audio:", "LabelProfileCodecsHelp": "Separados por comas. Puede dejarse vacío para aplicarlo a todos los códecs.", @@ -725,7 +705,6 @@ "LabelSubtitleDownloaders": "Recolectores de subtítulos:", "LabelSubtitleFormatHelp": "Ejemplo: srt", "LabelSubtitlePlaybackMode": "Modo de subtítulo:", - "LabelSubtitles": "Subtítulos", "LabelSupportedMediaTypes": "Tipos de medios soportados:", "LabelTVHomeScreen": "Modo de pantalla de TV:", "LabelTag": "Etiqueta:", @@ -738,12 +717,9 @@ "LabelTimeLimitHours": "Límite de tiempo (horas):", "LabelTitle": "Título:", "LabelTrackNumber": "Número de pista:", - "LabelTranscodingAudioCodec": "Códec de audio:", - "LabelTranscodingContainer": "Contenedor:", "LabelTranscodingTempPathHelp": "Especifica una ruta personalizada para los archivos de transcodificación servidos a los clientes. Deja en blanco para utilizar el predeterminado del servidor.", "LabelTranscodingThreadCount": "Conteo de hilos de la transcodificación:", "LabelTranscodingThreadCountHelp": "Selecciona el número máximo de hilos a utilizar al transcodificar. Reducir el número de hilos reducirá el uso de la CPU, pero es posible que no se convierta lo suficientemente rápido como para que la experiencia de reproducción sea fluida.", - "LabelTranscodingVideoCodec": "Códec de video:", "LabelTriggerType": "Tipo de disparador:", "LabelTunerIpAddress": "Dirección IP del sintonizador:", "LabelTunerType": "Tipo de sintonizador:", @@ -851,7 +827,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento por favor, inicia sesión en tu servidor local directamente.", "MessagePluginInstallDisclaimer": "Los complementos desarrollados por miembros de la comunidad Jellyfin son una gran forma de mejorar tu experiencia con Jellyfin con características y beneficios adicionales. Antes de instalar, por favor, conoce el impacto que pueden ocasionar en tu servidor Jellyfin, tales como escaneo más largo de bibliotecas, procesamiento en segundo plano adicional y reducción de la estabilidad del sistema.", "MessageReenableUser": "Ver abajo para volver a habilitar", - "MessageSettingsSaved": "Configuraciones guardadas.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Las siguientes ubicaciones de medios se removerán de tu biblioteca:", "MessageUnableToConnectToServer": "No podemos conectarnos al servidor seleccionado en este momento. Por favor, asegúrate de que está funcionando e inténtalo de nuevo.", "MessageUnsetContentHelp": "El contenido será mostrado como carpetas simples. Para mejores resultados utiliza el administrador de metadatos para establecer los tipos de contenido para las subcarpetas.", @@ -915,7 +890,6 @@ "OptionArtist": "Artista", "OptionAscending": "Ascendente", "OptionAuto": "Automático", - "OptionAutomatic": "Automático", "OptionAutomaticallyGroupSeries": "Fusionar automáticamente series esparcidas a través de múltiples carpetas", "OptionAutomaticallyGroupSeriesHelp": "Si se habilita, las series que se reparten a través de múltiples carpetas dentro de esta biblioteca serán fusionadas en una sola serie.", "OptionBlockBooks": "Libros", @@ -1150,16 +1124,13 @@ "SystemDlnaProfilesHelp": "Los perfiles del sistema son de solo lectura. Los cambios a un perfil del sistema serán guardados en un nuevo perfil personalizado.", "TabAccess": "Acceso", "TabAdvanced": "Avanzado", - "TabAlbumArtists": "Artistas del álbum", "TabCatalog": "Catálogo", "TabContainers": "Contenedores", "TabDashboard": "Panel de control", "TabDirectPlay": "Reproducción directa", - "TabEpisodes": "Episodios", "TabLatest": "Recientes", "TabLogs": "Registros", "TabMusic": "Música", - "TabMusicVideos": "Videos musicales", "TabMyPlugins": "Mis complementos", "TabNetworks": "Cadenas", "TabNfoSettings": "Configuración de NFO", @@ -1170,12 +1141,10 @@ "TabProfile": "Perfil", "TabProfiles": "Perfiles", "TabResponses": "Respuestas", - "TabResumeSettings": "Reanudar", "TabScheduledTasks": "Tareas programadas", "TabServer": "Servidor", "TabSettings": "Configuración", "TabStreaming": "Transmisión", - "TabTrailers": "Trailers", "TabUpcoming": "Próximamente", "Tags": "Etiquetas", "TagsValue": "Etiquetas: {0}", @@ -1261,10 +1230,8 @@ "HeaderFavoriteArtists": "Artistas favoritos", "HeaderFavoriteSongs": "Canciones favoritas", "HeaderFavoriteVideos": "Videos favoritos", - "HeaderHome": "Inicio", "HeaderVideos": "Videos", "Horizontal": "Horizontal", - "LabelAudio": "Audio", "LabelAuthProvider": "Proveedor de autenticación:", "LabelDynamicExternalId": "{0} Id:", "LabelPasswordResetProvider": "Proveedor de restablecimiento de contraseña:", @@ -1317,7 +1284,6 @@ "SubtitleOffset": "Desplazamiento de subtítulos", "TV": "TV", "TabCodecs": "Códecs", - "TabInfo": "Información", "ValueMinutes": "{0} min", "ValueSeriesCount": "{0} series", "Vertical": "Vertical", diff --git a/src/strings/es.json b/src/strings/es.json index 09e5f5fcf4..b77192611c 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -49,30 +49,23 @@ "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Cambiar servidor", - "ButtonEdit": "Editar", - "ButtonEditImages": "Editar imágenes", "ButtonEditOtherUserPreferences": "Editar este perfil, la imagen y los ajustes personales.", - "ButtonFilter": "Filtro", "ButtonForgotPassword": "Contraseña olvidada", "ButtonFullscreen": "Pantalla completa", "ButtonGotIt": "Entendido", "ButtonGuide": "Guía", - "ButtonHome": "Inicio", "ButtonLibraryAccess": "Acceso a la biblioteca", "ButtonManualLogin": "Acceder manualmente", "ButtonMore": "Más", "ButtonNetwork": "Red", "ButtonNextTrack": "Pista siguiente", - "ButtonOff": "Apagado", "ButtonOk": "OK", "ButtonOpen": "Abrir", "ButtonParentalControl": "Control parental", "ButtonPause": "Pausa", - "ButtonPlay": "Reproducir", "ButtonPreviousTrack": "Pista anterior", "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guía de inicio rápido", - "ButtonRefresh": "Refrescar", "ButtonRefreshGuideData": "Actualizar datos de la guía", "ButtonRemove": "Quitar", "ButtonRename": "Renombrar", @@ -93,7 +86,6 @@ "ButtonStart": "Inicio", "ButtonStop": "Detener", "ButtonSubmit": "Enviar", - "ButtonSubtitles": "Subtítulos", "ButtonTrailer": "Tráiler", "ButtonUninstall": "Desinstalar", "ButtonWebsite": "Sitio web", @@ -156,7 +148,6 @@ "EnablePhotosHelp": "Las imágenes se detectarán y se mostrarán junto con otros archivos multimedia.", "EnableStreamLooping": "Bucle automático de las emisiones en directo", "EnableStreamLoopingHelp": "Habilite esto si las emisiones en directo sólo contienen unos pocos segundos de datos y necesitan ser solicitados continuamente.", - "EnableThemeVideos": "Vídeos temáticos", "Ended": "Finalizado", "EndsAtValue": "Termina a las {0}", "Episodes": "Episodios", @@ -203,11 +194,9 @@ "HeaderActiveDevices": "Dispositivos activos", "HeaderActiveRecordings": "Grabaciones activas", "HeaderActivity": "Actividad", - "HeaderAddScheduledTaskTrigger": "Agregar Activador", "HeaderAddToCollection": "Agregar a la colección", "HeaderAddToPlaylist": "Añadir a la lista de reproducción", "HeaderAddUpdateImage": "Añadir/Actualizar imagen", - "HeaderAddUser": "Agregar usuario", "HeaderAdditionalParts": "Partes adicionales", "HeaderAdmin": "Administrador", "HeaderAlert": "Alerta", @@ -218,11 +207,9 @@ "HeaderAudioBooks": "Audiolibros", "HeaderAudioSettings": "Ajustes de audio", "HeaderBlockItemsWithNoRating": "Bloquear artículos sin valoraciones o si son desconocidas:", - "HeaderBooks": "Libros", "HeaderCancelRecording": "Cancelar grabación", "HeaderCancelSeries": "Cancelar series", "HeaderCastAndCrew": "Reparto y equipo", - "HeaderCastCrew": "Reparto y equipo técnico", "HeaderChannelAccess": "Acceso a los canales", "HeaderChapterImages": "Imágenes de capítulos", "HeaderCodecProfile": "Perfil de códec", @@ -256,13 +243,11 @@ "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:", "HeaderFeatureAccess": "Permisos de acceso", "HeaderFetchImages": "Buscar imágenes:", "HeaderFetcherSettings": "Ajustes del capturador", "HeaderForKids": "Para niños", - "HeaderForgotPassword": "Contraseña olvidada", "HeaderFrequentlyPlayed": "Reproducido frecuentemente", "HeaderGuideProviders": "Proveedores de guías", "HeaderHttpHeaders": "Cabeceras HTTP", @@ -291,7 +276,6 @@ "HeaderLoginFailure": "Fallo de inicio de sesión", "HeaderMedia": "Medios", "HeaderMediaFolders": "Carpetas de medios", - "HeaderMediaInfo": "Información multimedia", "HeaderMetadataSettings": "Ajustes de etiquetas", "HeaderMoreLikeThis": "Más como este", "HeaderMusicVideos": "Vídeos musicales", @@ -442,7 +426,6 @@ "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 personalizado:", "LabelCustomCssHelp": "Aplicar su propio CSS personalizado 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 proporcionado por el dispositivo.", "LabelCustomRating": "Valoración pesonalizada:", "LabelDateAdded": "Fecha de añadido:", @@ -451,11 +434,10 @@ "LabelDay": "Día:", "LabelDeathDate": "Fecha de muerte:", "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.", + "LabelDefaultUserHelp": "Determina de qué 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:", "LabelDiscNumber": "Número de disco:", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en temporadas", "LabelDisplayMode": "Modo de visualización:", "LabelDisplayName": "Mostrar nombre:", "LabelDisplayOrder": "Mostrar orden:", @@ -607,7 +589,6 @@ "LabelPostProcessorArguments": "Argumentos de línea de comandos posprocesador:", "LabelPostProcessorArgumentsHelp": "Utilice {path} como ruta del archivo de grabación.", "LabelPreferredDisplayLanguage": "Idioma preferido visualizado:", - "LabelPreferredDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en marcha.", "LabelPreferredSubtitleLanguage": "Idioma de subtítulos preferido:", "LabelProfileAudioCodecs": "Códecs de audio:", "LabelProfileCodecs": "Códecs:", @@ -673,12 +654,9 @@ "LabelTimeLimitHours": "Límite de tiempo (horas):", "LabelTitle": "Título:", "LabelTrackNumber": "Número de pista:", - "LabelTranscodingAudioCodec": "Códec de audio:", - "LabelTranscodingContainer": "Contenedor:", "LabelTranscodingTempPathHelp": "Establece la carpeta que se usará para almacenar los archivos temporales de las conversiones. Déjalo en blanco para usar la ruta por defecto.", "LabelTranscodingThreadCount": "Núcleos a utilizar durante la conversión:", "LabelTranscodingThreadCountHelp": "Selecciona el número de núcleos a utilizar para la conversión. A menos núcleos, menor será el uso del procesador, pero puede que la conversión no vaya lo suficientemente rápido para una reproducción fluida.", - "LabelTranscodingVideoCodec": "Códec de video:", "LabelTriggerType": "Tipo de evento:", "LabelTunerIpAddress": "IP del sintonizador:", "LabelTunerType": "Tipo de sintonizador:", @@ -779,7 +757,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento inicia sesión en tu servidor local directamente.", "MessagePluginInstallDisclaimer": "Las extensiones creadas por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia 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:", "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.", @@ -1053,16 +1030,13 @@ "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": "Artistas de los álbumes", "TabCatalog": "Catálogo", "TabCodecs": "Códecs", "TabContainers": "Contenedores", "TabDashboard": "Panel de control", "TabDirectPlay": "Reproducción directa", - "TabEpisodes": "Episodios", "TabLatest": "Novedades", "TabMusic": "Música", - "TabMusicVideos": "Videos musicales", "TabMyPlugins": "Mis extensiones", "TabNetworks": "Cadenas", "TabNfoSettings": "Ajustes de NFO", @@ -1072,7 +1046,6 @@ "TabProfile": "Perfil", "TabProfiles": "Perfiles", "TabResponses": "Respuestas", - "TabResumeSettings": "Reanudación", "TabScheduledTasks": "Tareas programadas", "TabServer": "Servidor", "TabSettings": "Opciones", @@ -1175,7 +1148,6 @@ "EnableColorCodedBackgrounds": "Fondos con código de colores", "EnableExternalVideoPlayersHelp": "Se mostrará un menú para reproductor externo cuando comience la reproducción del vídeo.", "EnableNextVideoInfoOverlayHelp": "Al finalizar un vídeo, mostrar información sobre el siguiente de la lista de reproducción actual.", - "EnableThemeSongs": "Canciones temáticas", "EnableThemeSongsHelp": "Reproducir las canciones temáticas de fondo mientras se explora la biblioteca.", "EnableThemeVideosHelp": "Reproducir vídeos temáticos de fondo mientras se explora la biblioteca.", "ErrorDeletingItem": "Se ha producido un error eliminando el elemento del servidor Jellyfin. Por favor, comprueba que el servidor Jellyfin tiene permisos de escritura y prueba de nuevo.", @@ -1200,7 +1172,6 @@ "HeaderVideoType": "Tipo de vídeo", "Home": "Inicio", "Horizontal": "Horizontal", - "LabelAudio": "Audio", "LabelBurnSubtitles": "Incrustar subtítulos:", "LabelDateTimeLocale": "Fecha y hora local:", "LabelDefaultScreen": "Pantalla por defecto:", @@ -1215,7 +1186,6 @@ "LabelSkipForwardLength": "Tiempo de avance:", "LabelSortBy": "Ordenar por:", "LabelSortOrder": "Orden:", - "LabelSubtitles": "Subtítulos", "LabelTVHomeScreen": "Modo televisión en pantalla de inicio:", "LabelVersion": "Versión:", "LabelVideo": "Vídeo", @@ -1238,7 +1208,6 @@ "Off": "Apagado", "Option3D": "3D", "OptionAuto": "Automático", - "OptionAutomatic": "Automático", "OptionBanner": "Cabecera", "OptionBlockTrailers": "Tráilers", "OptionBluray": "Blu-ray", @@ -1255,7 +1224,6 @@ "HeaderFavoriteArtists": "Artistas favoritos", "HeaderFavoriteSongs": "Canciones favoritas", "HeaderFavoriteVideos": "Vídeos favoritos", - "HeaderHome": "Inicio", "LabelAuthProvider": "Proveedor de autenticación:", "LabelPasswordResetProvider": "Proveedor de restablecimiento de contraseña:", "LabelServerName": "Nombre del servidor:", @@ -1310,10 +1278,8 @@ "SubtitleAppearanceSettingsDisclaimer": "Estos ajustes no se aplicarán a los subtítulos gráficos (PGS, DVD, etc.), ni a ASS/SSA que tengan incluidos sus propios estilos.", "SubtitleOffset": "Desplazamiento de subtítulos", "TV": "Televisión", - "TabInfo": "Info", "TabLogs": "Registros", "TabPlugins": "Extensiones", - "TabTrailers": "Tráilers", "TagsValue": "Etiquetas: {0}", "ThemeSongs": "Banda sonora", "Trailers": "Tráilers", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 4014556e9e..3278f5e367 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -38,7 +38,6 @@ "Absolute": "Absoluto", "YadifBob": "YADIF Bob", "Trailers": "Trailers", - "TabTrailers": "Trailers", "OptionThumbCard": "Miniatura de imagen", "OptionResElement": "elemento reanudable", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", @@ -133,7 +132,6 @@ "TabSettings": "Configuración", "TabServer": "Servidor", "TabScheduledTasks": "Tareas programadas", - "TabResumeSettings": "Reanudar", "TabResponses": "Respuestas", "TabProfiles": "Perfiles", "TabProfile": "Perfil", @@ -145,11 +143,8 @@ "TabNetworking": "Redes", "TabNetworks": "Cadenas", "TabMyPlugins": "Mis complementos", - "TabMusicVideos": "Videos musicales", "TabMusic": "Música", "TabLogs": "Registros", - "TabInfo": "Información", - "TabEpisodes": "Episodios", "TabDirectPlay": "Reproducción directa", "TabDashboard": "Panel de control", "TabContainers": "Contenedores", @@ -239,7 +234,6 @@ "OptionBanner": "Banner", "OptionAutomaticallyGroupSeriesHelp": "Series que estén repartidas en múltiples carpetas dentro de esta biblioteca serán automáticamente fusionadas en una sola serie.", "OptionAutomaticallyGroupSeries": "Fusionar automáticamente series esparcidas a través de múltiples carpetas", - "OptionAutomatic": "Automático", "OptionAuto": "Automático", "OptionAscending": "Ascendente", "OptionArtist": "Artista", @@ -328,7 +322,6 @@ "MessageUnsetContentHelp": "El contenido será mostrado como carpetas simples. Para mejores resultados utiliza el administrador de metadatos para establecer los tipos de contenido para las subcarpetas.", "MessageUnableToConnectToServer": "No podemos conectarnos al servidor seleccionado en este momento. Por favor, asegúrate de que está funcionando e inténtalo de nuevo.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Las siguientes ubicaciones de medios se removerán de tu biblioteca:", - "MessageSettingsSaved": "Configuraciones guardadas.", "MessageReenableUser": "Ver abajo para volver a habilitar", "MessagePluginInstallDisclaimer": "Los complementos desarrollados por miembros de la comunidad son una gran forma de mejorar tu experiencia con características y beneficios adicionales. Antes de instalar, por favor, conoce el impacto que pueden ocasionar en tu servidor, tales como escaneo más largo de bibliotecas, procesamiento en segundo plano adicional y reducción de la estabilidad del sistema.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento por favor, inicia sesión en tu servidor local directamente.", @@ -402,7 +395,6 @@ "LabelTunerType": "Tipo de sintonizador:", "LabelTunerIpAddress": "Dirección IP del sintonizador:", "LabelTriggerType": "Tipo de disparador:", - "LabelTranscodingVideoCodec": "Códec de video:", "LabelTranscodingThreadCountHelp": "Selecciona el número máximo de hilos a utilizar al transcodificar. Reducir el número de hilos reducirá el uso de la CPU, pero es posible que no se convierta lo suficientemente rápido como para que la experiencia de reproducción sea fluida.", "LabelTranscodingThreadCount": "Conteo de hilos de la transcodificación:", "LabelTranscodingProgress": "Progreso de la transcodificación:", @@ -410,8 +402,6 @@ "LabelTranscodes": "Transcodificaciones:", "LabelTranscodingTempPathHelp": "Especifica una ruta personalizada para los archivos de transcodificación servidos a los clientes. Deja en blanco para utilizar el predeterminado del servidor.", "LabelTranscodePath": "Ruta de transcodificación:", - "LabelTranscodingContainer": "Contenedor:", - "LabelTranscodingAudioCodec": "Códec de audio:", "LabelTrackNumber": "Número de pista:", "LabelTitle": "Título:", "LabelTimeLimitHours": "Límite de tiempo (horas):", @@ -436,7 +426,6 @@ "MillisecondsUnit": "ms", "LabelSyncPlayTimeOffset": "Tiempo compensado respecto al servidor:", "LabelSupportedMediaTypes": "Tipos de medios soportados:", - "LabelSubtitles": "Subtítulos", "LabelSubtitlePlaybackMode": "Modo de subtítulo:", "LabelSubtitleFormatHelp": "Ejemplo: srt", "LabelSubtitleDownloaders": "Recolectores de subtítulos:", @@ -669,7 +658,6 @@ "LabelProfileCodecs": "Códecs:", "LabelProfileAudioCodecs": "Códecs de audio:", "LabelPreferredSubtitleLanguage": "Idioma preferido para los subtítulos:", - "LabelPreferredDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en curso.", "LabelPreferredDisplayLanguage": "Idioma de pantalla preferido:", "LabelPostProcessorArgumentsHelp": "Usar {path} como la ruta del archivo grabado.", "LabelPostProcessorArguments": "Argumentos de la línea de comandos del post-procesador:", @@ -802,7 +790,6 @@ "LabelDisplayOrder": "Orden para mostrar:", "LabelDisplayName": "Nombre a mostrar:", "LabelDisplayMode": "Modo de pantalla:", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar episodios faltantes en las temporadas", "LabelDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en curso.", "LabelDisplayLanguage": "Idioma de pantalla:", "LabelDiscNumber": "Número de disco:", @@ -820,7 +807,6 @@ "LabelDateAdded": "Fecha de adición:", "LabelCustomRating": "Calificación personalizada:", "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre personalizado para mostrar o déjalo vacío para usar el nombre reportado por el dispositivo.", - "LabelCustomDeviceDisplayName": "Nombre a mostrar:", "LabelCustomCssHelp": "Aplica tu propio estilo personalizado a la interfaz web.", "LabelCustomCss": "CSS personalizado:", "LabelCustomCertificatePathHelp": "Ruta a un archivo PKCS #12 que contiene un certificado y una clave privada para habilitar el soporte TLS en un dominio personalizado.", @@ -835,7 +821,6 @@ "LabelChannels": "Canales:", "LabelCertificatePasswordHelp": "Si tu certificado requiere una contraseña, por favor, introdúcela aquí.", "LabelCertificatePassword": "Contraseña del certificado:", - "TabAlbumArtists": "Artistas del álbum", "TabAdvanced": "Avanzado", "TabAccess": "Acceso", "TV": "TV", @@ -918,7 +903,6 @@ "LabelAudioChannels": "Canales de audio:", "LabelAudioBitrate": "Velocidad de bits de audio:", "LabelAudioBitDepth": "Profundidad de bits de audio:", - "LabelAudio": "Audio", "LabelArtistsHelp": "Separar múltiples artistas por punto y coma.", "LabelArtists": "Artistas:", "LabelAppNameExample": "Ejemplo: Sickbeard, Sonarr", @@ -1048,7 +1032,6 @@ "HeaderMusicQuality": "Calidad de la música", "HeaderMoreLikeThis": "Más como esto", "HeaderMetadataSettings": "Configuración de metadatos", - "HeaderMediaInfo": "Info del medio", "HeaderMediaFolders": "Carpetas de medios", "HeaderMedia": "Medios", "HeaderLoginFailure": "Falló el inicio de sesión", @@ -1076,10 +1059,8 @@ "HeaderIdentification": "Identificación", "HeaderHttpsSettings": "Opciones HTTPS", "HeaderHttpHeaders": "Encabezados HTTP", - "HeaderHome": "Inicio", "HeaderGuideProviders": "Proveedores de Guías de TV", "HeaderFrequentlyPlayed": "Reproducido frecuentemente", - "HeaderForgotPassword": "Olvidé mi contraseña", "HeaderForKids": "Para niños", "HeaderFetcherSettings": "Configuración del recolector", "HeaderFetchImages": "Obtener imágenes:", @@ -1129,7 +1110,6 @@ "HeaderFavoriteBooks": "Libros favoritos", "HeaderExternalIds": "IDs externos:", "HeaderError": "Error", - "HeaderEpisodes": "Episodios", "HeaderEnabledFieldsHelp": "Desmarca un campo para bloquearlo y prevenir que sus datos sean cambiados.", "HeaderEnabledFields": "Campos habilitados", "HeaderEditImages": "Editar imágenes", @@ -1163,12 +1143,10 @@ "HeaderCodecProfile": "Perfil de códec", "HeaderChapterImages": "Imágenes de los capítulos", "HeaderChannelAccess": "Acceso a los canales", - "HeaderCastCrew": "Reparto y equipo", "HeaderCastAndCrew": "Reparto y equipo", "HeaderCancelSeries": "Cancelar serie", "HeaderCancelRecording": "Cancelar grabación", "HeaderBranding": "Establecer marca", - "HeaderBooks": "Libros", "HeaderBlockItemsWithNoRating": "Bloquear elementos sin clasificación o con información de clasificación desconocida:", "HeaderAudioSettings": "Configuración de audio", "HeaderAudioBooks": "Audiolibros", @@ -1182,11 +1160,9 @@ "HeaderAlert": "Alerta", "HeaderAdmin": "Administrador", "HeaderAdditionalParts": "Partes adicionales", - "HeaderAddUser": "Agregar usuario", "HeaderAddUpdateImage": "Agregar/Actualizar Imagen", "HeaderAddToPlaylist": "Agregar a lista de reproducción", "HeaderAddToCollection": "Agregar a colección", - "HeaderAddScheduledTaskTrigger": "Agregar disparador", "HeaderActivity": "Actividad", "HeaderActiveRecordings": "Grabaciones activas", "HeaderActiveDevices": "Dispositivos activos", @@ -1244,9 +1220,7 @@ "EnableDetailsBannerHelp": "Mostrar una imagen banner en la parte superior de la página de detalles del elemento.", "EnableDetailsBanner": "Banner de detalles", "EnableThemeVideosHelp": "Reproducir videos temáticos en el fondo mientras se navega por la biblioteca.", - "EnableThemeVideos": "Videos temáticos", "EnableThemeSongsHelp": "Reproducir canciones temáticas en el fondo mientras se navega por la biblioteca.", - "EnableThemeSongs": "Canciones temáticas", "EnableStreamLoopingHelp": "Habilita esta opción si las transmisiones en vivo contienen solo unos pocos segundos de datos y necesitan ser solicitadas continuamente. Habilitar esto cuando no es requerido puede causar problemas.", "EnableStreamLooping": "Repetir automáticamente las transmisiones en vivo", "EnablePhotosHelp": "Las imágenes serán detectadas y mostradas junto con otros archivos multimedia.", @@ -1342,7 +1316,6 @@ "ButtonUninstall": "Desinstalar", "ButtonTrailer": "Trailer", "ButtonTogglePlaylist": "Lista de reproducción", - "ButtonSubtitles": "Subtítulos", "ButtonSubmit": "Enviar", "ButtonSplit": "Dividir", "ButtonStop": "Detener", @@ -1364,31 +1337,24 @@ "ButtonRename": "Renombrar", "ButtonRemove": "Remover", "ButtonRefreshGuideData": "Actualizar datos de la guía", - "ButtonRefresh": "Actualizar", "ButtonQuickStartGuide": "Guía de inicio rápido", "ButtonProfile": "Perfil", "ButtonPreviousTrack": "Pista anterior", - "ButtonPlay": "Reproducir", "ButtonPause": "Pausar", "ButtonParentalControl": "Control parental", "ButtonOpen": "Abrir", "ButtonOk": "OK", - "ButtonOff": "Apagar", "ButtonNextTrack": "Pista siguiente", "ButtonNetwork": "Red", "ButtonMore": "Más", "ButtonManualLogin": "Inicio de sesión manual", "ButtonLibraryAccess": "Acceso a biblioteca(s)", "ButtonInfo": "Info", - "ButtonHome": "Inicio", "ButtonGuide": "Guía", "ButtonGotIt": "Hecho", "ButtonFullscreen": "Pantalla completa", "ButtonForgotPassword": "Olvidé mi contraseña", - "ButtonFilter": "Filtro", "ButtonEditOtherUserPreferences": "Editar el perfil, la imagen y las preferencias personales de este usuario.", - "ButtonEditImages": "Editar imágenes", - "ButtonEdit": "Editar", "ButtonChangeServer": "Cambiar servidor", "ButtonCancel": "Cancelar", "ButtonBack": "Atrás", @@ -1475,5 +1441,6 @@ "LabelSubtitleVerticalPosition": "Posición vertical:", "PreviousTrack": "Saltar al anterior", "MessageGetInstalledPluginsError": "Ocurrió un error buscando la lista de complementos instalados.", - "MessagePluginInstallError": "Ocurrió un error instalando el complemento." + "MessagePluginInstallError": "Ocurrió un error instalando el complemento.", + "PlaybackRate": "Tasa de reproducción" } diff --git a/src/strings/fa.json b/src/strings/fa.json index 61c2f8f26c..c68bab1124 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -7,9 +7,7 @@ "Browse": "مرور کردن", "ButtonAddUser": "افزودن کاربر", "ButtonCancel": "لغو کردن", - "ButtonFilter": "فیلتر", "ButtonOk": "خوب", - "ButtonPlay": "پخش", "ButtonQuickStartGuide": "راهنمای شروع سریع", "ButtonResetPassword": "تنظیم مجدد رمز", "ButtonSignOut": "Sign out", @@ -20,7 +18,6 @@ "FolderTypeMusic": "موسیقی‌ها", "FolderTypeMusicVideos": "موزیک ویدیوها", "FolderTypeTvShows": "سریال‌های تلویزیونی", - "HeaderAddUser": "اضافه کردن کاربر", "HeaderContinueWatching": "ادامه تماشا", "HeaderCustomDlnaProfiles": "پروفایل های سفارشی", "HeaderDeviceAccess": "دسترسی دستگاه", @@ -44,7 +41,6 @@ "LabelCurrentPassword": "رمز فعلی:", "LabelCustomCertificatePath": "مسیر اختصاصی گواهینامه SSL:", "LabelCustomCertificatePathHelp": "پچ به فایل PKCS #12 حاوی یک گواهینامه و کلید خصوصی است تا پشتیبانی از TLS را در یک دامنه شخصی فعال کند.", - "LabelDisplayMissingEpisodesWithinSeasons": "نمایش قسمت های ناموجود در بین فصل ها", "LabelFinish": "پایان", "LabelLanguage": "زبان:", "LabelMaxParentalRating": "حداکثر امتیاز سنی مجاز والدین:", @@ -79,10 +75,7 @@ "ShowAdvancedSettings": "نمایش تنظیمات پیشرفته", "TabAccess": "دسترسی", "TabAdvanced": "پیشرفته", - "TabAlbumArtists": "هنرمندان آلبوم", - "TabEpisodes": "قسمت ها", "TabLatest": "جدیدترین‌ها", - "TabMusicVideos": "موزیک ویدیوها", "TabNetworks": "شبکه ها", "TabNotifications": "اعلان ها", "TabProfile": "پروفایل", @@ -134,26 +127,21 @@ "ButtonRename": "تغییر نام", "ButtonRemove": "حذف", "ButtonRefreshGuideData": "به‌روز‌رسانی داده‌ی راهنما", - "ButtonRefresh": "به‌روز‌رسانی", "ButtonProfile": "نمایه", "ButtonNextTrack": "ترانه پسین", "ButtonPreviousTrack": "ترانه پیشین", "ButtonPause": "مکث", "ButtonParentalControl": "رتبه بندی والدین", "ButtonOpen": "باز", - "ButtonOff": "خاموش", "ButtonNetwork": "شبکه", "ButtonMore": "بیشتر", "ButtonManualLogin": "ورود دستی", "ButtonLibraryAccess": "دسترسی به کتابخانه", "ButtonInfo": "اطلاعات", - "ButtonHome": "خانه", "ButtonGuide": "راهنما", "ButtonGotIt": "متوجه شدم", "ButtonFullscreen": "تمام صفحه", "ButtonForgotPassword": "فراموشی گذرواژه", - "ButtonEditImages": "ویرایش عکس‌ها", - "ButtonEdit": "ویرایش", "ButtonChangeServer": "تغییر سرور", "ButtonBack": "بازگشت", "ButtonArrowRight": "راست", @@ -196,8 +184,6 @@ "Episodes": "قسمت‌ها", "EndsAtValue": "تمام شده در {0}", "Ended": "تمام شده", - "EnableThemeVideos": "تم فیلم‌ها", - "EnableThemeSongs": "آهنگ‌های تم", "EnableStreamLooping": "چرخش خودکار پخش‌های زنده", "EnablePhotos": "نمایش عکس‌ها", "EnableNextVideoInfoOverlay": "نمایش اطلاعات ودیوی بعدی حین پخش ویدیو", @@ -266,7 +252,6 @@ "ButtonWebsite": "وبسایت", "ButtonUninstall": "حذف نصب", "ButtonTrailer": "تریلر", - "ButtonSubtitles": "زیرنویس‌ها", "ButtonSubmit": "تایید", "ButtonSplit": "جدا کردن", "ButtonStop": "توقف", @@ -305,7 +290,6 @@ "HeaderMusicQuality": "کیفیت آهنگ", "HeaderMoreLikeThis": "موارد مشابه با این", "HeaderMetadataSettings": "تنظیمات ابرداده", - "HeaderMediaInfo": "اطلاعات رسانه", "HeaderMediaFolders": "پوشه‌های رسانه", "HeaderMedia": "رسانه", "HeaderLoginFailure": "ورود ناموفق", @@ -328,10 +312,8 @@ "HeaderIdentificationCriteriaHelp": "حداقل یک مورد تعیین هویت وارد کنید.", "HeaderIdentification": "تعیین هویت", "HeaderHttpHeaders": "سرفصل‌های HTTP", - "HeaderHome": "خانه", "HeaderGuideProviders": "ارائه دهنده داده راهنمای تلویزیونی", "HeaderFrequentlyPlayed": "اغلب پخش شده", - "HeaderForgotPassword": "فراموشی گذرواژه", "HeaderForKids": "برای کودکان", "HeaderFetchImages": "دریافت عکس‌ها:", "HeaderFeatureAccess": "دسترسی‌های برجسته", @@ -341,7 +323,6 @@ "HeaderFavoriteBooks": "کتاب‌های مورد علاقه", "HeaderExternalIds": "ID های خارجی:", "HeaderError": "خطا", - "HeaderEpisodes": "قسمت‌ها", "HeaderEnabledFieldsHelp": "یک فیلد را برای جلوگیری از تغییر در داده‌ی آن علامت بزنید تا قفل بشود.", "HeaderEnabledFields": "فیلد‌های فعال شده", "HeaderEditImages": "ویرایش عکس‌ها", @@ -362,11 +343,9 @@ "HeaderCodecProfile": "نمایه کدک", "HeaderChapterImages": "عکس‌های سکانس", "HeaderChannelAccess": "دسترسی به کانال", - "HeaderCastCrew": "بازیگران و کارکنان", "HeaderCastAndCrew": "بازیگران و کارکنان", "HeaderCancelSeries": "لغو سریال", "HeaderCancelRecording": "لغو ضبط", - "HeaderBooks": "کتاب‌ها", "HeaderBlockItemsWithNoRating": "موارد مسدود شده با نقص یا عدم وجود اطلاعات امتیاز:", "LabelSkipIfAudioTrackPresentHelp": "این گزینه را عدم انتخاب کنید تا اطمینان حاصل کنید که همه ویدیوها فارغ از زبان صوت، زیرنویس دارند.", "LabelSkipIfAudioTrackPresent": "اگر صدای پیش‌فرض با زبان دانلودی یکسان است پرش کن", @@ -387,7 +366,6 @@ "ButtonAudioTracks": "آهنگ‌ها", "AlbumArtist": "هنرمند آلبوم", "Album": "آلبوم", - "HeaderAddScheduledTaskTrigger": "افزودن فعال‌ساز", "HeaderActivity": "فعالیت‌ها", "HeaderActiveRecordings": "ضبط‌های فعال", "HeaderActiveDevices": "دستگاه‌های فعال", @@ -517,7 +495,6 @@ "LabelImportOnlyFavoriteChannels": "محدود کردن کانال‌هایی که به عنوان مورد علاقه انتخاب شده‌اند", "LabelDateAdded": "تاریخ اضافه شده:", "LabelCustomRating": "امتیازدهی سفارشی:", - "LabelCustomDeviceDisplayName": "نام نمایشی:", "LabelCustomCssHelp": "ظاهر سفارشی مورد نظر خود را در رابط وب اعمال کنید.", "LabelCustomCss": "CSS سفارشی:", "LabelCriticRating": "امتیاز منتقدان:", @@ -529,7 +506,6 @@ "LabelHomeNetworkQuality": "کیفیت شبکه خانگی:", "LabelHardwareAccelerationTypeHelp": "تسریع کننده سخت افزاری نیاز به پیکربندی اضافی دارد.", "LabelSupportedMediaTypes": "نوع‌ رسانه‌های پشتیبانی شده:", - "LabelSubtitles": "زیرنویس‌ها", "LabelSubtitlePlaybackMode": "حالت زیرنویس:", "LabelSubtitleFormatHelp": "مثال: srt", "LabelSubtitleDownloaders": "دانلود کننده زیرنویس:", @@ -582,14 +558,12 @@ "OptionParentalRating": "رتبه بندی والدین", "OptionOnInterval": "در یک فاصله", "BookLibraryHelp": "کتاب‌های صوتی و متنی پشتیبانی می‌شوند. {0} راهنمای نامگذاری کتاب {1} را مرور کنید.", - "TabInfo": "اطلاعات", "TabDirectPlay": "پخش مستقیم", "TabDashboard": "داشبورد", "TabCodecs": "کدک‌ها", "TabCatalog": "فهرست", "TV": "تلویزیون", "Sunday": "یکشنبه", - "TabTrailers": "تریلرها", "Suggestions": "پیشنهادها", "Subtitles": "زیرنویس‌ها", "Studios": "استودیو‌ها", @@ -608,7 +582,6 @@ "TabSettings": "تنظیمات", "TabServer": "سرور", "TabScheduledTasks": "وظایف زمان بندی شده", - "TabResumeSettings": "ادامه", "TabResponses": "پاسخ‌ها", "TabPlugins": "افزونه‌ها", "TabParentalControl": "رتبه بندی والدین", @@ -768,7 +741,6 @@ "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", "LabelArtistsHelp": "Separate multiple using ;", - "LabelAudio": "Audio", "LabelAudioBitDepth": "Audio bit depth:", "LabelAudioBitrate": "Audio bitrate:", "LabelAudioChannels": "Audio channels:", @@ -926,7 +898,6 @@ "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", "OptionArtist": "Artist", "OptionAuto": "Auto", - "OptionAutomatic": "Auto", "OptionAutomaticallyGroupSeries": "Automatically merge series that are spread across multiple folders", "OptionAutomaticallyGroupSeriesHelp": "If enabled, series that are spread across multiple folders within this library will be automatically merged into a single series.", "OptionBanner": "Banner", @@ -1142,7 +1113,6 @@ "LabelPostProcessorArguments": "Post-processor command line arguments:", "LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.", "LabelPreferredDisplayLanguage": "Preferred display language:", - "LabelPreferredDisplayLanguageHelp": "Translating Jellyfin is an ongoing project.", "LabelPreferredSubtitleLanguage": "Preferred subtitle language:", "LabelProfileAudioCodecs": "Audio codecs:", "LabelProfileCodecs": "Codecs:", @@ -1227,8 +1197,6 @@ "LabelTime": "Time:", "LabelTitle": "Title:", "LabelTrackNumber": "Track number:", - "LabelTranscodingAudioCodec": "Audio codec:", - "LabelTranscodingContainer": "Container:", "LabelTranscodePath": "Transcode path:", "LabelTranscodingTempPathHelp": "Specify a custom path for the transcode files served to clients. Leave blank to use the server default.", "LabelTranscodes": "Transcodes:", @@ -1236,7 +1204,6 @@ "LabelTranscodingProgress": "Transcoding progress:", "LabelTranscodingThreadCount": "Transcoding thread count:", "LabelTranscodingThreadCountHelp": "Select the maximum number of threads to use when transcoding. Reducing the thread count will lower CPU usage but may not convert fast enough for a smooth playback experience.", - "LabelTranscodingVideoCodec": "Video codec:", "LabelTriggerType": "Trigger Type:", "LabelTunerIpAddress": "Tuner IP Address:", "LabelTunerType": "Tuner type:", @@ -1326,7 +1293,6 @@ "MessagePlayAccessRestricted": "Playback of this content is currently restricted. Please contact your server administrator for more information.", "MessagePluginInstallDisclaimer": "Plugins built by Jellyfin community members are a great way to enhance your Jellyfin experience with additional features and benefits. Before installing, please be aware of the effects they may have on your Jellyfin Server, such as longer library scans, additional background processing, and decreased system stability.", "MessageReenableUser": "See below to reenable", - "MessageSettingsSaved": "Settings saved.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "The following media locations will be removed from your library:", "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", diff --git a/src/strings/fi.json b/src/strings/fi.json index 7eddf8e17f..9481f59b4f 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -16,7 +16,6 @@ "LabelAudioLanguagePreference": "Äänen ensisijainen kieli:", "LabelCountry": "Maa:", "LabelCurrentPassword": "Tämän hetkinen salsana:", - "LabelDisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot kausien sisällä", "LabelFinish": "Valmis", "LabelLanguage": "Kieli:", "LabelMaxParentalRating": "Suurin sallittu ikäraja:", @@ -101,32 +100,25 @@ "ButtonAudioTracks": "Ääniraidat", "ButtonBack": "Takaisin", "ButtonChangeServer": "Vaihda Palvelinta", - "ButtonEdit": "Muokkaa", - "ButtonEditImages": "Muokkaa kuvia", "ButtonEditOtherUserPreferences": "Muokkaa tämän käyttäjän profiilia, kuvaa ja henkilökohtaisia asetuksia.", - "ButtonFilter": "Suodata", "ButtonForgotPassword": "Unohtuiko salasana", "ButtonFullscreen": "Kokonäyttötila", "ButtonGotIt": "Selvä", "ButtonGuide": "Opas", - "ButtonHome": "Koti", "ButtonInfo": "Tiedot", "ButtonLibraryAccess": "Kiraston pääsy", "ButtonManualLogin": "Manuaalinen kirjautuminen", "ButtonMore": "Lisää", "ButtonNetwork": "Verkko", "ButtonNextTrack": "Seuraava raita", - "ButtonOff": "Pois päältä", "ButtonOk": "Ok", "ButtonOpen": "Avaa", "BurnSubtitlesHelp": "Määrittää mikäli palvelimen pitäisi polttaa tekstitykset suoraan videoon muunnoksen aikana riippuen tekstitysten formaatista. Tekstitysten polttamisen välttäminen parantaa palvelimen suorituskykyä. Valitse Automaattinen polttaaksesi sekä kuva- (esim. VOBSUB, PGS, SUB/IDX, jne.) että tekstipohjaiset (ASS/SSA) formaatit.", "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", @@ -145,7 +137,6 @@ "ButtonStart": "Käynnistä", "ButtonStop": "Pysäytä", "ButtonSubmit": "Lähetä", - "ButtonSubtitles": "Tekstitykset", "ButtonTrailer": "Traileri", "ButtonUninstall": "Poista asennus", "ButtonWebsite": "Nettisivusto", @@ -240,7 +231,6 @@ "EndsAtValue": "Päättyy {0}", "Ended": "Päättynyt", "EnableThemeSongsHelp": "Soita tunnussäveliä taustalla selatessasi kirjastoa.", - "EnableThemeSongs": "Tunnuslaulut", "EnableStreamLoopingHelp": "Laita tämä päälle, jos suoratoistot sisältävät vain muutaman sekuntin verran dataa jota tarvitsee pyytää jatkuvasti. Tämän päälle laittaminen ilman toiminnon tarvetta voi aiheuttaa ongelmia.", "EnablePhotosHelp": "Kuvat tunnistetaan ja näytetään muiden media-tiedostojen ohessa.", "EnablePhotos": "Näytä valokuvat", @@ -264,7 +254,6 @@ "ErrorAddingXmlTvFile": "XMLTV-tiedostoa käyttäessä tapahtui virhe. Varmista, että tiedosto on olemassa ja kokeile uudestaan.", "ErrorAddingTunerDevice": "Viritintä lisätessä ilmeni ongelma. Varmista, että se on kytketty oikein ja kokeile uudestaan.", "EnableThemeVideosHelp": "Soita tunnusvideoita taustalla, selatessasi kirjastoa.", - "EnableThemeVideos": "Tunnusvideot", "AlbumArtist": "Albumin Artisti", "Album": "Albumi", "Played": "Toistetut", @@ -382,10 +371,8 @@ "LabelDisplayMode": "Näyttötila:", "LabelDateTimeLocale": "Päivämäärä ja aika:", "LabelCustomRating": "Mukautettu luokitus:", - "LabelCustomDeviceDisplayName": "Näyttönimi:", "LabelCustomCss": "Mukautettu CSS:", "LabelCertificatePassword": "Sertifikaatin salasana:", - "LabelAudio": "Audio", "LabelArtistsHelp": "Erota useita käyttämällä ;", "LabelAppNameExample": "Esimerkiksi: Sickbeard, Sonarr", "LabelAppName": "Sovelluksen nimi", @@ -470,7 +457,6 @@ "OptionDateAdded": "Lisäyspäivä", "OptionDaily": "Päivittäinen", "OptionBluray": "Blu-ray", - "TabTrailers": "Trailerit", "OptionBlockTvShows": "TV-sarjat", "OptionBlockTrailers": "Trailerit", "OptionBlockMusic": "Musiikki", @@ -478,7 +464,6 @@ "HeaderMoreLikeThis": "Lisää tällaista", "HeaderMetadataSettings": "Metadata-asetukset", "MoreMediaInfo": "Mediainfo", - "HeaderMediaInfo": "Mediainfo", "HeaderMediaFolders": "Mediakansiot", "HeaderMedia": "Media", "HeaderLibraryFolders": "Kirjaston kansiot", @@ -564,7 +549,6 @@ "LabelTextBackgroundColor": "Tekstin taustaväri:", "LabelSupportedMediaTypes": "Tuetut mediatyypit:", "LabelTag": "Tunniste:", - "LabelSubtitles": "Tekstitykset", "LabelSubtitleFormatHelp": "Esimerkki: srt", "LabelStatus": "Status:", "LabelSource": "Lähde:", @@ -580,7 +564,6 @@ "LabelProtocolInfo": "Protokollan info:", "LabelProtocol": "Protokolla:", "LabelPreferredSubtitleLanguage": "Ensisijainen tekstityksen kieli:", - "LabelPreferredDisplayLanguageHelp": "Jellyfinin kääntäminen on käynnissä oleva projekti.", "LabelPlayerDimensions": "Soittimen mitat:", "LabelPlayer": "Soitin:", "LabelPlaylist": "Soittolista:", @@ -636,22 +619,17 @@ "TabSettings": "Asetukset", "TabServer": "Palvelin", "TabScheduledTasks": "Ajastetut tehtävät", - "TabResumeSettings": "Jatka", "TabResponses": "Vastaukset", "TabPlugins": "Liitännäiset", "TabNfoSettings": "NFO-asetukset", "TabNetworks": "Verkot", "TabMyPlugins": "Omat liittännäiseni", - "TabMusicVideos": "Musiikkivideot", "TabMusic": "Musiikki", "TabLogs": "Lokit", "TabLatest": "Uusimmat", - "TabInfo": "Tiedot", - "TabEpisodes": "Jaksot", "TabDirectPlay": "Suoratoisto", "TabDashboard": "Päänäkymä", "TabCatalog": "Luettelo", - "TabAlbumArtists": "Albumin artistit", "TabAdvanced": "Edistynyt", "TV": "TV", "Sunday": "Sunnuntai", @@ -703,7 +681,6 @@ "RecordingCancelled": "Tallennus peruttu.", "RecordSeries": "Tallenna sarja", "Record": "Tallenna", - "OptionAutomatic": "Auto", "OptionAuto": "Auto", "OptionAscending": "Nousevassa järjestyksessä", "OptionArtist": "Artisti", @@ -784,7 +761,6 @@ "MetadataManager": "Metadatan hallintatyökalu", "Metadata": "Metadata", "MessageYouHaveVersionInstalled": "Sinulla on versio {0} asennettuna.", - "MessageSettingsSaved": "Asetukset tallennettu.", "MessagePleaseWait": "Ole hyvä ja odota. Tämä voi kestää hetken.", "MessageNothingHere": "Täällä ei ole mitään.", "MessageNoPluginsInstalled": "Sinulla ei ole asennettuna yhtään liitännäistä.", @@ -863,10 +839,8 @@ "HeaderMusicQuality": "Musiikin laatu", "HeaderLibraries": "Kirjastot", "HeaderIdentification": "Tunnistautuminen", - "HeaderForgotPassword": "Unohtuiko salasana", "HeaderForKids": "Lapsille", "HeaderError": "Virhe", - "HeaderEpisodes": "Jaksot", "HeaderEditImages": "Muokkaa kuvia", "HeaderDevices": "Laitteet", "HeaderDeleteItems": "Poista valitut", @@ -878,12 +852,10 @@ "HeaderAudioSettings": "Ääniasetukset", "GroupBySeries": "Ryhmitä sarjan perusteella", "Fullscreen": "Kokonäyttötila", - "HeaderBooks": "Kirjat", "HeaderAudioBooks": "Äänikirjat", "HeaderApiKeys": "API-avaimet", "HeaderApiKey": "API-avain", "HeaderAdmin": "Ylläpitäjä", - "HeaderAddUser": "Lisää käyttäjä", "HeaderAddUpdateImage": "Lisää/Päivitä kuva", "HeaderAddToPlaylist": "Lisää soittolistaan", "HeaderAddToCollection": "Lisää kokoelmaan", @@ -1012,7 +984,6 @@ "LabelVideoBitrate": "Videon bitrate:", "LabelWeb": "Web:", "LabelVideoCodec": "Videon codec:", - "LabelTranscodingVideoCodec": "Video codec:", "LabelSkipIfGraphicalSubsPresent": "Ohita, jos video sisältää upotetut tekstitykset", "LabelInternetQuality": "Verkkoyhteyden laatu:", "LabelEmbedAlbumArtDidl": "Upota albumin kuvamateriaali Didl:iin", @@ -1066,8 +1037,6 @@ "LabelAudioChannels": "Audiokanavia:", "LabelAudioBitrate": "Audion bitrate:", "LabelAudioCodec": "Audio codec:", - "LabelTranscodingContainer": "Säiliö:", - "LabelTranscodingAudioCodec": "Audio codec:", "LabelSubtitleDownloaders": "Tekstitysten lataajat:", "LabelSpecialSeasonsDisplayName": "Erikoiskauden näyttönimi:", "LabelSortTitle": "Lajitteluotsikko:", @@ -1151,7 +1120,6 @@ "ErrorAddingListingsToSchedulesDirect": "Lineuppia Schedules Direct -käyttäjätunnuksellesi lisättäessä ilmeni virhe. Schedules Direct sallii vain rajallisen määrän lineuppeja yhdelle käyttäjätunnukselle. Mikäli haluat jatkaa, voit esimerkiksi kirjautua Schedules Direct -sivustolle ja poistaa muita listauksia käyttäjätunnukseltasi.", "EnableDecodingColorDepth10Vp9": "Salli 10-bittinen hardware dekoodaus (VP9)", "EnableDecodingColorDepth10Hevc": "Salli 10-bittinen hardware dekoodaus (HEVC)", - "HeaderCastCrew": "Näyttelijät ja henkilökunta", "HeaderCastAndCrew": "Näyttelijät ja henkilökunta", "HeaderCancelSeries": "Peruuta sarja", "HeaderCancelRecording": "Peruuta tallennus", @@ -1161,6 +1129,5 @@ "ApiKeysCaption": "Lista aktiivisista API-avaimista", "HeaderApiKeysHelp": "Ulkoiset sovellukset tarvitsevat API-avaimen voidakseen toimia Jellyfin -palvelimen kanssa. Avaimet myönnetään joko kirjautumalla sisään Jellyfin -käyttäjätunnuksella tai myöntämällä sellainen sovellukselle manuaalisesti.", "HeaderAdditionalParts": "Muut osat", - "HeaderAddScheduledTaskTrigger": "Lisää laukaisin", "HeaderActiveRecordings": "Käynnissä olevat nauhoitukset" } diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 15973b5f36..0edd6168f6 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -12,7 +12,7 @@ "Disconnect": "Se déconnecter", "Download": "Télécharger", "Edit": "Modifier", - "EnableDisplayMirroring": "Activer l'affichage mirroir", + "EnableDisplayMirroring": "Duplication d'écran", "EndsAtValue": "Se termine à {0}", "File": "Fichier", "FolderTypeTvShows": "Séries TV", @@ -40,7 +40,7 @@ "NewCollectionHelp": "Les collections vous permettent de créer des regroupements personnalisés de films et d'autres contenus de la bibliothèque.", "NewCollectionNameExample": "Exemple: Collection Star Wars", "NoSubtitleSearchResultsFound": "Aucun résultat trouvé.", - "OptionNew": "Nouveau...", + "OptionNew": "Nouveau…", "OriginalAirDateValue": "Date de diffusion originale: {0}", "ParentalRating": "Classement parentale", "Premiere": "Première", @@ -57,7 +57,7 @@ "SearchForSubtitles": "Rechercher des sous-titres", "SeriesCancelled": "Série annulée.", "SeriesRecordingScheduled": "Enregistrement en série programmé.", - "ServerUpdateNeeded": "Ce serveur Jellyfin doit être mis à jour. Pour télécharger la dernière version, veuillez visiter {0}", + "ServerUpdateNeeded": "Ce serveur doit être mis à jour. Pour télécharger la dernière version, veuillez visiter {0}", "Share": "Partager", "Subtitles": "Sous-titres", "Sunday": "Dimanche", @@ -72,7 +72,7 @@ "WelcomeToProject": "Bienvenue dans Jellyfin !", "WizardCompleted": "C'est tout ce dont nous avons besoin pour l'instant. Jellyfin a commencé à collecter les informations de votre bibliothèque de médias. Jetez un oeil à quelques unes de nos applications, puis cliquez sur Terminer pour consulter le Tableau de bord du serveur.", "Absolute": "Absolu", - "AccessRestrictedTryAgainLater": "L'accès est actuellement restreint. Veuillez réessayer plus tard.", + "AccessRestrictedTryAgainLater": "Accès restreint. Veuillez réessayer plus tard.", "Actor": "Acteur(trice)", "AddToPlayQueue": "Ajouter à la file d'attente", "AddedOnValue": "Ajouté le {0}", @@ -91,7 +91,7 @@ "AllowMediaConversionHelp": "Autoriser ou refuser l'accès à la fonctionnalité de conversion des médias.", "AllowOnTheFlySubtitleExtraction": "Autoriser l'extraction des sous-titres à la volée", "AllowOnTheFlySubtitleExtractionHelp": "Les sous-titres intégrés peuvent être extraits des vidéos et distribués aux clients en format texte pour éviter le transcodage. Sur certains systèmes, cela peut prendre du temps et arrêter la lecture de la vidéo pendant le processus d'extraction. Désactivez cette option pour graver les sous-titres avec un transcodage quand l'appareil ne les prend pas en charge nativement.", - "AllowRemoteAccess": "Autoriser les connexions distantes à ce serveur Jellyfin.", + "AllowRemoteAccess": "Autoriser les connexions à distance sur ce serveur Jellyfin.", "AllowRemoteAccessHelp": "Si l'option est désactivée, toutes les connexions distantes seront bloquées.", "Artists": "Artistes", "Books": "Livres", @@ -108,11 +108,11 @@ "Songs": "Chansons", "Sync": "Synchroniser", "AllowedRemoteAddressesHelp": "Liste d'adresses IP ou d'IP/masque de sous-réseau séparées par des virgules qui seront autorisées à se connecter à distance. Si la liste est vide, toutes les adresses distantes seront autorisées.", - "AlwaysPlaySubtitles": "Toujours afficher les sous-titres", - "AlwaysPlaySubtitlesHelp": "Les sous-titres correspondant à la préférence linguistique seront chargés indépendamment de la langue de l'audio.", + "AlwaysPlaySubtitles": "Toujours afficher", + "AlwaysPlaySubtitlesHelp": "Les sous-titres correspondant à la préférence linguistique seront chargés sans tenir compte de la langue de l'audio.", "AnyLanguage": "N'importe quelle langue", "Anytime": "N'importe quand", - "AroundTime": "Aux environs de {0}", + "AroundTime": "Environ", "Art": "Illustration", "AsManyAsPossible": "Autant que possible", "Ascending": "Croissant", @@ -141,24 +141,20 @@ "ButtonAudioTracks": "Pistes Audio", "ButtonBack": "Retour arrière", "ButtonChangeServer": "Changer de serveur", - "ButtonEdit": "Modifier", - "ButtonEditImages": "Modifier les images", "ButtonEditOtherUserPreferences": "Modifier ce profil utilisateur, son avatar et ses préférences personnelles.", - "ButtonFilter": "Filtre", "ButtonForgotPassword": "Mot de passe oublié", "ButtonFullscreen": "Plein écran", "ButtonGuide": "Guide", - "ButtonHome": "Accueil", "ButtonInfo": "Informations", "ButtonLibraryAccess": "Accès à la médiathèque", "ButtonManualLogin": "Connexion manuelle", "ButtonMore": "Plus", "ButtonNetwork": "Réseau", - "AspectRatio": "Format de visionnement", + "AspectRatio": "Format de l'image", "AskAdminToCreateLibrary": "Demander un administrateur de créer une médiathèque.", "Artist": "Artiste", - "AllowFfmpegThrottlingHelp": "Quand un transcodage ou rémux se déplace après la position de relecture, suspendre le processus pour consommer moins de ressources. Ceci est le plus utile pour chercher moins. Désactiver s'il y a des problèmes de relecture.", - "AllowFfmpegThrottling": "Restreindre la vitesse de transcodage", + "AllowFfmpegThrottlingHelp": "Quand un transcodage ou un remultiplexage a traité une période suffisamment longue depuis la position de lecture, le processus sera interrompu afin d'économiser des ressources. Ceci est utile principalement lors de lectures continues. À désactiver si vous éprouvez des problèmes de lecture.", + "AllowFfmpegThrottling": "Limiter la vitesse de transcodage", "AlbumArtist": "Artiste de l'Album", "Album": "Album", "AuthProviderHelp": "Sélectionner un fournisseur d'authentification pour authentifier le mot de passe de cet utilisateur.", @@ -173,7 +169,7 @@ "DatePlayed": "Date écoutée", "DateAdded": "Date d'ajout", "CriticRating": "Évaluation critique", - "CopyStreamURLSuccess": "L'URL a été copié avec succès.", + "CopyStreamURLSuccess": "URL copié avec succès.", "CopyStreamURL": "Copier l'URL du stream", "ContinueWatching": "Continuer à visionner", "Connect": "Connexion", @@ -188,10 +184,9 @@ "Categories": "Catégories", "CancelSeries": "Annuler la série", "CancelRecording": "Annuler l'enregistrement", - "ButtonWebsite": "Site web", + "ButtonWebsite": "Site Web", "ButtonUninstall": "Désinstaller", "ButtonTogglePlaylist": "Liste de lecture", - "ButtonSubtitles": "Sous-titres", "ButtonSubmit": "Soumettre", "ButtonStop": "Arrêt", "ButtonStart": "Démarrer", @@ -209,15 +204,33 @@ "ButtonRename": "Renommer", "ButtonRemove": "Enlever", "ButtonRefreshGuideData": "Rafraîchir les données de guide", - "ButtonRefresh": "Rafraîchir", "ButtonProfile": "Profil", "ButtonPreviousTrack": "Piste précédente", - "ButtonPlay": "Lecture", "ButtonPause": "Pause", "ButtonParentalControl": "Contrôle parentale", "ButtonOpen": "Ouvrir", "ButtonOk": "OK", "ButtonNextTrack": "Prochaine piste", "ButtonAddImage": "Ajouter l'image", - "BoxSet": "Coffret" + "BoxSet": "Coffret", + "ChangingMetadataImageSettingsNewContent": "Les modifications aux paramètres de téléchargement de métadonnées et d'illustrations seront appliquées seulement au nouveau contenu de votre médiathèque. Vous devrez actualiser les métadonnées manuellement pour que les changements soient appliqués à l'ensemble de votre contenu.", + "ButtonTrailer": "Bande-annonce", + "ButtonSplit": "Couper", + "ButtonSelectView": "Sélectionner l'affichage", + "LabelSubtitleVerticalPosition": "Position verticale :", + "ClearQueue": "Effacer la file d'attente", + "DashboardServerName": "Serveur : {0}", + "DashboardVersionNumber": "Version : {0}", + "LabelVersionInstalled": "{0} installée", + "LabelVersion": "Version :", + "LabelValue": "Valeur :", + "LabelVideo": "Vidéo", + "DashboardArchitecture": "Architecture : {0}", + "DashboardOperatingSystem": "Système d'exploitation : {0}", + "ConfigureDateAdded": "Configure la façon dont la date d'ajout est déterminée dans le tableau de board dans les paramètres de la médiathèque", + "Composer": "Compositeur(trice)", + "CommunityRating": "Évaluation de la communauté", + "ColorTransfer": "Transfert de couleur", + "ColorSpace": "Espace colorimétrique", + "ColorPrimaries": "Primaires colorimétriques" } diff --git a/src/strings/fr.json b/src/strings/fr.json index 4bab5a6179..ad0c997ba7 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -25,7 +25,7 @@ "AllowRemoteAccess": "Autoriser les connexions distantes à ce serveur.", "AllowRemoteAccessHelp": "Si l'option est désactivée, toutes les connexions distantes seront bloquées.", "AllowedRemoteAddressesHelp": "Liste d'adresses IP ou d'IP/masque de sous-réseau séparées par des virgules qui seront autorisées à se connecter à distance. Si la liste est vide, toutes les adresses distantes seront autorisées.", - "AlwaysPlaySubtitles": "Toujours afficher les sous-titres", + "AlwaysPlaySubtitles": "Toujours afficher", "AlwaysPlaySubtitlesHelp": "Les sous-titres correspondant à la préférence linguistique seront chargés indépendamment de la langue de l'audio.", "AnyLanguage": "N'importe quel langage", "Anytime": "N'importe quand", @@ -58,29 +58,22 @@ "ButtonBack": "Retour arrière", "ButtonCancel": "Annuler", "ButtonChangeServer": "Changer de serveur", - "ButtonEdit": "Modifier", - "ButtonEditImages": "Modifier les images", "ButtonEditOtherUserPreferences": "Modifier ce profil utilisateur, son avatar et ses préférences personnelles.", - "ButtonFilter": "Filtre", "ButtonForgotPassword": "Mot de passe oublié", "ButtonFullscreen": "Plein écran", "ButtonGotIt": "Compris", - "ButtonHome": "Accueil", "ButtonInfo": "Informations", "ButtonLibraryAccess": "Accès à la médiathèque", "ButtonManualLogin": "Connexion manuelle", "ButtonMore": "Plus", "ButtonNetwork": "Réseau", "ButtonNextTrack": "Piste suivante", - "ButtonOff": "Arrêt", "ButtonOk": "OK", "ButtonOpen": "Ouvrir", "ButtonParentalControl": "Contrôle parental", - "ButtonPlay": "Lire", "ButtonPreviousTrack": "Piste précédente", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Guide de démarrage rapide", - "ButtonRefresh": "Actualiser", "ButtonRefreshGuideData": "Actualiser les données du guide", "ButtonRemove": "Supprimer", "ButtonRename": "Renommer", @@ -101,7 +94,6 @@ "ButtonStart": "Commencer", "ButtonStop": "Arrêter", "ButtonSubmit": "Soumettre", - "ButtonSubtitles": "Sous-titres", "ButtonTrailer": "Bande-annonce", "ButtonUninstall": "Désinstaller", "ButtonWebsite": "Site Web", @@ -189,9 +181,7 @@ "EnablePhotosHelp": "Les images seront détectées et affichées avec les autres fichiers multimédia.", "EnableStreamLooping": "Reboucler les streaming en direct", "EnableStreamLoopingHelp": "Activez cette option si les streaming en direct ne contiennent que quelques secondes de données et doivent être redemandés continuellement. N'activez pas cette option sans raison car elle peut causer des problèmes.", - "EnableThemeSongs": "Thèmes musicaux", "EnableThemeSongsHelp": "Lire les thèmes musicaux en arrière-plan pendant la navigation dans la médiathèque.", - "EnableThemeVideos": "Thèmes vidéos", "EnableThemeVideosHelp": "Lire les thèmes vidéos en arrière-plan tout en parcourant la médiathèque.", "Ended": "Terminé", "EndsAtValue": "Se termine à {0}", @@ -243,11 +233,9 @@ "HeaderActiveDevices": "Appareils actifs", "HeaderActiveRecordings": "Enregistrements actifs", "HeaderActivity": "Activité", - "HeaderAddScheduledTaskTrigger": "Ajouter un déclencheur", "HeaderAddToCollection": "Ajouter à la collection", "HeaderAddToPlaylist": "Ajouter à la liste de lecture", "HeaderAddUpdateImage": "Ajouter/Mettre à jour une image", - "HeaderAddUser": "Ajouter un utilisateur", "HeaderAdditionalParts": "Parties additionelles", "HeaderAdmin": "Administrateur", "HeaderAlbumArtists": "Artistes", @@ -261,12 +249,10 @@ "HeaderAudioBooks": "Livres audios", "HeaderAudioSettings": "Réglages audio", "HeaderBlockItemsWithNoRating": "Bloquer les éléments avec des informations de classification inconnues ou n'en disposant pas :", - "HeaderBooks": "Livres", "HeaderBranding": "Slogan", "HeaderCancelRecording": "Annuler l'enregistrement", "HeaderCancelSeries": "Annuler la série", "HeaderCastAndCrew": "Distribution & équipe", - "HeaderCastCrew": "Distribution & équipe", "HeaderChannelAccess": "Accès aux chaînes", "HeaderChapterImages": "Images des chapitres", "HeaderCodecProfile": "Profil de codec", @@ -300,14 +286,12 @@ "HeaderEditImages": "Modifier les images", "HeaderEnabledFields": "Activer les champs", "HeaderEnabledFieldsHelp": "Décocher un champ pour le verrouiller et empêcher ses données d'être modifiées.", - "HeaderEpisodes": "Épisodes", "HeaderError": "Erreur", "HeaderExternalIds": "Identifiants externes :", "HeaderFeatureAccess": "Accès aux fonctionnalités", "HeaderFetchImages": "Télécharger les images :", "HeaderFetcherSettings": "Paramètres du récupérateur", "HeaderForKids": "Jeunesse", - "HeaderForgotPassword": "Mot de passe oublié", "HeaderFrequentlyPlayed": "Fréquemment lus", "HeaderGuideProviders": "Fournisseurs de données de guides TV", "HeaderHttpHeaders": "En-têtes HTTP", @@ -335,7 +319,6 @@ "HeaderLoginFailure": "Échec de la connexion", "HeaderMedia": "Média", "HeaderMediaFolders": "Dossiers multimédias", - "HeaderMediaInfo": "Informations du média", "HeaderMetadataSettings": "Paramètres des métadonnées", "HeaderMoreLikeThis": "Similaires", "HeaderMusicQuality": "Qualité de la musique :", @@ -492,7 +475,6 @@ "LabelCustomCertificatePathHelp": "Chemin vers un fichier PKCS #12 contenant un certificat et une clé privée pour activer le support TLS sur un domaine utilisateur.", "LabelCustomCss": "CSS personnalisée :", "LabelCustomCssHelp": "Appliquez votre propre feuille de styles personnalisée à l'interface web.", - "LabelCustomDeviceDisplayName": "Nom d'affichage :", "LabelCustomDeviceDisplayNameHelp": "Entrez un nom d'affichage personnalisé ou laissez vide pour utiliser le nom rapporté par l'appareil.", "LabelCustomRating": "Note personnalisée :", "LabelDateAdded": "Date d'ajout :", @@ -509,7 +491,6 @@ "LabelDiscNumber": "Numéro de disque :", "LabelDisplayLanguage": "Langue d'affichage :", "LabelDisplayLanguageHelp": "La traduction de Jellyfin est un projet en cours.", - "LabelDisplayMissingEpisodesWithinSeasons": "Afficher les épisodes manquants dans les saisons", "LabelDisplayMode": "Mode d'affichage :", "LabelDisplayName": "Nom d'affichage :", "LabelDisplayOrder": "Ordre d'affichage :", @@ -665,7 +646,6 @@ "LabelPostProcessorArguments": "Arguments en ligne de commande du post-processeur :", "LabelPostProcessorArgumentsHelp": "Utiliser {path} comme chemin d'accès au fichier d'enregistrement.", "LabelPreferredDisplayLanguage": "Langue d'affichage préférée :", - "LabelPreferredDisplayLanguageHelp": "La traduction de Jellyfin est un projet en cours.", "LabelPreferredSubtitleLanguage": "Langue de sous-titrage préférée :", "LabelProfileAudioCodecs": "Codecs audio :", "LabelProfileCodecs": "Codecs :", @@ -725,7 +705,6 @@ "LabelSubtitleDownloaders": "Outils de téléchargement de sous-titres :", "LabelSubtitleFormatHelp": "Exemple : srt", "LabelSubtitlePlaybackMode": "Mode des sous-titres :", - "LabelSubtitles": "Sous-titres", "LabelSupportedMediaTypes": "Types de médias supportés :", "LabelTVHomeScreen": "Écran d'accueil du mode TV :", "LabelTag": "Étiquette :", @@ -738,12 +717,9 @@ "LabelTimeLimitHours": "Limite de temps (heures) :", "LabelTitle": "Titre :", "LabelTrackNumber": "Numéro de piste :", - "LabelTranscodingAudioCodec": "Codec audio :", - "LabelTranscodingContainer": "Conteneur :", "LabelTranscodingTempPathHelp": "Spécifiez un chemin personnalisé pour les fichiers transcodés envoyés aux clients. Laissez vide pour utiliser le chemin par défaut du serveur.", "LabelTranscodingThreadCount": "Nombre de threads de transcodage :", "LabelTranscodingThreadCountHelp": "Sélectionnez le nombre maximum de threads à utiliser pour le transcodage. La réduction de cette valeur réduira l'utilisation du processeur mais pourrait ne pas suffire pour maintenir une lecture fluide.", - "LabelTranscodingVideoCodec": "Codec vidéo :", "LabelTriggerType": "Type de déclencheur :", "LabelTunerIpAddress": "Adresse IP du tuner :", "LabelTunerType": "Type de tuner :", @@ -850,7 +826,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Pour configurer cette extension, veuillez vous connecter directement à votre serveur local.", "MessagePluginInstallDisclaimer": "Les extensions développées par les membres de la communauté sont une excellente manière d'améliorer votre expérience avec de nouvelles fonctionnalités. Avant toute installation, veuillez prendre connaissance de l'impact qu'elles peuvent avoir sur le serveur, comme l'augmentation de la durée d'actualisation de la médiathèque, de nouvelles tâches de fond, ou un système moins stable.", "MessageReenableUser": "Voir ci-dessous pour le réactiver", - "MessageSettingsSaved": "Paramètres enregistrés.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Ces emplacements de média vont être supprimés de votre médiathèque :", "MessageUnableToConnectToServer": "Nous sommes dans l'impossibilité de nous connecter au serveur sélectionné. Veuillez vérifier qu'il est opérationnel et réessayez.", "MessageUnsetContentHelp": "Le contenu sera affiché sous forme de dossiers. Pour un résultat optimal, utilisez le gestionnaire de métadonnées pour définir le type de contenu des sous-dossiers.", @@ -914,7 +889,6 @@ "OptionArtist": "Artiste", "OptionAscending": "Croissant", "OptionAuto": "Automatique", - "OptionAutomatic": "Automatique", "OptionAutomaticallyGroupSeries": "Fusionner automatiquement les séries qui sont réparties en plusieurs dossiers", "OptionAutomaticallyGroupSeriesHelp": "Les séries qui sont réparties en plusieurs dossiers dans la médiathèque seront automatiquement fusionnées en une seule série.", "OptionBlockBooks": "Livres", @@ -1143,16 +1117,13 @@ "SystemDlnaProfilesHelp": "Les profils système sont en lecture seule. Les modifications apportées à un profil système seront enregistrées sous un nouveau profil personnalisé.", "TabAccess": "Accès", "TabAdvanced": "Avancé", - "TabAlbumArtists": "Artistes de l'album", "TabCatalog": "Catalogue", "TabContainers": "Conteneurs", "TabDashboard": "Tableau de bord", "TabDirectPlay": "Lecture directe", - "TabEpisodes": "Épisodes", "TabLatest": "Derniers", "TabLogs": "Journaux", "TabMusic": "Musique", - "TabMusicVideos": "Vidéos musicales", "TabMyPlugins": "Mes extensions", "TabNetworks": "Réseaux", "TabNfoSettings": "Paramètres NFO", @@ -1161,11 +1132,9 @@ "TabProfile": "Profil", "TabProfiles": "Profils", "TabResponses": "Réponses", - "TabResumeSettings": "Reprise", "TabScheduledTasks": "Tâches planifiées", "TabServer": "Serveur", "TabSettings": "Paramètres", - "TabTrailers": "Bandes-annonces", "TabUpcoming": "À venir", "Tags": "Étiquettes", "TagsValue": "Mots clés: {0}", @@ -1248,7 +1217,6 @@ "HeaderTuners": "Égaliseur", "Horizontal": "Horizontal", "Images": "Images", - "LabelAudio": "Audio", "LeaveBlankToNotSetAPassword": "Laissez vide pour ne pas définir de mot de passe.", "Logo": "Logo", "MediaInfoCodec": "Codec", @@ -1274,7 +1242,6 @@ "Suggestions": "Suggestions", "TV": "Tv", "TabCodecs": "Codecs", - "TabInfo": "Informations", "TabNotifications": "Notifications", "TabPlugins": "Extensions", "TabStreaming": "Streaming", @@ -1299,7 +1266,6 @@ "MediaInfoStreamTypeVideo": "Video", "AuthProviderHelp": "Sélectionner un fournisseur d'authentification pour authentifier le mot de passe de cet utilisateur.", "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", "LabelUserLoginAttemptsBeforeLockout": "Tentatives de connexion échouées avant que l'utilisateur ne soit verrouillé :", "DashboardOperatingSystem": "Système d'Exploitation: {0}", "DashboardArchitecture": "Architecture : {0}", @@ -1475,5 +1441,6 @@ "SubtitleVerticalPositionHelp": "Numéro de ligne où le texte apparaît. Un nombre positif compte les lignes de haut en bas. Un nombre négatif, de bas en haut.", "LabelSubtitleVerticalPosition": "Position verticale :", "MessageGetInstalledPluginsError": "Une erreur est survenue lors de la récupération de la liste des extensions installées.", - "MessagePluginInstallError": "Une erreur est survenue durant l'installation de l'extension." + "MessagePluginInstallError": "Une erreur est survenue durant l'installation de l'extension.", + "PlaybackRate": "Vitesse de lecture" } diff --git a/src/strings/gsw.json b/src/strings/gsw.json index f144e1ca65..a16a28910c 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -15,7 +15,6 @@ "FolderTypeMusicVideos": "Musigvideos", "FolderTypeTvShows": "TV", "Friday": "Friitig", - "HeaderAddUser": "Erstell en User", "HeaderDeviceAccess": "Grät Zuegriff", "HeaderEasyPinCode": "Eifache Pin Code", "HeaderFrequentlyPlayed": "Vell gspellt", @@ -30,7 +29,6 @@ "LabelContentType": "Date Art:", "LabelCountry": "Land:", "LabelCurrentPassword": "Jetzigs Passwort:", - "LabelDisplayMissingEpisodesWithinSeasons": "Zeig fehlendi Episode innerhalb vo de einzelne Staffle", "LabelFinish": "Beende", "LabelLanguage": "Sproch:", "LabelMaxParentalRating": "Maximum erlaubti Kindersicherig:", @@ -81,11 +79,8 @@ "Sunday": "Sonntig", "TabAccess": "Zuegriff", "TabAdvanced": "Erwiitert", - "TabAlbumArtists": "Album-Artist", "TabCatalog": "Katalog", - "TabEpisodes": "Episode", "TabLatest": "Letschti", - "TabMusicVideos": "Musigvideos", "TabMyPlugins": "Miini Plugins", "TabNetworks": "Studios", "TabNotifications": "Mitteilige", diff --git a/src/strings/he.json b/src/strings/he.json index 667db59d9e..828f140465 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -17,12 +17,9 @@ "MessageBrowsePluginCatalog": "עבור לקטלוג התוספים לראות אילו זמינים.", "ButtonAddUser": "הוסף משתמש", "ButtonCancel": "בטל", - "ButtonEdit": "ערוך", - "ButtonFilter": "מסנן", "ButtonGotIt": "הבנתי", "ButtonManualLogin": "התחברות ידנית", "ButtonOk": "בסדר", - "ButtonPlay": "נגן", "ButtonQuickStartGuide": "מדריך מהיר", "ButtonRefreshGuideData": "רענן את מדריך השידור", "ButtonRemove": "הסר", @@ -78,11 +75,9 @@ "HeaderActiveRecordings": "הקלטות פעילות", "HeaderAddToCollection": "להוסיף לאוסף", "HeaderAddToPlaylist": "הוסף לרשימת ניגון", - "HeaderAddUser": "הוסף משתמש", "HeaderAdditionalParts": "חלקים נוספים", "HeaderCancelRecording": "ביטול הקלטה", "HeaderCancelSeries": "בטל סדרה", - "HeaderCastCrew": "שחקנים וצוות", "HeaderConfirmPluginInstallation": "אשר התקנת תוסף", "HeaderCustomDlnaProfiles": "פרופילים מותאמים אישית", "HeaderDeleteItem": "מחק פריט", @@ -160,7 +155,6 @@ "LabelDefaultUser": "משתמש ברירת מחדש:", "LabelDefaultUserHelp": "מגדיר אילו ספריות משתמש יוצגו במכשירים מחוברים. ניתן לעקוף זאת לכל מכשיר על ידי שימוש בפרופילים.", "LabelDiscNumber": "מספר דיסק:", - "LabelDisplayMissingEpisodesWithinSeasons": "הצג פרקים חסרים בתוך העונות", "LabelDisplayOrder": "סדר תצוגה:", "LabelDownMixAudioScaleHelp": "הגבר את עוצמת השמע כאשר הוא ממוזג. ערך השווה ל-1 יישמר את העוצמה המקורית.", "LabelDynamicExternalId": "{0} תעודת זהות:", @@ -218,7 +212,6 @@ "LabelPlaceOfBirth": "מקום לידה:", "LabelPlaylist": "רשימת ניגון:", "LabelPreferredDisplayLanguage": "שפת תצוגה מועדפת:", - "LabelPreferredDisplayLanguageHelp": "תרגום Jellyfin הוא תהליך מתמשך.", "LabelProfileAudioCodecs": "מקודדי שמע:", "LabelProfileCodecs": "מקודדים:", "LabelProfileVideoCodecs": "‮מקודדי וידאו:", @@ -290,7 +283,6 @@ "OptionAllowUserToManageServer": "אפשר למשתמש זה לנהל את השרת", "OptionArtist": "אמן", "OptionAscending": "סדר עולה", - "OptionAutomatic": "אוטומטי", "OptionBlockMovies": "סרטים", "OptionBlockTvShows": "תוכניות טלויזיה", "OptionBluray": "בלו-ריי", @@ -414,15 +406,11 @@ "SystemDlnaProfilesHelp": "פרופלי מערכת הם לקריאה בלבד. שינויים בפרופילי מערכת ישמרו לפרופיל מוצאם אישית חדש.", "TabAccess": "גישה", "TabAdvanced": "מתקדם", - "TabAlbumArtists": "אמני אלבום", "TabCatalog": "קטלוג", "TabCodecs": "מקודדים", "TabDashboard": "לוח בקרה", - "TabEpisodes": "פרקים", - "TabInfo": "מידע", "TabLatest": "אחרון", "TabMusic": "מוסיקה", - "TabMusicVideos": "קליפים", "TabMyPlugins": "התוספים שלי", "TabNetworks": "רשתות", "TabNotifications": "התראות", @@ -430,7 +418,6 @@ "TabProfiles": "פרופילים", "TabServer": "שרת", "TabSettings": "הגדרות", - "TabTrailers": "טריילרים", "TabUpcoming": "בקרוב", "Tags": "מילות מפתח", "TellUsAboutYourself": "ספר לנו על עצמך", @@ -520,7 +507,6 @@ "ContinueWatching": "המשך לצפות", "ButtonUninstall": "הסר התקנה", "ButtonTrailer": "קדימון", - "ButtonSubtitles": "כתוביות", "ButtonSplit": "פיצול", "ButtonStop": "עצור", "ButtonSettings": "הגדרות", @@ -533,9 +519,7 @@ "ButtonNetwork": "רשת", "ButtonMore": "עוד", "ButtonInfo": "מידע", - "ButtonHome": "בית", "ButtonFullscreen": "מסך מלא", - "ButtonEditImages": "ערוך תמונות", "ButtonAddServer": "הוסף שרת", "ButtonAddMediaLibrary": "הוסף ספריית מדיה", "ButtonAddImage": "הוסף תמונה", @@ -576,14 +560,12 @@ "HeaderLibraries": "ספריות", "HeaderInstall": "התקנה", "HeaderImageOptions": "הגדרות תמונה", - "HeaderHome": "בית", "HeaderForKids": "עבור ילדים", "HeaderFavoriteVideos": "סרטונים מועדפים", "HeaderFavoritePeople": "אנשים מועדפים", "HeaderFavoriteMovies": "סרטים מועדפים", "HeaderFavoriteBooks": "ספרים מועדפים", "HeaderError": "שגיאה", - "HeaderEpisodes": "פרקים", "HeaderDownloadSync": "הורדה וסנכרון", "HeaderDevices": "מכשירים", "HeaderDeveloperInfo": "מידע למפתח", @@ -595,13 +577,11 @@ "HeaderConfirmRevokeApiKey": "‫בטל מפתח API", "HeaderCastAndCrew": "שחקנים וצוות", "HeaderBranding": "מיתוג", - "HeaderBooks": "ספרים", "HeaderAudioSettings": "הגדרות שמע", "HeaderAudioBooks": "ספרים מוקלטים", "HeaderApiKeys": "‫מפתחות API", "HeaderApiKey": "‫מפתח API", "HeaderAddUpdateImage": "הוסף/עדכן תמונה", - "HeaderAddScheduledTaskTrigger": "הוסף טריגר", "HeaderActivity": "פעילות", "Guide": "מדריך", "Genre": "ז'אנר", @@ -620,7 +600,6 @@ "Episodes": "פרקים", "EnableThemeSongsHelp": "נגן שירי פתיח ברגע בעת העיון בספרייה.", "ThemeSongs": "שירי פתיח", - "EnableThemeSongs": "שירי פתיח", "EnablePhotos": "הצג תמונות", "EnableHardwareEncoding": "הפעל קידוד חומרה", "EnableExternalVideoPlayers": "נגני וידאו חיצוניים", @@ -646,16 +625,13 @@ "ButtonScanAllLibraries": "סרוק את כל הספריות", "ButtonRevoke": "בטל", "TabScheduledTasks": "משימות מתוזמנות", - "TabResumeSettings": "המשך צפייה", "ButtonResume": "המשך", - "ButtonRefresh": "רענון", "ButtonProfile": "פרופיל", "ButtonOpen": "פתח", "HeaderTracks": "רצועות", "ButtonPreviousTrack": "הרצועה הקודמת", "ButtonNextTrack": "הרצועה הבאה", "ButtonGuide": "מדריך", - "HeaderForgotPassword": "שחזור סיסמה", "ButtonForgotPassword": "שחזור סיסמה", "ButtonEditOtherUserPreferences": "ערוך את הפרופיל, התמונה וההגדרות האישיות של משתמש זה.", "ButtonChangeServer": "החלף שרת", @@ -681,7 +657,6 @@ "CinemaModeConfigurationHelp": "מצב קולנוע מביא את חוויית הקולנוע היישר אל הסלון עם האפשרות להפעיל טריילרים וקדימונים מותאמים אישית לפני הסרט.", "ChannelAccessHelp": "בחר את הערוצים לשיתוף עם משתמש זה. מנהלים יוכלו לערוך את כל הערוצים בעזרת מנהל המטא-דאטה.", "ButtonResetEasyPassword": "אתחל קוד פין פשוט", - "ButtonOff": "כיבוי", "ButtonLibraryAccess": "הרשאות גישה לספרייה", "BurnSubtitlesHelp": "מחליט אם על השרת לצרוב כתוביות בזמן קידוד וידאו. הימנעות מכך תשפר מאוד את הביצועים. בחר \"אוטומטי\" לצריבת כתוביות על בסיס פורמט תמונה (VOBSUB, PGS, SUB, IDX, …) וכתוביות ASS או SSA מסויימות.", "Artist": "אמן", @@ -707,7 +682,6 @@ "DashboardOperatingSystem": "מערכת הפעלה: {0}", "HeaderMyMediaSmall": "המדיה שלי (קטן)", "HeaderMusicQuality": "איכות מוזיקה", - "HeaderMediaInfo": "מידע על המדיה", "HeaderMoreLikeThis": "עוד כמו זה", "HeaderMedia": "מדיה", "LabelMetadata": "מטא-דאטה:", @@ -730,7 +704,6 @@ "LabelDidlMode": "מצב DIDL:", "LabelDeviceDescription": "תיאור מכשיר", "LabelDefaultScreen": "מסך ברירת-מחדל:", - "LabelCustomDeviceDisplayName": "שם תצוגה:", "LabelImageType": "סוג תמונה:", "LabelHttpsPortHelp": "מספר פורט ה-TCP עבור שרת ה-HTTPS.", "LabelHttpsPort": "מספר פורט HTTPS מקומי:", diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 6a22cb170c..bacff9aca2 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -1,7 +1,6 @@ { "ButtonQuickStartGuide": "तुरंत आरंभ मार्गदर्शिका", "ButtonSignOut": "Sign out", - "HeaderAddUser": "उपयोगकर्ता जोडें", "LabelFinish": "समाप्त", "LabelYoureDone": "आपने पूरा कर लिया है!", "MoreUsersCanBeAddedLater": "अधिक उपयोगकर्ताओं को बाद में डैशबोर्ड के अंतर्गत जोड़ा जा सकता है।", @@ -33,22 +32,17 @@ "AllowMediaConversionHelp": "मीडिया परिवर्तन के लिये अनुमति दें", "AllowMediaConversion": "मीडिया रूपांतरण की अनुमति दें", "ButtonOk": "ठीक", - "ButtonOff": "बंद", "ButtonNextTrack": "आगे धावन पथ", "ButtonNetwork": "संजाल", "ButtonMore": "अधिक", "ButtonManualLogin": "मैनुअल लॉगिन", "ButtonLibraryAccess": "पुस्तकालय का उपयोग", "ButtonInfo": "जानकारी", - "ButtonHome": "घर", "ButtonGuide": "मार्गदर्शक", "ButtonGotIt": "समझ गया", "ButtonFullscreen": "पूर्ण स्क्रीन", "ButtonForgotPassword": "पासवर्ड भूल गए", - "ButtonFilter": "निस्पंदन", "ButtonEditOtherUserPreferences": "इस उपयोगकर्ता की प्रोफ़ाइल, छवि और व्यक्तिगत प्राथमिकताएँ संपादित करें।", - "ButtonEditImages": "छवियों को संपादित करें", - "ButtonEdit": "संपादित करें", "ButtonChangeServer": "सर्वर बदलें", "ButtonCancel": "रद्द करना", "ButtonBack": "वापस", diff --git a/src/strings/hr.json b/src/strings/hr.json index afbdbf2c22..169d50ad6c 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -25,29 +25,23 @@ "ButtonBack": "Nazad", "ButtonCancel": "Odustani", "ButtonChangeServer": "Promijeni Server", - "ButtonEdit": "Izmjeni", - "ButtonEditImages": "Uređivanje slika", "ButtonEditOtherUserPreferences": "Uredite ovaj korisnički profil, slike i osobne postavke.", "ButtonForgotPassword": "Zaboravili ste lozinku", "ButtonFullscreen": "Puni zaslon", "ButtonGotIt": "Shvaćam", "ButtonGuide": "Vodič", - "ButtonHome": "Početna", "ButtonLibraryAccess": "Pristup biblioteci", "ButtonManualLogin": "Ručna prijava", "ButtonMore": "Više", "ButtonNetwork": "Mreža", "ButtonNextTrack": "Sljedeća pjesma", - "ButtonOff": "Isključi", "ButtonOk": "U redu", "ButtonOpen": "Otvori", "ButtonParentalControl": "Roditeljska kontrola", "ButtonPause": "Pauza", - "ButtonPlay": "Pokreni", "ButtonPreviousTrack": "Prethodna pjesma", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Vodič za brzi početak", - "ButtonRefresh": "Osviježi", "ButtonRefreshGuideData": "Osvježi TV vodič", "ButtonRemove": "Ukloni", "ButtonRename": "Preimenuj", @@ -66,7 +60,6 @@ "ButtonSignOut": "Odjava", "ButtonStart": "Početak", "ButtonSubmit": "Podnesi", - "ButtonSubtitles": "Titlovi", "ButtonTrailer": "Kratki video", "ButtonUninstall": "Ukloni", "ButtonWebsite": "Web stranica", @@ -144,11 +137,9 @@ "HeaderActiveDevices": "Aktivni uređaji", "HeaderActiveRecordings": "Aktivna snimanja", "HeaderActivity": "Aktivnosti", - "HeaderAddScheduledTaskTrigger": "Dodaj okidač", "HeaderAddToCollection": "Dodaj u kolekciju", "HeaderAddToPlaylist": "Dodaj u popis", "HeaderAddUpdateImage": "Dodaj/ažuriraj sliku", - "HeaderAddUser": "Dodaj korisnika", "HeaderAdditionalParts": "Dodatni djelovi", "HeaderAlert": "Uzbuna", "HeaderApiKey": "API ključ", @@ -156,12 +147,10 @@ "HeaderApiKeysHelp": "Vanjske aplikacije moraju imati API ključ kako bi komunicirale s Jellyfin Serverom. Ključevi se izdaju prijavom s Jellyfin računom ili ručnim odobravanjem zahtjeva ključa.", "HeaderApp": "Aplikacija", "HeaderAudioSettings": "Postavke zvuka", - "HeaderBooks": "Knjige", "HeaderBranding": "Brendiranje", "HeaderCancelRecording": "Prekini snimanje", "HeaderCancelSeries": "Otkaži serije", "HeaderCastAndCrew": "Glumci i ekipa", - "HeaderCastCrew": "Glumci i ekipa", "HeaderChannelAccess": "Pristup kanalima", "HeaderCodecProfile": "Profil kodeka", "HeaderCodecProfileHelp": "Profili kodeka definiraju ograničenja kada uređaji izvode sadržaj u specifičnom kodeku. Ako se ograničenja podudaraju tada će sadržaj biti transkodiran, iako je kodek konfiguriran za direktno izvođenje.", @@ -188,12 +177,10 @@ "HeaderEditImages": "Uređivanje slika", "HeaderEnabledFields": "Omogući polja", "HeaderEnabledFieldsHelp": "Poništi polje za zaključavanje i spriječi njihove podatke od toga da budu promijenjeni.", - "HeaderEpisodes": "Epizode", "HeaderError": "Greška", "HeaderFeatureAccess": "Pristup opcijama", "HeaderFetchImages": "Dohvati slike:", "HeaderForKids": "Za djecu", - "HeaderForgotPassword": "Zaboravili ste lozinku", "HeaderFrequentlyPlayed": "Često izvođeno", "HeaderGuideProviders": "Pružatelji vodiča", "HeaderHttpHeaders": "HTTP zaglavlja", @@ -216,7 +203,6 @@ "HeaderLoginFailure": "Neuspjela prijava", "HeaderMedia": "Medij", "HeaderMediaFolders": "Medijska mapa", - "HeaderMediaInfo": "Info medija", "HeaderMetadataSettings": "Postavke meta-podataka", "HeaderMoreLikeThis": "Više ovakvih", "HeaderMusicVideos": "Muzički spotovi", @@ -334,7 +320,6 @@ "LabelCurrentPassword": "Sadašnja lozinka:", "LabelCustomCss": "Prilagođeni CSS:", "LabelCustomCssHelp": "Primijenite svoj vlastiti prilagođeni stil na web sučelje.", - "LabelCustomDeviceDisplayName": "Prikaz naziva:", "LabelCustomDeviceDisplayNameHelp": "Navedite naziv prilagođenog prikaza ili ostaviti prazno za korištenje naziva koji je izvijestio uređaj.", "LabelCustomRating": "Prilagođena ocjena:", "LabelDateAdded": "Datum dodavanja:", @@ -346,7 +331,6 @@ "LabelDefaultUserHelp": "Određuje koja će biblioteka biti prikazana na spojenim uređajima. Ovo se može zaobići za svaki uređaj koristeći profile.", "LabelDeviceDescription": "Opis uređaja", "LabelDidlMode": "DIDL način:", - "LabelDisplayMissingEpisodesWithinSeasons": "Prikaži epizode koje nedostaju unutar sezone", "LabelDisplayName": "Prikaz naziva:", "LabelDisplayOrder": "Poredak prikaza:", "LabelDisplaySpecialsWithinSeasons": "Prikaz specijalnih dodataka unutar sezona u kojima su emitirani", @@ -481,7 +465,6 @@ "LabelPlayDefaultAudioTrack": "Pokreni zadani audio zapis, bez obzira na jezik", "LabelPlaylist": "Popis:", "LabelPreferredDisplayLanguage": "Željeni jezik za prikaz:", - "LabelPreferredDisplayLanguageHelp": "Prevađanje Jellyfin-a je projekt u tijeku.", "LabelProfileAudioCodecs": "Audio kodek:", "LabelProfileCodecs": "Kodeki:", "LabelProfileCodecsHelp": "Odvojeno sa točka-zrezom. Ovo može ostaviti prazno kao bi bilo postavljeno za sve codecs.", @@ -533,12 +516,9 @@ "LabelTimeLimitHours": "Rok (sati):", "LabelTitle": "Naslov:", "LabelTrackNumber": "Broj pjesme:", - "LabelTranscodingAudioCodec": "Audio koder:", - "LabelTranscodingContainer": "Spremnik:", "LabelTranscodingTempPathHelp": "Ova mapa sadrži radne datoteke koje koristi konverter. Navedite prilagođenu putanju ili ostavite prazno za korištenje zadanog unutar mape podataka poslužitelja.", "LabelTranscodingThreadCount": "Broj niti konvertiranja:", "LabelTranscodingThreadCountHelp": "Odaberite maksimalan broj niti koje će se koristiti kada se konvertira. Manji broj niti će smanjiti upotrebu procesora, ali moguće da neće konvertirati dovoljno brzo za glatke reprodukcije.", - "LabelTranscodingVideoCodec": "Video koder:", "LabelTriggerType": "Tip pokretača:", "LabelTunerIpAddress": "IP adresa TV/Radio uređaja:", "LabelTunerType": "Vrsta pretraživača:", @@ -626,7 +606,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Za podešavanje ovog dodatka prijavite se izravno na lokalni server.", "MessagePluginInstallDisclaimer": "Dodaci izgrađeni od strane članova Jellyfin zajednice su sjajan način kako bi unaprijedili Vaše iskustvo Jellyfin s dodatnim značajkama i prednostima. Prije instaliranja budite svjesni učinaka koje mogu imati na vaš Jellyfin Server, kao što je duže skeniranje biblioteke, dodatna pozadinska obrada, a smanjena stabilnost sustava.", "MessageReenableUser": "Pogledajte dolje za ponovno omogućenje", - "MessageSettingsSaved": "Postavke spremljene.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Sljedeće lokacije medija biti će uklonjene iz vaše Jellyfin biblioteke:", "MessageUnableToConnectToServer": "Nismo u mogućnosti spojiti se na odabrani poslužitelj. Provjerite dali je pokrenut i pokušajte ponovno.", "MessageUnsetContentHelp": "Sadržaj će biti prikazan kao obične mape. Za najbolje rezultate upotrijebite upravitelj meta-podataka za postavljanje vrste sadržaja pod-mapa.", @@ -673,7 +652,6 @@ "OptionArtist": "Izvođaču", "OptionAscending": "Uzlazno", "OptionAuto": "Automatski", - "OptionAutomatic": "Automatski", "OptionBlockBooks": "Knjige", "OptionBlockChannelContent": "Sadržaj Internet kanala", "OptionBlockLiveTvChannels": "TV kanali uživo", @@ -851,17 +829,14 @@ "SystemDlnaProfilesHelp": "Sistemski profili su samo za čitanje. Bilo kakve izmjene na sistemskom profilu biti će snimljene kao novi prilagođeni profil.", "TabAccess": "Pristup", "TabAdvanced": "Napredno", - "TabAlbumArtists": "Albumi izvođača", "TabCatalog": "Katalog", "TabCodecs": "Kodek", "TabContainers": "Spremnik", "TabDashboard": "Nadzorna ploča", "TabDirectPlay": "Direktna reprodukcija", - "TabEpisodes": "Epizode", "TabLatest": "Zadnje", "TabLogs": "Dnevnici", "TabMusic": "Glazba", - "TabMusicVideos": "Muzički spotovi", "TabMyPlugins": "Moji dodaci", "TabNetworks": "Mreže", "TabNfoSettings": "Nfo postavke", @@ -872,11 +847,9 @@ "TabProfile": "Profil", "TabProfiles": "Profili", "TabResponses": "Odazivi", - "TabResumeSettings": "Postavke nastavka", "TabScheduledTasks": "Zakazani zadaci", "TabSettings": "Postavke", "TabStreaming": "Strujanje", - "TabTrailers": "Kratki filmovi", "TabUpcoming": "Uskoro", "Tags": "Oznake", "TellUsAboutYourself": "Recite nam nešto o sebi", @@ -987,7 +960,6 @@ "ButtonStop": "Stop", "ButtonScanAllLibraries": "Skeniraj sve biblioteke", "ButtonInfo": "Info", - "ButtonFilter": "Filtriraj", "ButtonAddImage": "Dodaj sliku", "Box": "Kutija", "AskAdminToCreateLibrary": "Traži administratora da kreira biblioteku.", @@ -1051,7 +1023,6 @@ "LabelSyncPlayNewGroupDescription": "Kreiraj novu grupu", "LabelSyncPlayNewGroup": "Nova grupa", "MillisecondsUnit": "ms", - "LabelSubtitles": "Prijevodi", "LabelStatus": "Status:", "LabelSortOrder": "Redoslijed sortiranja:", "LabelSortBy": "Sortiranje po:", @@ -1073,7 +1044,6 @@ "LabelDisplayLanguage": "Jezik prikaza:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Automatski osvježi meta podatke sa interneta:", "LabelAudioChannels": "Audio kanali:", - "LabelAudio": "Audio", "LabelAlbum": "Album:", "Label3DFormat": "3D format:", "Items": "Stavke", @@ -1098,7 +1068,6 @@ "HeaderNavigation": "Navigacija", "HeaderMyDevice": "Moj uređaj", "HeaderLibrarySettings": "Postavke biblioteke", - "HeaderHome": "Početna", "HeaderFavoritePeople": "Omiljeni ljudi", "HeaderFavoriteMovies": "Omiljeni filmovi", "HeaderFavoriteBooks": "Omiljene knjige", diff --git a/src/strings/hu.json b/src/strings/hu.json index 9a409e920f..9360309359 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -21,25 +21,18 @@ "ButtonAudioTracks": "Audió Sávok", "ButtonCancel": "Mégsem", "ButtonChangeServer": "Szerver váltás", - "ButtonEdit": "Szerkesztés", - "ButtonEditImages": "Képek szerkesztése", - "ButtonFilter": "Szűrő", "ButtonForgotPassword": "Elfelejtett Jelszó", "ButtonGotIt": "Értettem", - "ButtonHome": "Kezdőlap", "ButtonLibraryAccess": "Könyvtár hozzáférés", "ButtonManualLogin": "Manuális belépés", "ButtonMore": "Tovább", "ButtonNextTrack": "Következő sáv", - "ButtonOff": "Ki", "ButtonOpen": "Megnyitás", "ButtonParentalControl": "Szülői felügyelet", "ButtonPause": "Szünet", - "ButtonPlay": "Lejátszás", "ButtonPreviousTrack": "Előző sáv", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Gyorsbeállítás varázsló", - "ButtonRefresh": "Frissítés", "ButtonRemove": "Eltávolítás", "ButtonRename": "Átnevezés", "ButtonResetEasyPassword": "Pin kód visszaállítása", @@ -56,7 +49,6 @@ "ButtonSignOut": "Kijelentkezés", "ButtonStop": "Leállít", "ButtonSubmit": "Elküld", - "ButtonSubtitles": "Feliratok", "ButtonTrailer": "Előzetes", "ButtonUninstall": "Eltávolítás", "ButtonWebsite": "Weboldal", @@ -83,7 +75,6 @@ "EditSubtitles": "Feliratok szerkesztése", "EnableBackdropsHelp": "A háttérképek a könyvtár böngészése közben néhány oldal hátterében jelennek meg.", "EnableHardwareEncoding": "Hardveres kódolás engedélyezése", - "EnableThemeSongs": "Főcímdalok", "EnableThemeSongsHelp": "Főcímdalok lejátszása háttérben a könyvtár böngészése közben.", "EndsAtValue": "Várható befejezés {0}", "Episodes": "Epizódok", @@ -109,11 +100,9 @@ "HeaderAddToCollection": "Hozzáadás gyűjteményhez", "HeaderAddToPlaylist": "Hozzáadás lejátszási listához", "HeaderAddUpdateImage": "Kép hozzáadása / frissítése", - "HeaderAddUser": "Új felhasználó", "HeaderAudioBooks": "Hangos könyvek", "HeaderAudioSettings": "Audió Beállítások", "HeaderCastAndCrew": "Szereplők és Stáb", - "HeaderCastCrew": "Szereplők és Stáb", "HeaderConnectToServer": "Kapcsolódás a Szerverhez", "HeaderContinueWatching": "Megtekintés folytatása", "HeaderCustomDlnaProfiles": "Egyedi profilok", @@ -125,9 +114,7 @@ "HeaderEasyPinCode": "Pin kód", "HeaderEditImages": "Képek szerkesztése", "HeaderEnabledFields": "Engedélyezett mezők", - "HeaderEpisodes": "Epizódok", "HeaderExternalIds": "Külső id-k:", - "HeaderForgotPassword": "Elfelejtett Jelszó", "HeaderFrequentlyPlayed": "Gyakran játszott", "HeaderIdentifyItemHelp": "Adj meg egy vagy több keresési kritériumot. Távolítsd el a kritériumokat a keresési eredmények növelése érdekében.", "HeaderImageSettings": "Kép beállítások", @@ -143,7 +130,6 @@ "HeaderLiveTvTunerSetup": "Élő TV tuner beállítása", "HeaderMedia": "Média", "HeaderMediaFolders": "Médiakönyvtárak", - "HeaderMediaInfo": "Média Infó", "HeaderMetadataSettings": "Metaadat Beállítások", "HeaderMoreLikeThis": "Több ehhez hasonló", "HeaderMusicVideos": "Zenei videók", @@ -196,7 +182,6 @@ "Label3DFormat": "3D formátum:", "LabelAlbumArtists": "Album előadók:", "LabelArtists": "Előadók:", - "LabelAudio": "Audió", "LabelAudioLanguagePreference": "Audió nyelvének beállítása:", "LabelBirthYear": "Születési év:", "LabelCachePath": "Gyorsítótár útvonal:", @@ -206,13 +191,11 @@ "LabelCountry": "Ország:", "LabelCriticRating": "Kritikusok értékelése:", "LabelCurrentPassword": "Jelenlegi jelszó:", - "LabelCustomDeviceDisplayName": "Megjelenítendő név:", "LabelCustomDeviceDisplayNameHelp": "Adj meg egy egyedi nevet, vagy hagyd üresen a készülék által elküldött név használatához.", "LabelCustomRating": "Egyéni értékelés:", "LabelDateAdded": "Hozzáadva:", "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:", @@ -258,7 +241,6 @@ "LabelPlayDefaultAudioTrack": "Az alapértelmezett hangsáv lejátszása a nyelvtől függetlenül", "LabelPlaylist": "Lejátszási lista:", "LabelPreferredDisplayLanguage": "Elsődleges megjelenítendő nyelv:", - "LabelPreferredDisplayLanguageHelp": "A Jellyfin fordítása egy folyamatos projekt.", "LabelProfileAudioCodecs": "Audió kódekek:", "LabelProfileCodecs": "Kódek:", "LabelProfileContainer": "Tároló:", @@ -281,15 +263,11 @@ "LabelStopping": "Megállítás", "LabelSubtitleFormatHelp": "Például: srt", "LabelSubtitlePlaybackMode": "Felirat mód:", - "LabelSubtitles": "Feliratok", "LabelTagline": "Címke:", "LabelTheme": "Kinézet:", "LabelTime": "Idő:", "LabelTimeLimitHours": "Időlimit (óra):", "LabelTitle": "Cím:", - "LabelTranscodingAudioCodec": "Audió kódek:", - "LabelTranscodingContainer": "Tároló:", - "LabelTranscodingVideoCodec": "Videó kódek:", "LabelTunerType": "Tuner típusa:", "LabelType": "Típus:", "LabelTypeMetadataDownloaders": "{0} metaadat letöltő:", @@ -325,7 +303,6 @@ "MessageNoPluginsInstalled": "Nincs bővítmény telepítve.", "MessageNothingHere": "Nincs itt semmi.", "MessagePleaseEnsureInternetMetadata": "Kérlek ellenőrizd hogy az Internetes metaadat letöltés engedélyezve van.", - "MessageSettingsSaved": "Beállítások mentve.", "Metadata": "Metaadat", "MetadataManager": "Metaadat Manager", "Monday": "Hétfő", @@ -453,17 +430,13 @@ "Sync": "Szinkronizál", "TabAccess": "Hozzáférés", "TabAdvanced": "Haladó", - "TabAlbumArtists": "Album Előadók", "TabCatalog": "Katalógus", "TabCodecs": "Kódek", "TabContainers": "Tároló", "TabDashboard": "Vezérlőpult", - "TabEpisodes": "Epizódok", - "TabInfo": "Infó", "TabLatest": "Legújabb", "TabLogs": "Naplók", "TabMusic": "Zene", - "TabMusicVideos": "Zenei Videók", "TabMyPlugins": "Telepített bővítmények", "TabNetworks": "Csatornák", "TabNfoSettings": "NFO Beállítások", @@ -476,7 +449,6 @@ "TabScheduledTasks": "Ütemezett feladatok", "TabServer": "Szerver", "TabSettings": "Beállítások", - "TabTrailers": "Előzetesek", "TabUpcoming": "Hamarosan érkezik", "Tags": "Címkék", "TellUsAboutYourself": "Mondj valamit magadról", @@ -639,7 +611,6 @@ "HeaderApiKey": "API Kulcs", "HeaderApiKeys": "API Kulcsok", "HeaderAppearsOn": "Megjelenik", - "HeaderBooks": "Könyvek", "HeaderCancelRecording": "Felvétel törlése", "HeaderCancelSeries": "Sorozat törlése", "HeaderChannelAccess": "Csatorna hozzáférés", @@ -674,7 +645,7 @@ "HeaderImageOptions": "Képbeállítások", "HeaderInstantMix": "Azonnali keverés", "HeaderKeepRecording": "Felvétel készítése", - "HeaderKodiMetadataHelp": "Az Nfo metaadatok engedélyezéséhez vagy letiltásához szerkeszd a könyvtárat és keresd meg a metaadat letöltő részt.", + "HeaderKodiMetadataHelp": "Az NFO metaadatok engedélyezéséhez vagy letiltásához szerkeszd a könyvtárat és keresd meg a metaadat letöltő részt.", "HeaderLatestMusic": "Legújabb Zene", "HeaderLatestRecordings": "Legújabb Felvételek", "HeaderLoginFailure": "Bejelentkezési hiba", @@ -711,7 +682,6 @@ "Shows": "Sorozatok", "Songs": "Dalok", "ValueSpecialEpisodeName": "Special - {0}", - "EnableThemeVideos": "Videótémák", "EnableThemeVideosHelp": "Videó témájának lejátszása háttérben a könyvtár böngészése közben.", "HeaderBlockItemsWithNoRating": "Blokkolja azokat az elemeket amelyek tiltott, vagy nem felismerhető minősítésűek:", "HeaderSeriesStatus": "Sorozat állapot", @@ -1008,7 +978,6 @@ "OptionAllowVideoPlaybackTranscoding": "Engedélyezze az átkódolást igénylő videó lejátszást", "OptionArtist": "Előadó", "OptionAuto": "Auto", - "OptionAutomatic": "Auto", "OptionAutomaticallyGroupSeries": "A több mappában elosztott sorozat automatikus összevonása", "OptionAutomaticallyGroupSeriesHelp": "A több mappában elosztott sorozat automatikusan egyesül egy sorozatba.", "OptionBlockBooks": "Könyvek", @@ -1138,7 +1107,6 @@ "TV": "TV", "TabDirectPlay": "Közvetlen lejátszás", "TabResponses": "Válaszok", - "TabResumeSettings": "Folytatás", "TabStreaming": "Streaming", "TagsValue": "Címkék: {0}", "ThemeSongs": "Téma dalok", @@ -1210,7 +1178,6 @@ "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 Szerverrel. A kulcsokat egy normális fiókkal történő belépéssel lehet megkapni, vagy kézileg felvenni egy alkalmazáshoz tartozó kulcsot.", "HeaderBranding": "Személyes arculat", "HeaderContinueListening": "Folyamatban lévő zenék", @@ -1222,7 +1189,6 @@ "HeaderFavoriteSongs": "Kedvenc dalok", "HeaderFavoriteVideos": "Kedvenc Videók", "HeaderGuideProviders": "TV műsorújság Szolgáltatók", - "HeaderHome": "Kezdőlap", "HeaderUpcomingOnTV": "Következő TV műsorok", "ImportFavoriteChannelsHelp": "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.", @@ -1444,7 +1410,7 @@ "LabelSyncPlayTimeOffset": "Időeltolás a szerverhez képest:", "EnableDetailsBannerHelp": "Megjelenít egy banner képet a részletes információoldal tetején.", "EnableDetailsBanner": "Banner a részletes oldalon", - "EnableBlurHashHelp": "A még betöltés alatt álló képek helyén egy elmosódott helyettesítő képet jelenít meg", + "EnableBlurHashHelp": "A még betöltés alatt álló képek helyén egy elmosódott helyettesítő képet jelenít meg.", "EnableBlurHash": "Elmosódott helyettesítőképek engedélyezése", "ShowMore": "Továbbiak megtekintése", "ShowLess": "Kevesebb mutatása", @@ -1475,5 +1441,6 @@ "Preview": "Előnézet", "LabelSubtitleVerticalPosition": "Függőleges pozíció:", "MessageGetInstalledPluginsError": "Hiba történt a jelenleg telepített bővítmények lekérdezése során.", - "MessagePluginInstallError": "Hiba történt a bővítmény telepítése során." + "MessagePluginInstallError": "Hiba történt a bővítmény telepítése során.", + "PlaybackRate": "Lejátszási sebesség" } diff --git a/src/strings/id.json b/src/strings/id.json index 8bf0d7eafd..fed8694ca2 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -2,7 +2,6 @@ "ButtonQuickStartGuide": "Panduan cepat", "ButtonSignOut": "Sign out", "FolderTypeTvShows": "TV", - "HeaderAddUser": "Tambah User", "HeaderEasyPinCode": "Kode Pin Mudah", "HeaderSetupLibrary": "Atur pustaka media Anda", "LabelContentType": "Tipe konten:", @@ -26,7 +25,7 @@ "ThisWizardWillGuideYou": "Panduan ini akan memandu Anda melalui proses setup. Untuk memulai, silahkan pilih bahasa yang Anda gunakan.", "UserProfilesIntro": "Jellyfin mendukung profil pengguna, memungkinkan setiap pengguna memiliki tampilan mereka sendiri, kondisi pemutaran dan pengawasan orang tua.", "WelcomeToProject": "Selamat datang di Jellyfin!", - "WizardCompleted": "Itu semua yang kami butuhkan saat ini. Jellyfin sudah memulai mengkoleksi informasi pustaka media. Lihatlah beberapa aplikasi kami, kemudian klik Selesai untuk menuju ke Dashboard Server", + "WizardCompleted": "Hanya itu yang kami butuhkan untuk saat ini. Jellyfin mulai mengumpulkan informasi tentang perpustakaan media Anda. Lihat beberapa aplikasi kami, lalu klik Selesai untuk melihat Dasbor.", "Collections": "Koleksi", "Folders": "Folder", "Albums": "Album", @@ -39,7 +38,7 @@ "HeaderFavoriteEpisodes": "Episode Favorit", "HeaderFavoriteShows": "Tayangan Favorit", "HeaderAlbumArtists": "Album Artis", - "HeaderContinueWatching": "Masih Melihat", + "HeaderContinueWatching": "Lanjutkan Menonton", "Artists": "Artis", "AllowMediaConversion": "Izinkan konversi media", "AllEpisodes": "Semua episode", @@ -65,7 +64,7 @@ "ConfirmDeleteItems": "Penghapusan item-item ini akan menghapus baik pada sistem berkas maupun pustaka media Anda. Apakah Anda yakin untuk melanjutkan?", "ConfirmDeleteItem": "Penghapusan item ini akan menghapus baik pada sistem berkas maupun pustaka media Anda. Apakah Anda yakin untuk melanjutkan?", "ConfirmDeleteImage": "Hapus gambar?", - "ConfigureDateAdded": "Atur cara penentuan penambahan tanggal dalam dasbor Peladen Jellyfin lewat pengaturan Pustaka", + "ConfigureDateAdded": "Konfigurasikan bagaimana tanggal ditambahkan ditentukan di dasbor di bawah pengaturan pustaka", "Composer": "Komposer", "CommunityRating": "Peringkat komunitas", "ChannelNumber": "Nomor saluran", @@ -83,7 +82,7 @@ "ButtonSettings": "Pengaturan", "ButtonSend": "Kirim", "ButtonSelectView": "Pilih tampilan", - "ButtonSelectServer": "Pilih Peladen", + "ButtonSelectServer": "Pilih Server", "ButtonSelectDirectory": "Pilih Direktori", "ButtonScanAllLibraries": "Pindai Semua Pustaka", "ButtonResume": "Lanjutkan", @@ -92,35 +91,28 @@ "ButtonRename": "Ubah nama", "ButtonRemove": "Hapus", "ButtonRefreshGuideData": "Muat ulang Data Panduan", - "ButtonRefresh": "Muat ulang", "ButtonProfile": "Profil", - "ButtonPlay": "Mainkan", "ButtonPause": "Jeda", "ButtonParentalControl": "Kendali orang tua", "ButtonOpen": "Buka", "ButtonOk": "Baik", - "ButtonOff": "Matikan", "ButtonNetwork": "Jaringan", "ButtonMore": "Lebih banyak", "ButtonLibraryAccess": "Akses pustaka", "ButtonInfo": "Info", - "ButtonHome": "Beranda", "ButtonGuide": "Panduan", "ButtonGotIt": "Paham", "ButtonFullscreen": "Layar penuh", "ButtonForgotPassword": "Lupa Kata Sandi", - "ButtonFilter": "Penyaring", "ButtonEditOtherUserPreferences": "Ubah profil, gambar, dan preferensi pribadi pengguna ini.", - "ButtonEditImages": "Ubah gambar", - "ButtonEdit": "Ubah", - "ButtonChangeServer": "Ubah Peladen", + "ButtonChangeServer": "Ubah Server", "ButtonCancel": "Batalkan", "ButtonBack": "Kembali", "ButtonAudioTracks": "Trek Audio", "ButtonArrowRight": "Kanan", "ButtonArrowLeft": "Kiri", "ButtonAddUser": "Tambah Pengguna", - "ButtonAddServer": "Tambah Peladen", + "ButtonAddServer": "Tambah Server", "ButtonAddScheduledTaskTrigger": "Tambah Pemicu", "ButtonAddMediaLibrary": "Tambah Pustaka Media", "ButtonAddImage": "Tamba gambar", @@ -128,7 +120,7 @@ "Browse": "Jelajah", "BoxRear": "Kotak (belakang)", "Box": "Kotak", - "BookLibraryHelp": "Buku audio dan teks didukung. Perhatikan {0}panduan penamaan buku{1}.", + "BookLibraryHelp": "Audio dan buku teks didukung. Tinjau {0} panduan penamaan buku {1}.", "Blacklist": "Daftar hitam", "BirthPlaceValue": "Tempat lahir: {0}", "BirthLocation": "Tempat lahir", @@ -137,25 +129,25 @@ "Backdrops": "Latar belakang", "Backdrop": "Latar belakang", "Auto": "Auto", - "AuthProviderHelp": "Pilih Penyedia Autentikasi yang akan digunakan untuk mengautentikasi kata sandi pengguna ini.", + "AuthProviderHelp": "Pilih penyedia otentikasi yang akan digunakan untuk mengautentikasi kata sandi pengguna ini.", "Audio": "Audio", "AspectRatio": "Rasio perbandingan", "Ascending": "Urutan naik", "AsManyAsPossible": "Sebanyak mungkin", "Art": "Seni", - "AroundTime": "Sekitar {0}", + "AroundTime": "Sekitar", "Anytime": "Kapanpun", "AnyLanguage": "Bahasa apapun", "AlwaysPlaySubtitlesHelp": "Talop yang cocok dengan preferensi bahasa akan dimuat tanpa memperhatikan bahasa suaranya.", - "AlwaysPlaySubtitles": "Selalu putar talop", + "AlwaysPlaySubtitles": "Selalu Mainkan", "AllowedRemoteAddressesHelp": "Daftar yang dipisahkan dengan koma dari alamat IP atau catatan netmask untuk jaringan yang akan diperbolehkan untuk tersambuh dari jarak jauh. Jika dibiarkan kosong, seluruh alamat jarak jauh akan diperbolehkan.", "AllowRemoteAccessHelp": "Jika centang dihapus, semua koneksi jarak jauh akan diblokir.", - "AllowRemoteAccess": "Izinkan koneksi jarak jauh ke Peladen Jellyfin ini.", + "AllowRemoteAccess": "Izinkan koneksi jarak jauh ke server ini.", "AllowOnTheFlySubtitleExtraction": "Izinkan ekstraksi talop dengan cepat", "AllowMediaConversionHelp": "Izinkan atau tolak akses ke fitur konversi media.", "AllLibraries": "Semua pustaka", "AllLanguages": "Semua bahasa", - "AllComplexFormats": "Semua format kompleks (ASS, SSA, VOBSUB, PGS, SUB/IDK, dll.)", + "AllComplexFormats": "Semua Format Kompleks (ASS, SSA, VOBSUB, PGS, SUB, IDX,…)", "Channels": "Saluran", "Aired": "Disiarkan", "AirDate": "Tanggal siaran", @@ -175,6 +167,136 @@ "Alerts": "Peringatan", "AddedOnValue": "Ditambahkan {0}", "AllowFfmpegThrottling": "Transcode Tercekik", - "AllowOnTheFlySubtitleExtractionHelp": "Subtitle yang melekat di video dapat dikeluarkan dan dikirimkan kepada klien dalam bentuk text biasa dengan tujuan untuk menghalau terjadinya transcoding pada video. Pada beberapa system ini membutuhkan waktu yang lama dan dapat menyebabkan video playback menjadi terhenti dikarenakan proses ekstraksi. Non-aktifkan fitur ini untuk membiarkan subtitle langsung dilekatkan kepada video dengan cara transcoding ketika klien tidak mendukung fitur ini.", - "ButtonSyncPlay": "SyncPlay" + "AllowOnTheFlySubtitleExtractionHelp": "Subtitel yang disematkan dapat diekstrak dari video dan dikirim ke klien dalam teks biasa, untuk membantu mencegah transcoding video. Pada beberapa sistem, ini dapat memakan waktu lama dan menyebabkan pemutaran video terhenti selama proses ekstraksi. Nonaktifkan ini untuk menyematkan subtitle yang disematkan dengan transcoding video ketika mereka tidak didukung secara native oleh perangkat klien.", + "ButtonSyncPlay": "SyncPlay", + "EnablePhotosHelp": "Gambar akan terdeteksi dan ditampilkan bersama file media lainnya.", + "EnablePhotos": "Tampilkan foto", + "EnableNextVideoInfoOverlayHelp": "Di akhir video, tampilkan info tentang video berikutnya yang akan muncul di daftar putar saat ini.", + "EnableNextVideoInfoOverlay": "Tampilkan info video berikutnya selama pemutaran", + "EnableHardwareEncoding": "Aktifkan pengkodean perangkat keras", + "EnableExternalVideoPlayersHelp": "Menu pemutar eksternal akan ditampilkan saat memulai pemutaran video.", + "EnableExternalVideoPlayers": "Pemutar video eksternal", + "EnableDisplayMirroring": "Tampilan mirroring", + "EnableDecodingColorDepth10Vp9": "Aktifkan 10-Bit decoding hardware untuk VP9", + "EnableDecodingColorDepth10Hevc": "Aktifkan 10-Bit decoding hardware untuk HEVC", + "EnableColorCodedBackgrounds": "Latar belakang berkode warna", + "EnableCinemaMode": "Mode bioskop", + "EnableBackdropsHelp": "Menampilkan latar belakang di latar belakang beberapa halaman saat menjelajahi pustaka.", + "EditSubtitles": "Edit subtitle", + "EditMetadata": "Edit metadata", + "EditImages": "Edit Gambar", + "Edit": "Edit", + "EasyPasswordHelp": "Kode pin mudah Anda digunakan untuk akses offline di klien yang didukung dan juga dapat digunakan untuk masuk ke jaringan dengan mudah.", + "DropShadow": "Drop Shadow", + "DrmChannelsNotImported": "Saluran dengan DRM tidak akan diimpor.", + "DownloadsValue": "{0} unduhan", + "Download": "Unduh", + "Down": "Turun", + "DoNotRecord": "Jangan merekam", + "DisplayModeHelp": "Pilih gaya tata letak yang Anda inginkan untuk antarmuka.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Ini juga harus diaktifkan untuk pustaka TV di konfigurasi server.", + "DisplayMissingEpisodesWithinSeasons": "Tampilkan episode yang hilang dalam season", + "DisplayInOtherHomeScreenSections": "Tayangkan di bagian layar beranda seperti media terbaru dan lanjutkan menonton", + "Display": "Tampilan", + "DisplayInMyMedia": "Tampilan di layar beranda", + "Dislike": "Benci", + "Disconnect": "Memutuskan", + "Disc": "CD", + "Disabled": "Matikan", + "DirectPlaying": "Bermain langsung", + "DirectStreaming": "Streaming langsung", + "DirectStreamHelp2": "Streaming langsung menggunakan daya pemrosesan yang sangat sedikit dengan penurunan kualitas video yang minimal.", + "DirectStreamHelp1": "Media kompatibel dengan perangkat terkait resolusi dan jenis media (H.264, AC3, dll), tetapi dalam wadah file yang tidak kompatibel (mkv, avi, wmv, dll). Video akan dikemas ulang dengan cepat sebelum dikirim ke perangkat.", + "DeviceAccessHelp": "Ini hanya berlaku untuk perangkat yang dapat diidentifikasi secara unik dan tidak akan mencegah akses browser. Memfilter akses perangkat pengguna akan mencegah mereka menggunakan perangkat baru hingga disetujui di sini.", + "DetectingDevices": "Mendeteksi perangkat", + "Desktop": "Desktop", + "Descending": "Menurun", + "DeleteUserConfirmation": "Apakah Anda yakin ingin menghapus pengguna ini?", + "DeleteUser": "Hapus pengguna", + "DeleteMedia": "Hapus media", + "DeleteImageConfirmation": "Anda yakin ingin menghapus gambar ini?", + "DeleteImage": "Hapus Gambar", + "DeleteDeviceConfirmation": "Anda yakin ingin menghapus perangkat ini? Ini akan muncul kembali saat pengguna login lagi.", + "DeinterlaceMethodHelp": "Pilih metode deinterlacing yang akan digunakan saat melakukan transcoding konten interlace.", + "DefaultSubtitlesHelp": "Subtitel dimuat berdasarkan bendera default dan paksa dalam metadata yang disematkan. Preferensi bahasa dipertimbangkan ketika beberapa opsi tersedia.", + "CustomDlnaProfilesHelp": "Buat profil khusus untuk menargetkan perangkat baru atau mengganti profil sistem.", + "ColorTransfer": "Transfer warna", + "ColorSpace": "Ruang warna", + "ColorPrimaries": "Warna primer", + "ClientSettings": "Pengaturan Klien", + "CinemaModeConfigurationHelp": "Mode bioskop menghadirkan pengalaman teater langsung ke ruang tamu Anda dengan kemampuan untuk memutar trailer dan pengantar khusus sebelum fitur utama.", + "ChangingMetadataImageSettingsNewContent": "Perubahan pada metadata atau setelan pengunduhan karya seni hanya akan berlaku untuk konten baru yang ditambahkan ke perpustakaan Anda. Untuk menerapkan perubahan pada judul yang ada, Anda perlu menyegarkan metadatanya secara manual.", + "CancelSeries": "Batalkan serial", + "ButtonUninstall": "Copot pemasangan", + "ButtonTogglePlaylist": "Daftar Putar", + "ButtonSubtitles": "Subtitle", + "ButtonSplit": "Membagi", + "ButtonRestart": "Muat ulang", + "ButtonPreviousTrack": "Lagu sebelumnya", + "ButtonNextTrack": "Lagu berikutnya", + "ButtonManualLogin": "Login Manual", + "BurnSubtitlesHelp": "Menentukan apakah server harus membakar subtitle saat melakukan transcoding video. Menghindari ini akan sangat meningkatkan kinerja. Pilih Otomatis untuk membakar format berbasis gambar (VOBSUB, PGS, SUB, IDX,…) dan subtitle ASS atau SSA tertentu.", + "BoxSet": "Set Kotak", + "AskAdminToCreateLibrary": "Minta administrator untuk membuat pustaka.", + "Artist": "Artis", + "AllowFfmpegThrottlingHelp": "Saat transcode atau remux cukup jauh dari posisi pemutaran saat ini, jeda prosesnya sehingga akan mengkonsumsi lebih sedikit sumber daya. Ini paling berguna saat menonton tanpa sering mencari. Matikan ini jika Anda mengalami masalah pemutaran.", + "AllowHWTranscodingHelp": "Izinkan tuner untuk mentranskode aliran dengan cepat. Ini dapat membantu mengurangi transcoding yang dibutuhkan oleh server.", + "AlbumArtist": "Album Artis", + "Album": "Album", + "ButtonRevoke": "Mencabut", + "TabServer": "Server", + "ServerUpdateNeeded": "Server ini perlu diperbarui. Untuk mengunduh versi terbaru, kunjungi {0}", + "ServerRestartNeededAfterPluginInstall": "Jellyfin perlu direstart setelah menginstal plugin.", + "ServerNameIsShuttingDown": "Server di {0} sedang dimatikan.", + "ServerNameIsRestarting": "Server di {0} sedang memulai ulang.", + "MessagePluginInstalled": "Plugin berhasil diinstal. Server perlu dimulai ulang agar perubahan diterapkan.", + "PleaseRestartServerName": "Harap mulai ulang Jellyfin di {0}.", + "PlaybackErrorNoCompatibleStream": "Klien ini tidak kompatibel dengan media dan server tidak mengirimkan format media yang kompatibel.", + "OptionSaveMetadataAsHiddenHelp": "Mengubah ini akan diterapkan ke metadata baru yang disimpan di masa mendatang. File metadata yang ada akan diperbarui pada saat disimpan oleh server.", + "OptionReportByteRangeSeekingWhenTranscoding": "Laporkan bahwa server mendukung pencarian byte saat melakukan transcoding", + "OptionDisableUserHelp": "Server tidak akan mengizinkan koneksi apa pun dari pengguna ini. Koneksi yang ada akan dihentikan secara tiba-tiba.", + "OptionAllowUserToManageServer": "Izinkan pengguna ini untuk mengelola server", + "MessageUnableToConnectToServer": "Kami tidak dapat terhubung ke server yang dipilih sekarang. Harap pastikan itu berjalan dan coba lagi.", + "MessagePluginInstallDisclaimer": "Plugin yang dibuat oleh anggota komunitas adalah cara terbaik untuk meningkatkan pengalaman Anda dengan fitur dan manfaat tambahan. Sebelum menginstal, perhatikan efeknya pada server Anda, seperti pemindaian perpustakaan yang lebih lama, pemrosesan latar belakang tambahan, dan penurunan stabilitas sistem.", + "MessagePluginConfigurationRequiresLocalAccess": "Untuk mengkonfigurasi plugin ini, harap masuk ke server lokal Anda secara langsung.", + "MessagePlayAccessRestricted": "Pemutaran konten ini saat ini dibatasi. Silakan hubungi administrator server Anda untuk informasi lebih lanjut.", + "MessageNoServersAvailable": "Tidak ada server yang ditemukan menggunakan penemuan server otomatis.", + "LabelRepositoryNameHelp": "Nama khusus untuk membedakan repositori ini dari yang lain yang ditambahkan ke server Anda.", + "MessageForgotPasswordFileCreated": "File berikut telah dibuat di server Anda dan berisi petunjuk tentang cara melanjutkan :", + "MessageConfirmShutdown": "Apakah Anda yakin ingin mematikan server?", + "MessageConfirmRevokeApiKey": "Apakah Anda yakin ingin mencabut kunci API ini? Koneksi aplikasi ke server ini akan tiba-tiba dihentikan.", + "LanNetworksHelp": "Daftar alamat IP atau entri IP / netmask yang dipisahkan koma untuk jaringan yang akan dipertimbangkan di jaringan lokal saat memberlakukan pembatasan bandwidth. Jika disetel, semua alamat IP lainnya akan dianggap berada di jaringan eksternal dan tunduk pada pembatasan bandwidth eksternal. Jika dibiarkan kosong, hanya subnet server yang dianggap berada di jaringan lokal.", + "DashboardServerName": "Server : {0}", + "LabelUserRemoteClientBitrateLimitHelp": "Ganti nilai global default yang ditetapkan di pengaturan pemutaran server.", + "LabelTranscodingTempPathHelp": "Tentukan jalur kustom untuk file transcode yang disajikan ke klien. Biarkan kosong untuk menggunakan default server.", + "LabelSyncPlayTimeOffset": "Pengimbangan waktu dengan server :", + "LabelServerName": "Nama Server :", + "LabelServerHostHelp": "192.168.1.100:8096 atau https://myserver.com", + "LabelServerHost": "Host :", + "LabelRequireHttpsHelp": "Jika dicentang, server akan secara otomatis mengalihkan semua permintaan melalui HTTP ke HTTPS. Ini tidak berpengaruh jika server tidak mendengarkan di HTTPS.", + "LabelRemoteClientBitrateLimitHelp": "Batas kecepatan bit per-aliran opsional untuk semua perangkat di luar jaringan. Ini berguna untuk mencegah perangkat meminta bitrate yang lebih tinggi daripada yang dapat ditangani koneksi internet Anda. Hal ini dapat mengakibatkan peningkatan beban CPU pada server Anda untuk mentranskode video dengan cepat ke bitrate yang lebih rendah.", + "LabelRecordingPathHelp": "Tentukan lokasi default untuk menyimpan rekaman. Jika dibiarkan kosong, folder data program server akan digunakan.", + "LabelMoviePrefixHelp": "Jika prefiks diterapkan pada judul film, masukkan di sini agar server dapat menanganinya dengan benar.", + "LabelLocalHttpServerPortNumberHelp": "Nomor port TCP untuk server HTTP.", + "LabelLocalHttpServerPortNumber": "Nomor port HTTP lokal :", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Mengaktifkan substitusi jalur dari jalur gambar menggunakan pengaturan substitusi jalur server.", + "LabelHttpsPortHelp": "Nomor port TCP untuk server HTTPS.", + "LabelServerNameHelp": "Nama ini akan digunakan untuk mengidentifikasi server dan akan menggunakan nama host server secara default.", + "LabelBaseUrlHelp": "Tambahkan subdirektori khusus ke URL server. Misalnya: http://example.com/<baseurl> ", + "LabelEnableDlnaServerHelp": "Mengizinkan perangkat UPnP di jaringan Anda untuk menelusuri dan memutar konten.", + "LabelEnableDlnaServer": "Aktifkan server DLNA", + "LabelEnableBlastAliveMessagesHelp": "Aktifkan ini jika server tidak terdeteksi dengan andal oleh perangkat UPnP lain di jaringan Anda.", + "LabelEnableAutomaticPortMapHelp": "Secara otomatis meneruskan port publik di router Anda ke port lokal di server Anda melalui UPnP. Ini mungkin tidak berfungsi dengan beberapa model router atau konfigurasi jaringan. Perubahan tidak akan berlaku sampai server dimulai ulang.", + "LabelCachePathHelp": "Tentukan lokasi khusus untuk file cache server seperti gambar. Biarkan kosong untuk menggunakan default server.", + "LabelBindToLocalNetworkAddressHelp": "Ganti alamat IP lokal untuk server HTTP. Jika dibiarkan kosong, server akan mengikat ke semua alamat yang tersedia. Mengubah nilai ini membutuhkan restart.", + "LabelAbortedByServerShutdown": "(Dibatalkan oleh penghentian server)", + "HeaderServerSettings": "Pengaturan Server", + "HeaderServerAddressSettings": "Pengaturan Alamat Server", + "HeaderSelectServerCachePathHelp": "Jelajahi atau masukkan jalur yang akan digunakan untuk file cache server. Folder harus dapat akses.", + "HeaderSelectServerCachePath": "Pilih lokasi Cache Server", + "HeaderSelectServer": "Pilih Server", + "HeaderProfileServerSettingsHelp": "Nilai-nilai ini mengontrol bagaimana server akan menampilkan dirinya kepada klien.", + "HeaderConnectToServer": "Sambungkan ke server", + "HeaderApiKeysHelp": "Aplikasi eksternal diharuskan memiliki kunci API untuk berkomunikasi dengan server. Kunci dikeluarkan dengan masuk dengan akun pengguna biasa atau secara manual memberi aplikasi kunci.", + "ErrorDeletingItem": "Terjadi kesalahan saat menghapus item dari server. Harap periksa apakah Jellyfin memiliki akses tulis ke folder media dan coba lagi." } diff --git a/src/strings/is-is.json b/src/strings/is-is.json index bd1c81c21a..4b48774a2b 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -10,7 +10,6 @@ "FolderTypeMusic": "Tónlist", "FolderTypeMusicVideos": "Tónlistarmyndbönd", "FolderTypeTvShows": "Sjónvarpsþættir", - "HeaderAddUser": "Bæta við notenda", "HeaderDeviceAccess": "Aðgangur tækja", "HeaderEasyPinCode": "Auðvelt Pin númer", "HeaderPaths": "Slóðir", @@ -141,23 +140,18 @@ "Played": "Spilað", "Photos": "Myndir", "Movies": "Kvikmyndir", - "ButtonPlay": "Spila", "HeaderRestart": "Endurræsa", "HeaderProfileInformation": "Upplýsingar um prófíl", "HeaderProfile": "Prófíll", "HeaderPassword": "Lykilorð", "HeaderLatestMovies": "Kvikmyndir, nýlega bætt við", "HeaderLatestEpisodes": "Þættir, nýlega bætt við", - "HeaderHome": "Heim", "HeaderFavoriteVideos": "Uppáhalds Myndbönd", "HeaderFavoriteMovies": "Uppáhalds Kvikmyndir", - "HeaderEpisodes": "Þættir", "HeaderError": "Villa", "HeaderDownloadSync": "Sækja og Samstilla", "HeaderDeleteDevice": "Eyða Tæki", - "HeaderCastCrew": "Leikarar og Áhöfn", "HeaderCastAndCrew": "Leikarar og Áhöfn", - "HeaderBooks": "Bækur", "HeaderAdmin": "Stjórnandi", "GuideProviderLogin": "Innskrá", "General": "Almennt", @@ -195,7 +189,6 @@ "ButtonWebsite": "Vefsiða", "ButtonUninstall": "Fjarlægja", "ButtonTrailer": "Sýnishorn", - "ButtonSubtitles": "Texti", "ButtonSignIn": "Innskráning", "ButtonSettings": "Stillingar", "ButtonSend": "Senda", @@ -216,24 +209,18 @@ "Sync": "Samstilla", "ButtonRevoke": "Afturkalla", "Monday": "Mánudagur", - "ButtonRefresh": "Endurhlaða", "ButtonParentalControl": "Foreldraeftirlit", - "ButtonOff": "Af", "ButtonNextTrack": "Næsta lag", "ButtonNetwork": "Net", "ButtonMore": "Meira", "ButtonManualLogin": "Handvirkt Auðkenni", "ButtonLibraryAccess": "Aðgangur að safni", "ButtonInfo": "Upplýsingar", - "ButtonHome": "Heim", "ButtonGuide": "Sjónvarpsvísir", "ButtonGotIt": "Skilið", "ButtonFullscreen": "Fylla upp í skjá", "ButtonForgotPassword": "Gleymt Lykilorð", - "ButtonFilter": "Sía", "ButtonEditOtherUserPreferences": "Breyta stillingum notanda, mynd og persónulegum stillingum.", - "ButtonEditImages": "Breyta myndum", - "ButtonEdit": "Breyta", "ButtonChangeServer": "Skipta um þjón", "ButtonBack": "Til baka", "ButtonAudioTracks": "Hljóðspor", @@ -280,7 +267,6 @@ "HeaderDetectMyDevices": "Finna tækin mín", "HeaderFavoritePeople": "Uppáhalds Fólk", "HeaderFavoritePlaylists": "Uppáhalds spilunarlistar", - "HeaderForgotPassword": "Gleymt lykilorð", "HeaderForKids": "Fyrir Krakka", "HeaderFrequentlyPlayed": "Oft Spilað", "HeaderLatestMusic": "Tónlist, nýlega bætt við", @@ -297,8 +283,6 @@ "EveryXHours": "Hverjum {0} klukkustundum", "EveryHour": "Hverja klukkustund", "Episode": "Þáttur", - "EnableThemeVideos": "Þema myndbönd", - "EnableThemeSongs": "Þema lög", "EnablePhotos": "Birta myndir", "EnableHardwareEncoding": "Virkja vélbúnaðarkóðun", "LabelScreensaver": "Skjáhvíla:", @@ -400,14 +384,11 @@ "ThemeSongs": "Þemu lög", "TellUsAboutYourself": "Segðu okkur frá sjálfum þér", "TabUpcoming": "Væntanlegt", - "TabTrailers": "Sýnishorn", - "TabResumeSettings": "Halda áfram", "TabProfile": "Prófíll", "TabPlugins": "Viðbætur", "TabOther": "Annað", "TabNetworks": "Netkerfi", "TabMyPlugins": "Mínar viðbætur", - "TabMusicVideos": "Tónlistarmyndbönd", "TabMusic": "Tónlist", "PleaseRestartServerName": "Vinsamlegast endurræstu Jellyfin netþjóninn - {0}.", "Previous": "Fyrri", @@ -440,7 +421,6 @@ "LabelBitrate": "Bitahraði:", "LabelBirthYear": "Fæðingarár:", "LabelBirthDate": "Fæðingardagur:", - "LabelAudio": "Hljóð", "LabelArtists": "Listamenn:", "LabelAppNameExample": "Dæmi: Sickbeard, Sonarr", "LabelAccessDay": "Vikudagur:", @@ -453,7 +433,6 @@ "HeaderVideoQuality": "Myndgæði", "HeaderUsers": "Notendur", "HeaderUser": "Notandi", - "TabEpisodes": "Þættir", "TabDirectPlay": "Bein Spilun", "TabAdvanced": "Ítarlegt", "Sunday": "Sunnudagur", diff --git a/src/strings/it.json b/src/strings/it.json index cb73ea2cdb..f89c8b3a65 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -53,10 +53,7 @@ "ButtonBack": "Indietro", "ButtonCancel": "Annulla", "ButtonChangeServer": "Cambia Server", - "ButtonEdit": "Modifica", - "ButtonEditImages": "Modifica Immagini", "ButtonEditOtherUserPreferences": "Modifica questo utente di profilo, l'immagine e le preferenze personali.", - "ButtonFilter": "Filtro", "ButtonForgotPassword": "Password Dimenticata", "ButtonFullscreen": "Schermo Intero", "ButtonGotIt": "Ho capito", @@ -66,15 +63,12 @@ "ButtonMore": "Altro", "ButtonNetwork": "Rete", "ButtonNextTrack": "Traccia Successiva", - "ButtonOff": "No", "ButtonOpen": "Apri", "ButtonParentalControl": "Controllo parentale", "ButtonPause": "Pausa", - "ButtonPlay": "Riproduci", "ButtonPreviousTrack": "Traccia Precedente", "ButtonProfile": "Profilo", "ButtonQuickStartGuide": "Guida rapida", - "ButtonRefresh": "Aggiorna", "ButtonRefreshGuideData": "Aggiorna la guida", "ButtonRemove": "Rimuovi", "ButtonRename": "Rinomina", @@ -94,7 +88,6 @@ "ButtonSignOut": "Esci", "ButtonStart": "Avvio", "ButtonSubmit": "Invia", - "ButtonSubtitles": "Sottotitoli", "ButtonUninstall": "Disinstalla", "ButtonWebsite": "Web", "CancelRecording": "Annulla la registrazione", @@ -179,9 +172,7 @@ "EnablePhotosHelp": "Le immagini saranno rilevate e visualizzate accanto ad altri file multimediali.", "EnableStreamLooping": "Auto-loop streaming in diretta", "EnableStreamLoopingHelp": "Abilita questo se gli streaming in diretta contengono solo pochi secondi di dati e devono essere costantemente richiesti. L'abilitazione di questa funzione quando non è servita può causare problemi.", - "EnableThemeSongs": "Canzoni a tema", "EnableThemeSongsHelp": "Le canzoni a tema saranno riprodotte mentre visualizzi la tua libreria.", - "EnableThemeVideos": "Video a tema", "EnableThemeVideosHelp": "Riproduzione dei video a tema sullo sfondo mentre visualizzi la tua libreria.", "Ended": "Finito", "EndsAtValue": "Finirà alle {0}", @@ -190,7 +181,7 @@ "ErrorAddingMediaPathToVirtualFolder": "C'è stato un errore durante l'aggiunta del percorso. Per favore controlla che il percorso sia valido, e che Jellyfin abbia l'accesso alla posizione indicata.", "ErrorAddingTunerDevice": "Si è verificato un errore durante l'aggiunta del sintonizzatore. Si prega di assicurarsi che sia accessibile e riprovare.", "ErrorAddingXmlTvFile": "Si è verificato un errore durante l'accesso al file XMLTV. Si prega di assicurarsi che il file esista e riprovare.", - "ErrorDeletingItem": "Si è verificato un errore durante l'eliminazione dell'elemento da Jellyfin Server. Verifica che Jellyfin Server abbia accesso in scrittura sulla cartella multimediale e riprova.", + "ErrorDeletingItem": "Si è verificato un errore durante l'eliminazione dell'elemento dal server. Verifica che Jellyfin abbia accesso in scrittura sulla cartella multimediale e riprova.", "ErrorGettingTvLineups": "Si è verificato un errore durante il download delle formazioni TV. Assicurarsi che le vostre informazioni siano corrette e riprovare.", "ErrorStartHourGreaterThanEnd": "Il tempo della fine deve essere maggiore del tempo di avvio.", "ErrorPleaseSelectLineup": "Si prega di selezionare una scaletta e riprovare. Se non ci sono formazioni disponibili, si prega allora di verificare che il vostro nome utente, password, e il codice postale siano corretti.", @@ -235,11 +226,9 @@ "HeaderActiveDevices": "Dispositivi Connessi", "HeaderActiveRecordings": "Registrazioni Attive", "HeaderActivity": "Attività", - "HeaderAddScheduledTaskTrigger": "Aggiungi operazione", "HeaderAddToCollection": "Aggiungi ad una Collezione", "HeaderAddToPlaylist": "Aggiungi alla Playlist", "HeaderAddUpdateImage": "Aggiungi/aggiorna Immagine", - "HeaderAddUser": "Aggiungi utente", "HeaderAdditionalParts": "Parti addizionali", "HeaderAdmin": "Admin", "HeaderAlbumArtists": "Artisti degli Album", @@ -251,7 +240,6 @@ "HeaderAudioBooks": "Audiolibri", "HeaderAudioSettings": "Impostazioni audio", "HeaderBlockItemsWithNoRating": "Blocca elementi sconosciuti o senza informazioni:", - "HeaderBooks": "Libri", "HeaderBranding": "Personalizza", "HeaderCancelRecording": "Annulla la Registrazione", "HeaderCancelSeries": "Annulla Serie TV", @@ -288,13 +276,11 @@ "HeaderEditImages": "Modifica Immagini", "HeaderEnabledFields": "Campi Abilitati", "HeaderEnabledFieldsHelp": "Deseleziona un campo per bloccarlo ed impedire che venga modificato.", - "HeaderEpisodes": "Episodi", "HeaderError": "Errore", "HeaderExternalIds": "ID esterni:", "HeaderFeatureAccess": "Accesso alle funzionalità", "HeaderFetchImages": "Identifica Immagini:", "HeaderForKids": "Per Bambini", - "HeaderForgotPassword": "Password dimenticata", "HeaderFrequentlyPlayed": "Visti di frequente", "HeaderGuideProviders": "Provider Guida", "HeaderHttpHeaders": "Header HTTP", @@ -320,7 +306,6 @@ "HeaderLiveTvTunerSetup": "Configura Ricevitore TV", "HeaderLoginFailure": "Errore di accesso", "HeaderMediaFolders": "Cartelle dei media", - "HeaderMediaInfo": "Informazioni Media", "HeaderMetadataSettings": "Impostazioni Metadati", "HeaderMoreLikeThis": "Simili a questo", "HeaderMusicQuality": "Qualità Musica", @@ -348,7 +333,7 @@ "HeaderPreferredMetadataLanguage": "Lingua Preferita per i Metadati", "HeaderProfile": "Profilo", "HeaderProfileInformation": "Informazioni sul profilo", - "HeaderProfileServerSettingsHelp": "Questi valori controllano come il Server Jellyfin si presenterà ad un dispositivo.", + "HeaderProfileServerSettingsHelp": "Questi valori controllano come il server si presenterà ai client.", "HeaderRecentlyPlayed": "Visti di recente", "HeaderRecordingOptions": "Opzioni di Registrazione", "HeaderRecordingPostProcessing": "Post-processing Registrazione", @@ -365,13 +350,13 @@ "HeaderSecondsValue": "{0} Secondi", "HeaderSelectCertificatePath": "Seleziona il percorso del Certificato", "HeaderSelectMetadataPath": "Selezionare Percorso Metadati", - "HeaderSelectMetadataPathHelp": "Sfoglia o inserire il percorso in cui vuoi archiviare i metadati. La cartella deve essere scrivibile.", + "HeaderSelectMetadataPathHelp": "Sfoglia o inserisci il percorso da usare per archiviare i metadati. La cartella deve essere scrivibile.", "HeaderSelectPath": "Seleziona Percorso", "HeaderSelectServer": "Scegli Server", "HeaderSelectServerCachePath": "Seleziona percorso Cache Server", "HeaderSelectServerCachePathHelp": "Sfoglia o immetti il percorso da utilizzare per i file di cache server. La cartella deve essere scrivibile.", "HeaderSelectTranscodingPath": "Selezionare Percorso Temporaneo Transcodifica", - "HeaderSelectTranscodingPathHelp": "Sfoglia o immettere il percorso da utilizzare per la transcodifica dei file temporanei. La cartella deve essere scrivibile.", + "HeaderSelectTranscodingPathHelp": "Sfoglia o inserisci il percorso da utilizzare per la transcodifica dei file. La cartella deve essere scrivibile.", "HeaderSendMessage": "Invia un messaggio", "HeaderSeriesOptions": "Impostazioni Serie TV", "HeaderSeriesStatus": "Stato Serie TV", @@ -418,8 +403,8 @@ "HttpsRequiresCert": "Per abilitare le connessioni sicure, dovrai fornire un certificato SSL affidabile, come Let's Encrypt. Per favore o fornisci un certificato, o disabilita le connessioni sicure.", "Identify": "Identifica", "Images": "Immagini", - "ImportFavoriteChannelsHelp": "Se abilitata, solo i canali che sono contrassegnati come preferiti sul dispositivo di sintonizzazione verranno importati.", - "ImportMissingEpisodesHelp": "Se abilitato, le informazioni relative agli episodi mancanti saranno importate nel database di Jellyfin e mostrate all'interno di Serie e Stagioni. Questo può causare scansioni della libreria più lente.", + "ImportFavoriteChannelsHelp": "Solo i canali che sono contrassegnati come preferiti sul dispositivo di sintonizzazione verranno importati.", + "ImportMissingEpisodesHelp": "Le informazioni relative agli episodi mancanti saranno importate nel database e mostrate all'interno di Serie e Stagioni. Questo può causare scansioni della libreria più lente.", "InstallingPackage": "Installazione di {0} (versione {1})", "InstantMix": "Mix istantaneo", "ItemCount": "{0} elementi", @@ -448,14 +433,14 @@ "LabelAppName": "Nome app", "LabelAppNameExample": "Esempio: Sickbeart, Sonarr", "LabelArtists": "Artisti:", - "LabelArtistsHelp": "Separa valori multipli usando ;", + "LabelArtistsHelp": "Separa più artisti usando il simbolo ;", "LabelAudioLanguagePreference": "Lingua audio preferita:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Aggiorna automaticamente i metadati da Internet:", "LabelBindToLocalNetworkAddress": "Assegna ad indirizzo di rete locale:", - "LabelBindToLocalNetworkAddressHelp": "Opzionale. Sovrascrivere l'indirizzo IP locale per associare il server http a. Se lasciato vuoto, il server verrà associato a tutti gli indirizzi disponibili. Modificare questo valore richiede di riavviare Jellyfin Server.", + "LabelBindToLocalNetworkAddressHelp": "Sovrascrive l'indirizzo IP locale del server HTTP. Se lasciato vuoto, il server verrà associato a tutti gli indirizzi disponibili. Modificare questo valore richiede il riavvio.", "LabelBirthDate": "Data di nascita:", "LabelBirthYear": "Anno di nascita:", - "LabelBlastMessageInterval": "Intervallo messaggi di presenza (secondi)", + "LabelBlastMessageInterval": "Intervallo messaggi di presenza", "LabelBlastMessageIntervalHelp": "Determina la durata in secondi fra i messaggi \"blast alive\".", "LabelBlockContentWithTags": "Blocco degli elementi con le etichette:", "LabelBurnSubtitles": "Applica sottotitoli:", @@ -474,13 +459,12 @@ "LabelCustomCertificatePath": "Percorso personalizzato certificato SSL:", "LabelCustomCertificatePathHelp": "Percorso del file PKCS #12 contenente il certificato e la chiave private per abilitare il supporto TLS in un dominio personalizzato.", "LabelCustomCss": "CSS Personalizzato:", - "LabelCustomCssHelp": "Applica il tuo stile personale all'interfaccia web.", - "LabelCustomDeviceDisplayName": "Nome da visualizzare:", + "LabelCustomCssHelp": "Applica il tuo stile personalizzato all'interfaccia web.", "LabelCustomDeviceDisplayNameHelp": "Fornire un nome di visualizzazione personalizzato o lasciare vuoto per utilizzare il nome riportato dal dispositivo.", "LabelCustomRating": "Voto personalizzato:", "LabelDateAdded": "Aggiunto il:", "LabelDateAddedBehavior": "Data di comportamento per i nuovi contenuti:", - "LabelDateAddedBehaviorHelp": "Se un valore di metadati è presente sarà sempre utilizzato prima una di queste opzioni.", + "LabelDateAddedBehaviorHelp": "Se un valore di metadati è presente sarà sempre utilizzato prima di una di queste opzioni.", "LabelDateTimeLocale": "Data locale:", "LabelDay": "Giorno:", "LabelDeathDate": "Anno di morte:", @@ -492,7 +476,6 @@ "LabelDiscNumber": "Numero disco:", "LabelDisplayLanguage": "Lingua di visualizzazione:", "LabelDisplayLanguageHelp": "La traduzione di Jellyfin è un progetto attivo.", - "LabelDisplayMissingEpisodesWithinSeasons": "Visualizza gli episodi mancanti nelle stagioni", "LabelDisplayMode": "Modalità di visualizzazione:", "LabelDisplayName": "Nome visualizzato:", "LabelDisplayOrder": "Ordine di visualizzazione:", @@ -509,8 +492,8 @@ "LabelEnableAutomaticPortMapHelp": "Automaticamente inoltra le porte pubbliche del router sul quelle locali del server tramite UPnP. Potrebbe non funzionare con alcuni modelli di router. I cambiamenti non saranno applicati fino ad il riavvio del server.", "LabelEnableBlastAliveMessages": "Invia segnale di presenza", "LabelEnableBlastAliveMessagesHelp": "Attivare questa opzione se il server non viene rilevato in modo affidabile da altri dispositivi UPnP in rete.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervallo di ricerca dispositivi (secondi)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la durata in secondi tra le ricerche SSDP effettuate da Jellyfin.", + "LabelEnableDlnaClientDiscoveryInterval": "Intervallo di ricerca dei client", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la durata in secondi tra le ricerche SSDP.", "LabelEnableDlnaDebugLogging": "Abilita il debug del DLNA", "LabelEnableDlnaDebugLoggingHelp": "Crea file di grandi dimensioni e dovrà essere usato solo quando necessario per risolvere problemi.", "LabelEnableDlnaPlayTo": "Abilita DLNA su", @@ -519,7 +502,7 @@ "LabelEnableDlnaServerHelp": "Consente ai dispositivi UPnP nella tua rete di sfogliare i contenuti e riprodurli.", "LabelEnableHardwareDecodingFor": "Abilita la decodifica hardware per:", "LabelEnableRealtimeMonitor": "Abilita monitoraggio in tempo reale", - "LabelEnableRealtimeMonitorHelp": "Le modifiche saranno applicate immediatamente, sui file system supportati.", + "LabelEnableRealtimeMonitorHelp": "Le modifiche saranno applicate immediatamente sui file system supportati.", "LabelEnableSingleImageInDidlLimit": "Limitato a singola immagine incorporata", "LabelEnableSingleImageInDidlLimitHelp": "Alcuni dispositivi non renderanno correttamente se più immagini sono incorporati all'interno didl.", "LabelEndDate": "Data di fine:", @@ -534,7 +517,7 @@ "LabelForgotPasswordUsernameHelp": "Inserisci il tuo nome utente, se te lo ricordi.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nome Condiviso:", - "LabelServerNameHelp": "Questo nome è usato per identificare il server e avrà come default il nome del pc.", + "LabelServerNameHelp": "Questo nome è usato per identificare il server e avrà come default l'hostname del server.", "LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collezioni", "LabelGroupMoviesIntoCollectionsHelp": "Quando si visualizzano le liste di film, quelli appartenenti ad una collezione saranno visualizzati come un elemento raggruppato.", "LabelH264Crf": "CRF di codifica H264:", @@ -544,7 +527,7 @@ "LabelHomeNetworkQuality": "Qualità della rete domestica:", "LabelHomeScreenSectionValue": "Pagina iniziale Sezione {0}:", "LabelHttpsPort": "Porta HTTPS locale:", - "LabelHttpsPortHelp": "Numero di porta TCP da associare al server HTTPS di Jellyfin.", + "LabelHttpsPortHelp": "Porta TCP da associare al server HTTPS.", "LabelIconMaxHeight": "Altezza icona massima:", "LabelIconMaxHeightHelp": "Risoluzione massima delle icone inviate tramite upnp:icon.", "LabelIconMaxWidth": "Larghezza massima icona:", @@ -572,7 +555,7 @@ "LabelLanguage": "Lingua:", "LabelLineup": "Allineare:", "LabelLocalHttpServerPortNumber": "Porta HTTP locale:", - "LabelLocalHttpServerPortNumberHelp": "Numero di porta TCP da associare al server HTTP di Jellyfin.", + "LabelLocalHttpServerPortNumberHelp": "Porta TCP da associare al server HTTP.", "LabelLockItemToPreventChanges": "Blocca questo elemento per impedire modifiche future", "LabelLoginDisclaimer": "Avviso Login:", "LabelLoginDisclaimerHelp": "Un messaggio che verrà visualizzato nella parte inferiore della pagina di accesso.", @@ -612,7 +595,7 @@ "LabelMovieCategories": "Categorie film:", "LabelMoviePrefix": "Prefisso film:", "LabelMoviePrefixHelp": "Se un prefisso viene applicato ai titoli di film, inseriscilo qui in modo che il server possa gestirlo correttamente.", - "LabelMovieRecordingPath": "Percorso di registrazione film (opzionale):", + "LabelMovieRecordingPath": "Percorso di registrazione film:", "LabelMusicStreamingTranscodingBitrate": "Musica trascodifica bitrate:", "LabelMusicStreamingTranscodingBitrateHelp": "Specifica il massimo bitrate per lo streaming musicale.", "LabelName": "Nome:", @@ -624,8 +607,8 @@ "LabelNumber": "Numero:", "LabelNumberOfGuideDays": "Numero di giorni per i quali scaricare i dati della guida:", "LabelNumberOfGuideDaysHelp": "Scaricando più giorni si avrà la possibilità di pianificare in anticipo più programmi e vedere più liste, ma il tempo di download si allungherà. 'Auto': MB sceglierà automaticamente in base al numero di canali.", - "LabelOptionalNetworkPath": "Cartella condivisa (Opzionale):", - "LabelOptionalNetworkPathHelp": "Se questa cartella è condivisa sulla rete, fornendo il percorso di condivisione di rete si può consentire alle applicazioni Jellyfin su altri dispositivi di accedere direttamente ai file multimediali. Ad esempio {0} oppure {1}.", + "LabelOptionalNetworkPath": "Cartella di rete condivisa:", + "LabelOptionalNetworkPathHelp": "Se questa cartella è condivisa sulla rete, fornendo il percorso di condivisione di rete si può consentire ai client su altri dispositivi di accedere direttamente ai file multimediali. Ad esempio {0} oppure {1}.", "LabelOriginalAspectRatio": "Aspetto originale:", "LabelOriginalTitle": "Titolo originale:", "LabelOverview": "Trama:", @@ -642,7 +625,6 @@ "LabelPostProcessorArguments": "Argomenti linea di comando del Post-processor:", "LabelPostProcessorArgumentsHelp": "Usa {path} come percorso al file di registrazione.", "LabelPreferredDisplayLanguage": "Lingua preferita visualizzata:", - "LabelPreferredDisplayLanguageHelp": "La traduzione di Jellyfin è un progetto attivo.", "LabelPreferredSubtitleLanguage": "Lingua dei sottotitoli preferita:", "LabelProfileAudioCodecs": "Codec Audio:", "LabelProfileCodecs": "Codec:", @@ -665,7 +647,7 @@ "LabelReleaseDate": "Data di uscita:", "LabelRemoteClientBitrateLimit": "Bitrate limite per lo streaming via internet (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Un limite bitrate per-stream opzionale per tutti i dispositivi di rete. Ciò è utile per impedire ai dispositivi di richiedere un bitrate superiore a quello in grado di gestire la connessione a Internet. Questo può provocare un aumento del carico della CPU sul server per transcodificare i video in volo ad un bitrate inferiore.", - "LabelRuntimeMinutes": "Durata (minuti):", + "LabelRuntimeMinutes": "Durata:", "LabelSaveLocalMetadata": "Salva immagini nelle cartelle multimediali", "LabelSaveLocalMetadataHelp": "Il salvataggio di immagini direttamente nelle cartelle multimediali consentirà di tenerle in un posto dove possono essere facilmente modificati.", "LabelScheduledTaskLastRan": "Ultima esecuzione {0}, taking {1}.", @@ -677,7 +659,7 @@ "LabelSelectVersionToInstall": "Selezionare la versione da installare:", "LabelSendNotificationToUsers": "Invia notifiche a:", "LabelSerialNumber": "Numero di serie", - "LabelSeriesRecordingPath": "Percorso di registrazione serie TV (opzionale):", + "LabelSeriesRecordingPath": "Percorso di registrazione Serie TV:", "LabelSimultaneousConnectionLimit": "Limite stream simultanei:", "LabelSkipBackLength": "Durata salta indietro:", "LabelSkipForwardLength": "Durata salta avanti:", @@ -699,7 +681,6 @@ "LabelSubtitleDownloaders": "Downloader sottotitoli:", "LabelSubtitleFormatHelp": "Esempio: srt", "LabelSubtitlePlaybackMode": "Modalità Sottotitolo:", - "LabelSubtitles": "Sottotitoli", "LabelSupportedMediaTypes": "Tipi di media supportati:", "LabelTVHomeScreen": "Schermata iniziale della modalità TV:", "LabelTagline": "Slogan:", @@ -711,12 +692,9 @@ "LabelTimeLimitHours": "Tempo limite (ore):", "LabelTitle": "Titolo:", "LabelTrackNumber": "Numero traccia:", - "LabelTranscodingAudioCodec": "Codec Audio:", - "LabelTranscodingContainer": "contenitore:", "LabelTranscodingTempPathHelp": "Specifica un percorso personalizzato per la transcodifica dei files utilizzati dai client. Lasciare vuoto per utilizzare l'impostazione predefinita dal server.", "LabelTranscodingThreadCount": "Transcodifica numero di thread:", "LabelTranscodingThreadCountHelp": "Selezionare il numero massimo di thread da utilizzare durante la transcodifica. Ridurre il numero di thread si abbasserà l'utilizzo della CPU, ma può non convertire abbastanza veloce per un'esperienza di riproduzione fluida.", - "LabelTranscodingVideoCodec": "Codec Video:", "LabelTriggerType": "Tipo Evento:", "LabelTunerIpAddress": "Tuner Indirizzo IP:", "LabelTunerType": "Tipo sintonizzatore:", @@ -740,7 +718,7 @@ "LabelYoureDone": "Hai Finito!", "LabelZipCode": "Cap:", "LabelffmpegPath": "Percorso FFmpeg:", - "LabelffmpegPathHelp": "Il percorso all'applicazione ffmpeg, o alla cartella che la contiene.", + "LabelffmpegPathHelp": "Il percorso dell'applicazione ffmpeg o della cartella che la contiene.", "LanNetworksHelp": "Elenco separato da virgola di indirizzi IP o voci IP / maschera di rete per reti che saranno considerate sulla rete locale quando si applicano restrizioni di larghezza di banda. Se impostato, tutti gli altri indirizzi IP verranno considerati nella rete esterna e saranno soggetti alle limitazioni della larghezza di banda esterna. Se lasciato vuoto, solo la sottorete del server viene considerata nella rete locale.", "Large": "Grande", "LatestFromLibrary": "Ultimi {0}", @@ -786,13 +764,13 @@ "MessageConfirmProfileDeletion": "Sei sicuro di voler cancellare questo profilo?", "MessageConfirmRecordingCancellation": "Cancellare la registrazione?", "MessageConfirmRemoveMediaLocation": "Sei sicuro di voler rimuovere questa posizione?", - "MessageConfirmRestart": "Sei sicuro di voler riavviare il Server Jellyfin?", - "MessageConfirmRevokeApiKey": "Sei sicuro di voler revocare questa chiave api? La connessione dell'applicazione al Server Jellyfin terminerà immediatamente.", + "MessageConfirmRestart": "Sei sicuro di voler riavviare Jellyfin?", + "MessageConfirmRevokeApiKey": "Sei sicuro di voler revocare questa chiave API? La connessione dell'applicazione al Server terminerà immediatamente.", "MessageConfirmShutdown": "Sei sicuro di voler spegnere il server?", "MessageContactAdminToResetPassword": "Si prega di contattare l'amministratore di sistema per reimpostare la password.", "MessageCreateAccountAt": "Crea un account a {0}", "MessageDeleteTaskTrigger": "Sei sicuro di voler cancellare questo evento?", - "MessageDirectoryPickerBSDInstruction": "Per BSD, potrebbe essere necessario per configurare le unità all'interno della vostra prigione FreeNAS al fine di permettere ricamato accedervi.", + "MessageDirectoryPickerBSDInstruction": "Per BSD, potrebbe essere necessario configurare le unità all'interno della vostra FreeNAS Jail per permettere A Jellyfin di accedervi.", "MessageDirectoryPickerLinuxInstruction": "Per Linux su Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, è necessario concedere all'utente del servizio almeno l'accesso alle posizioni di archiviazione.", "MessageDownloadQueued": "Scaricamento programmato.", "MessageEnablingOptionLongerScans": "L'abilitazione di questa opzione può rallentare significativamente le scansioni della libreria.", @@ -814,15 +792,14 @@ "MessagePleaseEnsureInternetMetadata": "Assicurarsi che il download dei metadati Internet sia abilitato.", "MessagePleaseWait": "Per favore attendi. La procedura potrebbe impiegare qualche minuto.", "MessagePluginConfigurationRequiresLocalAccess": "Per configurare questo plugin si prega di accedere al proprio server locale direttamente.", - "MessagePluginInstallDisclaimer": "I plugin creati dai membri della comunità Jellyfin sono un ottimo modo per migliorare l'esperienza di Jellyfin con funzionalità e vantaggi aggiuntivi. Prima di installare, si prega di notare gli effetti che possono avere sul tuo server Jellyfin, come le scansioni più lunghe della libreria, l'elaborazione di sfondo aggiuntiva e la stabilità del sistema diminuita.", + "MessagePluginInstallDisclaimer": "I plugin creati dai membri della comunità sono un ottimo modo per migliorare l'esperienza con funzionalità e vantaggi aggiuntivi. Prima di installarli, si prega di notare gli effetti che possono avere sul tuo Server, come le scansioni più lunghe della libreria, l'elaborazione di sfondo aggiuntiva e la stabilità del sistema diminuita.", "MessageReenableUser": "Guarda in basso per ri-abilitare", - "MessageSettingsSaved": "Settaggi salvati.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "I seguenti percorsi ai file multimediali saranno rimossi dalla tua libreria:", "MessageUnableToConnectToServer": "Non siamo in grado di connettersi al server selezionato al momento. Per favore assicurati che sia in esecuzione e riprova.", "MessageUnsetContentHelp": "Il contenuto verrà visualizzato come pianura cartelle. Per ottenere i migliori risultati utilizzare il gestore di metadati per impostare i tipi di contenuto di sottocartelle.", "MessageYouHaveVersionInstalled": "Attualmente hai la versione {0} installato.", "MetadataManager": "Gestisci Metadati", - "MetadataSettingChangeHelp": "Modificare le impostazioni dei metadati influenzerà il nuovo contenuto aggiunto in avanti. Per aggiornare i contenuti esistenti, aprire la schermata dei dettagli e fare click sul pulsante di aggiornamento oppure eseguire aggiornamenti di massa utilizzando il gestore di metadati.", + "MetadataSettingChangeHelp": "Modificare le impostazioni dei metadati influenzerà i futuri contenuti. Per aggiornare i contenuti esistenti, aprire la schermata dei dettagli e fare click sul pulsante di aggiornamento oppure eseguire aggiornamenti di massa utilizzando il gestore di metadati.", "MinutesAfter": "minuti dopo", "MinutesBefore": "minuti prima", "Monday": "Lunedì", @@ -866,7 +843,7 @@ "OptionAllowLinkSharingHelp": "Solo le pagine web contenente informazioni sui media sono condivise. I file media non vengono mai condivisi pubblicamente. Le condivisioni scadono dopo {0} giorni.", "OptionAllowManageLiveTv": "Consenti la gestione delle registrazioni TV", "OptionAllowMediaPlayback": "Consenti la riproduzione dei media", - "OptionAllowMediaPlaybackTranscodingHelp": "Limitare l'accesso alla transcodifica può causare errori di riproduzione nelle applicazioni Jellyfin a causa di formati multimediali non supportati.", + "OptionAllowMediaPlaybackTranscodingHelp": "Limitare l'accesso alla transcodifica può causare errori di riproduzione a causa di formati multimediali non supportati.", "OptionAllowRemoteControlOthers": "Consenti il controllo remoto di altri utenti", "OptionAllowRemoteSharedDevices": "Consenti il controllo remoto dei dispositivi condivisi", "OptionAllowRemoteSharedDevicesHelp": "I dispositivi DLNA sono considerati condivisi fino a quando un utente non inizia a controllarli.", @@ -878,7 +855,7 @@ "OptionAscending": "Crescente", "OptionAuto": "Automatico", "OptionAutomaticallyGroupSeries": "Fondi automaticamente le serie sparse su più cartelle", - "OptionAutomaticallyGroupSeriesHelp": "Se abilitato, le serie distribuite in più cartelle di questa libreria saranno automaticamente combinate in un'unica serie.", + "OptionAutomaticallyGroupSeriesHelp": "Le Serie TV distribuite su più cartelle di questa libreria saranno automaticamente combinate in un'unica Serie TV.", "OptionBlockBooks": "Libri", "OptionBlockChannelContent": "Contenuto di Canali Internet", "OptionBlockLiveTvChannels": "Canali TV in onda", @@ -897,14 +874,14 @@ "OptionDatePlayed": "Visto il", "OptionDescending": "Decrescente", "OptionDisableUser": "Disabilita questo utente", - "OptionDisableUserHelp": "Se disabilitato, il server non sarà disponibile per questo utente. Le connessioni esistenti verranno terminate.", + "OptionDisableUserHelp": "Il server non sarà disponibile per questo utente. Le connessioni esistenti verranno terminate.", "OptionDislikes": "Non mi piace", "OptionDisplayFolderView": "Visualizza cartelle come normali cartelle dei media", "OptionDisplayFolderViewHelp": "Visualizza le cartelle accanto alle librerie multimediali. Questo può essere utile se si desidera avere una vista di cartelle semplici.", "OptionDownloadBackImage": "Indietro", "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvance": "Scarica preventivamente le immagini", - "OptionDownloadImagesInAdvanceHelp": "Di default, la maggior parte delle immagini vengono scaricate solo quando richieste da un'applicazione Jellyfin. Abilita questa opzione per scaricare tutte le immagini in anticipo, quando nuovi file multimediali vengono importati. Ciò può causare scansioni delle librerie molto più lunghe.", + "OptionDownloadImagesInAdvanceHelp": "Di default, la maggior parte delle immagini vengono scaricate solo quando richieste dai client. Abilita questa opzione per scaricare tutte le immagini in anticipo, quando nuovi file multimediali vengono importati. Ciò può causare scansioni delle librerie molto più lunghe.", "OptionDownloadMenuImage": "Menù", "OptionDownloadPrimaryImage": "Locandina", "OptionDownloadThumbImage": "Foto", @@ -933,7 +910,7 @@ "OptionHlsSegmentedSubtitles": "HLS sottotitoli segmentati", "OptionHomeVideos": "Foto", "OptionIgnoreTranscodeByteRangeRequests": "Ignorare le richieste di intervallo di byte di trascodifica", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Se abilitata, queste richieste saranno onorate, ma ignorano l'intervallo di byte.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Queste richieste saranno onorate, ma ignoreranno l'intervallo di byte.", "OptionImdbRating": "Voto IMDB", "OptionLikes": "Mi piace", "OptionMissingEpisode": "Episodi mancanti", @@ -943,9 +920,9 @@ "OptionOnInterval": "Su intervallo", "OptionParentalRating": "Classificazione per genitori", "OptionPlainStorageFolders": "Visualizzare tutte le cartelle come normali cartelle di archiviazione", - "OptionPlainStorageFoldersHelp": "Se abilitato, tutte le cartelle sono rappresentate in DIDL come \"object.container.storageFolder\" invece che di tipo più specifico, come \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Tutte le cartelle sono rappresentate in DIDL come \"object.container.storageFolder\" invece che di tipo più specifico, come \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Mostra tutti i video come normali file video", - "OptionPlainVideoItemsHelp": "Se attivato, tutti i video sono rappresentati in DIDL come \"object.item.videoItem\" invece che di tipo più specifico, come \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "Tutti i video sono rappresentati in DIDL come \"object.item.videoItem\" invece che di tipo più specifico, come \"object.item.videoItem.movie\".", "OptionPlayCount": "Riproduzioni", "OptionPlayed": "Visto", "OptionPremiereDate": "Data della prima", @@ -959,7 +936,7 @@ "OptionResumable": "Interrotto", "OptionRuntime": "Durata", "OptionSaveMetadataAsHidden": "Salvare i metadati e le immagini come file nascosti", - "OptionSaveMetadataAsHiddenHelp": "La modifica di questo si applicherà ai nuovi metadati che verranno salvati in avanti. I file di metadati esistenti verranno aggiornati la prossima volta che vengono salvati da Jellyfin Server.", + "OptionSaveMetadataAsHiddenHelp": "La modifica di questo si applicherà ai nuovi metadati che verranno salvati in avanti. I file di metadati esistenti verranno aggiornati la prossima volta che verranno salvati dal server.", "OptionSpecialEpisode": "Speciali", "OptionSubstring": "Sottostringa", "OptionTrackName": "Titolo Traccia", @@ -998,9 +975,9 @@ "PleaseAddAtLeastOneFolder": "Per favore aggiungi almeno una cartella alla raccolta cliccando sul pulsante Aggiungi.", "PleaseConfirmPluginInstallation": "Per favore premi OK per confermare che hai letto quanto precede e che vuoi procedere all'installazione del plug-in.", "PleaseEnterNameOrId": "Per favore inserisci un nome o un ID esterno.", - "PleaseRestartServerName": "Per favore riavvia Jellyfin Server - {0}.", + "PleaseRestartServerName": "Per favore riavvia Jellyfin su {0}.", "PleaseSelectTwoItems": "Seleziona almeno due elementi.", - "MessagePluginInstalled": "Il plugin è stato installato correttamente. Il server Jellyfin dovrà essere riavviato affinché le modifiche abbiano effetto.", + "MessagePluginInstalled": "Il plugin è stato installato correttamente. Il server dovrà essere riavviato affinché le modifiche abbiano effetto.", "PreferEmbeddedTitlesOverFileNames": "Preferisci titoli integrati ai nomi dei file", "PreferEmbeddedTitlesOverFileNamesHelp": "Determina il titolo predefinito usato quando non sono disponibili metadati locali o da Internet.", "Premiere": "Prima visione", @@ -1025,7 +1002,7 @@ "RecordingScheduled": "Registrazione pianificata.", "Recordings": "Registrazioni", "Refresh": "Aggiorna", - "RefreshDialogHelp": "I Metadati sono aggiornati in base alle impostazioni ed ai servizi Internet abilitati nel Pannello di Controllo del Server Jellyfin.", + "RefreshDialogHelp": "I Metadati sono aggiornati in base alle impostazioni ed ai servizi Internet abilitati nel Pannello di Controllo.", "RefreshMetadata": "Aggiorna metadati", "RefreshQueued": "Aggiornamento programmato.", "ReleaseDate": "Data di uscita", @@ -1063,10 +1040,10 @@ "SeriesRecordingScheduled": "Registrazione serie TV pianificata.", "SeriesSettings": "Impostazioni Serie TV", "SeriesYearToPresent": "{0} - Oggi", - "ServerNameIsRestarting": "Jellyfin Server - {0} si sta riavviando.", - "ServerNameIsShuttingDown": "Jellyfin Server - {0} si sta arrestando.", - "ServerRestartNeededAfterPluginInstall": "Il server Jellyfin dovrà essere riavviato dopo l'installazione di un plugin.", - "ServerUpdateNeeded": "Questo server Jellyfin deve essere aggiornato. Per scaricare l'ultima versione vai su {0}", + "ServerNameIsRestarting": "Il Server su {0} si sta riavviando.", + "ServerNameIsShuttingDown": "Il Server su {0} si sta arrestando.", + "ServerRestartNeededAfterPluginInstall": "Jellyfin dovrà essere riavviato dopo l'installazione di un plugin.", + "ServerUpdateNeeded": "Questo server deve essere aggiornato. Per scaricare l'ultima versione vai su {0}", "Settings": "Impostazioni", "SettingsSaved": "Settaggi salvati.", "SettingsWarning": "La modifica di questi valori può causare problemi di instabilità o di connettività. Se si verificano problemi, si consiglia di modificarli all'impostazione predefinita.", @@ -1100,16 +1077,13 @@ "SystemDlnaProfilesHelp": "I profili di sistema sono in sola lettura. Le modifiche ad un profilo di sistema verranno salvate in un nuovo profilo personalizzato.", "TabAccess": "Accesso", "TabAdvanced": "Avanzato", - "TabAlbumArtists": "Artisti degli Album", "TabCatalog": "Catalogo", "TabCodecs": "Codec", "TabContainers": "Contenitori", "TabDashboard": "Pannello Controllo", "TabDirectPlay": "Riproduzione Diretta", - "TabEpisodes": "Episodi", "TabLatest": "Novità", "TabMusic": "Musica", - "TabMusicVideos": "Video Musicali", "TabMyPlugins": "I miei Plug-in", "TabNetworks": "Reti", "TabNfoSettings": "Impostazioni NFO", @@ -1119,10 +1093,8 @@ "TabProfile": "Profilo", "TabProfiles": "Profili", "TabResponses": "Risposte", - "TabResumeSettings": "Riprendi", "TabScheduledTasks": "Operazioni Pianificate", "TabSettings": "Impostazioni", - "TabTrailers": "Trailer", "TabUpcoming": "In Arrivo", "Tags": "Tag", "TellUsAboutYourself": "Parlaci di te", @@ -1196,7 +1168,6 @@ "Banner": "Banner", "Blacklist": "Blacklist", "Box": "Scatola", - "ButtonHome": "Home", "ButtonInfo": "Info", "ButtonOk": "Ok", "ButtonStop": "Stop", @@ -1209,7 +1180,6 @@ "HeaderApp": "Applicazione", "HeaderAppearsOn": "Appare In", "HeaderCastAndCrew": "Cast", - "HeaderCastCrew": "Cast", "HeaderMedia": "Media", "HeaderPassword": "Password", "AuthProviderHelp": "Selezionare un provider di autenticazione da utilizzare per autenticare la password dell'utente.", @@ -1224,15 +1194,12 @@ "HeaderImageOptions": "Opzioni Immagine", "Home": "Home", "LabelAlbum": "Album:", - "LabelAudio": "Audio", "LabelCache": "Cache:", "ButtonAddImage": "Aggiungi Immagine", "CopyStreamURL": "Copia Indirizzo dello Stream", "CopyStreamURLSuccess": "Indirizzo copiato con successo.", "FetchingData": "Recupero di dati aggiuntivi", "LabelServerHost": "Host:", - "OptionAutomatic": "Automatico", - "HeaderHome": "Home", "LabelServerHostHelp": "192.168.1.100:8096 o https://myserver.com", "HeaderFavoriteBooks": "Libri Preferiti", "HeaderTypeImageFetchers": "{0} Sorgenti Immagini", @@ -1262,7 +1229,7 @@ "OptionProtocolHls": "Streaming in Diretta HTTP", "OptionDownloadArtImage": "Art", "OptionMax": "Massimo", - "PasswordResetProviderHelp": "Scegli un Provider Reset Password da utilizzare quando questo utente ne richiede il reset", + "PasswordResetProviderHelp": "Scegli un provider di reset password da utilizzare quando questo utente ne richiederà il reset.", "PlaybackData": "Dati di Riproduzione", "TagsValue": "Tag: {0}", "Whitelist": "Lista bianca", @@ -1340,7 +1307,6 @@ "Studios": "Studios", "SubtitleOffset": "Sfasamento Sottotitolo", "TV": "TV", - "TabInfo": "Informazioni", "TabLogs": "Log", "TabNetworking": "Rete", "TabPlugins": "Plugin", @@ -1383,7 +1349,7 @@ "LastSeen": "Visto l'ultima volta {0}", "PersonRole": "nel ruolo di {0}", "ListPaging": "{0}-{1} di {2}", - "WriteAccessRequired": "Jellyfin Server richiede il permesso di scrittura su questa cartella. Verificare l'autorizzazione e riprovare.", + "WriteAccessRequired": "Jellyfin richiede il permesso di scrittura su questa cartella. Verificare l'autorizzazione e riprovare.", "PathNotFound": "Percorso non trovato. Assicurarsi che sia valido e riprovare.", "YadifBob": "YADIF Bob", "Yadif": "YADIF", @@ -1405,7 +1371,7 @@ "LabelChromecastVersion": "Versione Chromecast", "LabelRequireHttpsHelp": "Se selezionata, il server reindirizzerà tutte le richieste HTTP a HTTPS. Vale solo se il sever è configurato per l'ascolto in HTTPS.", "LabelRequireHttps": "Richiede HTTPS", - "LabelEnableHttpsHelp": "Abilita il server all'ascolto sulla porta HTTPS configurata. Il certificato deve essere configurato e valido per l'abilitazione.", + "LabelEnableHttpsHelp": "Ascolta sulla porta HTTPS configurata. Deve essere fornito un certificato valido per l'abilitazione.", "LabelEnableHttps": "Abilita HTTPS", "HeaderServerAddressSettings": "Configurazione Indirizzo Server", "HeaderRemoteAccessSettings": "Configurazione Access Remoto", @@ -1444,7 +1410,7 @@ "HeaderSyncPlaySelectGroup": "Unisciti a un gruppo", "EnableDetailsBannerHelp": "Mostra il banner nella parte superiore della pagina di dettaglio dell'elemento.", "EnableDetailsBanner": "Banner Dettagli", - "EnableBlurHashHelp": "Le immagini ancora da caricare saranno mostrate inizialmente sfocate", + "EnableBlurHashHelp": "Le immagini ancora da caricare saranno mostrate inizialmente sfocate.", "EnableBlurHash": "Abilita i segnaposto sfocati per le immagini", "ShowMore": "Mostra di più", "ShowLess": "Mostra meno", @@ -1468,5 +1434,13 @@ "Writers": "Scrittori", "ClearQueue": "Svuota la coda", "StopPlayback": "Interrompi riproduzione", - "LabelUnstable": "Unstable" + "LabelUnstable": "Unstable", + "NextTrack": "Prossima traccia", + "Preview": "Anteprima", + "LabelSubtitleVerticalPosition": "Posizione verticale:", + "PreviousTrack": "Traccia precedente", + "MessageGetInstalledPluginsError": "Errore durante la generazione della lista dei plugin installati.", + "MessagePluginInstallError": "Errore durante l'installazione del plugin.", + "SubtitleVerticalPositionHelp": "Numero di riga in cui viene visualizzato il testo. I numeri positivi indicano dall'alto verso il basso. I numeri negativi indicano dal basso verso l'alto.", + "PlaybackRate": "Velocità di riproduzione" } diff --git a/src/strings/ja.json b/src/strings/ja.json index 1c3d8fe30e..9652e85a18 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -63,15 +63,11 @@ "ButtonBack": "戻る", "ButtonCancel": "キャンセル", "ButtonChangeServer": "サーバーを変更", - "ButtonEdit": "編集", - "ButtonEditImages": "イメージを編集", "ButtonEditOtherUserPreferences": "ユーザーのアバターイメージやプロフィールなどの個人設定を編集。", - "ButtonFilter": "フィルタ", "ButtonForgotPassword": "パスワードを忘れた", "ButtonFullscreen": "フルスクリーン", "ButtonGotIt": "了解", "ButtonGuide": "ガイド", - "ButtonHome": "ホーム", "ButtonInfo": "情報", "ButtonLibraryAccess": "ライブラリへアクセス", "ButtonManualLogin": "マニュアルログイン", @@ -82,11 +78,9 @@ "ButtonOpen": "開く", "ButtonParentalControl": "ペアレンタルコントロール", "ButtonPause": "一時停止", - "ButtonPlay": "再生", "ButtonPreviousTrack": "前のトラック", "ButtonProfile": "プロフィール", "ButtonQuickStartGuide": "クイックスタートガイド", - "ButtonRefresh": "更新", "ButtonRefreshGuideData": "ガイドデータの更新", "ButtonRemove": "削除", "ButtonRename": "名前の変更", @@ -107,7 +101,6 @@ "ButtonStart": "スタート", "ButtonStop": "ストップ", "ButtonSubmit": "提出", - "ButtonSubtitles": "字幕", "ButtonTrailer": "予告", "ButtonUninstall": "アンインストール", "ButtonWebsite": "ウェブサイト", @@ -125,7 +118,7 @@ "ColorSpace": "カラースペース", "CommunityRating": "コミュニティ評価", "Composer": "作曲者", - "ConfigureDateAdded": "日時を設定します", + "ConfigureDateAdded": "追加日時の設定はダッシュボードからライブラリー設定で変えられます", "ConfirmDeleteImage": "イメージを削除しますか?", "ConfirmDeleteItem": "このアイテムを削除すると、ファイルシステムとメディアライブラリの両方から削除されます。 続行しますか?", "ConfirmDeleteItems": "これらの項目を削除すると、ファイルシステムとメディアライブラリの両方からそれらが削除されます。 続行しますか?", @@ -155,7 +148,7 @@ "DeviceAccessHelp": "これは、識別できるデバイスにのみ適用され、ブラウザへのアクセスを妨げることはありません。 ユーザーのデバイスアクセスをフィルタリングすると、ここで承認されるまで新しいデバイスを使用できなくなります。", "DirectPlaying": "ダイレクト再生", "DirectStreamHelp1": "メディアは、解像度と種類 (H.264, AC3など)がお使いのデバイスに対応していますが、ファイルコンテナ(.mkv, .avi, .wmvなど)が対応していません。ビデオはデバイスに送信される前に、再パッケージされます。", - "DirectStreamHelp2": "ファイルのダイレクトストリーミングは、ビデオ品質を損なうことなく、Jellyfin Serverにもほとんど負荷がありません。", + "DirectStreamHelp2": "ダイレクトストリーミングは、ビデオ品質を損なうことなく、Jellyfin Serverにもほとんど負荷がありません。", "DirectStreaming": "ダイレクトストリーミング", "Director": "ディレクター", "Directors": "ディレクターズ", @@ -193,9 +186,7 @@ "EnablePhotosHelp": "写真が検出され、他のメディアファイルと一緒に表示されます。", "EnableStreamLooping": "ライブストリームの自動ループ", "EnableStreamLoopingHelp": "ライブストリームに数秒のデータしか含まれず、継続的に要求する必要がある場合は、これを有効にします。不要なときにこれを有効にすると、問題が発生する可能性があります。", - "EnableThemeSongs": "テーマ曲", "EnableThemeSongsHelp": "ライブラリを閲覧している間バックグラウンドでテーマ曲を再生する。", - "EnableThemeVideos": "テーマ動画", "EnableThemeVideosHelp": "ライブラリを閲覧中にバックグラウンドでテーマ動画を再生します。", "Ended": "終了", "EndsAtValue": "{0}に終了", @@ -204,15 +195,14 @@ "HeaderMoreLikeThis": "これに似たもの", "InstantMix": "インスタントミックス", "MoreFromValue": "もっと詳しく {0}", - "ButtonOff": "オフ", "ColorTransfer": "Color transfer", "DeathDateValue": "死亡日:{0}", "Depressed": "陰鬱", "ErrorAddingListingsToSchedulesDirect": "Schedules Directのアカウントにラインナップを追加中にエラーが発生しました。 スケジュールダイレクトでは、アカウントごとに限られた数のラインナップしか許可されません。続けるには、Schedules Direct にログインしてアカウントから他のリストを削除する必要があります。", - "ErrorAddingMediaPathToVirtualFolder": "メディアパスの追加中にエラーが発生しました。 パスが有効で、Jellyfin サーバープロセスがその場所にアクセスできることを確認してください。", + "ErrorAddingMediaPathToVirtualFolder": "メディアパスの追加中にエラーが発生しました。 パスが有効で、Jellyfin がその場所にアクセスできることを確認してください。", "ErrorAddingTunerDevice": "チューナーデバイスの追加中にエラーが発生しました。 アクセス可能であることを確認して、もう一度やり直してください。", "ErrorAddingXmlTvFile": "XMLTV ファイルへのアクセス中にエラーが発生しました。 ファイルが存在することを確認して、やり直してください。", - "ErrorDeletingItem": "Jellyfin サーバーからアイテムを削除中にエラーが発生しました。 Jellyfin サーバーがメディアフォルダーへの書き込みアクセス権を持っていることを確認して、もう一度やり直してください。", + "ErrorDeletingItem": "サーバーからアイテムを削除中にエラーが発生しました。 Jellyfinがメディアフォルダーへの書き込みアクセス権を持っていることを確認して、もう一度やり直してください。", "ErrorGettingTvLineups": "TV ラインナップ のダウンロード中にエラーが発生しました。 あなたの情報が正しいことを確認してもう一度やり直してください。", "ErrorStartHourGreaterThanEnd": "終了時間は開始時間より長くなければなりません。", "ErrorPleaseSelectLineup": "ラインナップを選択してもう一度やり直してください。 ラインナップが利用できない場合は、あなたのユーザー名、パスワード、および郵便番号が正しいことを確認してください。", @@ -260,11 +250,9 @@ "HeaderActiveDevices": "アクティブデバイス", "HeaderActiveRecordings": "アクティブな録画", "HeaderActivity": "アクティビティ", - "HeaderAddScheduledTaskTrigger": "トリガーを追加", "HeaderAddToCollection": "コレクションに追加", "HeaderAddToPlaylist": "プレイリストに追加", "HeaderAddUpdateImage": "イメージの追加/更新", - "HeaderAddUser": "ユーザーの追加", "HeaderAdditionalParts": "追加のパーツ", "HeaderAdmin": "管理者", "HeaderAlbumArtists": "アルバムアーティスト", @@ -278,12 +266,10 @@ "HeaderAudioBooks": "オーディオブック", "HeaderAudioSettings": "音声設定", "HeaderBlockItemsWithNoRating": "評価情報がない、または認識できないアイテムをブロックします。", - "HeaderBooks": "ブック", "HeaderBranding": "ブランディング", "HeaderCancelRecording": "録画の停止", "HeaderCancelSeries": "シリーズをキャンセル", "HeaderCastAndCrew": "キャスト&クルー", - "HeaderCastCrew": "キャスト&クルー", "HeaderChannelAccess": "チャンネルアクセス", "HeaderChapterImages": "チャプターイメージ", "HeaderCodecProfile": "コーデックプロファイル", @@ -317,7 +303,6 @@ "HeaderEditImages": "イメージの編集", "HeaderEnabledFields": "有効なフィールド", "HeaderEnabledFieldsHelp": "フィールドをオフにしてロックし、データが変更されないようにします。", - "HeaderEpisodes": "エピソード", "HeaderError": "エラー", "HeaderExternalIds": "外部ID:", "HeaderFavoriteMovies": "お気に入りのムービー", @@ -331,10 +316,8 @@ "HeaderFetchImages": "画像を取得する:", "HeaderFetcherSettings": "フェッチャー設定", "HeaderForKids": "子供向け", - "HeaderForgotPassword": "パスワードを忘れました", "HeaderFrequentlyPlayed": "よく再生する", "HeaderGuideProviders": "TV番組情報のプロバイダ", - "HeaderHome": "ホーム", "HeaderHttpHeaders": "HTTPヘッダー", "HeaderIdentification": "識別", "HeaderIdentificationCriteriaHelp": "少なくとも1つの識別基準を入力してください。", @@ -360,7 +343,6 @@ "HeaderLoginFailure": "ログイン失敗", "HeaderMedia": "メディア", "HeaderMediaFolders": "メディアフォルダ", - "HeaderMediaInfo": "メディア情報", "HeaderMetadataSettings": "メタデータ設定", "HeaderMusicQuality": "ミュージックの品質", "HeaderMusicVideos": "ミュージックビデオ", @@ -508,10 +490,9 @@ "LabelNewPassword": "新しいパスワード:", "LabelNewPasswordConfirm": "新しいパスワードを確認:", "LabelNotificationEnabled": "この通知を有効化", - "LabelOptionalNetworkPath": "(任意) 共有ネットワークフォルダー:", + "LabelOptionalNetworkPath": "共有ネットワークフォルダー:", "LabelOriginalAspectRatio": "元のアスペクト比:", "LabelServerName": "サーバー名:", - "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "サポートされているメディアタイプ:", "LabelTVHomeScreen": "TVモードホームスクリーン:", "LabelTextColor": "文字色:", @@ -524,11 +505,9 @@ "MessageItemSaved": "アイテムを保存しました。", "MessageItemsAdded": "アイテムを追加しました。", "MessagePleaseWait": "お待ち下さい。この処理には数分かかります。", - "MessageSettingsSaved": "設定を保存しました。", "MessageReenableUser": "最有効するためには以下を参照してください", "Name": "名前", "NewCollection": "新しいコレクション", - "OptionAutomatic": "自動", "OptionAscending": "昇順", "OptionAuto": "自動", "OptionBlockBooks": "ブック", @@ -563,7 +542,6 @@ "Sunday": "日曜日", "CopyStreamURLSuccess": "URLのコピーが成功しました。", "TabDirectPlay": "直接再生", - "TabEpisodes": "エピソード", "LabelDefaultUser": "デフォルトユーザー:", "Trailers": "トレーラー", "LabelRecord": "レコード:", @@ -606,7 +584,6 @@ "LabelCurrentPassword": "現在のパスワード:", "LabelCustomCss": "カスタムCSS:", "LabelCustomCssHelp": "ウェブインターフェースにカスタムスタイルを適応する。", - "LabelCustomDeviceDisplayName": "表示名:", "LabelEnableDlnaClientDiscoveryInterval": "クライアント探索間隔", "LabelParentalRating": "個人評価:", "LabelPassword": "パスワード:", @@ -638,7 +615,7 @@ "LabelKidsCategories": "子供のカテゴリ:", "LabelLanNetworks": "LANネットワーク:", "LabelLanguage": "言語:", - "LabelLocalHttpServerPortNumberHelp": "JellyfinのHTTPサーバーがバインドするTCPポート番号。", + "LabelLocalHttpServerPortNumberHelp": "HTTPサーバーのTCPポート番号。", "LabelLoginDisclaimer": "ログイン免責事項:", "LabelSendNotificationToUsers": "通知を送る:", "LabelVideoCodec": "映像コーデック:", @@ -702,7 +679,6 @@ "TV": "TV", "TabAccess": "アクセス", "TabAdvanced": "高度", - "TabAlbumArtists": "アルバムアーティスト", "TabCatalog": "カタログ", "TabCodecs": "コーデック", "TabContainers": "コンテナ", @@ -712,11 +688,9 @@ "SaveSubtitlesIntoMediaFolders": "字幕をメディアフォルダーに保存", "ScanForNewAndUpdatedFiles": "新しいファイルとアップデートされたファイルをスキャン", "TabDashboard": "ダッシュボード", - "TabInfo": "情報", "TabLatest": "最新", "TabLogs": "ログ", "TabMusic": "ミュージック", - "TabMusicVideos": "ミュージックビデオ", "TheseSettingsAffectSubtitlesOnThisDevice": "これらの設定はこのデバイスの字幕に影響します", "ShowTitle": "タイトルを表示", "TitleHostingSettings": "ホスト設定", @@ -787,7 +761,6 @@ "LabelAllowedRemoteAddresses": "リモートIPアドレスフィルター:", "LabelAppNameExample": "例: スケートボード、ソナー", "LabelArtists": "アーティスト:", - "LabelAudio": "音声", "LabelAudioBitDepth": "音声ビット深度:", "LabelAudioBitrate": "音声ビットレート:", "LabelAudioChannels": "音声チャンネル:", @@ -839,7 +812,7 @@ "LabelMonitorUsers": "アクティビティをモニター:", "LabelMovieCategories": "ムービーカテゴリ:", "LabelMoviePrefix": "ムービー接頭辞:", - "LabelMovieRecordingPath": "ムービー録画パス (任意):", + "LabelMovieRecordingPath": "ムービー録画パス:", "LabelOriginalTitle": "原題:", "LabelOverview": "概要:", "LabelParentNumber": "親番号:", @@ -853,7 +826,7 @@ "LabelPublicHttpsPort": "公開HTTPSポート番号:", "LabelReleaseDate": "公開日:", "LabelRemoteClientBitrateLimit": "インターネットストリーミングビットレートリミット (Mbps):", - "LabelRuntimeMinutes": "実行時間 (分):", + "LabelRuntimeMinutes": "実行時間:", "LabelScreensaver": "スクリーンセーバー:", "LabelSeasonNumber": "シーズン数:", "LabelSelectUsers": "ユーザーを選択:", @@ -872,11 +845,9 @@ "LabelTheme": "テーマ:", "LabelTitle": "題:", "LabelTrackNumber": "トラック数:", - "LabelTranscodingAudioCodec": "音声コーデック:", "LabelTranscodes": "トランスコード:", "LabelTranscodingFramerate": "トランスコーディングフレームレート:", "LabelTranscodingProgress": "トランスコーディング進行度:", - "LabelTranscodingVideoCodec": "映像コーデック:", "LabelType": "タイプ:", "LabelTypeText": "文字:", "LabelUser": "ユーザー:", @@ -1001,7 +972,6 @@ "TabServer": "サーバー", "TabSettings": "設定", "TabStreaming": "ストリーミング", - "TabTrailers": "トレーラー", "MessageContactAdminToResetPassword": "パスワードをリセットするためにシステムの管理者に連絡してください。", "TagsValue": "タグ: {0}", "MessageInvalidUser": "ユーザー名かパスワードが無効です。再試行してください。", @@ -1030,7 +1000,6 @@ "LabelEnableDlnaServer": "DLNAサーバーの有効化", "LabelEnableDlnaDebugLogging": "DLNAデバッグログの有効化", "LabelDroppedFrames": "ドロップフレーム:", - "LabelDisplayMissingEpisodesWithinSeasons": "シーズン中の見つからなかったエピソードを表示", "LabelCustomDeviceDisplayNameHelp": "任意の表示名を提供するか、空白のままにしてデバイスネームで報告する。", "LabelArtistsHelp": "複数のアーティストは「;」で分ける。", "Identify": "識別する", @@ -1066,7 +1035,7 @@ "LabelCustomCertificatePathHelp": "カスタムドメインでTLSサポートを有効にするための証明書と秘密鍵を含むPKCS #12ファイルのパス。", "LabelCachePathHelp": "画像などのサーバーキャッシュファイルの場所を指定します。空欄にしておくと、サーバーのデフォルトを使います。", "LabelBlastMessageIntervalHelp": "ブラスト アライブ メッセージ間の時間を秒単位で指定します。", - "LabelBindToLocalNetworkAddressHelp": "HTTP サーバー用のローカル IP アドレスを上書きします。空のままにしておくと、サーバーは利用可能なすべてのアドレスにバインドします。この値の変更を反映するには、Jellyfin サーバーの再起動が必要です。", + "LabelBindToLocalNetworkAddressHelp": "HTTP サーバー用のローカル IP アドレスを上書きします。空のままにしておくと、サーバーは利用可能なすべてのアドレスにバインドします。この値の変更を反映するには再起動が必要です。", "LabelAlbumArtMaxWidthHelp": "upnp:albumArtURI で公開するアルバムアートの最大解像度。", "LabelAlbumArtMaxHeightHelp": "upnp:albumArtURI で公開するアルバムアートの最大解像度。", "LabelAlbumArtHelp": "upnp:albumArtURI の dlna:profileID 属性で、アルバムアートに使われるPN。デバイスによっては、画像のサイズと無関係に特定の値を要求するものもあります。", @@ -1090,7 +1059,7 @@ "LabelEnableDlnaPlayToHelp": "ネットワーク内のデバイスを検出し、それらをリモートで操作できるようにします。", "LabelEnableDlnaPlayTo": "DLNA 再生を有効にする", "LabelEnableDlnaDebugLoggingHelp": "巨大なログファイルを作成します。トラブルシューティングでの必要な際にだけ使用してください。", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Jellyfin が実行する SSDP 検索の間隔を決めます(秒単位)。", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "SSDP 検索の間隔を決めます(秒単位)。", "LabelGroupMoviesIntoCollectionsHelp": "ムービー リストを表示する際、コレクションに属するムービーは1つのグループとして表示します。", "LabelServerNameHelp": "この名前はサーバーを識別するために使用します。デフォルトではサーバーのホスト名です。", "LabelExtractChaptersDuringLibraryScanHelp": "ライブラリー スキャン中に動画を取り込んだときに、チャプター画像を生成します。もしくは、スケジュールタスクの中でチャプター画像を抽出することで、通常のライブラリー スキャンをより速く完了させることができます。", @@ -1109,7 +1078,7 @@ "LabelPlayDefaultAudioTrack": "言語に関係なくデフォルトの音声トラックを再生", "LabelPersonRoleHelp": "例: アイスクリームトラックドライバー", "LabelPasswordResetProvider": "パスワードリセットの提供:", - "LabelOptionalNetworkPathHelp": "ネットワーク内の共有フォルダの場合,ネットワーク共有のパスが他デバイスのJellyfinアプリからメディアファイルに直接アクセスできるようになります。例えば {0} や {1}です。", + "LabelOptionalNetworkPathHelp": "ネットワーク内の共有フォルダの場合,ネットワーク共有のパスが他デバイスのクライアントからメディアファイルに直接アクセスできるようになります。例えば {0} や {1}です。", "LabelNumberOfGuideDaysHelp": "多くの日数分のガイドデータをダウンロードするとより先のスケジュールとリストを見ることができるようになりますが,ダウンロードに時間がかかるようになります。自動に設定するとチャンネル数を基に選択されます。", "LabelNumberOfGuideDays": "ガイドデータをダウンロードする日数:", "LabelNewsCategories": "ニュースのカテゴリ:", @@ -1123,7 +1092,7 @@ "LabelMinResumeDurationHelp": "動画で再生している場所を記録してレジュームできるようにする,最短の時間です。", "LabelMinResumeDuration": "レジューム再生する最小時間:", "LabelMinBackdropDownloadWidth": "ダウンロードする背景の最小幅:", - "LabelMetadataSaversHelp": "メタデータを保存するファイルのフォーマットを選択します。", + "LabelMetadataSaversHelp": "メタデータを保存する際に使うファイルのフォーマットを選択します。", "LabelMetadataReadersHelp": "ローカルメタデータ取得先の優先度を並び替えます。最初に見つかったファイルが読み込まれます。", "LabelMetadataDownloadersHelp": "優先度順にオンラインメタデータ取得先を並び替えます。低い優先度のメタデータ取得先は,欠落した情報を補うためのみに使われるようになります。", "LabelMetadataPathHelp": "ダウンロードされたアートワークとメタデータの保存先を自分で指定します。", @@ -1146,5 +1115,67 @@ "LabelInNetworkSignInWithEasyPasswordHelp": "ローカルネットワーク内では簡単なPINコードを利用してサインインするようにします。ローカル以外からのアクセスのときのみ通常のパスワードが必要になります。PINコードを空欄にした場合,ローカルネットワーク内からのアクセスではパスワードが不要になります。", "LabelInNetworkSignInWithEasyPassword": "簡単なPINコードを利用してネットワーク内からサインインする機能の有効化", "LabelIconMaxWidthHelp": "upnp:icon として表示されるアイコンの最大解像度(幅)。", - "LabelIconMaxHeightHelp": "upnp:icon として表示されるアイコンの最大解像度(高さ)。" + "LabelIconMaxHeightHelp": "upnp:icon として表示されるアイコンの最大解像度(高さ)。", + "ManageRecording": "録画管理", + "LeaveBlankToNotSetAPassword": "このフィールドを空欄にすることでパスワード不要にできます。", + "Large": "ラージ", + "LabelffmpegPathHelp": "ffmpegアプリケーションファイルかffmpegを含有するフォルダのパス。", + "LabelZipCode": "郵便番号:", + "LabelYoureDone": "全て完了です!", + "LabelXDlnaDoc": "X-DLNA doc:", + "LabelXDlnaCap": "X-DLNA cap:", + "LabelVideoResolution": "動画解像度:", + "LabelValue": "値:", + "LabelVaapiDevice": "VA APIデバイス:", + "LabelUserRemoteClientBitrateLimitHelp": "サーバープレイバック設定のデフォルトグローバル値をオーバーライド。", + "LabelUserLoginAttemptsBeforeLockout": "ユーザーがロックされる前にログイン試行が失敗:", + "LabelUserLibraryHelp": "デバイスに表示されるユーザーライブラリを選択してください。空欄の場合デフォルト設定が引き継がれます。", + "LabelUseNotificationServices": "以下のサービスを使用:", + "LabelTypeMetadataDownloaders": "{0} メタデータダウンローダー:", + "LabelTunerType": "チューナータイプ:", + "LabelTunerIpAddress": "チューナーIPアドレス:", + "LabelTriggerType": "トリガータイプ:", + "LabelTextBackgroundColor": "テキスト背景色:", + "LabelSyncPlayAccess": "SyncPlayアクセス", + "LabelSyncPlayAccessNone": "このユーザーには無効", + "LabelSyncPlayAccessJoinGroups": "ユーザーによるグループの参加を許可", + "LabelSyncPlayAccessCreateAndJoinGroups": "ユーザーによるグループの作成/参加を許可", + "LabelSyncPlayLeaveGroupDescription": "SyncPlay無効", + "LabelSyncPlayLeaveGroup": "グループを離れる", + "LabelSyncPlayNewGroupDescription": "新しいグループ作成", + "LabelSyncPlayNewGroup": "新しいグループ", + "LabelSyncPlaySyncMethod": "同期方法:", + "LabelSyncPlayPlaybackDiff": "プレイバック時間差分:", + "MillisecondsUnit": "ミリ秒", + "LabelSyncPlayTimeOffset": "タイムオフセット:", + "LabelSubtitleFormatHelp": "例: srt", + "LabelSubtitleDownloaders": "字幕ダウンローダー:", + "LabelStreamType": "ストリームタイプ:", + "LabelStopWhenPossible": "可能次第停止:", + "LabelStartWhenPossible": "可能次第開始:", + "LabelSpecialSeasonsDisplayName": "スペシャルシーズン表示名:", + "LabelSortBy": "ソート順:", + "LabelSonyAggregationFlags": "SONYアグリゲーションフラグ:", + "LabelSkipIfGraphicalSubsPresent": "もし動画に埋め込み字幕がある時スキップ", + "LabelSkipIfAudioTrackPresent": "デフォルト音声トラックとダウンロード言語が同じ時スキップ", + "LabelSkipForwardLength": "スキップ(進み)時間:", + "LabelSkipBackLength": "スキップ(戻り)時間:", + "LabelSimultaneousConnectionLimit": "同時ストリーム制限:", + "LabelSeriesRecordingPath": "シリーズ録画パス:", + "EnableFasterAnimationsHelp": "高速アニメーションとページ遷移を使う", + "EnableFasterAnimations": "高速アニメーション", + "LabelScheduledTaskLastRan": "最終実行は{0}、実行時間は{1}。", + "LabelRequireHttpsHelp": "チェック時、全てのHTTPリクエストをHTTPSに自動リダイレクトします。サーバーがHTTPS対応していない時は何もしません。", + "LabelRequireHttps": "HTTPS必須", + "LabelRefreshMode": "リフレッシュモード:", + "LabelRecordingPath": "デフォルト録画パス:", + "LabelReasonForTranscoding": "トランスコード理由:", + "LabelProtocolInfoHelp": "この値はデバイスからのGetProtocolInfoリクエスト応答に使われます。", + "LabelProfileContainersHelp": "カンマ区切り。空欄にすることで全てのコンテナに適用されます。", + "LabelProfileContainer": "コンテナ:", + "LabelProfileCodecsHelp": "カンマ区切り。空欄にすることで全てのコーデックに適用されます。", + "LabelPlayerDimensions": "プレーヤーサイズ:", + "LabelUnstable": "不安定", + "LabelMaxParentalRating": "最大許容ペアレントレイティング:", + "LabelKodiMetadataEnablePathSubstitutionHelp": "サーバーのパス補完を使った画像パスの補完を有効にする。" } diff --git a/src/strings/kk.json b/src/strings/kk.json index 3f20e5ca10..90176b0335 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -62,31 +62,24 @@ "ButtonBack": "Artqa", "ButtonCancel": "Boldyrmaý", "ButtonChangeServer": "Serverdi aýystyrý", - "ButtonEdit": "Óńdeý", - "ButtonEditImages": "Sýretterdi óńdeý", "ButtonEditOtherUserPreferences": "Osy paıdalanýshynyń profaılyn, sýretin jáne ózindik teńshelimderin óńdeý.", - "ButtonFilter": "Súzý", "ButtonForgotPassword": "Paróldi eske salý", "ButtonFullscreen": "Tolyq ekran", "ButtonGotIt": "Túsinikti", "ButtonGuide": "Telegıd", - "ButtonHome": "Basqyǵa", "ButtonInfo": "Aqparatqa", "ButtonLibraryAccess": "Tasyǵyshhanǵa qatynaý", "ButtonManualLogin": "Qolmen kirý", "ButtonMore": "Kóbirek", "ButtonNetwork": "Jeli", "ButtonNextTrack": "Kelesi jolshyqqa", - "ButtonOff": "Óshir", "ButtonOk": "Jaraıdy", "ButtonOpen": "Ashý", "ButtonParentalControl": "Mazmundy basqarý", "ButtonPause": "Úzý", - "ButtonPlay": "Oınatý", "ButtonPreviousTrack": "Aldyńǵy jolshyqqa", "ButtonProfile": "Profaıl", "ButtonQuickStartGuide": "Tez bastaý nusqaýlyǵy", - "ButtonRefresh": "Jańǵyrtý", "ButtonRefreshGuideData": "Telegıd derekterin jańǵyrtý", "ButtonRemove": "Alastaý", "ButtonRename": "Qaıta ataý", @@ -107,7 +100,6 @@ "ButtonStart": "Bastaý", "ButtonStop": "Toqtatý", "ButtonSubmit": "Jiberý", - "ButtonSubtitles": "Sýbtıtrlerge", "ButtonTrailer": "Treıler", "ButtonUninstall": "Ornatymdy joıý", "ButtonWebsite": "Ýeb-saıty", @@ -195,9 +187,7 @@ "EnablePhotosHelp": "Sýretter basqa tasyǵysh faıldarymen qatar anyqtalady jáne beınelenedi.", "EnableStreamLooping": "Taratýlardy avtomatty tuıyqtaý", "EnableStreamLoopingHelp": "Eger taratý derekterinde tek qana azyn-aýlaq sekýnd bar bolsa jáne ony úzdiksiz suratyp alý qajet bolsa, ony qosyńyz. Bul qajet bolmaǵan jaǵdaıda qosylsa, qıyndyqtar týdyrýy múmkin.", - "EnableThemeSongs": "Taqyryptyq áýender", "EnableThemeSongsHelp": "Taqyryptyq áýender tasyǵyshhanany sholý kezinde óńde oınatylady.", - "EnableThemeVideos": "Taqyryptyq beıneler", "EnableThemeVideosHelp": "Taqyryptyq beıneler tasyǵyshhanany sholý kezinde óńde oınatylady.", "Ended": "Aıaqtaldy", "EndsAtValue": "Sońy: {0}", @@ -254,11 +244,9 @@ "HeaderActiveDevices": "Belsendi qurylǵylar", "HeaderActiveRecordings": "Belsendi jazbalar", "HeaderActivity": "Áreketter", - "HeaderAddScheduledTaskTrigger": "Trıger ústeý", "HeaderAddToCollection": "Jıyntyqqa ústeý", "HeaderAddToPlaylist": "Oınatý tizimine ústeý", "HeaderAddUpdateImage": "Sýret ústeý/jańartý", - "HeaderAddUser": "Paıdalanýshy ústeý", "HeaderAdditionalParts": "Jalǵasatyn bólimder", "HeaderAdmin": "Basqarý", "HeaderAlbumArtists": "Álbom oryndaýshylary", @@ -272,12 +260,10 @@ "HeaderAudioBooks": "Dybystyq kitaptar", "HeaderAudioSettings": "Dybys parametrleri", "HeaderBlockItemsWithNoRating": "Jastas sanaty týraly aqparaty joq nemese ol tanylmaǵan mazmundy qursaýlaý:", - "HeaderBooks": "Kitaptar", "HeaderBranding": "Bezendirý", "HeaderCancelRecording": "Jazýdy boldyrmaý", "HeaderCancelSeries": "Telehıkaıany boldyrmaý", "HeaderCastAndCrew": "Róldegiler men qyzmetkerler", - "HeaderCastCrew": "Róldegiler men qyzmetkerler", "HeaderChannelAccess": "Arnaǵa qatynaý", "HeaderChapterImages": "Sahna sýretteri", "HeaderCodecProfile": "Kodek profaıly", @@ -311,14 +297,12 @@ "HeaderEditImages": "Sýretterdi óńdeý", "HeaderEnabledFields": "Qosylǵan órister", "HeaderEnabledFieldsHelp": "Qursaýlaý úshin jáne derekter ózgertýine tyıym salý úshin, óristen qusbelgini alyńyz.", - "HeaderEpisodes": "TD-bólimder", "HeaderError": "Qate", "HeaderExternalIds": "Syrtqy sáıkestendirgishter:", "HeaderFeatureAccess": "Erekshelikterge qatynaý", "HeaderFetchImages": "Sýretterdi irikteý:", "HeaderFetcherSettings": "Irikteýshi parametrleri", "HeaderForKids": "Balalyq", - "HeaderForgotPassword": "Paróldi umytyńyz ba", "HeaderFrequentlyPlayed": "Jıi oınatylǵandar", "HeaderGuideProviders": "Telegıd derekterin jetkizýshileri", "HeaderHttpHeaders": "HTTP ústińgi derektemeleri", @@ -347,7 +331,6 @@ "HeaderLoginFailure": "Kirý sátsizdigi", "HeaderMedia": "Tasyǵyshderekter", "HeaderMediaFolders": "Tasyǵysh qaltalary", - "HeaderMediaInfo": "Tasyǵyshderekter týraly", "HeaderMetadataSettings": "Metaderekter parametrleri", "HeaderMoreLikeThis": "Osy sıaqty kóbirek", "HeaderMusicQuality": "Mýzyka sapasy", @@ -480,7 +463,6 @@ "LabelAppNameExample": "Mysaly: Sickbeard, Sonarr", "LabelArtists": "Oryndaýshylar:", "LabelArtistsHelp": "Birneshýin mynaýmen bólińiz ;", - "LabelAudio": "Dybys", "LabelAudioLanguagePreference": "Dybys tiliniń teńshelimi:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Metaderekterdi Internetten avtomatty jańartý:", "LabelBindToLocalNetworkAddress": "Jergilikti jeli mekenjaıyna baılastyrý:", @@ -508,7 +490,6 @@ "LabelCustomCertificatePathHelp": "Teńsheletin domende TLS qoldaýyn qosý úshin sertıfıkaty jáne jeke kilti bar PKCS #12 faılyna jol.", "LabelCustomCss": "Teńsheýli CSS:", "LabelCustomCssHelp": "Ózińizdiń teńsheýli mánerleýdi ýeb-tildesýde qoldanyńyz.", - "LabelCustomDeviceDisplayName": "Beınelený aty:", "LabelCustomDeviceDisplayNameHelp": "Beınelenetin teńshelgen atyn usynyńyz nemese qurylǵy arqyly baıandalǵan atyn paıdalaný úshin bos qaldyryńyz.", "LabelCustomRating": "Teńshelgen sanat:", "LabelDateAdded": "Ústelgen kúni:", @@ -525,7 +506,6 @@ "LabelDiscNumber": "Dıski nómiri:", "LabelDisplayLanguage": "Beıneleý tili:", "LabelDisplayLanguageHelp": "Jellyfin tárjimeleýi aǵymdaǵy joba bolyp tabylady.", - "LabelDisplayMissingEpisodesWithinSeasons": "Joq bólimderdi maýsym ishinde beıneleý", "LabelDisplayMode": "Beıneleý rejimi:", "LabelDisplayName": "Beınelený aty:", "LabelDisplayOrder": "Beıneleý reti:", @@ -680,7 +660,6 @@ "LabelPostProcessorArguments": "Post-prosesor pármen jolynyń argýmentteri:", "LabelPostProcessorArgumentsHelp": "Jazylatyn faıl joly esebinde {path} paıdalanyńyz.", "LabelPreferredDisplayLanguage": "Beıneleý tiliniń teńshelimi:", - "LabelPreferredDisplayLanguageHelp": "Jellyfin tárjimeleýi aǵymdaǵy joba bolyp tabylady.", "LabelPreferredSubtitleLanguage": "Sýbtıtr tiliniń teńshelimi:", "LabelProfileAudioCodecs": "Dybystyq kodekter:", "LabelProfileCodecs": "Kodekter:", @@ -740,7 +719,6 @@ "LabelSubtitleDownloaders": "Sýbtıtrler júkteýshileri:", "LabelSubtitleFormatHelp": "Mysal: srt", "LabelSubtitlePlaybackMode": "Sýbtıtr rejimi:", - "LabelSubtitles": "Sýbtıtrler", "LabelSupportedMediaTypes": "Qoldaýdaǵy tasyǵyshderekter túrleri:", "LabelTVHomeScreen": "TD rejimindegi basqy ekran:", "LabelTag": "Teg:", @@ -753,12 +731,9 @@ "LabelTimeLimitHours": "Ýaqyt shegi (saǵat):", "LabelTitle": "Ataýy:", "LabelTrackNumber": "Jolshyq nómiri:", - "LabelTranscodingAudioCodec": "Dybystyq kodek:", - "LabelTranscodingContainer": "Konteıner:", "LabelTranscodingTempPathHelp": "Klıentterge qyzmet etetin qaıta kodtaý faıldar úshin teńshelgen jolyn kórsetińiz. Server ádepkisin paıdalaný úshin bos qaldyryńyz.", "LabelTranscodingThreadCount": "Qaıta qodtaý tizbekterdiń sany:", "LabelTranscodingThreadCountHelp": "Qaıta kodtaý kezinde paıdalanatyn eń kóp tizbek sanyn tańdańyz. Tizbek sanyn azaıtý OP paıdalanýyn tómendetedi, biraq jatyq oınatý áseri úshin tez túrlendirýge jetkilikti bolmaýy múmkin.", - "LabelTranscodingVideoCodec": "Beınelik kodek:", "LabelTriggerType": "Trıgger túri:", "LabelTunerIpAddress": "Túnerdiń IP-mekenjaıy:", "LabelTunerType": "Túner túri:", @@ -868,7 +843,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Osy plagındi teńsheý úshin jergilikti serverińizge tikeleı kirińiz.", "MessagePluginInstallDisclaimer": "Jellyfin qaýymdastyǵy múshelerimen qurylǵan plagınder Jellyfin tájirıbeńizdi qosymsha múmkindiktermen jáne jeńildiktermen jaqsartý úshin jaqsy tásili bolyp tabylady. Ornatpas buryn, olar Jellyfin serverińizge tasyǵyshhanany uzaq skanerleý, qosymsha óńdik óńdetý jáne júıeniń turaqtylyǵyn tómendetý sıaqty áserler etýge múmkin bolýyna habardar bolyńyz.", "MessageReenableUser": "Qaıta qosý úshin tómende qarańyz", - "MessageSettingsSaved": "Parametrler saqtaldy.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Tasyǵyshhanańyzdan kelesi tasyǵysh ornalasýlary alastalady:", "MessageUnableToConnectToServer": "Tańdalǵan serverge qosylýymyz dál qazir múmkin emes. Bul iske qosylǵanyna kóz jetkizińiz jáne áreketti keıin qaıtalańyz.", "MessageUnsetContentHelp": "Mazmun kádimgi qaltalar retinde beınelenedi. Eń jaqsy nátıjeler alý úshin, ishki qaltalardyń mazmún túrlerin ornatyp Metaderek retteýshini paıdalanyńyz.", @@ -934,7 +908,6 @@ "OptionArtist": "Oryndaýshy", "OptionAscending": "Artýy boıynsha", "OptionAuto": "Avtomatty", - "OptionAutomatic": "Avtomatty", "OptionAutomaticallyGroupSeries": "Birneshe qaltalar arasynda taralǵan telehıkaıany avtomatty bir telehıkaıaǵa biriktirý", "OptionAutomaticallyGroupSeriesHelp": "Qosylǵanda, osy tasyǵyshhana ishindegi birneshe qaltalar arasynda taralǵan telehıkaıasy avtomatty bir telehıkaıaǵa biriktiriletin bolady.", "OptionBlockBooks": "Kitaptar", @@ -1176,18 +1149,14 @@ "TV": "TD", "TabAccess": "Qatynaý", "TabAdvanced": "Keńeıtilgen", - "TabAlbumArtists": "Álbom oryndaýshylary", "TabCatalog": "Tizimdeme", "TabCodecs": "Kodekter", "TabContainers": "Konteınerler", "TabDashboard": "Taqta", "TabDirectPlay": "Tikeleı oınatý", - "TabEpisodes": "TD-bólimder", - "TabInfo": "Profaıl týraly", "TabLatest": "Eń keıingi", "TabLogs": "Jurnaldar", "TabMusic": "Mýzyka", - "TabMusicVideos": "Mýzykalyq beıneler", "TabMyPlugins": "Meniń plagınderim", "TabNetworks": "Jeliler", "TabNfoSettings": "NFO parametrleri", @@ -1198,12 +1167,10 @@ "TabProfile": "Profaıl", "TabProfiles": "Profaıldar", "TabResponses": "Ún qatýlar", - "TabResumeSettings": "Jalǵastyrý", "TabScheduledTasks": "Josparlaýshy", "TabServer": "Server", "TabSettings": "Parametrler", "TabStreaming": "Tasymaldaný", - "TabTrailers": "Treılerler", "TabUpcoming": "Kútilgen", "Tags": "Tegter", "TagsValue": "Tegter: {0}", @@ -1286,7 +1253,6 @@ "HeaderFavoriteArtists": "Tańdaýly oryndaýshylar", "HeaderFavoriteSongs": "Tańdaýly áýender", "HeaderFavoriteVideos": "Tandaýly beıneler", - "HeaderHome": "Basqy", "LabelAuthProvider": "Túpnusqalyq rastamasyn jetkizýshi:", "LabelPasswordResetProvider": "Paróldi ysyrý jetkizýshisi:", "LabelServerName": "Server aty:", diff --git a/src/strings/ko.json b/src/strings/ko.json index 79153c0962..cdb2711a48 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -21,13 +21,10 @@ "ButtonBack": "뒤로", "ButtonCancel": "취소", "ButtonChangeServer": "서버 변경", - "ButtonEdit": "편집", "ButtonEditOtherUserPreferences": "이 사용자의 프로필, 이미지, 개인 설정을 수정합니다.", - "ButtonFilter": "필터", "ButtonForgotPassword": "비밀번호 분실", "ButtonGotIt": "알겠습니다", "ButtonGuide": "가이드", - "ButtonHome": "홈", "ButtonInfo": "정보", "ButtonManualLogin": "수동 로그인", "ButtonMore": "더 보기", @@ -36,11 +33,9 @@ "ButtonOk": "OK", "ButtonOpen": "열기", "ButtonPause": "일시 중지", - "ButtonPlay": "재생", "ButtonPreviousTrack": "이전 트랙", "ButtonProfile": "프로필", "ButtonQuickStartGuide": "빠른 시작 가이드", - "ButtonRefresh": "새로 고침", "ButtonRefreshGuideData": "가이드 데이터 새로 고침", "ButtonRemove": "제거", "ButtonRename": "이름 변경", @@ -59,7 +54,6 @@ "ButtonStart": "시작", "ButtonStop": "중지", "ButtonSubmit": "제출", - "ButtonSubtitles": "자막", "ButtonUninstall": "제거", "ButtonWebsite": "웹사이트", "ChannelAccessHelp": "이 사용자와 공유할 채널을 선택합니다. 관리자는 메타데이터 매니저를 사용하여 모든 채널을 수정할 수 있습니다.", @@ -106,11 +100,9 @@ "HeaderActiveDevices": "활성화된 기기", "HeaderActiveRecordings": "활성화된 녹화", "HeaderActivity": "활성화", - "HeaderAddScheduledTaskTrigger": "트리거 추가", "HeaderAddToCollection": "컬렉션에 추가", "HeaderAddToPlaylist": "재생목록에 추가", "HeaderAddUpdateImage": "이미지 추가/업데이트", - "HeaderAddUser": "사용자 추가", "HeaderAdditionalParts": "추가 장면", "HeaderAdmin": "관리자", "HeaderAlert": "알림", @@ -118,9 +110,7 @@ "HeaderApiKeys": "API 키", "HeaderApp": "앱", "HeaderAudioSettings": "오디오 설정", - "HeaderBooks": "도서", "HeaderBranding": "브랜딩", - "HeaderCastCrew": "배역 및 제작진", "HeaderChannelAccess": "채널 접속", "HeaderCodecProfile": "코덱 프로필", "HeaderConfirmProfileDeletion": "프로필 삭제 확인", @@ -140,7 +130,6 @@ "HeaderError": "오류", "HeaderFeatureAccess": "기능 접근", "HeaderFetchImages": "이미지 가져오기:", - "HeaderForgotPassword": "비밀번호 분실", "HeaderFrequentlyPlayed": "자주 재생함", "HeaderGuideProviders": "가이드 제공자", "HeaderIdentification": "식별자", @@ -158,7 +147,6 @@ "HeaderLoginFailure": "로그인 실패", "HeaderMedia": "미디어", "HeaderMediaFolders": "미디어 폴더", - "HeaderMediaInfo": "미디어 정보", "HeaderMetadataSettings": "메타데이터 설정", "HeaderMusicVideos": "뮤직비디오", "HeaderMyMedia": "내 미디어", @@ -262,7 +250,6 @@ "LabelCustomCertificatePathHelp": "커스텀 도메인에서 TLS를 지원할 수 있도록 인증서 및 개인키가 포함 된 PKCS #12 파일의 경로입니다.", "LabelCustomCss": "사용자 지정 CSS:", "LabelCustomCssHelp": "사용자 정의 스타일링을 웹 인터페이스에 적용합니다.", - "LabelCustomDeviceDisplayName": "표시 이름:", "LabelCustomRating": "사용자 평점:", "LabelDateAdded": "추가한 날짜:", "LabelDateAddedBehavior": "새 콘텐츠에 대한 날짜 추가 동작:", @@ -273,7 +260,6 @@ "LabelDefaultUserHelp": "연결된 장치에 어떤 사용자 라이브러리를 표시할 지 결정합니다. 이 설정은 각 장치의 사용중인 프로필을 대체합니다.", "LabelDeviceDescription": "장치 설명", "LabelDidlMode": "DIDL 모드:", - "LabelDisplayMissingEpisodesWithinSeasons": "각 시즌의 누락된 에피소드 표시", "LabelDisplayName": "표시 이름:", "LabelDisplayOrder": "표시 순서:", "LabelDisplaySpecialsWithinSeasons": "방송한 시즌 내에서 스페셜을 표시합니다", @@ -375,7 +361,6 @@ "LabelPlayDefaultAudioTrack": "언어에 상관없이 기본 오디오 트랙 재생", "LabelPlaylist": "재생목록:", "LabelPreferredDisplayLanguage": "선호하는 화면 언어:", - "LabelPreferredDisplayLanguageHelp": "Jellyfin 번역은 진행중인 프로젝트입니다.", "LabelProfileAudioCodecs": "오디오 코덱:", "LabelProfileCodecs": "코덱:", "LabelProfileCodecsHelp": "쉼표로 구분합니다. 모든 코덱에 적용할 수 있도록 빈 칸을 남겨둘 수 있습니다.", @@ -414,10 +399,7 @@ "LabelTime": "시각:", "LabelTimeLimitHours": "시간 제한 (시간):", "LabelTrackNumber": "트랙 번호:", - "LabelTranscodingAudioCodec": "오디오 코덱:", - "LabelTranscodingContainer": "컨테이너:", "LabelTranscodingTempPathHelp": "클라이언트로 제공될 트랜스코딩 파일이 위치한 사용자 경로를 설정합니다. 서버 기본값을 사용하려면 공백으로 두십시오.", - "LabelTranscodingVideoCodec": "비디오 코덱:", "LabelTriggerType": "트리거 종류:", "LabelTunerIpAddress": "튜너 IP 주소:", "LabelTunerType": "튜너 종류:", @@ -477,7 +459,6 @@ "MessageNothingHere": "아무것도 없습니다.", "MessagePasswordResetForUsers": "다음 사용자는 비밀번호를 재설정했습니다. 재설정을 수행하는데 사용된 핀 코드로 로그인 할 수 있습니다.", "MessagePleaseEnsureInternetMetadata": "인터넷 메타데이터 다운로드가 켜져 있는지 확인하세요.", - "MessageSettingsSaved": "설정이 저장되었습니다.", "MessageUnableToConnectToServer": "선택한 서버에 연결할 수 없습니다. 서버가 실행 중인지 확인후 다시 시도하세요.", "MessageUnsetContentHelp": "콘텐트가 일반 폴더로 표시됩니다. 최상의 결과를 위해 메타데이터 관리자를 사용하여 하위 폴더의 콘텐트 종류를 설정하세요.", "MinutesAfter": "몇 분 후에", @@ -506,7 +487,6 @@ "OptionArtist": "아티스트", "OptionAscending": "오름차순", "OptionAuto": "자동", - "OptionAutomatic": "자동", "OptionBlockBooks": "도서", "OptionBlockChannelContent": "인터넷 채널 콘텐츠", "OptionBlockLiveTvChannels": "실시간 TV 방송 채널", @@ -643,18 +623,14 @@ "SystemDlnaProfilesHelp": "시스템 프로필은 읽기 전용입니다. 시스템 프로필에 대한 변경 사항은 새로운 사용자 정의 프로필에 저장됩니다.", "TabAccess": "접속", "TabAdvanced": "고급", - "TabAlbumArtists": "앨범 아티스트", "TabCatalog": "카탈로그", "TabCodecs": "코덱", "TabContainers": "컨테이너", "TabDashboard": "대시보드", "TabDirectPlay": "다이렉트 재생", - "TabEpisodes": "에피소드", - "TabInfo": "정보", "TabLatest": "최근", "TabLogs": "로그", "TabMusic": "음악", - "TabMusicVideos": "뮤직비디오", "TabMyPlugins": "내 플러그인", "TabNetworks": "네트워크", "TabNotifications": "알림", @@ -668,7 +644,6 @@ "TabServer": "서버", "TabSettings": "설정", "TabStreaming": "스트리밍", - "TabTrailers": "예고편", "TabUpcoming": "방송 예정", "Tags": "태그", "TellUsAboutYourself": "자신에 대해 알려주세요", @@ -758,9 +733,7 @@ "BookLibraryHelp": "오디오 혹은 텍스트 도서가 지원됩니다. {0}도서 작명 가이드{1}를 참고하십시오.", "Box": "박스", "Browse": "탐색", - "ButtonEditImages": "이미지 편집", "ButtonFullscreen": "전체 화면", - "HeaderEpisodes": "에피소드", "HeaderExternalIds": "외부 ID:", "HeaderFavoriteMovies": "즐겨찾는 영화", "HeaderFavoriteVideos": "즐겨찾는 동영상", @@ -772,7 +745,6 @@ "CancelRecording": "녹화 취소", "ButtonTrailer": "트레일러", "ButtonScanAllLibraries": "모든 라이브러리 스캔", - "ButtonOff": "끄기", "ButtonAudioTracks": "오디오 트랙", "ButtonAddMediaLibrary": "미디어 라이브러리 추가", "ButtonAddImage": "이미지 추가", @@ -787,7 +759,6 @@ "Filters": "필터", "EveryNDays": "매 {0}일", "EnableThemeVideosHelp": "라이브러리를 탐색하는 동안 테마 비디오를 재생합니다.", - "EnableThemeVideos": "테마 비디오", "EnableThemeSongsHelp": "라이브러리를 탐색하는 동안 테마 곡을 재생합니다.", "EnableStreamLooping": "라이브 스트림 자동 반복", "EnableNextVideoInfoOverlayHelp": "비디오가 끝나면 현재 재생목록의 다음 비디오에 대한 정보를 표시합니다.", @@ -832,7 +803,6 @@ "ThemeVideos": "테마 비디오", "ThemeSongs": "테마 곡", "TagsValue": "태그: {0}", - "TabResumeSettings": "재개", "TabNfoSettings": "NFO 설정", "TabNetworking": "네트워킹", "TV": "TV", @@ -960,7 +930,6 @@ "LabelTheme": "테마:", "LabelTextSize": "글자 크기:", "LabelTextColor": "글자 색:", - "LabelSubtitles": "자막", "LabelSubtitleFormatHelp": "예시: srt", "LabelSubtitleDownloaders": "자막 다운로더:", "LabelStopping": "중지", @@ -998,7 +967,6 @@ "LabelAudioCodec": "오디오 코덱:", "LabelAudioChannels": "오디오 채널:", "LabelAudioBitrate": "오디오 비트레이트:", - "LabelAudio": "오디오", "Items": "항목", "Kids": "어린이", "Home": "홈", @@ -1015,7 +983,6 @@ "HeaderMusicQuality": "음악 퀄리티", "HeaderImageOptions": "이미지 옵션", "HeaderHttpHeaders": "HTTP 헤더", - "HeaderHome": "홈", "HeaderFavoriteBooks": "즐겨찾는 도서", "HeaderEditImages": "이미지 수정", "HeaderDownloadSync": "다운로드 & 동기화", @@ -1126,7 +1093,6 @@ "File": "파일", "Favorite": "즐겨찾기", "Episodes": "에피소드", - "EnableThemeSongs": "테마 곡", "EnablePhotos": "사진 표시", "EnableHardwareEncoding": "하드웨어 인코딩 활성화", "AllowHWTranscodingHelp": "튜너가 방송 스트림을 트랜스코드하도록 허용합니다. 이는 서버가 요구하는 트랜스코딩을 줄이는 데 도움이 될 수 있습니다.", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 0d66a6456a..2d890a4fca 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -17,18 +17,13 @@ "ButtonArrowRight": "Dešinėn", "ButtonBack": "Atgal", "ButtonCancel": "Atšaukti", - "ButtonEdit": "Redaguoti", - "ButtonFilter": "Filtras", "ButtonGotIt": "Supratau", - "ButtonHome": "Pradinis", "ButtonManualLogin": "Rankinis prisijungimas", "ButtonNextTrack": "Kitas takelis", "ButtonOk": "OK", "ButtonPause": "Pauzė", - "ButtonPlay": "Leisti", "ButtonPreviousTrack": "Ankstesnis takelis", "ButtonQuickStartGuide": "Greitos pradžios gidas", - "ButtonRefresh": "Atnaujinti", "ButtonRefreshGuideData": "Atnaujinti gido duomenis", "ButtonRemove": "Pašalinti", "ButtonResetPassword": "Atstatyti slaptažodį", @@ -39,7 +34,6 @@ "ButtonSignOut": "Atsijungti", "ButtonStop": "Stabdyti", "ButtonSubmit": "Pateikti", - "ButtonSubtitles": "Subtitrai", "CancelRecording": "Atšaukti įrašymą", "CancelSeries": "Atšaukti laidą", "Categories": "Kategorijos", @@ -83,14 +77,11 @@ "HDPrograms": "HD laidos", "HeaderActiveDevices": "Aktyvūs įrenginiai", "HeaderActiveRecordings": "Aktyvūs įrašai", - "HeaderAddScheduledTaskTrigger": "Pridėti jungiklį", "HeaderAddToCollection": "Pridėti į kolekciją", "HeaderAddToPlaylist": "Pridėti į grojaraštį", - "HeaderAddUser": "Pridėti vartotoją", "HeaderAdditionalParts": "Papildomos dalys", "HeaderCancelRecording": "Atšaukti įrašymą", "HeaderCancelSeries": "Atšaukti laidą", - "HeaderCastCrew": "Kūrėjai", "HeaderContinueWatching": "Žiūrėti toliau", "HeaderCustomDlnaProfiles": "Kiti profiliai", "HeaderDeleteItem": "Ištrinti elementą", @@ -167,7 +158,6 @@ "LabelDay": "Diena:", "LabelDeathDate": "Mirties data:", "LabelDeviceDescription": "Įrenginio aprašymas", - "LabelDisplayMissingEpisodesWithinSeasons": "Rodyti sezonuose trūkstamas serijas", "LabelDisplayOrder": "Rodymo tvarka:", "LabelDynamicExternalId": "{0} ID:", "LabelEnableAutomaticPortMap": "Įjungti automatinį portų nukreipimą", @@ -235,7 +225,6 @@ "LabelPlaceOfBirth": "Gimimo vieta:", "LabelPlaylist": "Grojaraštis:", "LabelPreferredDisplayLanguage": "Pageidautina rodymo kalba:", - "LabelPreferredDisplayLanguageHelp": "Jellyfin vertimas yra besitęsiantis projektas.", "LabelProfileCodecsHelp": "Atskirta kableliais. Palikus tuščią bus pritaikyta visiems kodekams.", "LabelProfileContainersHelp": "Atskirta kableliais. Palikus tuščią bus pritaikyta visiems konteineriams.", "LabelPublicHttpPort": "Numeris viešo HTTP porto:", @@ -439,12 +428,9 @@ "SystemDlnaProfilesHelp": "Sistemos profiliai yra tik skaitomi. Pakeitimai sistemos profiliui bus išsaugoti į naują kitą profilį.", "TabAccess": "Prieiga", "TabAdvanced": "Sudėtingiau", - "TabAlbumArtists": "Albumo atlikėjai", "TabCatalog": "Katalogas", - "TabEpisodes": "Serijos", "TabLatest": "Vėliausi", "TabMusic": "Muzika", - "TabMusicVideos": "Muzikos klipai", "TabMyPlugins": "Mano priedai", "TabNetworks": "Tinklai", "TabNotifications": "Pranešimai", @@ -453,7 +439,6 @@ "TabProfiles": "Profiliai", "TabServer": "Serveris", "TabSettings": "Nustatymai", - "TabTrailers": "Anonsai", "TabUpcoming": "Būsimi", "Tags": "Žymės", "TellUsAboutYourself": "Papasakokite apie save", @@ -506,7 +491,6 @@ "ButtonAddServer": "Pridėti Serverį", "ButtonAudioTracks": "Garso takeliai", "ButtonChangeServer": "Keisti serverį", - "ButtonEditImages": "Redaguoti vaizdus", "ButtonForgotPassword": "Pamiršau slaptažodį", "ButtonFullscreen": "Per visą ekraną", "ButtonGuide": "Gidas", @@ -514,7 +498,6 @@ "ButtonLibraryAccess": "Mediatekos prieiga", "ButtonMore": "Daugiau", "ButtonNetwork": "Tinklas", - "ButtonOff": "Išjungti", "ButtonOpen": "Atidaryti", "ButtonParentalControl": "Tėvų kontrolė", "ButtonProfile": "Profilis", @@ -582,7 +565,6 @@ "EnableNextVideoInfoOverlayHelp": "Vaizdo įrašo pabaigoje rodyti informacija apie sekantį vaizdo įrašą, esantį grojaraštyje.", "EnablePhotos": "Rodyti nuotraukas", "EnablePhotosHelp": "Nuotraukos bus rodomos šalia kitų medijos failų.", - "EnableThemeSongs": "Teminės dainos", "AspectRatio": "Vaizdo Santykis", "Ascending": "Didėjančia tvarka", "AllComplexFormats": "Visi Sudėtingi Formatai (ASS, SSA, VOBSUB, PGS, SUB/IDX, t.t.)", @@ -602,7 +584,6 @@ "EnableDisplayMirroring": "Ekrano dubliavimas", "CopyStreamURL": "Kopijuoti srauto nuorodą", "HeaderConfirmPluginInstallation": "Patvirtinti įskiepio diegimą", - "HeaderEpisodes": "Serijos", "HeaderError": "Klaida", "OptionBlockMovies": "Filmai", "Songs": "Kūriniai", @@ -659,22 +640,17 @@ "EnableExternalVideoPlayersHelp": "Paleidus vaizdo įrašą, bus rodomas išorinio grotuvo meniu.", "EnableHardwareEncoding": "Įjungti aparatinės įrangos kodavimą", "EnableThemeSongsHelp": "Naršant bibliotekoje paleisti teminius takelius fone.", - "EnableThemeVideos": "Teminiai vaizdo įrašai", "EnableThemeVideosHelp": "Naršant bibliotekoje paleisti teminius vaizdo įrašus fone.", "Episodes": "Serijos", - "HeaderBooks": "Knygos", "HeaderBranding": "Įforminimas", "HeaderCodecProfile": "Kodeko profilis", "HeaderFavoritePeople": "Mėgstami žmonės", "HeaderForKids": "Vaikams", - "HeaderForgotPassword": "Pamiršau slaptažodį", "HeaderGuideProviders": "TV gido informacijos teikėjai", - "HeaderHome": "Pradinis", "HeaderIdentification": "Identifikacija", "HeaderIdentificationHeader": "Identifikavimo antraštė", "HeaderHttpHeaders": "HTTP-antraštės", "OptionAuto": "Auto", - "OptionAutomatic": "Auto", "OptionAutomaticallyGroupSeriesHelp": "Jei įjungta - serijos skirtinguose bibliotekos aplankaluose bus apjungtos į vieną serialą.", "OptionBanner": "Juosta", "Playlists": "Grojaraštis", @@ -716,12 +692,10 @@ "LabelAllowedRemoteAddressesMode": "Nuotolinio IP adresų filtro režimas:", "HeaderLoginFailure": "Prisijungimo klaida", "Hide": "Paslėpti", - "LabelAudio": "Garsas", "LabelCancelled": "Atšaukta", "LabelCertificatePassword": "Sertifikato slaptažodis:", "LabelCertificatePasswordHelp": "Jei sertifikatui reikalingas slaptažodis, jį įveskite čia.", "LabelCustomCertificatePath": "Pasirinktinis SSL sertifikatas kelias:", - "LabelCustomDeviceDisplayName": "Rodomas vardas:", "LabelDisplayLanguage": "Kalba:", "LabelDisplayName": "Rodomas vardas:", "EnableBackdropsHelp": "Rodyti fono dekoracijas naršant bibliotekoje.", @@ -770,7 +744,6 @@ "HeaderLatestMovies": "Naujausi filmai", "HeaderLatestMusic": "Naujausia muzika", "HeaderLibraryFolders": "Mediatekos aplankai", - "HeaderMediaInfo": "Apie medija", "HeaderNextEpisodePlayingInValue": "Kita serija rodoma už {0}", "HeaderNextVideoPlayingInValue": "Kitas vaizdo įrašas rodomas už {0}", "HeaderPassword": "Slaptažodis", diff --git a/src/strings/lv.json b/src/strings/lv.json index ee712f615b..de3b8475d3 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -19,7 +19,6 @@ "MessageYouHaveVersionInstalled": "Jums pašlaik ir uzstādīta versija {0}.", "MessageUnableToConnectToServer": "Mēs pašlaik nevaram sazināties ar izvēlēto serveri. Pārliecinies ka tas strādā, un mēģini vēlreiz.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Sekojošie multvides ceļi tiks noņemti no tavas bibliotēkas:", - "MessageSettingsSaved": "Iestatījumi saglabāti.", "MessagePleaseWait": "Lūdzu uzgaidi. Tas var aizņemt pāris minūtes.", "MessageNothingHere": "Šeit nekā nav.", "MessageNoPluginsInstalled": "Tev nav uzstādīti paplašinājumi.", @@ -70,10 +69,7 @@ "LabelTunerIpAddress": "Tūnera IP Addrese:", "LabelTunerType": "Tūnera tips:", "LabelType": "Tips:", - "LabelTranscodingVideoCodec": "Video kodeks:", "LabelTranscodePath": "Trans-kodēšanas ceļš:", - "LabelTranscodingContainer": "Konteineris:", - "LabelTranscodingAudioCodec": "Audio kodeks:", "LabelTrackNumber": "Celiņa numurs:", "LabelTimeLimitHours": "Laika limits (stundas):", "LabelTime": "Laiks:", @@ -84,7 +80,6 @@ "LabelTag": "Tags:", "LabelTVHomeScreen": "TV režīma mājas ekrāns:", "LabelSupportedMediaTypes": "Atbalstītie Multivides Veidi:", - "LabelSubtitles": "Subtitri", "LabelSubtitlePlaybackMode": "Subtitru veids:", "LabelSubtitleFormatHelp": "Piemērs: srt", "LabelSubtitleDownloaders": "Subtitru lejupielādētāji:", @@ -202,7 +197,6 @@ "LabelDefaultUser": "Noklusējuma lietotājs:", "LabelDay": "Diena:", "LabelDateAdded": "Pievienošanas datums:", - "LabelCustomDeviceDisplayName": "Displeja nosaukums:", "LabelCurrentPassword": "Pašreizējā parole:", "LabelCriticRating": "Kritiķu reitings:", "LabelCountry": "Valsts:", @@ -218,7 +212,6 @@ "LabelBirthYear": "Dzimšanas gads:", "LabelBirthDate": "Dzimšanas datums:", "LabelAudioLanguagePreference": "Ieteicamā audio valoda:", - "LabelAudio": "Audio", "LabelArtistsHelp": "Atdali vairākus izmantojot ;", "LabelArtists": "Izpildītājs:", "LabelAppNameExample": "Piemēram: Sickbeard, Sonarr", @@ -286,7 +279,6 @@ "HeaderMusicQuality": "Audio Kvalitāte", "HeaderMoreLikeThis": "Vairāk Kā Šis", "HeaderMetadataSettings": "Metadatu Iestatījumi", - "HeaderMediaInfo": "Multvides informācija", "HeaderMediaFolders": "Multvides Mapes", "HeaderMedia": "Multvide", "HeaderLiveTvTunerSetup": "Tiešraides TV Tūnera Uzstādīšana", @@ -308,10 +300,8 @@ "HeaderIdentificationCriteriaHelp": "Ievadi vismaz vienu identifikācijas kritēriju.", "HeaderIdentification": "Identifikācija", "HeaderHttpHeaders": "HTTP Headeri", - "HeaderHome": "Mājas", "HeaderGuideProviders": "TV Gida Datu Nodrošinātāji", "HeaderFrequentlyPlayed": "Bieži Atskaņots", - "HeaderForgotPassword": "Aizmirst PAroli", "HeaderForKids": "Priekš Bērniem", "HeaderFavoriteVideos": "Video Favorīti", "MediaInfoPath": "Ceļš", @@ -346,7 +336,6 @@ "HeaderFavoriteBooks": "Grāmatu Favorīti", "HeaderExternalIds": "Ārējie ID:", "HeaderError": "Kļūda", - "HeaderEpisodes": "Epizodes", "HeaderEditImages": "Rediģēt Attēlus", "HeaderDownloadSync": "Lejupielādēt & Sinhronizēt", "HeaderDevices": "Ierīces", @@ -367,7 +356,6 @@ "HeaderChannelAccess": "Kanālu Piekļuve", "HeaderCancelSeries": "Atcelt Sēriju", "HeaderCancelRecording": "Atcelt Ierakstus", - "HeaderBooks": "Grāmatas", "HeaderAudioSettings": "Audio Iestatījumi", "HeaderAudioBooks": "Audio Grāmatas", "HeaderApp": "Lietotne", @@ -377,7 +365,6 @@ "HeaderAlert": "Paziņojums", "HeaderAlbumArtists": "Albumu Izpildītāji", "HeaderAdmin": "Admin", - "HeaderAddUser": "Pievienot Lietotāju", "HeaderAddToPlaylist": "Pievienot Atskaņošanas Sarakstam", "HeaderAddToCollection": "Pievienot kolekcijai", "HeaderActivity": "Aktivitāte", @@ -413,8 +400,6 @@ "EndsAtValue": "Beigsies {0}", "EnableThemeVideosHelp": "Atskaņot tēmas video fonā bibliotēkas pārlūkošanas laikā.", "EnableThemeSongsHelp": "Atskaņot tēmas mūziku fonā bibliotēkas pārlūkošanas laikā.", - "EnableThemeVideos": "Tēmas video", - "EnableThemeSongs": "Tēmas mūzika", "EnablePhotos": "Rādīt attēlus", "EnableNextVideoInfoOverlayHelp": "Video beigās rādīt informāciju par nākamo video atskaņošanas sarakstā.", "EnableNextVideoInfoOverlay": "Rādīt nākamā video informāciju atskaņošanas laikā", @@ -468,7 +453,6 @@ "ButtonWebsite": "Web vietne", "ButtonUninstall": "Atinstalēt", "ButtonTrailer": "Treileri", - "ButtonSubtitles": "Subtitri", "ButtonSplit": "Sadalīt", "ButtonStop": "Apturēt", "ButtonStart": "Sākt", @@ -489,28 +473,21 @@ "ButtonRename": "Pārsaukt", "ButtonRemove": "Noņemt", "ButtonRefreshGuideData": "Atjaunot Gida Datus", - "ButtonRefresh": "Atjaunot", "ButtonProfile": "Profils", "ButtonPreviousTrack": "Iepriekšējais celiņš", - "ButtonPlay": "Atskaņot", "ButtonPause": "Pauzēt", "ButtonParentalControl": "Vecāku Pārvaldība", "ButtonOpen": "Atvērt", "ButtonOk": "Labi", - "ButtonOff": "Izslēgt", "ButtonNextTrack": "Nākamais Celiņš", "ButtonNetwork": "Tīkls", "ButtonMore": "Vairāk", "ButtonLibraryAccess": "Bibliotēku piekļuve", "ButtonInfo": "Info", - "ButtonHome": "Mājas", "ButtonGuide": "Gids", "ButtonGotIt": "Sapratu", "ButtonFullscreen": "Pilnekrāna", "ButtonForgotPassword": "Aizmirsu Paroli", - "ButtonFilter": "Filtrs", - "ButtonEditImages": "Rediģēt attēlus", - "ButtonEdit": "Rediģēt", "ButtonChangeServer": "Nomainīt Serveri", "ButtonCancel": "Atcelt", "ButtonBack": "Atpakaļ", @@ -664,11 +641,9 @@ "TellUsAboutYourself": "Pastāsti mums par sevi", "TagsValue": "Tagi: {0}", "Tags": "Tagi", - "TabTrailers": "Treileri", "TabStreaming": "Straumēšana", "TabSettings": "Iestatījumi", "TabServer": "Serveris", - "TabResumeSettings": "Turpināt", "TabResponses": "Atbildes", "TabProfiles": "Profili", "TabProfile": "Profils", @@ -680,12 +655,9 @@ "TabNetworking": "Tīklošana", "TabNetworks": "Tīkli", "TabMyPlugins": "Mani Paplašinājumi", - "TabMusicVideos": "Mūzikas Video", "TabMusic": "Mūzika", "TabLogs": "Logs", "TabLatest": "Jaunākais", - "TabInfo": "Info", - "TabEpisodes": "Epizodes", "TabDirectPlay": "Tiešā Atskaņošana", "TabContainers": "Konteineri", "TabCodecs": "Kodeksi", @@ -759,7 +731,6 @@ "OptionBlockMusic": "Mūzika", "OptionBlockMovies": "Filmas", "OptionBlockBooks": "Grāmatas", - "OptionAutomatic": "Auto", "OptionAuto": "Auto", "OptionArtist": "Izpildītājs", "MessageNoPluginConfiguration": "Šim paplašinājumam nav konfigurējamu iestatījumu.", @@ -776,7 +747,6 @@ "LabelServerHost": "Resursdators:", "LabelReleaseDate": "Izlaiduma datums:", "LabelPreferredSubtitleLanguage": "Ieteicamā subtitru valoda:", - "LabelPreferredDisplayLanguageHelp": "Jellyfin tulkošana ir notiekošs projekts.", "LabelPlayerDimensions": "Atskaņotāja dimensijas:", "LabelParentalRating": "Vecāku reitings:", "LabelMonitorUsers": "Uzraudzīt aktivitāti no:", @@ -875,13 +845,11 @@ "HeaderCustomDlnaProfiles": "Pielāgoti Profili", "HeaderConfirmProfileDeletion": "Apstiprināt Profila Dzēšanu", "HeaderChapterImages": "Nodaļu Attēli", - "HeaderCastCrew": "Lomas & Apkalpe", "HeaderCastAndCrew": "Lomas un Apkalpe", "HeaderAppearsOn": "Redzams", "FFmpegSavePathNotFound": "Mēs nespējām atrast FFmpeg norādītajā ceļā. FFprobe arī ir vajadzīgs, un tam ir jāatrodas tajā pašā mapē. Šīs komponentes parasti tiek apvienotas vienā un tajā pašā lejupielādē. Lūdzu pārbaudiet ceļu un mēģiniet vēlreiz.", "HeaderAdditionalParts": "Papildus Ceļi", "HeaderAddUpdateImage": "Pievienot/Atjaunot Attēlu", - "HeaderAddScheduledTaskTrigger": "Pievienot Trigeri", "GuideProviderLogin": "Ieiet", "Ended": "Beidzies", "EnableStreamLoopingHelp": "Iespējo šo, ja tiešsaistes straume satur tikai pāris sekunžu datus, un ir nepārtraukti jāatjauno. Iespējojot bez vajadzības var radīties problēmas.", @@ -1018,7 +986,6 @@ "LabelDroppedFrames": "Nomestie kadri:", "LabelDownMixAudioScaleHelp": "Pastiprināt audio lejupmiksēšanas laikā. Vērtība viens paturēs oriģinālo skaļumu.", "LabelDownMixAudioScale": "Audio pastiprinājums lejupmiksējot:", - "LabelDisplayMissingEpisodesWithinSeasons": "Rādīt trūkstošās epizodes sezonās", "LabelDateAddedBehaviorHelp": "Ja atrodas metadatu vērtība, tā vienmēr tiks izmantota pirms jebkuras no šīm opcijām.", "LabelCustomDeviceDisplayNameHelp": "Ievadi pielāgotu displeja vārdu vai atstāj tukšu lai izmantotu ierīces noteikto.", "LabelCachePathHelp": "Nosaki pielāgotu atrašanās vietu priekš keša datnēm kā attēliem. Atstāj tukšu lai izmantotu servera noklusējumu.", diff --git a/src/strings/mr.json b/src/strings/mr.json index 8a2114bf05..88a0a9cfe5 100644 --- a/src/strings/mr.json +++ b/src/strings/mr.json @@ -1,7 +1,6 @@ { "ButtonOpen": "उघडा", "ButtonOk": "ऑन", - "ButtonOff": "ऑफ", "ButtonNextTrack": "पुढचा ट्रॅक", "ButtonNetwork": "नेटवर्क", "ButtonMore": "अजून", @@ -9,8 +8,6 @@ "ButtonGuide": "गाईड", "ButtonGotIt": "समजले", "ButtonForgotPassword": "पासवर्ड विसरलो", - "ButtonEditImages": "चित्र संपादित करा", - "ButtonEdit": "संपादित करा", "ButtonChangeServer": "सर्व्हर बदला", "ButtonCancel": "रद्द करा", "ButtonBack": "मागे", @@ -69,7 +66,6 @@ "CancelRecording": "रेकॉर्डिंग रद्द करा", "ButtonWebsite": "संकेतस्थळ", "ButtonTrailer": "ट्रेलर", - "ButtonSubtitles": "सबटायटल", "ButtonStop": "थांबा", "ButtonStart": "सुरू करा", "ButtonSettings": "सेटिंग्झ", @@ -81,7 +77,6 @@ "ButtonRename": "नाव बदला", "ButtonRemove": "काढून टाका", "ButtonPreviousTrack": "मागचा ट्रॅक", - "ButtonPlay": "प्ले", "ButtonPause": "पॉझ", "ButtonSyncPlay": "SyncPlay", "Collections": "संग्रह" diff --git a/src/strings/ms.json b/src/strings/ms.json index 786d2b7707..e9d03a73f0 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -64,15 +64,11 @@ "ButtonChangeServer": "Tukar pelayan", "ButtonLibraryAccess": "Akses pustaka", "ButtonInfo": "Info", - "ButtonHome": "Mula", "ButtonGuide": "Panduan", "ButtonGotIt": "Terima", "ButtonFullscreen": "Paparan skrin penuh", "ButtonForgotPassword": "Lupa Kata Laluan", - "ButtonFilter": "Tapisan", "ButtonEditOtherUserPreferences": "Edit profil, gambar dan keutamaan peribadi pengguna ini", - "ButtonEditImages": "Edit gambar-gambar", - "ButtonEdit": "Edit", "ButtonAddScheduledTaskTrigger": "Tambah Pencetus", "ButtonAddImage": "Tambah gambar", "BurnSubtitlesHelp": "Menentukan sama ada pelayan perlu membakar subtitle ke skrin apabila menukar video bergantung kepada format sarikata. Menghindari pembakaran sari kata ke skrin akan meningkatkan prestasi pelayan. Pilih Auto untuk membakar format berasaskan imej (VOBSUB, PGS, SUB / IDX, dll) dan subtitle ASS / SSA tertentu.", diff --git a/src/strings/nb.json b/src/strings/nb.json index 9a31970159..591af23502 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -42,27 +42,21 @@ "ButtonBack": "Tilbake", "ButtonCancel": "Avbryt", "ButtonChangeServer": "Endre server", - "ButtonEdit": "Rediger", - "ButtonEditImages": "Endre bilder", "ButtonEditOtherUserPreferences": "Endre denne brukerens profilbilde og personlige innstillinger.", "ButtonForgotPassword": "Glemt passord", "ButtonFullscreen": "Fullskjerm", "ButtonGotIt": "Skjønner", - "ButtonHome": "Hjem", "ButtonLibraryAccess": "Bibliotektilgang", "ButtonManualLogin": "Manuell Login", "ButtonMore": "Mer", "ButtonNetwork": "Nettverk", "ButtonNextTrack": "Neste Spor", - "ButtonOff": "Av", "ButtonOk": "OK", "ButtonOpen": "Åpne", "ButtonParentalControl": "Foreldrekontroll", - "ButtonPlay": "Spill", "ButtonPreviousTrack": "Forrige spor", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Hurtigveiledning", - "ButtonRefresh": "Oppdater", "ButtonRefreshGuideData": "Oppdater TV-guidedata", "ButtonRemove": "Fjern", "ButtonRename": "Endre navn", @@ -81,7 +75,6 @@ "ButtonSignOut": "Logg ut", "ButtonStop": "Stopp", "ButtonSubmit": "Send", - "ButtonSubtitles": "Undertekster", "ButtonUninstall": "Avinstaller", "ButtonWebsite": "Nettsted", "CancelRecording": "Avbryt opptak", @@ -178,11 +171,9 @@ "HeaderActiveDevices": "Aktive enheter", "HeaderActiveRecordings": "Aktive opptak", "HeaderActivity": "Aktivitet", - "HeaderAddScheduledTaskTrigger": "Legg til utløser", "HeaderAddToCollection": "Legg til i samling", "HeaderAddToPlaylist": "Legg til i Spilleliste", "HeaderAddUpdateImage": "Legg Til/Oppdater Bilde", - "HeaderAddUser": "Legg til bruker", "HeaderAdditionalParts": "Tilleggsdeler", "HeaderAlert": "Varsling", "HeaderAllowMediaDeletionFrom": "Tillat sletting av media fra", @@ -191,12 +182,10 @@ "HeaderApiKeysHelp": "Eksterne programmer trenger en API-nøkkel for å kunne kommunisere med serveren. Nøklene utstedes ved å logge på med en vanlig brukerkonto eller gjennom å manuelt gi programmet en nøkkel.", "HeaderAudioBooks": "Lydbøker", "HeaderAudioSettings": "Lydinnstillinger", - "HeaderBooks": "Bøker", "HeaderBranding": "Merking", "HeaderCancelRecording": "Avbryt opptak", "HeaderCancelSeries": "Avbryt serie", "HeaderCastAndCrew": "Skuespillere & mannskap", - "HeaderCastCrew": "Mannskap", "HeaderChannelAccess": "Kanal-tilgang", "HeaderCodecProfile": "Kodekprofil", "HeaderCodecProfileHelp": "Kodekprofiler indikerer begrensningene til en enhet ved avspilling av bestemte kodeker. Hvis en begrensning gjelder, vil media bli omkodet, selv om kodeken er konfigurert for direkteavspilling.", @@ -228,12 +217,10 @@ "HeaderEditImages": "Endre bilder", "HeaderEnabledFields": "Aktiverte felt", "HeaderEnabledFieldsHelp": "Fjern markeringen av et felt for å låse det og hindre dataene fra å endres.", - "HeaderEpisodes": "Episoder", "HeaderError": "Feil", "HeaderFeatureAccess": "Funksjonstilgang", "HeaderFetchImages": "Hent bilder:", "HeaderForKids": "For barn", - "HeaderForgotPassword": "Glemt passord", "HeaderFrequentlyPlayed": "Ofte avspilt", "HeaderGuideProviders": "Leverandører av TV-guide", "HeaderHttpHeaders": "HTTP-hoder", @@ -260,7 +247,6 @@ "HeaderLiveTvTunerSetup": "Tunerinnstillinger for direkte-TV", "HeaderLoginFailure": "Påloggingsfeil", "HeaderMediaFolders": "Mediemapper", - "HeaderMediaInfo": "Mediainformasjon", "HeaderMetadataSettings": "Metadatainnstilinger", "HeaderMoreLikeThis": "Flere som dette", "HeaderMusicVideos": "Musikkvideoer", @@ -393,7 +379,6 @@ "LabelCustomCertificatePath": "Egendefinert filbane for SSL-sertifikat:", "LabelCustomCss": "Tilpasset CSS:", "LabelCustomCssHelp": "Bruk tilpassede stiler på web-grensesnittet.", - "LabelCustomDeviceDisplayName": "Visningsnavn:", "LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det være tomt for å bruke navnet som enheten rapporterer.", "LabelCustomRating": "Egen aldersgrense:", "LabelDateAdded": "Dato lagt til:", @@ -406,7 +391,6 @@ "LabelDeviceDescription": "Enhetsbeskrivelse", "LabelDidlMode": "DIDL-modus:", "LabelDisplayLanguageHelp": "Oversettelse av Jellyfin er et pågående prosjekt.", - "LabelDisplayMissingEpisodesWithinSeasons": "Vis episoder som mangler fra sesongen", "LabelDisplayMode": "Visningsmodus:", "LabelDisplayName": "Visningsnavn:", "LabelDisplayOrder": "Visningsrekkefølge:", @@ -544,7 +528,6 @@ "LabelPostProcessorArguments": "Kommandolinjeargumenter for etterbehandling:", "LabelPostProcessorArgumentsHelp": "Bruk {path} som filbanen til opptaksfilen.", "LabelPreferredDisplayLanguage": "Foretrukket visningsspråk:", - "LabelPreferredDisplayLanguageHelp": "Oversettelse av Jellyfin er et pågående prosjekt.", "LabelProfileAudioCodecs": "Lydkodeker:", "LabelProfileCodecs": "Kodeker:", "LabelProfileCodecsHelp": "Separert med komma. Dette feltet kan forbli tomt for å gjelde alle kodeker.", @@ -599,12 +582,9 @@ "LabelTimeLimitHours": "Tidsbegrensning (timer):", "LabelTitle": "Tittel:", "LabelTrackNumber": "Spornummer:", - "LabelTranscodingAudioCodec": "Lydkodek:", - "LabelTranscodingContainer": "Kontainer:", "LabelTranscodingTempPathHelp": "Spesifiser en egen filbane for omkodede filer som skal sendes til klienter. La feltet stå tomt for å bruke serverens standardinnstilling.", "LabelTranscodingThreadCount": "Antall tråder for omkoding:", "LabelTranscodingThreadCountHelp": "Velg maksimalt antall tråder som kan brukes under omkoding. Færre tråder vil føre til lavere CPU-bruk, men kan føre til at mediet ikke konverteres fort nok til at avspillingen kan foregå uten avbrudd.", - "LabelTranscodingVideoCodec": "Videokodek:", "LabelTunerIpAddress": "IP-adresse til tuner:", "LabelTunerType": "Tunertype:", "LabelTypeMetadataDownloaders": "{0} - Kilder for metadata:", @@ -692,7 +672,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Logg inn direkte på din lokale server for å konfigurere dette programtillegget.", "MessagePluginInstallDisclaimer": "Programtillegg utviklet av brukersamfunnet er en god måte å forbedre opplevelsen din gjennom ekstra funksjoner og fordeler. Før installasjon bør du være klar over virkningen de kan ha på serveren din, som lengre skanning av bibliotek, ekstra bakgrunnsbehandling og redusert systemstabilitet.", "MessageReenableUser": "Se under for å reaktivere", - "MessageSettingsSaved": "Innstillinger lagret.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Følgende medieplassering vil bli fjernet fra biblioteket ditt:", "MessageUnableToConnectToServer": "Vi klarte ikke å koble til den valgte serveren akkurat nå. Vennligst sørg for at den kjører og prøv på nytt.", "MessageUnsetContentHelp": "Innhold vises som enkle mapper. For beste resultat, bruk metadatabehandleren for å sette innholdstypen for undermapper.", @@ -942,17 +921,14 @@ "SystemDlnaProfilesHelp": "Systemprofiler er skrivebeskyttet. Endinger på en systemprofil vil bli lagret til en ny tilpasset profil.", "TabAccess": "Tilgang", "TabAdvanced": "Avansert", - "TabAlbumArtists": "Albumartister", "TabCatalog": "Katalog", "TabCodecs": "Kodeker", "TabContainers": "Kontainere", "TabDashboard": "Dashbord", "TabDirectPlay": "Direkteavspilling", - "TabEpisodes": "Episoder", "TabLatest": "Siste", "TabLogs": "Logger", "TabMusic": "Musikk", - "TabMusicVideos": "Musikkvideoer", "TabMyPlugins": "Mine programtillegg", "TabNetworks": "Nettverk", "TabNfoSettings": "NFO-innstillinger", @@ -963,10 +939,8 @@ "TabProfile": "Profil", "TabProfiles": "Profiler", "TabResponses": "Svar", - "TabResumeSettings": "Fortsettelse", "TabScheduledTasks": "Planlagte oppgaver", "TabSettings": "Innstillinger", - "TabTrailers": "Trailere", "TabUpcoming": "Kommende", "Tags": "Tagger", "TellUsAboutYourself": "Fortell oss litt om deg selv", @@ -1033,7 +1007,6 @@ "ButtonPause": "Pause", "ButtonInfo": "Informasjon", "ButtonGuide": "Guide", - "ButtonFilter": "Filter", "AirDate": "Sendedato", "Browse": "Bla", "BoxRear": "Eske (bakside)", @@ -1116,12 +1089,10 @@ "LabelType": "Type:", "Large": "Stor", "DirectStreamHelp1": "Mediet støttes av enheten med tanke på oppløsning og medietype (H.264, AC3, osv), men den støtter ikke filkontaineren (mkv, avi, wmv, osv). Videoen vil ompakkes fortløpende før den sendes til enheten.", - "EnableThemeVideos": "Temavideoer", "MusicVideo": "Musikkvideo", "Mute": "Demp lyd", "CopyStreamURL": "Kopier strøm-URL", "DirectStreaming": "Direktestrømming", - "EnableThemeSongs": "Temamusikk", "HeaderMusicQuality": "Musikkvalitet", "Home": "Hjem", "LabelAlbum": "Album:", @@ -1148,7 +1119,6 @@ "LabelDiscNumber": "Platenummer:", "LabelDisplayLanguage": "Visningsspråk:", "OptionAuto": "Automatisk", - "OptionAutomatic": "Automatisk", "OptionHomeVideos": "Fotografier", "Photos": "Bilder", "Thumb": "Miniatyrbilde", @@ -1209,7 +1179,6 @@ "HeaderFavoriteAlbums": "Favorittalbum", "HeaderFavoriteArtists": "Favorittartister", "HeaderFavoriteSongs": "Favorittsanger", - "HeaderHome": "Hjem", "HeaderNextEpisodePlayingInValue": "Neste episode starter om {0}", "HeaderNextVideoPlayingInValue": "Neste video starter om {0}", "HeaderSeriesStatus": "Seriestatus", @@ -1223,7 +1192,6 @@ "Horizontal": "Horisontal", "HttpsRequiresCert": "For å bruke sikker tilkobling må du legge inn et klarert SSL-sertifikat, for eksempel fra Let's Encrypt. Du må enten legge inn et sertifikat, eller deaktivere sikker tilkobling.", "LabelAlbumArtPN": "Albumomslag PN:", - "LabelAudio": "Lyd", "LabelAuthProvider": "Autentiserings-metode:", "LabelBitrate": "Bithastighet:", "LabelBurnSubtitles": "Brenn inn undertekst:", @@ -1249,7 +1217,6 @@ "LabelSpecialSeasonsDisplayName": "Visningsnavn for spesialsesong:", "LabelStatus": "Status:", "LabelSubtitleDownloaders": "Kilder for undertekst:", - "LabelSubtitles": "Undertekster", "LabelTVHomeScreen": "Hjemskjerm for TV-modus:", "LabelTag": "Tagg:", "LabelTextBackgroundColor": "Tekstbagrunnsfarge:", @@ -1329,7 +1296,6 @@ "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Disse innstillingene gjelder også alle Chromecast-avspillinger startet av denne enheten.", "SubtitleOffset": "Forskyvet underteksting", "TV": "TV", - "TabInfo": "Informasjon", "TabNetworking": "Nettverk", "Trailers": "Trailere", "Transcoding": "Omkoding", diff --git a/src/strings/nl.json b/src/strings/nl.json index 8d5e5c78a4..6258f7c216 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -22,7 +22,7 @@ "AllowMediaConversionHelp": "Toegang verlenen of weigeren tot de mediaconversie functie.", "AllowOnTheFlySubtitleExtraction": "Directe ondertitel extractie toestaan", "AllowOnTheFlySubtitleExtractionHelp": "Ingebakken ondertitels kunnen uit de video's gehaald worden en als tekst bezorgd worden aan de clients om transcodering te helpen voorkomen. Op sommige systemen kan dit een lange tijd duren en dit er voor zorgen dat het afspelen van video stopt tijdens de extractie. Schakel dit uit om ingebakken ondertiteling in de video te laten branden met transcodering als deze niet standaard ondersteund worden door het afspeelapparaat.", - "AllowRemoteAccess": "Externe verbindingen met deze Jellyfin Server toestaan.", + "AllowRemoteAccess": "Externe verbindingen met deze server toestaan.", "AllowRemoteAccessHelp": "Indien niet aangevinkt worden alle externe verbindingen geblokkeerd.", "AllowedRemoteAddressesHelp": "Komma-gescheiden lijst van IP-adressen of IP/netmask adressen voor netwerken die op afstand verbinding mogen maken. Indien blanco, worden alle externe adressen toegestaan.", "AlwaysPlaySubtitles": "Altijd afspelen", @@ -57,28 +57,22 @@ "ButtonBack": "Terug", "ButtonCancel": "Annuleren", "ButtonChangeServer": "Wijzig server", - "ButtonEdit": "Bewerken", - "ButtonEditImages": "Bewerk afbeeldingen", "ButtonEditOtherUserPreferences": "Wijzig het profiel, afbeelding en persoonlijke voorkeuren van deze gebruiker.", "ButtonForgotPassword": "Wachtwoord Vergeten", "ButtonFullscreen": "Volledig scherm", "ButtonGotIt": "Begrepen", "ButtonGuide": "Gids", - "ButtonHome": "Start", "ButtonLibraryAccess": "Bibliotheek toegang", "ButtonManualLogin": "Handmatige Aanmelding", "ButtonMore": "Meer", "ButtonNetwork": "Netwerk", "ButtonNextTrack": "Volgende track", - "ButtonOff": "Uit", "ButtonOpen": "Openen", "ButtonParentalControl": "Ouderlijk toezicht", "ButtonPause": "Pauze", - "ButtonPlay": "Afspelen", "ButtonPreviousTrack": "Vorige track", "ButtonProfile": "Profiel", "ButtonQuickStartGuide": "Snelstart gids", - "ButtonRefresh": "Vernieuwen", "ButtonRefreshGuideData": "Gidsgegevens Vernieuwen", "ButtonRemove": "Verwijderen", "ButtonRename": "Naam wijzigen", @@ -97,7 +91,6 @@ "ButtonSignIn": "Aanmelden", "ButtonSignOut": "Afmelden", "ButtonSubmit": "Uitvoeren", - "ButtonSubtitles": "Ondertiteling", "CancelRecording": "Opname annuleren", "CancelSeries": "Annuleer series", "Categories": "Categorieën", @@ -181,18 +174,16 @@ "EnablePhotosHelp": "Afbeeldingen worden herkend en weergegeven naast andere mediabestanden.", "EnableStreamLooping": "Livestreams automatisch herhalen", "EnableStreamLoopingHelp": "Schakel dit in als de livestreams slechts enkele seconden aan gegevens bevatten en continu moeten worden aangevraagd. Schakel dit niet in indien het niet nodig is.", - "EnableThemeSongs": "Titelmuziek", "EnableThemeSongsHelp": "Speel titelmuziek af tijdens het bladeren door de bibliotheek.", - "EnableThemeVideos": "Titelfilms", "EnableThemeVideosHelp": "Speel titelfilms af op de achtergrond tijdens het bladeren door de bibliotheek.", "Ended": "Gestopt", "EndsAtValue": "Eindigt om {0}", "Episodes": "Afleveringen", "ErrorAddingListingsToSchedulesDirect": "Er ging iets mis bij het toevoegen van de lineup aan uw Schedules Direct account. Schedules Direct staat maar een beperkt aantal lineups per account toe. Het kan nodig zijn dat u zich aan moet melden op de Schedules Direct website en andere lineups moet verwijderen voordat u verder kunt.", - "ErrorAddingMediaPathToVirtualFolder": "Er ging iets mis bij het toevoegen van het media pad. Controleer of het pad klopt en of het Jellyfin server process toegang heeft tot het pad.", + "ErrorAddingMediaPathToVirtualFolder": "Er ging iets mis bij het toevoegen van het media pad. Controleer of het pad klopt en of Jellyfin toegang heeft tot de locatie.", "ErrorAddingTunerDevice": "Er was een fout bij het toevoegen van de tuner. Controleer of deze toegankelijk is en probeer het opnieuw.", "ErrorAddingXmlTvFile": "Er is een fout opgetreden met de toegang tot XMLTV bestand. Zorg ervoor dat het bestand bestaat en probeer het opnieuw.", - "ErrorDeletingItem": "Er was een probleem bij het verwijderen van het item in Jellyfin Server. Controleer dat Jellyfin Server schrijfrechten op de map heeft en probeer het opnieuw.", + "ErrorDeletingItem": "Er was een probleem bij het verwijderen van het item in de server. Controleer of Jellyfin schrijfrechten op de map heeft en probeer het opnieuw.", "ErrorGettingTvLineups": "Er was een fout bij het downloaden van de TV lineup. Controleer of uw gegevens correct zijn en probeer het opnieuw.", "ErrorStartHourGreaterThanEnd": "Eind tijd moet na de start tijd liggen.", "ErrorPleaseSelectLineup": "Selecteer een lineup en probeer het opnieuw. Als er geen lineups beschibaar zijn, controleer dan of uw gebruikersnaam, wachtwoord en postcode correct zijn.", @@ -237,11 +228,9 @@ "HeaderActiveDevices": "Actieve apparaten", "HeaderActiveRecordings": "Actieve Opnames", "HeaderActivity": "Activiteit", - "HeaderAddScheduledTaskTrigger": "Trigger Toevoegen", "HeaderAddToCollection": "Toevoegen aan Collectie", "HeaderAddToPlaylist": "Toevoegen aan Afspeellijst", "HeaderAddUpdateImage": "Afbeelding Toevoegen/Bijwerken", - "HeaderAddUser": "Gebruiker Toevoegen", "HeaderAdditionalParts": "Extra onderdelen", "HeaderAdmin": "Beheerder", "HeaderAlbumArtists": "Albumartiesten", @@ -255,7 +244,6 @@ "HeaderAudioBooks": "Luisterboeken", "HeaderAudioSettings": "Audio Instellingen", "HeaderBlockItemsWithNoRating": "Blokkeer items met geen of niet herkende beoordelingsinformatie:", - "HeaderBooks": "Boeken", "HeaderBranding": "Huisstijl", "HeaderCancelRecording": "Opname Annuleren", "HeaderCancelSeries": "Annuleren Series", @@ -292,14 +280,12 @@ "HeaderEditImages": "Afbeeldingen bewerken", "HeaderEnabledFields": "Schakel velden in", "HeaderEnabledFieldsHelp": "Verwijder een vinkje om het veld te vergrendelen en voorkom dat gegevens gewijzigd kunnen worden.", - "HeaderEpisodes": "Afleveringen", "HeaderError": "Fout", "HeaderExternalIds": "Externe ID's:", "HeaderFeatureAccess": "Functie toegang", "HeaderFetchImages": "Afbeeldingen ophalen:", "HeaderFetcherSettings": "Fetcher-instellingen", "HeaderForKids": "Voor Kinderen", - "HeaderForgotPassword": "Wachtwoord vergeten", "HeaderFrequentlyPlayed": "Vaak afgespeeld", "HeaderGuideProviders": "TV Gids data aanbieders", "HeaderIdentification": "Identificatie", @@ -325,7 +311,6 @@ "HeaderLiveTvTunerSetup": "Live TV Tuner Instellingen", "HeaderLoginFailure": "Aanmeld fout", "HeaderMediaFolders": "Media Mappen", - "HeaderMediaInfo": "Media informatie", "HeaderMetadataSettings": "Metagegevens instellingen", "HeaderMoreLikeThis": "Meer als dit", "HeaderMusicQuality": "Muziek Kwaliteit", @@ -424,7 +409,7 @@ "Identify": "Identificeer", "Images": "Afbeeldingen", "ImportFavoriteChannelsHelp": "Alleen kanalen die als favoriet aangemerkt zijn op de tuner zullen geïmporteerd worden.", - "ImportMissingEpisodesHelp": "Indien ingeschakeld, wordt informatie over ontbrekende afleveringen in uw Jellyfin de database geïmporteerd en weergegeven in de seizoenen en series. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", + "ImportMissingEpisodesHelp": "Informatie over ontbrekende afleveringen zal in uw database worden geïmporteerd en weergegeven in seizoenen en series. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", "InstallingPackage": "Installeren van {0} (versie {1})", "Kids": "Kinderen", "Label3DFormat": "3D formaat:", @@ -454,7 +439,7 @@ "LabelAudioLanguagePreference": "Voorkeurs audiotaal:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Vernieuw metagegevens automatisch van het internet:", "LabelBindToLocalNetworkAddress": "Binden aan het lokale netwerk adres:", - "LabelBindToLocalNetworkAddressHelp": "Optioneel. Overrule het lokale IP-adres om aan de http-server te binden. Indien leeg gelaten, zal de server binden aan alle beschikbare adressen. Het veranderen van deze waarde vereist herstarten van Jellyfin Server.", + "LabelBindToLocalNetworkAddressHelp": "Overschrijf het lokale IP-adres voor de HTTP server. Indien leeg gelaten, zal de server binden aan alle beschikbare adressen. Het veranderen van deze waarde vereist een herstart.", "LabelBirthDate": "Geboortedatum:", "LabelBirthYear": "Geboorte jaar:", "LabelBlastMessageInterval": "Alive bericht interval", @@ -477,7 +462,6 @@ "LabelCustomCertificatePathHelp": "Pad naar een PKCS #12 bestand met een certificaat en privé-sleutel om TLS ondersteuning op een aangepast domein in te schakelen.", "LabelCustomCss": "Aangepaste CSS:", "LabelCustomCssHelp": "Uw eigen aangepaste stijl voor de web-interface toepassen.", - "LabelCustomDeviceDisplayName": "Weergave naam:", "LabelCustomDeviceDisplayNameHelp": "Geef een eigen weergave naam op of laat deze leeg om de naam te gebruiken die het apparaat opgeeft.", "LabelCustomRating": "Aangepaste classificatie:", "LabelDateAdded": "Datum toegevoegd:", @@ -493,7 +477,6 @@ "LabelDiscNumber": "Disk nummer:", "LabelDisplayLanguage": "Schermtaal:", "LabelDisplayLanguageHelp": "Vertaling van Jellyfin is een voortdurend project.", - "LabelDisplayMissingEpisodesWithinSeasons": "Toon ontbrekende afleveringen binnen een seizoen", "LabelDisplayMode": "Weergave mode:", "LabelDisplayName": "Weergave naam:", "LabelDisplayOrder": "Weergave volgorde:", @@ -511,7 +494,7 @@ "LabelEnableBlastAliveMessages": "Alive berichten zenden", "LabelEnableBlastAliveMessagesHelp": "Zet dit aan als de server niet betrouwbaar door andere UPnP-apparaten op uw netwerk wordt gedetecteerd.", "LabelEnableDlnaClientDiscoveryInterval": "Interval voor het zoeken naar clients", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bepaalt de duur in seconden tussen SSDP zoekopdrachten uitgevoerd door Jellyfin.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bepaalt de duur in seconden tussen SSDP zoekopdrachten.", "LabelEnableDlnaDebugLogging": "DLNA foutopsporings logboek inschakelen", "LabelEnableDlnaDebugLoggingHelp": "Genereer grote logboekbestanden en is alleen bedoeld voor het troubleshooting doeleinden.", "LabelEnableDlnaPlayTo": "DLNA \"Play To\" inschakelen", @@ -625,7 +608,7 @@ "LabelNumberOfGuideDays": "Aantal dagen van de gids om te downloaden:", "LabelNumberOfGuideDaysHelp": "Het downloaden van meer dagen van de gids gegevens biedt de mogelijkheid verder vooruit te plannen en een beter overzicht geven, maar het zal ook langer duren om te downloaden. Auto kiest op basis van het aantal kanalen.", "LabelOptionalNetworkPath": "Gedeelde netwerkmap:", - "LabelOptionalNetworkPathHelp": "Als deze map wordt gedeeld op uw netwerk, kunnen middels het netwerkpad Jellyfin apps op andere apparaten rechtstreeks toegang tot mediabestanden krijgen. Bijvoorbeeld {0} or {1}.", + "LabelOptionalNetworkPathHelp": "Als deze map wordt gedeeld op uw netwerk, kunnen middels het netwerkpad clients op andere apparaten rechtstreeks toegang tot mediabestanden krijgen. Bijvoorbeeld {0} of {1}.", "LabelOriginalAspectRatio": "Originele aspect ratio:", "LabelOriginalTitle": "Orginele titel:", "LabelOverview": "Overzicht:", @@ -644,7 +627,6 @@ "LabelPostProcessorArguments": "Nabewerkings command lijn argumenten:", "LabelPostProcessorArgumentsHelp": "Gebruik {path} als het pad naar het opnamebestand.", "LabelPreferredDisplayLanguage": "Voorkeur weergavetaal:", - "LabelPreferredDisplayLanguageHelp": "Vertaling van Jellyfin is een voortdurend project.", "LabelPreferredSubtitleLanguage": "Voorkeurstaal ondertiteling:", "LabelProfileAudioCodecs": "Geluidscodecs:", "LabelProfileCodecsHelp": "Gescheiden door een komma. Dit kan leeg worden gelaten om te laten gelden voor alle codecs.", @@ -699,7 +681,6 @@ "LabelSubtitleDownloaders": "Ondertiteling downloaders:", "LabelSubtitleFormatHelp": "Voorbeeld: srt", "LabelSubtitlePlaybackMode": "Ondertitel modus:", - "LabelSubtitles": "Ondertiteling", "LabelSupportedMediaTypes": "Ondersteunde Media Types:", "LabelTVHomeScreen": "TV mode begin scherm:", "LabelTextBackgroundColor": "Tekst achtergrond kleur:", @@ -710,7 +691,6 @@ "LabelTimeLimitHours": "Tijdslimiet (uren):", "LabelTitle": "Titel:", "LabelTrackNumber": "Tracknummer:", - "LabelTranscodingAudioCodec": "Geluidscodec:", "LabelTranscodingTempPathHelp": "Specificeer een eigen pad voor de transcode bestanden die geleverd worden aan gebruikers. Laat leeg om de server standaard te gebruiken.", "LabelTranscodingThreadCount": "Aantal transcodeer draden:", "LabelTranscodingThreadCountHelp": "Selecteer het maximale aantal draden die gebruikt mogen worden om te kunnen transcoderen. Bij een lager aantal zal het processorgebruik lager zijn, maar kan de afspeelkwaliteit minder zijn voor een vloeiende ervaring.", @@ -776,13 +756,13 @@ "MessageConfirmProfileDeletion": "Weet u zeker dat u dit profiel wilt verwijderen?", "MessageConfirmRecordingCancellation": "Opname annuleren?", "MessageConfirmRemoveMediaLocation": "Weet u zeker dat u deze locatie wilt verwijderen?", - "MessageConfirmRestart": "Weet u zeker dat u Jellyfin Server wilt herstarten?", - "MessageConfirmRevokeApiKey": "Weet u zeker dat u deze api sleutel in wilt trekken? De verbinding met Jellyfin Server zal direct verbroken worden.", + "MessageConfirmRestart": "Weet u zeker dat u Jellyfin wilt herstarten?", + "MessageConfirmRevokeApiKey": "Weet u zeker dat u deze API sleutel in wilt trekken? De verbinding van de applicatie met deze server zal plotseling verbroken worden.", "MessageConfirmShutdown": "Weet u zeker dat u de server wilt afsluiten?", "MessageContactAdminToResetPassword": "Neem contact op met de server beheerder om uw wachtwoord te resetten.", "MessageCreateAccountAt": "Maak een account bij {0}", "MessageDeleteTaskTrigger": "Weet u zeker dat u deze signaal taak wilt verwijderen?", - "MessageDirectoryPickerBSDInstruction": "Voor BSD kan het noodzakelijk zijn opslag op uw FreeNAS Jail te configureren voordat Jellyfin het kan benaderen.", + "MessageDirectoryPickerBSDInstruction": "Voor BSD moet u mogelijk de opslag in uw FreeNAS Jail configureren, zodat Jellyfin toegang heeft tot uw media.", "MessageDirectoryPickerLinuxInstruction": "Voor Linux op Arch Linux, CentOS, Debian, Fedora, openSUSE, of Ubuntu, moet u de service-gebruiker ten minste leestoegang tot uw opslaglocaties verlenen.", "MessageDownloadQueued": "Download in de wachtrij geplaatst.", "MessageEnablingOptionLongerScans": "Het inschakelen van deze optie kan leiden tot langere doorlooptijd van bibliotheek scans.", @@ -804,14 +784,13 @@ "MessagePleaseEnsureInternetMetadata": "Zorg ervoor dat het downloaden van internet-metadata is ingeschakeld.", "MessagePleaseWait": "Even geduld. Dit kan even duren.", "MessagePluginConfigurationRequiresLocalAccess": "Om deze plugin te configuren moet u zich aanmelden direct op de lokale server.", - "MessagePluginInstallDisclaimer": "Plugins ontwikkeld door leden van de Jellyfin gemeenschap zijn een geweldige manier om uw Jellyfin ervaring met extra functies en voordelen te verbeteren. Alvorens te installeren, dient u zich bewust te zijn van de gevolgen die zij kunnen hebben op uw Jellyfin Server, zoals langere bibliotheek scans, extra achtergrondinformatie verwerking, en een verminderde stabiliteit van het systeem.", + "MessagePluginInstallDisclaimer": "Plugins ontwikkeld door leden van de gemeenschap zijn een geweldige manier om uw ervaring met extra functies en voordelen te verbeteren. Wees voor het installeren bewust van de effecten die zij op uw server kunnen hebben, zoals langere bibliotheek scans, extra achtergrondinformatie verwerking, en een verminderde stabiliteit van het systeem.", "MessageReenableUser": "Zie hieronder hoe opnieuw in te schakelen", - "MessageSettingsSaved": "Instellingen opgeslagen.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "De volgende media locaties worden verwijderd uit de bibliotheek:", "MessageUnableToConnectToServer": "Het is momenteel niet mogelijk met de geselecteerde server te verbinden. Controleer dat deze draait en probeer het opnieuw.", "MessageUnsetContentHelp": "Inhoud zal als gewone folders worden getoond. Gebruik voor het beste resultaat de Metadata Manager om de inhoud types voor subfolders in te stellen.", "MessageYouHaveVersionInstalled": "Op dit moment is versie {0} geïnstalleerd.", - "MetadataSettingChangeHelp": "Veranderen van metadata instellingen zal nieuwe content die wordt toegevoegd beïnvloeden. Om de bestaande inhoud te vernieuwen, opent u het detail scherm en klik op de knop Vernieuwen, of doe een bulk vernieuwing met behulp van de metadata manager.", + "MetadataSettingChangeHelp": "Het veranderen van metadata instellingen zal nieuwe toegevoegd content beïnvloeden. Om de bestaande content te vernieuwen, opent u het detail scherm en klik op de vernieuw knop, of voer een bulk vernieuwing uit met behulp van de metadata manager.", "MinutesAfter": "minuten na", "MinutesBefore": "minuten voor", "Mobile": "Mobiel", @@ -867,7 +846,6 @@ "OptionAllowVideoPlaybackTranscoding": "Afspelen van video die transcoderen vereisen toestaan", "OptionArtist": "Artiest", "OptionAscending": "Oplopend", - "OptionAutomatic": "Automatisch", "OptionAutomaticallyGroupSeries": "Automatisch samenvoegen serie die zijn verspreid over meerdere mappen", "OptionAutomaticallyGroupSeriesHelp": "Serie die verspreid zijn over meerdere mappen binnen deze bibliotheek worden automatisch samengevoegd tot één serie.", "OptionBlockBooks": "Boeken", @@ -895,7 +873,7 @@ "OptionDownloadBackImage": "Terug", "OptionDownloadDiscImage": "Schijf", "OptionDownloadImagesInAdvance": "Download afbeeldingen van tevoren", - "OptionDownloadImagesInAdvanceHelp": "Standaard worden de meeste afbeeldingen gedownload wanneer ze opgevraagd worden door een Jellyfin app. Activeer deze optie om alle afbeeldingen op voorhand te downloaden bij het importeren van nieuwe media. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", + "OptionDownloadImagesInAdvanceHelp": "Standaard worden de meeste afbeeldingen alleen gedownload wanneer ze opgevraagd worden door een client. Activeer deze optie om alle afbeeldingen van tevoren te downloaden bij het importeren van nieuwe media. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", "OptionDownloadPrimaryImage": "Primair", "OptionDownloadThumbImage": "Miniatuur", "OptionEmbedSubtitles": "Insluiten in container", @@ -1091,14 +1069,11 @@ "SystemDlnaProfilesHelp": "Systeem profielen zijn alleen-lezen. Om een systeem profiel te overschrijven, maakt u een aangepast profiel gericht op hetzelfde apparaat.", "TabAccess": "Toegang", "TabAdvanced": "Geavanceerd", - "TabAlbumArtists": "Albumartiesten", "TabCatalog": "Catalogus", "TabDirectPlay": "Direct Afspelen", - "TabEpisodes": "Afleveringen", "TabLatest": "Nieuw", "TabLogs": "Logboeken", "TabMusic": "Muziek", - "TabMusicVideos": "Muziek Videos", "TabMyPlugins": "Mijn Plugins", "TabNetworks": "TV-Studio's", "TabNfoSettings": "NFO Instellingen", @@ -1108,7 +1083,6 @@ "TabProfile": "Profiel", "TabProfiles": "Profielen", "TabResponses": "Reacties", - "TabResumeSettings": "Hervatten", "TabScheduledTasks": "Geplande taken", "TabSettings": "Instellingen", "TabUpcoming": "Binnenkort op TV", @@ -1172,7 +1146,6 @@ "Banner": "Banner", "Blacklist": "Zwarte lijst", "Box": "Hoes", - "ButtonFilter": "Filter", "ButtonInfo": "Info", "ButtonOk": "Ok", "ButtonStart": "Start", @@ -1186,7 +1159,6 @@ "Genre": "Genre", "Genres": "Genres", "HeaderCastAndCrew": "Acteurs en medewerkers", - "HeaderCastCrew": "Acteurs & medewerkers", "Art": "Afbeeldingen", "HeaderHttpHeaders": "HTTP Headers", "HeaderStatus": "Status", @@ -1206,7 +1178,6 @@ "ItemCount": "{0} items", "Items": "Items", "LabelAlbum": "Album:", - "LabelAudio": "Audio", "LabelAuthProvider": "Authenticatie Aanbieder:", "LabelCache": "Cache:", "LabelDidlMode": "DIDL mode:", @@ -1256,7 +1227,6 @@ "OptionDvd": "DVD", "OptionResElement": "res element", "TV": "TV", - "HeaderHome": "Thuis", "MediaInfoStreamTypeEmbeddedImage": "Ingeladen Afbeelding", "LabelTypeMetadataDownloaders": "{0} metadata downloaders:", "OptionLoginAttemptsBeforeLockout": "Bepaald hoeveel foutieve login pogingen plaats kunnen vinden voor dat de gebruiker buitengesloten wordt.", @@ -1272,7 +1242,6 @@ "ValueDiscNumber": "Schijf {0}", "ValueMinutes": "{0} min", "OptionProtocolHttp": "HTTP", - "LabelTranscodingVideoCodec": "Video codec:", "MusicLibraryHelp": "Bekijk de {0}muziek benaming gids{1}.", "OptionList": "lijst", "LabelAudioBitDepth": "Audio bit diepte:", @@ -1282,7 +1251,6 @@ "PasswordResetProviderHelp": "Kies een wachtwoord reset provider om te gebruiken wanneer deze gebruiker een wachtwoord reset aanvraagt", "Screenshots": "Schermafdruk", "Series": "Series", - "TabInfo": "Info", "Trailers": "Trailers", "Uniform": "Uniform", "ValueCodec": "Codec: {0}", @@ -1307,7 +1275,6 @@ "LabelPleaseRestart": "De wijzigingen zullen worden toegepast na het handmatig herladen van de web cliënt.", "LabelStatus": "Status:", "LabelTagline": "Label tekst:", - "LabelTranscodingContainer": "Container:", "LabelTranscodePath": "Transcodeer pad:", "LabelTranscodes": "Transcoderen:", "DashboardOperatingSystem": "Besturingssysteem: {0}", @@ -1347,7 +1314,6 @@ "OptionRegex": "Regex", "TabServer": "Server", "TabStreaming": "Streamen", - "TabTrailers": "Trailers", "OptionAuto": "Auto", "OptionProfileVideo": "Video", "AlbumArtist": "Album Artiest", diff --git a/src/strings/pl.json b/src/strings/pl.json index cb23cf40e6..7337edae72 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -62,30 +62,23 @@ "ButtonBack": "Wstecz", "ButtonCancel": "Anuluj", "ButtonChangeServer": "Zmień Serwer", - "ButtonEdit": "Edytuj", - "ButtonEditImages": "Edytuj obrazy", "ButtonEditOtherUserPreferences": "Edytuj profil, obrazy i ustawienia osobiste tego użytkownika.", - "ButtonFilter": "Filtr", "ButtonForgotPassword": "Zapomniałem hasła", "ButtonFullscreen": "Pełny ekran", "ButtonGotIt": "Rozumiem", "ButtonGuide": "Przewodnik", - "ButtonHome": "Start", "ButtonInfo": "Informacje", "ButtonLibraryAccess": "Dostęp do biblioteki", "ButtonManualLogin": "Logowanie manualne", "ButtonMore": "Więcej", "ButtonNetwork": "Sieć", "ButtonNextTrack": "Następny utwór", - "ButtonOff": "Wyłącz", "ButtonOpen": "Otwórz", "ButtonParentalControl": "Kontrola rodzicielska", "ButtonPause": "Pauza", - "ButtonPlay": "Odtwarzaj", "ButtonPreviousTrack": "Poprzedni utwór", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Skrócona Instrukcja Obsługi", - "ButtonRefresh": "Odśwież", "ButtonRefreshGuideData": "Odśwież dane przewodnika", "ButtonRemove": "Usuń", "ButtonRename": "Zmień nazwę", @@ -105,7 +98,6 @@ "ButtonSignOut": "Wyloguj", "ButtonStop": "Zatrzymaj", "ButtonSubmit": "Zatwierdź", - "ButtonSubtitles": "Napisy", "ButtonTrailer": "Zwiastun", "ButtonUninstall": "Odinstaluj", "ButtonWebsite": "Strona WWW", @@ -124,7 +116,7 @@ "ColorTransfer": "Transfer kolorów", "CommunityRating": "Ocena społeczności", "Composer": "Kompozytor", - "ConfigureDateAdded": "Skonfiguruj sposób określania dodanej daty na pulpicie nawigacyjnym w ustawieniach biblioteki.", + "ConfigureDateAdded": "Skonfiguruj sposób określania dodanej daty na pulpicie nawigacyjnym w ustawieniach biblioteki", "ConfirmDeleteImage": "Usunąć obraz?", "ConfirmDeleteItem": "Usunięcie tej pozycji usunie ją zarówno z systemu plików jak i z biblioteki mediów. Czy chcesz kontynuować?", "ConfirmDeleteItems": "Usunięcie tej pozycji usunie ją zarówno z systemu plików jak i z biblioteki mediów. Czy chcesz kontynuować?", @@ -194,9 +186,7 @@ "EnablePhotosHelp": "Obrazy będą wykrywane i wyświetlane obok innych plików multimedialnych.", "EnableStreamLooping": "Zapętlaj żądania transmisji", "EnableStreamLoopingHelp": "Aktywuj tę opcję w przypadku, gdy transmisje na żywo zawierają tylko kilka sekund danych i wymagają ciągłego ponawiania żądań transmisji. Aktywowanie tej funkcji w przypadku braku potrzeby może powodować problemy.", - "EnableThemeSongs": "Motywy muzyczne", "EnableThemeSongsHelp": "Odtwarzaj motywy muzyczne podczas przeglądania biblioteki.", - "EnableThemeVideos": "Motywy wideo", "EnableThemeVideosHelp": "Podczas przeglądania biblioteki odtwarzaj w tle motywy wideo.", "Ended": "Zakończony", "EndsAtValue": "Koniec o {0}", @@ -252,11 +242,9 @@ "HeaderActiveDevices": "Aktywne urządzenia", "HeaderActiveRecordings": "Nagrania aktywne", "HeaderActivity": "Aktywność", - "HeaderAddScheduledTaskTrigger": "Dodawanie wyzwalacza", "HeaderAddToCollection": "Dodaj do kolekcji", "HeaderAddToPlaylist": "Dodaj do listy", "HeaderAddUpdateImage": "Dodaj / Aktualizuj obraz", - "HeaderAddUser": "Dodaj użytkownika", "HeaderAdditionalParts": "Dodatkowe części", "HeaderAdmin": "Administracja", "HeaderAlbumArtists": "Wykonawcy albumów", @@ -270,12 +258,10 @@ "HeaderAudioBooks": "Książka mówiona", "HeaderAudioSettings": "Ustawienia dźwięku", "HeaderBlockItemsWithNoRating": "Blokuj pozycje z brakującą lub nierozpoznaną kategorią wiekową:", - "HeaderBooks": "Książki", "HeaderBranding": "Dostosowywanie", "HeaderCancelRecording": "Anuluj nagranie", "HeaderCancelSeries": "Anuluj nagrywanie serialu", "HeaderCastAndCrew": "Obsada i ekipa", - "HeaderCastCrew": "Obsada i ekipa", "HeaderChannelAccess": "Dostęp do Kanałów", "HeaderChapterImages": "Obrazy rozdziałów", "HeaderCodecProfile": "Profil Kodeków", @@ -309,14 +295,12 @@ "HeaderEditImages": "Edytuj obrazy", "HeaderEnabledFields": "Pola aktywne", "HeaderEnabledFieldsHelp": "Odznacz pole, aby je zablokować i zapobiec zmianom danych w przyszłości.", - "HeaderEpisodes": "Odcinki", "HeaderError": "Błąd", "HeaderExternalIds": "Identyfikatory zewnętrzne:", "HeaderFeatureAccess": "Dostęp do funkcji", "HeaderFetchImages": "Pobieraj obrazy:", "HeaderFetcherSettings": "Ustawienia pobierania", "HeaderForKids": "Dla dzieci", - "HeaderForgotPassword": "Zapomniałem hasła", "HeaderFrequentlyPlayed": "Często odtwarzane", "HeaderGuideProviders": "Dostawcy danych przewodnika telewizyjnego", "HeaderHttpHeaders": "Nagłówki HTTP", @@ -345,7 +329,6 @@ "HeaderLoginFailure": "Niepowodzenie logowania", "HeaderMedia": "Multimedia", "HeaderMediaFolders": "Foldery mediów", - "HeaderMediaInfo": "O mediach", "HeaderMetadataSettings": "Ustawienia metadanych", "HeaderMoreLikeThis": "Więcej podobnych", "HeaderMusicQuality": "Jakość muzyki", @@ -477,8 +460,7 @@ "LabelAppName": "Nazwa Aplikacji", "LabelAppNameExample": "Przykład: Sickbeard, Sonarr", "LabelArtists": "Wykonawcy:", - "LabelArtistsHelp": "Oddziel wielu artystów średnikiem \";\"", - "LabelAudio": "Dźwięk", + "LabelArtistsHelp": "Oddziel wielu artystów średnikiem \";\".", "LabelAudioLanguagePreference": "Preferowany język ścieżki dźwiękowej:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Odświeżaj automatycznie metadane z Internetu:", "LabelBindToLocalNetworkAddress": "Przypisz do lokalnego adresu sieciowego:", @@ -506,7 +488,6 @@ "LabelCustomCertificatePathHelp": "Ścieżka do pliku PKCS #12, zawierającego certyfikat i klucz prywatny, niezbędny do aktywowana obsługi TLS dla własnej domeny.", "LabelCustomCss": "Niestandardowy CSS:", "LabelCustomCssHelp": "Zastosuj własne niestandardowe arkusze stylów dla interfejsu webowego.", - "LabelCustomDeviceDisplayName": "Nazwa wyświetlana:", "LabelCustomDeviceDisplayNameHelp": "Dostarcz własną nazwę wyświetlania lub zostaw puste i użyj nazwy dostarczonej przez urządzenie.", "LabelCustomRating": "Kategoria wiekowa własna:", "LabelDateAdded": "Data dodania:", @@ -523,7 +504,6 @@ "LabelDiscNumber": "Numer dysku:", "LabelDisplayLanguage": "Język interfejsu:", "LabelDisplayLanguageHelp": "Tłumaczenie Jellyfin to projekt, który ciągle trwa.", - "LabelDisplayMissingEpisodesWithinSeasons": "Wyświetlaj w sezonach brakujące odcinki", "LabelDisplayMode": "Tryb wyświetlania:", "LabelDisplayName": "Nazwa wyświetlana:", "LabelDisplayOrder": "Kolejność wyświetlania:", @@ -677,7 +657,6 @@ "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.", "LabelPreferredSubtitleLanguage": "Preferowany język napisów:", "LabelProfileAudioCodecs": "Kodeki audio:", "LabelProfileCodecs": "Kodeki:", @@ -737,7 +716,6 @@ "LabelSubtitleDownloaders": "Dostawcy napisów:", "LabelSubtitleFormatHelp": "Przykład: srt", "LabelSubtitlePlaybackMode": "Tryb napisów:", - "LabelSubtitles": "Napisy", "LabelSupportedMediaTypes": "Obsługiwane typy mediów:", "LabelTVHomeScreen": "Ekran startowy trybu telewizyjnego:", "LabelTag": "Znacznik:", @@ -750,12 +728,9 @@ "LabelTimeLimitHours": "Limit czasu (godziny):", "LabelTitle": "Tytuł:", "LabelTrackNumber": "Numer utworu:", - "LabelTranscodingAudioCodec": "Kodek audio:", - "LabelTranscodingContainer": "Kontener:", "LabelTranscodingTempPathHelp": "Podaj niestandardową ścieżkę dla plików transkodowanych udostępnianych klientom. Pozostaw puste, aby użyć domyślnych ustawień serwera.", "LabelTranscodingThreadCount": "Liczba wątków transkodowania:", "LabelTranscodingThreadCountHelp": "Wybierz maksymalną liczbę wątków dla transkodowania. Ograniczenie ich liczby, obniży poziom użycia procesora, ale może niekorzystnie wpłynąć na płynność odtwarzania.", - "LabelTranscodingVideoCodec": "Kodek wideo:", "LabelTriggerType": "Typ wyzwalacza:", "LabelTunerIpAddress": "Adres IP dekodera:", "LabelTunerType": "Typ tunera:", @@ -832,7 +807,7 @@ "MessageConfirmRecordingCancellation": "Anulować nagranie?", "MessageConfirmRemoveMediaLocation": "Czy na pewno chcesz usunąć tę lokalizację?", "MessageConfirmRestart": "Czy na pewno chcesz uruchomić Jellyfin ponownie?", - "MessageConfirmRevokeApiKey": "Czy na pewno chcesz unieważnić kluczAPI? Połączenia aplikacji z serwerem zostaną natychmiastowo zakończone.", + "MessageConfirmRevokeApiKey": "Czy na pewno chcesz unieważnić klucz API? Połączenia aplikacji z serwerem zostaną natychmiastowo zakończone.", "MessageConfirmShutdown": "Czy na pewno chcesz zamknąć serwer?", "MessageContactAdminToResetPassword": "W celu wyczyszczenia hasła. skontaktuj się z administratorem systemu.", "MessageCreateAccountAt": "Utwórz konto na {0}", @@ -861,7 +836,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Aby skonfigurować ten plugin zaloguj się bezpośrednio do lokalnego serwera.", "MessagePluginInstallDisclaimer": "Wtyczki stworzone przez członków społeczności to świetny sposób na ulepszenie Twojego doświadczenia dzięki dodatkowym funkcjom i korzyściom. Przed instalacją zwróć uwagę na skutki, jakie mogą mieć na serwerze, takie jak dłuższe skanowanie bibliotek, dodatkowe przetwarzanie w tle i zmniejszona stabilność systemu.", "MessageReenableUser": "Zobacz poniżej aby aktywować ponownie", - "MessageSettingsSaved": "Ustawienia zapisane.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Następujące lokalizacje mediów zostaną usunięte z twojej biblioteki:", "MessageUnableToConnectToServer": "Połączenie z wybranym serwerem jest teraz niemożliwe. Upewnij się, że jest uruchomiony i spróbuj ponownie.", "MessageUnsetContentHelp": "Zawartość będzie wyświetlana jako proste foldery. W celu uzyskania najlepszych wyników, użyj menadżera metadanych do ustawienia typu zawartości podfolderów.", @@ -926,7 +900,6 @@ "OptionArtist": "Wykonawca", "OptionAscending": "Rosnąco", "OptionAuto": "Automatycznie", - "OptionAutomatic": "Automatycznie", "OptionAutomaticallyGroupSeries": "Scalaj seriale znajdujące się w wielu folderach", "OptionAutomaticallyGroupSeriesHelp": "Serie rozmieszczone w wielu folderach w tej bibliotece zostaną automatycznie połączone w jedną serię.", "OptionBlockBooks": "Książki", @@ -1167,18 +1140,14 @@ "TV": "Telewizor", "TabAccess": "Dostęp", "TabAdvanced": "Zaawansowane", - "TabAlbumArtists": "Wykonawcy albumów", "TabCatalog": "Katalog", "TabCodecs": "Kodeki", "TabContainers": "Kontenery", "TabDashboard": "Kokpit", "TabDirectPlay": "Odtwarzanie Bezposrednie", - "TabEpisodes": "Odcinki", - "TabInfo": "Informacje", "TabLatest": "Ostatnio dodane", "TabLogs": "Dziennik zdarzeń", "TabMusic": "Muzyka", - "TabMusicVideos": "Teledyski", "TabMyPlugins": "Zainstalowane", "TabNetworks": "Sieci", "TabNfoSettings": "Ustawienia NFO", @@ -1189,12 +1158,10 @@ "TabProfile": "Profil", "TabProfiles": "Profile", "TabResponses": "Odpowiedzi", - "TabResumeSettings": "Wznawianie", "TabScheduledTasks": "Harmonogram zadań", "TabServer": "Serwer", "TabSettings": "Ustawienia", "TabStreaming": "Transmitowanie", - "TabTrailers": "Zwiastuny", "TabUpcoming": "Wkrótce", "Tags": "Znaczniki", "TagsValue": "Znaczniki: {0}", @@ -1271,7 +1238,6 @@ "HeaderFavoriteArtists": "Ulubieni wykonawcy", "HeaderFavoriteSongs": "Ulubione utwory", "HeaderFavoriteVideos": "Ulubione Filmy", - "HeaderHome": "Strona główna", "LabelAuthProvider": "Dostawca autentykacji:", "LabelDynamicExternalId": "{0} Id:", "LabelFormat": "Format:", @@ -1383,7 +1349,7 @@ "StopPlayback": "Zatrzymaj odtwarzanie", "ButtonPlayer": "Odtwarzacz", "ButtonCast": "Obsada", - "EnableBlurHashHelp": "Obrazy które wciąż się ładują zostaną zastąpione rozmazanym symbolem", + "EnableBlurHashHelp": "Obrazy które wciąż się ładują zostaną zastąpione rozmazanym symbolem.", "EnableBlurHash": "Włącz rozmazane zamienniki dla obrazów", "UnsupportedPlayback": "Jellyfin nie może odszyfrować zawartości zabezpieczonej przy pomocy DRM, ale spróbuje pomimo tego. Niektóre pliki mogą pojawiać się jako zupełnie czarne z powodu szyfrowania lub innych nie wspieranych funkcji jak np. interaktywne tytuły.", "OnApplicationStartup": "Przy starcie aplikacji", @@ -1475,5 +1441,6 @@ "SubtitleVerticalPositionHelp": "Numer wiersza, w którym pojawia się tekst. Liczby dodatnie wskazują z góry na dół. Liczby ujemne wskazują od dołu do góry.", "LabelSubtitleVerticalPosition": "Pozycja pionowa:", "MessageGetInstalledPluginsError": "Wystąpił błąd podczas pobierania listy aktualnie zainstalowanych wtyczek.", - "MessagePluginInstallError": "Wystąpił błąd podczas instalacji wtyczki." + "MessagePluginInstallError": "Wystąpił błąd podczas instalacji wtyczki.", + "PlaybackRate": "Szybkość odtwarzania" } diff --git a/src/strings/pr.json b/src/strings/pr.json index ea27024045..4c99a4556c 100644 --- a/src/strings/pr.json +++ b/src/strings/pr.json @@ -10,16 +10,12 @@ "FolderTypeMusic": "Sea Shanties", "OptionBlockBooks": "Tall Tales", "HeaderFavoriteBooks": "Fav'rit Tales", - "HeaderBooks": "Tall Tales", "HeaderAudioBooks": "Spoken Tales", "FolderTypeBooks": "Tall Tales", "Books": "Tall Tales", "LabelHomeNetworkQuality": "Sail strength:", "Home": "Poop Deck", - "HeaderHome": "Poop Deck", "DisplayInOtherHomeScreenSections": "Show on Poop Deck such as latest booty and continue plundering", - "ButtonHome": "Poop deck", - "HeaderCastCrew": "Mateys", "Add": "Upend", "Actor": "Privateer", "AccessRestrictedTryAgainLater": "Ye arn't appearin' on the list o' the livin'!", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 25f6afd31e..8019cf9eeb 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -58,30 +58,23 @@ "ButtonBack": "Voltar", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Alterar Servidor", - "ButtonEdit": "Editar", - "ButtonEditImages": "Editar imagens", "ButtonEditOtherUserPreferences": "Editar este perfil de usuário, imagem e preferências pessoais.", - "ButtonFilter": "Filtrar", "ButtonForgotPassword": "Esqueci a Senha", "ButtonFullscreen": "Tela Cheia", "ButtonGotIt": "Feito", "ButtonGuide": "Guia", - "ButtonHome": "Início", "ButtonLibraryAccess": "Acesso à biblioteca", "ButtonManualLogin": "Login Manual", "ButtonMore": "Mais", "ButtonNetwork": "Rede", "ButtonNextTrack": "Próxima faixa", - "ButtonOff": "Desligar", "ButtonOk": "OK", "ButtonOpen": "Abrir", "ButtonParentalControl": "Controle dos pais", "ButtonPause": "Pausar", - "ButtonPlay": "Reproduzir", "ButtonPreviousTrack": "Faixa anterior", "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guia Rápido", - "ButtonRefresh": "Atualizar", "ButtonRefreshGuideData": "Atualizar Dados do Guia", "ButtonRemove": "Remover", "ButtonRename": "Renomear", @@ -102,7 +95,6 @@ "ButtonStart": "Iniciar", "ButtonStop": "Parar", "ButtonSubmit": "Enviar", - "ButtonSubtitles": "Legendas", "ButtonUninstall": "Desinstalar", "CancelRecording": "Cancelar gravação", "CancelSeries": "Cancelar série", @@ -185,9 +177,7 @@ "EnablePhotosHelp": "Imagens serão detectadas e exibidas junto com outros arquivos de mídia.", "EnableStreamLooping": "Repetir automaticamente transmissões ao vivo", "EnableStreamLoopingHelp": "Ative se as transmissões ao vivo contem poucos segundos de dados e necessitam ser continuamente solicitadas. Ativar esta opção sem necessidade pode causar problemas.", - "EnableThemeSongs": "Músicas-tema", "EnableThemeSongsHelp": "Reproduz músicas-tema em segundo plano ao navegar pela biblioteca.", - "EnableThemeVideos": "Vídeos-tema", "EnableThemeVideosHelp": "Reproduz vídeos-tema em segundo plano ao navegar pela biblioteca.", "Ended": "Finalizada", "EndsAtValue": "Termina às {0}", @@ -242,11 +232,9 @@ "HeaderActiveDevices": "Dispositivos Ativos", "HeaderActiveRecordings": "Gravações Ativas", "HeaderActivity": "Atividade", - "HeaderAddScheduledTaskTrigger": "Adicionar Disparador", "HeaderAddToCollection": "Adicionar à Coletânea", "HeaderAddToPlaylist": "Adicionar à Lista de Reprodução", "HeaderAddUpdateImage": "Adicionar/Atualizar Imagem", - "HeaderAddUser": "Adicionar Usuário", "HeaderAdditionalParts": "Partes Adicionais", "HeaderAlbumArtists": "Artistas do Álbum", "HeaderAlert": "Alerta", @@ -258,12 +246,10 @@ "HeaderAudioBooks": "Livros de Áudio", "HeaderAudioSettings": "Configurações de Áudio", "HeaderBlockItemsWithNoRating": "Bloquear itens com avaliação desconhecida ou sem avaliação:", - "HeaderBooks": "Livros", "HeaderBranding": "Marca", "HeaderCancelRecording": "Cancelar Gravação", "HeaderCancelSeries": "Cancelar Série", "HeaderCastAndCrew": "Elenco e Equipe", - "HeaderCastCrew": "Elenco e Equipe", "HeaderChannelAccess": "Acesso ao Canal", "HeaderChapterImages": "Imagens do Capítulo", "HeaderCodecProfile": "Perfil do Codec", @@ -297,14 +283,12 @@ "HeaderEditImages": "Editar Imagens", "HeaderEnabledFields": "Campos Ativados", "HeaderEnabledFieldsHelp": "Desmarque um campo para bloqueá-lo e evitar que seus dados sejam alterados.", - "HeaderEpisodes": "Episódios", "HeaderError": "Erro", "HeaderExternalIds": "IDs Externos:", "HeaderFeatureAccess": "Acesso aos Recursos", "HeaderFetchImages": "Buscar Imagens:", "HeaderFetcherSettings": "Configurações do Buscador", "HeaderForKids": "Para Crianças", - "HeaderForgotPassword": "Esqueci a Senha", "HeaderFrequentlyPlayed": "Reproduzidos Frequentemente", "HeaderGuideProviders": "Provedores de Dados do Guia da TV", "HeaderHttpHeaders": "Cabeçalhos de Http", @@ -333,7 +317,6 @@ "HeaderLoginFailure": "Falha no Login", "HeaderMedia": "Mídia", "HeaderMediaFolders": "Pastas de Mídia", - "HeaderMediaInfo": "Informações de Mídia", "HeaderMetadataSettings": "Configurações dos Metadados", "HeaderMoreLikeThis": "Mais Disso", "HeaderMusicQuality": "Qualidade da Música", @@ -463,7 +446,6 @@ "LabelAppNameExample": "Exemplo: Sickbeard, Sonarr", "LabelArtists": "Artistas:", "LabelArtistsHelp": "Separe múltiplos artistas usando ponto e vírgula.", - "LabelAudio": "Áudio", "LabelAudioLanguagePreference": "Idioma preferido de áudio:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar automaticamente os metadados da internet:", "LabelBindToLocalNetworkAddress": "Vincular a um endereço de rede local:", @@ -490,7 +472,6 @@ "LabelCustomCertificatePathHelp": "Local do arquivo PKCS #12 contendo certificado e chave privada para ativar o suporte TLS em um domínio personalizado.", "LabelCustomCss": "CSS personalizado:", "LabelCustomCssHelp": "Aplica o seu estilo personalizado para a interface web.", - "LabelCustomDeviceDisplayName": "Nome para exibição:", "LabelCustomDeviceDisplayNameHelp": "Fornece um nome para exibição ou deixe em branco para usar o nome informado pelo dispositivo.", "LabelCustomRating": "Avaliação personalizada:", "LabelDateAdded": "Data de adição:", @@ -507,7 +488,6 @@ "LabelDiscNumber": "Número do disco:", "LabelDisplayLanguage": "Idioma de exibição:", "LabelDisplayLanguageHelp": "A tradução do Jellyfin é um projeto em andamento.", - "LabelDisplayMissingEpisodesWithinSeasons": "Exibir episódios em falta nas temporadas", "LabelDisplayMode": "Modo de exibição:", "LabelDisplayName": "Nome para exibição:", "LabelDisplayOrder": "Ordem de exibição:", @@ -662,7 +642,6 @@ "LabelPostProcessorArguments": "Argumentos de linha de comando do pós-processador:", "LabelPostProcessorArgumentsHelp": "Usar {path} como o local do arquivo de gravação.", "LabelPreferredDisplayLanguage": "Idioma preferido de exibição:", - "LabelPreferredDisplayLanguageHelp": "A tradução do Jellyfin é um projeto em andamento.", "LabelPreferredSubtitleLanguage": "Idioma de legendas preferido:", "LabelProfileAudioCodecs": "Codecs de áudio:", "LabelProfileCodecsHelp": "Separados por vírgula. Deixe em branco para aplicar a todos os codecs.", @@ -719,7 +698,6 @@ "LabelSubtitleDownloaders": "Downloaders de legendas:", "LabelSubtitleFormatHelp": "Exemplo: srt", "LabelSubtitlePlaybackMode": "Modo de legenda:", - "LabelSubtitles": "Legendas", "LabelSupportedMediaTypes": "Tipos de Mídia Suportados:", "LabelTVHomeScreen": "Tela inicial do modo TV:", "LabelTagline": "Slogan:", @@ -731,11 +709,9 @@ "LabelTimeLimitHours": "Limite de tempo (horas):", "LabelTitle": "Título:", "LabelTrackNumber": "Número da faixa:", - "LabelTranscodingAudioCodec": "Codec de áudio:", "LabelTranscodingTempPathHelp": "Define um local personalizado para os arquivos transcodificados enviados aos clientes. Deixe em branco para usar o local padrão 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 de vídeo:", "LabelTriggerType": "Tipo de Disparador:", "LabelTunerIpAddress": "Endereço IP do Sintonizador:", "LabelTunerType": "Tipo de sintonizador:", @@ -838,7 +814,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este plugin, por favor entre em seu servidor local diretamente.", "MessagePluginInstallDisclaimer": "Plugins feitos por membros da comunidade Jellyfin são uma grande forma de melhorar sua experiência Jellyfin com funcionalidades e benefícios adicionais. Antes de instalar, por favor certifique-se de conhecer os efeitos que podem causar no seu Servidor Jellyfin, tais como rastreamentos de biblioteca mais demorados, processamento adicional e diminuição na estabilidade do sistema.", "MessageReenableUser": "Veja abaixo para reativar", - "MessageSettingsSaved": "Configurações salvas.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "As seguintes localizações de mídia serão excluídas de sua biblioteca:", "MessageUnableToConnectToServer": "Não foi possível conectar ao servidor selecionado. Por favor, verifique se está sendo executado e tente novamente.", "MessageUnsetContentHelp": "O conteúdo será exibido como pastas simples. Para melhores resultados, use o gerenciador de metadados para definir os tipos de conteúdo das sub-pastas.", @@ -1130,14 +1105,11 @@ "SystemDlnaProfilesHelp": "Os perfis do sistema estão apenas em modo leitura. As alterações feitas no perfil do sistema serão salvas em um novo perfil personalizado.", "TabAccess": "Acesso", "TabAdvanced": "Avançado", - "TabAlbumArtists": "Artistas do Álbum", "TabCatalog": "Catálogo", "TabDashboard": "Painel", "TabDirectPlay": "Reprodução Direta", - "TabEpisodes": "Episódios", "TabLatest": "Recentes", "TabMusic": "Música", - "TabMusicVideos": "Videoclipes", "TabMyPlugins": "Meus Plugins", "TabNetworks": "Emissoras", "TabNfoSettings": "Configurações de NFO", @@ -1147,7 +1119,6 @@ "TabProfile": "Perfil", "TabProfiles": "Perfis", "TabResponses": "Respostas", - "TabResumeSettings": "Retomar", "TabScheduledTasks": "Tarefas Agendadas", "TabServer": "Servidor", "TabSettings": "Configurações", @@ -1253,7 +1224,6 @@ "HeaderFavoriteArtists": "Artistas favoritos", "HeaderFavoriteSongs": "Músicas favoritas", "HeaderFavoriteVideos": "Videos favoritos", - "HeaderHome": "Inicio", "LabelAuthProvider": "Provedor de autenticação:", "LabelServerName": "Nome do servidor:", "LabelTranscodePath": "Pasta de transcodificação:", @@ -1267,7 +1237,6 @@ "LabelWeb": "Web:", "OptionBluray": "Blu-ray", "LabelProfileContainer": "Formato:", - "LabelTranscodingContainer": "Formato:", "LabelXDlnaCap": "X-DLNA cap:", "LabelXDlnaDoc": "X-DLNA doc:", "MediaInfoStreamTypeAudio": "Áudio", @@ -1280,7 +1249,6 @@ "MusicAlbum": "Álbum de Música", "MusicArtist": "Artista da Música", "MusicVideo": "Videoclipe", - "OptionAutomatic": "Automático", "OptionBanner": "Banner", "OptionBlockTrailers": "Trailers", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", @@ -1310,12 +1278,10 @@ "TV": "TV", "TabCodecs": "Codecs", "TabContainers": "Formatos", - "TabInfo": "Informações", "TabLogs": "Logs", "TabNetworking": "Rede", "TabPlugins": "Plugins", "TabStreaming": "Streaming", - "TabTrailers": "Trailers", "Tags": "Marcadores", "TagsValue": "Marcadores: {0}", "Trailers": "Trailers", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 02fa88aaf6..d421efa30d 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -16,12 +16,9 @@ "ButtonBack": "Voltar", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Alterar Servidor", - "ButtonEdit": "Editar", "ButtonEditOtherUserPreferences": "Editar este perfil de utilizador, imagem e preferências pessoais.", - "ButtonFilter": "Filtro", "ButtonForgotPassword": "Esqueci-me da palavra-passe", "ButtonFullscreen": "Ecrã inteiro", - "ButtonHome": "Início", "ButtonInfo": "Informação", "ButtonManualLogin": "Início de Sessão Manual", "ButtonMore": "Mais", @@ -29,11 +26,9 @@ "ButtonNextTrack": "Faixa seguinte", "ButtonOpen": "Abrir", "ButtonPause": "Pausar", - "ButtonPlay": "Reproduzir", "ButtonPreviousTrack": "Faixa anterior", "ButtonProfile": "Perfil", "ButtonQuickStartGuide": "Guia de Início Rápido", - "ButtonRefresh": "Atualizar", "ButtonRefreshGuideData": "Atualizar Programação de TV", "ButtonRemove": "Remover", "ButtonResetEasyPassword": "Redefinir código PIN", @@ -52,7 +47,6 @@ "ButtonStart": "Iniciar", "ButtonStop": "Parar", "ButtonSubmit": "Enviar", - "ButtonSubtitles": "Legendas", "ButtonUninstall": "Desinstalar", "ChannelAccessHelp": "Selecione os canais para partilhar com este utilizador. Os administradores poderão editar todos os canais utilizando 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.", @@ -97,10 +91,8 @@ "HeaderActiveDevices": "Dispositivos Ativos", "HeaderActiveRecordings": "Gravações Ativas", "HeaderActivity": "Atividade", - "HeaderAddScheduledTaskTrigger": "Adicionar Tarefa Agendada", "HeaderAddToCollection": "Adicionar à Coleção", "HeaderAddUpdateImage": "Adicionar/Atualizar Imagem", - "HeaderAddUser": "Adicionar Utilizador", "HeaderAdditionalParts": "Partes Adicionais", "HeaderApiKey": "Chave da API", "HeaderApiKeys": "Chaves da API", @@ -109,7 +101,6 @@ "HeaderAudioSettings": "Configurações de Áudio", "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", "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.", @@ -135,7 +126,6 @@ "HeaderError": "Erro", "HeaderFeatureAccess": "Acesso a Características", "HeaderFetchImages": "Procurar Imagens:", - "HeaderForgotPassword": "Esqueci-me da palavra-passe", "HeaderFrequentlyPlayed": "Reproduzido Frequentemente", "HeaderGuideProviders": "Provedores de Programação de TV", "HeaderHttpHeaders": "Cabeçalhos HTTP", @@ -158,7 +148,6 @@ "HeaderLoginFailure": "Falha no Login", "HeaderMedia": "Multimédia", "HeaderMediaFolders": "Pastas Multimédia", - "HeaderMediaInfo": "Informações Multimédia", "HeaderMetadataSettings": "Configurações de Metadados", "HeaderMusicVideos": "Videoclips", "HeaderMyMedia": "O Meu Conteúdo", @@ -264,7 +253,6 @@ "LabelCustomCertificatePathHelp": "Localização do ficheiro PKCS #12 que contém um certificado e um chave privada, que permite ativar o suporte a ligações TLS em domínios privados.", "LabelCustomCss": "CSS personalizado:", "LabelCustomCssHelp": "Aplica um ficheiro de estilos customizado à interface web.", - "LabelCustomDeviceDisplayName": "Nome a ser mostrado:", "LabelCustomDeviceDisplayNameHelp": "Forneça um nome a ser mostrado, ou deixe em branco para utilizar o nome reportado pelo dispositivo.", "LabelCustomRating": "Classificação personalizada:", "LabelDateAdded": "Adicionado a:", @@ -275,7 +263,6 @@ "LabelDefaultUserHelp": "Determina que biblioteca será apresentada aos dispositivos ligados. Pode ser redefinido para cada dispositivo utilizando perfis.", "LabelDeviceDescription": "Descrição do dispositivo", "LabelDidlMode": "Modo DIDL:", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar episódios em falta numa série", "LabelDisplayName": "Nome para apresentação:", "LabelDisplayOrder": "Ordem de apresentação:", "LabelDisplaySpecialsWithinSeasons": "Mostrar epsódios especiais nas temporadas em que estrearam", @@ -390,7 +377,6 @@ "LabelPlaceOfBirth": "Local de nascimento:", "LabelPlayDefaultAudioTrack": "Reproduzir a faixa de áudio padrão independentemente do idioma", "LabelPreferredDisplayLanguage": "Idioma de visualização preferido:", - "LabelPreferredDisplayLanguageHelp": "A tradução do Jellyfin é um projeto contínuo.", "LabelProfileAudioCodecs": "Codecs do áudio:", "LabelProfileCodecsHelp": "Separados por vírgula. Pode ser deixado em branco para usar com todos os codecs.", "LabelProfileContainer": "Contentor:", @@ -434,12 +420,9 @@ "LabelTagline": "Slogan:", "LabelTime": "Tempo:", "LabelTimeLimitHours": "Limite de tempo (horas):", - "LabelTranscodingAudioCodec": "Codec de áudio:", - "LabelTranscodingContainer": "Contentor:", "LabelTranscodingTempPathHelp": "Indique uma localização personalizada para os ficheiros de transcodificação em utilização, ou deixe em branco para utilizar o caminho por defeito.", "LabelTranscodingThreadCount": "Número de threads de transcodificação:", "LabelTranscodingThreadCountHelp": "Indique o número máximo de threads a ser utilizado para transcodificação. Reduzir o número de threads diminuirá a utilização do 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:", @@ -509,7 +492,6 @@ "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 em Direto", @@ -636,15 +618,12 @@ "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", "TabCatalog": "Catálogo", "TabContainers": "Contentores", "TabDashboard": "Painel Principal", "TabDirectPlay": "Reprodução Direta", - "TabEpisodes": "Episódios", "TabLatest": "Mais recente", "TabMusic": "Música", - "TabMusicVideos": "Videoclips", "TabMyPlugins": "As Minhas Extensões", "TabNetworks": "Redes", "TabNfoSettings": "Definições de Ficheiros NFO", @@ -752,7 +731,6 @@ "ButtonLibraryAccess": "Acesso à biblioteca", "ButtonGuide": "Programação", "ButtonGotIt": "Entendido", - "ButtonEditImages": "Editar imagens", "ButtonAudioTracks": "Faixas de Áudio", "Browse": "Procurar", "BoxRear": "Caixa (verso)", @@ -766,12 +744,10 @@ "HeaderKeepRecording": "Manter Gravação", "HeaderKeepSeries": "Manter Série", "HeaderImageOptions": "Opções de Imagem", - "HeaderHome": "Início", "HeaderForKids": "Para Crianças", "HeaderFavoriteVideos": "Vídeos Favoritos", "HeaderFavoriteMovies": "Filmes Favoritos", "HeaderExternalIds": "IDs Externos:", - "HeaderEpisodes": "Episódios", "HeaderEditImages": "Editar Imagens", "HeaderDownloadSync": "Transferência & Sincronização", "HeaderDetectMyDevices": "Detetar os Meus Dispositivos", @@ -785,7 +761,6 @@ "HeaderChapterImages": "Imagens do Capítulo", "HeaderCancelSeries": "Cancelar Gravação de Série", "HeaderCancelRecording": "Cancelar Gravação", - "HeaderBooks": "Livros", "HeaderAudioBooks": "Livros de Áudio", "HeaderAllowMediaDeletionFrom": "Permitir remoção de multimédia a partir de", "HeaderAlert": "Alerta", @@ -877,7 +852,6 @@ "LabelBindToLocalNetworkAddress": "Endereço local para colocar o servidor à escuta:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar metadados automaticamente a partir da Internet:", "LabelAuthProvider": "Provedor de autenticação:", - "LabelAudio": "Áudio", "LabelAllowedRemoteAddressesMode": "Tipo de filtro de IP remoto:", "LabelAllowedRemoteAddresses": "Filtro de IP remoto:", "LabelAllowHWTranscoding": "Permitir transcodificação por hardware", @@ -992,7 +966,6 @@ "News": "Notícias", "Programs": "Programas", "Directors": "Realização", - "ButtonOff": "Desligado", "ButtonAddImage": "Adicionar Imagem", "LabelOriginalTitle": "Título original:", "LabelPostProcessorArgumentsHelp": "Utilizar o caminho {path} como caminho para o ficheiro de gravação.", @@ -1000,8 +973,6 @@ "LabelBaseUrl": "URL Base:", "LabelNewName": "Novo nome:", "HeaderUploadImage": "Enviar Imagem", - "EnableThemeSongs": "Músicas do tema", - "EnableThemeVideos": "Vídeos do tema", "HeaderMoreLikeThis": "Mais Como Este", "HeaderRecordingPostProcessing": "Pós-Processamento de Gravações", "Descending": "Descendente", @@ -1190,7 +1161,6 @@ "Metadata": "Metadados", "MessageYouHaveVersionInstalled": "Neste momento está instalada a versão {0}.", "MessageUnsetContentHelp": "O conteúdo será mostrado como pastas simples. Para melhores resultados, utilize o gestor de metadados para definir o tipo de conteúdo das sub-pastas.", - "MessageSettingsSaved": "Definições guardadas.", "MessagePleaseWait": "Por favor, aguarde. Esta operação poderá demorar alguns instantes.", "MessagePlayAccessRestricted": "A reprodução deste conteúdo encontra-se, de momento, restrita. Por favor, contacte o administrador do sistema para mais informação.", "MessageNoServersAvailable": "Não foram encontrados servidores através da pesquisa automática.", @@ -1227,7 +1197,6 @@ "LabelTextColor": "Côr do texto:", "LabelTextBackgroundColor": "Côr de fundo do texto:", "LabelTag": "Etiqueta:", - "LabelSubtitles": "Legendas", "LabelSportsCategories": "Categorias de Desporto:", "FetchingData": "A transferir informação adicional", "List": "lista", @@ -1271,10 +1240,7 @@ "ThemeSongs": "Músicas de tema", "TagsValue": "Etiquetas: {0}", "Tags": "Etiquetas", - "TabTrailers": "Trailers", - "TabResumeSettings": "Retomar", "TabLogs": "Logs", - "TabInfo": "Info", "TabCodecs": "Codecs", "Suggestions": "Sugestões", "SortName": "Ordenar nome", diff --git a/src/strings/pt.json b/src/strings/pt.json index 95842bb22a..733044c2bf 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -48,15 +48,12 @@ "TabNfoSettings": "Definições de Ficheiros NFO", "TabNetworks": "Redes", "TabMyPlugins": "As Minhas Extensões", - "TabMusicVideos": "Videoclips", "TabMusic": "Música", "TabLatest": "Mais recente", - "TabEpisodes": "Episódios", "TabDirectPlay": "Reprodução Directa", "TabDashboard": "Painel Principal", "TabContainers": "Contentores", "TabCatalog": "Catálogo", - "TabAlbumArtists": "Artistas do Álbum", "TabAdvanced": "Avançado", "TabAccess": "Acesso", "TV": "TV", @@ -204,7 +201,6 @@ "LabelProfileCodecs": "Codecs:", "LabelProfileAudioCodecs": "Codecs do áudio:", "LabelPreferredSubtitleLanguage": "Idioma de legendas preferido:", - "LabelPreferredDisplayLanguageHelp": "A tradução do Jellyfin é um projeto contínuo.", "LabelPreferredDisplayLanguage": "Idioma de visualização preferido:", "LabelPostProcessorArgumentsHelp": "Utilizar {path} como caminho para o ficheiro de gravação.", "LabelPostProcessorArguments": "Argumentos de linha de comandos para a aplicação de pós-processamento:", @@ -356,7 +352,6 @@ "LabelDisplayOrder": "Ordem de apresentação:", "LabelDisplayName": "Nome para apresentação:", "LabelDisplayMode": "Modo de apresentação:", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar episódios em falta dentro das temporadas", "LabelDisplayLanguageHelp": "A tradução do Jellyfin é um projeto em desenvolvimento contínuo.", "LabelDisplayLanguage": "Idioma:", "LabelDiscNumber": "Número do disco:", @@ -385,7 +380,6 @@ "LabelDateAdded": "Adicionado a:", "LabelCustomRating": "Classificação personalizada:", "LabelCustomDeviceDisplayNameHelp": "Forneça um nome a ser mostrado, ou deixe em branco para utilizar o nome reportado pelo dispositivo.", - "LabelCustomDeviceDisplayName": "Nome a ser mostrado:", "LabelCustomCssHelp": "Aplicar um ficheiro de estilos personalizado à interface web.", "LabelCustomCss": "CSS personalizado:", "LabelCustomCertificatePathHelp": "Localização do ficheiro PKCS #12 que contém um certificado e um chave privada que permitem activar o suporte a ligações TLS em domínios privados.", @@ -413,7 +407,6 @@ "LabelAudioCodec": "Codec de áudio:", "LabelAudioChannels": "Canais de áudio:", "LabelAudioBitrate": "Taxa de bits de áudio:", - "LabelAudio": "Áudio", "LabelArtistsHelp": "Separe múltiplos com ;", "LabelArtists": "Artistas:", "LabelAppNameExample": "Exemplo: Sickbeard, NzbDrone", @@ -542,7 +535,6 @@ "HeaderMusicQuality": "Qualidade da Música", "HeaderMoreLikeThis": "Mais Como Este", "HeaderMetadataSettings": "Configurações de Metadados", - "HeaderMediaInfo": "Informações Multimédia", "HeaderMediaFolders": "Pastas Multimédia", "HeaderMedia": "Multimédia", "HeaderLiveTvTunerSetup": "Configurar Sintonizador de TV", @@ -567,12 +559,10 @@ "HeaderIdentificationCriteriaHelp": "Introduza, pelo menos, um critério de identificação.", "HeaderIdentification": "Identificação", "HeaderHttpHeaders": "Cabeçalhos HTTP", - "HeaderHome": "Início", "HeaderGuideProviders": "Provedores de Programação de TV", "HeaderDeleteTaskTrigger": "Excluir Tarefa Agendada", "HeaderBranding": "Marca", "HeaderFrequentlyPlayed": "Reproduzido Frequentemente", - "HeaderForgotPassword": "Esqueci-me da palavra-passe", "HeaderForKids": "Para Crianças", "HeaderFetchImages": "Procurar Imagens:", "OptionDownloadThumbImage": "Miniatura", @@ -601,7 +591,6 @@ "OptionBlockLiveTvChannels": "Canais de TV em Directo", "OptionBlockChannelContent": "Conteúdo do Canal de Internet", "OptionBlockBooks": "Livros", - "OptionAutomatic": "Automático", "OptionAscending": "Ascendente", "OptionArtist": "Artista", "OptionAllowVideoPlaybackTranscoding": "Permitir reprodução de vídeo que necessite de transcodificação", @@ -718,12 +707,9 @@ "LabelTunerType": "Tipo do sintonizador:", "LabelTunerIpAddress": "Endereço IP do Sintonizador:", "LabelTriggerType": "Tipo do Accionador:", - "LabelTranscodingVideoCodec": "Codec do vídeo:", "LabelTranscodingThreadCountHelp": "Indique o número máximo de processors a utilizadar para transcodificação. Reduzir o número de processos diminuirá a utilização do CPU, mas pode não converter suficientemente rápido para uma experiência de reprodução suave.", "LabelTranscodingThreadCount": "Número de processos de transcodificação:", "LabelTranscodingTempPathHelp": "Indique uma localização personalizada para os ficheiros de transcodificação em utilização, ou deixe em branco para utilizar o caminho por omissão.", - "LabelTranscodingContainer": "Contentor:", - "LabelTranscodingAudioCodec": "Codec de áudio:", "LabelTimeLimitHours": "Limite de tempo (horas):", "LabelTime": "Tempo:", "LabelTextSize": "Tamanho do Texto:", @@ -769,7 +755,6 @@ "HeaderFavoriteBooks": "Livros Favoritos", "HeaderExternalIds": "IDs Externos:", "HeaderError": "Erro", - "HeaderEpisodes": "Episódios", "HeaderEnabledFieldsHelp": "Desmarque um campo para bloqueá-lo e evitar que os seus dados sejam alterados.", "HeaderEnabledFields": "Campos Activados", "HeaderEditImages": "Editar Imagens", @@ -810,9 +795,7 @@ "Episodes": "Episódios", "EndsAtValue": "Termina às {0}", "EnableThemeVideosHelp": "Reproduzir vídeos do tema em plano de fundo durante a navegação pela Biblioteca.", - "EnableThemeVideos": "Vídeos do tema", "EnableThemeSongsHelp": "Reproduzir músicas do tema em plano de fundo durante a navegação pela Biblioteca.", - "EnableThemeSongs": "Músicas do tema", "EnableStreamLoopingHelp": "Active esta opção no caso de a transmissão em directo apenas conter alguns segundos de dados e necessitar de ser continuamente requisitada. Activar esta opção quando não é necessário pode causar problemas.", "EnablePhotosHelp": "Imagens serão detectadas e mostradas em conjunto com outros ficheiros multimédia.", "EnablePhotos": "Mostrar fotografias", @@ -900,7 +883,6 @@ "ButtonWebsite": "Website", "ButtonUninstall": "Desinstalar", "ButtonTrailer": "Trailer", - "ButtonSubtitles": "Legendas", "ButtonSubmit": "Enviar", "ButtonStop": "Parar", "ButtonStart": "Iniciar", @@ -921,29 +903,22 @@ "ButtonRename": "Alterar o nome", "ButtonRemove": "Remover", "ButtonRefreshGuideData": "Actualizar Programação de TV", - "ButtonRefresh": "Actualizar", "ButtonQuickStartGuide": "Guia de Início Rápido", "ButtonProfile": "Perfil", "ButtonPreviousTrack": "Faixa anterior", - "ButtonPlay": "Reproduzir", "ButtonPause": "Pausar", "ButtonParentalControl": "Controlo parental", "ButtonOpen": "Abrir", "ButtonOk": "OK", - "ButtonOff": "Desligado", "ButtonNextTrack": "Faixa seguinte", "ButtonNetwork": "Rede", "ButtonMore": "Mais", "ButtonManualLogin": "Início de Sessão Manual", "ButtonLibraryAccess": "Acesso à biblioteca", "ButtonInfo": "Informação", - "ButtonHome": "Início", "ButtonFullscreen": "Ecrã inteiro", "ButtonForgotPassword": "Esqueci-me da palavra-passe", - "ButtonFilter": "Filtro", "ButtonEditOtherUserPreferences": "Editar este perfil de utilizador, imagem e preferências pessoais.", - "ButtonEditImages": "Editar imagens", - "ButtonEdit": "Editar", "Auto": "Automático", "AlwaysPlaySubtitles": "Mostrar sempre legendas", "AllowMediaConversionHelp": "Permitir ou negar acesso à funcionalidade de conversão multimédia.", @@ -1063,10 +1038,8 @@ "HeaderCodecProfile": "Perfil do Codec", "HeaderChapterImages": "Imagens do Capítulo", "HeaderChannelAccess": "Acesso ao Canal", - "HeaderCastCrew": "Elenco e Equipa", "HeaderCancelSeries": "Cancelar Gravação de Série", "HeaderCancelRecording": "Cancelar Gravação", - "HeaderBooks": "Livros", "HeaderBlockItemsWithNoRating": "Bloquear conteúdo sem informação de classificação etária ou com informação desconhecida:", "HeaderAudioSettings": "Configurações de Áudio", "HeaderAudioBooks": "Livros de Áudio", @@ -1078,11 +1051,9 @@ "HeaderAlert": "Alerta", "HeaderAlbumArtists": "Artistas do Álbum", "HeaderAdditionalParts": "Partes Adicionais", - "HeaderAddUser": "Adicionar Utilizador", "HeaderAddUpdateImage": "Adicionar/Actualizar Imagem", "HeaderAddToPlaylist": "Adicionar à Lista de Reprodução", "HeaderAddToCollection": "Adicionar à Colecção", - "HeaderAddScheduledTaskTrigger": "Adicionar Tarefa Agendada", "HeaderActivity": "Actividade", "HeaderActiveRecordings": "Gravações Activas", "HeaderActiveDevices": "Dispositivos Activos", @@ -1160,7 +1131,6 @@ "Metadata": "Metadados", "MessageYouHaveVersionInstalled": "Você possui a versão {0} atualmente instalada.", "MessageUnsetContentHelp": "O conteúdo será exibido como pastas simples. Para obter melhores resultados, use o gerenciador de metadados para definir os tipos de conteúdo das subpastas.", - "MessageSettingsSaved": "Configurações salvas.", "MessagePleaseWait": "Por favor, espere. Isso pode levar um minuto.", "MessagePlayAccessRestricted": "A reprodução deste conteúdo está atualmente restrita. Entre em contato com o administrador do servidor para obter mais informações.", "MessageNoServersAvailable": "Nenhum servidor foi encontrado usando a descoberta automática de servidores.", @@ -1211,7 +1181,6 @@ "LabelTextBackgroundColor": "Cor do plano de fundo do texto:", "LabelTag": "Tag:", "LabelTVHomeScreen": "Tela inicial do modo TV:", - "LabelSubtitles": "Legendas:", "LabelSubtitleDownloaders": "Downloaders de legendas:", "LabelStreamType": "Tipo de fluxo:", "LabelSpecialSeasonsDisplayName": "Nome de exibição da temporada especial:", diff --git a/src/strings/ro.json b/src/strings/ro.json index 6eeeeba01f..962862324d 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -3,12 +3,8 @@ "ButtonAddScheduledTaskTrigger": "Adaugă declanșator", "ButtonAddUser": "Adaugă Utilizator", "ButtonCancel": "Anulează", - "ButtonEdit": "Modifică", - "ButtonFilter": "Filtru", "ButtonManualLogin": "Conectare manuală", - "ButtonPlay": "Redă", "ButtonQuickStartGuide": "Ghid rapid de Start", - "ButtonRefresh": "Reîmprospătează", "ButtonRefreshGuideData": "Reîmprospătează Ghidul", "ButtonRemove": "Elimină", "ButtonResetPassword": "Resetează parola", @@ -29,8 +25,6 @@ "FolderTypeTvShows": "Seriale TV", "Friday": "Vineri", "HeaderActiveRecordings": "Înregistrări active", - "HeaderAddScheduledTaskTrigger": "Adaugă declanșator", - "HeaderAddUser": "Adaugă Utilizator", "HeaderContinueWatching": "Vizionează în continuare", "HeaderDeviceAccess": "Accesul Dispozitivelor", "HeaderEasyPinCode": "Cod Pin Ușor", @@ -61,7 +55,6 @@ "LabelCurrentPassword": "Parola curentă:", "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 sezon", "LabelFinish": "Termină", "LabelLanguage": "Limba:", "LabelMaxBackdropsPerItem": "Numărul maxim de fundaluri pentru fiecare element:", @@ -111,7 +104,6 @@ "OptionAllowRemoteSharedDevicesHelp": "Dispozitivele DLNA sunt considerate partajate până ce un utilizator începe să le controleze.", "OptionAllowUserToManageServer": "Permite acestui utilizator să administreze serverul", "OptionAscending": "Ascendent", - "OptionAutomatic": "Auto", "OptionCommunityRating": "Rating Comunitate", "OptionContinuing": "Continuă", "OptionCriticRating": "Rating Critic", @@ -160,11 +152,8 @@ "Sunday": "Duminică", "TabAccess": "Acces", "TabAdvanced": "Avansat", - "TabAlbumArtists": "Albume Artiști", - "TabEpisodes": "Episoade", "TabLatest": "Cele mai recente", "TabMusic": "Muzică", - "TabMusicVideos": "Videoclipuri muzicale", "TabMyPlugins": "Plugin-urile mele", "TabNetworks": "Rețele TV", "TabNotifications": "Notificări", @@ -172,7 +161,6 @@ "TabProfile": "Profil", "TabProfiles": "Profile", "TabSettings": "Setări", - "TabTrailers": "Trailere", "TabUpcoming": "Urmează să apară", "TellUsAboutYourself": "Spune-ne despre tine", "ThisWizardWillGuideYou": "Acest asistent vă va ghida prin procesul de configurare. Pentru a începe, vă rugăm să selectați limba preferată.", @@ -271,19 +259,16 @@ "ButtonAudioTracks": "Cale Audio", "ButtonBack": "Înapoi", "ButtonChangeServer": "Schimbă Server", - "ButtonEditImages": "Modifică imaginile", "ButtonEditOtherUserPreferences": "Modifică profilul, imaginea și preferințele personale ale acestui utilizator.", "ButtonForgotPassword": "Parolă uitată", "ButtonFullscreen": "Umple ecranul", "ButtonGotIt": "Am înțeles", "ButtonGuide": "Ghid", - "ButtonHome": "Acasă", "ButtonInfo": "Info", "ButtonLibraryAccess": "Acces Librarie", "ButtonMore": "Mai mult", "ButtonNetwork": "Rețea", "ButtonNextTrack": "Următoarea cale", - "ButtonOff": "Oprit", "ButtonOk": "Ok", "ButtonOpen": "Deschide", "ButtonParentalControl": "Control parental", @@ -307,7 +292,6 @@ "ButtonSend": "Trimite", "ButtonShutdown": "Oprește", "ButtonStart": "Start", - "ButtonSubtitles": "Subtitrări", "ButtonTrailer": "Trailer", "ButtonUninstall": "Dezinstalează", "ButtonWebsite": "Website", @@ -357,7 +341,6 @@ "HDPrograms": "Programe HD", "HeaderApiKeys": "Chei API", "HeaderApp": "Aplicație", - "HeaderCastCrew": "Distribuție și echipă", "HeaderConfirmPluginInstallation": "Confirmați instalarea plugin-ului", "HeaderDeleteItems": "Ștergeți Elemente", "HeaderDeleteProvider": "Ștergeți Furnizorul", @@ -368,7 +351,6 @@ "HeaderEditImages": "Editează imagini", "HeaderEnabledFields": "Câmpuri activate", "HeaderEnabledFieldsHelp": "Debifează un câmp pentru a-l bloca și pentru a împiedica schimbarea datelor sale.", - "HeaderEpisodes": "Episoade", "HeaderError": "Eroare", "HeaderExternalIds": "ID-uri Externe:", "HeaderFavoriteBooks": "Cărți Favorite", @@ -381,9 +363,7 @@ "HeaderFavoriteVideos": "Video Favorite", "HeaderFetcherSettings": "Setări Fetcher", "HeaderForKids": "Pentru Copii", - "HeaderForgotPassword": "Am uitat parola", "HeaderGuideProviders": "Furnizori de date ghid TV", - "HeaderHome": "Acasă", "HeaderHttpHeaders": "Anteturi HTTP", "HeaderIdentification": "Identificare", "HeaderIdentificationCriteriaHelp": "Introduceți cel puțin un criteriu de identificare.", @@ -399,7 +379,6 @@ "HeaderLoginFailure": "Autentificare eșuată", "HeaderMedia": "Media", "HeaderMediaFolders": "Dosare Media", - "HeaderMediaInfo": "Informații Media", "HeaderMetadataSettings": "Setări metadate", "HeaderMoreLikeThis": "Mai multe ca acesta", "HeaderMusicQuality": "Calitatea muzicii", @@ -462,7 +441,6 @@ "HeaderAppearsOn": "Apare în", "HeaderAudioBooks": "Carți Audio", "HeaderAudioSettings": "Setari audio", - "HeaderBooks": "Cărți", "HeaderChannelAccess": "Accesare canal", "HeaderChapterImages": "Imagini Capitol", "HeaderCodecProfile": "Profilul Codec-ului", @@ -536,9 +514,7 @@ "EnableNextVideoInfoOverlayHelp": "La sfârșitul unui video, afișați informații despre următorul video care urmează în lista de redare curentă.", "EnablePhotosHelp": "Imaginile vor fi detectate și afișate alături de alte fișiere media.", "EnableStreamLooping": "Fluxuri live cu buclă automată", - "EnableThemeSongs": "Melodii tematice", "EnableThemeSongsHelp": "Redați melodii tematice în fundal în timp ce navigați în bibliotecă.", - "EnableThemeVideos": "Videoclipuri tematice", "EnableThemeVideosHelp": "Redați videoclipuri tematice în fundal în timp ce navigați în bibliotecă.", "ErrorAddingTunerDevice": "A apărut o eroare la adăugarea tuner-ului. Vă rugăm să vă asigurați că este accesibil și încercați din nou.", "ErrorDeletingItem": "A apărut o eroare la ștergerea elementului din server. Vă rugăm să verificați dacă Jellyfin are acces de scriere la folderul media și încercați din nou.", @@ -571,8 +547,6 @@ "LabelTranscodingFramerate": "Rata de cadru a transcodării:", "LabelTranscodes": "Transcodează:", "LabelTranscodePath": "Cale transcodare:", - "LabelTranscodingContainer": "Container :", - "LabelTranscodingAudioCodec": "Codec audio:", "LabelTrackNumber": "Număr melodie:", "LabelTitle": "Titlu:", "LabelTime": "Ora:", @@ -584,7 +558,6 @@ "LabelTag": "Etichetă:", "LabelTVHomeScreen": "Ecran de pornire în modul TV:", "LabelSupportedMediaTypes": "Tipuri media suportate:", - "LabelSubtitles": "Subtitrări", "LabelSubtitlePlaybackMode": "Mod subtitrare:", "LabelSubtitleFormatHelp": "Exemplu: srt", "LabelSubtitleDownloaders": "Descărcare subtitrări:", @@ -639,7 +612,6 @@ "LabelProfileCodecs": "Codecuri:", "LabelProfileAudioCodecs": "Codecuri audio:", "LabelPreferredSubtitleLanguage": "Limba subtitrare preferată:", - "LabelPreferredDisplayLanguageHelp": "Traducerea Jellyfin este un proiect în derulare.", "LabelPreferredDisplayLanguage": "Limba de afișare preferată:", "LabelPostProcessorArgumentsHelp": "Utilizați {path} ca și cale către fișierul de înregistrare.", "LabelPostProcessorArguments": "Argumentele liniei de comandă post-procesare:", @@ -802,7 +774,6 @@ "LabelDateAdded": "Data adăugării:", "LabelCustomRating": "Evaluare personalizată:", "LabelCustomDeviceDisplayNameHelp": "Furnizați un nume de afișare personalizat sau lăsați gol pentru a utiliza numele raportat de dispozitiv.", - "LabelCustomDeviceDisplayName": "Numele afisat:", "LabelCustomCssHelp": "Aplicați propriul stil personalizat pe interfața web.", "LabelCustomCss": "CSS personalizat:", "LabelCriticRating": "Evaluare critic:", @@ -829,7 +800,6 @@ "LabelAudioChannels": "Canale audio:", "LabelAudioBitrate": "Rata de biți audio:", "LabelAudioBitDepth": "Adâncimea bitului audio:", - "LabelAudio": "Audio", "LabelAppNameExample": "Exemplu: Sickbeard, Sonarr", "LabelAppName": "Nume app", "LabelAllowedRemoteAddressesMode": "Modul de filtrare a adresei IP de la distanță:", @@ -964,7 +934,6 @@ "MessageUnsetContentHelp": "Conținutul va fi afișat ca foldere simple. Pentru cele mai bune rezultate, utilizați managerul de metadate pentru a seta tipurile de conținut ale sub-foldererelor.", "MessageUnableToConnectToServer": "Nu putem să ne conectăm la serverul selectat în acest moment. Vă rugăm să vă asigurați că funcționează și încercați din nou.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Următoarele locații media vor fi eliminate din biblioteca dvs.:", - "MessageSettingsSaved": "Setări salvate.", "MessageReenableUser": "Consultați mai jos pentru a reactiva", "MessagePluginInstallDisclaimer": "Pluginurile create de membrii comunității sunt o modalitate excelentă de a vă îmbunătăți experiența cu funcții și beneficii suplimentare. Înainte de instalare, vă rugăm să fiți conștienți de efectele pe care le pot avea asupra serverului dvs., cum ar fi scanările de bibliotecă mai îndelungate, procesare suplimentară în fundal și scăderea stabilității sistemului.", "MessagePluginConfigurationRequiresLocalAccess": "Pentru a configura acest plugin, vă rugăm să vă conectați direct la serverul dvs. local.", @@ -1084,7 +1053,6 @@ "LabelType": "Tip:", "LabelTunerType": "Tip tuner:", "LabelTunerIpAddress": "Adresă IP Tuner:", - "LabelTranscodingVideoCodec": "Codec video:", "LabelTranscodingThreadCountHelp": "Selectați numărul maxim de fire de execuție de utilizat la transcodare. Reducerea numărului de fire de execuție va scădea utilizarea procesorului, dar este posibil să nu se convertească suficient de repede pentru o experiență de redare lină.", "Suggestions": "Recomandări", "Subtitles": "Subtitrări", @@ -1337,14 +1305,12 @@ "TabStreaming": "Transmitere", "TabServer": "Server", "TabScheduledTasks": "Task-uri programate", - "TabResumeSettings": "Continuă", "TabResponses": "Răspunsuri", "TabPlugins": "Pluginuri", "TabParentalControl": "Control Parental", "TabNfoSettings": "Setări NFO", "TabNetworking": "Rețele", "TabLogs": "Jurnal", - "TabInfo": "Info", "TabDirectPlay": "Redare directă", "TabDashboard": "Tablou de bord", "TabContainers": "Containere", diff --git a/src/strings/ru.json b/src/strings/ru.json index 9989a4c47e..74c054c99b 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -23,7 +23,7 @@ "AllowMediaConversionHelp": "Предоставить или запретить доступ к компоненте преобразования медиаданных.", "AllowOnTheFlySubtitleExtraction": "Разрешить динамическое извлечение субтитров", "AllowOnTheFlySubtitleExtractionHelp": "Встроенные субтитры могут быть извлечены из видео и доставлены клиентам в виде обычного текста, в целях предотвращения перекодировки видео. На некоторых системах это может занять продолжительное время и вызвать задержки воспроизведения видео в процессе извлечения. Отключите этот параметр, чтобы встроенные субтитры записывались при перекодировании видео, если они изначально не поддерживаются клиентским устройством.", - "AllowRemoteAccess": "Разрешить удалённый доступ к данному серверу Jellyfin Server.", + "AllowRemoteAccess": "Разрешить удалённый доступ к данному серверу.", "AllowRemoteAccessHelp": "Если флажок снят, то все удалённые подключения будут заблокированы.", "AllowedRemoteAddressesHelp": "Список разделённых запятыми IP-адресов или записей IP/netmask сетей, которым разрешено удалённое соединение. Если оставить это поле пустым, то будут разрешены все удаленные адреса.", "AlwaysPlaySubtitles": "Воспроизводить всегда", @@ -62,31 +62,24 @@ "ButtonBack": "Назад", "ButtonCancel": "Отменить", "ButtonChangeServer": "Сменить сервер", - "ButtonEdit": "Править", - "ButtonEditImages": "Править изображения", "ButtonEditOtherUserPreferences": "Править профиль, изображение и персональные настройки этого пользователя.", - "ButtonFilter": "Фильтр", "ButtonForgotPassword": "Напомнить пароль", "ButtonFullscreen": "Полный экран", "ButtonGotIt": "Понятно", "ButtonGuide": "Телегид", - "ButtonHome": "Главное", "ButtonInfo": "Инфо", "ButtonLibraryAccess": "Доступ к медиатеке", "ButtonManualLogin": "Войти вручную", "ButtonMore": "Ещё", "ButtonNetwork": "Сеть", "ButtonNextTrack": "Следующая дорожка", - "ButtonOff": "Откл", "ButtonOk": "Ок", "ButtonOpen": "Открыть", "ButtonParentalControl": "Родительский контроль", "ButtonPause": "Пауза", - "ButtonPlay": "Воспроизведение", "ButtonPreviousTrack": "Предыдущая дорожка", "ButtonProfile": "Профиль", "ButtonQuickStartGuide": "Руководство по запуску", - "ButtonRefresh": "Обновить", "ButtonRefreshGuideData": "Обновить данные телегида", "ButtonRemove": "Изъять", "ButtonRename": "Переименовать", @@ -107,7 +100,6 @@ "ButtonStart": "Запустить", "ButtonStop": "Остановить", "ButtonSubmit": "Подтвердить", - "ButtonSubtitles": "Субтитры", "ButtonTogglePlaylist": "Плей-лист", "ButtonTrailer": "Трейлер", "ButtonUninstall": "Удалить", @@ -126,7 +118,7 @@ "ColorTransfer": "Цветопередача", "CommunityRating": "Общественная оценка", "Composer": "Композитор", - "ConfigureDateAdded": "Как конфигурировать дату добавления определяется в Панели Jellyfin Server в параметрах Медиатеки", + "ConfigureDateAdded": "Как конфигурировать дату добавления определяется в Панели в параметрах Медиатеки", "ConfirmDeleteImage": "Удалить изображение?", "ConfirmDeleteItem": "При удалении данного элемента, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?", "ConfirmDeleteItems": "При удалении данных элементов, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?", @@ -196,18 +188,16 @@ "EnablePhotosHelp": "Изображения будут обнаруживаться и отображаться наряду с другими медиафайлами.", "EnableStreamLooping": "Зацикливание трансляций", "EnableStreamLoopingHelp": "Включайте, если трансляции содержат данные только на несколько секунд и необходимо непрерывно их запрашивать. Включение этого без необходимости может породить проблемы.", - "EnableThemeSongs": "Тематические композиции", "EnableThemeSongsHelp": "Воспроизведение тематических композиций в фоновом режиме при навигации по медиатеке.", - "EnableThemeVideos": "Тематические видео", "EnableThemeVideosHelp": "Воспроизведение тематических видео в фоновом режиме при навигации по медиатеке.", "Ended": "Прекращённое", "EndsAtValue": "Конец в {0}", "Episodes": "Эпизоды", "ErrorAddingListingsToSchedulesDirect": "Произошла ошибка добавления списка сопоставления в учётную запись Schedules Direct. В Schedules Direct разрешено только ограниченное число таких списков на каждую учётную запись. Вам может понадобится войти на сайт Schedules Direct, и изъять иные перечни из своей учётной записи, прежде чем приступить.", - "ErrorAddingMediaPathToVirtualFolder": "Произошла ошибка при добавлении пути к медиаданным. Убедитесь, что путь является действительным, а процесс Jellyfin Server имеет доступ к этому расположению.", + "ErrorAddingMediaPathToVirtualFolder": "Произошла ошибка при добавлении пути к медиаданным. Убедитесь, что путь действителен и Jellyfin имеет доступ к этому расположению.", "ErrorAddingTunerDevice": "Произошла ошибка при добавлении тюнерного устройства. Убедитесь, что оно доступно и повторите попытку.", "ErrorAddingXmlTvFile": "Произошла ошибка при доступе к XMLTV-файлу. Убедитесь, что файл существует и повторите попытку.", - "ErrorDeletingItem": "Произошла ошибка при удалении элемента с Jellyfin Server. Проверьте, что у Jellyfin Server имеется доступ на запись в медиапапку и повторите попытку.", + "ErrorDeletingItem": "Произошла ошибка при удалении элемента с сервера. Проверьте, что у Jellyfinr имеется доступ на запись в медиапапку и повторите попытку.", "ErrorGettingTvLineups": "Произошла ошибка при загрузке списков сопоставления. Убедитесь, что ваши данные правильны и повторите попытку.", "ErrorStartHourGreaterThanEnd": "Конечное время должно быть позже, чем начальное время.", "ErrorPleaseSelectLineup": "Выделите список сопоставления и повторите попытку. Если списков сопоставления не имеется, то проверьте, что ваше имя пользователя, пароль и почтовый код являются верными.", @@ -231,7 +221,7 @@ "FolderTypeMovies": "Фильмы", "FolderTypeMusic": "Музыка", "FolderTypeMusicVideos": "Музыкальные видео", - "FolderTypeTvShows": "ТВ-передачи", + "FolderTypeTvShows": "Сериалы", "FolderTypeUnset": "Разнородное содержание", "Folders": "Папки", "FormatValue": "Формат: {0}", @@ -255,11 +245,9 @@ "HeaderActiveDevices": "Активные устройства", "HeaderActiveRecordings": "Активные записи", "HeaderActivity": "Действия", - "HeaderAddScheduledTaskTrigger": "Добавление триггера", "HeaderAddToCollection": "Добавить в коллекцию", "HeaderAddToPlaylist": "Добавление в плей-лист", "HeaderAddUpdateImage": "Добавление/Обновление изображения", - "HeaderAddUser": "Добавить пользователя", "HeaderAdditionalParts": "Дополнительные части", "HeaderAdmin": "Администрирование", "HeaderAlbumArtists": "Исполнители альбома", @@ -273,12 +261,10 @@ "HeaderAudioBooks": "Аудиокниги", "HeaderAudioSettings": "Параметры аудио", "HeaderBlockItemsWithNoRating": "Блокирование элементов с отсутствующей или нераспознанной информацией о возрастной категории:", - "HeaderBooks": "Книги", "HeaderBranding": "Оформление", "HeaderCancelRecording": "Отменить запись", "HeaderCancelSeries": "Отмена сериала", "HeaderCastAndCrew": "Снимались и снимали", - "HeaderCastCrew": "Снимались и снимали", "HeaderChannelAccess": "Доступ ко каналам", "HeaderChapterImages": "Изображения сцен", "HeaderCodecProfile": "Профиль кодеков", @@ -312,14 +298,12 @@ "HeaderEditImages": "Править изображения", "HeaderEnabledFields": "Включённые поля", "HeaderEnabledFieldsHelp": "Снимите флажок, чтобы зафиксировать поле и защитить его данные от изменнений.", - "HeaderEpisodes": "Эпизоды", "HeaderError": "Ошибка", "HeaderExternalIds": "Внешние идентификаторы:", "HeaderFeatureAccess": "Доступ к компонентам", "HeaderFetchImages": "Отборка изображений:", "HeaderFetcherSettings": "Параметры отборщика", "HeaderForKids": "Детям", - "HeaderForgotPassword": "Забыли пароль", "HeaderFrequentlyPlayed": "Воспроизведённые часто", "HeaderGuideProviders": "Поставщики данных телегида", "HeaderHttpHeaders": "HTTP-заголовки", @@ -348,7 +332,6 @@ "HeaderLoginFailure": "Сбой входа", "HeaderMedia": "Медиаданные", "HeaderMediaFolders": "Медиапапки", - "HeaderMediaInfo": "О медиаданных", "HeaderMetadataSettings": "Параметры метаданных", "HeaderMoreLikeThis": "Ещё подобное этому", "HeaderMusicQuality": "Качество музыки", @@ -481,11 +464,10 @@ "LabelAppNameExample": "Пример: Sickbeard, Sonarr", "LabelArtists": "Исполнители:", "LabelArtistsHelp": "Для разделения исполнителей используйте точку с запятой ;", - "LabelAudio": "Аудио", "LabelAudioLanguagePreference": "Выбор языка аудио:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Автоматически обновлять метаданные из Интернета:", "LabelBindToLocalNetworkAddress": "Привязка к адресу в локальной сети:", - "LabelBindToLocalNetworkAddressHelp": "Переопределяется локальный IP-адрес для HTTP-сервера. Если поле пусто, то привязка сервера будет ко всем доступным адресам. При изменении данного значения потребуется перезапуск Jellyfin Server.", + "LabelBindToLocalNetworkAddressHelp": "Переопределяется локальный IP-адрес для HTTP-сервера. Если поле пусто, то привязка сервера будет ко всем доступным адресам. При изменении данного значения потребуется перезапуск.", "LabelBirthDate": "Дата рождения:", "LabelBirthYear": "Год рождения:", "LabelBlastMessageInterval": "Интервал сообщений проверки активности", @@ -509,7 +491,6 @@ "LabelCustomCertificatePathHelp": "Путь к файлу PKCS #12, содержащему сертификат и \tзакрытый ключ для включения поддержки TLS на произвольном домене.", "LabelCustomCss": "Настраиваемые CSS:", "LabelCustomCssHelp": "Применяйте свои собственные настраиваемые стили в веб-интерфейсе.", - "LabelCustomDeviceDisplayName": "Отображаемое название:", "LabelCustomDeviceDisplayNameHelp": "Приведите произвольное имя для отображения или не заполняйте, чтобы использовать имя, выданное устройством.", "LabelCustomRating": "Произвольная возрастная категория:", "LabelDateAdded": "Дата добавления:", @@ -526,7 +507,6 @@ "LabelDiscNumber": "Номер диска:", "LabelDisplayLanguage": "Язык отображения:", "LabelDisplayLanguageHelp": "Перевод Jellyfin ведётся на постоянной основе.", - "LabelDisplayMissingEpisodesWithinSeasons": "Отображать отсутствующие эпизоды в пределах сезонов", "LabelDisplayMode": "Режим отображения:", "LabelDisplayName": "Отображаемое название:", "LabelDisplayOrder": "Порядок отображения:", @@ -544,7 +524,7 @@ "LabelEnableBlastAliveMessages": "Бомбардировать сообщениями проверки активности", "LabelEnableBlastAliveMessagesHelp": "Включите, если сервер надёжно не обнаруживается иными UPnP устройствами в своей сети.", "LabelEnableDlnaClientDiscoveryInterval": "Интервал обнаружения клиентов", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Определяется длительность в секундах между SSDP-запросами от Jellyfin.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Определяется длительность в секундах между SSDP-запросами.", "LabelEnableDlnaDebugLogging": "Включить журналирование отладки DLNA", "LabelEnableDlnaDebugLoggingHelp": "Создаются большие файлы Журнала, рекомендуется использовать только для поиска неполадок.", "LabelEnableDlnaPlayTo": "Включить DLNA-функцию Воспроизвести На", @@ -662,7 +642,7 @@ "LabelNumberOfGuideDays": "Число дней для загрузки данных телегида:", "LabelNumberOfGuideDaysHelp": "Больше дней загрузки данных телегида обеспечивает возможность заблаговременно назначать расписание и просматривать больше перечней, однако это займёт больше времени для загрузки. При значении «Авто» выбор определяется числом каналов.", "LabelOptionalNetworkPath": "Общедоступная сетевая папка:", - "LabelOptionalNetworkPathHelp": "Если данная папка является общей в сети, указание пути к сетевой папке может позволить Jellyfin-приложениям на других устройствах иметь прямой доступ к медиафайлам. Например, {0} или {1}.", + "LabelOptionalNetworkPathHelp": "Если данная папка является общей в сети, указание пути к сетевой папке может позволить клиентам на других устройствах иметь прямой доступ к медиафайлам. Например, {0} или {1}.", "LabelOriginalAspectRatio": "Исходное соотношение сторон:", "LabelOriginalTitle": "Оригинальное название:", "LabelOverview": "Обзор:", @@ -681,7 +661,6 @@ "LabelPostProcessorArguments": "Аргументы командной строки постобработчика:", "LabelPostProcessorArgumentsHelp": "Используйте {path} как путь к записываемому файлу.", "LabelPreferredDisplayLanguage": "Выбор языка отображения:", - "LabelPreferredDisplayLanguageHelp": "Перевод Jellyfin ведётся на постоянной основе.", "LabelPreferredSubtitleLanguage": "Выбор языка субтитров:", "LabelProfileAudioCodecs": "Аудиокодеки:", "LabelProfileCodecs": "Кодеки:", @@ -741,7 +720,6 @@ "LabelSubtitleDownloaders": "Загрузчики субтитров:", "LabelSubtitleFormatHelp": "Пример: srt", "LabelSubtitlePlaybackMode": "Режим субтитров:", - "LabelSubtitles": "Субтитры", "LabelSupportedMediaTypes": "Поддерживаемые типы медиаданных:", "LabelTVHomeScreen": "Главная страница ТВ-режима:", "LabelTag": "Тег:", @@ -754,12 +732,9 @@ "LabelTimeLimitHours": "Временной лимит (час):", "LabelTitle": "Название:", "LabelTrackNumber": "Номер дорожки:", - "LabelTranscodingAudioCodec": "Аудио профиль:", - "LabelTranscodingContainer": "Контейнер:", "LabelTranscodingTempPathHelp": "Укажите произвольный путь для файлов перекодировки, служащие для клиентов. Оставьте пустым, чтобы использовать умолчания сервера.", "LabelTranscodingThreadCount": "Количество перекодирующих подпотоков:", "LabelTranscodingThreadCountHelp": "Выберите максимальное число подпотоков для использования при перекодировке. Сокращение числа подпотоков понижает нагрузку на ЦП, но преобразование может оказаться недостаточно быстрым для впечатления плавного воспроизведения.", - "LabelTranscodingVideoCodec": "Видео кодек:", "LabelTriggerType": "Тип триггера:", "LabelTunerIpAddress": "IP-адрес тюнера:", "LabelTunerType": "Тип тюнера:", @@ -840,13 +815,13 @@ "MessageConfirmProfileDeletion": "Вы действительно хотите удалить данный профиль?", "MessageConfirmRecordingCancellation": "Отменить запись?", "MessageConfirmRemoveMediaLocation": "Вы действительно хотите изъять это расположение?", - "MessageConfirmRestart": "Вы действительно хотите перезапустить Jellyfin Server?", - "MessageConfirmRevokeApiKey": "Вы действительно хотите отозвать данный API-ключ? Подключение приложения к Jellyfin Server будет резко прекращено.", + "MessageConfirmRestart": "Вы действительно хотите перезапустить Jellyfin?", + "MessageConfirmRevokeApiKey": "Вы действительно хотите отозвать данный API-ключ? Подключение приложения к этому серверу будет резко прекращено.", "MessageConfirmShutdown": "Вы действительно хотите завершить работу сервера?", "MessageContactAdminToResetPassword": "Обратитесь к своему системному администратору, чтобы сбросить ваш пароль.", "MessageCreateAccountAt": "Создайте учётную запись на {0}", "MessageDeleteTaskTrigger": "Вы действительно хотите удалить данный триггер задачи?", - "MessageDirectoryPickerBSDInstruction": "Касаемо BSD, возможно, потребуется конфигурировать хранилище в вашем FreeNAS Jail для того, чтобы разрешить Jellyfin получить к нему доступ.", + "MessageDirectoryPickerBSDInstruction": "Касаемо BSD, возможно, потребуется конфигурировать хранилище в вашем FreeNAS Jail, чтобы Jellyfin мог получить доступ к медиаданным.", "MessageDirectoryPickerLinuxInstruction": "Для Linux на Arch Linux, CentOS, Debian, Fedora, openSUSE или Ubuntu, вы должны предоставить пользователю службы, по крайней мере, доступ для чтения к расположениям хранилища.", "MessageDownloadQueued": "Загрузка в очереди.", "MessageEnablingOptionLongerScans": "Включение этой опции может привести к значительному увеличению времени сканирования медиатеки.", @@ -868,9 +843,8 @@ "MessagePleaseEnsureInternetMetadata": "Убедитесь, что включена загрузка метаданных из Интернета.", "MessagePleaseWait": "Подождите. Это может занять минуту.", "MessagePluginConfigurationRequiresLocalAccess": "Чтобы конфигурировать данный плагин войдите непосредственно в свой локальный сервер.", - "MessagePluginInstallDisclaimer": "Плагины, созданные членами сообщества Jellyfin являются отличным способом повышения эффективности Jellyfin с помощью дополнительных функций и компонентов. Перед установкой примите во внимание влияние, которое они могут оказать на Jellyfin Server, например, длительные сканирования медиатеки, дополнительную фоновую обработку и снижение системной стабильности.", + "MessagePluginInstallDisclaimer": "Плагины, созданные членами сообщества являются отличным способом повышения эффективности с помощью дополнительных функций и компонентов. Перед установкой примите во внимание влияние, которое они могут оказать на сервер, например, длительные сканирования медиатеки, дополнительную фоновую обработку и снижение системной стабильности.", "MessageReenableUser": "См. ниже для разблокировки", - "MessageSettingsSaved": "Параметры сохранены.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Из вашей медиатеки будут изъяты следующие расположения медиаданных:", "MessageUnableToConnectToServer": "Мы не можем подсоединиться к выбранному серверу в данный момент. Убедитесь, что он запущен и повторите попытку.", "MessageUnsetContentHelp": "Содержание отображается как обычные папки. Для наилучших результатов используйте диспетчер метаданных, чтобы задать тип содержания подпапок.", @@ -936,7 +910,6 @@ "OptionArtist": "Исполнитель", "OptionAscending": "По возрастанию", "OptionAuto": "Авто", - "OptionAutomatic": "Авто", "OptionAutomaticallyGroupSeries": "Автоматически сливать вместе сериалы, которые разбросаны по нескольким папкам", "OptionAutomaticallyGroupSeriesHelp": "Части сериала, которые разбросаны по нескольким папкам данной медиатеки, будут автоматически слиты в единый сериал.", "OptionBlockBooks": "Книги", @@ -1032,7 +1005,7 @@ "OptionResumable": "Возможно возобновление", "OptionRuntime": "Длительность", "OptionSaveMetadataAsHidden": "Сохранять метаданные и изображения в виде скрытых файлов", - "OptionSaveMetadataAsHiddenHelp": "Это изменение будет применено к новым метаданным сохраняемым в будущем. Существующие файлы метаданных будут обновлены в следующий раз, когда они будут сохраняться на Jellyfin Server.", + "OptionSaveMetadataAsHiddenHelp": "Это изменение будет применено к новым метаданным сохраняемым в будущем. Существующие файлы метаданных будут обновлены в следующий раз, когда они будут сохраняться на сервере.", "OptionSpecialEpisode": "Спецэпизоды", "OptionSubstring": "Подстрока", "OptionTrackName": "Название трека", @@ -1072,9 +1045,9 @@ "PleaseAddAtLeastOneFolder": "Добавьте, по крайней мере, одну папку к данной медиатеке, нажав кнопку Добавить.", "PleaseConfirmPluginInstallation": "Нажмите кнопку ОК, чтобы подтвердить, что вы прочитали вышеизложенное и хотите приступить к установке плагина.", "PleaseEnterNameOrId": "Введите название или внешний ID.", - "PleaseRestartServerName": "Перезапустите Jellyfin Server - {0}.", + "PleaseRestartServerName": "Перезапустите Jellyfin на {0}.", "PleaseSelectTwoItems": "Выберите хотя бы два элемента.", - "MessagePluginInstalled": "Плагин установлен успешно. Чтобы изменения вступили в силу, будет необходимо перезапустить Jellyfin Server.", + "MessagePluginInstalled": "Плагин установлен успешно. Чтобы изменения вступили в силу, будет необходимо перезапустить сервер.", "PreferEmbeddedTitlesOverFileNames": "Предпочитать внедрённые названия, чем имена файлов", "PreferEmbeddedTitlesOverFileNamesHelp": "Этим определяется отображаемое название по умолчанию, когда нет метаданных с интернета или локальные метаданные недоступны.", "Premiere": "Премьера", @@ -1137,10 +1110,10 @@ "SeriesRecordingScheduled": "Запись сериала назначена.", "SeriesSettings": "Параметры сериала", "SeriesYearToPresent": "{0} - Н/В", - "ServerNameIsRestarting": "Jellyfin Server - {0} перезапускается.", - "ServerNameIsShuttingDown": "Jellyfin Server - {0} завершает работу.", - "ServerRestartNeededAfterPluginInstall": "После установки плагина будет необходимо перезапустить Jellyfin Server.", - "ServerUpdateNeeded": "Данный Jellyfin Server нуждается в обновлении. Чтобы загрузить свежую версию, посетите {0}", + "ServerNameIsRestarting": "Сервер перезапускается в {0}.", + "ServerNameIsShuttingDown": "Сервер завершает работу в {0}.", + "ServerRestartNeededAfterPluginInstall": "После установки плагина будет необходимо перезапустить Jellyfin.", + "ServerUpdateNeeded": "Данный сервер нуждается в обновлении. Чтобы загрузить свежую версию, посетите {0}", "Settings": "Параметры", "SettingsSaved": "Параметры сохранены.", "SettingsWarning": "Изменение данных значений может привести к нестабильности или сбоям возможности подключения. Если вы испытываете любые проблемы, мы рекомендуем изменить их обратно к стандартным.", @@ -1180,18 +1153,14 @@ "TV": "ТВ", "TabAccess": "Доступ", "TabAdvanced": "Расширенное", - "TabAlbumArtists": "Исполнители альбома", "TabCatalog": "Каталог", "TabCodecs": "Кодеки", "TabContainers": "Контейнеры", "TabDashboard": "Панель", "TabDirectPlay": "Прямое воспроизведение", - "TabEpisodes": "Эпизоды", - "TabInfo": "Инфо", "TabLatest": "Новейшее", "TabLogs": "Журналы", "TabMusic": "Музыка", - "TabMusicVideos": "Муз. видео", "TabMyPlugins": "Мои плагины", "TabNetworks": "Телесети", "TabNfoSettings": "Параметры NFO", @@ -1202,12 +1171,10 @@ "TabProfile": "Профиль", "TabProfiles": "Профили", "TabResponses": "Отклики", - "TabResumeSettings": "Возобновление", "TabScheduledTasks": "Планировщик", "TabServer": "Сервер", "TabSettings": "Параметры", "TabStreaming": "Трансляция", - "TabTrailers": "Трейлеры", "TabUpcoming": "Ожидаемое", "Tags": "Теги", "TagsValue": "Теги: {0}", @@ -1284,13 +1251,12 @@ "OptionResElement": "res-элемент", "AuthProviderHelp": "Выберите поставщика аутентификации, который будет использоваться для аутентификации пароля этого пользователя.", "HeaderFavoriteMovies": "Избранные фильмы", - "HeaderFavoriteShows": "Избранные передачи", + "HeaderFavoriteShows": "Избранные сериалы", "HeaderFavoriteEpisodes": "Избранные эпизоды", "HeaderFavoriteAlbums": "Избранные альбомы", "HeaderFavoriteArtists": "Избранные исполнители", "HeaderFavoriteSongs": "Избранные композиции", "HeaderFavoriteVideos": "Избранные видео", - "HeaderHome": "Главное", "LabelAuthProvider": "Поставщик аутентификации:", "LabelPasswordResetProvider": "Поставщик сброса пароля:", "LabelServerName": "Имя сервера:", @@ -1324,7 +1290,7 @@ "OptionPosterCard": "Постер-карта", "OptionThumb": "Эскиз", "OptionThumbCard": "Эскиз-карта", - "PasswordResetProviderHelp": "Выберите поставщика сброса пароля, который использовуется при запросе пользователем сброса пароля", + "PasswordResetProviderHelp": "Выберите поставщика сброса пароля, который использовуется при запросе пользователем сброса пароля.", "PlaybackData": "Данные воспроизведения", "SubtitleOffset": "Сдвиг субтитров", "TabNetworking": "Работа в сети", @@ -1391,7 +1357,7 @@ "AlbumArtist": "Исполнитель альбома", "Album": "Альбом", "LastSeen": "Последний раз был {0}", - "WriteAccessRequired": "Jellyfin Server требуются права на запись в эту папку. Обеспечьте доступ для записи и попробуйте снова.", + "WriteAccessRequired": "Jellyfin требуются права на запись в эту папку. Обеспечьте доступ для записи и попробуйте снова.", "PathNotFound": "Путь не может быть найден. Убедитесь, что путь правильный и попробуйте снова.", "PreferEmbeddedEpisodeInfosOverFileNames": "Предпочитать встроенную информацию эпизода вместо имён файлов", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Используется информация об эпизоде из встроенных метаданных, если они доступны.", @@ -1446,7 +1412,7 @@ "MessageSyncPlayErrorNoActivePlayer": "Активный проигрыватель не найден. SyncPlay был отключен.", "ShowMore": "Показать больше", "ShowLess": "Показать меньше", - "EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с размытым заполнением", + "EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с уникальным заполнением.", "EnableBlurHash": "Включить размытые заполнители для изображений", "ButtonSyncPlay": "SyncPlay", "ButtonCast": "Транслировать", @@ -1473,5 +1439,8 @@ "LabelUnstable": "Нестабильная", "LabelSubtitleVerticalPosition": "Вертикальная позиция:", "SubtitleVerticalPositionHelp": "Номер строки, где появляется текст. Положительные числа означают сверху вниз. Отрицательные числа означают снизу вверх.", - "Preview": "Предварительный просмотр" + "Preview": "Предварительный просмотр", + "MessageGetInstalledPluginsError": "Произошла ошибка при получении списка установленных плагинов.", + "MessagePluginInstallError": "Во время установки плагина произошла ошибка.", + "PlaybackRate": "Рейтинг" } diff --git a/src/strings/sk.json b/src/strings/sk.json index 7aef8eb515..6a604e3e29 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -35,13 +35,10 @@ "ButtonBack": "Späť", "ButtonCancel": "Zrušiť", "ButtonChangeServer": "Zmeniť server", - "ButtonEdit": "Upraviť", - "ButtonEditImages": "Upraviť obrázky", "ButtonEditOtherUserPreferences": "Upraviť používateľský profil, obrázok a osobné preferencie.", "ButtonForgotPassword": "Zabudnuté heslo", "ButtonFullscreen": "Celá obrazovka", "ButtonGotIt": "Rozumiem", - "ButtonHome": "Domov", "ButtonManualLogin": "Manuálne prihlásenie", "ButtonMore": "Viac", "ButtonNetwork": "Sieť", @@ -49,11 +46,9 @@ "ButtonOpen": "Otvoriť", "ButtonParentalControl": "Rodičovská kontrola", "ButtonPause": "Pozastaviť", - "ButtonPlay": "Prehrať", "ButtonPreviousTrack": "Predchádzajúca stopa", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Príručka rýchleho štartu", - "ButtonRefresh": "Obnoviť", "ButtonRefreshGuideData": "Obnoviť údaje sprievodcu", "ButtonRemove": "Odstrániť", "ButtonRename": "Premenovať", @@ -70,7 +65,6 @@ "ButtonSignIn": "Prihlásiť sa", "ButtonSignOut": "Odhlásiť sa", "ButtonSubmit": "Potvrdiť", - "ButtonSubtitles": "Titulky", "ButtonTrailer": "Trailer", "ButtonUninstall": "Odinštalovať", "ButtonWebsite": "Webové stránky", @@ -157,12 +151,10 @@ "HeaderActivity": "Aktivita", "HeaderAddToCollection": "Pridať do kolekcie", "HeaderAddUpdateImage": "Pridať/aktualizovať obrázok", - "HeaderAddUser": "Pridať používateľa", "HeaderApiKey": "Kľúč API", "HeaderApiKeys": "Kľúče API", "HeaderAudioBooks": "Audio knihy", "HeaderAudioSettings": "Nastavenia zvuku", - "HeaderBooks": "Knihy", "HeaderCastAndCrew": "Obsadenie a štáb", "HeaderChapterImages": "Obrázky kapitol", "HeaderConfigureRemoteAccess": "Nastaviť vzdialený prístup", @@ -182,11 +174,9 @@ "HeaderDevices": "Zariadenia", "HeaderEasyPinCode": "Jednoduchý PIN kód", "HeaderEditImages": "Upraviť obrázky", - "HeaderEpisodes": "Epizódy", "HeaderError": "Chyba", "HeaderFetchImages": "Načítať obrázky:", "HeaderForKids": "Pre deti", - "HeaderForgotPassword": "Zabudnuté heslo", "HeaderFrequentlyPlayed": "Často hrané", "HeaderHttpHeaders": "HTTP hlavičky", "HeaderIdentification": "Identifikácia", @@ -206,7 +196,6 @@ "HeaderLibraryOrder": "Poradie knižnice", "HeaderLibrarySettings": "Nastavenia knižnice", "HeaderMedia": "Médiá", - "HeaderMediaInfo": "Informácie o médiu", "HeaderMetadataSettings": "Nastavenia metadát", "HeaderMoreLikeThis": "Podobné položky", "HeaderMusicQuality": "Kvalita hudby", @@ -312,7 +301,6 @@ "LabelDeviceDescription": "Popis zariadenia", "LabelDiscNumber": "Číslo disku:", "LabelDisplayLanguage": "Jazyk rozhrania:", - "LabelDisplayMissingEpisodesWithinSeasons": "Zobraziť chýbajúce epizódy v sériách", "LabelDisplayOrder": "Poradie zobrazenia:", "LabelDownloadLanguages": "Prebrať jazyky:", "LabelDropImageHere": "Presuňte obrázok sem.", @@ -428,7 +416,6 @@ "LabelStartWhenPossible": "Spustiť akonáhle je možné:", "LabelStatus": "Stav:", "LabelSubtitleFormatHelp": "Príklad: srt", - "LabelSubtitles": "Titulky", "LabelSupportedMediaTypes": "Podporované typy médií:", "LabelTextBackgroundColor": "Farba pozadia textu:", "LabelTextColor": "Farba textu:", @@ -438,9 +425,6 @@ "LabelTimeLimitHours": "Časový limit (v hodinách):", "LabelTitle": "Názov:", "LabelTrackNumber": "Číslo stopy:", - "LabelTranscodingAudioCodec": "Audio kodek:", - "LabelTranscodingContainer": "Obal:", - "LabelTranscodingVideoCodec": "Video kodek:", "LabelTunerIpAddress": "IP adresa tunera:", "LabelTunerType": "Typ tunera:", "LabelType": "Typ:", @@ -504,7 +488,6 @@ "MessageNothingHere": "Nič tu nie je.", "MessagePleaseEnsureInternetMetadata": "Prosím, uistite sa, že sťahovanie internetových metadát je povolené.", "MessagePleaseWait": "Prosím počkajte. Toto môže chvíľu trvať.", - "MessageSettingsSaved": "Nastavenia uložené.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Nasledujúce umiestnenia médií budú odobraté z vašej knižnice:", "MessageYouHaveVersionInstalled": "Teraz máte nainštalovanú verziu {0}.", "Metadata": "Metadáta", @@ -556,7 +539,6 @@ "OptionArtist": "Umelec", "OptionAscending": "Vzostupne", "OptionAuto": "Automaticky", - "OptionAutomatic": "Automaticky", "OptionAutomaticallyGroupSeries": "Automaticky zlúčiť série, ktoré sú uložené v rôznych priečinkoch", "OptionBlockBooks": "Knihy", "OptionBlockMovies": "Filmy", @@ -720,10 +702,8 @@ "TabCodecs": "Kodeky", "TabContainers": "Kontajnery", "TabDashboard": "Dashboard", - "TabEpisodes": "Epizódy", "TabLatest": "Najnovšie", "TabMusic": "Hudba", - "TabMusicVideos": "Hudobné videá", "TabMyPlugins": "Moje zásuvné moduly", "TabNetworks": "Siete", "TabNfoSettings": "NFO nastavenia", @@ -734,10 +714,8 @@ "TabProfile": "Profil", "TabProfiles": "Profily", "TabResponses": "Odpovede", - "TabResumeSettings": "Pokračovať", "TabScheduledTasks": "Naplánované úlohy", "TabSettings": "Nastavenia", - "TabTrailers": "Trailery", "TabUpcoming": "Nadchádzajúce", "TellUsAboutYourself": "Povedzte nám niečo o sebe", "ThisWizardWillGuideYou": "Tento sprievodca Vám pomôže prejsť inštalačným procesom. Pre začatie zvoľte preferovaný jazyk.", @@ -795,9 +773,7 @@ "Aired": "Odvysielané", "Alerts": "Upozornenia", "AllowOnTheFlySubtitleExtraction": "Povoliť extrahovanie titulkov za behu", - "ButtonFilter": "Filter", "ButtonInfo": "Info", - "ButtonOff": "Vypnúť", "ButtonOk": "Ok", "ButtonStart": "Štart", "ButtonStop": "Zastaviť", @@ -860,14 +836,11 @@ "EnableNextVideoInfoOverlay": "Zobraziť 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 Jellyfin má prístup k umiestneniu.", - "HeaderAddScheduledTaskTrigger": "Pridať spúšťač", "HeaderAddToPlaylist": "Pridať do playlistu", "HeaderAlert": "Upozornenie", - "HeaderCastCrew": "Obsadenie a štáb", "HeaderDownloadSync": "Sťahovanie a synchronizácia", "HeaderExternalIds": "Externé ID:", "HeaderFeatureAccess": "Prístup k funkciám", - "HeaderHome": "Domov", "HeaderLoginFailure": "Prihlásenie zlyhalo", "HeaderMediaFolders": "Priečinky médií", "HeaderRemoveMediaFolder": "Odstrániť priečinok médií", @@ -879,7 +852,6 @@ "HeaderVideoType": "Typ videa", "HeaderVideoTypes": "Typy videí", "LabelAirsBeforeSeason": "Vysielané pred sériou:", - "LabelAudio": "Zvuk", "LabelBlockContentWithTags": "Blokovať položky s tagmi:", "LabelDisplayMode": "Režim zobrazenia:", "LabelDisplaySpecialsWithinSeasons": "Zobraziť špeciálne epizódy v sérií, v ktorej boli odvysielané", @@ -939,7 +911,6 @@ "Uniform": "Jednotné", "ThemeVideos": "Tematické videá", "ThemeSongs": "Tématická hudba", - "TabInfo": "Info", "TV": "TV", "SkipEpisodesAlreadyInMyLibraryHelp": "Epizódy budú porovnané na základe čísla série a epizódy, ak sú k dispozícii.", "SimultaneousConnectionLimitHelp": "Maximálny povolený počet súčasných streamov. Zadajte 0 pre vypnutie obmedzenia.", @@ -963,8 +934,6 @@ "HeaderEnabledFields": "Povolené polia", "HeaderAllowMediaDeletionFrom": "Povoliť zmazanie médií z", "HeaderAdmin": "Admin", - "EnableThemeVideos": "Videá úvodných zvučiek", - "EnableThemeSongs": "Úvodné zvučky", "EnablePhotosHelp": "Obrázky budú detekované a zobrazené spolu s ostatnými multimediálnymi súbormi.", "EnableColorCodedBackgrounds": "Farebne označené pozadia", "DropShadow": "Vrhať tieň", @@ -985,7 +954,6 @@ "LabelDefaultUserHelp": "Určuje, ktorá používateľská knižnica by mala byť zobrazená na pripojenom zariadení. Toto nastavenie môže byť prepísané pomocou profilov pre každé zariadenie.", "LabelDateAddedBehaviorHelp": "Pokiaľ majú metadáta hodnotu, bude vždy použitá pred niektorou z týchto možností.", "LabelCustomDeviceDisplayNameHelp": "Nahradte vlastným názvom alebo ponechajte prázdne, aby názov určilo zariadenie.", - "LabelCustomDeviceDisplayName": "Zobrazený názov:", "LabelCache": "Cache:", "LabelBurnSubtitles": "Vypáliť titulky:", "LabelBitrate": "Dátový tok:", @@ -1115,7 +1083,6 @@ "Thumb": "Náhľad", "TheseSettingsAffectSubtitlesOnThisDevice": "Toto nastavenie ovplyvní titulky na tomto zariadení", "TabNetworking": "Sieť", - "TabAlbumArtists": "Umelec albumu", "SystemDlnaProfilesHelp": "Systémové profily sú len na čítanie. Zmeny systémových profilov budú uložené do nového vlastné profilu.", "SubtitleOffset": "Odchýlka titulkov", "SubtitleDownloadersHelp": "Povolí a ohodnotí vaše preferované sťahovače titulkov podľa priority.", @@ -1277,7 +1244,6 @@ "LabelProtocolInfoHelp": "Hodnota, ktorá sa použije pri odpovedi na požiadavky GetProtocolInfo z tohoto zariadenia.", "LabelProfileContainersHelp": "Oddelené čiarkou. Pokiaľ zostane pole prázdne, aplikuje sa na všetky kontajnery.", "LabelProfileCodecsHelp": "Oddelené čiarkou. Pokiaľ zostane pole prázdne, aplikuje sa na všetky kodeky.", - "LabelPreferredDisplayLanguageHelp": "Preklad Jellyfinu je v neustálom vývoji.", "LabelPostProcessorArgumentsHelp": "Použi {path} ako cestu k nahrávanému súboru.", "LabelPostProcessorArguments": "Argumenty príkazového riadku pre následné spracovanie:", "LabelPostProcessor": "Aplikácia pre následné spracovanie:", @@ -1475,5 +1441,6 @@ "MessageGetInstalledPluginsError": "Pri načítaní zoznamu nainštalovaných zásuvných modulov došlo k chybe.", "MessagePluginInstallError": "Pri inštalácií zásuvného modulu došlo k chybe.", "NextTrack": "Ďalšia", - "LabelUnstable": "Nestabilný" + "LabelUnstable": "Nestabilný", + "PlaybackRate": "Rýchlosť prehrávania" } diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index f9588653ab..e4cc58de6d 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -5,7 +5,6 @@ "ButtonSignOut": "Odjava", "FolderTypeTvShows": "TV", "HeaderAddToCollection": "Dodaj v Zbirko", - "HeaderAddUser": "Dodaj Uporabnika", "HeaderEasyPinCode": "Enostavna Pin koda", "HeaderFrequentlyPlayed": "Pogosto Predvajano", "HeaderPaths": "Poti", @@ -38,7 +37,6 @@ "ParentalRating": "Ocena za starše", "Settings": "Nastavitve", "TabAccess": "Dostop", - "TabAlbumArtists": "Izvajalci Albumov", "TabCatalog": "Katalog", "TabLatest": "Zadnje", "TabMusic": "Glasba", @@ -74,7 +72,7 @@ "AllowMediaConversionHelp": "Dovoli ali zavrni dostop do pretvarjanja predstavnosti.", "AllowOnTheFlySubtitleExtraction": "Dovoli sprotno izluščenje podnapisov", "AllowOnTheFlySubtitleExtractionHelp": "Vdelani podnapisi so lahko izluščeni iz videa in poslani odjemalcem kot navaden tekst, kar zmanjša potrebo po prekodiranju. Na nekaterih napravah lahko to traja dalj časa in povzroča zatikanje med predvajanjem. Onemogočite to možnost, za vžig vdelanih podnapisov v video s prekodiranjem, za naprave ki sicer ne podpirajo podnapisov.", - "AllowRemoteAccess": "Dovoli oddaljene povezave s tem Jellyfin strežnikom.", + "AllowRemoteAccess": "Dovoli oddaljene povezave s tem strežnikom.", "AllowRemoteAccessHelp": "Če ni označeno, bodo vse oddaljene povezave blokirane.", "Artists": "Izvajalci", "Books": "Knjige", @@ -125,30 +123,23 @@ "ButtonBack": "Nazaj", "ButtonCancel": "Prekliči", "ButtonChangeServer": "Spremeni strežnik", - "ButtonEdit": "Uredi", - "ButtonEditImages": "Uredi slike", "ButtonEditOtherUserPreferences": "Uredi profil tega uporabnika, slike in osebne nastavitve.", - "ButtonFilter": "Filter", "ButtonForgotPassword": "Pozabljeno geslo", "ButtonFullscreen": "Polni zaslon", "ButtonGotIt": "Razumem", "ButtonGuide": "Vodič", - "ButtonHome": "Domov", "ButtonInfo": "Info", "ButtonLibraryAccess": "Dostop do knjižnic", "ButtonManualLogin": "Ročna prijava", "ButtonMore": "Več", "ButtonNetwork": "Omrežje", "ButtonNextTrack": "Naslednja skladba", - "ButtonOff": "Izključi", "ButtonOk": "Ok", "ButtonOpen": "Odpri", "ButtonParentalControl": "Starševski nadzor", "ButtonPause": "Premor", - "ButtonPlay": "Predvajaj", "ButtonPreviousTrack": "Prejšnja skladba", "ButtonProfile": "Profil", - "ButtonRefresh": "Osveži", "ButtonRefreshGuideData": "Osveži TV vodič", "ButtonRemove": "Odstrani", "ButtonRename": "Preimenuj", @@ -166,7 +157,6 @@ "ButtonSignIn": "Prijava", "ButtonStart": "Začetek", "ButtonStop": "Stop", - "ButtonSubtitles": "Podnapisi", "ButtonTrailer": "Napovednik", "ButtonUninstall": "Odstrani", "ButtonWebsite": "Spletna stran", @@ -183,7 +173,7 @@ "ColorTransfer": "Prenos barve", "CommunityRating": "Ocena skupnosti", "Composer": "Skladatelj", - "ConfigureDateAdded": "Nastavi kako je določen datum dodajanja v nadzorni plošči Jellyfin Server-ja v kategoriji Knjižnice", + "ConfigureDateAdded": "Nastavite kako je določen datum dodajanja v nadzorni plošči v kategoriji Knjižnice", "ConfirmDeleteImage": "Izbriši sliko?", "ConfirmDeleteItem": "Brisanje tega elementa ga bo izbrisalo iz datotečnega sistema in medijske knjižnice. Ste prepričani da želite nadaljevati?", "ConfirmDeleteItems": "Brisanje teh elementov jih bo izbrisalo iz datotečnega sistema in medijske knjižnice. Ste prepričani da želite nadaljevati?", @@ -293,7 +283,6 @@ "HeaderMusicQuality": "Kvaliteta glasbe", "HeaderMoreLikeThis": "Podobno", "HeaderMetadataSettings": "Nastavitve metapodatkov", - "HeaderMediaInfo": "Informacije o predstavnosti", "HeaderMediaFolders": "Mape predstavnosti", "HeaderMedia": "Predstavnost", "HeaderLoginFailure": "Neuspešna prijava", @@ -317,9 +306,7 @@ "HeaderIdentifyItemHelp": "Vnesite vsaj en kriterij iskanja. Odstranite kriterije za več rezultatov.", "HeaderIdentificationCriteriaHelp": "Vnesite vsaj en kriterij za identifikacijo.", "HeaderIdentification": "Identifikacija", - "HeaderHome": "Domov", "HeaderGuideProviders": "Ponudniki TV vodiča", - "HeaderForgotPassword": "Pozabljeno geslo", "HeaderForKids": "Za otroke", "HeaderFetcherSettings": "Nastavitve pridobivanja", "HeaderFetchImages": "Pridobi slike:", @@ -328,7 +315,6 @@ "HeaderFavoriteBooks": "Priljubljene knjige", "HeaderExternalIds": "Zunanji ID-ji:", "HeaderError": "Napaka", - "HeaderEpisodes": "Epizode", "HeaderEnabledFieldsHelp": "Odznači polja in s tem prepreči njihovo urejanje.", "HeaderEnabledFields": "Omogočena polja", "HeaderEditImages": "Uredi slike", @@ -357,11 +343,9 @@ "HeaderCodecProfile": "Profil kodeka", "HeaderChapterImages": "Slike poglavij", "HeaderChannelAccess": "Dostop kanalov", - "HeaderCastCrew": "Igralci in ekipa", "HeaderCastAndCrew": "Igralci in ekipa", "HeaderCancelSeries": "Prekini serijo", "HeaderCancelRecording": "Prekini snemanje", - "HeaderBooks": "Knjige", "HeaderAudioSettings": "Nastavitve zvoka", "HeaderAudioBooks": "Zvočne knjige", "HeaderAppearsOn": "Pojavi se", @@ -375,7 +359,6 @@ "HeaderAdditionalParts": "Dodatni deli", "HeaderAddUpdateImage": "Dodaj/posodobi sliko", "HeaderAddToPlaylist": "Dodaj na seznam predvajanja", - "HeaderAddScheduledTaskTrigger": "Dodaj sprožilec", "HeaderActivity": "Aktivnost", "HeaderActiveRecordings": "Aktivna snemanja", "HeaderActiveDevices": "Aktivne naprave", @@ -424,16 +407,14 @@ "DropShadow": "Senca", "EveryNDays": "Vsakih {0} dni", "ErrorStartHourGreaterThanEnd": "Čas konca mora biti večji od časa začetka.", - "ErrorDeletingItem": "Prišlo je do težave pri brisanju predstavnosti s strežnika. Preverite ali ima Jellyfin strežnik dovoljenje za pisanje v mapi s predstavnostjo in poskusite znova.", + "ErrorDeletingItem": "Prišlo je do težave pri brisanju predstavnosti s strežnika. Preverite ali ima Jellyfin dovoljenje za pisanje v mapi s predstavnostjo in poskusite znova.", "ErrorAddingXmlTvFile": "Prišlo je do težave pri dostopu do XMLTV datoteke. Preverite ali datoteka obstaja in poskusite znova.", - "ErrorAddingMediaPathToVirtualFolder": "Prišlo je do težave pri dodajanju poti predstavnosti. Preverite ali je pot veljavna in da ima Jellyfin strežnik dovoljenja za dostop.", + "ErrorAddingMediaPathToVirtualFolder": "Prišlo je do težave pri dodajanju poti predstavnosti. Preverite ali je pot veljavna in da ima Jellyfin dovoljenja za dostop.", "Episodes": "Epizode", "EndsAtValue": "Konec ob {0}", "Ended": "Končano", "EnableThemeVideosHelp": "Predvajaj tematske videe v ozadju med brskanjem knjižnice.", - "EnableThemeVideos": "Tematski videi", "EnableThemeSongsHelp": "Predvajaj tematske pesmi v ozadju med brskanjem knjižnice.", - "EnableThemeSongs": "Glavne pesmi", "EnableStreamLoopingHelp": "Omogoči za prenose v živo ki vsebujejo zgolj nekaj sekund podatkov in jih je treba neprestano znova zahtevati. Če to ni potrebno lahko omogočanje povzroči težave.", "EnablePhotosHelp": "Fotografije bodo zaznane in prikazane skupaj z drugo predstavnostjo.", "EnablePhotos": "Prikaži fotografije", @@ -516,7 +497,6 @@ "LabelAppName": "Ime aplikacije", "LabelAppNameExample": "Primer: Sickbeard, Sonarr", "LabelArtistsHelp": "Loči več izvajalcev s podpičjem.", - "LabelAudio": "Zvok", "LabelAudioBitrate": "Bitna hitrost zvoka:", "LabelAudioChannels": "Kanali zvoka:", "LabelAudioCodec": "Zvočni kodek:", @@ -547,7 +527,6 @@ "LabelCustomCertificatePathHelp": "Pot do PKCS #12 datoteke, ki vsebuje certifikat in zasebni ključ, za omogočanje TLS povezave na domenah po meri.", "LabelCustomCss": "CSS po meri:", "LabelCustomCssHelp": "Določite vaš lasten slog spletnega vmesnika.", - "LabelCustomDeviceDisplayName": "Prikazano ime:", "LabelCustomDeviceDisplayNameHelp": "Določi prikazano ime naprave. Pusti prazno za uporabo imena kot ga sporoči naprava sama.", "LabelDefaultScreen": "Privzeti zaslon:", "LabelDateAdded": "Datum dodajanja:", @@ -566,13 +545,12 @@ "LabelCollection": "Zbirka:", "LabelCustomCertificatePath": "Lokacija SSL certifikata po meri:", "LabelDidlMode": "DIDL način:", - "LabelDisplayMissingEpisodesWithinSeasons": "Prikaži manjkajoče epizode znotraj sezon", "LabelDay": "Dan:", "LabelDeathDate": "Datum smrti:", "LabelBitrate": "Bitna hitrost:", "LabelBlastMessageInterval": "Interval sporočila o dostopnosti", "LabelDefaultUserHelp": "Določi knjižnica katerega uporabnika bo prikazana na povezanih napravah. To lahko preglasite s profili za posamezno napravo.", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Določi trajanje v sekundah med SSDP iskanji, ki jih izvede Jellyfin.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Določi trajanje v sekundah med SSDP iskanji.", "LabelEnableDlnaClientDiscoveryInterval": "Interval odkrivanja odjemalcev", "LabelEnableBlastAliveMessagesHelp": "Omogočite, če imajo UPnP naprave težave z zaznavanjem strežnika v omrežju.", "LabelEnableBlastAliveMessages": "Oddajaj sporočila o dostopnosti", @@ -588,7 +566,7 @@ "LabelDisplayOrder": "Vrstni red prikaza:", "LabelDisplayName": "Prikazano ime:", "LabelDisplayMode": "Način prikaza:", - "LabelBindToLocalNetworkAddressHelp": "Preglasi lokalni IP naslov za HTTP strežnik. V kolikor pustite prazno se strežnik poveže z vsemi možnimi naslovi. Sprememba vrednosti zahteva ponovni zagon Jellyfin strežnika.", + "LabelBindToLocalNetworkAddressHelp": "Preglasi lokalni IP naslov za HTTP strežnik. V kolikor pustite prazno se strežnik poveže z vsemi možnimi naslovi. Sprememba vrednosti zahteva ponovni zagon.", "InstallingPackage": "Nameščanje {0} (različica {1})", "ImportMissingEpisodesHelp": "Podatki o manjkajočih epizodah bodo dodani v bazo podatkov in prikazani znotraj sezon in serij. To lahko občutno podaljša čas uvoza v knjižnjico.", "ImportFavoriteChannelsHelp": "Uvoženi bodo zgolj programi, ki so na sprejemniku označeni kot priljubljeni.", @@ -783,7 +761,7 @@ "PleaseConfirmPluginInstallation": "Prosimo kliknite OK, da potrdite, da se strinjate z zgoraj napisanim in želite nadaljevati z namestitvijo dodatka.", "Programs": "Programi", "LabelTunerIpAddress": "IP naslov TV/radio sprejemnika:", - "PleaseRestartServerName": "Prosimo ponovno zaženite Jellyfin strežnik - {0}.", + "PleaseRestartServerName": "Prosimo ponovno zaženite Jellyfin na {0}.", "ProductionLocations": "Kraj produkcije", "OptionAllowRemoteSharedDevices": "Dovoli daljinsko upravljanje skupnih naprav", "OptionAllowRemoteSharedDevicesHelp": "DLNA naprave veljajo za skupne, dokler jih ne začne nadzirati uporabnik.", @@ -848,7 +826,6 @@ "LabelProtocol": "Protokol:", "LabelProfileVideoCodecs": "Video kodeki:", "LabelProfileCodecsHelp": "Ločeno z vejico. Če pustite prazno, velja za vse kodeke.", - "LabelPreferredDisplayLanguageHelp": "Prevajanje Jellyfin je projekt v teku.", "LabelPleaseRestart": "Spremembe bodo začele veljati po ročni osvežitvi spletnega vmesnika.", "LabelPlaylist": "Seznam predvajanja:", "LabelPlaceOfBirth": "Kraj rojstva:", @@ -884,8 +861,7 @@ "OptionArtist": "Izvajalec", "OptionAllowUserToManageServer": "Dovoli temu uporabniku upravljanje strežnika", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Naslednja mesta predstavnosti bodo odstranjena iz vaše knjižnice:", - "MessageSettingsSaved": "Nastavitve so bile shranjene.", - "MessagePluginInstallDisclaimer": "Dodatki ustvarjeni s strani članov Jellyfin skupnosti so odličen način za izboljšanje vaše izkušnje z Jellyfin z dodatnimi funkcijami in prednostmi. Preden namestite dodatke se zavedajte, da imajo lahko ti različne vplive na vaš Jellyfin strežnik, kot na primer počasnejše preiskovanje knjižnic, dodatna obdelava podatkov v ozadju in zmanjšana stabilnost sistema.", + "MessagePluginInstallDisclaimer": "Dodatki ustvarjeni s strani članov skupnosti so odličen način za izboljšanje vaše izkušnje z dodatnimi funkcijami in prednostmi. Preden namestite dodatke se zavedajte, da imajo lahko ti različne vplive na vaš strežnik, kot na primer počasnejše preiskovanje knjižnic, dodatna obdelava podatkov v ozadju in zmanjšana stabilnost sistema.", "MessagePleaseWait": "Prosimo, počakajte. To lahko traja nekaj minut.", "MessagePleaseEnsureInternetMetadata": "Prosimo poskrbite, da je prenašanje spletnih metapodatkov omogočeno.", "MessageNothingHere": "Tu ni nič.", @@ -902,13 +878,13 @@ "MessageEnablingOptionLongerScans": "Če omogočite to možnost, se lahko trajanje preiskovanja knjižnic občutno podaljša.", "MessageDownloadQueued": "Prenos na čakanju.", "MessageDirectoryPickerLinuxInstruction": "Za Linux na sistemu Arch Linux, CentOS, Debian, Fedora, openSUSE ali Ubuntu morate uporabniku storitve dodeliti vsaj dovoljenje za branje vaših shramb.", - "MessageDirectoryPickerBSDInstruction": "Za BSD boste morda morali nastaviti shrambo znotraj vašega FreeNAS Jail-a, da omogočite Jellyfin dostop.", + "MessageDirectoryPickerBSDInstruction": "Za BSD boste morda morali nastaviti shrambo znotraj vašega FreeNAS Jail-a, da omogočite Jellyfin dostop do predstavnosti.", "MessageDeleteTaskTrigger": "Ali ste prepričani, da želite izbrisati ta sprožilec opravil?", "MessageCreateAccountAt": "Ustvarite račun pri {0}", "MessageContactAdminToResetPassword": "Za ponastavitev gesla se obrnite na skrbnika sistema.", "MessageConfirmShutdown": "Ali ste prepričani, da želite zaustaviti strežnik?", - "MessageConfirmRevokeApiKey": "Ali ste prepričani, da želite razveljaviti ta API ključ? Povezava aplikacije z Jellyfin strežnikom bo nenadoma prekinjena.", - "MessageConfirmRestart": "Ali ste prepričani, da želite ponovno zagnati Jellyfin strežnik?", + "MessageConfirmRevokeApiKey": "Ali ste prepričani, da želite razveljaviti ta API ključ? Povezava aplikacije s strežnikom bo nenadoma prekinjena.", + "MessageConfirmRestart": "Ali ste prepričani, da želite ponovno zagnati Jellyfin?", "MessageConfirmRemoveMediaLocation": "Ali ste prepričani, da želite odstraniti to mesto?", "MessageConfirmRecordingCancellation": "Prekliči snemanje?", "MessageConfirmProfileDeletion": "Ali ste prepričani, da želite izbrisati ta profil?", @@ -970,7 +946,7 @@ "LabelVersion": "Različica:", "LabelSelectVersionToInstall": "Izberite različico za namestitev:", "Never": "Nikoli", - "ServerUpdateNeeded": "Jellyfin strežnik je potrebno posodobiti. Za prenos najnovejše različice prosimo obiščite {0}", + "ServerUpdateNeeded": "Ta strežnik je potrebno posodobiti. Za prenos najnovejše različice prosimo obiščite {0}", "LatestFromLibrary": "Najnovejši {0}", "LabelScheduledTaskLastRan": "Nazadnje zagnano {0}. Čas trajanja {1}.", "OptionRandom": "Naključno", @@ -1067,21 +1043,17 @@ "LabelSource": "Vir:", "LabelSkipIfGraphicalSubsPresentHelp": "Ohranjanje besedilnih različic podnapisov omogoča učinkovitejše predvajanje in zmanjša potrebo po prekodiranju.", "LabelTriggerType": "Tip sprožilca:", - "LabelTranscodingVideoCodec": "Video kodek:", "LabelTranscodingProgress": "Napredek prekodiranja:", "LabelTranscodingFramerate": "Hitrost prekodiranja:", "LabelTranscodes": "Prekodiranje:", "LabelTranscodingTempPathHelp": "Določite pot po meri za datoteke prekodiranja. Pustite prazno za uporabo privzete lokacije.", "LabelTranscodePath": "Pot prekodiranja:", - "LabelTranscodingContainer": "Kontejner:", - "LabelTranscodingAudioCodec": "Zvočni kodek:", "LabelTrackNumber": "Številka skladbe:", "LabelTime": "Čas:", "LabelTextColor": "Barva besedila:", "LabelTextBackgroundColor": "Barva ozadja besedila:", "LabelTag": "Oznaka:", "LabelSupportedMediaTypes": "Podprti tipi predstavnosti:", - "LabelSubtitles": "Podnapisi", "LabelSubtitlePlaybackMode": "Način podnapisov:", "LabelSubtitleFormatHelp": "Primer: srt", "LabelSubtitleDownloaders": "Pridobivanje podnapisov:", @@ -1112,7 +1084,6 @@ "Trailers": "Napovedniki", "TitleHardwareAcceleration": "Strojno pospeševanje", "Thursday": "Četrtek", - "TabTrailers": "Napovedniki", "ClientSettings": "Nastavitve odjemalca", "ButtonTogglePlaylist": "Seznam predvajanja", "Artist": "Izvajalec", @@ -1260,7 +1231,6 @@ "OptionDownloadBoxImage": "Ovitek", "OptionDownloadBannerImage": "Pasica", "OptionDownloadBackImage": "Nazaj", - "OptionAutomatic": "Samodejno", "OptionAuto": "Samodejno", "NextUp": "Sledi", "Next": "Naslednji", @@ -1286,8 +1256,6 @@ "LabelWeb": "Splet:", "LabelLineup": "Postava:", "BoxSet": "Komplet", - "TabInfo": "Informacije", - "TabEpisodes": "Epizode", "TabDirectPlay": "Neposredno predvajanje", "TabCodecs": "Kodeki", "OptionRegex": "Regex", @@ -1298,16 +1266,14 @@ "TabSettings": "Nastavitve", "TabServer": "Strežnik", "TabScheduledTasks": "Načrtovana opravila", - "TabResumeSettings": "Nadaljuj", "HeaderUninstallPlugin": "Odstrani dodatek", "UninstallPluginConfirmation": "Ali ste prepričan, da želite odstraniti {0}?", - "ServerRestartNeededAfterPluginInstall": "Po namestitvi dodatka bo potreben ponoven zagon jellyfin strežnika.", + "ServerRestartNeededAfterPluginInstall": "Po namestitvi dodatka bo potreben ponoven zagon jellyfin.", "TabResponses": "Odzivi", "TabPlugins": "Dodatki", "TabOther": "Ostalo", "TabNotifications": "Obvestila", "TabNfoSettings": "Nastavitve NFO", - "TabMusicVideos": "Videospoti", "OptionForceRemoteSourceTranscoding": "Vsili prekodiranje oddaljenih virov predstavnosti (na primer TV v živo)", "Off": "Izključeno", "Normal": "Normalno", diff --git a/src/strings/sr.json b/src/strings/sr.json index 22e2343e5e..90cbd0d9df 100644 --- a/src/strings/sr.json +++ b/src/strings/sr.json @@ -32,19 +32,16 @@ "ButtonParentalControl": "Родитељска контрола", "ButtonOpen": "Отвори", "ButtonOk": "Ок", - "ButtonOff": "Искључи", "ButtonNextTrack": "Следећа нумера", "ButtonNetwork": "Мрежа", "ButtonMore": "Више", "ButtonManualLogin": "Ручни логин", "ButtonLibraryAccess": "Приступ библиотеци", "ButtonInfo": "Информације", - "ButtonHome": "Почетна страна", "ButtonGuide": "Водич", "ButtonGotIt": "У реду", "ButtonFullscreen": "Пун екран", "ButtonForgotPassword": "Заборављена шифра", - "ButtonFilter": "Филтер", "ButtonChangeServer": "Промени Сервер", "ButtonCancel": "Откажи", "ButtonBack": "Назад", @@ -115,7 +112,6 @@ "ButtonWebsite": "Веб сајт", "ButtonUninstall": "Деинсталирај", "ButtonTrailer": "Трејлер", - "ButtonSubtitles": "Титлови", "ButtonSubmit": "Пошаљите", "ButtonSplit": "Подели", "ButtonStop": "Заустави", @@ -137,14 +133,10 @@ "ButtonRename": "Преименуј", "ButtonRemove": "Уклони", "ButtonRefreshGuideData": "Освежи податке водича", - "ButtonRefresh": "Освежи", "ButtonQuickStartGuide": "Кратки водич за почетак", "ButtonProfile": "Профил", "ButtonPreviousTrack": "Претходна нумера", - "ButtonPlay": "Пусти", "ButtonEditOtherUserPreferences": "Уредите профил корисника, слику и личне поставке.", - "ButtonEditImages": "Уреди слике", - "ButtonEdit": "Уреди", "BurnSubtitlesHelp": "Одређује да ли сервер треба да кодира титлове приликом транскодирања видео записа. Избегавање тога увелико ће побољшати перформансе. Изаберите Аутоматски да бисте снимили формате засноване на слици (VOBSUB, PGS, SUB, IDX) и одређене ASS или SSA титлове.", "BoxSet": "Бокс сет", "BookLibraryHelp": "Подржани су аудио и текстуалне књиге. Прегледајте {0} водич за именовање књига {1}.", diff --git a/src/strings/sv.json b/src/strings/sv.json index 50ad99be59..c5f82a59d7 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -54,29 +54,22 @@ "ButtonBack": "Föregående", "ButtonCancel": "Avbryt", "ButtonChangeServer": "Byt server", - "ButtonEdit": "Ändra", - "ButtonEditImages": "Ändra bilder", "ButtonEditOtherUserPreferences": "Ändra den här användarens profil, bild och personliga inställningar.", - "ButtonFilter": "Filtrera", "ButtonForgotPassword": "Glömt Lösenord", "ButtonFullscreen": "Fullskärm", "ButtonGotIt": "Ok", - "ButtonHome": "Hem", "ButtonLibraryAccess": "Biblioteksåtkomst", "ButtonManualLogin": "Manuell inloggning", "ButtonMore": "Mer", "ButtonNetwork": "Nätverk", "ButtonNextTrack": "Nästa spår", - "ButtonOff": "Av", "ButtonOk": "OK", "ButtonOpen": "Öppna", "ButtonParentalControl": "Föräldralås", "ButtonPause": "Paus", - "ButtonPlay": "Spela upp", "ButtonPreviousTrack": "Föregående spår", "ButtonProfile": "Profil", "ButtonQuickStartGuide": "Snabbstartguide", - "ButtonRefresh": "Uppdatera", "ButtonRefreshGuideData": "Uppdatera programguiden", "ButtonRemove": "Ta bort", "ButtonRename": "Ändra namn", @@ -96,7 +89,6 @@ "ButtonSignOut": "Logga ut", "ButtonStop": "Stopp", "ButtonSubmit": "Bekräfta", - "ButtonSubtitles": "Undertexter", "ButtonUninstall": "Avinstallera", "ButtonWebsite": "Hemsida", "CancelRecording": "Avbryt inspelning", @@ -175,9 +167,7 @@ "EnableNextVideoInfoOverlayHelp": "Vid slutet av en video, visa information om nästföljande video i spellistan.", "EnablePhotos": "Visa foton", "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.", - "EnableThemeSongs": "Signaturmelodi", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.", - "EnableThemeVideos": "Tema-videor", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.", "Ended": "Avslutad", "EndsAtValue": "Slutar vid: {0}", @@ -226,11 +216,9 @@ "HeaderActiveDevices": "Aktiva enheter", "HeaderActiveRecordings": "Pågående inspelningar", "HeaderActivity": "Aktivitet", - "HeaderAddScheduledTaskTrigger": "Lägg till utlösare", "HeaderAddToCollection": "Lägg till samling", "HeaderAddToPlaylist": "Lägg till i Spellista", "HeaderAddUpdateImage": "Lägg till/uppdatera bild", - "HeaderAddUser": "Lägg till användare", "HeaderAdditionalParts": "Ytterligare delar", "HeaderAlbumArtists": "Albumartister", "HeaderAlert": "Varning", @@ -241,11 +229,9 @@ "HeaderAudioBooks": "Ljudböcker", "HeaderAudioSettings": "Ljudinställningar", "HeaderBlockItemsWithNoRating": "Blockera innehåll med ingen eller okänd åldersgräns:", - "HeaderBooks": "Böcker", "HeaderCancelRecording": "Avbryt inspelning", "HeaderCancelSeries": "Avbryt serie", "HeaderCastAndCrew": "Medverkande", - "HeaderCastCrew": "Rollista & besättning", "HeaderChannelAccess": "Kanalåtkomst", "HeaderChapterImages": "Kapitelbilder", "HeaderCodecProfile": "Profil för videokodning", @@ -279,13 +265,11 @@ "HeaderEditImages": "Redigera bilder", "HeaderEnabledFields": "Aktiverade fält", "HeaderEnabledFieldsHelp": "Bocka ur ett fält för att låsa det och undvik att dess data ändras.", - "HeaderEpisodes": "Avsnitt", "HeaderError": "Fel", "HeaderExternalIds": "Externa ID:", "HeaderFeatureAccess": "Tillgång till funktioner", "HeaderFetchImages": "Hämta bilder:", "HeaderForKids": "För barn", - "HeaderForgotPassword": "Glömt Lösenord", "HeaderFrequentlyPlayed": "Ofta spelade", "HeaderGuideProviders": "Källor för programguide", "HeaderHttpHeaders": "HTTP headers", @@ -311,7 +295,6 @@ "HeaderLibrarySettings": "Biblioteksinställningar", "HeaderLoginFailure": "Misslyckad inloggning", "HeaderMediaFolders": "Mediamappar", - "HeaderMediaInfo": "Medieinformation", "HeaderMetadataSettings": "Metadatainställningar", "HeaderMoreLikeThis": "Mer som denna", "HeaderMusicQuality": "Musikkvalitet", @@ -435,7 +418,6 @@ "LabelAppNameExample": "Exempel: Sickbeard, Sonarr", "LabelArtists": "Artister:", "LabelArtistsHelp": "Separera med vid flera ;", - "LabelAudio": "Ljud", "LabelAudioLanguagePreference": "Önskat ljudspråk:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Uppdatera metadata automatiskt ifrån internet:", "LabelBindToLocalNetworkAddress": "Knyt till lokal nätverksadress:", @@ -462,7 +444,6 @@ "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format.", "LabelCustomCss": "Egen CSS-stil:", "LabelCustomCssHelp": "Använd din egen CSS-stil för webbgränssnittet.", - "LabelCustomDeviceDisplayName": "Visningsnamn:", "LabelCustomDeviceDisplayNameHelp": "Ange ett anpassat enhetsnamn. Lämna blankt för att använda det namn enheten själv rapporterar.", "LabelCustomRating": "Anpassad åldersgräns:", "LabelDateAdded": "Inlagd den:", @@ -479,7 +460,6 @@ "LabelDiscNumber": "Skivnummer:", "LabelDisplayLanguage": "Visningsspråk:", "LabelDisplayLanguageHelp": "Att översätta Jellyfin är ett pågående projekt.", - "LabelDisplayMissingEpisodesWithinSeasons": "Visa saknade avsnitt i säsonger", "LabelDisplayMode": "Visningsläge:", "LabelDisplayName": "Visningsnamn:", "LabelDisplayOrder": "Visningsordning:", @@ -630,7 +610,6 @@ "LabelPlayDefaultAudioTrack": "Använd det förvalda ljudspåret oavsett språk", "LabelPlaylist": "Spellista:", "LabelPreferredDisplayLanguage": "Föredraget visningsspråk:", - "LabelPreferredDisplayLanguageHelp": "Att översätta Jellyfin är ett pågående projekt.", "LabelPreferredSubtitleLanguage": "Önskat språk för undertexter:", "LabelProfileAudioCodecs": "Kodning av ljud:", "LabelProfileCodecs": "Videokodningar:", @@ -689,7 +668,6 @@ "LabelSubtitleDownloaders": "Undertextskällor:", "LabelSubtitleFormatHelp": "Exempel: srt", "LabelSubtitlePlaybackMode": "Undertextläge:", - "LabelSubtitles": "Undertexter", "LabelSupportedMediaTypes": "Mediaformat som stöds:", "LabelTVHomeScreen": "Hemskärm i TV-läge:", "LabelTag": "Etikett:", @@ -702,12 +680,9 @@ "LabelTimeLimitHours": "Tidsbegränsning (timmar):", "LabelTitle": "Titel:", "LabelTrackNumber": "Spår nr:", - "LabelTranscodingAudioCodec": "Ljudkodning:", - "LabelTranscodingContainer": "Behållare:", "LabelTranscodingTempPathHelp": "Ange en egen sökväg där omkodningar skall sparas för klienter. Lämna blankt för att använda förvald plats.", "LabelTranscodingThreadCount": "Trådar för omkodning:", "LabelTranscodingThreadCountHelp": "Välj maximala antalet trådar som ska användas vid omkodning. Att minska antalet trådar sänker cpu-belastningan men ökar även risken att omkodning inte kan ske snabbt nog för felfri uppspelning.", - "LabelTranscodingVideoCodec": "Videokodning:", "LabelTriggerType": "Typ av utlösare:", "LabelTunerIpAddress": "IP-adress till TV-mottagare:", "LabelTunerType": "Typ av TV-mottagare:", @@ -805,7 +780,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "Logga in på din din lokala Jellyfin Server för att konfigurera det här tillägget.", "MessagePluginInstallDisclaimer": "Tillägg skapade av Jellyfin-användare är ett bra sätt att förbättra din Jellyfin-upplevelse med ytterligare funktionalitet. Observera att detta kan påverka din Jellyfin-server så som längre tidsåtgång för biblioteksskanningar, ytterligare bakgrundsprocesser och minskad systemstabilitet.", "MessageReenableUser": "Se nedan för att aktivera igen", - "MessageSettingsSaved": "Inställningarna har sparats.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Följande mediaplatser kommer att tas bort från ditt bibliotek:", "MessageUnableToConnectToServer": "Vi kunde inte upprätta anslutning till vald server just nu. Försäkra dig om att den är påslagen och försök igen.", "MessageUnsetContentHelp": "Innehåll kommer visas som enkla mappar. För bästa resultat, använd en metadata-hanterare för att ställa in typ av innehåll för undermapparna.", @@ -1089,17 +1063,14 @@ "Sync": "Synk", "SystemDlnaProfilesHelp": "Systemprofiler är skrivskyddade. Ändringar av en systemprofil resulterar att en ny anpassad profil skapas.", "TabAdvanced": "Avancerat", - "TabAlbumArtists": "Albumartister", "TabCatalog": "Katalog", "TabCodecs": "Kodningsformat", "TabContainers": "Behållare", "TabDashboard": "Kontrollpanel", "TabDirectPlay": "Direktuppspelning", - "TabEpisodes": "Avsnitt", "TabLatest": "Nytillkommet", "TabLogs": "Loggfiler", "TabMusic": "Musik", - "TabMusicVideos": "Musikvideor", "TabMyPlugins": "Mina tillägg", "TabNetworks": "TV-bolag", "TabNfoSettings": "NFO-inställingar", @@ -1110,7 +1081,6 @@ "TabProfile": "Profil", "TabProfiles": "Profiler", "TabResponses": "Svar", - "TabResumeSettings": "Återuppta", "TabScheduledTasks": "Schemalagda aktiviteter", "TabSettings": "Inställningar", "TabStreaming": "Strömning", @@ -1208,7 +1178,6 @@ "AllowMediaConversion": "Tillåt media konvertering", "Alerts": "Alarm", "HeaderMedia": "Media", - "HeaderHome": "Hem", "HeaderFavoriteVideos": "Favoritvideor", "HeaderFavoriteSongs": "Favoritlåtar", "HeaderFavoriteArtists": "Favoritartister", @@ -1273,10 +1242,8 @@ "UserAgentHelp": "Stöd en egen user-agent HTTP rubrik.", "Uniform": "Enhetlig", "Trailers": "Trailers", - "TabTrailers": "Trailers", "TabServer": "Server", "TabNetworking": "Nätverk", - "TabInfo": "Info", "TabAccess": "Tillgång", "TV": "TV", "SubtitleOffset": "Undertext justering", @@ -1310,7 +1277,6 @@ "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionBlockTrailers": "Trailers", "OptionBanner": "Banner", - "OptionAutomatic": "Auto", "OptionAuto": "Auto", "OptionArtist": "Artist", "OptionForceRemoteSourceTranscoding": "Tvinga omkodning på fjärr media källor (som LiveTV)", diff --git a/src/strings/ta.json b/src/strings/ta.json index 5914a3bdd5..439231e2c7 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -95,10 +95,7 @@ "ButtonGotIt": "அறிந்துகொண்டேன்", "ButtonFullscreen": "முழு திரை", "ButtonForgotPassword": "கடவுச்சொல்லை மறந்துவிட்டீர்களா", - "ButtonFilter": "வடிகட்டு", "ButtonEditOtherUserPreferences": "இந்த பயனரின் சுயவிவரம், படம் மற்றும் தனிப்பட்ட விருப்பங்களைத் திருத்தவும்.", - "ButtonEditImages": "படங்களைத் திருத்து", - "ButtonEdit": "தொகு", "ButtonDownload": "பதிவிறக்க", "ButtonDown": "கீழே", "ButtonDeleteImage": "படத்தை நீக்கு", @@ -112,7 +109,6 @@ "ButtonUninstall": "நிறுவல் நீக்கு", "ButtonTrailer": "டிரெய்லர்", "ButtonTogglePlaylist": "பிளேலிஸ்ட்", - "ButtonSubtitles": "வசன வரிகள்", "ButtonSubmit": "சமர்ப்பிக்கவும்", "ButtonSplit": "பிரிக்கவும்", "ButtonStop": "நிறுத்து", @@ -136,16 +132,13 @@ "ButtonRename": "மறுபெயரிடு", "ButtonRemove": "அகற்று", "ButtonRefreshGuideData": "வழிகாட்டி தரவைப் புதுப்பிக்கவும்", - "ButtonRefresh": "புதுப்பிப்பு", "ButtonQuickStartGuide": "விரைவு தொடக்க வழிகாட்டி", "ButtonProfile": "சுயவிவரம்", "ButtonPreviousTrack": "முந்தைய பாடல்", - "ButtonPlay": "வாசிக்கவும்", "ButtonPause": "இடைநிறுத்தம்", "ButtonParentalControl": "பெற்றோர் கட்டுப்பாடு", "ButtonOpen": "திற", "ButtonOk": "சரி", - "ButtonOff": "முடக்கு", "ButtonNextTrack": "அடுத்த பாடல்", "ButtonNew": "புதியது", "ButtonNetwork": "வலைப்பின்னல்", @@ -153,7 +146,6 @@ "ButtonManualLogin": "கைமுறை புகுபதிகை", "ButtonLibraryAccess": "நூலக அனுமதி", "ButtonInfo": "தகவல்", - "ButtonHome": "முகப்பு", "ButtonGuide": "வழிகாட்டி", "Categories": "பிரிவுகள்", "CancelSeries": "தொடரை ரத்துசெய்", @@ -171,9 +163,7 @@ "EnableDetailsBannerHelp": "உருப்படி விவரங்கள் பக்கத்தின் மேலே ஒரு பேனர் படத்தைக் காண்பி.", "EnableDetailsBanner": "விவரங்கள் பேனர்", "EnableThemeVideosHelp": "நூலகத்தில் உலாவும்போது பின்னணியில் தீம் வீடியோக்களை இயக்குங்கள்.", - "EnableThemeVideos": "தீம் வீடியோக்கள்", "EnableThemeSongsHelp": "நூலகத்தில் உலாவும்போது பின்னணியில் தீம் பாடல்களை இயக்குங்கள்.", - "EnableThemeSongs": "தீம் பாடல்கள்", "EnableStreamLoopingHelp": "நேரடி ஸ்ட்ரீம்களில் சில வினாடிகள் மட்டுமே தரவு இருந்தால் தொடர்ந்து இயக்கப்பட வேண்டும். தேவைப்படாதபோது இதை இயக்குவது சிக்கல்களை ஏற்படுத்தக்கூடும்.", "EnableStreamLooping": "ஆட்டோ-லூப் லைவ் ஸ்ட்ரீம்கள்", "EnablePhotosHelp": "பிற ஊடக கோப்புகளுடன் படங்கள் கண்டறியப்பட்டு காண்பிக்கப்படும்.", @@ -271,12 +261,10 @@ "HeaderCodecProfile": "கோடெக் சுயவிவரம்", "HeaderChapterImages": "பாடம் படங்கள்", "HeaderChannelAccess": "சேனல் அணுகல்", - "HeaderCastCrew": "நடிகர்கள் & குழு", "HeaderCastAndCrew": "நடிகர்கள் & குழு", "HeaderCancelSeries": "தொடரை ரத்துசெய்", "HeaderCancelRecording": "பதிவை ரத்துசெய்", "HeaderBranding": "பிராண்டிங்", - "HeaderBooks": "புத்தகங்கள்", "HeaderBlockItemsWithNoRating": "இல்லை அல்லது அங்கீகரிக்கப்படாத மதிப்பீட்டு தகவல் இல்லாத உருப்படிகளைத் தடு:", "HeaderAudioSettings": "ஆடியோ அமைப்புகள்", "HeaderAudioBooks": "ஆடியோ புத்தகங்கள்", @@ -290,11 +278,9 @@ "HeaderAlert": "எச்சரிக்கை", "HeaderAdmin": "நிர்வாகம்", "HeaderAdditionalParts": "கூடுதல் பாகங்கள்", - "HeaderAddUser": "பயனரைச் சேர்க்கவும்", "HeaderAddUpdateImage": "படத்தைச் சேர்க்கவும் / புதுப்பிக்கவும்", "HeaderAddToPlaylist": "பட்டியலில் சேர்", "HeaderAddToCollection": "சேகரிப்பில் சேர்", - "HeaderAddScheduledTaskTrigger": "தூண்டுதலைச் சேர்க்கவும்", "HeaderActivity": "செயல்பாடு", "HeaderActiveRecordings": "செயலில் பதிவுகள்", "HeaderActiveDevices": "செயலில் உள்ள சாதனங்கள்", @@ -343,7 +329,6 @@ "HeaderFavoriteBooks": "பிடித்த புத்தகங்கள்", "HeaderExternalIds": "வெளி ஐடிகள்:", "HeaderError": "பிழை", - "HeaderEpisodes": "அத்தியாயங்கள்", "HeaderEnabledFieldsHelp": "ஒரு புலத்தை பூட்டவும், அதன் தரவு மாற்றப்படுவதைத் தடுக்கவும் தேர்வுநீக்கு.", "HeaderEnabledFields": "இயக்கப்பட்ட புலங்கள்", "HeaderEditImages": "படங்களைத் திருத்து", @@ -433,7 +418,6 @@ "HeaderMusicQuality": "இசை தரம்", "HeaderMoreLikeThis": "இது போன்றது", "HeaderMetadataSettings": "மெட்டாடேட்டா அமைப்புகள்", - "HeaderMediaInfo": "மீடியா தகவல்", "HeaderMediaFolders": "மீடியா கோப்புறைகள்", "HeaderMedia": "மீடியா", "HeaderLoginFailure": "உள்நுழைவு தோல்வி", @@ -461,10 +445,8 @@ "HeaderIdentification": "அடையாளம்", "HeaderHttpsSettings": "HTTPS அமைப்புகள்", "HeaderHttpHeaders": "HTTP தலைப்புகள்", - "HeaderHome": "முகப்பு", "HeaderGuideProviders": "டிவி வழிகாட்டி தரவு வழங்குநர்கள்", "HeaderFrequentlyPlayed": "அடிக்கடி இசைக்கும்", - "HeaderForgotPassword": "கடவுச்சொல்லை மறந்துவிட்டீர்களா", "HeaderForKids": "குழந்தைகளுக்காக", "HeaderFetcherSettings": "பெறுதல் அமைப்புகள்", "HeaderFetchImages": "படங்களை பெறுங்கள்:", @@ -539,7 +521,6 @@ "LabelAudioChannels": "ஆடியோ சேனல்கள்:", "LabelAudioBitrate": "ஆடியோ பிட்ரேட்:", "LabelAudioBitDepth": "ஆடியோ பிட் ஆழம்:", - "LabelAudio": "ஆடியோ", "LabelArtistsHelp": "அரைக்காற்புள்ளியுடன் பல கலைஞர்களைப் பிரிக்கவும்.", "LabelArtists": "கலைஞர்கள்:", "LabelAppNameExample": "எடுத்துக்காட்டு: Sickbeard, Sonarr", @@ -573,7 +554,6 @@ "LabelDisplayOrder": "காட்சி வரிசை:", "LabelDisplayName": "காட்சி பெயர்:", "LabelDisplayMode": "காட்சி முறை:", - "LabelDisplayMissingEpisodesWithinSeasons": "காணாமல் போன அத்தியாயங்களை பருவங்களுக்குள் காண்பி", "LabelDisplayLanguageHelp": "ஜெல்லிஃபின் மொழிபெயர்ப்பது ஒரு தொடர்ச்சியான திட்டம்.", "LabelDisplayLanguage": "காட்சி மொழி:", "LabelDiscNumber": "வட்டு எண்:", @@ -591,7 +571,6 @@ "LabelDateAdded": "சேர்க்கப்பட்ட தேதி:", "LabelCustomRating": "தனிப்பயன் மதிப்பீடு:", "LabelCustomDeviceDisplayNameHelp": "தனிப்பயன் காட்சி பெயரை வழங்கவும் அல்லது சாதனத்தால் புகாரளிக்கப்பட்ட பெயரைப் பயன்படுத்த காலியாக விடவும்.", - "LabelCustomDeviceDisplayName": "காட்சி பெயர்:", "LabelCustomCssHelp": "வலை இடைமுகத்தில் உங்கள் சொந்த தனிப்பயன் பாணிகளைப் பயன்படுத்துங்கள்.", "LabelCustomCss": "தனிப்பயன் CSS:", "LabelCustomCertificatePathHelp": "தனிப்பயன் களத்தில் TLS ஆதரவை இயக்க சான்றிதழ் மற்றும் தனிப்பட்ட விசையைக் கொண்ட PKCS # 12 கோப்பிற்கான பாதை.", @@ -816,7 +795,6 @@ "LabelTunerType": "ட்யூனர் வகை:", "LabelTunerIpAddress": "ட்யூனர் ஐபி முகவரி:", "LabelTriggerType": "தூண்டுதல் வகை:", - "LabelTranscodingVideoCodec": "வீடியோ கோடெக்:", "LabelTranscodingThreadCountHelp": "டிரான்ஸ்கோடிங் செய்யும்போது பயன்படுத்த வேண்டிய அதிகபட்ச நூல்களைத் தேர்ந்தெடுக்கவும். நூல் எண்ணிக்கையைக் குறைப்பது CPU பயன்பாட்டைக் குறைக்கும், ஆனால் மென்மையான பின்னணி அனுபவத்திற்கு போதுமானதாக மாற்றாது.", "LabelTranscodingThreadCount": "டிரான்ஸ்கோடிங் நூல் எண்ணிக்கை:", "LabelTranscodingProgress": "டிரான்ஸ்கோடிங் முன்னேற்றம்:", @@ -824,8 +802,6 @@ "LabelTranscodes": "டிரான்ஸ்கோட்கள்:", "LabelTranscodingTempPathHelp": "வாடிக்கையாளர்களுக்கு வழங்கப்பட்ட டிரான்ஸ்கோட் கோப்புகளுக்கான தனிப்பயன் பாதையை குறிப்பிடவும். சேவையக இயல்புநிலையைப் பயன்படுத்த காலியாக விடவும்.", "LabelTranscodePath": "டிரான்ஸ்கோட் பாதை:", - "LabelTranscodingContainer": "கொள்கலன்:", - "LabelTranscodingAudioCodec": "ஆடியோ கோடெக்:", "LabelTrackNumber": "ட்ராக் எண்:", "LabelTitle": "தலைப்பு:", "LabelTimeLimitHours": "கால எல்லை (மணிநேரம்):", @@ -850,7 +826,6 @@ "MillisecondsUnit": "ms", "LabelSyncPlayTimeOffset": "சேவையகத்துடன் நேரம் ஈடுசெய்யப்பட்டது:", "LabelSupportedMediaTypes": "ஆதரிக்கப்படும் ஊடக வகைகள்:", - "LabelSubtitles": "வசன வரிகள்", "LabelSubtitlePlaybackMode": "வசன முறை:", "LabelSubtitleFormatHelp": "எடுத்துக்காட்டு: srt", "LabelSubtitleDownloaders": "வசன பதிவிறக்கிகள்:", @@ -917,10 +892,569 @@ "LabelProfileCodecs": "கோடெக்குகள்:", "LabelProfileAudioCodecs": "ஆடியோ கோடெக்குகள்:", "LabelPreferredSubtitleLanguage": "விருப்பமான வசன மொழி:", - "LabelPreferredDisplayLanguageHelp": "ஜெல்லிஃபின் மொழிபெயர்ப்பது ஒரு தொடர்ச்சியான திட்டம்.", "LabelPreferredDisplayLanguage": "விருப்பமான காட்சி மொழி:", "LabelPostProcessorArgumentsHelp": "பதிவு கோப்புக்கான பாதையாக {path} ஐப் பயன்படுத்தவும்.", "LabelPostProcessorArguments": "பிந்தைய செயலி கட்டளை வரி வாதங்கள்:", "LabelPostProcessor": "செயலாக்கத்திற்கு பிந்தைய பயன்பாடு:", - "MapChannels": "சேனல் மேப்பிங்" + "MapChannels": "சேனல் மேப்பிங்", + "MoveLeft": "இடதுபுறமாக நகர்த்தவும்", + "MoreMediaInfo": "மீடியா தகவல்", + "MoreUsersCanBeAddedLater": "டாஷ்போர்டுக்குள் இருந்து அதிகமான பயனர்களை பின்னர் சேர்க்கலாம்.", + "MoreFromValue": "{0} இலிருந்து மேலும்", + "Monday": "திங்கட்கிழமை", + "Mobile": "கைபேசி", + "MinutesBefore": "நிமிடங்களுக்கு முன்", + "MinutesAfter": "நிமிடங்கள் கழித்து", + "MetadataSettingChangeHelp": "மெட்டாடேட்டா அமைப்புகளை மாற்றுவது புதிய உள்ளடக்கத்தை முன்னோக்கி செல்லும். இருக்கும் உள்ளடக்கத்தைப் புதுப்பிக்க, விவரம் திரையைத் திறந்து புதுப்பிப்பு பொத்தானைக் கிளிக் செய்க, அல்லது மெட்டாடேட்டா நிர்வாகியைப் பயன்படுத்தி மொத்தமாக புதுப்பிப்புகளைச் செய்யுங்கள்.", + "MetadataManager": "மெட்டாடேட்டா மேலாளர்", + "Metadata": "மெட்டாடேட்டா", + "MessageSyncPlayErrorMedia": "ஒத்திசைவை இயக்குவதில் தோல்வி! மீடியா பிழை.", + "MessageSyncPlayErrorMissingSession": "ஒத்திசைவை இயக்குவதில் தோல்வி! அமர்வு இல்லை.", + "MessageSyncPlayErrorNoActivePlayer": "செயலில் உள்ள எந்த பிளேயரும் கிடைக்கவில்லை. ஒத்திசைவு முடக்கப்பட்டுள்ளது.", + "MessageSyncPlayErrorAccessingGroups": "குழுக்கள் பட்டியலை அணுகும்போது பிழை ஏற்பட்டது.", + "MessageSyncPlayLibraryAccessDenied": "இந்த உள்ளடக்கத்திற்கான அணுகல் தடைசெய்யப்பட்டுள்ளது.", + "MessageSyncPlayJoinGroupDenied": "ஒத்திசைவைப் பயன்படுத்த அனுமதி தேவை.", + "MessageSyncPlayCreateGroupDenied": "ஒரு குழுவை உருவாக்க அனுமதி தேவை.", + "MessageSyncPlayGroupDoesNotExist": "குழு இல்லாததால் குழுவில் சேர முடியவில்லை.", + "MessageSyncPlayPlaybackPermissionRequired": "பின்னணி அனுமதி தேவை.", + "MessageSyncPlayNoGroupsAvailable": "குழுக்கள் எதுவும் கிடைக்கவில்லை. முதலில் ஏதாவது வாசிக்க தொடங்குங்கள்.", + "MessageSyncPlayGroupWait": "{0} இடையகப்படுத்துகிறது…", + "MessageSyncPlayUserLeft": "{0} குழுவிலிருந்து வெளியேறினார்.", + "MessageSyncPlayUserJoined": "{0} குழுவில் சேர்ந்துள்ளார்.", + "MessageSyncPlayDisabled": "ஒத்திசைவு முடக்கப்பட்டது.", + "MessageSyncPlayEnabled": "ஒத்திசைவு இயக்கப்பட்டது.", + "MessageYouHaveVersionInstalled": "நீங்கள் தற்போது {0} பதிப்பை நிறுவியுள்ளீர்கள்.", + "MessageUnsetContentHelp": "உள்ளடக்கம் எளிய கோப்புறைகளாக காண்பிக்கப்படும். சிறந்த முடிவுகளுக்கு துணை கோப்புறைகளின் உள்ளடக்க வகைகளை அமைக்க மெட்டாடேட்டா நிர்வாகியைப் பயன்படுத்தவும்.", + "MessageUnableToConnectToServer": "தேர்ந்தெடுக்கப்பட்ட சேவையகத்துடன் இப்போது எங்களால் இணைக்க முடியவில்லை. இது இயங்குவதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "உங்கள் நூலகத்திலிருந்து பின்வரும் ஊடக இருப்பிடங்கள் அகற்றப்படும்:", + "MessageReenableUser": "மீண்டும் இயக்க கீழே காண்க", + "MessagePluginInstallDisclaimer": "கூடுதல் அம்சங்கள் மற்றும் நன்மைகளுடன் உங்கள் அனுபவத்தை மேம்படுத்த சமூக உறுப்பினர்களால் உருவாக்கப்பட்ட செருகுநிரல்கள் சிறந்த வழியாகும். நிறுவுவதற்கு முன், உங்கள் சேவையகத்தில் அவை நீண்ட நூலக ஸ்கேன், கூடுதல் பின்னணி செயலாக்கம் மற்றும் கணினி நிலைத்தன்மை குறைதல் போன்ற விளைவுகளைப் பற்றி எச்சரிக்கையாக இருங்கள்.", + "MessagePluginConfigurationRequiresLocalAccess": "இந்த சொருகி கட்டமைக்க உங்கள் உள்ளூர் சேவையகத்தில் நேரடியாக உள்நுழைக.", + "MessagePleaseWait": "தயவுசெய்து காத்திருங்கள். இதற்கு ஒரு நிமிடம் ஆகலாம்.", + "MessagePleaseEnsureInternetMetadata": "இணைய மெட்டாடேட்டாவைப் பதிவிறக்குவது இயக்கப்பட்டிருப்பதை உறுதிசெய்க.", + "MessagePlayAccessRestricted": "இந்த உள்ளடக்கத்தின் பின்னணி தற்போது தடைசெய்யப்பட்டுள்ளது. மேலும் தகவலுக்கு உங்கள் சேவையக நிர்வாகியைத் தொடர்பு கொள்ளவும்.", + "MessagePasswordResetForUsers": "பின்வரும் பயனர்கள் தங்கள் கடவுச்சொற்களை மீட்டமைத்துள்ளனர். மீட்டமைப்பைச் செய்யப் பயன்படுத்தப்பட்ட முள் குறியீடுகளுடன் அவர்கள் இப்போது உள்நுழையலாம்.", + "MessageNothingHere": "இங்கு எதுவுமில்லை.", + "MessageNoTrailersFound": "இணைய டிரெய்லர்களின் நூலகத்தைச் சேர்ப்பதன் மூலம் உங்கள் திரைப்பட அனுபவத்தை மேம்படுத்த டிரெய்லர்கள் சேனலை நிறுவவும்.", + "MessageNoServersAvailable": "தானியங்கி சேவையக கண்டுபிடிப்பைப் பயன்படுத்தி சேவையகங்கள் எதுவும் கண்டுபிடிக்கப்படவில்லை.", + "MessageNoPluginsInstalled": "உங்களிடம் செருகுநிரல்கள் எதுவும் நிறுவப்படவில்லை.", + "MessageNoMovieSuggestionsAvailable": "திரைப்பட பரிந்துரைகள் எதுவும் தற்போது கிடைக்கவில்லை. உங்கள் திரைப்படங்களைப் பார்க்கவும் மதிப்பீடு செய்யவும் தொடங்கவும், பின்னர் உங்கள் பரிந்துரைகளைக் காண மீண்டும் வாருங்கள்.", + "MessageNoGenresAvailable": "இணையத்திலிருந்து வகைகளை இழுக்க சில மெட்டாடேட்டா வழங்குநர்களை இயக்கவும்.", + "MessageNoCollectionsAvailable": "திரைப்படங்கள், தொடர் மற்றும் ஆல்பங்களின் தனிப்பயனாக்கப்பட்ட குழுக்களை அனுபவிக்க தொகுப்புகள் உங்களை அனுமதிக்கின்றன. தொகுப்புகளை உருவாக்கத் தொடங்க + பொத்தானைக் கிளிக் செய்க.", + "MessageAddRepository": "நீங்கள் ஒரு களஞ்சியத்தைச் சேர்க்க விரும்பினால், தலைப்புக்கு அடுத்துள்ள பொத்தானைக் கிளிக் செய்து கோரப்பட்ட தகவலை நிரப்பவும்.", + "LabelRepositoryNameHelp": "உங்கள் சேவையகத்தில் சேர்க்கப்பட்ட மற்றவர்களிடமிருந்து இந்த களஞ்சியத்தை வேறுபடுத்துவதற்கான தனிப்பயன் பெயர்.", + "LabelRepositoryName": "களஞ்சிய பெயர்", + "LabelRepositoryUrlHelp": "நீங்கள் சேர்க்க விரும்பும் களஞ்சிய மேனிஃபெஸ்டின் இடம்.", + "LabelRepositoryUrl": "களஞ்சிய URL", + "HeaderNewRepository": "புதிய களஞ்சியம்", + "MessageNoRepositories": "களஞ்சியங்கள் இல்லை.", + "MessageNoAvailablePlugins": "கிடைக்கக்கூடிய செருகுநிரல்கள் இல்லை.", + "MessageLeaveEmptyToInherit": "பெற்றோர் உருப்படி அல்லது உலகளாவிய இயல்புநிலை மதிப்பிலிருந்து அமைப்புகளைப் பெறுவதற்கு காலியாக விடவும்.", + "MessageItemsAdded": "உருப்படிகள் சேர்க்கப்பட்டன.", + "MessageItemSaved": "உருப்படி சேமிக்கப்பட்டது.", + "MessageInvalidUser": "தவறான பயனர்பெயர் அல்லது கடவுச்சொல். தயவுசெய்து மீண்டும் முயற்சி செய்க.", + "MessageInvalidForgotPasswordPin": "தவறான அல்லது காலாவதியான முள் குறியீடு உள்ளிடப்பட்டது. தயவுசெய்து மீண்டும் முயற்சி செய்க.", + "MessageImageTypeNotSelected": "கீழ்தோன்றும் மெனுவிலிருந்து பட வகையைத் தேர்ந்தெடுக்கவும்.", + "MessageImageFileTypeAllowed": "JPEG மற்றும் PNG கோப்புகள் மட்டுமே ஆதரிக்கப்படுகின்றன.", + "MessageForgotPasswordInNetworkRequired": "கடவுச்சொல் மீட்டமைப்பு செயல்முறையைத் தொடங்க உங்கள் வீட்டு நெட்வொர்க்கில் மீண்டும் முயற்சிக்கவும்.", + "MessageForgotPasswordFileCreated": "பின்வரும் கோப்பு உங்கள் சேவையகத்தில் உருவாக்கப்பட்டது மற்றும் எவ்வாறு தொடரலாம் என்பதற்கான வழிமுறைகளைக் கொண்டுள்ளது:", + "MessageFileReadError": "கோப்பைப் படிப்பதில் பிழை ஏற்பட்டது. தயவுசெய்து மீண்டும் முயற்சி செய்க.", + "MessageEnablingOptionLongerScans": "இந்த விருப்பத்தை இயக்குவது கணிசமாக நீண்ட நூலக ஸ்கேன்களுக்கு வழிவகுக்கும்.", + "MessageDownloadQueued": "பதிவிறக்கம் வரிசைப்படுத்தப்பட்டுள்ளது.", + "MessageDirectoryPickerLinuxInstruction": "Arch Linux, CentOS, Debian, Fedora, openSUSE அல்லது Ubuntu ஆகியவற்றில் லினக்ஸைப் பொறுத்தவரை, சேவை பயனருக்கு உங்கள் சேமிப்பிட இருப்பிடங்களுக்கு குறைந்தபட்சம் படிக்க அணுகலை வழங்க வேண்டும்.", + "MessageDirectoryPickerBSDInstruction": "BSD ஐப் பொறுத்தவரை, உங்கள் FreeNAS சிறைக்குள் சேமிப்பிடத்தை உள்ளமைக்க வேண்டியிருக்கலாம், எனவே ஜெல்லிஃபின் உங்கள் மீடியாவை அணுக முடியும்.", + "MessageDeleteTaskTrigger": "இந்த பணி தூண்டுதலை நீக்க விரும்புகிறீர்களா?", + "MessageCreateAccountAt": "{0} இல் ஒரு கணக்கை உருவாக்கவும்", + "MessageContactAdminToResetPassword": "உங்கள் கடவுச்சொல்லை மீட்டமைக்க உங்கள் கணினி நிர்வாகியைத் தொடர்பு கொள்ளவும்.", + "MessageConfirmShutdown": "சேவையகத்தை நிறுத்த விரும்புகிறீர்களா?", + "MessageConfirmRevokeApiKey": "இந்த API விசையை திரும்பப் பெற விரும்புகிறீர்களா? இந்த சேவையகத்திற்கான பயன்பாட்டின் இணைப்பு திடீரென நிறுத்தப்படும்.", + "MessageConfirmRestart": "ஜெல்லிஃபின் மறுதொடக்கம் செய்ய விரும்புகிறீர்களா?", + "MessageConfirmRemoveMediaLocation": "இந்த இருப்பிடத்தை அகற்ற விரும்புகிறீர்களா?", + "MessageConfirmRecordingCancellation": "பதிவை ரத்து செய்யவா?", + "MessageConfirmProfileDeletion": "இந்த சுயவிவரத்தை நீக்க விரும்புகிறீர்களா?", + "MessageConfirmDeleteTunerDevice": "இந்த சாதனத்தை நீக்க விரும்புகிறீர்களா?", + "MessageConfirmDeleteGuideProvider": "இந்த வழிகாட்டி வழங்குநரை நீக்க விரும்புகிறீர்களா?", + "MessageConfirmAppExit": "நீங்கள் வெளியேற விரும்புகிறீர்களா?", + "MessageAreYouSureYouWishToRemoveMediaFolder": "இந்த மீடியா கோப்புறையை அகற்ற விரும்புகிறீர்களா?", + "MessageAreYouSureDeleteSubtitles": "இந்த வசன கோப்பை நீக்க விரும்புகிறீர்களா?", + "MessageAlreadyInstalled": "இந்த பதிப்பு ஏற்கனவே நிறுவப்பட்டுள்ளது.", + "Menu": "பட்டியல்", + "MediaIsBeingConverted": "மீடியா இயங்கும் சாதனத்துடன் பொருந்தக்கூடிய வடிவமாக ஊடகங்கள் மாற்றப்படுகின்றன.", + "MediaInfoStreamTypeVideo": "காணொளி", + "MediaInfoStreamTypeSubtitle": "வசன வரிகள்", + "MediaInfoStreamTypeEmbeddedImage": "உட்பொதிக்கப்பட்ட படம்", + "MediaInfoStreamTypeData": "தகவல்", + "MediaInfoStreamTypeAudio": "ஆடியோ", + "MediaInfoTimestamp": "நேர முத்திரை", + "MediaInfoSize": "அளவு", + "MediaInfoSampleRate": "மாதிரி விகிதம்", + "MediaInfoResolution": "தெளிவுத்திறன்", + "MediaInfoRefFrames": "குறிப்பு கட்டமைப்பு", + "MediaInfoProfile": "சுயவிவரம்", + "MediaInfoPixelFormat": "பிக்சல் வடிவம்", + "MediaInfoPath": "பாதை", + "MediaInfoLevel": "நிலை", + "MediaInfoLayout": "தளவமைப்பு", + "MediaInfoLanguage": "மொழி", + "MediaInfoInterlaced": "ஒன்றோடொன்று", + "MediaInfoFramerate": "ஃப்ரேமரேட்", + "MediaInfoForced": "கட்டாயப்படுத்தப்பட்டது", + "MediaInfoExternal": "வெளிப்புறம்", + "MediaInfoDefault": "இயல்புநிலை", + "MediaInfoContainer": "கொள்கலன்", + "MediaInfoCodecTag": "கோடெக் குறிச்சொல்", + "MediaInfoCodec": "கோடெக்", + "MediaInfoChannels": "சேனல்கள்", + "MediaInfoBitrate": "பிட்ரேட்", + "MediaInfoBitDepth": "பிட் ஆழம்", + "MediaInfoAspectRatio": "விகித விகிதம்", + "MediaInfoAnamorphic": "அனமார்பிக்", + "MaxParentalRatingHelp": "அதிக மதிப்பீட்டைக் கொண்ட உள்ளடக்கம் இந்த பயனரிடமிருந்து மறைக்கப்படும்.", + "MarkUnplayed": "வாசிக்கப்படாதது குறி இடு", + "MarkPlayed": "வாசிக்கப்பட்டது குறி இடு", + "OptionEveryday": "தினமும்", + "OptionEstimateContentLength": "டிரான்ஸ்கோடிங் செய்யும் போது உள்ளடக்க நீளத்தை மதிப்பிடுங்கள்", + "OptionEquals": "சமம்", + "OptionEnded": "முடிந்தது", + "OptionEnableM2tsModeHelp": "Mpegts க்கு குறியாக்கம் செய்யும் போது m2ts பயன்முறையை இயக்கவும்.", + "OptionEnableM2tsMode": "M2ts பயன்முறையை இயக்கு", + "OptionEnableForAllTuners": "அனைத்து ட்யூனர் சாதனங்களுக்கும் இயக்கு", + "OptionEnableExternalContentInSuggestionsHelp": "பரிந்துரைக்கப்பட்ட உள்ளடக்கத்தில் இணைய டிரெய்லர்கள் மற்றும் நேரடி தொலைக்காட்சி நிரல்களை சேர்க்க அனுமதிக்கவும்.", + "OptionEnableExternalContentInSuggestions": "பரிந்துரைகளில் வெளிப்புற உள்ளடக்கத்தை இயக்கவும்", + "OptionEnableAccessToAllLibraries": "எல்லா நூலகங்களுக்கும் அணுகலை இயக்கவும்", + "OptionEnableAccessToAllChannels": "எல்லா சேனல்களுக்கும் அணுகலை இயக்கவும்", + "OptionEnableAccessFromAllDevices": "எல்லா சாதனங்களிலிருந்தும் அணுகலை இயக்கவும்", + "OptionEmbedSubtitles": "கொள்கலனுக்குள் உட்பொதிக்கவும்", + "OptionDvd": "டிவிடி", + "OptionDownloadThumbImage": "சிறுபடம்", + "OptionDownloadPrimaryImage": "முதன்மை", + "OptionDownloadMenuImage": "பட்டியல்", + "OptionDownloadLogoImage": "லோகோ", + "OptionDownloadImagesInAdvanceHelp": "இயல்பாக, பெரும்பாலான படங்கள் கிளையன்ட் கோரியபோது மட்டுமே பதிவிறக்கப்படும். புதிய மீடியா இறக்குமதி செய்யப்படுவதால், எல்லா படங்களையும் முன்கூட்டியே பதிவிறக்க இந்த விருப்பத்தை இயக்கவும். இது கணிசமாக நீண்ட நூலக ஸ்கேன்களை ஏற்படுத்தக்கூடும்.", + "OptionDownloadImagesInAdvance": "படங்களை முன்கூட்டியே பதிவிறக்கவும்", + "OptionDownloadDiscImage": "வட்டு", + "OptionDownloadBoxImage": "பெட்டி", + "OptionDownloadBannerImage": "பதாகை", + "OptionDownloadBackImage": "பின்னால்", + "OptionDownloadArtImage": "கலை", + "OptionDisplayFolderViewHelp": "உங்கள் பிற ஊடக நூலகங்களுடன் கோப்புறைகளைக் காண்பி. நீங்கள் ஒரு எளிய கோப்புறை காட்சியைப் பெற விரும்பினால் இது பயனுள்ளதாக இருக்கும்.", + "OptionDisplayFolderView": "எளிய மீடியா கோப்புறைகளைக் காட்ட கோப்புறை காட்சியைக் காண்பி", + "OptionDislikes": "வெறுப்புகள்", + "OptionDisableUserHelp": "இந்த பயனரிடமிருந்து எந்த இணைப்பையும் சேவையகம் அனுமதிக்காது. தற்போதுள்ள இணைப்புகள் திடீரென நிறுத்தப்படும்.", + "OptionDisableUser": "இந்த பயனரை முடக்கு", + "OptionDescending": "இறங்கு", + "OptionDatePlayed": "உடன் தேதி", + "OptionDateAddedImportTime": "நூலகத்தில் ஸ்கேன் செய்யப்பட்ட தேதியைப் பயன்படுத்தவும்", + "OptionDateAddedFileTime": "கோப்பு உருவாக்கும் தேதியைப் பயன்படுத்தவும்", + "OptionDateAdded": "சேர்த்த தேதி", + "OptionDaily": "தினசரி", + "OptionCustomUsers": "தனிப்பயன்", + "OptionCriticRating": "விமர்சன மதிப்பீடு", + "OptionContinuing": "தொடர்கிறது", + "OptionCommunityRating": "சமூக மதிப்பீடு", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (சாம்சங்)", + "OptionBluray": "ப்ளூ-ரே", + "OptionBlockTvShows": "தொலைக்காட்சி நிகழ்ச்சிகள்", + "OptionBlockTrailers": "டிரெய்லர்கள்", + "OptionBlockMusic": "இசை", + "OptionBlockMovies": "திரைப்படங்கள்", + "OptionBlockLiveTvChannels": "நேரடி தொலைக்காட்சி சேனல்கள்", + "OptionBlockChannelContent": "இணைய சேனல் உள்ளடக்கம்", + "OptionBlockBooks": "புத்தகங்கள்", + "OptionBanner": "பதாகை", + "OptionAutomaticallyGroupSeriesHelp": "இந்த நூலகத்திற்குள் பல கோப்புறைகளில் பரவியிருக்கும் தொடர்கள் தானாக ஒரு தொடராக ஒன்றிணைக்கப்படும்.", + "OptionAutomaticallyGroupSeries": "பல கோப்புறைகளில் பரவியிருக்கும் தொடர்களை தானாக இணைக்கவும்", + "OptionAuto": "தானாக", + "OptionAscending": "ஏறுதல்", + "OptionArtist": "கலைஞர்", + "OptionAllowVideoPlaybackTranscoding": "டிரான்ஸ்கோடிங் தேவைப்படும் வீடியோ பிளேபேக்கை அனுமதிக்கவும்", + "OptionAllowVideoPlaybackRemuxing": "மறு குறியாக்கம் இல்லாமல் மாற்றம் தேவைப்படும் வீடியோ பிளேபேக்கை அனுமதிக்கவும்", + "OptionAllowUserToManageServer": "சேவையகத்தை நிர்வகிக்க இந்த பயனரை அனுமதிக்கவும்", + "OptionAllowSyncTranscoding": "டிரான்ஸ்கோடிங் தேவைப்படும் மீடியா பதிவிறக்கம் மற்றும் ஒத்திசைவை அனுமதிக்கவும்", + "OptionAllowRemoteSharedDevicesHelp": "ஒரு பயனர் அவற்றைக் கட்டுப்படுத்தத் தொடங்கும் வரை DLNA சாதனங்கள் பகிரப்பட்டதாகக் கருதப்படுகின்றன.", + "OptionAllowRemoteSharedDevices": "பகிரப்பட்ட சாதனங்களின் தொலைநிலைக் கட்டுப்பாட்டை அனுமதிக்கவும்", + "OptionAllowRemoteControlOthers": "பிற பயனர்களின் ரிமோட் கண்ட்ரோலை அனுமதிக்கவும்", + "OptionAllowMediaPlaybackTranscodingHelp": "டிரான்ஸ்கோடிங்கிற்கான அணுகலைக் கட்டுப்படுத்துவது ஆதரிக்கப்படாத ஊடக வடிவங்கள் காரணமாக வாடிக்கையாளர்களுக்கு பின்னணி தோல்விகளை ஏற்படுத்தக்கூடும்.", + "OptionAllowMediaPlayback": "மீடியா பிளேபேக்கை அனுமதிக்கவும்", + "OptionAllowManageLiveTv": "லைவ் டிவி பதிவு நிர்வாகத்தை அனுமதிக்கவும்", + "OptionAllowLinkSharingHelp": "ஊடகத் தகவல்களைக் கொண்ட வலைப்பக்கங்கள் மட்டுமே பகிரப்படுகின்றன. மீடியா கோப்புகள் ஒருபோதும் பகிரங்கமாக பகிரப்படுவதில்லை. பங்குகள் நேர வரம்புக்குட்பட்டவை மற்றும் {0} நாட்களுக்குப் பிறகு காலாவதியாகும்.", + "OptionAllowLinkSharing": "சமூக ஊடக பகிர்வை அனுமதிக்கவும்", + "OptionAllowContentDownloading": "மீடியா பதிவிறக்க மற்றும் ஒத்திசைக்க அனுமதிக்கவும்", + "OptionAllowBrowsingLiveTv": "நேரடி தொலைக்காட்சி அணுகலை அனுமதிக்கவும்", + "OptionForceRemoteSourceTranscoding": "தொலைநிலை ஊடக மூலங்களின் டிரான்ஸ்கோடிங்கை கட்டாயப்படுத்தவும் (லைடிவி போன்றவை)", + "OptionAllowAudioPlaybackTranscoding": "டிரான்ஸ்கோடிங் தேவைப்படும் ஆடியோ பிளேபேக்கை அனுமதிக்கவும்", + "OptionAllUsers": "அனைத்து பயனாளர்கள்", + "OptionAlbumArtist": "ஆல்பம் கலைஞர்", + "OptionAlbum": "ஆல்பம்", + "OptionAdminUsers": "நிர்வாகிகள்", + "OnlyImageFormats": "பட வடிவங்கள் மட்டுமே (VOBSUB, PGS, SUB)", + "Option3D": "3D", + "OnlyForcedSubtitlesHelp": "கட்டாயமாக குறிக்கப்பட்ட வசன வரிகள் மட்டுமே ஏற்றப்படும்.", + "OnlyForcedSubtitles": "கட்டாயப்படுத்தப்பட்டது மட்டுமே", + "OneChannel": "ஒரு சேனல்", + "Off": "முடக்கு", + "NumLocationsValue": "{0} கோப்புறைகள்", + "Normal": "இயல்பானது", + "None": "எதுவுமில்லை", + "NoSubtitlesHelp": "முன்னிருப்பாக வசன வரிகள் ஏற்றப்படாது. பிளேபேக்கின் போது அவற்றை கைமுறையாக இயக்கலாம்.", + "NoSubtitleSearchResultsFound": "முடிவுகள் எதுவும் இல்லை.", + "MessageNoPluginConfiguration": "இந்த சொருகி கட்டமைக்க எந்த அமைப்புகளும் இல்லை.", + "MessageNoNextUpItems": "எதுவும் கிடைக்கவில்லை. உங்கள் நிகழ்ச்சிகளைப் பார்க்கத் தொடங்குங்கள்!", + "NoNewDevicesFound": "புதிய சாதனங்கள் எதுவும் கிடைக்கவில்லை. புதிய ட்யூனரைச் சேர்க்க, இந்த உரையாடலை மூடி சாதனத் தகவலை கைமுறையாக உள்ளிடவும்.", + "NoCreatedLibraries": "நீங்கள் இதுவரை எந்த நூலகங்களையும் உருவாக்கவில்லை என்று தெரிகிறது. {0} இப்போது ஒன்றை உருவாக்க விரும்புகிறீர்களா? {1}", + "No": "இல்லை", + "NextUp": "அடுத்தது", + "NextTrack": "அடுத்ததுக்குச் செல்க", + "Next": "அடுத்தது", + "News": "செய்தி", + "NewEpisodesOnly": "புதிய அத்தியாயங்கள் மட்டுமே", + "NewEpisodes": "புதிய அத்தியாயங்கள்", + "NewCollectionNameExample": "எடுத்துக்காட்டு: Star Wars Collection", + "NewCollectionHelp": "திரைப்படங்கள் மற்றும் பிற நூலக உள்ளடக்கங்களின் தனிப்பயனாக்கப்பட்ட குழுக்களை உருவாக்க தொகுப்புகள் உங்களை அனுமதிக்கின்றன.", + "NewCollection": "புதிய தொகுப்பு", + "Never": "ஒருபோதும்", + "Name": "பெயர்", + "MySubtitles": "எனது வசன வரிகள்", + "Mute": "முடக்கு", + "MusicVideo": "இசை கானொளி", + "MusicLibraryHelp": "{0} இசை பெயரிடும் வழிகாட்டியை {1} மதிப்பாய்வு செய்யவும்.", + "MusicArtist": "இசைக் கலைஞர்", + "MusicAlbum": "இசை ஆல்பம்", + "Movie": "திரைப்படம்", + "MovieLibraryHelp": "{0} மூவி பெயரிடும் வழிகாட்டியை {1} மதிப்பாய்வு செய்யவும்.", + "MoveRight": "வலதுபுறம் நகர்த்தவும்", + "PlayAllFromHere": "அனைத்தையும் இங்கிருந்து வாசிக்கவும்", + "Play": "வாசிக்கவும்", + "PlaceFavoriteChannelsAtBeginning": "பிடித்த சேனல்களை ஆரம்பத்தில் வைக்கவும்", + "PinCodeResetConfirmation": "பின் குறியீட்டை மீட்டமைக்க விரும்புகிறீர்களா?", + "PinCodeResetComplete": "முள் குறியீடு மீட்டமைக்கப்பட்டது.", + "PictureInPicture": "படத்தினுள் படம்", + "Person": "நபர்", + "PerfectMatch": "சரியான பொருத்தம்", + "People": "மக்கள்", + "PasswordSaved": "கடவுச்சொல் சேமிக்கப்பட்டது.", + "PasswordResetProviderHelp": "இந்த பயனர் கடவுச்சொல் மீட்டமைப்பைக் கோரும்போது பயன்படுத்த கடவுச்சொல் மீட்டமைப்பு வழங்குநரைத் தேர்வுசெய்க.", + "HeaderResetPassword": "கடவுச்சொல்லை மீட்டமைக்க", + "PasswordResetConfirmation": "கடவுச்சொல்லை மீட்டமைக்க நிச்சயமாக விரும்புகிறீர்களா?", + "PasswordResetComplete": "கடவுச்சொல் மீட்டமைக்கப்பட்டது.", + "PasswordMatchError": "கடவுச்சொல் மற்றும் கடவுச்சொல் உறுதிப்படுத்தல் பொருந்த வேண்டும்.", + "ParentalRating": "பெற்றோர் மதிப்பீடு", + "PackageInstallFailed": "{0} (பதிப்பு {1}) நிறுவல் தோல்வியடைந்தது.", + "PackageInstallCompleted": "{0} (பதிப்பு {1}) நிறுவல் முடிந்தது.", + "PackageInstallCancelled": "{0} (பதிப்பு {1}) நிறுவல் ரத்து செய்யப்பட்டது.", + "Overview": "கண்ணோட்டம்", + "OriginalAirDateValue": "அசல் ஒளிபரப்பப்பட்ட தேதி: {0}", + "OptionWeekly": "வாராந்திர", + "OptionWeekends": "வார இறுதி நாட்கள்", + "OptionWeekdays": "வார நாட்கள்", + "OptionWakeFromSleep": "தூக்கத்திலிருந்து விழிப்பதற்கு", + "OptionUnplayed": "காட்டப்படாதது", + "OptionUnairedEpisode": "ஒளிபரப்பப்படாத அத்தியாயங்கள்", + "OptionTvdbRating": "TVDB மதிப்பீடு", + "OptionTrackName": "ட்ராக் பெயர்", + "OptionThumbCard": "சிறுபட அட்டை", + "OptionThumb": "சிறுபடம்", + "OptionSubstring": "மூலக்கூறு", + "OptionSpecialEpisode": "சிறப்பு", + "OptionSaveMetadataAsHiddenHelp": "இதை மாற்றுவது முன்னோக்கிச் செல்லும் புதிய மெட்டாடேட்டாவுக்கு பொருந்தும். தற்போதுள்ள மெட்டாடேட்டா கோப்புகள் அடுத்த முறை சேவையகத்தால் சேமிக்கப்படும் போது அவை புதுப்பிக்கப்படும்.", + "OptionSaveMetadataAsHidden": "மெட்டாடேட்டா மற்றும் படங்களை மறைக்கப்பட்ட கோப்புகளாக சேமிக்கவும்", + "OptionRuntime": "இயக்க நேரம்", + "OptionResumable": "மீண்டும் தொடங்கக்கூடியது", + "OptionResElement": "res கூறு", + "OptionRequirePerfectSubtitleMatchHelp": "சரியான பொருத்தம் தேவைப்பட்டால், உங்கள் சரியான வீடியோ கோப்புடன் சோதிக்கப்பட்ட மற்றும் சரிபார்க்கப்பட்டவற்றை மட்டுமே சேர்க்க வசன வரிகள் வடிகட்டப்படும். இதைத் தேர்வுசெய்வது வசன வரிகள் பதிவிறக்கம் செய்யப்படுவதற்கான வாய்ப்பை அதிகரிக்கும், ஆனால் தவறான அல்லது தவறான வசன உரைக்கான வாய்ப்புகளை அதிகரிக்கும்.", + "OptionRequirePerfectSubtitleMatch": "எனது வீடியோ கோப்புகளுக்கு சரியான பொருத்தமாக இருக்கும் வசன வரிகள் மட்டுமே பதிவிறக்கவும்", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "நேரம் நன்றாகத் தேடாத சில சாதனங்களுக்கு இது தேவைப்படுகிறது.", + "OptionReportByteRangeSeekingWhenTranscoding": "டிரான்ஸ்கோடிங் செய்யும் போது பைட் தேடுவதை சேவையகம் ஆதரிக்கிறது என்று புகாரளிக்கவும்", + "OptionReleaseDate": "வெளியீட்டு தேதி", + "OptionRegex": "ரீஜெக்ஸ்", + "OptionRandom": "சீரற்ற", + "OptionProtocolHttp": "HTTP", + "OptionProtocolHls": "HTTP நேரடி ஒளிபரப்பு", + "OptionProfileVideoAudio": "வீடியோ ஆடியோ", + "OptionProfileVideo": "காணொளி", + "OptionProfilePhoto": "புகைப்படம்", + "OptionProfileAudio": "ஆடியோ", + "OptionPremiereDate": "பிரீமியர் தேதி", + "OptionPosterCard": "சுவரொட்டி அட்டை", + "OptionPoster": "சுவரொட்டி", + "OptionPlayed": "வாசிக்கப்பட்டது", + "OptionPlayCount": "ப்ளே கவுண்ட்", + "OptionPlainVideoItemsHelp": "எல்லா வீடியோக்களும் டிஐடிஎல்லில் \"object.item.videoItem\" என குறிப்பிடப்படுகின்றன, அதாவது \"object.item.videoItem.movie\" போன்ற ஒரு குறிப்பிட்ட வகைக்கு பதிலாக.", + "OptionPlainVideoItems": "எல்லா வீடியோக்களையும் எளிய வீடியோ உருப்படிகளாகக் காண்பி", + "OptionPlainStorageFoldersHelp": "அனைத்து கோப்புறைகளும் டிஐடிஎல்லில் \"object.container.storageFolder\" என குறிப்பிடப்படுகின்றன, அதாவது \"object.container.person.musicArtist\" போன்ற ஒரு குறிப்பிட்ட வகைக்கு பதிலாக.", + "OptionPlainStorageFolders": "எல்லா கோப்புறைகளையும் வெற்று சேமிப்பக கோப்புறைகளாகக் காண்பி", + "OptionParentalRating": "பெற்றோர் மதிப்பீடு", + "OptionOnInterval": "ஒரு இடைவெளியில்", + "OptionNone": "எதுவுமில்லை", + "OptionNew": "புதிய…", + "OptionNameSort": "பெயர்", + "OptionMissingEpisode": "தவறிய பாகங்கள்", + "OptionMax": "அதிகபட்சம்", + "OptionLoginAttemptsBeforeLockoutHelp": "பூஜ்ஜியத்தின் மதிப்பு என்பது சாதாரண பயனர்களுக்கான மூன்று முயற்சிகளின் இயல்புநிலையையும், நிர்வாகிகளுக்கு ஐந்து முயற்சிகளையும் பெறுவதாகும். இதை -1 ஆக அமைப்பது அம்சத்தை முடக்கும்.", + "OptionLoginAttemptsBeforeLockout": "கதவடைப்பு ஏற்படுவதற்கு முன்பு எத்தனை தவறான உள்நுழைவு முயற்சிகள் செய்யப்படலாம் என்பதை தீர்மானிக்கிறது.", + "OptionList": "பட்டியல்", + "OptionLikes": "விருப்பங்கள்", + "OptionIsSD": "எஸ்டி", + "OptionIsHD": "எச்டி", + "OptionImdbRating": "IMDb மதிப்பீடு", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "இந்த கோரிக்கைகள் மதிக்கப்படும், ஆனால் பைட் வரம்பு தலைப்பை புறக்கணிக்கும்.", + "OptionIgnoreTranscodeByteRangeRequests": "டிரான்ஸ்கோட் பைட் வரம்பு கோரிக்கைகளை புறக்கணிக்கவும்", + "OptionHomeVideos": "புகைப்படங்கள்", + "OptionHlsSegmentedSubtitles": "HLS பிரிக்கப்பட்ட வசன வரிகள்", + "OptionHideUserFromLoginHelp": "தனிப்பட்ட அல்லது மறைக்கப்பட்ட நிர்வாகி கணக்குகளுக்கு பயனுள்ளதாக இருக்கும். பயனர் தங்கள் பயனர்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிட்டு கைமுறையாக உள்நுழைய வேண்டும்.", + "OptionHideUser": "உள்நுழைவு திரைகளிலிருந்து இந்த பயனரை மறைக்கவும்", + "OptionHasTrailer": "டிரெய்லர்", + "OptionHasThemeVideo": "தீம் வீடியோ", + "OptionHasThemeSong": "தீம் பாடல்", + "OptionHasSubtitles": "வசன வரிகள்", + "OptionHasSpecialFeatures": "சிறப்பு அம்சங்கள்", + "OptionFavorite": "பிடித்தவை", + "OptionExtractChapterImage": "அத்தியாயம் படத்தை பிரித்தெடுப்பதை இயக்கு", + "OptionExternallyDownloaded": "வெளிப்புற பதிவிறக்க", + "PlaybackData": "பின்னணி தரவு", + "PlayFromBeginning": "ஆரம்பத்தில் இருந்து வாசிக்கவும்", + "PlayCount": "வாசிப்பு எண்ணிக்கை", + "StopRecording": "பதிவு செய்வதை நிறுத்துங்கள்", + "Sports": "விளையாட்டு", + "SortName": "பெயரை வரிசைப்படுத்து", + "SortChannelsBy": "சேனல்களை வரிசைப்படுத்து:", + "SortByValue": "{0} மூலம் வரிசைப்படுத்து", + "Sort": "வரிசைப்படுத்து", + "SmartSubtitlesHelp": "ஆடியோ வெளிநாட்டு மொழியில் இருக்கும்போது மொழி விருப்பத்துடன் பொருந்தக்கூடிய வசனங்கள் ஏற்றப்படும்.", + "Smart": "ஸ்மார்ட்", + "Smaller": "மிக சிறிய", + "SmallCaps": "சிறிய எழுத்துக்கள்", + "Small": "சிறிய", + "SkipEpisodesAlreadyInMyLibraryHelp": "எபிசோடுகள் கிடைக்கும்போது, சீசன் மற்றும் எபிசோட் எண்களைப் பயன்படுத்தி ஒப்பிடப்படும்.", + "SkipEpisodesAlreadyInMyLibrary": "எனது நூலகத்தில் ஏற்கனவே இருக்கும் அத்தியாயங்களை பதிவு செய்ய வேண்டாம்", + "SimultaneousConnectionLimitHelp": "அனுமதிக்கப்பட்ட ஒரே நேரத்தில் நீரோடைகளின் அதிகபட்ச எண்ணிக்கை. வரம்பில்லாமல் 0 ஐ உள்ளிடவும்.", + "Filter": "வடிகட்டு", + "New": "புதிய", + "Shuffle": "கலக்கு", + "ShowYear": "ஆண்டு காட்டு", + "ShowTitle": "தலைப்பைக் காட்டு", + "ShowMore": "மேலும் காட்ட", + "ShowLess": "குறைவாகக் காட்டு", + "ShowIndicatorsFor": "இதற்கான குறிகாட்டிகளைக் காட்டு:", + "ShowAdvancedSettings": "மேம்பட்ட அமைப்புகளைக் காட்டு", + "Share": "பகிர்", + "SettingsWarning": "இந்த மதிப்புகளை மாற்றுவது உறுதியற்ற தன்மை அல்லது இணைப்பு தோல்விகளை ஏற்படுத்தக்கூடும். உங்களுக்கு ஏதேனும் சிக்கல்கள் ஏற்பட்டால், அவற்றை இயல்புநிலைக்கு மாற்ற பரிந்துரைக்கிறோம்.", + "SettingsSaved": "அமைப்புகள் சேமிக்கப்பட்டன.", + "Settings": "அமைப்புகள்", + "ServerUpdateNeeded": "இந்த சேவையகத்தை புதுப்பிக்க வேண்டும். சமீபத்திய பதிப்பைப் பதிவிறக்க, தயவுசெய்து {0} ஐ பார்வையிடவும்", + "ServerRestartNeededAfterPluginInstall": "செருகுநிரலை நிறுவிய பின் ஜெல்லிஃபின் மறுதொடக்கம் செய்யப்பட வேண்டும்.", + "ServerNameIsShuttingDown": "{0} இல் உள்ள சேவையகம் மூடப்படும்.", + "ServerNameIsRestarting": "{0} இல் உள்ள சேவையகம் மறுதொடக்கம் செய்யப்படுகிறது.", + "SeriesYearToPresent": "{0} - தற்போது", + "SeriesSettings": "தொடர் அமைப்புகள்", + "SeriesRecordingScheduled": "தொடர் பதிவு திட்டமிடப்பட்டுள்ளது.", + "SeriesDisplayOrderHelp": "எபிசோட்களை ஒளிபரப்பப்பட்ட தேதி, டிவிடி ஆர்டர் அல்லது முழுமையான எண்ணால் வரிசைப்படுத்தவும்.", + "SeriesCancelled": "தொடர் ரத்து செய்யப்பட்டது.", + "Series": "தொடர்", + "SendMessage": "செய்தி அனுப்ப", + "SelectAdminUsername": "நிர்வாகி கணக்கிற்கான பயனர்பெயரைத் தேர்ந்தெடுக்கவும்.", + "Season": "பருவம்", + "SearchResults": "தேடல் முடிவுகள்", + "SearchForSubtitles": "வசன வரிகள் தேடுங்கள்", + "SearchForMissingMetadata": "காணாமல் போன மெட்டாடேட்டாவைத் தேடுங்கள்", + "SearchForCollectionInternetMetadata": "கலைப்படைப்பு மற்றும் மெட்டாடேட்டாவிற்கு இணையத்தில் தேடுங்கள்", + "Search": "தேடு", + "Screenshots": "ஸ்கிரீன்ஷாட்கள்", + "Screenshot": "ஸ்கிரீன்ஷாட்", + "Schedule": "அட்டவணை", + "ScanLibrary": "ஸ்கேன் நூலகம்", + "ScanForNewAndUpdatedFiles": "புதிய மற்றும் புதுப்பிக்கப்பட்ட கோப்புகளை ஸ்கேன் செய்யுங்கள்", + "SaveSubtitlesIntoMediaFoldersHelp": "வீடியோ கோப்புகளுக்கு அடுத்ததாக வசன வரிகள் சேமிப்பது அவற்றை எளிதாக நிர்வகிக்க அனுமதிக்கும்.", + "SaveSubtitlesIntoMediaFolders": "மீடியா கோப்புறைகளில் வசன வரிகளைச் சேமிக்கவும்", + "SaveChanges": "மாற்றங்களை சேமியுங்கள்", + "Save": "சேமியுங்கள்", + "Saturday": "சனிக்கிழமை", + "Runtime": "இயக்க நேரம்", + "Rewind": "முன்னோக்கிச்செலுத்து", + "ResumeAt": "{0} இலிருந்து மீண்டும் தொடங்குங்கள்", + "ReplaceExistingImages": "இருக்கும் படங்களை மாற்றவும்", + "ReplaceAllMetadata": "எல்லா மெட்டாடேட்டாவையும் மாற்றவும்", + "RepeatOne": "மீண்டும் ஒருமுறை", + "RepeatMode": "பயன்முறையை மீண்டும் செய்யவும்", + "RepeatEpisodes": "அத்தியாயங்களை மீண்டும் செய்யவும்", + "RepeatAll": "அனைத்தையும் மீண்டும் செய்யவும்", + "Repeat": "மீண்டும்", + "RemoveFromPlaylist": "பிளேலிஸ்ட்டில் இருந்து அகற்று", + "RemoveFromCollection": "சேகரிப்பிலிருந்து அகற்று", + "RememberMe": "என்னை நினைவிற்கொள்ளவும்", + "ReleaseDate": "வெளியீட்டு தேதி", + "RefreshQueued": "புதுப்பிப்பு வரிசைப்படுத்தப்பட்டுள்ளது.", + "RefreshMetadata": "மெட்டாடேட்டாவைப் புதுப்பிக்கவும்", + "RefreshDialogHelp": "டாஷ்போர்டில் இயக்கப்பட்ட அமைப்புகள் மற்றும் இணைய சேவைகளின் அடிப்படையில் மெட்டாடேட்டா புதுப்பிக்கப்படுகிறது.", + "Refresh": "புதுப்பிப்பு", + "Recordings": "பதிவுகள்", + "RecordingScheduled": "பதிவு திட்டமிடப்பட்டுள்ளது.", + "MessageChangeRecordingPath": "உங்கள் ரெக்கார்டிங் கோப்புறையை மாற்றுவது ஏற்கனவே இருக்கும் பதிவுகளை பழைய இடத்திலிருந்து புதிய இடத்திற்கு மாற்றாது. விரும்பினால் அவற்றை கைமுறையாக நகர்த்த வேண்டும்.", + "RecordingCancelled": "பதிவு ரத்து செய்யப்பட்டது.", + "RecordSeries": "தொடரை பதிவு செய்", + "Record": "பதிவு செய்", + "RecommendationStarring": "{0} நடித்த", + "RecommendationDirectedBy": "{0} ஐ இயக்கியது", + "RecommendationBecauseYouWatched": "நீங்கள் {0} பார்த்ததால்", + "RecommendationBecauseYouLike": "நீங்கள் {0} ஐ விரும்புவதால்", + "RecentlyWatched": "சமீபத்தில் பார்த்தது", + "Rate": "மதிப்பிடுங்கள்", + "Raised": "எழுப்பப்பட்ட", + "Quality": "தரம்", + "Programs": "நிகழ்ச்சிகள்", + "ProductionLocations": "தயாரிப்பு தளம்", + "Producer": "தயாரிப்பாளர்", + "Primary": "முதன்மை", + "PreviousTrack": "முந்தையதைத் தவிர்", + "Previous": "முந்தையது", + "Premieres": "பிரீமியர்ஸ்", + "Premiere": "பிரீமியர்", + "PreferEmbeddedEpisodeInfosOverFileNames": "கோப்பு பெயர்களில் உட்பொதிக்கப்பட்ட எபிசோட் தகவலை விரும்புங்கள்", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "இது உட்பொதிக்கப்பட்ட மெட்டாடேட்டாவிலிருந்து எபிசோட் தகவலைப் பெற்றால் பயன்படுத்துகிறது.", + "PreferEmbeddedTitlesOverFileNamesHelp": "இணைய மெட்டாடேட்டா அல்லது உள்ளூர் மெட்டாடேட்டா கிடைக்காதபோது இயல்புநிலை காட்சி தலைப்பை இது தீர்மானிக்கிறது.", + "PreferEmbeddedTitlesOverFileNames": "கோப்பு பெயர்களில் உட்பொதிக்கப்பட்ட தலைப்புகளை விரும்புங்கள்", + "MessageGetInstalledPluginsError": "தற்போது நிறுவப்பட்ட செருகுநிரல்களின் பட்டியலைப் பெறும்போது பிழை ஏற்பட்டது.", + "MessagePluginInstallError": "சொருகி நிறுவும் போது பிழை ஏற்பட்டது.", + "MessagePluginInstalled": "சொருகி வெற்றிகரமாக நிறுவப்பட்டுள்ளது. மாற்றங்கள் நடைமுறைக்கு வர சேவையகத்தை மறுதொடக்கம் செய்ய வேண்டும்.", + "PleaseSelectTwoItems": "குறைந்தது இரண்டு உருப்படிகளைத் தேர்ந்தெடுக்கவும்.", + "PleaseRestartServerName": "ஜெல்லிஃபினை {0} இல் மறுதொடக்கம் செய்யுங்கள்.", + "PleaseEnterNameOrId": "ஒரு பெயர் அல்லது வெளிப்புற ஐடியை உள்ளிடவும்.", + "PleaseConfirmPluginInstallation": "மேலே உள்ளதைப் படித்திருப்பதை உறுதிப்படுத்த சரி என்பதைக் கிளிக் செய்து, சொருகி நிறுவலைத் தொடர விரும்புகிறீர்கள்.", + "PleaseAddAtLeastOneFolder": "சேர் பொத்தானைக் கிளிக் செய்வதன் மூலம் இந்த நூலகத்தில் குறைந்தது ஒரு கோப்புறையாவது சேர்க்கவும்.", + "Played": "வாசிக்கப்பட்டது", + "PlaybackErrorNoCompatibleStream": "இந்த கிளையன்ட் ஊடகத்துடன் பொருந்தாது மற்றும் சேவையகம் இணக்கமான ஊடக வடிவமைப்பை அனுப்பவில்லை.", + "PlayNextEpisodeAutomatically": "அடுத்த அத்தியாயத்தை தானாக இயக்கு", + "PlayNext": "அடுத்ததை வாசிக்கவும்", + "Yesterday": "நேற்று", + "Yes": "ஆம்", + "YadifBob": "யடிஃப் பாப்", + "Yadif": "யடிஃப்", + "XmlTvSportsCategoriesHelp": "இந்த வகைகளைக் கொண்ட நிகழ்ச்சிகள் விளையாட்டுத் திட்டங்களாகக் காட்டப்படும். '|' உடன் பலவற்றைப் பிரிக்கவும்.", + "XmlTvPathHelp": "XMLTV கோப்புக்கான பாதை. ஜெல்லிஃபின் இந்த கோப்பைப் படித்து புதுப்பிப்புகளுக்கு அவ்வப்போது சரிபார்க்கும். கோப்பை உருவாக்கி புதுப்பிக்க நீங்கள் பொறுப்பு.", + "XmlTvNewsCategoriesHelp": "இந்த வகைகளைக் கொண்ட நிகழ்ச்சிகள் செய்தித் திட்டங்களாகக் காட்டப்படும். '|' உடன் பலவற்றைப் பிரிக்கவும்.", + "XmlTvMovieCategoriesHelp": "இந்த வகைகளைக் கொண்ட நிகழ்ச்சிகள் திரைப்படங்களாக காண்பிக்கப்படும். '|' உடன் பலவற்றைப் பிரிக்கவும்.", + "XmlTvKidsCategoriesHelp": "இந்த வகைகளைக் கொண்ட நிகழ்ச்சிகள் குழந்தைகளுக்கான நிரல்களாக காண்பிக்கப்படும். '|' உடன் பலவற்றைப் பிரிக்கவும்.", + "XmlDocumentAttributeListHelp": "இந்த பண்புக்கூறுகள் ஒவ்வொரு XML பதிலின் மூல உறுப்புக்கும் பயன்படுத்தப்படுகின்றன.", + "Writers": "எழுத்தாளர்கள்", + "Writer": "எழுத்தாளர்", + "WizardCompleted": "இப்போது நமக்குத் தேவை அவ்வளவுதான். ஜெல்லிஃபின் உங்கள் ஊடக நூலகம் பற்றிய தகவல்களை சேகரிக்கத் தொடங்கியுள்ளார். எங்கள் சில பயன்பாடுகளைப் பாருங்கள், பின்னர் டாஷ்போர்டு ஐக் காண பினிஷ் என்பதைக் கிளிக் செய்க.", + "Whitelist": "அனுமதிப்பட்டியல்", + "WelcomeToProject": "ஜெல்லிஃபினுக்கு வருக!", + "Wednesday": "புதன்கிழமை", + "Watched": "ஏற்கனவே பார்த்தேன்", + "ViewPlaybackInfo": "பின்னணி தகவலைக் காண்க", + "ViewAlbumArtist": "ஆல்பம் கலைஞரைக் காண்க", + "ViewAlbum": "ஆல்பத்தைக் காண்க", + "Vertical": "செங்குத்தாக", + "ValueVideoCodec": "வீடியோ கோடெக்: {0}", + "ValueTimeLimitSingleHour": "கால எல்லை: 1 மணி நேரம்", + "ValueTimeLimitMultiHour": "கால எல்லை: {0} மணி", + "ValueSongCount": "{0} பாடல்கள்", + "ValueSeriesCount": "{0} தொடர்", + "ValueSeconds": "{0} விநாடிகள்", + "ValueOneSong": "1 பாடல்", + "ValueOneSeries": "1 தொடர்", + "ValueOneMusicVideo": "1 இசை வீடியோ", + "ValueOneMovie": "1 திரைப்படம்", + "ValueOneEpisode": "1 அத்தியாயம்", + "ValueOneAlbum": "1 ஆல்பம்", + "ValueMusicVideoCount": "{0} இசை வீடியோக்கள்", + "ValueMovieCount": "{0} திரைப்படங்கள்", + "ValueMinutes": "{0} நிமிடம்", + "ValueEpisodeCount": "{0} அத்தியாயங்கள்", + "ValueDiscNumber": "வட்டு {0}", + "ValueContainer": "கொள்கலன்: {0}", + "ValueConditions": "நிபந்தனைகள்: {0}", + "ValueCodec": "கோடெக்: {0}", + "ValueAudioCodec": "ஆடியோ கோடெக்: {0}", + "ValueAlbumCount": "{0} ஆல்பங்கள்", + "UserProfilesIntro": "சிறுமணி காட்சி அமைப்புகள், விளையாட்டு நிலை மற்றும் பெற்றோரின் கட்டுப்பாடுகள் ஆகியவற்றைக் கொண்ட பயனர் சுயவிவரங்களுக்கான ஆதரவை ஜெல்லிஃபின் கொண்டுள்ளது.", + "UserAgentHelp": "தனிப்பயன் பயனர் முகவர் HTTP தலைப்பை வழங்கவும்.", + "Upload": "பதிவேற்றவும்", + "Up": "மேலே", + "Unrated": "மதிப்பிடப்படாதது", + "Unplayed": "காட்டப்படாதது", + "Unmute": "முடக்கு நீக்கம்", + "HeaderUninstallPlugin": "செருகுநிரலை நிறுவல் நீக்கு", + "UninstallPluginConfirmation": "{0} ஐ நிறுவல் நீக்க விரும்புகிறீர்களா?", + "Uniform": "சீராக", + "TvLibraryHelp": "{0} டிவி பெயரிடும் வழிகாட்டியை {1} மதிப்பாய்வு செய்யவும்.", + "Tuesday": "செவ்வாய்", + "Transcoding": "டிரான்ஸ்கோடிங்", + "Trailers": "டிரெய்லர்கள்", + "TrackCount": "{0} தடங்கள்", + "Track": "தடம்", + "TitlePlayback": "பின்னணி", + "TitleHostingSettings": "ஹோஸ்டிங் அமைப்புகள்", + "TitleHardwareAcceleration": "வன்பொருள் முடுக்கம்", + "Thursday": "வியாழக்கிழமை", + "Thumb": "சிறுபடம்", + "ThisWizardWillGuideYou": "இந்த வழிகாட்டி அமைவு செயல்முறை மூலம் உங்களுக்கு வழிகாட்ட உதவும். தொடங்க, நீங்கள் விரும்பும் மொழியைத் தேர்ந்தெடுக்கவும்.", + "TheseSettingsAffectSubtitlesOnThisDevice": "இந்த அமைப்புகள் இந்த சாதனத்தில் வசன வரிகள் பாதிக்கின்றன", + "ThemeVideos": "தீம் வீடியோக்கள்", + "ThemeSongs": "தீம் பாடல்கள்", + "TellUsAboutYourself": "உங்களைப் பற்றி சொல்லுங்கள்", + "TagsValue": "குறிச்சொற்கள்: {0}", + "Tags": "குறிச்சொற்கள்", + "TabUpcoming": "வரவிருக்கும்", + "TabStreaming": "ஸ்ட்ரீமிங்", + "TabSettings": "அமைப்புகள்", + "TabServer": "சேவையகம்", + "TabScheduledTasks": "திட்டமிடப்பட்ட பணிகள்", + "TabResponses": "பதில்கள்", + "TabProfiles": "சுயவிவரங்கள்", + "TabProfile": "சுயவிவரம்", + "TabPlugins": "செருகுநிரல்கள்", + "TabParentalControl": "பெற்றோர் கட்டுப்பாடு", + "TabOther": "மற்றவை", + "TabNotifications": "அறிவிப்புகள்", + "TabNfoSettings": "NFO அமைப்புகள்", + "TabNetworking": "நெட்வொர்க்கிங்", + "TabNetworks": "நெட்வொர்க்குகள்", + "TabMyPlugins": "எனது செருகுநிரல்கள்", + "TabMusic": "இசை", + "TabLogs": "பதிவுகள்", + "TabLatest": "அண்மை", + "TabDirectPlay": "நேரடி நாடகம்", + "TabDashboard": "டாஷ்போர்டு", + "TabContainers": "கொள்கலன்கள்", + "TabCodecs": "கோடெக்குகள்", + "TabRepositories": "களஞ்சியங்கள்", + "TabCatalog": "அட்டவணை", + "TabAdvanced": "மேம்படுத்தபட்ட", + "TabAccess": "அணுகல்", + "TV": "தொலைக்காட்சி", + "SystemDlnaProfilesHelp": "கணினி சுயவிவரங்கள் படிக்க மட்டுமே. கணினி சுயவிவரத்திற்கான மாற்றங்கள் புதிய தனிப்பயன் சுயவிவரத்தில் சேமிக்கப்படும்.", + "SyncPlayAccessHelp": "இந்த பயனர் ஒத்திசைவு அம்சத்திற்கு அணுகல் அளவைத் தேர்ந்தெடுக்கவும். ஒத்திசைவு பிளேபேக்கை பிற சாதனங்களுடன் ஒத்திசைக்க உதவுகிறது.", + "Sunday": "ஞாயிற்றுக்கிழமை", + "Suggestions": "பரிந்துரைகள்", + "Subtitles": "வசன வரிகள்", + "SubtitleOffset": "வசன ஆஃப்செட்", + "SubtitleDownloadersHelp": "முன்னுரிமைக்கு ஏற்ப உங்களுக்கு விருப்பமான வசன பதிவிறக்கிகளை இயக்கவும் தரவரிசைப்படுத்தவும்.", + "SubtitleAppearanceSettingsDisclaimer": "இந்த அமைப்புகள் வரைகலை வசன வரிகள் (PGD, DVD போன்றவை) அல்லது அவற்றின் சொந்த பாணியை உட்பொதிக்கும் ASS/SSA வசன வரிகள் பொருந்தாது.", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "இந்தச் சாதனத்தால் தொடங்கப்பட்ட எந்த Chromecast இயக்கத்திற்கும் இந்த அமைப்புகள் பொருந்தும்.", + "Studios": "ஸ்டுடியோக்கள்", + "PathNotFound": "பாதை கண்டுபிடிக்க முடியவில்லை. பாதை செல்லுபடியாகும் என்பதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "SubtitleVerticalPositionHelp": "உரை தோன்றும் வரி எண். நேர்மறை எண்கள் மேல் கீழே குறிக்கின்றன. எதிர்மறை எண்கள் கீழே மேலே குறிக்கின்றன.", + "LabelSubtitleVerticalPosition": "செங்குத்து நிலை:", + "ClearQueue": "வரிசையை அழிக்கவும்", + "StopPlayback": "பிளேபேக்கை நிறுத்துங்கள்", + "ButtonPlayer": "பிளேயர்", + "ButtonCast": "நடிகர்கள்", + "ButtonSyncPlay": "ஒத்திசைவு", + "EnableBlurHashHelp": "இன்னும் ஏற்றப்படும் படங்கள் தனித்துவமான ஒதுக்கிடத்துடன் காண்பிக்கப்படும்.", + "EnableBlurHash": "படங்களுக்கு மங்கலான ஒதுக்கிடங்களை இயக்கவும்", + "UnsupportedPlayback": "DRM ஆல் பாதுகாக்கப்பட்ட உள்ளடக்கத்தை ஜெல்லிஃபின் டிக்ரிப்ட் செய்ய முடியாது, ஆனால் பாதுகாக்கப்பட்ட தலைப்புகள் உட்பட எல்லா உள்ளடக்கமும் பொருட்படுத்தாமல் முயற்சிக்கப்படும். குறியாக்கம் அல்லது ஊடாடும் தலைப்புகள் போன்ற பிற ஆதரிக்கப்படாத அம்சங்கள் காரணமாக சில கோப்புகள் முற்றிலும் கருப்பு நிறத்தில் தோன்றக்கூடும்.", + "OnApplicationStartup": "பயன்பாட்டு தொடக்கத்தில்", + "EveryXHours": "ஒவ்வொரு {0} மணி நேரமும்", + "EveryHour": "ஒவ்வொரு மணி நேரமும்", + "EveryXMinutes": "ஒவ்வொரு {0} நிமிடங்களும்", + "OnWakeFromSleep": "தூக்கத்திலிருந்து எழுந்தவுடன்", + "WeeklyAt": "{1} இல் {0}", + "DailyAt": "தினசரி {0}", + "LastSeen": "கடைசியாக பார்த்தது {0}", + "PersonRole": "{0} என", + "ListPaging": "{0} - {2} இன் {1}", + "WriteAccessRequired": "ஜெல்லிஃபினுக்கு இந்த கோப்புறையில் எழுத அணுகல் தேவை. எழுதும் அணுகலை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "PlaybackRate": "பின்னணி வீதம்" } diff --git a/src/strings/tr.json b/src/strings/tr.json index 2bae4757f4..053da36a5e 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -9,14 +9,10 @@ "ButtonArrowRight": "Sağ", "ButtonBack": "Geri", "ButtonCancel": "İptal", - "ButtonEdit": "Düzenle", - "ButtonFilter": "Filtrele", - "ButtonHome": "Anasayfa", "ButtonInfo": "Bilgi", "ButtonManualLogin": "Manuel Giriş", "ButtonOk": "Tamam", "ButtonPause": "Duraklat", - "ButtonPlay": "Oynat", "ButtonQuickStartGuide": "Hızlı başlangıç rehberi", "ButtonRefreshGuideData": "Kılavuzu Yinele", "ButtonRemove": "Sil", @@ -28,7 +24,6 @@ "ButtonSignIn": "Giriş Yapın", "ButtonSignOut": "Çıkış Yap", "ButtonStop": "Durdur", - "ButtonSubtitles": "Altyazılar", "ChannelAccessHelp": "Bu kullanıcıyla paylaşmak üzere kanalları seç. Yöneticiler bütün kanalları metada yöneticisi ile düzenleyebilecekler.", "Continuing": "Devam ediyor", "Delete": "Sil", @@ -48,7 +43,6 @@ "FolderTypeTvShows": "TV", "Friday": "Cuma", "HeaderActiveRecordings": "Aktif Kayıtlar", - "HeaderAddUser": "Kullanıcı Ekle", "HeaderCodecProfile": "Codec Profili", "HeaderContinueWatching": "İzlemeye Devam Et", "HeaderCustomDlnaProfiles": "Özel Profiller", @@ -86,7 +80,6 @@ "LabelCountry": "Ülke:", "LabelCurrentPassword": "Kullanımdaki şifre:", "LabelDay": "Gün:", - "LabelDisplayMissingEpisodesWithinSeasons": "Sezondaki kayıp bölümleri göster", "LabelEnableDlnaServer": "DLNA Sunucusunu Etkinleştir", "LabelFinish": "Bitir", "LabelIconMaxHeight": "Maksimum simge genişliği:", @@ -126,7 +119,6 @@ "OptionAllowUserToManageServer": "Bu kullanıcıya sunucuyu yönetme izni ver", "OptionArtist": "Sanatçı", "OptionAscending": "Yükselen", - "OptionAutomatic": "Otomatik", "OptionContinuing": "Topluluk", "OptionCriticRating": "Yorumcu Puanı", "OptionDaily": "Günlük", @@ -183,14 +175,10 @@ "Sunday": "Pazar", "TabAccess": "Erişim", "TabAdvanced": "Gelişmiş", - "TabAlbumArtists": "Albüm Sanatçıları", "TabCatalog": "Katalog", "TabCodecs": "Codecler", - "TabEpisodes": "Bölümler", - "TabInfo": "Bilgi", "TabLatest": "En yeni", "TabMusic": "Muzik", - "TabMusicVideos": "Klipler", "TabMyPlugins": "Eklentilerim", "TabNetworks": "Ağlar", "TabNotifications": "Bildirimler", @@ -198,7 +186,6 @@ "TabProfiles": "Profiller", "TabServer": "Sunucu", "TabSettings": "Ayarlar", - "TabTrailers": "Fragmanlar", "TabUpcoming": "Gelecek", "TellUsAboutYourself": "Kendinizden bahsedin", "ThisWizardWillGuideYou": "Bu sihirbaz kurulum işlemi boyunca size yardımcı olacaktır. Başlamak için, tercih ettiğiniz dili seçiniz.", @@ -223,7 +210,6 @@ "AirDate": "Yayın tarihi", "Aired": "Yayınlanma tarihi", "Alerts": "Uyarılar", - "ButtonEditImages": "Resimleri Düzenle", "ButtonEditOtherUserPreferences": "Bu kullanıcının profilini, resmini ve kişisel tercihlerini düzenleyin.", "ButtonForgotPassword": "Şifremi unuttum", "ButtonFullscreen": "Tam Ekran", @@ -251,7 +237,6 @@ "ColorTransfer": "Renk transferi", "ButtonPreviousTrack": "Önceki parça", "ButtonProfile": "Profil", - "ButtonRefresh": "Yenile", "ButtonRename": "Yeniden Adlandır", "ButtonResume": "Devam Et", "ButtonRevoke": "Geri al", @@ -296,7 +281,6 @@ "ButtonOpen": "Aç", "ButtonNetwork": "Ağ", "ButtonNextTrack": "Sonraki parça", - "ButtonOff": "Kapalı", "ButtonParentalControl": "Ebeveyn Kontrolü", "ButtonArrowLeft": "Sol", "ButtonGuide": "Rehber", @@ -386,7 +370,6 @@ "EnableCinemaMode": "Sinema Modu", "EnableColorCodedBackgrounds": "Renk kodlu arka planlar", "HeaderGuideProviders": "TV Rehberi Veri Sağlayıcıları", - "HeaderForgotPassword": "Parolanızı mı unuttunuz", "HeaderForKids": "Çocuklar için", "HeaderFetcherSettings": "Alıcı Ayarları", "HeaderFetchImages": "Görüntüleri Getir:", @@ -396,7 +379,6 @@ "HeaderFavoriteBooks": "favori kitaplar", "HeaderExternalIds": "Dış kimlikler:", "HeaderError": "Hata", - "HeaderEpisodes": "Bölümler", "HeaderEnabledFieldsHelp": "Kilitlemek ve verilerinin değişmesini önlemek için bir alanın işaretini kaldırın.", "HeaderEnabledFields": "Etkin Alanlar", "HeaderEditImages": "Görüntüleri Düzenle", @@ -425,12 +407,10 @@ "HeaderCodecProfileHelp": "Codec profilleri, belirli kodlayıcıları oynatırken cihazın sınırlamalarını gösterir. Eğer bir sınırlama uygulanırsa, kodeğin doğrudan oynaması için yapılandırılmış olsa bile, ortam kodlanır.", "HeaderChapterImages": "Bölüm Görüntüleri", "HeaderChannelAccess": "Kanal erişimi", - "HeaderCastCrew": "Kast ekibi", "HeaderCastAndCrew": "Kast ekibi", "HeaderCancelSeries": "Serileri İptal Et", "HeaderCancelRecording": "Kaydı İptal Et", "HeaderBranding": "dağlama", - "HeaderBooks": "Kitaplar", "HeaderBlockItemsWithNoRating": "Tanınmayan veya bilinmeyen derecelendirme bilgisine sahip öğeleri engelle:", "HeaderAudioSettings": "Ses ayarları", "HeaderAudioBooks": "Sesli Kitaplar", @@ -446,7 +426,6 @@ "HeaderAddUpdateImage": "Resim Ekle / Güncelle", "HeaderAddToPlaylist": "Oynatma listesine ekle", "HeaderAddToCollection": "Koleksiyona ekle", - "HeaderAddScheduledTaskTrigger": "Tetikleyici ekle", "HeaderActivity": "Aktivite", "HeaderActiveDevices": "Aktif Cihazlar", "HeaderAccessScheduleHelp": "Belirli saatlerle erişimi sınırlamak için bir erişim programı oluşturun.", @@ -490,9 +469,7 @@ "Episodes": "Bölümler", "EndsAtValue": "{0} konumundaki biter", "EnableThemeVideosHelp": "Kitaplığa göz atarken tema videoları arka planda oynatın.", - "EnableThemeVideos": "Tema videoları", "EnableThemeSongsHelp": "Kitaplığa göz atarken tema şarkıları arka planda çalın.", - "EnableThemeSongs": "Tema şarkıları", "EnableStreamLoopingHelp": "Canlı akışlar yalnızca birkaç saniye veri içeriyorsa ve sürekli istenmesi gerekiyorsa bunu etkinleştirin. Gerekmediğinde bunu etkinleştirmek sorunlara neden olabilir.", "EnableStreamLooping": "Otomatik döngü canlı akışları", "Hide": "Gizle", @@ -536,7 +513,6 @@ "HeaderMusicQuality": "Müzik Kalitesi", "HeaderMoreLikeThis": "Buna Benzer Daha Fazla", "HeaderMetadataSettings": "Meta Verisi Ayarları", - "HeaderMediaInfo": "Medya Bilgisi", "HeaderMedia": "Medya", "HeaderLoginFailure": "Giriş Başarısız", "HeaderLiveTvTunerSetup": "Canlı TV istasyon Kurulumu", @@ -554,7 +530,6 @@ "HeaderIdentificationCriteriaHelp": "En az bir kimlik kriteri girmelisiniz.", "HeaderIdentification": "Kimlik", "HeaderHttpHeaders": "HTTP Başlıkları", - "HeaderHome": "Ana Sayfa", "HeaderFavoritePeople": "Favori Kişiler", "LabelEnableAutomaticPortMap": "Otomatik port eşleştirmeyi etkinleştir", "LabelEasyPinCode": "Basit pin kodu:", @@ -583,7 +558,6 @@ "LabelAudioSampleRate": "Ses örnekleme hızı:", "LabelAudioCodec": "Ses kodeği:", "LabelAudioChannels": "Ses kanalları:", - "LabelAudio": "Ses", "LabelAppName": "Uygulama adı", "LabelAllowHWTranscoding": "Donanım kod dönüştürmesine izin ver", "LabelAlbumArtMaxWidth": "Albüm resmi maks. genişlik:", @@ -687,7 +661,6 @@ "LabelSupportedMediaTypes": "Desteklenen Ortam Türleri:", "LabelSubtitlePlaybackMode": "Altyazı biçimi:", "LabelSubtitleFormatHelp": "Örnek: srt", - "LabelSubtitles": "Altyazılar", "LabelStreamType": "Akış türü:", "LabelSubtitleDownloaders": "Altyazı indiriciler:", "LabelStopping": "Durduruluyor", diff --git a/src/strings/uk.json b/src/strings/uk.json index ff69296e07..893311884c 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -3,7 +3,6 @@ "BirthPlaceValue": "Місце народження: {0}", "ButtonAddUser": "Додати користувача", "ButtonCancel": "Скасувати", - "ButtonFilter": "Фільтр", "ButtonRename": "Перейменувати", "ButtonResetPassword": "Скинути пароль", "ButtonSignOut": "Вийти", @@ -14,7 +13,6 @@ "FolderTypeMovies": "Фільми", "FolderTypeMusic": "Музика", "FolderTypeTvShows": "ТБ", - "HeaderBooks": "Книги", "HeaderDeleteDevice": "Видалить пристрій", "HeaderLatestEpisodes": "Нещодавно переглянуті серії", "HeaderLatestMedia": "Нещодавно переглянуті", @@ -56,13 +54,11 @@ "ParentalRating": "Parental Rating", "Save": "Зберігти", "Settings": "Налаштування", - "TabEpisodes": "Епізоди", "TabNetworks": "Мережі", "TabNotifications": "Повідомлення", "TabPlugins": "Додатки", "TabProfile": "Профіль", "TabProfiles": "Профілі", - "TabTrailers": "Трейлери", "ValueAlbumCount": "{0} альбомів", "ValueDiscNumber": "Диск {0}", "ValueEpisodeCount": "{0} епізодів", @@ -180,7 +176,6 @@ "ButtonUninstall": "Видалити", "ButtonTrailer": "Трейлер", "ButtonTogglePlaylist": "Плейлист", - "ButtonSubtitles": "Субтитри", "ButtonSubmit": "Підтвердити", "ButtonSplit": "Розділити", "ButtonStop": "Зупинити", @@ -199,30 +194,24 @@ "ButtonResetEasyPassword": "Скинути простий пін-код", "ButtonRemove": "Видалити", "ButtonRefreshGuideData": "Оновити дані телегіда", - "ButtonRefresh": "Оновити", "ButtonQuickStartGuide": "Посібник по швидкому запуску", "ButtonProfile": "Профіль", "ButtonPreviousTrack": "Попередня доріжка", - "ButtonPlay": "Відтворити", "ButtonPause": "Пауза", "ButtonParentalControl": "Батьківський контроль", "ButtonOpen": "Відкрити", "ButtonOk": "Ок", - "ButtonOff": "Вимкнути", "ButtonNextTrack": "Наступна доріжка", "ButtonNetwork": "Мережа", "ButtonMore": "Більше", "ButtonManualLogin": "Ввести ім’я користувача вручну", "ButtonLibraryAccess": "Доступ до медіатеки", "ButtonInfo": "Інформація", - "ButtonHome": "Головна", "ButtonGuide": "Телегід", "ButtonGotIt": "Зрозуміло", "ButtonFullscreen": "Повноекранний режим", "ButtonForgotPassword": "Забув(ла) пароль", "ButtonEditOtherUserPreferences": "Редагувати профіль, зображення та особисті налаштування даного користувача.", - "ButtonEditImages": "Редагувати зображення", - "ButtonEdit": "Редагувати", "ButtonChangeServer": "Змінити сервер", "ButtonBack": "Назад", "ButtonAudioTracks": "Аудіозаписи", @@ -243,5 +232,41 @@ "Backdrop": "Фон", "AroundTime": "Приблизно", "AlwaysPlaySubtitlesHelp": "Субтитри, що відповідають мовним параметрам, завантажуватимуться незалежно від мови звуку.", - "AllowFfmpegThrottlingHelp": "Коли перекодування або перепакування досить далеко випереджає поточну позицію відтворення, процес призупиняється, щоб зекономити ресурси. Це найкорисніше при перегляді, коли рідко міняється позиція відтворення. Вимкніть це, якщо виникнуть проблеми з відтворенням." + "AllowFfmpegThrottlingHelp": "Коли перекодування або перепакування досить далеко випереджає поточну позицію відтворення, процес призупиняється, щоб зекономити ресурси. Це найкорисніше при перегляді, коли рідко міняється позиція відтворення. Вимкніть це, якщо виникнуть проблеми з відтворенням.", + "ExitFullscreen": "Вийти з повноекранного режиму", + "Episodes": "Серії", + "Episode": "Серія", + "Ended": "Закінчилось", + "EnableThemeVideos": "Тематичні відео", + "EnableThemeSongs": "Тематичні пісні", + "EnablePhotos": "Показувати фото", + "EnableHardwareEncoding": "Ввімкнути апаратне кодування", + "EnableExternalVideoPlayers": "Зовнішні відеоплеєри", + "EnableCinemaMode": "Режим кіно", + "EditSubtitles": "Редагувати субтитри", + "EditMetadata": "Редагувати метадані", + "EditImages": "Редагувати зображення", + "Edit": "Редагувати", + "DownloadsValue": "{0} завантажень", + "Download": "Завантажити", + "Down": "Вниз", + "DoNotRecord": "Не записувати", + "Depressed": "Подавлений", + "ErrorDefault": "Виникла помилка при обробці запиту. Будь-ласка повторіть пізніше.", + "DatePlayed": "Дата програвання", + "DateAdded": "Дата додана", + "Default": "За замовчуванням", + "Delete": "Видалити", + "DeleteImage": "Видалити зображення", + "DeleteMedia": "Видалити медіа", + "DeleteUser": "Видалити користувача", + "Desktop": "Робочий стіл", + "DetectingDevices": "Виявлення пристроїв", + "DirectStreaming": "Пряме мовлення", + "Director": "Режисер", + "Directors": "Режисери", + "Disabled": "Відключено", + "Disc": "Диск", + "Display": "Дисплей", + "Disconnect": "Відключити" } diff --git a/src/strings/vi.json b/src/strings/vi.json index 48e59ca057..68718d4c5d 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -16,7 +16,6 @@ "FileReadCancelled": "Tệp tin đọc đã bị hủy.", "FileReadError": "Có một lỗi xảy ra khi đọc tệp tin này.", "FolderTypeTvShows": "TV", - "HeaderAddUser": "Thêm người dùng", "HeaderCustomDlnaProfiles": "Hồ sơ khách hàng", "HeaderFeatureAccess": "Truy cập tính năng", "HeaderFrequentlyPlayed": "Phát thường xuyên", @@ -47,7 +46,6 @@ "OptionAlbumArtist": "Album nghệ sỹ", "OptionAllowUserToManageServer": "Cho phép người dùng này quản lý máy chủ", "OptionArtist": "Nghệ sỹ", - "OptionAutomatic": "Tự động", "OptionCommunityRating": "Đánh giá của cộng đồng", "OptionDateAdded": "Ngày thêm", "OptionDatePlayed": "Ngày phát", @@ -79,11 +77,8 @@ "Save": "Lưu", "SettingsSaved": "Lưu các cài đặt.", "Sunday": "Chủ Nhật", - "TabAlbumArtists": "Các Album nghệ sỹ", "TabCatalog": "Danh mục", - "TabEpisodes": "Các tập phim", "TabLatest": "Mới nhất", - "TabMusicVideos": "Các video âm nhạc", "TabMyPlugins": "Các plugin của tôi", "TabNetworks": "Các mạng", "TabProfile": "Hồ sơ", @@ -103,30 +98,23 @@ "ButtonResetEasyPassword": "Đặt lại mã pin nhanh", "ButtonRename": "Đổi tên", "ButtonRefreshGuideData": "Làm mới dữ liệu hướng dẫn", - "ButtonRefresh": "Làm mới", "ButtonQuickStartGuide": "Hướng dẫn nhanh", "ButtonProfile": "Hồ sơ", "ButtonPreviousTrack": "Bài trước", - "ButtonPlay": "Chơi", "ButtonPause": "Tạm dừng", "ButtonParentalControl": "Kiểm soát của cha mẹ", "ButtonOpen": "Mở", - "ButtonOff": "Tắt", "ButtonNextTrack": "Tiếp theo", "ButtonNetwork": "Mạng", "ButtonMore": "Thêm", "ButtonManualLogin": "Đăng nhập thủ công", "ButtonLibraryAccess": "Truy cập thư viện", "ButtonInfo": "Thông tin", - "ButtonHome": "Trang chủ", "ButtonGuide": "Hướng dẫn", "ButtonGotIt": "Hiểu rồi", "ButtonFullscreen": "Toàn màn hình", "ButtonForgotPassword": "Quên mật khẩu", - "ButtonFilter": "Lọc", "ButtonEditOtherUserPreferences": "Chỉnh sửa thông tin, hình ảnh và sở thích cá nhân.", - "ButtonEditImages": "Sửa hình ảnh", - "ButtonEdit": "Sửa", "ButtonChangeServer": "Đổi máy chủ", "ButtonBack": "Lùi", "ButtonAudioTracks": "Track âm thanh", @@ -192,7 +180,6 @@ "ButtonWebsite": "Trang web", "ButtonUninstall": "Gỡ cài đặt", "ButtonTrailer": "Tóm tắt", - "ButtonSubtitles": "Phụ đề", "ButtonSubmit": "Đăng", "ButtonSplit": "Tách", "ButtonStop": "Ngưng", @@ -298,12 +285,10 @@ "HeaderCodecProfile": "Bộ Giải Mã", "HeaderChapterImages": "Hình Ảnh Phân Đoạn", "HeaderChannelAccess": "Quyền Truy Cập Kênh", - "HeaderCastCrew": "Diễn Viên & Ê-kíp", "HeaderCastAndCrew": "Diễn Viên & Ê-kíp", "HeaderCancelSeries": "Huỷ Series", "HeaderCancelRecording": "Dừng Ghi Âm/Ghi Hình", "HeaderBranding": "Tạo Thương Hiệu", - "HeaderBooks": "Sách", "HeaderBlockItemsWithNoRating": "Khoá những mục không có thông tin đánh giá hoặc thông tin không đáng tin cậy:", "HeaderAudioSettings": "Cài Đặt Âm Thanh", "HeaderAudioBooks": "Sách Nói", @@ -320,7 +305,6 @@ "HeaderAddUpdateImage": "Thêm/Thay Đổi Hình Ảnh", "HeaderAddToPlaylist": "Thêm vào Danh Sách Phát", "HeaderAddToCollection": "Thêm vào Bộ Sưu Tập", - "HeaderAddScheduledTaskTrigger": "Thêm Kích Hoạt Tác Vụ", "HeaderActivity": "Hoạt Động", "HeaderActiveRecordings": "Bản Ghi Hình/Ghi Âm Đang Hoạt Động", "HardwareAccelerationWarning": "Bật tính năng hỗ trợ từ phần cứng có thể gây ra sự bất ổn trong một vài môi trường. Hãy chắc chắn rằng điều hành và driver thiết bị đồ hoạ đã được cập nhật mới nhất. Nếu gặp vấn đề khi phát video sau khi bật tính năng này, bạn nên tắt tính năng này.", @@ -375,9 +359,7 @@ "EndsAtValue": "Kết thúc tại {0}", "Ended": "Đã kết thúc", "EnableThemeVideosHelp": "Phát nền những video chủ đề khi lướt qua thư viện nội dung.", - "EnableThemeVideos": "Video chủ đề", "EnableThemeSongsHelp": "Phát những bài hát chủ đề khi lướt qua thư viện nội dung.", - "EnableThemeSongs": "Nhạc chủ đề", "EnableStreamLoopingHelp": "Cho phép tính năng này nếu live streams chỉ dài một vài giây và cần được lặp lại liên tục. Bật tính năng này khi không cần thiết có thể gây ra nhiều vấn đề khác.", "EnableStreamLooping": "Tự động phát lại live streams", "EnablePhotosHelp": "Hình ảnh sẽ được nhận diện và hiển thị bên cạnh những nội dung media.", @@ -417,7 +399,6 @@ "HeaderMusicQuality": "Chất Lượng Âm Nhạc", "HeaderMoreLikeThis": "Nội Dung Tương Tự", "HeaderMetadataSettings": "Cài Đặt Dữ Liệu Bổ Trợ", - "HeaderMediaInfo": "Thông Tin Nội Dung", "HeaderMediaFolders": "Thư Mục Chứa Nội Dung", "HeaderMedia": "Nội Dung", "HeaderLoginFailure": "Đăng Nhập Không Thành Công", @@ -442,9 +423,7 @@ "HeaderIdentificationCriteriaHelp": "Nhập vào ít nhật một thông tin nhận biết.", "HeaderIdentification": "Thông Tin Nhận Biết", "HeaderHttpHeaders": "HTTP Headers", - "HeaderHome": "Trang Chủ", "HeaderGuideProviders": "Nhà Cung Cấp Lịch Phát Sóng TV", - "HeaderForgotPassword": "Quên Mật Khẩu", "HeaderForKids": "Dành Cho Trẻ Em", "HeaderFetcherSettings": "Cài Đặt Chương Trình Tải Xuống", "HeaderFetchImages": "Tải Hình Ảnh:", @@ -459,7 +438,6 @@ "HeaderFavoriteMovies": "Phim Yêu Thích", "HeaderExternalIds": "Mã Định Danh Từ Bên Ngoài:", "HeaderError": "Lỗi", - "HeaderEpisodes": "Tập", "HeaderEnabledFieldsHelp": "Bỏ chọn một mục để khoá lựa chọn đó và không để nó thay đổi.", "HeaderEnabledFields": "Những Mục Được Kích Hoạt", "HeaderEditImages": "Chỉnh Sửa Hình Ảnh", @@ -521,7 +499,6 @@ "HeaderSpecialFeatures": "Những Phần Đặc Biệt Nổi Bật", "HeaderSpecialEpisodeInfo": "Thông Tin Tập Đặc Biệt", "LabelCustomDeviceDisplayNameHelp": "Cung cấp một tên hiển thị riêng hoặc bỏ trống để sử dụng tên có sẵn của thiết bị.", - "LabelCustomDeviceDisplayName": "Tên hiển thị:", "LabelCustomCssHelp": "Áp dụng tuỳ chỉnh riêng của bạn vào giao diện trang web.", "LabelCustomCss": "CSS tuỳ chọn:", "LabelCustomCertificatePathHelp": "Đường dẫn đến tập tin PKCS #12 chứa chứng chỉ (certificate) và khoá riêng (private key) để bật tính năng TLS trên một tên miền tuỳ chọn.", @@ -554,7 +531,6 @@ "LabelAudioChannels": "Các kênh âm thanh:", "LabelAudioBitrate": "Bitrate của âm thanh:", "LabelAudioBitDepth": "Chiều sâu của âm thanh:", - "LabelAudio": "Âm Thanh", "LabelArtistsHelp": "Sử dụng dấu ; để tách rời nhiều nghệ", "LabelArtists": "Nghệ sĩ:", "LabelAppNameExample": "Ví dụ: Sickbeard, Sonarr", @@ -627,7 +603,6 @@ "LabelDisplayOrder": "Thứ tự hiển thị:", "LabelDisplayName": "Tên hiển thị:", "LabelDisplayMode": "Chế độ hiển thị:", - "LabelDisplayMissingEpisodesWithinSeasons": "Hiển thị những tập bị thiếu", "LabelDisplayLanguageHelp": "Dự án chuyển ngữ Jellyfin là một dự án diễn ra ra liên tục.", "LabelDisplayLanguage": "Ngôn ngữ hiển thị:", "LabelDiscNumber": "Đĩa số:", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index b14bec8277..a44b9ab992 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -56,31 +56,24 @@ "ButtonBack": "返回", "ButtonCancel": "取消", "ButtonChangeServer": "更改服务器", - "ButtonEdit": "编辑", - "ButtonEditImages": "修改图片", "ButtonEditOtherUserPreferences": "编辑这个用户的用户配置,图片和个人参数。", - "ButtonFilter": "筛选", "ButtonForgotPassword": "忘记密码", "ButtonFullscreen": "全屏", "ButtonGotIt": "知道了", "ButtonGuide": "指南", - "ButtonHome": "首页", "ButtonInfo": "详情", "ButtonLibraryAccess": "媒体库访问", "ButtonManualLogin": "手动登录", "ButtonMore": "更多", "ButtonNetwork": "网络", "ButtonNextTrack": "下一音轨", - "ButtonOff": "关", "ButtonOk": "确定", "ButtonOpen": "打开", "ButtonParentalControl": "家长控制", "ButtonPause": "暂停", - "ButtonPlay": "播放", "ButtonPreviousTrack": "上一音轨", "ButtonProfile": "配置", "ButtonQuickStartGuide": "快速入门指南", - "ButtonRefresh": "刷新", "ButtonRefreshGuideData": "刷新指南数据", "ButtonRemove": "移除", "ButtonRename": "重命名", @@ -101,7 +94,6 @@ "ButtonStart": "开始", "ButtonStop": "停止", "ButtonSubmit": "提交", - "ButtonSubtitles": "字幕", "ButtonTrailer": "预告片", "ButtonUninstall": "卸载", "ButtonWebsite": "网站", @@ -177,9 +169,7 @@ "EnablePhotosHelp": "图片将被检测到并和其他媒体文件一起显示。", "EnableStreamLooping": "自动循环直播流", "EnableStreamLoopingHelp": "如果直播流仅包含了几秒钟的数据并且需要被不断的请求,请启用此项。如果在没有相关问题的情况下启动此项,可能会导致一些问题。", - "EnableThemeSongs": "主题曲", "EnableThemeSongsHelp": "当浏览媒体库时主题曲将作为背景音乐播放。", - "EnableThemeVideos": "主题视频", "EnableThemeVideosHelp": "当浏览媒体库时主题视频将作为背景视频播放。", "Ended": "结束", "EndsAtValue": "结束于 {0}", @@ -230,11 +220,9 @@ "HeaderActiveDevices": "活动的设备", "HeaderActiveRecordings": "正在录制的节目", "HeaderActivity": "活动", - "HeaderAddScheduledTaskTrigger": "添加触发", - "HeaderAddToCollection": "加入收藏", + "HeaderAddToCollection": "加入集合", "HeaderAddToPlaylist": "添加到播放列表", "HeaderAddUpdateImage": "添加/更新 图片", - "HeaderAddUser": "添加用户", "HeaderAdditionalParts": "附加部分", "HeaderAdmin": "管理", "HeaderAlbumArtists": "专辑作家", @@ -246,10 +234,8 @@ "HeaderAudioBooks": "有声读物", "HeaderAudioSettings": "声音设置", "HeaderBlockItemsWithNoRating": "通过没有评级和设置不允许的评级锁定内容:", - "HeaderBooks": "书籍", "HeaderBranding": "品牌", "HeaderCastAndCrew": "演员表", - "HeaderCastCrew": "演职人员", "HeaderChannelAccess": "频道访问", "HeaderChapterImages": "剧集图片", "HeaderCodecProfile": "编解码器配置", @@ -283,14 +269,12 @@ "HeaderEditImages": "修改图片", "HeaderEnabledFields": "已启用的栏", "HeaderEnabledFieldsHelp": "反选栏以锁定并不让其数据被更改。", - "HeaderEpisodes": "集数", "HeaderError": "错误", "HeaderExternalIds": "外部 ID:", "HeaderFeatureAccess": "可使用的功能", "HeaderFetchImages": "获取图像:", "HeaderFetcherSettings": "读取器设置", "HeaderForKids": "给儿童", - "HeaderForgotPassword": "忘记密码", "HeaderFrequentlyPlayed": "多次播放", "HeaderGuideProviders": "电视指南数据提供方", "HeaderHttpHeaders": "HTTP 头部", @@ -317,7 +301,6 @@ "HeaderLoginFailure": "登录失败", "HeaderMedia": "媒体", "HeaderMediaFolders": "媒体文件夹", - "HeaderMediaInfo": "媒体信息", "HeaderMetadataSettings": "元数据设置", "HeaderMoreLikeThis": "更多类似的", "HeaderMusicVideos": "音乐视频", @@ -458,7 +441,7 @@ "LabelCertificatePassword": "证书密码:", "LabelCertificatePasswordHelp": "如果你的证书需要密码,请在此输入它。", "LabelChannels": "频道:", - "LabelCollection": "收藏:", + "LabelCollection": "集合:", "LabelCommunityRating": "公众评分:", "LabelContentType": "内容类型:", "LabelCorruptedFrames": "损坏的帧:", @@ -469,7 +452,6 @@ "LabelCustomCertificatePathHelp": "提供一个包含了证书和私钥的 PKCS #12 文件的路径以在一个自定义域名上启动 TLS 支持。", "LabelCustomCss": "自定义CSS:", "LabelCustomCssHelp": "应用你的自定义样式到网页。", - "LabelCustomDeviceDisplayName": "显示名称:", "LabelCustomDeviceDisplayNameHelp": "自定义设备显示名称或留空则使用设备报告名称。", "LabelCustomRating": "自定义分级:", "LabelDateAdded": "加入日期:", @@ -486,7 +468,6 @@ "LabelDiscNumber": "光盘号:", "LabelDisplayLanguage": "显示的语言:", "LabelDisplayLanguageHelp": "Jellyfin的翻译工作是一个不断推进的工程项目。", - "LabelDisplayMissingEpisodesWithinSeasons": "显示每季里缺少的剧集", "LabelDisplayMode": "显示模式:", "LabelDisplayName": "显示名称:", "LabelDisplayOrder": "显示顺序:", @@ -532,8 +513,8 @@ "LabelFormat": "格式:", "LabelFriendlyName": "好记的名称:", "LabelServerNameHelp": "此名称将用做服务器名,默认使用服务器的主机名。", - "LabelGroupMoviesIntoCollections": "批量添加电影到收藏", - "LabelGroupMoviesIntoCollectionsHelp": "显示电影列表时,同一收藏的电影将显示为一个分组。", + "LabelGroupMoviesIntoCollections": "批量添加电影到集合", + "LabelGroupMoviesIntoCollectionsHelp": "显示电影列表时,同一集合的电影将显示为一个分组。", "LabelH264Crf": "H264 CRF 编码质量等级:", "LabelEncoderPreset": "H264 和 H265 编码预设:", "LabelHardwareAccelerationType": "硬件加速:", @@ -642,7 +623,6 @@ "LabelPostProcessorArguments": "处理器后命令行参数:", "LabelPostProcessorArgumentsHelp": "使用 {path} 作为录制文件的路径。", "LabelPreferredDisplayLanguage": "首选显示语言:", - "LabelPreferredDisplayLanguageHelp": "Jellyfin的翻译工作是一个不断推进的工程项目。", "LabelPreferredSubtitleLanguage": "字幕语言偏好:", "LabelProfileAudioCodecs": "音频编解码器:", "LabelProfileCodecs": "编解码器:", @@ -701,7 +681,6 @@ "LabelSubtitleDownloaders": "字幕下载器:", "LabelSubtitleFormatHelp": "例如:SRT", "LabelSubtitlePlaybackMode": "字幕模式:", - "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "支持的媒体类型:", "LabelTVHomeScreen": "TV 模式主屏幕:", "LabelTag": "标签:", @@ -714,12 +693,9 @@ "LabelTimeLimitHours": "时间限制(小时):", "LabelTitle": "标题:", "LabelTrackNumber": "音轨号码:", - "LabelTranscodingAudioCodec": "音频编解码器:", - "LabelTranscodingContainer": "容器:", "LabelTranscodingTempPathHelp": "设置转码文件存储目录。留空以使用服务器默认文件夹。", "LabelTranscodingThreadCount": "转码线程数:", "LabelTranscodingThreadCountHelp": "选择转码时使用的最大线程数。\n减少线程数量将会降低CPU使用率,可能无法快速进行转换并流畅的播放。", - "LabelTranscodingVideoCodec": "视频编解码器:", "LabelTriggerType": "触发类型:", "LabelTunerIpAddress": "调谐器 IP 地址:", "LabelTunerType": "调谐器类型:", @@ -823,7 +799,6 @@ "MessagePluginConfigurationRequiresLocalAccess": "请直接登录你的本地服务器以设置这个插件。", "MessagePluginInstallDisclaimer": "安装社区成员构建的插件来获取额外的功能是增强您体验的一种很好的方式。但在安装之前请意识到他们可能会对你的服务器造成影响,如更长的媒体库扫描时间、额外的后台处理、以及系统稳定性的降低等。", "MessageReenableUser": "请参阅以下以重新启用", - "MessageSettingsSaved": "设置已保存。", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "以下媒体路径将从你的媒体库移除:", "MessageUnableToConnectToServer": "现在无法连接所选择的服务器,请确保该服务器目前正在运行。", "MessageUnsetContentHelp": "内容将显示为纯文件夹。为取得最佳效果, 请使用元数据管理器设置子文件夹的内容类型。", @@ -846,7 +821,7 @@ "MySubtitles": "我的字幕", "Name": "名称", "Never": "从不", - "NewCollection": "新收藏", + "NewCollection": "新集合", "NewCollectionHelp": "“收藏”允许你为电影和其他媒体库内容创建个性化分组。", "NewCollectionNameExample": "例如:星球大战收藏", "NewEpisodes": "新剧集", @@ -889,7 +864,6 @@ "OptionArtist": "艺术家", "OptionAscending": "升序", "OptionAuto": "自动", - "OptionAutomatic": "自动", "OptionAutomaticallyGroupSeries": "自动合并分布在不同文件夹的电视剧", "OptionAutomaticallyGroupSeriesHelp": "在这个媒体库的多个文件夹中的同一部电视剧将会自动整合成一部电视剧。", "OptionBlockBooks": "书籍", @@ -1053,7 +1027,7 @@ "RefreshQueued": "列队已刷新。", "ReleaseDate": "发行日期", "RememberMe": "记住我", - "RemoveFromCollection": "从收藏中移除", + "RemoveFromCollection": "从集合中移除", "RemoveFromPlaylist": "从播放列表中移除", "Repeat": "重播", "RepeatAll": "全部循环", @@ -1117,18 +1091,14 @@ "TV": "电视", "TabAccess": "访问", "TabAdvanced": "高级", - "TabAlbumArtists": "专辑艺术家", "TabCatalog": "目录", "TabCodecs": "编解码器", "TabContainers": "媒体载体", "TabDashboard": "控制台", "TabDirectPlay": "直接播放", - "TabEpisodes": "剧集", - "TabInfo": "信息", "TabLatest": "最新", "TabLogs": "日志", "TabMusic": "音乐", - "TabMusicVideos": "音乐视频", "TabMyPlugins": "我的插件", "TabNetworks": "网络", "TabNfoSettings": "NFO 设定", @@ -1139,12 +1109,10 @@ "TabProfile": "个人配置", "TabProfiles": "配置", "TabResponses": "响应", - "TabResumeSettings": "恢复", "TabScheduledTasks": "计划任务", "TabServer": "服务器", "TabSettings": "设置", "TabStreaming": "流媒体传输", - "TabTrailers": "预告片", "TabUpcoming": "即将发布", "Tags": "标签", "TellUsAboutYourself": "请介绍一下你自己", @@ -1234,7 +1202,6 @@ "HeaderFavoriteVideos": "最爱的视频", "HeaderVideoType": "视频类型", "Items": "项目", - "LabelAudio": "音频", "LabelServerName": "服务器名称:", "LabelTranscodePath": "转码路径:", "LabelTranscodes": "转码:", @@ -1312,7 +1279,6 @@ "Vertical": "垂直", "Depressed": "凹陷", "Uniform": "轮廓", - "HeaderHome": "主页", "DashboardOperatingSystem": "操作系统:{0}", "DashboardArchitecture": "架构:{0}", "GroupVersions": "按版本分组", @@ -1475,5 +1441,6 @@ "MessageGetInstalledPluginsError": "获取已安装插件列表时出现错误。", "MessagePluginInstallError": "安装插件时出现错误。", "NextTrack": "下一曲", - "LabelUnstable": "不稳定" + "LabelUnstable": "不稳定", + "PlaybackRate": "播放速率" } diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 6cdb6f13a9..21ac5f304c 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -3,13 +3,9 @@ "ButtonAddScheduledTaskTrigger": "新增觸發點", "ButtonAddUser": "添加用戶", "ButtonCancel": "取消", - "ButtonEdit": "編輯", - "ButtonFilter": "過濾", "ButtonManualLogin": "手動登入", "ButtonOk": "確定", - "ButtonPlay": "播放", "ButtonQuickStartGuide": "快速入門指南", - "ButtonRefresh": "重新整理", "ButtonRefreshGuideData": "重新整理指南資料", "ButtonRemove": "清除", "ButtonRename": "重新命名", @@ -19,7 +15,6 @@ "ButtonSignIn": "登入", "ButtonSignOut": "登出", "ButtonSubmit": "提交", - "ButtonSubtitles": "字幕", "ChannelAccessHelp": "選擇此用戶共享頻道。管理員將能夠使用資料管理器而編輯所有文件夾。", "Continuing": "繼續", "CustomDlnaProfilesHelp": "為新的設備建立自定配置或覆蓋原有系統配置。", @@ -36,13 +31,9 @@ "Friday": "星期五", "HeaderActiveDevices": "生效裝置", "HeaderActiveRecordings": "正在錄影的節目", - "HeaderAddScheduledTaskTrigger": "新增觸發", "HeaderAddToCollection": "添加到收藏庫", - "HeaderAddUser": "添加用戶", "HeaderAdditionalParts": "附加部份", - "HeaderBooks": "書籍", "HeaderBranding": "界面", - "HeaderCastCrew": "演員陣容", "HeaderCustomDlnaProfiles": "自定配置", "HeaderDeviceAccess": "允許裝置通行", "HeaderDevices": "裝置", @@ -86,7 +77,6 @@ "LabelCustomCss": "自訂 CSS:", "LabelCustomCssHelp": "應用自訂 CSS Web 界面。", "LabelDay": "日子:", - "LabelDisplayMissingEpisodesWithinSeasons": "顯示每季缺少劇集資料", "LabelDisplaySpecialsWithinSeasons": "顯示劇集季度中的特集", "LabelEnableAutomaticPortMap": "啟用自動連接埠映射", "LabelEnableAutomaticPortMapHelp": "自動嘗試映射公共連接埠到 UPnP 本地連接埠。這可能無法用於某些路由器。", @@ -138,7 +128,6 @@ "LabelPassword": "密碼:", "LabelPath": "路徑:", "LabelPreferredDisplayLanguage": "首選語言:", - "LabelPreferredDisplayLanguageHelp": "翻譯 Jellyfin 是一個進行中的項目。", "LabelPublicHttpPort": "公共 http 連接埠號碼:", "LabelPublicHttpPortHelp": "公共連接埠號碼應映射到本地 http 連接埠。", "LabelPublicHttpsPort": "公共 https 連接埠號碼:", @@ -183,7 +172,6 @@ "OptionArtist": "歌手", "OptionAscending": "遞升", "OptionAuto": "自動", - "OptionAutomatic": "自動", "OptionBlockBooks": "書籍", "OptionBluray": "藍光", "OptionCommunityRating": "討論區評分", @@ -256,14 +244,10 @@ "SystemDlnaProfilesHelp": "系統配置文件是唯讀的。更改系統配置文件將被保存到一個自定新配置文件。", "TabAccess": "可以通行", "TabAdvanced": "進階", - "TabAlbumArtists": "唱片歌手", "TabCatalog": "目錄", "TabDashboard": "狀態", - "TabEpisodes": "劇集", - "TabInfo": "資訊", "TabLatest": "最新", "TabMusic": "音樂", - "TabMusicVideos": "MV", "TabMyPlugins": "我的插件", "TabNetworks": "網絡", "TabNotifications": "通知", @@ -272,7 +256,6 @@ "TabProfiles": "簡介", "TabServer": "伺服器", "TabSettings": "設定", - "TabTrailers": "預告", "TabUpcoming": "即將發佈", "TellUsAboutYourself": "介紹一下自己", "ThisWizardWillGuideYou": "此教學協助您完成安裝過程。首先,請選擇您的語言。", @@ -407,13 +390,11 @@ "ButtonNetwork": "網絡", "ButtonMore": "更多", "ButtonInfo": "資訊", - "ButtonHome": "主頁", "ButtonGuide": "教學", "ButtonGotIt": "了解", "ButtonFullscreen": "全螢幕", "ButtonForgotPassword": "忘記密碼", "ButtonEditOtherUserPreferences": "更改用戶個人檔案,圖片及個人偏好。", - "ButtonEditImages": "更改圖片", "ButtonChangeServer": "更換伺服器", "ButtonBack": "返回", "ButtonAudioTracks": "音軌", @@ -450,7 +431,6 @@ "CinemaModeConfigurationHelp": "影院模式可在播放主影片前加入預告片及自定引言片段,帶來戲院式體驗。", "ChangingMetadataImageSettingsNewContent": "任何資料變更只適用於新加入到媒體庫的內容。如要更改舊有媒體的內容,請手動刷新資料。", "ButtonSelectView": "選擇介面", - "ButtonOff": "關閉", "ButtonLibraryAccess": "媒體庫存取", "BookLibraryHelp": "支援文字及有聲書本。請查閱{0} 書本命名教學 {1}。", "DatePlayed": "播放日期", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 6361242d4e..52d960ba5c 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -7,17 +7,11 @@ "ButtonAddServer": "新增伺服器", "ButtonAddUser": "新增使用者", "ButtonCancel": "取消", - "ButtonEdit": "編輯", - "ButtonEditImages": "編輯圖片", - "ButtonFilter": "過濾", "ButtonForgotPassword": "忘記密碼", "ButtonGotIt": "我知道了", "ButtonGuide": "節目表", - "ButtonHome": "首頁", "ButtonOk": "確定", - "ButtonPlay": "播放", "ButtonQuickStartGuide": "快速入門指南", - "ButtonRefresh": "重新整理", "ButtonRefreshGuideData": "更新電視節目表", "ButtonRemove": "清除", "ButtonResetPassword": "重設密碼", @@ -50,16 +44,13 @@ "Friday": "星期五", "GuideProviderLogin": "登入", "HeaderActiveRecordings": "正在錄影的節目", - "HeaderAddUser": "增加使用者", "HeaderAdditionalParts": "附加部份", "HeaderAdmin": "管理", - "HeaderCastCrew": "拍攝人員及演員", "HeaderCustomDlnaProfiles": "自訂設定檔", "HeaderDeleteItem": "刪除項目", "HeaderEasyPinCode": "簡易 PIN 碼", "HeaderFeatureAccess": "可以使用的功能", "HeaderFetchImages": "擷取圖像:", - "HeaderForgotPassword": "忘記密碼", "HeaderFrequentlyPlayed": "經常播放", "HeaderGuideProviders": "節目表提供者", "HeaderImageSettings": "圖像設置", @@ -90,7 +81,6 @@ "LabelCountry": "國家:", "LabelCurrentPassword": "當前的密碼:", "LabelDay": "日:", - "LabelDisplayMissingEpisodesWithinSeasons": "顯示節目季度內缺少的單元", "LabelEnableDlnaClientDiscoveryInterval": "尋找用戶端時間間隔", "LabelEnableDlnaDebugLogging": "記錄 DLNA 除錯資料到日誌", "LabelEnableDlnaDebugLoggingHelp": "將會建立非常大的日誌檔案,建議在進行故障排除時啟用。", @@ -151,7 +141,6 @@ "OptionAllowUserToManageServer": "允許該使用者管理伺服器", "OptionArtist": "歌手", "OptionAscending": "升序", - "OptionAutomatic": "自動", "OptionBlockLiveTvChannels": "電視頻道", "OptionBluray": "藍光", "OptionCommunityRating": "社區評分", @@ -228,10 +217,7 @@ "Subtitles": "字幕", "Sunday": "星期天", "TabAdvanced": "進階", - "TabAlbumArtists": "專輯歌手", "TabCatalog": "目錄", - "TabEpisodes": "單元", - "TabInfo": "資訊", "TabLatest": "最新", "TabMusic": "音樂", "TabMyPlugins": "我的附加元件", @@ -240,7 +226,6 @@ "TabProfiles": "設定", "TabServer": "伺服器", "TabSettings": "設定", - "TabTrailers": "預告", "TabUpcoming": "接下來", "TellUsAboutYourself": "介紹一下自己", "ThisWizardWillGuideYou": "此精靈將帶你完成安裝過程,開始之前,請選擇您慣用的語言。", @@ -315,7 +300,6 @@ "ButtonMore": "更多", "ButtonNetwork": "網路", "ButtonNextTrack": "下一首", - "ButtonOff": "關", "ButtonOpen": "開", "ButtonParentalControl": "家長控制", "ButtonPause": "暫停", @@ -334,7 +318,6 @@ "ButtonStart": "開始", "ButtonStop": "停止", "ButtonSubmit": "送出", - "ButtonSubtitles": "字幕", "ButtonTrailer": "預告片", "ButtonUninstall": "解除安裝", "ButtonWebsite": "網站", @@ -411,9 +394,7 @@ "EnablePhotosHelp": "圖片將被偵測到並和其他媒體檔案一起顯示。", "EnableStreamLooping": "自動循環播放直播", "EnableStreamLoopingHelp": "如果直播僅包含了幾秒鐘的數據並且需要被不斷的請求,請啟用此項。如果在沒有相關問題的情況下啟動此項,可能會導致一些問題。", - "EnableThemeSongs": "主題曲", "EnableThemeSongsHelp": "瀏覽媒體庫時主題曲將作為背景音樂播放。", - "EnableThemeVideos": "啟用主題影片", "EnableThemeVideosHelp": "瀏覽媒體庫時主題影片將作為背景影片播放。", "Episodes": "劇集", "ErrorAddingListingsToSchedulesDirect": "在將電視節目時間表新增到您的 Schedules Direct 帳號時出現錯誤。每個 Schedules Direct 帳號只允許有限的時間表。您在繼續前可能需要登入 Schedules Direct 網站並刪除帳號中的其它清單。", @@ -457,7 +438,6 @@ "HeaderAccessScheduleHelp": "建立一個存取時程以限制可存取的時段。", "HeaderActiveDevices": "運行中裝置", "HeaderActivity": "活動", - "HeaderAddScheduledTaskTrigger": "新增觸發", "HeaderAddToCollection": "加到收藏", "HeaderAddToPlaylist": "加到播放清單", "HeaderAddUpdateImage": "新增/更新圖片", @@ -472,7 +452,6 @@ "HeaderAudioBooks": "有聲書", "HeaderAudioSettings": "音訊設定", "HeaderBlockItemsWithNoRating": "封鎖沒有評級或設置不允許的內容:", - "HeaderBooks": "書籍", "HeaderBranding": "品牌", "HeaderCancelRecording": "取消錄製", "HeaderCancelSeries": "取消系列", @@ -507,7 +486,6 @@ "HeaderEditImages": "編輯圖片", "HeaderEnabledFields": "已啟用的欄位", "HeaderEnabledFieldsHelp": "反選欄位以鎖定並不讓其數據被更改。", - "HeaderEpisodes": "集數", "HeaderError": "錯誤", "HeaderExternalIds": "外部 ID:", "HeaderFavoriteAlbums": "最愛專輯", @@ -540,7 +518,6 @@ "HeaderLiveTvTunerSetup": "電視直播調諧器安裝", "HeaderLoginFailure": "登入失敗", "HeaderMedia": "媒體", - "HeaderMediaInfo": "媒體資訊", "HeaderMetadataSettings": "中繼資料設定", "HeaderMoreLikeThis": "更多類似的", "HeaderMusicQuality": "音質", @@ -665,7 +642,6 @@ "LabelAppNameExample": "例如:可愛蹦蹦主機、小安的 Jellyfin", "LabelArtists": "藝人:", "LabelArtistsHelp": "將多位演出者以「;」分隔。", - "LabelAudio": "音訊", "LabelAuthProvider": "認證提供者:", "LabelAutomaticallyRefreshInternetMetadataEvery": "從網路自動抓取中繼資料:", "LabelBindToLocalNetworkAddress": "綁定本地網路地址:", @@ -688,9 +664,7 @@ "LabelCustomCertificatePathHelp": "提供包含證書和金鑰的 PKCS #12 文件的路徑以在自訂域名上啟用 TLS。", "LabelCustomCss": "自訂 CSS:", "LabelCustomCssHelp": "於網頁介面套用您的自訂樣式。", - "LabelCustomDeviceDisplayName": "顯示名稱:", "Depressed": "凹陷", - "HeaderHome": "首頁", "HeaderSelectMetadataPathHelp": "瀏覽或者輸入路徑以用於保存中繼資料,請確保資料夾可以寫入。", "HeaderSelectServerCachePathHelp": "瀏覽或者輸入路徑以用於伺服器快取檔案。請確保該資料夾可以被寫入。", "LabelCustomDeviceDisplayNameHelp": "指定自訂的顯示名稱,或者留空以使用設備自己報告的名稱。", @@ -728,8 +702,6 @@ "LabelImageType": "圖片格式:", "LabelIdentificationFieldHelp": "不區分大小寫的子字串或正則表達式。", "Large": "大", - "LabelTranscodingAudioCodec": "音訊編碼:", - "MessageSettingsSaved": "設定已儲存.", "LabelTranscodePath": "轉檔路徑:", "LabelTranscodes": "轉檔:", "MinutesAfter": "分後", @@ -791,7 +763,6 @@ "LabelExtractChaptersDuringLibraryScan": "於媒體庫掃描時擷取章節圖片", "LabelHttpsPort": "本地 HTTPS 埠:", "LabelFailed": "失敗", - "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "支援的媒體類型:", "LabelTextBackgroundColor": "文字背景顏色:", "LabelTextColor": "文字顏色:", @@ -926,7 +897,6 @@ "OptionBlockTrailers": "預告", "OptionBlockTvShows": "電視節目", "OptionList": "清單", - "TabMusicVideos": "MV", "Yesterday": "昨天", "Yes": "是", "ButtonAddImage": "新增圖片", @@ -972,7 +942,6 @@ "TabStreaming": "串流", "TagsValue": "標記:{0}", "Thumb": "縮圖", - "TabResumeSettings": "繼續播放", "ValueAlbumCount": "{0} 張專輯", "ValueContainer": "影片容器:{0}", "ValueEpisodeCount": "{0} 集", @@ -993,7 +962,6 @@ "OptionProtocolHttp": "HTTP", "TabNfoSettings": "NFO 設定", "FetchingData": "獲取額外資料", - "LabelTranscodingVideoCodec": "影片編碼:", "MediaInfoBitDepth": "位元深度", "Mute": "靜音", "MessageConfirmShutdown": "你確定要關閉伺服器嗎?", @@ -1018,7 +986,6 @@ "LabelProfileContainer": "影片容器:", "LabelDropShadow": "陰影:", "LabelTVHomeScreen": "電視模式主畫面:", - "LabelTranscodingContainer": "影片容器:", "MovieLibraryHelp": "查看 {0}Jellyfin 電影命名指南{1}。", "None": "無", "OptionAllowMediaPlaybackTranscodingHelp": "限制轉檔可能會導致播放不支援的格式時失敗。", @@ -1305,7 +1272,6 @@ "LabelPostProcessorArguments": "處理器後命令行參數:", "LabelPostProcessorArgumentsHelp": "使用 {path} 作為錄製檔案的路徑。", "LabelPreferredDisplayLanguage": "首選語言:", - "LabelPreferredDisplayLanguageHelp": "歡迎一起翻譯 Jellyfin!", "LabelPreferredSubtitleLanguage": "字幕語言偏好:", "LabelProtocol": "協議:", "LabelProtocolInfo": "協議資訊:", diff --git a/yarn.lock b/yarn.lock index b507238470..5e93eef199 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,16 +18,16 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.1.tgz#2c55b604e73a40dc21b0e52650b11c65cf276643" - integrity sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ== +"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.4.tgz#4301dfdfafa01eeb97f1896c5501a3f0655d4229" + integrity sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" + "@babel/generator" "^7.11.4" "@babel/helper-module-transforms" "^7.11.0" "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.1" + "@babel/parser" "^7.11.4" "@babel/template" "^7.10.4" "@babel/traverse" "^7.11.0" "@babel/types" "^7.11.0" @@ -40,10 +40,10 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/eslint-parser@^7.11.3": - version "7.11.3" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.11.3.tgz#ceb94cb6e2457c4a4d2d87db29925e6b48d20786" - integrity sha512-OdCt/CVXdR/eTNTYDEobf4e55m/AAc04ki+/Oe2/GE8ivh2FxX4yDab48lA6t7ysP4M7luap6Fxx3hUVNTwzFQ== +"@babel/eslint-parser@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.11.4.tgz#f79bac69088097a8418f5c67fc462c89a72c2f48" + integrity sha512-syIzsqEUvmc6WEYbLqrvBODCM1wMo3SQ4h4G9gtCcQctv1VUlA5davRAWHFm7ncQlxcJs4I7kaflsnAP8iA8Aw== dependencies: eslint-scope "5.1.0" eslint-visitor-keys "^1.3.0" @@ -56,10 +56,10 @@ dependencies: eslint-rule-composer "^0.3.0" -"@babel/generator@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" - integrity sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ== +"@babel/generator@^7.11.0", "@babel/generator@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.4.tgz#1ec7eec00defba5d6f83e50e3ee72ae2fee482be" + integrity sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g== dependencies: "@babel/types" "^7.11.0" jsesc "^2.5.1" @@ -281,10 +281,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.1": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.1.tgz#d91a387990b21e5d20047b336bb19b0553f02ff5" - integrity sha512-u9QMIRdKVF7hfEkb3nu2LgZDIzCQPv+yHD9Eg6ruoJLjkrQ9fFz4IBSlF/9XwoNri9+2F1IY+dYuOfZrXq8t3w== +"@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.4": + version "7.11.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" + integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.4" @@ -2751,6 +2751,11 @@ config-chain@^1.1.11: ini "^1.3.4" proto-list "~1.2.1" +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + connect-history-api-fallback@^1: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -3010,16 +3015,15 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.2.1.tgz#9f48fd7eae1219d629a3f085ba9a9102ca1141a7" - integrity sha512-MoqmF1if7Z0pZIEXA4ZF9PgtCXxWbfzfJM+3p+OYfhcrwcqhaCRb74DSnfzRl7e024xEiCRn5hCvfUbTf2sgFA== +css-loader@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.2.2.tgz#b668b3488d566dc22ebcf9425c5f254a05808c89" + integrity sha512-omVGsTkZPVwVRpckeUnLshPp12KsmMSLqYxs12+RzM9jRR5Y+Idn/tBffjXRvOE+qW7if24cuceFJqYR5FmGBg== dependencies: camelcase "^6.0.0" cssesc "^3.0.0" icss-utils "^4.1.1" loader-utils "^2.0.0" - normalize-path "^3.0.0" postcss "^7.0.32" postcss-modules-extract-imports "^2.0.0" postcss-modules-local-by-default "^3.0.3" @@ -5252,10 +5256,10 @@ gulp-sourcemaps@^2.6.5: strip-bom-string "1.X" through2 "2.X" -gulp-terser@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/gulp-terser/-/gulp-terser-1.3.2.tgz#c91a71c31de0c40a94330bfd43b20c2a40df9a6b" - integrity sha512-hLx9Ww9PX304R3E7pMyL+jFftH47QXQCgKE6IZajbz7OoqAPMdr+sTxBpaujgIVkdbnJwJ7AFhfrcyy/cjBgZQ== +gulp-terser@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/gulp-terser/-/gulp-terser-1.4.0.tgz#0ac4dfdbed4ab46906007c5b358810c1642b9764" + integrity sha512-7df9leJna3WOmj76tYHxjpn7BSU+vmKVjVSd6bz3uLEyrzCfZI97KPhRcIabrSNzs0UY/UXTt+JwkxPw3sF85w== dependencies: is-promise "^4.0.0" plugin-error "^1.0.1" @@ -5455,10 +5459,10 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -hls.js@^0.14.8: - version "0.14.8" - resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.8.tgz#c2c6ca7005524c81eece316c2a4a199258bd0590" - integrity sha512-4fh8k/sl1SmYXsT4Om8AY5fKa5tUUtAxup2sffrSMh5MNk4Kt4FOZxbjqTGL5VwkroY1oJ9twSciNQNFbPA/WQ== +hls.js@^0.14.9: + version "0.14.9" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.9.tgz#e85be87d94385ed9947155716578f7c568957d15" + integrity sha512-5j1ONTvIzcIxCtg2eafikFbZ3b/9fDhR6u871LmK7jZ44/Qdc2G4xaSBCwcVK61gz7kTyiobaAhB++2M4J58rQ== dependencies: eventemitter3 "^4.0.3" url-toolkit "^2.1.6"