From a8ab76a6512a71450800904857efe7670074eb5c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Mon, 4 Apr 2022 16:24:48 -0400 Subject: [PATCH 001/107] Update home video library translation --- src/controllers/dashboard/library.js | 2 +- src/strings/en-us.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/controllers/dashboard/library.js b/src/controllers/dashboard/library.js index 38202ccb62..339d19266b 100644 --- a/src/controllers/dashboard/library.js +++ b/src/controllers/dashboard/library.js @@ -237,7 +237,7 @@ import cardBuilder from '../../components/cardbuilder/cardBuilder'; value: 'books', message: getLink('BookLibraryHelp', 'https://docs.jellyfin.org/general/server/media/books.html') }, { - name: globalize.translate('Photos'), + name: globalize.translate('HomeVideosPhotos'), value: 'homevideos' }, { name: globalize.translate('MusicVideos'), diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 2e3377dbed..c9dcc05185 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -502,6 +502,7 @@ "Hide": "Hide", "HideWatchedContentFromLatestMedia": "Hide watched content from 'Latest Media'", "Home": "Home", + "HomeVideosPhotos": "Home Videos and Photos", "Horizontal": "Horizontal", "HttpsRequiresCert": "To enable secure connections, you will need to supply a trusted SSL certificate, such as Let's Encrypt. Please either supply a certificate, or disable secure connections.", "Identify": "Identify", From f4ed457dba15039cc4a31e1a1f260b52902e506d Mon Sep 17 00:00:00 2001 From: JodliDev Date: Thu, 14 Apr 2022 11:59:46 +0200 Subject: [PATCH 002/107] Update nowPlayingBar.scss Make clear that nowplayingBar is actually clickable --- src/components/nowPlayingBar/nowPlayingBar.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/nowPlayingBar/nowPlayingBar.scss b/src/components/nowPlayingBar/nowPlayingBar.scss index a884f65769..6ff094ae0d 100644 --- a/src/components/nowPlayingBar/nowPlayingBar.scss +++ b/src/components/nowPlayingBar/nowPlayingBar.scss @@ -58,6 +58,7 @@ font-size: 92%; margin-right: 1em; margin-left: 0.5em; + cursor: pointer; } .nowPlayingBarCenter { From 8420d31696d7690ef1e9ee497a8b5ed50999c60a Mon Sep 17 00:00:00 2001 From: JodliDev Date: Tue, 19 Apr 2022 15:17:03 +0200 Subject: [PATCH 003/107] Move `cursor: pointer;` to .nowPlayingBar --- src/components/nowPlayingBar/nowPlayingBar.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/nowPlayingBar/nowPlayingBar.scss b/src/components/nowPlayingBar/nowPlayingBar.scss index 6ff094ae0d..b90ff2008d 100644 --- a/src/components/nowPlayingBar/nowPlayingBar.scss +++ b/src/components/nowPlayingBar/nowPlayingBar.scss @@ -13,6 +13,7 @@ will-change: transform; contain: layout style; transition: transform 200ms ease-out; + cursor: pointer; } .nowPlayingBar-hidden { @@ -58,7 +59,6 @@ font-size: 92%; margin-right: 1em; margin-left: 0.5em; - cursor: pointer; } .nowPlayingBarCenter { From 5633618ac2d550b74035a52122408046bc380765 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 20 Apr 2022 17:09:31 -0400 Subject: [PATCH 004/107] Remove Dashboard.navigate usage in app router --- src/components/appRouter.js | 92 ++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 47 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index f0f23096b3..0354d17417 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -8,7 +8,6 @@ import globalize from '../scripts/globalize'; import itemHelper from './itemHelper'; import loading from './loading/loading'; import viewManager from './viewManager/viewManager'; -import Dashboard from '../utils/dashboard'; import ServerConnections from './ServerConnections'; import alert from './alert'; import reactControllerFactory from './reactControllerFactory'; @@ -52,26 +51,6 @@ class AppRouter { }); } - showLocalLogin(serverId) { - Dashboard.navigate('login.html?serverid=' + serverId); - } - - showVideoOsd() { - return Dashboard.navigate('video'); - } - - showSelectServer() { - Dashboard.navigate('selectserver.html'); - } - - showSettings() { - Dashboard.navigate('mypreferencesmenu.html'); - } - - showNowPlaying() { - this.show('queue'); - } - beginConnectionWizard() { clearBackdrop(); loading.show(); @@ -497,7 +476,7 @@ class AppRouter { }).then(data => { if (data !== null && data.StartupWizardCompleted === false) { ServerConnections.setLocalApiClient(firstResult.ApiClient); - Dashboard.navigate('wizardstart.html'); + this.show('wizardstart.html'); } else { this.handleConnectionResult(firstResult); } @@ -617,30 +596,6 @@ class AppRouter { }; } - showGuide() { - Dashboard.navigate('livetv.html?tab=1'); - } - - goHome() { - Dashboard.navigate('home.html'); - } - - showSearch() { - Dashboard.navigate('search.html'); - } - - showLiveTV() { - Dashboard.navigate('livetv.html'); - } - - showRecordedTV() { - Dashboard.navigate('livetv.html?tab=3'); - } - - showFavorites() { - Dashboard.navigate('home.html?tab=1'); - } - getRouteUrl(item, options) { if (!item) { throw new Error('item cannot be null'); @@ -835,10 +790,53 @@ class AppRouter { return '#!/details?id=' + id + '&serverId=' + serverId; } + + showLocalLogin(serverId) { + return this.show('login.html?serverid=' + serverId); + } + + showVideoOsd() { + return this.show('video'); + } + + showSelectServer() { + return this.show('selectserver.html'); + } + + showSettings() { + return this.show('mypreferencesmenu.html'); + } + + showNowPlaying() { + return this.show('queue'); + } + + showGuide() { + return this.show('livetv.html?tab=1'); + } + + goHome() { + return this.show('home.html'); + } + + showSearch() { + return this.show('search.html'); + } + + showLiveTV() { + return this.show('livetv.html'); + } + + showRecordedTV() { + return this.show('livetv.html?tab=3'); + } + + showFavorites() { + return this.show('home.html?tab=1'); + } } export const appRouter = new AppRouter(); window.Emby = window.Emby || {}; - window.Emby.Page = appRouter; From 240d3972eca9ec683dbbdf95a8403c1511d5eb07 Mon Sep 17 00:00:00 2001 From: knackebrot Date: Thu, 21 Apr 2022 00:34:38 +0200 Subject: [PATCH 005/107] Chrome and Firefox support MPEG-1 Layer II --- src/scripts/browserDeviceProfile.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index d112da7cf1..2d9c2c75e7 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -370,8 +370,15 @@ import browser from './browser'; || videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp4a.6B"').replace(/no/, '') || videoTestElement.canPlayType('video/mp4; codecs="avc1.640029, mp3"').replace(/no/, ''); - // Not sure how to test for this - const supportsMp2VideoAudio = browser.edgeUwp || browser.tizen || browser.web0s; + let supportsMp2VideoAudio = options.supportsMp2VideoAudio; + if (supportsMp2VideoAudio == null) { + supportsMp2VideoAudio = browser.edgeUwp || browser.tizen || browser.web0s; + + // If the browser supports MP3, it presumably supports MP2 as well + if (supportsMp3VideoAudio && (browser.chrome || browser.edgeChromium || (browser.firefox && browser.versionMajor >= 83))) { + supportsMp2VideoAudio = true; + } + } /* eslint-disable compat/compat */ let maxVideoWidth = browser.xboxOne ? @@ -428,6 +435,8 @@ import browser from './browser'; if (supportsMp2VideoAudio) { videoAudioCodecs.push('mp2'); + hlsInTsVideoAudioCodecs.push('mp2'); + hlsInFmp4VideoAudioCodecs.push('mp2'); } let supportsDts = options.supportsDts; From 74a91022074c34c8c81826caeae5c0751d96d318 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 21 Apr 2022 15:41:13 +0000 Subject: [PATCH 006/107] Update actions/checkout action to v3.0.2 --- .github/workflows/commands.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/commands.yml b/.github/workflows/commands.yml index fcf1a8499b..358a5149e8 100644 --- a/.github/workflows/commands.yml +++ b/.github/workflows/commands.yml @@ -18,7 +18,7 @@ jobs: comment-id: ${{ github.event.comment.id }} reactions: '+1' - name: Checkout the latest code - uses: actions/checkout@v3.0.1 + uses: actions/checkout@v3.0.2 with: token: ${{ secrets.JF_BOT_TOKEN }} fetch-depth: 0 From 5438d3b32c228a262932ecf21e088860dc636269 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 20 Apr 2022 17:40:36 -0400 Subject: [PATCH 007/107] Limit public methods in app router --- src/components/appRouter.js | 150 ++++++++++++++++++------------------ 1 file changed, 74 insertions(+), 76 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 0354d17417..cce0f79100 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -14,10 +14,40 @@ import reactControllerFactory from './reactControllerFactory'; const history = createHashHistory(); +const normalizeImageOptions = options => { + let setQuality; + if (options.maxWidth || options.width || options.maxHeight || options.height || options.fillWidth || options.fillHeight) { + setQuality = true; + } + + if (setQuality && !options.quality) { + options.quality = 90; + } +}; + +const getMaxBandwidth = () => { + /* eslint-disable compat/compat */ + if (navigator.connection) { + let max = navigator.connection.downlinkMax; + if (max && max > 0 && max < Number.POSITIVE_INFINITY) { + max /= 8; + max *= 1000000; + max *= 0.7; + return parseInt(max, 10); + } + } + /* eslint-enable compat/compat */ + + return null; +}; + +/** + * Page types of "no return" (when "Go back" should behave differently, probably quitting the application). + */ +const START_PAGE_TYPES = ['home', 'login', 'selectserver']; + class AppRouter { allRoutes = new Map(); - backdropContainer; - backgroundContainer; currentRouteInfo; currentViewLoadRequest; firstConnectionResult; @@ -26,17 +56,13 @@ class AppRouter { msgTimeout; promiseShow; resolveOnNextShow; - previousRoute = {}; - /** - * Pages of "no return" (when "Go back" should behave differently, probably quitting the application). - */ - startPages = ['home', 'login', 'selectserver']; + previousRoute; constructor() { document.addEventListener('viewshow', () => this.onViewShow()); // TODO: Can this baseRoute logic be simplified? - this.baseRoute = window.location.href.split('?')[0].replace(this.getRequestFile(), ''); + 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('://')) { @@ -51,13 +77,13 @@ class AppRouter { }); } - beginConnectionWizard() { + #beginConnectionWizard() { clearBackdrop(); loading.show(); ServerConnections.connect({ enableAutoLogin: appSettings.enableAutoLogin() }).then((result) => { - this.handleConnectionResult(result); + this.#handleConnectionResult(result); }); } @@ -107,6 +133,7 @@ class AppRouter { return this.promiseShow; } + // TODO: Unused? async showDirect(path) { if (this.promiseShow) await this.promiseShow; @@ -142,9 +169,9 @@ class AppRouter { start() { loading.show(); - this.initApiClients(); + this.#initApiClients(); - Events.on(appHost, 'resume', this.onAppResume); + Events.on(appHost, 'resume', this.#onAppResume); ServerConnections.connect({ enableAutoLogin: appSettings.enableAutoLogin() @@ -168,22 +195,19 @@ class AppRouter { } canGoBack() { - const curr = this.current(); + const curr = this.currentRouteInfo?.route; if (!curr) { return false; } - if (!document.querySelector('.dialogContainer') && this.startPages.indexOf(curr.type) !== -1) { + if (!document.querySelector('.dialogContainer') && START_PAGE_TYPES.includes(curr.type)) { return false; } return window.history.length > 1; } - current() { - return this.currentRouteInfo ? this.currentRouteInfo.route : null; - } - + // TODO: Unused? invokeShortcut(id) { if (id.indexOf('library-') === 0) { id = id.replace('library-', ''); @@ -231,7 +255,7 @@ class AppRouter { setBackdropTransparency(level); } - handleConnectionResult(result) { + #handleConnectionResult(result) { switch (result.State) { case 'SignedIn': loading.hide(); @@ -262,7 +286,7 @@ class AppRouter { } } - loadContentUrl(ctx, next, route, request) { + #loadContentUrl(ctx, next, route, request) { let url; if (route.contentPath && typeof (route.contentPath) === 'function') { url = route.contentPath(ctx.querystring); @@ -284,19 +308,19 @@ class AppRouter { } promise.then((html) => { - this.loadContent(ctx, route, html, request); + this.#loadContent(ctx, route, html, request); }); } - handleRoute(ctx, next, route) { - this.authenticate(ctx, route, () => { - this.initRoute(ctx, next, route); + #handleRoute(ctx, next, route) { + this.#authenticate(ctx, route, () => { + this.#initRoute(ctx, next, route); }); } - initRoute(ctx, next, route) { + #initRoute(ctx, next, route) { const onInitComplete = (controllerFactory) => { - this.sendRouteToViewManager(ctx, next, route, controllerFactory); + this.#sendRouteToViewManager(ctx, next, route, controllerFactory); }; if (route.pageComponent) { @@ -308,20 +332,21 @@ class AppRouter { } } - cancelCurrentLoadRequest() { + #cancelCurrentLoadRequest() { const currentRequest = this.currentViewLoadRequest; if (currentRequest) { currentRequest.cancel = true; } } - sendRouteToViewManager(ctx, next, route, controllerFactory) { + #sendRouteToViewManager(ctx, next, route, controllerFactory) { + // TODO: isDummyBackToHome is never true? if (this.isDummyBackToHome && route.type === 'home') { this.isDummyBackToHome = false; return; } - this.cancelCurrentLoadRequest(); + this.#cancelCurrentLoadRequest(); const isBackNav = ctx.isBack; const currentRequest = { @@ -343,7 +368,7 @@ class AppRouter { const onNewViewNeeded = () => { if (typeof route.path === 'string') { - this.loadContentUrl(ctx, next, route, currentRequest); + this.#loadContentUrl(ctx, next, route, currentRequest); } else { next(); } @@ -408,54 +433,27 @@ class AppRouter { } } - normalizeImageOptions(options) { - let setQuality; - if (options.maxWidth || options.width || options.maxHeight || options.height || options.fillWidth || options.fillHeight) { - setQuality = true; - } - - if (setQuality && !options.quality) { - options.quality = 90; - } - } - - getMaxBandwidth() { - /* eslint-disable compat/compat */ - if (navigator.connection) { - let max = navigator.connection.downlinkMax; - if (max && max > 0 && max < Number.POSITIVE_INFINITY) { - max /= 8; - max *= 1000000; - max *= 0.7; - return parseInt(max, 10); - } - } - /* eslint-enable compat/compat */ - - return null; - } - onApiClientCreated(e, newApiClient) { - newApiClient.normalizeImageOptions = this.normalizeImageOptions; - newApiClient.getMaxBandwidth = this.getMaxBandwidth; + newApiClient.normalizeImageOptions = normalizeImageOptions; + newApiClient.getMaxBandwidth = getMaxBandwidth; Events.off(newApiClient, 'requestfail', this.onRequestFail); Events.on(newApiClient, 'requestfail', this.onRequestFail); } - initApiClient(apiClient, instance) { + #initApiClient(apiClient, instance) { instance.onApiClientCreated({}, apiClient); } - initApiClients() { + #initApiClients() { ServerConnections.getApiClients().forEach((apiClient) => { - this.initApiClient(apiClient, this); + this.#initApiClient(apiClient, this); }); Events.on(ServerConnections, 'apiclientcreated', this.onApiClientCreated); } - onAppResume() { + #onAppResume() { const apiClient = ServerConnections.currentApiClient(); if (apiClient) { @@ -463,7 +461,7 @@ class AppRouter { } } - authenticate(ctx, route, callback) { + #authenticate(ctx, route, callback) { const firstResult = this.firstConnectionResult; this.firstConnectionResult = null; @@ -478,7 +476,7 @@ class AppRouter { ServerConnections.setLocalApiClient(firstResult.ApiClient); this.show('wizardstart.html'); } else { - this.handleConnectionResult(firstResult); + this.#handleConnectionResult(firstResult); } }).catch(error => { console.error(error); @@ -486,7 +484,7 @@ class AppRouter { return; } else if (firstResult.State !== 'SignedIn') { - this.handleConnectionResult(firstResult); + this.#handleConnectionResult(firstResult); return; } } @@ -500,7 +498,7 @@ class AppRouter { if (!shouldExitApp && (!apiClient || !apiClient.isLoggedIn()) && !route.anonymous) { console.debug('[appRouter] route does not allow anonymous access: redirecting to login'); - this.beginConnectionWizard(); + this.#beginConnectionWizard(); return; } @@ -520,9 +518,9 @@ class AppRouter { this.goHome(); return; } else if (route.roles) { - this.validateRoles(apiClient, route.roles).then(() => { + this.#validateRoles(apiClient, route.roles).then(() => { callback(); - }, this.beginConnectionWizard); + }, this.#beginConnectionWizard); return; } } @@ -531,13 +529,13 @@ class AppRouter { callback(); } - validateRoles(apiClient, roles) { + #validateRoles(apiClient, roles) { return Promise.all(roles.split(',').map((role) => { - return this.validateRole(apiClient, role); + return this.#validateRole(apiClient, role); })); } - validateRole(apiClient, role) { + #validateRole(apiClient, role) { if (role === 'admin') { return apiClient.getCurrentUser().then((user) => { if (user.Policy.IsAdministrator) { @@ -551,7 +549,7 @@ class AppRouter { return Promise.resolve(); } - loadContent(ctx, route, html, request) { + #loadContent(ctx, route, html, request) { html = globalize.translateHtml(html, route.dictionary); request.view = html; @@ -565,7 +563,7 @@ class AppRouter { ctx.handled = true; } - getRequestFile() { + #getRequestFile() { let path = window.location.pathname || ''; const index = path.lastIndexOf('/'); @@ -584,7 +582,7 @@ class AppRouter { #getHandler(route) { return (ctx, next) => { - const ignore = route.dummyRoute === true || this.previousRoute.dummyRoute === true; + const ignore = route.dummyRoute === true || this.previousRoute?.dummyRoute === true; this.previousRoute = route; if (ignore) { // Resolve 'show' promise @@ -592,7 +590,7 @@ class AppRouter { return; } - this.handleRoute(ctx, next, route); + this.#handleRoute(ctx, next, route); }; } From e0486e49c6fc940d5478ea3fea017df881dd03b9 Mon Sep 17 00:00:00 2001 From: Tobias Speicher Date: Thu, 21 Apr 2022 18:42:42 +0200 Subject: [PATCH 008/107] Replace deprecated String.prototype.substr() .substr() is deprecated so we replace it with .slice() which works similarily but isn't deprecated Signed-off-by: Tobias Speicher --- src/components/cardbuilder/cardBuilder.js | 4 ++-- src/plugins/bookPlayer/tableOfContents.js | 2 +- src/plugins/pdfPlayer/plugin.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index c9c7b8ac04..be0df0e512 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -657,12 +657,12 @@ import { appRouter } from '../appRouter'; if (str) { const charIndex = Math.floor(str.length / 2); - const character = String(str.substr(charIndex, 1).charCodeAt()); + const character = String(str.slice(charIndex, charIndex + 1).charCodeAt()); let sum = 0; for (let i = 0; i < character.length; i++) { sum += parseInt(character.charAt(i)); } - const index = String(sum).substr(-1); + const index = String(sum).slice(-1); return (index % numRandomColors) + 1; } else { diff --git a/src/plugins/bookPlayer/tableOfContents.js b/src/plugins/bookPlayer/tableOfContents.js index 7736891e02..efbb533b22 100644 --- a/src/plugins/bookPlayer/tableOfContents.js +++ b/src/plugins/bookPlayer/tableOfContents.js @@ -70,7 +70,7 @@ export default class TableOfContents { tocHtml += '
  • '; // remove parent directory reference from href to fix certain books - const link = chapter.href.startsWith('../') ? chapter.href.substr(3) : chapter.href; + const link = chapter.href.startsWith('../') ? chapter.href.slice(3) : chapter.href; tocHtml += `${chapter.label}`; tocHtml += '
  • '; }); diff --git a/src/plugins/pdfPlayer/plugin.js b/src/plugins/pdfPlayer/plugin.js index 7532b5f062..35afc52a0a 100644 --- a/src/plugins/pdfPlayer/plugin.js +++ b/src/plugins/pdfPlayer/plugin.js @@ -263,7 +263,7 @@ export class PdfPlayer { for (const page of pages) { if (!this.pages[page]) { this.pages[page] = document.createElement('canvas'); - this.renderPage(this.pages[page], parseInt(page.substr(4))); + this.renderPage(this.pages[page], parseInt(page.slice(4))); } } From a59722126ff9fe75a205baacc0ed5595a527aa19 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 21 Apr 2022 13:43:12 -0400 Subject: [PATCH 009/107] Remove api client setup from app router --- src/components/ServerConnections.js | 38 +++++++++++++- src/components/appRouter.js | 81 +++++------------------------ src/scripts/site.js | 4 ++ 3 files changed, 54 insertions(+), 69 deletions(-) diff --git a/src/components/ServerConnections.js b/src/components/ServerConnections.js index 7e42432b56..e313f4cfde 100644 --- a/src/components/ServerConnections.js +++ b/src/components/ServerConnections.js @@ -1,20 +1,49 @@ import { ConnectionManager, Credentials, ApiClient, Events } from 'jellyfin-apiclient'; + import { appHost } from './apphost'; import Dashboard from '../utils/dashboard'; import { setUserInfo } from '../scripts/settings/userSettings'; +import appSettings from '../scripts/settings/appSettings'; + +const normalizeImageOptions = options => { + if (!options.quality && (options.maxWidth || options.width || options.maxHeight || options.height || options.fillWidth || options.fillHeight)) { + options.quality = 90; + } +}; + +const getMaxBandwidth = () => { + /* eslint-disable compat/compat */ + if (navigator.connection) { + let max = navigator.connection.downlinkMax; + if (max && max > 0 && max < Number.POSITIVE_INFINITY) { + max /= 8; + max *= 1000000; + max *= 0.7; + return parseInt(max, 10); + } + } + /* eslint-enable compat/compat */ + + return null; +}; class ServerConnections extends ConnectionManager { constructor() { super(...arguments); this.localApiClient = null; - Events.on(this, 'localusersignedout', function (eventName, logoutInfo) { + Events.on(this, 'localusersignedout', (_e, logoutInfo) => { setUserInfo(null, null); if (window.NativeShell && typeof window.NativeShell.onLocalUserSignedOut === 'function') { window.NativeShell.onLocalUserSignedOut(logoutInfo); } }); + + Events.on(this, 'apiclientcreated', (_e, apiClient) => { + apiClient.getMaxBandwidth = getMaxBandwidth; + apiClient.normalizeImageOptions = normalizeImageOptions; + }); } initApiClient(server) { @@ -38,6 +67,13 @@ class ServerConnections extends ConnectionManager { console.debug('loaded ApiClient singleton'); } + connect(options) { + return super.connect({ + enableAutoLogin: appSettings.enableAutoLogin(), + options + }); + } + setLocalApiClient(apiClient) { if (apiClient) { this.localApiClient = apiClient; diff --git a/src/components/appRouter.js b/src/components/appRouter.js index cce0f79100..1f84d0bb2d 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -2,7 +2,6 @@ import { Events } from 'jellyfin-apiclient'; import { Action, createHashHistory } from 'history'; import { appHost } from './apphost'; -import appSettings from '../scripts/settings/appSettings'; import { clearBackdrop, setBackdropTransparency } from './backdrop/backdrop'; import globalize from '../scripts/globalize'; import itemHelper from './itemHelper'; @@ -14,33 +13,6 @@ import reactControllerFactory from './reactControllerFactory'; const history = createHashHistory(); -const normalizeImageOptions = options => { - let setQuality; - if (options.maxWidth || options.width || options.maxHeight || options.height || options.fillWidth || options.fillHeight) { - setQuality = true; - } - - if (setQuality && !options.quality) { - options.quality = 90; - } -}; - -const getMaxBandwidth = () => { - /* eslint-disable compat/compat */ - if (navigator.connection) { - let max = navigator.connection.downlinkMax; - if (max && max > 0 && max < Number.POSITIVE_INFINITY) { - max /= 8; - max *= 1000000; - max *= 0.7; - return parseInt(max, 10); - } - } - /* eslint-enable compat/compat */ - - return null; -}; - /** * Page types of "no return" (when "Go back" should behave differently, probably quitting the application). */ @@ -80,9 +52,7 @@ class AppRouter { #beginConnectionWizard() { clearBackdrop(); loading.show(); - ServerConnections.connect({ - enableAutoLogin: appSettings.enableAutoLogin() - }).then((result) => { + ServerConnections.connect().then(result => { this.#handleConnectionResult(result); }); } @@ -169,13 +139,18 @@ class AppRouter { start() { loading.show(); - this.#initApiClients(); - Events.on(appHost, 'resume', this.#onAppResume); + ServerConnections.getApiClients().forEach(apiClient => { + Events.off(apiClient, 'requestfail', this.onRequestFail); + Events.on(apiClient, 'requestfail', this.onRequestFail); + }); - ServerConnections.connect({ - enableAutoLogin: appSettings.enableAutoLogin() - }).then((result) => { + Events.on(ServerConnections, 'apiclientcreated', (_e, apiClient) => { + Events.off(apiClient, 'requestfail', this.onRequestFail); + Events.on(apiClient, 'requestfail', this.onRequestFail); + }); + + ServerConnections.connect().then(result => { this.firstConnectionResult = result; // Handle the initial route @@ -239,9 +214,7 @@ class AppRouter { } const url = this.getRouteUrl(item, options); - this.show(url, { - item: item - }); + this.show(url, { item }); } } @@ -417,7 +390,7 @@ class AppRouter { this.msgTimeout = setTimeout(this.onForcedLogoutMessageTimeout, 100); } - onRequestFail(e, data) { + onRequestFail(_e, data) { const apiClient = this; if (data.status === 403) { @@ -433,34 +406,6 @@ class AppRouter { } } - onApiClientCreated(e, newApiClient) { - newApiClient.normalizeImageOptions = normalizeImageOptions; - newApiClient.getMaxBandwidth = getMaxBandwidth; - - Events.off(newApiClient, 'requestfail', this.onRequestFail); - Events.on(newApiClient, 'requestfail', this.onRequestFail); - } - - #initApiClient(apiClient, instance) { - instance.onApiClientCreated({}, apiClient); - } - - #initApiClients() { - ServerConnections.getApiClients().forEach((apiClient) => { - this.#initApiClient(apiClient, this); - }); - - Events.on(ServerConnections, 'apiclientcreated', this.onApiClientCreated); - } - - #onAppResume() { - const apiClient = ServerConnections.currentApiClient(); - - if (apiClient) { - apiClient.ensureWebSocket(); - } - } - #authenticate(ctx, route, callback) { const firstResult = this.firstConnectionResult; diff --git a/src/scripts/site.js b/src/scripts/site.js index 6ec0e7709d..6a9b104afd 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -163,6 +163,10 @@ async function onAppReady() { import('../assets/css/ios.scss'); } + Events.on(appHost, 'resume', () => { + ServerConnections.currentApiClient()?.ensureWebSocket(); + }); + appRouter.start(); if (!browser.tv && !browser.xboxOne && !browser.ps4) { From c9613718350e1b490e0518cebedbb9c946dcd8e7 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 21 Apr 2022 13:47:12 -0400 Subject: [PATCH 010/107] Remove unused methods in app router --- src/components/appRouter.js | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 1f84d0bb2d..4b915eb1d7 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -103,19 +103,6 @@ class AppRouter { return this.promiseShow; } - // TODO: Unused? - async showDirect(path) { - if (this.promiseShow) await this.promiseShow; - - this.promiseShow = new Promise((resolve) => { - this.resolveOnNextShow = resolve; - // Schedule a call to return the promise - setTimeout(() => history.push(this.baseUrl() + path), 0); - }); - - return this.promiseShow; - } - #goToRoute({ location, action }) { // Strip the leading "!" if present const normalizedPath = location.pathname.replace(/^!/, ''); @@ -182,25 +169,6 @@ class AppRouter { return window.history.length > 1; } - // TODO: Unused? - 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') { From 4d4725f05d940c9027b1f8ac61e599557ca27b44 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 21 Apr 2022 13:57:01 -0400 Subject: [PATCH 011/107] Fix code smells --- src/components/appRouter.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 4b915eb1d7..1ed134c90f 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -24,7 +24,6 @@ class AppRouter { currentViewLoadRequest; firstConnectionResult; forcedLogoutMsg; - isDummyBackToHome; msgTimeout; promiseShow; resolveOnNextShow; @@ -227,7 +226,7 @@ class AppRouter { } } - #loadContentUrl(ctx, next, route, request) { + #loadContentUrl(ctx, _next, route, request) { let url; if (route.contentPath && typeof (route.contentPath) === 'function') { url = route.contentPath(ctx.querystring); @@ -281,12 +280,6 @@ class AppRouter { } #sendRouteToViewManager(ctx, next, route, controllerFactory) { - // TODO: isDummyBackToHome is never true? - if (this.isDummyBackToHome && route.type === 'home') { - this.isDummyBackToHome = false; - return; - } - this.#cancelCurrentLoadRequest(); const isBackNav = ctx.isBack; From dbfc1e27b48cebb323b1248012d36fa891afae2e Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 21 Apr 2022 13:58:39 -0400 Subject: [PATCH 012/107] Fix missing spread operator --- src/components/ServerConnections.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ServerConnections.js b/src/components/ServerConnections.js index e313f4cfde..a15b384f7d 100644 --- a/src/components/ServerConnections.js +++ b/src/components/ServerConnections.js @@ -70,7 +70,7 @@ class ServerConnections extends ConnectionManager { connect(options) { return super.connect({ enableAutoLogin: appSettings.enableAutoLogin(), - options + ...options }); } From d5a2f4f7636613e0e3d24cce61fb575e3a98bf84 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 21 Apr 2022 17:37:55 -0400 Subject: [PATCH 013/107] Fix card selector for tv layout --- src/controllers/itemDetails/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index e64f305e97..4dd27b7695 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -791,7 +791,7 @@ function renderDetailImage(elem, item, imageLoader) { imageLoader.lazyChildren(elem); // Avoid breaking the design by preventing focus of the poster using the keyboard. - elem.querySelector('a').tabIndex = -1; + elem.querySelector('a, button').tabIndex = -1; } function renderImage(page, item) { From f05d2034db9dbb14d3d0333b9269e7028b6417da Mon Sep 17 00:00:00 2001 From: millallo Date: Fri, 22 Apr 2022 05:31:15 +0000 Subject: [PATCH 014/107] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index 93d28a3031..c3e8e3abd1 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1639,5 +1639,6 @@ "ButtonSpace": "Spazio", "ButtonClose": "Chiudi", "Production": "Produzione", - "MessageUnauthorizedUser": "Non sei autorizzato ad accedere al server in questo momento. Contatta l'amministratore del server per ulteriori dettagli." + "MessageUnauthorizedUser": "Non sei autorizzato ad accedere al server in questo momento. Contatta l'amministratore del server per ulteriori dettagli.", + "EnableEnhancedNvdecDecoderHelp": "Implementazione sperimentale NVDEC, da abilitare solo se esistono errori di decodifica." } From f89c6c652d9fb0ec8ccc85cf38b7a57f82c287e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Fri, 22 Apr 2022 14:15:24 +0000 Subject: [PATCH 015/107] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index aef793c21f..8beafd28bb 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1649,5 +1649,6 @@ "OriginalAirDate": "Původní datum vysílání", "Digital": "Digitální", "MessageUnauthorizedUser": "Momentálně nemáte oprávnění k přístupu na server. Pro více informací kontaktujte Vašeho správce serveru.", - "EnableEnhancedNvdecDecoderHelp": "Experimentální implementace NVDEC. Používejte jen v případě, že dochází při dekódování k chybám." + "EnableEnhancedNvdecDecoderHelp": "Experimentální implementace NVDEC. Používejte jen v případě, že dochází při dekódování k chybám.", + "HomeVideosPhotos": "Domácí videa a fotky" } From 28cb2862a2940e9a6cdc894b110a8e901ad34b59 Mon Sep 17 00:00:00 2001 From: Irving Reyes Date: Fri, 22 Apr 2022 16:06:28 +0000 Subject: [PATCH 016/107] Translated using Weblate (Spanish (Dominican Republic)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_DO/ --- src/strings/es_DO.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json index cf6f0c5256..a87ae83535 100644 --- a/src/strings/es_DO.json +++ b/src/strings/es_DO.json @@ -18,5 +18,6 @@ "AirDate": "Fecha de Emisión", "AddedOnValue": "Añadido {0}", "AddToPlayQueue": "Añadir a la lista de reproducción", - "AddToCollection": "Añadir a la Colección" + "AddToCollection": "Añadir a la Colección", + "Default": "Predeterminado" } From de0ae288cf96599e05994e121236534ab9426c1d Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Fri, 22 Apr 2022 14:30:05 -0400 Subject: [PATCH 017/107] Fix private method access in app router --- src/components/appRouter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 1ed134c90f..b21929d254 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -426,7 +426,7 @@ class AppRouter { } else if (route.roles) { this.#validateRoles(apiClient, route.roles).then(() => { callback(); - }, this.#beginConnectionWizard); + }, this.#beginConnectionWizard.bind(this)); return; } } From df3f53bbc0ec8cb316251adaf63ed4d8fdc6f8c5 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Fri, 22 Apr 2022 15:06:17 -0400 Subject: [PATCH 018/107] Remove unnecessary api call in app router --- src/components/appRouter.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index b21929d254..b0a1489aed 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -202,13 +202,7 @@ class AppRouter { this.goHome(); break; case 'ServerSignIn': - result.ApiClient.getPublicUsers().then((users) => { - if (users.length) { - this.showLocalLogin(result.Servers[0].Id); - } else { - this.showLocalLogin(result.Servers[0].Id, true); - } - }); + this.showLocalLogin(result.ApiClient.serverId()); break; case 'ServerSelection': this.showSelectServer(); From 14391f1b200ab545e675020769db6ac3bcf31bb7 Mon Sep 17 00:00:00 2001 From: blob03 Date: Fri, 22 Apr 2022 17:29:01 +0000 Subject: [PATCH 019/107] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 404f6b9e16..f244f5a7be 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1649,5 +1649,6 @@ "OriginalAirDate": "Date de diffusion originale", "MessageUnauthorizedUser": "Vous n'êtes pas autorisé à accéder au serveur pour le moment. Veuillez contacter votre administrateur de serveur pour plus d'informations.", "Digital": "Numérique", - "EnableEnhancedNvdecDecoderHelp": "Implémentation expérimentale de NVDEC, à n'utiliser que si des erreurs apparaissent lors du décodage." + "EnableEnhancedNvdecDecoderHelp": "Implémentation expérimentale de NVDEC, à n'utiliser que si des erreurs apparaissent lors du décodage.", + "HomeVideosPhotos": "Vidéos et photos personnelles" } From b18950221183a2699e188c26690793efa330405e Mon Sep 17 00:00:00 2001 From: kilimcinin koroglu Date: Fri, 22 Apr 2022 18:30:45 +0000 Subject: [PATCH 020/107] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index 8d25fb073d..fa388f7afc 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -270,7 +270,7 @@ "AnyLanguage": "Herhangi bir dil", "Anytime": "İstediğin zaman", "AroundTime": "Civarında", - "Art": "Clearart", + "Art": "Temiz sanat", "AsManyAsPossible": "Mümkün olduğunca çok", "Ascending": "Artan", "AspectRatio": "En/Boy oranı", @@ -1452,5 +1452,20 @@ "MediaInfoCodec": "Kodek", "MediaInfoAnamorphic": "Anamorfik", "EnableRewatchingNextUpHelp": "'Sıradaki' bölümlerinde önceden izlenen bölümlerin gösterilmesini etkinleştirin.", - "EnableRewatchingNextUp": "Sonraki Sırada Yeniden İzlemeyi Etkinleştir" + "EnableRewatchingNextUp": "Sonraki Sırada Yeniden İzlemeyi Etkinleştir", + "AnamorphicVideoNotSupported": "Anamorfik video desteklenmiyor", + "AllowHevcEncoding": "HEVC biçiminde kodlamaya izin ver", + "AllowEmbeddedSubtitles": "Farklı gömülü altyazı türlerini devre dışı bırakın", + "AllowEmbeddedSubtitlesHelp": "Medya kapsayıcılarında paketlenmiş altyazıları devre dışı bırakın. Tam bir kitaplık yenilemesi gerektirir.", + "AllowVppTonemappingHelp": "Tam Intel sürücü tabanlı ton eşleme. Şu anda yalnızca HDR10 videoları olan belirli donanımlarda çalışır. Bu, başka bir OpenCL uygulamasına kıyasla daha yüksek önceliğe sahiptir.", + "MessageConfirmRecordingCancellation": "Kayıt iptal edilsin mi?", + "MessageConfirmDeleteGuideProvider": "Bu rehber sağlayıcıyı silmek istediğinizden emin misiniz?", + "MessageChangeRecordingPath": "Kayıt klasörünüzü değiştirmek, mevcut kayıtları eski konumdan yenisine taşımaz. İsterseniz bunları manuel olarak taşımanız gerekecektir.", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Bu medya klasörünü kaldırmak istediğinizden emin misiniz?", + "MessageAddRepository": "Bir depo eklemek istiyorsanız, başlığın yanındaki düğmeyi tıklayın ve istenen bilgileri doldurun.", + "MediaIsBeingConverted": "Medya, medyayı yürüten cihazla uyumlu bir biçime dönüştürülmektedir.", + "MediaInfoSampleRate": "Aynı oran", + "MediaInfoInterlaced": "Geçmeli", + "MediaInfoContainer": "Konteyner", + "HomeVideosPhotos": "Ana Sayfa Videolar ve Fotoğraflar" } From 0953209df11a389d5cf5513b1d2395a0ff37c093 Mon Sep 17 00:00:00 2001 From: Oskari Lavinto Date: Sat, 23 Apr 2022 08:58:25 +0000 Subject: [PATCH 021/107] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index bc2638bb36..de09e2362d 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -450,7 +450,7 @@ "ManageRecording": "Hallinnoi tallennusta", "ManageLibrary": "Hallinnoi kirjastoa", "Logo": "Logo", - "LiveTV": "Live TV", + "LiveTV": "Televisio", "LiveBroadcasts": "Suorat lähetykset", "Live": "Suora", "List": "Lista", @@ -626,10 +626,10 @@ "OptionAllowRemoteSharedDevicesHelp": "DLNA-laitteiden katsotaan olevan jaettuja, kunnes käyttäjä aloittaa niiden ohjauksen.", "OptionAllowRemoteSharedDevices": "Salli jaettujen laitteiden etäohjaaminen", "OptionAllowRemoteControlOthers": "Salli muiden käyttäjien etäohjaaminen", - "OptionAllowManageLiveTv": "Salli suorien televisiotallennusten hallinnointi", + "OptionAllowManageLiveTv": "Salli televisiotallennusten hallinnointi", "OptionAllowMediaPlayback": "Salli median toisto", "OptionAllowContentDownloading": "Salli median lataaminen ja synkronointi", - "OptionAllowBrowsingLiveTv": "Salli Live TV -käyttöoikeus", + "OptionAllowBrowsingLiveTv": "Salli television käyttö", "HeaderPluginInstallation": "Lisäosan asennus", "HeaderPlaybackError": "Toistovirhe", "HeaderPlayback": "Median toisto:", @@ -879,7 +879,7 @@ "OptionHlsSegmentedSubtitles": "HLS segmentoidut tekstitykset", "OptionEnableExternalContentInSuggestions": "Käytä ehdotuksissa ulkoista sisältöä", "OptionEmbedSubtitles": "Upota säiliöön", - "OptionForceRemoteSourceTranscoding": "Pakota etäyhteyden välityksellä toistettavien medialähteiden kuten Live TV -lähetysten transkoodaus", + "OptionForceRemoteSourceTranscoding": "Pakota etäyhteyden välityksellä toistettavien medialähteiden, kuten suorien televisiolähetysten transkoodaus", "OneChannel": "Yksi kanava", "Off": "Poissa päältä", "Normal": "Normaali", @@ -920,7 +920,7 @@ "HeaderRecordingPostProcessing": "Tallennuksen jälkikäsittely", "HeaderParentalRatings": "Ikärajat", "HeaderOtherItems": "Muut kohteet", - "HeaderLiveTvTunerSetup": "Live TV -virittimen määritys", + "HeaderLiveTvTunerSetup": "TV-virittimen määritys", "HeaderLibrarySettings": "Kirjaston asetukset", "HeaderGuideProviders": "Ohjelmaoppaiden toimittajat", "HeaderEnabledFields": "Käytössä olevat kentät", @@ -1058,7 +1058,7 @@ "LabelEvent": "Tapahtuma:", "LabelEnableSingleImageInDidlLimit": "Rajoita yhteen upotettuun kuvaan", "LabelEnableHttps": "Ota HTTPS käyttöön", - "LabelEnableHardwareDecodingFor": "Laitteistokiihdytyksen käyttö:", + "LabelEnableHardwareDecodingFor": "Laitteistopurku kohteelle:", "LabelDownMixAudioScale": "Äänen tehostus alasmiksatessa:", "LabelDateAddedBehavior": "Uudelle sisällölle käytettävä päiväys:", "LabelBlastMessageInterval": "Hereiläolo-viestin väli:", @@ -1275,14 +1275,14 @@ "LabelUDPPortRange": "UDP-tiedonsiirron alue:", "LabelTriggerType": "Liipasintyyppi:", "LabelTranscodingTempPathHelp": "Määritä oma tiedostosijainti transkoodatuille tiedostoille jotka toimitetaan asiakasohjelmille. Jätä tyhjäksi käyttääksesi palvelimen oletusta.", - "LabelTonemappingThresholdHelp": "Sävykartoitusalgoritmin parametrit ovat hienosäädetty jokaiselle kohtaukselle. Raja-arvoa käytetään havaitsemaan onko kohtaus muuttunut vai ei. Jos keskikirkkaudet eroavat tämän arvon verran, lasku tapahtuu uudestaan. Suositeltu arvo on 0.8 ja oletusarvo on 0.2.", + "LabelTonemappingThresholdHelp": "Sävykartoitusalgoritmin parametrit on hienosäädetty kohtauskohtaisesti ja raja-arvon avulla havaitaan onko kohtaus muuttunut vai ei. Jos nykyisen kehyksen keskimääräinen kirkkaus ja tämän hetkisen keskiarvon välimatka ylittää kynnysarvon, lasketaan kohtauksen kirkkauden keski- ja huippuarvo uudelleen. Suositellut ja oletusarvot ovat 0.8 ja 0.2.", "LabelTonemappingThreshold": "Sävykartoituksen raja-arvo:", "LabelTonemappingRange": "Sävykartoituksen alue:", - "LabelTonemappingPeakHelp": "Ylikirjoita signal/nominal/reference huiput tällä arvolla. Hyödyllinen kun sisällytetty huipputieto näytön metadatassa ei ole luotettava tai kun sävykartoitetaan matalammasta alueesta korkeampaan. Suositeltu arvo on 100 ja oletusarvo on 0.", + "LabelTonemappingPeakHelp": "Korvaa signal-/nominal-/reference-huiput tällä arvolla. Hyödyllinen silloin kun näytön metatiedoissa ilmoitettu huipputieto ei ole luotettava tai kun sävykartoitetaan matalammalta alueelta korkeammalle. Suositeltu arvo on 100 ja oletusarvo on 0.", "LabelTonemappingPeak": "Sävykartoituksen huippu:", "LabelTonemappingParamHelp": "Säädä sävykartoitusalgoritmia. Suositeltu ja oletusarvo on NaN. Tyypillisesti jätetään tyhjäksi.", "LabelTonemappingParam": "Sävykartoituksen parametrit:", - "LabelTonemappingDesatHelp": "Käytä desaturaatio kirkkaille kohdille jotka ylittävät tämän kirkkauden. Korkeampi parametri säilyttää enemmän värejä. Tämä asetus auttaa estämään kirkkaiden kohtien epäluonnollisen ylikorostuneet värit muuttamalla ne (tasaisesti) valkoiseksi. Tämä tekee kuvasta luonnollisemman jättämällä pois väritietoa väreistä jotka eivät ole väriavaruudessa. Suositeltu arvo on 0 ja oletusarvo on 0.5.", + "LabelTonemappingDesatHelp": "Käytä desaturaatiota korostuksille, jotka ylittävät tämän kirkkaustason. Korkeampi arvo säilyttää enemmän värejä. Asetus auttaa estämään kirkkaiden kohtien epäluonnollisen ylikorostuneet värit muuttamalla ne (pehmeästi) valkoiseksi. Tekee kuvasta luonnollisemman vähentämällä teitoja väriavaruuden ulkopuolisista väreistä. Suositellut ja oletusarovot ovat 0 ja 0.5.", "LabelTonemappingDesat": "Sävykartoituksen desaturaatio:", "LabelTonemappingAlgorithm": "Valitse käytettävä sävykartoitusalgoritmi:", "LabelSyncPlayTimeSyncOffset": "Ajan säätö:", @@ -1357,7 +1357,7 @@ "OptionEstimateContentLength": "Arvioi sisällön pituus transkoodatessa", "OptionEquals": "Yhtä suuri kuin", "OptionEnableM2tsModeHelp": "Ota M2TS-tila käyttöön enkoodattaessa MPEG-TS-muotoon.", - "OptionEnableExternalContentInSuggestionsHelp": "Salli sisältöehdotuksissa Internetistä noudetut trailerit ja suorat televisiolähetykset.", + "OptionEnableExternalContentInSuggestionsHelp": "Salli sisältöehdotuksissa Internetistä noudetut trailerit ja suorat televisio-ohjelmat.", "OptionDisplayFolderViewHelp": "Näyttää kansiot mediakirjastojen yhteydessä. Tämä on hyödyllistä, jos haluat käyttää puhdasta kansionäkymää.", "OptionDisplayFolderView": "Näytä kansionäkymä mediakansioiden kansiorakenteen selaukseen", "OptionDisableUserHelp": "Palvelin ei salli yhteyksiä tältä käyttäjältä. Olemassa olevat yhteydet katkaistaan välittömästi.", @@ -1569,7 +1569,7 @@ "TitleHostingSettings": "Isännöintiasetukset", "TextSent": "Teksti lähetettiin.", "SystemDlnaProfilesHelp": "Järjestelmäprofiileihin ei ole kirjoitusoikeutta ja niihin tehdyt muutokset tallennetaan uusina profiileina.", - "SyncPlayGroupDefaultTitle": "", + "SyncPlayGroupDefaultTitle": "Käyttäjän {0} ryhmä", "SubtitleAppearanceSettingsDisclaimer": "Seuraavat asetukset eivät vaikuta yllämainittuhin graafisiin tekstityksiin, eivätkä ASS- ja SSA-tekstityksiin, jotka sisältävät omia tyylejään.", "SubtitleOffset": "Tekstityksen ajoitus", "StopPlayback": "Pysäytä toisto", @@ -1645,5 +1645,8 @@ "EnableIntelLowPowerH264HwEncoder": "Käytä Intelin alhaisen virrankulutuksen H.264-laitteistodekooderia", "PreferSystemNativeHwDecoder": "Suosi käyttöjärjestelmän natiiveja DXVA- ja VA-API-laitteistodekoodereita", "ContainerBitrateExceedsLimit": "Videon bittinopeus ylittää rajoituksen", - "AudioBitDepthNotSupported": "Äänen bittisyvyyttä ei tueta" + "AudioBitDepthNotSupported": "Äänen bittisyvyyttä ei tueta", + "EnableEnhancedNvdecDecoderHelp": "Kokeellinen NVDEC-toteutus, jota ei tule käyttää, jos purkuvirheitä ei esiinny.", + "PersonRole": "tunnuksella {0}", + "HomeVideosPhotos": "Kotivideot ja valokuvat" } From 8bec2bc3a9213faebf12867da07fa2e3acde06c5 Mon Sep 17 00:00:00 2001 From: blob03 Date: Sat, 23 Apr 2022 10:09:05 +0000 Subject: [PATCH 022/107] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index f244f5a7be..69bf0da5ff 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1070,7 +1070,7 @@ "TabDirectPlay": "Lecture directe", "TabLatest": "Derniers", "TabLogs": "Journaux", - "TabMusic": "Musique", + "TabMusic": "Musiques", "TabMyPlugins": "Mes extensions", "TabNetworks": "Réseaux TV", "TabNfoSettings": "Paramètres NFO", From 08d0f0f2a509309b66f5e1e5305c40ee16013958 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sat, 23 Apr 2022 10:53:42 +0000 Subject: [PATCH 023/107] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 7f961868a1..3d725dee44 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1640,5 +1640,6 @@ "OriginalAirDate": "Ngày Phát Sóng Gốc", "Digital": "Kỹ thuật số", "MessageUnauthorizedUser": "Bạn không được phép truy cập máy chủ vào lúc này. Vui lòng liên hệ quản trị viên máy chủ để biết thêm thông tin.", - "EnableEnhancedNvdecDecoderHelp": "Triển khai NVDEC thử nghiệm, không bật tùy chọn này trừ khi bạn gặp lỗi giải mã." + "EnableEnhancedNvdecDecoderHelp": "Triển khai NVDEC thử nghiệm, không bật tùy chọn này trừ khi bạn gặp lỗi giải mã.", + "HomeVideosPhotos": "Videos và Ảnh Gia Đình" } From 3f1ea90f313389629e29ec17494853131eb80d02 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 23 Apr 2022 12:51:18 +0000 Subject: [PATCH 024/107] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index cc717a17f2..ca91b81bb9 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -1650,5 +1650,6 @@ "OriginalAirDate": "Tüpnusqa efir", "Digital": "Sandyq", "MessageUnauthorizedUser": "Qazırgı uaqytta serverge kıru üşın ruqsatyñyz joq. Qosymşa aqparat alu üşin server äkımşısımen xabarlasyñyz.", - "EnableEnhancedNvdecDecoderHelp": "Eksperimenttık NVDEC ıske asyru, dekodtau qatelerıne tap bolmasañyz, bul opsiany qospañyz." + "EnableEnhancedNvdecDecoderHelp": "Eksperimenttık NVDEC ıske asyru, dekodtau qatelerıne tap bolmasañyz, bul opsiany qospañyz.", + "HomeVideosPhotos": "Üi beinelerı men fotolar" } From 37f95d2b99373efd24d0e187f0178321221c13f0 Mon Sep 17 00:00:00 2001 From: Fernando Boaglio Date: Sat, 23 Apr 2022 13:53:58 +0000 Subject: [PATCH 025/107] Translated using Weblate (Portuguese (Brazil)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_BR/ --- src/strings/pt-br.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index efc4e906f6..c171d06f81 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -688,7 +688,7 @@ "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.", - "LabelTriggerType": "Tipo de Disparador:", + "LabelTriggerType": "Tipo de gatilho:", "LabelTunerIpAddress": "Endereço IP do Sintonizador:", "LabelTunerType": "Tipo de sintonizador:", "LabelType": "Tipo:", @@ -1159,7 +1159,7 @@ "LabelServerName": "Nome do servidor:", "LabelTranscodePath": "Local de transcodificação:", "LabelTranscodes": "Transcodificações:", - "LabelUserLoginAttemptsBeforeLockout": "Tentativas de login falhas antes do usuário ser bloqueado:", + "LabelUserLoginAttemptsBeforeLockout": "Tentativas de login com falha antes do usuário ser bloqueado:", "DashboardVersionNumber": "Versão: {0}", "DashboardServerName": "Servidor: {0}", "DashboardOperatingSystem": "Sistema Operacional: {0}", @@ -1408,7 +1408,7 @@ "LabelTonemappingParam": "Parâmetros de Mapeamento de tom:", "LabelTonemappingPeakHelp": "Sobrepor este valor ao pico de sinal/nominal/referência. Útil quando a informação de pico embutida nos metadados de visualização não é confiável ou quando o Tone mapping alterna de um intervalo pequeno para um maior. Os valores recomendado e padrão são 100 e 0, respectivamente.", "LabelTonemappingPeak": "Pico do Mapeamento de tom:", - "LabelTonemappingThresholdHelp": "Os parâmetros do algoritmo de mapeamento de tons: são afinados a cada cena. E é aplicado um limite para detectar se a cena mudou ou não. Caso a distancia entre o brilho médio atual do quadro e a média atual de execução excedam o valor do limite, o brilho médio e o pico de brilho da cena serão recalculados. Os valores recomendado e padrão são 0.8 e 0.2, respectivamente.", + "LabelTonemappingThresholdHelp": "Os parâmetros do algoritmo de mapeamento de tons são afinados a cada cena. E é aplicado um limite para detectar se a cena mudou ou não. Caso a distancia entre o brilho médio atual do quadro e a média atual de execução excedam o valor do limite, o brilho médio e o pico de brilho da cena serão recalculados. Os valores recomendado e padrão são 0.8 e 0.2, respectivamente.", "LabelTonemappingThreshold": "Limite do mapeamento de tons:", "LabelTonemappingDesatHelp": "Aplicar dessaturação em partes claras da imagem que excedam este nível de brilho. Quanto maior o parâmetro, mais informação de cor será preservada. Esta definição ajuda a prevenir cores excessivamente claras tornando-as (suavemente) em branco. Produz imagens mais naturais devido à redução de informação sobre cores fora do espectro. Os valores recomendado e padrão são 0 e 0.5, respectivamente.", "LabelColorTransfer": "Transferência de cor:", @@ -1627,5 +1627,8 @@ "ButtonSpace": "Espaço", "ButtonExitApp": "Sair da aplicação", "ButtonClose": "Fechar", - "AddToFavorites": "Add aos favoritos" + "AddToFavorites": "Add aos favoritos", + "HomeVideosPhotos": "Início dos vídeos e fotos", + "EnableRewatchingNextUp": "Ativar reassistir em \"A Seguir\"", + "ButtonBackspace": "Backspace" } From 2a73ad8763789f3259120b860b167cb8062e2286 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 23 Apr 2022 12:51:49 +0000 Subject: [PATCH 026/107] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 0062ef7dcb..a3d186d373 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1649,5 +1649,6 @@ "Production": "Производственный", "Digital": "Цифровой", "MessageUnauthorizedUser": "Вы не авторизованы для доступа к серверу в настоящее время. Обратитесь к администратору сервера для получения дополнительной информации.", - "EnableEnhancedNvdecDecoderHelp": "Экспериментальная реализация NVDEC, не включайте эту опцию, если не столкнетесь с ошибками декодирования." + "EnableEnhancedNvdecDecoderHelp": "Экспериментальная реализация NVDEC, не включайте эту опцию, если не столкнетесь с ошибками декодирования.", + "HomeVideosPhotos": "Домашние видео и фото" } From da7e58bb7ffad52651cc553ee2486ee46a994028 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 23 Apr 2022 12:53:12 +0000 Subject: [PATCH 027/107] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index fa388f7afc..88ff1c6132 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -1467,5 +1467,5 @@ "MediaInfoSampleRate": "Aynı oran", "MediaInfoInterlaced": "Geçmeli", "MediaInfoContainer": "Konteyner", - "HomeVideosPhotos": "Ana Sayfa Videolar ve Fotoğraflar" + "HomeVideosPhotos": "Ev Videolar ve Fotoğraflar" } From a84b456cd0c178e1beede189e13768d4e0a1348a Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 23 Apr 2022 12:53:55 +0000 Subject: [PATCH 028/107] Translated using Weblate (Esperanto) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/eo/ --- src/strings/eo.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/eo.json b/src/strings/eo.json index ba20aa0532..0e30231e15 100644 --- a/src/strings/eo.json +++ b/src/strings/eo.json @@ -1645,5 +1645,6 @@ "Digital": "Cifereca", "OriginalAirDate": "Originala Etero", "MessageUnauthorizedUser": "Vi ne estas rajtigita aliri la servilon nuntempe. Kontaktu vian servilan administranton por pliaj informoj.", - "EnableEnhancedNvdecDecoderHelp": "Eksperimenta NVDEC-efektivigo, ne ebligu ĉi tiun opcion krom se vi renkontas malkodajn erarojn." + "EnableEnhancedNvdecDecoderHelp": "Eksperimenta NVDEC-efektivigo, ne ebligu ĉi tiun opcion krom se vi renkontas malkodajn erarojn.", + "HomeVideosPhotos": "Hejmaj Videoj kaj Fotoj" } From 81e240d50dfeda096d7f8b5fc44311ec6d8625fc Mon Sep 17 00:00:00 2001 From: Nicolas Viviani Date: Sat, 23 Apr 2022 21:43:05 +0000 Subject: [PATCH 029/107] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 69bf0da5ff..183ccf4e7e 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1372,7 +1372,7 @@ "LabelIconMaxResHelp": "Résolution maximale des icônes disponibles via la propriété 'upnp:icon'.", "LabelAlbumArtMaxResHelp": "Résolution maximale de la pochette disponible via la propriété 'upnp:albumArtURI'.", "ThumbCard": "Vignette sur carte", - "SpecialFeatures": "Particularités", + "SpecialFeatures": "Bonus", "Photo": "Photo", "Other": "Autre", "PosterCard": "Affiche sur carte", From 3ab6d026ae30e45e1ec71fb7cd97eaa97538f502 Mon Sep 17 00:00:00 2001 From: Moritz Date: Sun, 24 Apr 2022 09:14:38 +0000 Subject: [PATCH 030/107] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 57b4cb7cda..3694d454ac 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1649,5 +1649,6 @@ "MessageUnauthorizedUser": "Du bist aktuell nicht berechtigt, auf den Server zuzugreifen. Bitte kontaktiere den Serveradministrator für weitere Informationen.", "StoryArc": "Handlungsstrang", "Digital": "Digital", - "EnableEnhancedNvdecDecoderHelp": "Experimentelle NVDEC-Implementierung, nur aktiviere, falls es zu Dekodierungsfehlern kommt." + "EnableEnhancedNvdecDecoderHelp": "Experimentelle NVDEC-Implementierung, nur aktiviere, falls es zu Dekodierungsfehlern kommt.", + "HomeVideosPhotos": "Heimvideos und -bilder" } From c8668ff8b739f61d9148bb5a551a8b058527f29a Mon Sep 17 00:00:00 2001 From: Nicolas Viviani Date: Sun, 24 Apr 2022 16:49:47 +0000 Subject: [PATCH 031/107] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 183ccf4e7e..6fa174220c 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -140,7 +140,7 @@ "DirectStreamHelp1": "Le flux vidéo est compatible avec l'appareil mais utilise un format audio non supporté (DTS, Dolby TrueHD, etc.) ou un nombre incompatible de canaux. Le média va être rempaqueté à la volée avant d'être diffusé sur l'appareil. Seul le flux audio sera transcodé.", "DirectStreamHelp2": "La puissance de traitement utilisée par le streaming en direct dépend en général du profil audio. Seul le flux vidéo est sans pertes.", "DirectStreaming": "Streaming direct", - "Director": "Réalisateur(trice)", + "Director": "Réalisateur", "Directors": "Réalisateurs", "Disc": "Disque", "Disconnect": "Déconnecter", @@ -977,7 +977,7 @@ "Quality": "Qualité", "Raised": "Surélevé", "Rate": "Débit", - "RecentlyWatched": "Lu récemment", + "RecentlyWatched": "Vu récemment", "RecommendationBecauseYouLike": "Parce que vous aimez {0}", "RecommendationBecauseYouWatched": "Parce que vous avez regardé {0}", "RecommendationDirectedBy": "Réalisé par {0}", @@ -1026,7 +1026,7 @@ "SeriesDisplayOrderHelp": "Trier les épisodes par date de diffusion, dans l'ordre de publication des DVDs, ou par numérotation absolue.", "SeriesRecordingScheduled": "Enregistrement de la série planifié.", "SeriesSettings": "Paramètres de la série", - "SeriesYearToPresent": "{0} - Présent", + "SeriesYearToPresent": "{0} - En production", "ServerNameIsRestarting": "Le serveur sur {0} redémarre.", "ServerNameIsShuttingDown": "Le serveur sur {0} s'arrête.", "ServerRestartNeededAfterPluginInstall": "Jellyfin devra être redémarré après l'installation d'une extension.", @@ -1131,7 +1131,7 @@ "Vertical": "Vertical", "ViewAlbum": "Voir l'album", "ViewPlaybackInfo": "Voir les informations de lecture", - "Watched": "Lu", + "Watched": "Vu", "Wednesday": "Mercredi", "WelcomeToProject": "Bienvenue dans Jellyfin !", "Whitelist": "Liste blanche", @@ -1217,7 +1217,7 @@ "LabelAudioBitrate": "Bitrate audio :", "LabelAudioBitDepth": "Profondeur de bit audio :", "MusicLibraryHelp": "Consultez le {0}guide de nommage de musique{1}.", - "MoreMediaInfo": "Informations du Média", + "MoreMediaInfo": "Informations du média", "LabelVideoCodec": "Codec vidéo :", "LabelVideoBitrate": "Débit vidéo :", "LabelTranscodingProgress": "Progression du transcodage :", From aa5146ac70181bd8b776366af107b46b03c6a38e Mon Sep 17 00:00:00 2001 From: Csaba Date: Mon, 25 Apr 2022 05:59:44 +0000 Subject: [PATCH 032/107] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index e930226065..dde261f655 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1649,5 +1649,6 @@ "OriginalAirDate": "Eredeti megjelenési dátum", "MessageUnauthorizedUser": "Jelenleg nincs jogosultsága a szerver elérésére. További információért fordulj a szerver rendszergazdájához.", "Digital": "Digitális", - "EnableEnhancedNvdecDecoderHelp": "Kísérleti NVDEC implementáció, csak akkor engedélyezze ezt a lehetőséget, ha dekódolási hibákat észlel." + "EnableEnhancedNvdecDecoderHelp": "Kísérleti NVDEC implementáció, csak akkor engedélyezze ezt a lehetőséget, ha dekódolási hibákat észlel.", + "HomeVideosPhotos": "Otthoni videók és fotók" } From d2dc14e4cb27a8731406967245947eaf17ca5019 Mon Sep 17 00:00:00 2001 From: rala-l Date: Mon, 25 Apr 2022 11:24:53 +0000 Subject: [PATCH 033/107] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index cf4d8d49c2..4af9f1d6f8 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -112,7 +112,7 @@ "OptionHasThemeVideo": "Video de Fundal", "OptionHideUser": "Ascunde acest utilizator din pagina de autentificare", "OptionHideUserFromLoginHelp": "Folositor pentru conturi private sau de administrator ascunse. Utilizatorul va trebui să se conecteze manual prin introducerea numelui de utilizator și a parolei.", - "OptionImdbRating": "Rating IMDb", + "OptionImdbRating": "Evaluare IMDb", "OptionLikes": "Like-uri", "OptionParentalRating": "Limită de vârstă", "OptionPlayCount": "Contorizare rulări", From ca2f7f7b4b2e954152f4132ea688d8a2279d1339 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 25 Apr 2022 13:26:51 +0000 Subject: [PATCH 034/107] Update github/codeql-action action to v2 --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index e7b9999007..c74a108ee4 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -21,11 +21,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 From 43adbd5490d31eba3088952164733fa605dc669d Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Mon, 25 Apr 2022 16:46:19 -0400 Subject: [PATCH 035/107] Revert single optional check in app router --- src/components/appRouter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index b0a1489aed..a75d8823df 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -27,7 +27,7 @@ class AppRouter { msgTimeout; promiseShow; resolveOnNextShow; - previousRoute; + previousRoute = {}; constructor() { document.addEventListener('viewshow', () => this.onViewShow()); @@ -482,7 +482,7 @@ class AppRouter { #getHandler(route) { return (ctx, next) => { - const ignore = route.dummyRoute === true || this.previousRoute?.dummyRoute === true; + const ignore = route.dummyRoute === true || this.previousRoute.dummyRoute === true; this.previousRoute = route; if (ignore) { // Resolve 'show' promise From ab5fad6d5b8e64e1296a3050e6900c6c45d53790 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Tue, 26 Apr 2022 12:02:55 +0000 Subject: [PATCH 036/107] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 7c592e2734..c5353ffc68 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1649,5 +1649,6 @@ "EnableRewatchingNextUpHelp": "Povolí zobrazenie už pozretých epizód v sekcií 'Nasleduje'.", "EnableRewatchingNextUp": "Povoliť Opätovné pozeranie v sekcií Nasleduje", "Digital": "Digitálne", - "EnableEnhancedNvdecDecoderHelp": "Experimentálna implementácia NVDEC, túto možnosť nepovoľujte, pokiaľ ste sa nestretli s chybami pri dekódovaní." + "EnableEnhancedNvdecDecoderHelp": "Experimentálna implementácia NVDEC, túto možnosť nepovoľujte, pokiaľ ste sa nestretli s chybami pri dekódovaní.", + "HomeVideosPhotos": "Domáce videá a fotky" } From 92b7e0c985cbfa040c24e65d4a241e2900e2f6b5 Mon Sep 17 00:00:00 2001 From: Marthinus Bosman Date: Wed, 27 Apr 2022 16:28:59 +0000 Subject: [PATCH 037/107] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index e47d01d8ff..d5a0c1478e 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -803,5 +803,14 @@ "Console": "Konsole", "Conductor": "Kondukteur", "Casual": "Informeel", - "Arranger": "Organiseerder" + "Arranger": "Organiseerder", + "Digital": "Digitaal", + "CopyFailed": "Kon nie kopieer nie", + "Copy": "Kopieer", + "Copied": "Gekopieer", + "ButtonSpace": "Spasie", + "ButtonExitApp": "Verlaat Program", + "ButtonClose": "Maak toe", + "ButtonBackspace": "Terug", + "AddToFavorites": "Voeg by gunstelinge" } From 7df9b6ba034920d6c1d35aa706f94276c3508bfa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Apr 2022 19:34:23 +0000 Subject: [PATCH 038/107] Bump ejs from 3.1.6 to 3.1.7 Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.7. - [Release notes](https://github.com/mde/ejs/releases) - [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mde/ejs/compare/v3.1.6...v3.1.7) --- updated-dependencies: - dependency-name: ejs dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 97 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 73 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a14a2c72b..b0c1a2f949 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5187,12 +5187,81 @@ "dev": true }, "ejs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", - "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz", + "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==", "dev": true, "requires": { - "jake": "^10.6.1" + "jake": "^10.8.5" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "electron-to-chromium": { @@ -7815,26 +7884,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "jake": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", - "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", - "dev": true, - "requires": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - } - } - }, "jellyfin-apiclient": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/jellyfin-apiclient/-/jellyfin-apiclient-1.10.0.tgz", From 89a25b1360248d1564a86b1e4871ce982bd6cff4 Mon Sep 17 00:00:00 2001 From: Matteo Fumagalli Date: Wed, 27 Apr 2022 18:21:35 +0000 Subject: [PATCH 039/107] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index c3e8e3abd1..a51e8a988f 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1621,10 +1621,10 @@ "BehindTheScenes": "Dietro le quinte", "Clip": "Corto metraggio", "ButtonExitApp": "Esci dall'Applicazione", - "AllowEmbeddedSubtitlesAllowTextOption": "Testo", - "AllowEmbeddedSubtitlesAllowImageOption": "Immagine", - "AllowEmbeddedSubtitlesAllowAllOption": "Tutti", - "AllowEmbeddedSubtitlesAllowNoneOption": "Nessuno", + "AllowEmbeddedSubtitlesAllowTextOption": "Solo con testo", + "AllowEmbeddedSubtitlesAllowImageOption": "Solo con immagini", + "AllowEmbeddedSubtitlesAllowAllOption": "Abilita tutti", + "AllowEmbeddedSubtitlesAllowNoneOption": "Disabilita tutti", "AllowEmbeddedSubtitlesHelp": "Disabilita i sottotitoli contenuti all'interno dei media. Richiede una nuova scansione della libreria.", "AllowEmbeddedSubtitles": "Disabilita i sottotitoli integrati", "NextUpRewatching": "Riguarda", From d895a4fc6ad003698a816d8b9cb9215b985c1c12 Mon Sep 17 00:00:00 2001 From: Ryan Hartzell Date: Wed, 27 Apr 2022 15:45:56 -0700 Subject: [PATCH 040/107] add eslint no-nested-ternary rule and fix violations --- .eslintrc.js | 3 ++- src/components/favoriteitems.js | 6 +++++- src/components/homesections/homesections.js | 10 +--------- src/components/itemContextMenu.js | 9 ++++++++- .../libraryoptionseditor.js | 8 +++++++- src/components/playback/playbackmanager.js | 8 +++++++- src/components/scrollManager.js | 7 ++++++- src/components/syncPlay/core/Helper.js | 8 +++++++- .../dashboard/scheduledtasks/scheduledtasks.js | 8 +++++++- src/controllers/movies/moviesrecommended.js | 11 +++++++++-- src/controllers/playback/video/index.js | 7 ++++++- src/controllers/shows/tvrecommended.js | 2 +- src/libraries/scroller.js | 7 ++++++- src/scripts/browserDeviceProfile.js | 18 +++++++++++------- src/scripts/libraryMenu.js | 7 ++++++- 15 files changed, 89 insertions(+), 30 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index ad65467f98..854a34faaa 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -52,9 +52,10 @@ module.exports = { 'no-trailing-spaces': ['error'], '@babel/no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }], 'no-void': ['error', { 'allowAsStatement': true }], + 'no-nested-ternary': ['error'], 'one-var': ['error', 'never'], 'padded-blocks': ['error', 'never'], - 'prefer-const': ['error', {'destructuring': 'all'}], + 'prefer-const': ['error', { 'destructuring': 'all' }], 'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }], '@babel/semi': ['error'], 'no-var': ['error'], diff --git a/src/components/favoriteitems.js b/src/components/favoriteitems.js index 7fd4baa5d0..ebd97e55c8 100644 --- a/src/components/favoriteitems.js +++ b/src/components/favoriteitems.js @@ -121,10 +121,14 @@ import '../elements/emby-itemscontainer/emby-itemscontainer'; } if (!isSingleSection) { - options.Limit = screenWidth >= 1920 ? 10 : screenWidth >= 1440 ? 8 : 6; + options.Limit = 6; if (enableScrollX()) { options.Limit = 20; + } else if (screenWidth >= 1920) { + options.Limit = 10; + } else if (screenWidth >= 1440) { + options.Limit = 8; } } diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 9fa440b1a2..86e154f7b6 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -1,6 +1,5 @@ import escapeHtml from 'escape-html'; import cardBuilder from '../cardbuilder/cardBuilder'; -import dom from '../../scripts/dom'; import layoutManager from '../layoutManager'; import imageLoader from '../images/imageLoader'; import globalize from '../../scripts/globalize'; @@ -401,15 +400,8 @@ import ServerConnections from '../ServerConnections'; function getItemsToResumeFn(mediaType, serverId) { return function () { const apiClient = ServerConnections.getApiClient(serverId); - const screenWidth = dom.getWindowSize().innerWidth; - let limit; - if (enableScrollX()) { - limit = 12; - } else { - limit = screenWidth >= 1920 ? 8 : (screenWidth >= 1600 ? 8 : (screenWidth >= 1200 ? 9 : 6)); - limit = Math.min(limit, 5); - } + const limit = enableScrollX() ? 12 : 5; const options = { Limit: limit, diff --git a/src/components/itemContextMenu.js b/src/components/itemContextMenu.js index 56fd3705db..34c10ffd33 100644 --- a/src/components/itemContextMenu.js +++ b/src/components/itemContextMenu.js @@ -520,7 +520,14 @@ import toast from './toast/toast'; } function play(item, resume, queue, queueNext) { - const method = queue ? (queueNext ? 'queueNext' : 'queue') : 'play'; + let method = 'play'; + if (queue) { + if (queueNext) { + method = 'queueNext'; + } else { + method = 'queue'; + } + } let startPosition = 0; if (resume && item.UserData && item.UserData.PlaybackPositionTicks) { diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 597d747840..23bd8e5aeb 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -550,7 +550,13 @@ import template from './libraryoptionseditor.template.html'; function getOrderedPlugins(plugins, configuredOrder) { plugins = plugins.slice(0); plugins.sort((a, b) => { - return a = configuredOrder.indexOf(a.Name), b = configuredOrder.indexOf(b.Name), a < b ? -1 : a > b ? 1 : 0; + let order = 0; + if (a < b) { + order = -1; + } else if (a > b) { + order = 1; + } + return a = configuredOrder.indexOf(a.Name), b = configuredOrder.indexOf(b.Name), order; }); return plugins; } diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index cd634d71cf..9cc6f62810 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1827,12 +1827,18 @@ class PlaybackManager { Limit: UNLIMITED_ITEMS }, queryOptions)); } else if (firstItem.IsFolder) { + let sortBy = null; + if (options.shuffle) { + sortBy = 'Random'; + } else if (firstItem.Type !== 'BoxSet') { + sortBy = 'SortName'; + } promise = getItemsForPlayback(serverId, mergePlaybackQueries({ ParentId: firstItem.Id, Filters: 'IsNotFolder', Recursive: true, // These are pre-sorted - SortBy: options.shuffle ? 'Random' : (['BoxSet'].indexOf(firstItem.Type) === -1 ? 'SortName' : null), + SortBy: sortBy, MediaTypes: 'Audio,Video' }, queryOptions)); } else if (firstItem.Type === 'Episode' && items.length === 1 && getPlayer(firstItem, options).supportsProgress !== false) { diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index da71b157cb..53c09e37e5 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -61,7 +61,12 @@ import layoutManager from './layoutManager'; * @return {number} Clamped value. */ function clamp(value, min, max) { - return value <= min ? min : value >= max ? max : value; + if (value <= min) { + return min; + } else if (value >= max) { + return max; + } + return value; } /** diff --git a/src/components/syncPlay/core/Helper.js b/src/components/syncPlay/core/Helper.js index 7ddf5d1891..890f2485fb 100644 --- a/src/components/syncPlay/core/Helper.js +++ b/src/components/syncPlay/core/Helper.js @@ -173,12 +173,18 @@ export function translateItemsForPlayback(apiClient, items, options) { MediaTypes: 'Audio' }); } else if (firstItem.IsFolder) { + let sortBy = null; + if (options.shuffle) { + sortBy = 'Random'; + } else if (firstItem.Type === 'BoxSet') { + sortBy = 'SortName'; + } promise = getItemsForPlayback(apiClient, mergePlaybackQueries({ ParentId: firstItem.Id, Filters: 'IsNotFolder', Recursive: true, // These are pre-sorted. - SortBy: options.shuffle ? 'Random' : (['BoxSet'].indexOf(firstItem.Type) === -1 ? 'SortName' : null), + SortBy: sortBy, MediaTypes: 'Audio,Video' }, queryOptions)); } else if (firstItem.Type === 'Episode' && items.length === 1) { diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js index 4b16007706..c000986ae9 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtasks.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtasks.js @@ -23,7 +23,13 @@ import '../../../elements/emby-button/emby-button'; tasks = tasks.sort(function(a, b) { a = a.Category + ' ' + a.Name; b = b.Category + ' ' + b.Name; - return a == b ? 0 : a < b ? -1 : 1; + if (a > b) { + return 1; + } else if (a < b) { + return -1; + } else { + return 0; + } }); let currentCategory; diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 6c88ea5c8e..a4c090bdbe 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -66,7 +66,7 @@ import Dashboard from '../../utils/dashboard'; SortOrder: 'Descending', IncludeItemTypes: 'Movie', Filters: 'IsResumable', - Limit: screenWidth >= 1920 ? 5 : screenWidth >= 1600 ? 5 : 3, + Limit: screenWidth >= 1600 ? 5 : 3, Recursive: true, Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', CollapseBoxSetItems: false, @@ -157,10 +157,17 @@ import Dashboard from '../../utils/dashboard'; function loadSuggestions(page, userId) { const screenWidth = dom.getWindowSize().innerWidth; + let itemLimit = 5; + if (screenWidth >= 1600) { + itemLimit = 8; + } else if (screenWidth >= 1200) { + itemLimit = 6; + } + const url = ApiClient.getUrl('Movies/Recommendations', { userId: userId, categoryLimit: 6, - ItemLimit: screenWidth >= 1920 ? 8 : screenWidth >= 1600 ? 8 : screenWidth >= 1200 ? 6 : 5, + ItemLimit: itemLimit, Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', ImageTypeLimit: 1, EnableImageTypes: 'Primary,Backdrop,Banner,Thumb' diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index bb683b7f35..691f1c0f30 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -587,7 +587,12 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components function showComingUpNextIfNeeded(player, currentItem, currentTimeTicks, runtimeTicks) { if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && currentItem.Type === 'Episode' && userSettings.enableNextVideoInfoOverlay()) { - const showAtSecondsLeft = runtimeTicks >= 3e10 ? 40 : runtimeTicks >= 24e9 ? 35 : 30; + let showAtSecondsLeft = 30; + if (runtimeTicks >= 3e10) { + showAtSecondsLeft = 40; + } else if (runtimeTicks >= 2.4e10) { + showAtSecondsLeft = 35; + } const showAtTicks = runtimeTicks - 1e3 * showAtSecondsLeft * 1e4; const timeRemainingTicks = runtimeTicks - currentTimeTicks; diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index 0a20e96d96..7dd916f6d8 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -98,7 +98,7 @@ import autoFocuser from '../../components/autoFocuser'; SortOrder: 'Descending', IncludeItemTypes: 'Episode', Filters: 'IsResumable', - Limit: screenWidth >= 1920 ? 5 : screenWidth >= 1600 ? 5 : 3, + Limit: screenWidth >= 1600 ? 5 : 3, Recursive: true, Fields: 'PrimaryImageAspectRatio,MediaSourceCount,BasicSyncInfo', CollapseBoxSetItems: false, diff --git a/src/libraries/scroller.js b/src/libraries/scroller.js index ce91862423..82fb79acb2 100644 --- a/src/libraries/scroller.js +++ b/src/libraries/scroller.js @@ -53,7 +53,12 @@ function disableOneEvent(event) { * @return {Number} */ function within(number, min, max) { - return number < min ? min : number > max ? max : number; + if (number < min) { + return min; + } else if (number > max) { + return max; + } + return number; } // Other global values diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index 2d9c2c75e7..e83e8a5cdd 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -288,10 +288,16 @@ import browser from './browser'; } } - return browser.ps4 ? 8000000 : - (browser.xboxOne ? 12000000 : - (browser.edgeUwp ? null : - (browser.tizen && isTizenFhd ? 20000000 : null))); + let bitrate = null; + if (browser.ps4) { + bitrate = 8000000; + } else if (browser.xboxOne) { + bitrate = 12000000; + } else if (browser.tizen && isTizenFhd) { + bitrate = 20000000; + } + + return bitrate; } function getSpeakerCount() { @@ -381,9 +387,7 @@ import browser from './browser'; } /* eslint-disable compat/compat */ - let maxVideoWidth = browser.xboxOne ? - (window.screen ? window.screen.width : null) : - null; + let maxVideoWidth = (browser.xboxOne && window.screen) ? window.screen.width : null; /* eslint-enable compat/compat */ if (options.maxVideoWidth) { diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index b9fe523e41..b77aba42e2 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -793,7 +793,12 @@ import { getParameterByName } from '../utils/url.ts'; } function updateMenuForPageType(isDashboardPage, isLibraryPage) { - const newPageType = isDashboardPage ? 2 : isLibraryPage ? 1 : 3; + let newPageType = 3; + if (isDashboardPage) { + newPageType = 2; + } else if (isLibraryPage) { + newPageType = 1; + } if (currentPageType !== newPageType) { currentPageType = newPageType; From 74faffa9b451cd498b221f5c89de65ff965935c2 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Mon, 25 Apr 2022 10:37:29 -0400 Subject: [PATCH 041/107] Merge pull request #3577 from thornbill/fix-sd-filter-backport Fix SD filter state (cherry picked from commit 9b697ce832e005efec9fad185a409bac7ddbe3fa) Signed-off-by: crobibero --- src/components/filterdialog/filterdialog.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/components/filterdialog/filterdialog.js b/src/components/filterdialog/filterdialog.js index 16889f836a..1c12d5367c 100644 --- a/src/components/filterdialog/filterdialog.js +++ b/src/components/filterdialog/filterdialog.js @@ -87,7 +87,7 @@ import template from './filterdialog.template.html'; context.querySelector('.chk3DFilter').checked = query.Is3D === true; context.querySelector('.chkHDFilter').checked = query.IsHD === true; context.querySelector('.chk4KFilter').checked = query.Is4K === true; - context.querySelector('.chkSDFilter').checked = query.IsHD === true; + context.querySelector('.chkSDFilter').checked = query.IsHD === false; context.querySelector('#chkSubtitle').checked = query.HasSubtitles === true; context.querySelector('#chkTrailer').checked = query.HasTrailer === true; context.querySelector('#chkThemeSong').checked = query.HasThemeSong === true; @@ -272,15 +272,25 @@ import template from './filterdialog.template.html'; triggerChange(this); }); const chkHDFilter = context.querySelector('.chkHDFilter'); + const chkSDFilter = context.querySelector('.chkSDFilter'); chkHDFilter.addEventListener('change', () => { query.StartIndex = 0; - query.IsHD = chkHDFilter.checked ? true : null; + if (chkHDFilter.checked) { + chkSDFilter.checked = false; + query.IsHD = true; + } else { + query.IsHD = null; + } triggerChange(this); }); - const chkSDFilter = context.querySelector('.chkSDFilter'); chkSDFilter.addEventListener('change', () => { query.StartIndex = 0; - query.IsHD = chkSDFilter.checked ? false : null; + if (chkSDFilter.checked) { + chkHDFilter.checked = false; + query.IsHD = false; + } else { + query.IsHD = null; + } triggerChange(this); }); for (const elem of context.querySelectorAll('.chkStatus')) { From 4c709dcf44fbc77055e90373aa2c66d6c0a0fd61 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 27 Apr 2022 15:23:47 -0400 Subject: [PATCH 042/107] Merge pull request #3597 from nielsvanvelzen/qc-text-input Use text input in Quick Connect page (cherry picked from commit f7e2f07c059ceb1532ec27103ab8acd1aa59ec7a) Signed-off-by: crobibero --- src/controllers/user/quickConnect/index.html | 2 +- src/controllers/user/quickConnect/index.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/controllers/user/quickConnect/index.html b/src/controllers/user/quickConnect/index.html index b60727d63f..6e0e0cbf6f 100644 --- a/src/controllers/user/quickConnect/index.html +++ b/src/controllers/user/quickConnect/index.html @@ -5,7 +5,7 @@
    ${QuickConnectDescription}

    - +
    `; - html += ''; + const repoLink = document.createElement('a'); + repoLink.setAttribute('is', 'emby-linkbutton'); + repoLink.className = 'clearLink listItemIconContainer'; + repoLink.style.margin = '0'; + repoLink.style.padding = '0'; + repoLink.rel = 'noopener noreferrer'; + repoLink.target = '_blank'; + repoLink.href = repository.Url; + repoLink.innerHTML = ''; + listItem.appendChild(repoLink); - return html; + const body = document.createElement('div'); + body.className = 'listItemBody two-line'; + + const name = document.createElement('h3'); + name.className = 'listItemBodyText'; + name.innerText = repository.Name; + body.appendChild(name); + + const url = document.createElement('div'); + url.className = 'listItemBodyText secondary'; + url.innerText = repository.Url; + body.appendChild(url); + + listItem.appendChild(body); + + const button = document.createElement('button'); + button.type = 'button'; + button.setAttribute('is', 'paper-icon-button-light'); + button.className = 'btnDelete'; + button.id = repository.Url; + button.title = globalize.translate('Delete'); + button.innerHTML = ''; + listItem.appendChild(button); + + return listItem; } function getTabs() { From 36a8c8ee4b7c8575ff21c5d1c2ed9b63dba20e9b Mon Sep 17 00:00:00 2001 From: Nodirbek Khajiev Date: Fri, 29 Apr 2022 10:59:32 -0400 Subject: [PATCH 044/107] Added translation using Weblate (Uzbek) --- src/strings/uz.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/uz.json diff --git a/src/strings/uz.json b/src/strings/uz.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/uz.json @@ -0,0 +1 @@ +{} From 040d84c482025b3553ee9dbc4ad90322790f8551 Mon Sep 17 00:00:00 2001 From: Alexander Brissman Date: Fri, 29 Apr 2022 21:05:03 +0000 Subject: [PATCH 045/107] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 350 ++++++++++++++++++++++++-------------------- 1 file changed, 189 insertions(+), 161 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index e98e793282..d156636241 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -14,10 +14,10 @@ "AllChannels": "Alle kanaler", "AllEpisodes": "Alle episoder", "AllLibraries": "Alle biblioteker", - "AllowHWTranscodingHelp": "Tillat at tuneren omkoder strømmer fortløpende. Dette kan bidra til å redusere mengden omkoding som må utføres av serveren.", + "AllowHWTranscodingHelp": "Tillat at tuneren omkoder strømmer fortløpende. Dette kan bidra til å redusere mengden omkoding som må utføres av tjeneren.", "AllowMediaConversion": "Tillat konvertering av media", "AllowMediaConversionHelp": "Tillatt eller forby tilgang til å konvertere media.", - "AllowRemoteAccess": "Tillat eksterne tilkoblinger til denne serveren", + "AllowRemoteAccess": "Tillat eksterne tilkoblinger til denne tjeneren", "AllowRemoteAccessHelp": "Alle tilkoblinger via nettverk vil blokkeres dersom du ikke aktiverer denne innstillingen.", "Anytime": "Når som helst", "AroundTime": "Omkring {0}", @@ -34,7 +34,7 @@ "MessageBrowsePluginCatalog": "Bla i tilleggskatalogen vår for å se tilgjengelige applikasjonstillegg.", "ButtonAddMediaLibrary": "Legg til bibliotek", "ButtonAddScheduledTaskTrigger": "Legg til utløser", - "ButtonAddServer": "Legg til tener", + "ButtonAddServer": "Legg til tjener", "ButtonAddUser": "Legg til ny bruker", "ButtonArrowLeft": "Venstre", "ButtonArrowRight": "Høyre", @@ -96,7 +96,7 @@ "CustomDlnaProfilesHelp": "Lag en tilpasset profil til en ny enhet eller for å overstyre en system-profil.", "DeathDateValue": "Døde: {0}", "ErrorDefault": "Det oppstod en feil under behandling av forespørselen. Vennligst prøv igjen senere.", - "DefaultMetadataLangaugeDescription": "Dette er standardverdiene på serveren, de kan også tilpasses per biblioteksbasis.", + "DefaultMetadataLangaugeDescription": "Dette er standardverdiene for tjeneren, de kan også tilpasses per biblioteksbasis.", "Delete": "Slett", "DeleteDeviceConfirmation": "Er du sikker på at du ønsker å slette denne enheten? Den vil gjenoppstå neste gang en bruker logger inn med den.", "DeleteImage": "Slett bilde", @@ -167,7 +167,7 @@ "HeaderAllowMediaDeletionFrom": "Tillat sletting av media fra:", "HeaderApiKey": "API-nøkkel", "HeaderApiKeys": "API-nøkler", - "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.", + "HeaderApiKeysHelp": "Eksterne programmer trenger en API-nøkkel for å kunne kommunisere med tjeneren. Nøklene utstedes ved å logge på med en vanlig brukerkonto eller gjennom å manuelt gi programmet en nøkkel.", "HeaderAudioBooks": "Lydbøker", "HeaderAudioSettings": "Lydinnstillinger", "HeaderBranding": "Merking", @@ -180,10 +180,10 @@ "HeaderConfirmPluginInstallation": "Bekreft installasjon av tillegg", "HeaderConfirmProfileDeletion": "Bekreft sletting av profil", "HeaderConfirmRevokeApiKey": "Tilbakekall API-nøkkel", - "HeaderConnectToServer": "Koble til server", + "HeaderConnectToServer": "Koble til tjener", "HeaderConnectionFailure": "Tilkobling feilet", - "HeaderContainerProfile": "Kontainerprofil", - "HeaderContainerProfileHelp": "Containerprofiler indikerer begrensninger hos en enhet ved avspilling av bestemte formater. Hvis en begrensning gjelder, vil media bli omkodet selv om formatet er konfigurert for direkteavspilling.", + "HeaderContainerProfile": "Mediabeholderprofil", + "HeaderContainerProfileHelp": "Mediabeholderprofiler indikerer begrensninger hos en enhet ved avspilling av bestemte formater. Hvis en begrensning gjelder, vil media bli omkodet selv om formatet er konfigurert for direkteavspilling.", "HeaderContinueListening": "Forsett å lytte", "HeaderContinueWatching": "Fortsett å se", "HeaderCustomDlnaProfiles": "Tilpassede profiler", @@ -257,7 +257,7 @@ "HeaderPluginInstallation": "Installasjon av programtillegg", "HeaderPreferredMetadataLanguage": "Foretrukket språk for metadata", "HeaderProfileInformation": "Profilinformasjon", - "HeaderProfileServerSettingsHelp": "Disse verdiene styrer hvordan serveren presenterer seg selv for klienter.", + "HeaderProfileServerSettingsHelp": "Disse verdiene styrer hvordan tjeneren presenterer seg selv for klienter.", "HeaderRecentlyPlayed": "Nylig avspilt", "HeaderRecordingOptions": "Opptaksvalg", "HeaderRecordingPostProcessing": "Etterbehandling av opptak", @@ -275,12 +275,12 @@ "HeaderSelectMetadataPathHelp": "Bla eller skriv inn filbanen som skal brukes for metadata. Mappen må være skrivbar.", "HeaderSelectPath": "Velg filbane", "HeaderSelectServerCachePath": "Velg filbane for mellomlagring", - "HeaderSelectServerCachePathHelp": "Bla eller skriv inn filbanen som skal brukes for mellomlagring av serverdata. Mappen må være skrivbar.", + "HeaderSelectServerCachePathHelp": "Bla eller skriv inn filbanen som skal brukes for mellomlagring av data. Mappen må være skrivbar.", "HeaderSelectTranscodingPath": "Velg filbane for midlertidig lagring av omkodede filer", "HeaderSelectTranscodingPathHelp": "Bla eller skriv inn filbanen som skal brukes for omkodede filer. Mappen må være skrivbar.", "HeaderSendMessage": "Send melding", "HeaderSeriesOptions": "Serievalg", - "HeaderServerSettings": "Serverinnstillinger", + "HeaderServerSettings": "Tjenerinnstillinger", "HeaderSetupLibrary": "Konfigurer dine mediebibliotek", "HeaderSortBy": "Sorter etter", "HeaderSortOrder": "Sorteringsrekkefølge", @@ -309,7 +309,7 @@ "HeaderXmlSettings": "XML-innstillinger", "HeaderYears": "År", "Help": "Hjelp", - "HideWatchedContentFromLatestMedia": "Skjul sett innhold fra \"Site medier\"", + "HideWatchedContentFromLatestMedia": "Skjul sett innhold fra \"Siste medier\"", "Identify": "Identifiser", "Images": "Bilder", "ImportFavoriteChannelsHelp": "Kun kanaler som er markert som favoritt på tuneren bli importert.", @@ -318,7 +318,7 @@ "ItemCount": "{0} elementer", "Items": "Elementer", "Kids": "Barn", - "LabelAbortedByServerShutdown": "(Avbrutt grunnet at serveren er avslått)", + "LabelAbortedByServerShutdown": "(Avbrutt grunnet at tjeneren ble avslått)", "LabelAccessDay": "Ukedag:", "LabelAccessEnd": "Sluttid:", "LabelAccessStart": "Starttid:", @@ -338,7 +338,7 @@ "LabelAudioLanguagePreference": "Foretrukket språk på lydspor:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Oppdater metadata automatisk fra Internett:", "LabelBindToLocalNetworkAddress": "Bind til lokal nettverksadresse:", - "LabelBindToLocalNetworkAddressHelp": "Overstyr den lokale IP-adressen til HTTP-serveren. Hvis tomt, vil serveren binde seg til alle tilgjengelige adresser. Endringer av denne verdien krever en omstart.", + "LabelBindToLocalNetworkAddressHelp": "Overstyr den lokale IP-adressen til HTTP-tjeneren. Hvis tomt, vil tjeneren binde seg til alle tilgjengelige adresser. Endringer av denne verdien krever en omstart.", "LabelBirthDate": "Fødselsdato:", "LabelBirthYear": "Fødselsår:", "LabelBlastMessageInterval": "Intervall mellom keepalive-meldinger:", @@ -381,16 +381,16 @@ "LabelEmbedAlbumArtDidl": "Bygg inn albumbilder i DIDL", "LabelEmbedAlbumArtDidlHelp": "Noen enheter foretrekker denne metoden for å få albumomslag. Andre vil kunne få problemer med avspilling hvis dette alternativet er aktivert.", "LabelEnableAutomaticPortMap": "Aktiver automatisk portmapping", - "LabelEnableAutomaticPortMapHelp": "Koble eksterne porter på ruteren automatisk til lokale porter på serveren din via UPnP. Dette fungerer ikke med alle rutere eller nettverkskonfigurasjoner. Endringer trer ikke i kraft før serveren startes på nytt.", + "LabelEnableAutomaticPortMapHelp": "Koble eksterne porter på ruteren automatisk til lokale porter på tjeneren din via UPnP. Dette fungerer ikke med alle rutere eller nettverkskonfigurasjoner. Endringer trer ikke i kraft før tjeneren startes på nytt.", "LabelEnableBlastAliveMessages": "Kringkast keepalive-meldinger", - "LabelEnableBlastAliveMessagesHelp": "Aktiver hvis serveren ikke blir konsekvent oppdaget av andre UPnP-enheter på nettverket ditt.", + "LabelEnableBlastAliveMessagesHelp": "Aktiver hvis tjeneren ikke blir konsekvent oppdaget av andre UPnP-enheter på nettverket ditt.", "LabelEnableDlnaClientDiscoveryInterval": "Oppdateringsintervall for klient:", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bestem varighet i sekunder mellom to SSDP-søk.", "LabelEnableDlnaDebugLogging": "Aktiver DLNA debug-logging", "LabelEnableDlnaDebugLoggingHelp": "Dette vil lage store loggfiler og burde kun benyttes for feilsøking.", "LabelEnableDlnaPlayTo": "Aktiver \"Avspill med\" DLNA-funksjon", "LabelEnableDlnaPlayToHelp": "Jellyfin kan oppdage enheter i nettverket ditt og tilby muligheten å fjernstyre dem.", - "LabelEnableDlnaServer": "Aktiver DLNA-server", + "LabelEnableDlnaServer": "Aktiver DLNA-tjener", "LabelEnableDlnaServerHelp": "Tillater UPnP-enheter på nettverket ditt å bla gjennom og spille av innhold.", "LabelEnableRealtimeMonitor": "Aktiver sanntidsovervåkning", "LabelEnableRealtimeMonitorHelp": "Filendringer blir behandlet umiddelbart på støttede filsystemer.", @@ -407,7 +407,7 @@ "LabelFinish": "Fullfør", "LabelForgotPasswordUsernameHelp": "Skriv inn brukernavnet ditt, dersom du husker det.", "LabelFriendlyName": "Egendefinert navn:", - "LabelServerNameHelp": "Dette navnet vil bli brukt for å identifisere serveren. Standardverdien er serverens vertsnavn.", + "LabelServerNameHelp": "Dette navnet vil bli brukt for å identifisere tjeneren. Standardverdien er tjenerens vertsnavn.", "LabelGroupMoviesIntoCollections": "Gruppér filmer i samlinger", "LabelGroupMoviesIntoCollectionsHelp": "Ved valg av filmlistevisning, vil samlinger bli vist som ett element med grupperte filmer.", "LabelH264Crf": "CRF-verdi for H.264-koding:", @@ -416,7 +416,7 @@ "LabelHardwareAccelerationTypeHelp": "Maskinvareakselerasjon krever ytterligere konfigurasjon.", "LabelHomeScreenSectionValue": "Hjemskjermseksjon {0}:", "LabelHttpsPort": "Lokal HTTPS-port:", - "LabelHttpsPortHelp": "TCP-portnummeret for HTTPS-serveren.", + "LabelHttpsPortHelp": "TCP-portnummeret for HTTPS-tjeneren.", "LabelIconMaxHeight": "Makshøyde for ikon:", "LabelIconMaxWidth": "Maksbredde for ikon:", "LabelIdentificationFieldHelp": "Et regex-uttrykk eller en deltekst (skiller ikke mellom store og små bokstaver).", @@ -432,13 +432,13 @@ "LabelKodiMetadataEnableExtraThumbs": "Kopier extrafanart til extrathumbs-feltet", "LabelKodiMetadataEnableExtraThumbsHelp": "Når bilder lastes ned kan de bli lagret i både extrafanart og extrathumbs for best mulig kompatibilitet med Kodi-drakter.", "LabelKodiMetadataEnablePathSubstitution": "Aktiver erstatning av filbaner", - "LabelKodiMetadataEnablePathSubstitutionHelp": "Aktiverer erstatning av filbaner for bilder ved hjelp av serverens innstillinger for erstatning av filbaner.", - "LabelKodiMetadataSaveImagePaths": "Lagre filbaner for bilder i nfo-filer", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Aktiver erstatning av filbaner for bilder ved hjelp av tjenerens innstillinger for erstatning av filbaner.", + "LabelKodiMetadataSaveImagePaths": "Lagre filbaner for bilder i NFO-filer", "LabelKodiMetadataSaveImagePathsHelp": "Dette anbefales hvis du har filnavn på bilder som ikke følger Kodis retningslinjer.", "LabelLanguage": "Språk:", "LabelLineup": "Oppstilling:", "LabelLocalHttpServerPortNumber": "Lokal HTTP-port:", - "LabelLocalHttpServerPortNumberHelp": "TCP-portnummeret for HTTP-serveren.", + "LabelLocalHttpServerPortNumberHelp": "TCP-portnummeret for HTTP-tjeneren.", "LabelLockItemToPreventChanges": "Lås dette elementet for å hindre fremtidige endringer", "LabelLoginDisclaimer": "Ansvarsfraskrivelse ved innlogging:", "LabelLoginDisclaimerHelp": "En melding som vises på bunnen av innloggingssiden.", @@ -473,7 +473,7 @@ "LabelMonitorUsers": "Overvåk aktivitet fra:", "LabelMovieCategories": "Filmkategorier:", "LabelMoviePrefix": "Filmprefiks:", - "LabelMoviePrefixHelp": "Hvis et prefiks benyttes i filmtitler, skriv det inn her slik at serveren kan håndtere det på riktig måte.", + "LabelMoviePrefixHelp": "Hvis et prefiks benyttes i filmtitler, skriv det inn her slik at tjeneren kan håndtere det på riktig måte.", "LabelMovieRecordingPath": "Filbane for filmopptak:", "LabelMusicStreamingTranscodingBitrate": "Bithastighet for omkoding av musikk:", "LabelMusicStreamingTranscodingBitrateHelp": "Spesifiser høyeste tillatte bithastighet ved musikkstrømming.", @@ -505,12 +505,12 @@ "LabelPostProcessorArguments": "Kommandolinjeargumenter for etterbehandling:", "LabelPostProcessorArgumentsHelp": "Bruk {path} som filbanen til opptaksfilen.", "LabelPreferredDisplayLanguage": "Foretrukket visningsspråk:", - "LabelProfileAudioCodecs": "Lydkodeker:", + "LabelProfileAudioCodecs": "Lydformat:", "LabelProfileCodecs": "Kodeker:", "LabelProfileCodecsHelp": "Separert med komma. Dette feltet kan forbli tomt for å gjelde alle kodeker.", - "LabelProfileContainer": "Kontainer:", - "LabelProfileContainersHelp": "Separert med komma. Dette feltet kan forbli tomt for å gjelde alle kontainere.", - "LabelProfileVideoCodecs": "Videokodeker:", + "LabelProfileContainer": "Mediabeholder:", + "LabelProfileContainersHelp": "Separert med komma. Dette feltet kan forbli tomt for å gjelde alle mediabeholdere.", + "LabelProfileVideoCodecs": "Videoformat:", "LabelProtocol": "Protokoll:", "LabelProtocolInfo": "Protokoll info:", "LabelProtocolInfoHelp": "Verdien som blir brukt som respons til GetProtocolInfo-forespørsler fra enheten.", @@ -520,7 +520,7 @@ "LabelPublicHttpsPortHelp": "Den eksterne porten som kobles til den lokale HTTPS-porten.", "LabelRecord": "Opptak:", "LabelRecordingPath": "Standard plassering for opptak:", - "LabelRecordingPathHelp": "Angi et egendefinert sted å lagre opptak. Dersom du lar feltet stå tomt vil serverens datamappe bli brukt.", + "LabelRecordingPathHelp": "Angi et egendefinert sted å lagre opptak. Dersom du lar feltet stå tomt vil tjenerens datamappe bli brukt.", "LabelRefreshMode": "Oppdateringsmodus:", "LabelReleaseDate": "Utgivelsesdato:", "LabelRemoteClientBitrateLimit": "Maksimal bithastighet for strømming til Internett (Mbps):", @@ -529,7 +529,7 @@ "LabelSaveLocalMetadataHelp": "Lagring av omslagsbilder og metadata direkte i mediemapper vil legge dem på et sted hvor de lett kan endres på.", "LabelScheduledTaskLastRan": "Sist kjørt {0}, tok {1}.", "LabelSeasonNumber": "Sesong nummer:", - "LabelSelectFolderGroups": "Gruppér innhold i følgende mapper automatisk til visninger som filmer, musikk og TV:", + "LabelSelectFolderGroups": "Gruppér innhold i følgende mapper automatisk til visninger som \"Filmer\", \"Musikk\" og \"TV\":", "LabelSelectFolderGroupsHelp": "Mapper som ikke er merket vil kun bli vist i sin egen visning.", "LabelSelectUsers": "Velg brukere:", "LabelSelectVersionToInstall": "Velg versjon å installere:", @@ -537,13 +537,13 @@ "LabelSerialNumber": "Serienummer:", "LabelSeriesRecordingPath": "Plassering for serieopptak:", "LabelServerHost": "Vertsnavn:", - "LabelServerHostHelp": "192.168.1.100:8096 eller https://dinserver.no", + "LabelServerHostHelp": "192.168.1.100:8096 eller https://dintjener.no", "LabelSkipIfAudioTrackPresent": "Hopp over dersom standard lydspor matcher nedlastingsspråket", "LabelSkipIfAudioTrackPresentHelp": "Fjern merkingen for å sikre at alle videoer har undertekster, uavhengig av lydspråk.", "LabelSkipIfGraphicalSubsPresent": "Hopp over dersom videoen allerede inneholder integrerte undertekster", "LabelSkipIfGraphicalSubsPresentHelp": "Hvis du beholder tekstversjoner av underteksting vil det føre til mer effektiv utlevering og redusere sannsynligheten for at videoer må omkodes.", "LabelSonyAggregationFlags": "Sony-aggregeringsflagg:", - "LabelSonyAggregationFlagsHelp": "Bestemmer innholdet i aggregationFlags-elementet i urn:schemas-sonycom:av-domenet.", + "LabelSonyAggregationFlagsHelp": "Bestem innholdet i 'aggregationFlags'-elementet i 'urn:schemas-sonycom:av'-domenet.", "LabelSortTitle": "Sorteringstittel:", "LabelSource": "Kilde:", "LabelSportsCategories": "Sportskategorier:", @@ -559,7 +559,7 @@ "LabelTimeLimitHours": "Tidsbegrensning (timer):", "LabelTitle": "Tittel:", "LabelTrackNumber": "Spornummer:", - "LabelTranscodingTempPathHelp": "Spesifiser en egen filbane for omkodede filer som skal sendes til klienter. La feltet stå tomt for å bruke serverens standardinnstilling.", + "LabelTranscodingTempPathHelp": "Spesifiser en egen filbane for omkodede filer som skal sendes til klienter. La feltet stå tomt for å bruke tjenerens 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.", "LabelTunerIpAddress": "IP-adresse til tuner:", @@ -570,14 +570,14 @@ "LabelUser": "Bruker:", "LabelUserLibrary": "Brukerbibliotek:", "LabelUserLibraryHelp": "Velg hvilket brukerbibliotek som skal vises til enheten. La det stå tomt for å bruke standardinnstillingen.", - "LabelUserRemoteClientBitrateLimitHelp": "Overstyrer standardverdien som er satt i avspillingsinnstillinger på serveren.", + "LabelUserRemoteClientBitrateLimitHelp": "Overstyr standardverdien som er satt i tjenerens instillinger, se Dashbord > Avspilling > Strømming.", "LabelUsername": "Brukernavn:", - "LabelVaapiDevice": "VA API-enhet:", + "LabelVaapiDevice": "VA-API-enhet:", "LabelVaapiDeviceHelp": "Dette er enheten som brukes for maskinvareakselerasjon.", "LabelValue": "Verdi:", "LabelVersionInstalled": "{0} installert", - "LabelXDlnaCapHelp": "Bestemmer innholdet i X_DLNACAP-elementet i urn:schemas-dlna-org:device-1-0-domenet.", - "LabelXDlnaDocHelp": "Bestemmer innholdet i X_DLNADOC-elementet i urn:schemas-dlna-org:device-1-0-domenet.", + "LabelXDlnaCapHelp": "Bestem innholdet i 'X_DLNACAP'-elementet i 'urn:schemas-dlna-org:device-1-0'-domenet.", + "LabelXDlnaDocHelp": "Bestem innholdet i 'X_DLNADOC'-elementet i 'urn:schemas-dlna-org:device-1-0'-domenet.", "LabelYoureDone": "Du er ferdig!", "LabelZipCode": "Postnummer:", "LabelffmpegPath": "Filbane til FFmpeg:", @@ -596,7 +596,7 @@ "MediaInfoBitDepth": "Bitdybde", "MediaInfoChannels": "Kanaler", "MediaInfoCodec": "Kodek", - "MediaInfoContainer": "Kontainer", + "MediaInfoContainer": "Mediabeholder", "MediaInfoDefault": "Standard", "MediaInfoExternal": "Ekstern", "MediaInfoForced": "Tvungen", @@ -619,17 +619,17 @@ "MessageConfirmRecordingCancellation": "Avbryt opptak?", "MessageConfirmRemoveMediaLocation": "Er du sikker på at du vil slette denne plasseringen?", "MessageConfirmRestart": "Er du sikker på at du vil starte Jellyfin på nytt?", - "MessageConfirmRevokeApiKey": "Er du sikker på at du vil tilbakekalle denne API-nøkkelen? Applikasjonens tilkobling til denne serveren vil bli avbrutt umiddelbart.", - "MessageConfirmShutdown": "Er du sikker på at du vil avslutte serveren?", + "MessageConfirmRevokeApiKey": "Er du sikker på at du vil tilbakekalle denne API-nøkkelen? Applikasjonens tilkobling til denne tjeneren vil bli avbrutt umiddelbart.", + "MessageConfirmShutdown": "Er du sikker på at du vil avslutte tjeneren?", "MessageContactAdminToResetPassword": "Vennligst kontakt systemadministratoren for hjelp til å tilbakestille passordet ditt.", "MessageCreateAccountAt": "Opprett en konto hos {0}", "MessageDeleteTaskTrigger": "Er du sikker på at du vil slette denne oppgaveutløseren?", - "MessageDirectoryPickerBSDInstruction": "På BSD-systemer må du kanskje endre lagringsinnstillinger i FreeNAS Jail slik at Jellyfin har tilgang til mediene dine.", + "MessageDirectoryPickerBSDInstruction": "På BSD-systemer må du kanskje endre lagringsinnstillinger i 'FreeNAS Jail' slik at Jellyfin har tilgang til mediene dine.", "MessageDirectoryPickerLinuxInstruction": "På Linux-systemer med Arch Linux, CentOS, Debian, Fedora, openSUSE eller Ubuntu må du minimum gi tjenestebrukeren lesetilgang til lagringsplassene dine.", "MessageDownloadQueued": "Nedlasting lagt i kø.", "MessageEnablingOptionLongerScans": "Aktivering av dette alternativet kan føre til at skanning av biblioteket tar betydelig lenger tid.", "MessageFileReadError": "En feil oppstod når filen skulle leses. Vennligst prøv igjen.", - "MessageForgotPasswordFileCreated": "Følgende fil er opprettet på serveren og inneholder instruksjoner om hvordan du kan fortsette:", + "MessageForgotPasswordFileCreated": "Følgende fil er opprettet på tjeneren og inneholder instruksjoner om hvordan du kan fortsette:", "MessageForgotPasswordInNetworkRequired": "Vennligst prøv igjen fra hjemmenettverket ditt for å starte prosessen med å gjenopprette passordet ditt.", "MessageInvalidForgotPasswordPin": "Ugyldig eller utgått PIN kode angitt. Vennligst prøv igjen.", "MessageInvalidUser": "Ugyldig brukernavn eller passord. Vennligst prøv igjen.", @@ -642,18 +642,18 @@ "MessageNoTrailersFound": "Installer trailer-tilleggskanalen for å forbedre filmopplevelsen ved å legge til et bibliotek med trailere fra Internett.", "MessageNothingHere": "Ingenting her.", "MessagePasswordResetForUsers": "Følgende brukere har fått passordet sitt tilbakestilt. De kan nå logge inn med Enkel PIN-kode som ble brukt til å utføre tilbakestillingen.", - "MessagePlayAccessRestricted": "Avspilling av dette innholdet er for tiden begrenset. Ta kontakt med serverens administrator for mer informasjon.", + "MessagePlayAccessRestricted": "Avspilling av dette innholdet er for tiden begrenset. Ta kontakt med tjenerens administrator for mer informasjon.", "MessagePleaseEnsureInternetMetadata": "Vennligst sørg for at nedlasting av metadata fra internett er slått på.", "MessagePleaseWait": "Vennligst vent. Dette kan ta noe tid.", - "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.", + "MessagePluginConfigurationRequiresLocalAccess": "Logg inn direkte på din lokale tjener 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å tjeneren din, som lengre skanning av bibliotek, ekstra bakgrunnsbehandling og redusert systemstabilitet.", "MessageReenableUser": "Se under for å reaktivere", "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.", + "MessageUnableToConnectToServer": "Vi klarte ikke å koble til den valgte tjeneren 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.", "MessageYouHaveVersionInstalled": "Du har for øyeblikket versjon {0} installert.", "MetadataManager": "Metadatabehandler", - "MetadataSettingChangeHelp": "Endring av metadatainnstillinger vil gjelde nytt innhold lagt til fra nå av. For å oppdatere eksisterende innhold, åpne detaljer-menyen og klikk på oppdateringsknappen, eller kjør masseoppdatering ved hjelp av metadatabehandleren.", + "MetadataSettingChangeHelp": "Endring av metadatainnstillinger vil gjelde nytt innhold lagt til fra nå av. For å oppdatere eksisterende innhold, åpne detaljer-menyen og klikk på 'Oppdater'-knappen, eller kjør masseoppdatering ved hjelp av 'Metadatabehandler'.", "MinutesAfter": "minutter etter", "MinutesBefore": "minutter før", "Monday": "Mandag", @@ -692,7 +692,7 @@ "OptionAllowRemoteControlOthers": "Tillat fjernstyring av andre brukere", "OptionAllowRemoteSharedDevices": "Tillat fjernstyring av delte enheter", "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktes som delte inntil en bruker begynner å styre dem.", - "OptionAllowUserToManageServer": "Tillatt denne brukeren å administrere serveren", + "OptionAllowUserToManageServer": "Tillatt at denne brukeren administrerer tjeneren", "OptionAllowVideoPlaybackRemuxing": "Tillat avspilling av video som krever konvertering uten omkoding", "OptionAllowVideoPlaybackTranscoding": "Tillat filmavspilling som krever omkoding", "OptionAutomaticallyGroupSeries": "Slå sammen serier som er spredt over flere mapper automatisk", @@ -706,21 +706,21 @@ "OptionDateAddedImportTime": "Bruk datoen som samsvarer med skanningen inn i biblioteket", "OptionDatePlayed": "Dato avspilt", "OptionDisableUser": "Deaktiver denne brukeren", - "OptionDisableUserHelp": "Serveren vil ikke godta noen tilkoblinger fra denne brukeren. Eksisterende tilkoblinger vil avsluttes umiddelbart.", + "OptionDisableUserHelp": "Tjeneren vil ikke godta noen tilkoblinger fra denne brukeren. Eksisterende tilkoblinger vil avsluttes umiddelbart.", "OptionDislikes": "Misliker", "OptionDisplayFolderView": "Vis en mappevisning for å vise enkle mediemapper", "OptionDisplayFolderViewHelp": "Vis mapper ved siden av andre mediebibliotek. Dette kan være nyttig hvis du vil ha en enkel mappevisning.", "OptionDownloadImagesInAdvance": "Last ned bilder på forhånd", "OptionDvd": "DVD", - "OptionEmbedSubtitles": "Legg inn i kontainer", + "OptionEmbedSubtitles": "Legg inn i mediabeholder", "OptionEnableAccessFromAllDevices": "Gi tilgang fra alle enheter", "OptionEnableAccessToAllChannels": "Gi tilgang til alle kanaler", "OptionEnableAccessToAllLibraries": "Gi tilgang til alle bibliotek", "OptionEnableExternalContentInSuggestions": "Aktiver eksternt innhold i forslag", "OptionEnableExternalContentInSuggestionsHelp": "Tillat at Internett-trailere og programmer på direkte-TV inkluderes i foreslått innhold.", "OptionEnableForAllTuners": "Aktiver for alle mottakerenheter", - "OptionEnableM2tsMode": "Aktiver M2ts-modus", - "OptionEnableM2tsModeHelp": "Aktiver m2ts-modus for koding til mpegts.", + "OptionEnableM2tsMode": "Aktiver M2TS-modus", + "OptionEnableM2tsModeHelp": "Aktiver M2TS-modus for koding til MPEG-TS.", "OptionEquals": "Lik", "OptionEstimateContentLength": "Estimer innholdslengde ved omkoding", "OptionEveryday": "Hver dag", @@ -741,19 +741,19 @@ "OptionOnInterval": "Per intervall", "OptionParentalRating": "Aldersgrense", "OptionPlainStorageFolders": "Vis alle mapper som enkle lagringsmapper", - "OptionPlainStorageFoldersHelp": "Alle mapper representeres i DIDL som \"object.container.storageFolder\" istedet for en mer spesifikk type, som \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Alle mapper representeres i DIDL som 'object.container.storageFolder' istedet for en mer spesifikk type, som 'object.container.person.musicArtist'.", "OptionPlainVideoItems": "Vis alle videoer som enkle videoelementer", - "OptionPlainVideoItemsHelp": "Alle videoer representerer i DIDL som \"object.item.videoItem\" i stedet for en mer bestemt type, for eksempel \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "Alle videoer representeres i DIDL som 'object.item.videoItem' i stedet for en mer bestemt type, for eksempel 'object.item.videoItem.movie'.", "OptionPlayCount": "Antall avspillinger", "OptionPremiereDate": "Premieredato", "OptionReleaseDate": "Utgivelsesdato", - "OptionReportByteRangeSeekingWhenTranscoding": "Rapporter at serveren støtter byte-søking ved omkoding", + "OptionReportByteRangeSeekingWhenTranscoding": "Rapporter at tjeneren støtter byte-søking ved omkoding", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Dette kreves for noen enheter som ikke tidssøker særlig bra.", - "OptionRequirePerfectSubtitleMatch": "Last kun ned undertekster som er en perfekt match for mine filer", + "OptionRequirePerfectSubtitleMatch": "Last kun ned undertekster som er en perfekt match for videofiler", "OptionRequirePerfectSubtitleMatchHelp": "Å kreve en perfekt match vil filtrere bort undertekster slik at kun de som har blitt testet og verifisert mot nøyaktig samme video-fil gjenstår. Dersom du deaktiverer innstillingen øker sannsynligheten for at undertekster lastes ned, men sjansen øker også for at feilsynkronisert eller feilaktig undertekst lastes ned.", "OptionResumable": "Kan gjenopptas", "OptionSaveMetadataAsHidden": "Lagre metadata og bilder som skjulte filer", - "OptionSaveMetadataAsHiddenHelp": "Endring av denne innstillingen vil gjelde ny metadata som lagres fra nå av. Eksisterende metadata vil bli oppdatert neste gang de lagres av serveren.", + "OptionSaveMetadataAsHiddenHelp": "Endring av denne innstillingen vil gjelde ny metadata som lagres fra nå av. Eksisterende metadata vil bli oppdatert neste gang de lagres av tjeneren.", "OptionSpecialEpisode": "Spesialepisoder", "OptionSubstring": "Deltekst", "OptionTrackName": "Låtnavn", @@ -763,7 +763,7 @@ "OptionWeekdays": "Ukedager", "OptionWeekends": "Helger", "OptionWeekly": "Ukentlig", - "OriginalAirDateValue": "Original utgivelsedato: {0}", + "OriginalAirDateValue": "Opprinnelig utgivelsedato: {0}", "Overview": "Oversikt", "PackageInstallCancelled": "Installasjon av {0} (versjon {1}) avbrutt.", "PackageInstallCompleted": "Installasjon av {0} (versjon {1}) fullført.", @@ -789,9 +789,9 @@ "PleaseEnterNameOrId": "Vennligst skriv et navn eller en ekstern ID.", "PleaseRestartServerName": "Vennligst start Jellyfin på nytt på {0}.", "PleaseSelectTwoItems": "Vennligst velg minst to elementer.", - "MessagePluginInstalled": "Programtillegget ble installert. Serveren må startes på nytt for at endringene skal tre i kraft.", + "MessagePluginInstalled": "Programtillegget ble installert. Tjeneren må startes på nytt for at endringene skal tre i kraft.", "PreferEmbeddedTitlesOverFileNames": "Foretrekk integrerte titler fremfor filnavn", - "PreferEmbeddedTitlesOverFileNamesHelp": "Dette avgjør standard visningstittel når det ikke er noen metadata eller lokale metadata tilgjengelige.", + "PreferEmbeddedTitlesOverFileNamesHelp": "Bestem standard visningstittel når det ikke er noen metadata tilgjengelig lokalt eller fra internet.", "Premieres": "Premierer", "Producer": "Produsent", "ProductionLocations": "Produksjonslokasjoner", @@ -844,10 +844,10 @@ "SeriesDisplayOrderHelp": "Sorter episoder etter sendt dato, DVD-rekkefølge eller absolutt nummerering.", "SeriesRecordingScheduled": "Serieopptak planlagt.", "SeriesSettings": "Serieinnstillinger", - "ServerNameIsRestarting": "Serveren på {0} starter om.", - "ServerNameIsShuttingDown": "Serveren på {0} avsluttes.", + "ServerNameIsRestarting": "Tjeneren på {0} starter på nytt.", + "ServerNameIsShuttingDown": "Tjeneren på {0} avsluttes.", "ServerRestartNeededAfterPluginInstall": "Jellyfin trenger en omstart etter installasjon av et programtillegg.", - "ServerUpdateNeeded": "Denne serveren må oppdateres. For å laste ned siste versjon, vennligst besøk {0}", + "ServerUpdateNeeded": "Denne tjeneren må oppdateres. For å laste ned siste versjon, vennligst besøk {0}", "Settings": "Innstillinger", "SettingsSaved": "Innstillinger lagret.", "SettingsWarning": "Endring av disse verdiene kan føre til ustabilitet eller tilkoblingsfeil. Hvis du opplever problemer anbefaler vi at du endrer dem tilbake til standardverdiene.", @@ -871,14 +871,14 @@ "TabAdvanced": "Avansert", "TabCatalog": "Katalog", "TabCodecs": "Kodeker", - "TabContainers": "Kontainere", + "TabContainers": "Mediabeholdere", "TabDashboard": "Dashbord", "TabDirectPlay": "Direkteavspilling", "TabLatest": "Siste", "TabLogs": "Logger", "TabMusic": "Musikk", "TabMyPlugins": "Mine programtillegg", - "TabNetworks": "Nettverk", + "TabNetworks": "TV-Nettverk", "TabNfoSettings": "NFO-innstillinger", "TabNotifications": "Varslinger", "TabOther": "Annet", @@ -904,10 +904,10 @@ "Up": "Opp", "UserProfilesIntro": "Jellyfin har støtte for brukerprofiler med finjusterbare innstillinger, avspillingsstatus og foreldrekontroll.", "ValueAlbumCount": "{0} album", - "ValueAudioCodec": "Lydkodek: {0}", + "ValueAudioCodec": "Lydformat: {0}", "ValueCodec": "Kodek: {0}", "ValueConditions": "Betingelser: {0}", - "ValueContainer": "Kontainer: {0}", + "ValueContainer": "Mediabeholder: {0}", "ValueDiscNumber": "Plate {0}", "ValueEpisodeCount": "{0} episoder", "ValueMinutes": "{0} minutter", @@ -922,7 +922,7 @@ "ValueSpecialEpisodeName": "Spesialepisode - {0}", "ValueTimeLimitMultiHour": "Tidsgrense: {0} timer", "ValueTimeLimitSingleHour": "Tidsgrense: 1 time", - "ValueVideoCodec": "Videokodek: {0}", + "ValueVideoCodec": "Videoformat: {0}", "ViewAlbum": "Vis album", "ViewPlaybackInfo": "Vis avspillingsinformasjon", "Watched": "Sett", @@ -966,12 +966,12 @@ "AlwaysPlaySubtitlesHelp": "Undertekster som matcher foretrukket språk vil bli tatt i bruk uansett språk på lydspor.", "AlwaysPlaySubtitles": "Bruk alltid", "AllowedRemoteAddressesHelp": "Kommaseparert liste over IP-adresser eller IP/nettverksmaske for nettverk som er godkjent for eksterne tilkoblinger. Dersom feltet står tomt er alle adresser tillatt.", - "AllowOnTheFlySubtitleExtractionHelp": "Integrerte undertekster kan hentes ut fra videoer og bli levert til klienter i klartekst for å unngå omkoding av video. På noen systemer kan dette ta lang tid og føre til opphold i avspillingen samtidig som prosessen pågår. Deaktiver innstillingen for å brenne inn underteksten i videoen ved hjelp av omkoding når undertekstformatet ikke er støttet av klienten.", + "AllowOnTheFlySubtitleExtractionHelp": "Integrerte undertekster kan hentes ut fra videoer og bli levert til klienter i klartekst for å unngå omkoding av video. På noen systemer kan dette ta lang tid og føre til opphold i avspillingen samtidig som prosessen pågår. Deaktiver innstillingen for å brenne inn underteksten i videoen ved hjelp av omkoding når undertekstformatet ikke støttes av klienten.", "AllowOnTheFlySubtitleExtraction": "Tillat at undertekster hentes ut fortløpende", "AllLanguages": "Alle språk", "AllComplexFormats": "Alle avanserte formater (ASS, SSA, VobSub, PGS, SUB, IDX, …)", "AccessRestrictedTryAgainLater": "Tilgang er for øyeblikket begrenset. Vennligst prøv igjen senere.", - "BurnSubtitlesHelp": "Angir om serveren skal brenne inn undertekster imens videoer konverteres. Ytelsen på serveren vil forbedres dersom tekstingen ikke brennes inn. Velg Automatisk for å brenne inn bildebaserte formater (VobSub, PGS, SUB, IDX, osv.) og enkelte ASS eller SSA-undertekster.", + "BurnSubtitlesHelp": "Angir om tjeneren skal brenne inn undertekster imens videoer konverteres. Ytelsen på serveren vil forbedres dersom tekstingen ikke brennes inn. Velg Automatisk for å brenne inn bildebaserte formater (VobSub, PGS, SUB, IDX, osv.) og enkelte ASS eller SSA-undertekster.", "General": "Generelt", "ChangingMetadataImageSettingsNewContent": "Endringer gjort i innstillinger for metadata eller omslagsbilder vil kun gjelde nytt innhold i biblioteket ditt. For å endre eksisterende innhold, må du oppdatere dets metadata manuelt.", "DefaultSubtitlesHelp": "Undertekster lastes inn basert på flaggene \"standard\" og \"tvungen\" i videoens integrerte metadata. Språkpreferanser tas høyde for dersom flere valg er tilgjengelig.", @@ -987,16 +987,16 @@ "LabelPlayMethod": "Avspillingsmetode:", "LabelTranscodes": "Omkodede filer:", "MediaInfoLayout": "Oppsett", - "LabelRemoteClientBitrateLimitHelp": "En valgfri begrensning på bithastighet per strøm for alle enheter utenfor hjemmenettverket. Dette er nyttig for å hindre enheter fra å be om en høyere bithastighet enn internettilkoblingen din kan håndtere. Dette kan føre til økt CPU-bruk på serveren for å kunne omkode videoer fortløpende til en lavere bithastighet.", + "LabelRemoteClientBitrateLimitHelp": "En valgfri begrensning på bithastighet per strøm for alle enheter utenfor hjemmenettverket. Dette er nyttig for å hindre enheter fra å be om en høyere bithastighet enn internettilkoblingen din kan håndtere. Dette kan føre til økt CPU-bruk på tjeneren for å kunne omkode videoer fortløpende til en lavere bithastighet.", "MediaInfoRefFrames": "Referanserammer", "MediaIsBeingConverted": "Mediet blir konvertert til et format som er kompatibelt med enheten som spiller av mediet.", "OptionLoginAttemptsBeforeLockoutHelp": "En verdi på null betyr at standardinnstillingen på tre forsøk for vanlige brukere og fem for administratorer vil bli brukt. Funksjonen kan deaktiveres ved å sette verdien til -1.", "CopyStreamURLSuccess": "Nettadressen ble kopiert.", "LabelInternetQuality": "Internettkvalitet:", - "SubtitleAppearanceSettingsDisclaimer": "Disse innstillingene vil ikke påvirke grafiske undertekster (PGS, DVD, osv.) eller ASS/SSA-teksting som inkluderer sin egen formatering.", + "SubtitleAppearanceSettingsDisclaimer": "Følgende instillinger vil ikke påvirke de grafiske undertekstene nevnt over eller ASS/SSA-teksting som inkluderer sin egen formatering.", "TheseSettingsAffectSubtitlesOnThisDevice": "Disse innstillingene påvirker undertekster på denne enheten", "SubtitleDownloadersHelp": "Aktiver og ranger dine foretrukne kilder for undertekster i prioritert rekkefølge.", - "LabelMaxChromecastBitrate": "Strømmekvalitet for Chromecast:", + "LabelMaxChromecastBitrate": "Strømmekvalitet for Google Cast:", "LabelMaxStreamingBitrate": "Maks strømmekvalitet:", "LabelSortBy": "Sorter etter:", "LabelSortOrder": "Sorteringsrekkefølge:", @@ -1011,7 +1011,7 @@ "Filters": "Filtre", "HeaderExternalIds": "Eksterne IDer:", "HeaderFetcherSettings": "Henteinnstillinger", - "TabServer": "Server", + "TabServer": "Tjener", "TabStreaming": "Strømming", "TagsValue": "Tagger: {0}", "ThemeSongs": "Temamusikk", @@ -1051,13 +1051,13 @@ "LabelDisplayLanguage": "Visningsspråk:", "Photos": "Bilder", "Thumb": "Miniatyrbilde", - "OptionBluray": "Blu-Ray", + "OptionBluray": "BD", "HeaderAlbumArtists": "Albumartister", "MusicLibraryHelp": "Se igjennom {0}veiledningen for navngivelse av musikk{1}.", "LabelAudioBitDepth": "Bitdybde for lyd:", - "LabelAudioBitrate": "Bithastighet for lyd:", + "LabelAudioBitrate": "Bithastighet på lyd:", "LabelAudioChannels": "Lydkanaler:", - "LabelAudioCodec": "Lydkodek:", + "LabelAudioCodec": "Lydformat:", "LabelAudioSampleRate": "Samplingsfrekvens for lyd:", "OptionRegex": "Regulært uttrykk", "HeaderMedia": "Media", @@ -1066,10 +1066,10 @@ "LabelSkipBackLength": "Lengde for tilbakehopp:", "LabelSkipForwardLength": "Lengde for fremoverhopp:", "LabelTriggerType": "Utløsertype:", - "LanNetworksHelp": "Kommaseparert liste over IP-adresser eller IP/nettverksmaske for nettverk som skal regnes som lokalt nettverk når båndbreddebegrensninger skal håndheves. Hvis satt, vil alle andre IP-adresser bli regnet for å være på eksternt nettverk og vil dermed være underlagt båndbreddebegrensningene for eksterne nettverk. Hvis tomt, vil kun serverens subnettverk bli regnet for å være på det lokale nettverket.", + "LanNetworksHelp": "Kommaseparert liste over IP-adresser eller IP/nettverksmaske for nettverk som skal regnes som lokalt nettverk når båndbreddebegrensninger skal håndheves. Hvis satt, vil alle andre IP-adresser regnes som eksternt nettverk og vil dermed være underlagt båndbreddebegrensningene for eksterne nettverk. Hvis tomt, vil kun tjenerens subnettverk bli regnet for å være på det lokale nettverket.", "LearnHowYouCanContribute": "Finn ut hvordan du kan bidra.", "SeriesYearToPresent": "{0} - Nå", - "LabelBaseUrlHelp": "Legg til en egendefinert undermappe til serverens nettadresse. For eksempel: http://example.com/<baseurl>", + "LabelBaseUrlHelp": "Legg til en egendefinert undermappe til tjenerens nettadresse. For eksempel: http://example.com/<baseurl>", "LabelFont": "Skrifttype:", "LabelMatchType": "Matchtype:", "Uniform": "Jevn", @@ -1077,13 +1077,13 @@ "Disc": "Plate", "Display": "Vis", "DisplayMissingEpisodesWithinSeasons": "Vis manglende episoder i sesonger", - "DisplayMissingEpisodesWithinSeasonsHelp": "Dette må også aktiveres for TV-bibliotek i serverinnstillingene.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Dette må også aktiveres for TV-bibliotek i tjenerens instillinger.", "EditMetadata": "Endre metadata", "EnableBackdropsHelp": "Vis bakgrunnsbildene i bakgrunnen på enkelte sider i biblioteket.", "EnableExternalVideoPlayers": "Eksterne videospillere", "EnableExternalVideoPlayersHelp": "En liste over eksterne spillere vil vises når du starter videoavspilling.", "EnableNextVideoInfoOverlay": "Vis informasjon om neste video under avspilling", - "ErrorDeletingItem": "Det oppstod en feil under sletting av elementet fra serveren. Vennligst sørg for at Jellyfin har skrivetilgang til mappen og prøv igjen.", + "ErrorDeletingItem": "Det oppstod en feil under sletting av elementet fra tjeneren. Vennligst sørg for at Jellyfin har skrivetilgang til mappen og prøv igjen.", "ExtraLarge": "Ekstra stor", "FetchingData": "Henter ytterligere data", "Folders": "Mapper", @@ -1116,7 +1116,7 @@ "LabelBurnSubtitles": "Brenn inn undertekst:", "LabelCache": "Mellomlagring:", "LabelCustomCertificatePathHelp": "Filbanen til en PKCS#12-fil med et sertifikat og privatnøkkel for å aktivere TLS-støtte på et eget domene.", - "LabelDashboardTheme": "Tema for Server-dashbord:", + "LabelDashboardTheme": "Tema for tjenerens dashbord:", "LabelDefaultScreen": "Standardskjerm:", "LabelDropShadow": "Underskygge:", "LabelDynamicExternalId": "{0} ID:", @@ -1131,7 +1131,7 @@ "LabelPleaseRestart": "Endringer vil tre i kraft etter manuell omstart av webklienten.", "LabelPreferredSubtitleLanguage": "Foretrukket språk på undertekst:", "LabelReasonForTranscoding": "Begrunnelse for omkoding:", - "LabelServerName": "Servernavn:", + "LabelServerName": "Tjenernavn:", "LabelSimultaneousConnectionLimit": "Begrensing på samtidige strømmer:", "LabelSize": "Størrelse:", "LabelSpecialSeasonsDisplayName": "Visningsnavn for spesialsesong:", @@ -1144,7 +1144,7 @@ "LabelTextSize": "Tekststørrelse:", "LabelTranscodePath": "Plassering for omkodede filer:", "LabelTranscodingFramerate": "Bildefrekvens på omkoding:", - "LabelTranscodingProgress": "Fremgang for omkoding:", + "LabelTranscodingProgress": "Fremgang på omkoding:", "LabelUserLoginAttemptsBeforeLockout": "Mislykkede innloggingsforsøk før brukeren stenges ute:", "LabelVersion": "Versjon:", "DashboardVersionNumber": "Versjon: {0}", @@ -1152,10 +1152,10 @@ "DashboardOperatingSystem": "Operativsystem: {0}", "DashboardArchitecture": "Arkitektur: {0}", "LabelVideoBitrate": "Bithastighet på video:", - "LabelVideoCodec": "Videokodek:", + "LabelVideoCodec": "Videoformat:", "LabelWeb": "Web:", - "LabelXDlnaCap": "X-DLNA-begrensning:", - "LabelXDlnaDoc": "X-DLNA-doc:", + "LabelXDlnaCap": "Kapabilitets-ID for enhet:", + "LabelXDlnaDoc": "Enhetsklasse-ID:", "LabelYear": "År:", "LeaveBlankToNotSetAPassword": "Du kan la dette feltet stå blankt for å la være å bruke passord.", "List": "Liste", @@ -1167,7 +1167,7 @@ "MessageImageFileTypeAllowed": "Kun JPEG- og PNG-filer støttes.", "MessageImageTypeNotSelected": "Vennligst velg en bildetype fra menyen.", "MessageNoCollectionsAvailable": "Samlinger lar deg nyte egendefinerte grupperinger av filmer, serier og album. Klikk på '+' knappen for å begynne å opprette samlinger.", - "MessageNoServersAvailable": "Ingen servere ble funnet gjennom automatisk serversøk.", + "MessageNoServersAvailable": "Ingen tjenere ble funnet gjennom automatisk søk.", "MoreMediaInfo": "Medieinformasjon", "MusicAlbum": "Musikkalbum", "MusicArtist": "Musikkartist", @@ -1182,7 +1182,7 @@ "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionDownloadImagesInAdvanceHelp": "Som standard vil de fleste bilder kun lastes ned når de blir forespurt av en klient. Aktiver denne innstillingen for å laste ned alle bilder på forhånd når ny media oppdages. Dette kan føre til at skanning av biblioteket tar betydelig lenger tid.", "OptionIsSD": "SD", - "OptionLoginAttemptsBeforeLockout": "Bestemmer hvor mange mislykkede innloggingsførsøk som kan finne sted før brukeren blir utestengt.", + "OptionLoginAttemptsBeforeLockout": "Bestem hvor mange mislykkede innloggingsførsøk som kan finne sted før brukeren blir utestengt.", "OptionProtocolHls": "HTTP Live Strømming (HLS)", "OptionProtocolHttp": "HTTP", "PasswordResetProviderHelp": "Velg en metode for tilbakestilling av passord som skal benyttes når denne brukeren ber om å tilbakestille passordet.", @@ -1207,7 +1207,7 @@ "Sort": "Sorter", "SortByValue": "Sorter etter {0}", "StopRecording": "Stopp opptak", - "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Disse innstillingene gjelder også alle Chromecast-avspillinger startet av denne enheten.", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Disse innstillingene gjelder også alle Google Cast-avspillinger startet av denne enheten.", "SubtitleOffset": "Forskyvet underteksting", "TV": "TV", "TabNetworking": "Nettverk", @@ -1241,7 +1241,7 @@ "OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder som Direkte-TV", "NoCreatedLibraries": "Det virker som at du ikke har opprettet noen biblioteker ennå. {0}Vil du opprette et nå?{1}", "AskAdminToCreateLibrary": "Spør en administrator om å lage et bibliotek.", - "PlaybackErrorNoCompatibleStream": "Denne klienten er ikke kompatibel med mediet, og serveren sender ikke et kompatibelt medieformat.", + "PlaybackErrorNoCompatibleStream": "Denne klienten er ikke kompatibel med mediet, og tjeneren sender ikke et kompatibelt medieformat.", "AllowFfmpegThrottlingHelp": "Når en omkoding eller ompakking kommer langt nok foran den nåværende avspillingsposisjonen stoppes prosessen slik at den bruker mindre ressurser. Dette er mest nyttig når du sjeldent bytter posisjon i videoen. Slå av dette hvis du opplever problemer med avspilling.", "AllowFfmpegThrottling": "Begrens hastighet på omkoding", "Episode": "Episode", @@ -1250,14 +1250,14 @@ "Artist": "Artist", "AlbumArtist": "Albumartist", "Album": "Album", - "LabelLibraryPageSizeHelp": "Angir hvor mange elementer som vises på en bibliotekside. Velg 0 for å deaktivere oppdeling i sider.", + "LabelLibraryPageSizeHelp": "Angi hvor mange elementer som vises på en bibliotekside. Velg 0 for å deaktivere oppdeling i sider.", "LabelLibraryPageSize": "Størrelse på bibliotekside:", "LabelDeinterlaceMethod": "Metode for fjerning av linjefletting:", "DeinterlaceMethodHelp": "Velg hvilken metode som skal brukes for å fjerne linjefletting når omkoding skjer i programvaren. Når maskinvareakselerasjon er aktivert så bruker maskinvaren sin egen metode for å fjerne linjefletting.", "ButtonTogglePlaylist": "Spilleliste", "EnableBlurHashHelp": "Bilder som fortsatt lastes inn vil vises med en unik plassholder.", "EnableBlurHash": "Aktiver tåkete plassholdere for bilder", - "UnsupportedPlayback": "Jellyfin kan ikke dekryptere innhold beskyttet med DRM, men alt innhold vil bli forsøkt uansett, inkludert beskyttede titler. Noen filer kan fremstå helt svarte grunnet kryptering eller andre ikke støttede funksjoner, som interaktive titler.", + "UnsupportedPlayback": "Jellyfin kan ikke dekryptere innhold som er beskyttet med DRM, men vil alltid forsøke uansett. Dette inkludert beskyttede titler. Noen filer kan fremstå helt svarte grunnet kryptering eller andre funksjoner som ikke støttes, som interaktive titler.", "OnApplicationStartup": "Ved oppstart av applikasjonen", "EveryXHours": "Hver {0}. time", "EveryHour": "Hver time", @@ -1265,13 +1265,13 @@ "OnWakeFromSleep": "Ved oppvåkning fra hvilemodus", "WeeklyAt": "{0}er kl. {1}", "DailyAt": "Daglig kl. {0}", - "LastSeen": "Sist sett {0}", + "LastSeen": "Sist aktiv for {0}", "PersonRole": "som {0}", "ListPaging": "{0}-{1} av {2}", "WriteAccessRequired": "Jellyfin krever skrivetilgang til denne mappen. Vennligst påse at skrivetilgang er gitt og prøv igjen.", "PathNotFound": "Banen ble ikke funnet. Påse at banen er gyldig og prøv igjen.", "Yadif": "YADIF", - "SyncPlayAccessHelp": "Velg tilgangsnivået denne brukeren skal ha til SyncPlay-funksjonen. SyncPlay muliggjør synkronisert avspilling med andre enheter.", + "SyncPlayAccessHelp": "SyncPlay muliggjør synkronisert avspilling med andre enheter. Velg tilgangsnivået denne brukeren har til SyncPlay-funksjonen.", "Filter": "Filter", "New": "Ny", "ShowMore": "Vis mer", @@ -1279,7 +1279,7 @@ "Season": "Sesong", "SaveChanges": "Lagre endringer", "PreferEmbeddedEpisodeInfosOverFileNames": "Foretrekk innebygd episodeinformasjon framfor filnavn", - "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Dette bruker episodeinformasjonen fra innebygd metadata hvis tilgjengelig.", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Bruk episodeinformasjonen fra integrert metadata hvis tilgjengelig.", "Person": "Person", "Movie": "Film", "MessageSyncPlayErrorMedia": "Kunne ikke aktivere SyncPlay! Mediefeil.", @@ -1309,18 +1309,18 @@ "LabelSyncPlayPlaybackDiff": "Tidsforskjell på avspilling:", "MillisecondsUnit": "ms", "LabelSyncPlayTimeOffset": "Tidsforskyvning mot serveren:", - "LabelRequireHttpsHelp": "Hvis valgt, vil serveren automatisk omdirigere alle HTTP-forespørsler til HTTPS. Dette har ingen effekt dersom serveren ikke lytter etter HTTPS.", + "LabelRequireHttpsHelp": "Hvis valgt, vil tjeneren automatisk omdirigere alle HTTP-forespørsler til HTTPS. Dette har ingen effekt dersom tjeneren ikke lytter etter HTTPS.", "LabelRequireHttps": "Krev HTTPS", "LabelStable": "Stabil", - "LabelChromecastVersion": "Chromecast-versjon", + "LabelChromecastVersion": "Google Cast-versjon", "LabelEnableHttpsHelp": "Lytt på den valgte HTTPS-porten. Et gyldig sertifikat må også være angitt for at dette skal tre i kraft.", "LabelEnableHttps": "Aktiver HTTPS", "HeaderSyncPlayEnabled": "SyncPlay aktivert", "HeaderSyncPlaySelectGroup": "Bli med i en gruppe", - "HeaderServerAddressSettings": "Innstillinger for serveradresse", + "HeaderServerAddressSettings": "Innstillinger for tjener-adresse", "HeaderRemoteAccessSettings": "Innstillinger for fjerntilgang", "HeaderHttpsSettings": "HTTPS-innstillinger", - "HeaderDVR": "Digital opptaker", + "HeaderDVR": "Opptak", "ApiKeysCaption": "Liste over aktive API-nøkler", "EnableDetailsBannerHelp": "Viser et bildebanner øverst på detaljsiden.", "EnableDetailsBanner": "Detaljebanner", @@ -1335,12 +1335,12 @@ "EnableDecodingColorDepth10Vp9": "Aktiver 10-biters maskinvaredekoding for VP9", "EnableDecodingColorDepth10Hevc": "Aktiver 10-biters maskinvaredekoding for HEVC", "ButtonPlayer": "Spiller", - "ButtonCast": "Strøm mediet til enhet", + "ButtonCast": "Strøm til enhet", "Writers": "Forfattere", "TabRepositories": "Kilder", "MessageNoGenresAvailable": "Aktiver noen metadata-kilder for å hente sjangre fra internett.", "MessageAddRepository": "Hvis du ønsker å legge til en ny kilde klikker du på knappen ved siden av overskriften og fyller ut forespurt informasjon.", - "LabelRepositoryNameHelp": "Et egendefinert navn for å skille denne kilden fra andre som er lagt til på serveren din.", + "LabelRepositoryNameHelp": "Et egendefinert navn for å skille denne kilden fra andre som er lagt til på tjeneren din.", "ClearQueue": "Tøm køen", "ViewAlbumArtist": "Vis albumartist", "StopPlayback": "Stopp avspilling", @@ -1350,15 +1350,15 @@ "SubtitleVerticalPositionHelp": "Linjenummer hvor teksten dukker opp. Positive tall indikerer ovenfra og ned. Negative tall indikerer nedenfra og opp.", "LabelSubtitleVerticalPosition": "Vertikal posisjon:", "PreviousTrack": "Hopp til forrige", - "MessageGetInstalledPluginsError": "En feil oppstod under henting av listen over installerte tillegg.", - "MessagePluginInstallError": "En feil oppstod under installasjon av tillegget.", + "MessageGetInstalledPluginsError": "En feil oppstod ved henting av listen over installerte tillegg.", + "MessagePluginInstallError": "En feil oppstod ved installasjon av tillegget.", "ThumbCard": "Miniatyrbildekort", "SpecialFeatures": "Spesialfunksjoner", "PosterCard": "Plakatkort", "Video": "Video", "Subtitle": "Undertekst", - "SelectServer": "Velg server", - "Restart": "Restart", + "SelectServer": "Velg tjener", + "Restart": "Start på nytt", "ResetPassword": "Tilbakestill passord", "Profile": "Profil", "Poster": "Plakat", @@ -1374,15 +1374,15 @@ "LabelIconMaxResHelp": "Maksimal oppløsning av ikoner som vises via \"upnp:icon\".", "LabelCurrentStatus": "Nåværende status:", "KnownProxiesHelp": "Kommaseparert liste med IP-adresser til kjente proxyer brukt for å koble til Jellyfin-instansen din. Dette kreves for korrekt bruk av \"X-Forwarded-For\". Krever omstart etter endring.", - "EnableQuickConnect": "Aktiver hurtigtilkobling til denne serveren", + "EnableQuickConnect": "Aktiver hurtigtilkobling til denne tjeneren", "ButtonUseQuickConnect": "Bruk rask tilkobling", "ButtonActivate": "Aktiver", "Authorize": "Autoriser", "EnableAutoCast": "Sett som standard", - "QuickConnectNotActive": "Hurtigtilkobling er ikke aktivert på denne serveren", - "QuickConnectNotAvailable": "Be serveradministratoren om å aktivere hurtigtilkobling", + "QuickConnectNotActive": "Hurtigtilkobling er ikke aktivert på denne tjeneren", + "QuickConnectNotAvailable": "Be tjenerens administrator om å aktivere hurtigtilkobling", "QuickConnectInvalidCode": "Ugyldig hurtigtilkoblings-kode", - "QuickConnectDescription": "Hvis du vil logge på med hurtigtilkobling, velger du Hurtigtilkobling-knappen på enheten du logger på fra, og skriver inn koden som vises nedenfor.", + "QuickConnectDescription": "Hvis du vil logge på med hurtigtilkobling velger du 'Hurtigtilkobling'-knappen på enheten du logger på fra, og skriver inn koden som vises nedenfor.", "QuickConnectDeactivated": "Hurtigtilkobling ble deaktivert før påloggingsforespørselen kunne godkjennes", "QuickConnectAuthorizeFail": "Ukjent hurtigtilkoblings-kode", "QuickConnectAuthorizeSuccess": "Forespørsel autorisert", @@ -1404,30 +1404,30 @@ "Bwdif": "BWDIF", "UseDoubleRateDeinterlacingHelp": "Denne innstillingen bruker feltfrekvensen når du fjerner linjefletting, ofte referert til som bob deinterlacing, som dobler bildefrekvensen til videoen for å gi full bevegelse som det du ville se når du ser linjeflettet video på en TV.", "UseDoubleRateDeinterlacing": "Doble bildefrekvensen ved fjerning av linjefletting", - "LabelMaxMuxingQueueSizeHelp": "Maksimalt antall pakker som kan buffres mens de venter på at alle strømmer skal initialiseres. Prøv å øke verdien hvis du fremdeles støter på \"Too many packets buffered for output stream\" -feil i ffmpeg-logger. Den anbefalte verdien er 2048.", + "LabelMaxMuxingQueueSizeHelp": "Maksimalt antall pakker som kan buffres mens de venter på at alle strømmer skal initialiseres. Prøv å øke verdien hvis du fremdeles ser \"Too many packets buffered for output stream\" -feil i FFmpeg-logger. Den anbefalte verdien er 2048.", "LabelMaxMuxingQueueSize": "Maks køstørrelse for pakking:", "LabelTonemappingParamHelp": "Still inn algoritmen for tonekartlegging. De anbefalte og standardverdiene er NaN. La det vanligvis være tomt.", - "LabelTonemappingParam": "Tonemapping parameter:", - "LabelTonemappingPeakHelp": "Overstyr signal / nominell / referansetopp med denne verdien. Nyttig når den innebygde toppinformasjonen i metadata på skjermen ikke er pålitelig eller når tonekartlegging fra et lavere område til et høyere område. De anbefalte og standardverdiene er 100 og 0.", - "LabelTonemappingPeak": "Tonemapping topp:", - "LabelTonemappingThresholdHelp": "Tonekartingsalgoritmeparametrene finjusteres for hver scene. Og en terskel brukes til å oppdage om scenen har endret seg eller ikke. Hvis avstanden mellom gjeldende rammens gjennomsnittlige lysstyrke og det nåværende løpende gjennomsnittet overstiger en terskelverdi, vil vi beregne scenegjennomsnittet og topplysstyrken på nytt. De anbefalte og standardverdiene er 0,8 og 0,2.", - "LabelTonemappingThreshold": "Tonemapping terskel:", - "LabelTonemappingDesatHelp": "Påfør desaturering for høydepunkter som overstiger dette lysstyrken. Jo høyere parameteren er, jo mer fargeinformasjon blir bevart. Denne innstillingen hjelper til med å forhindre unaturlig utblåste farger for superhøydepunkter ved å (jevnt) bli til hvitt i stedet. Dette får bilder til å føles mer naturlige, på bekostning av å redusere informasjon om farger utenfor fartsområdet. De anbefalte og standardverdiene er 0 og 0,5.", - "LabelTonemappingDesat": "Tonemapping avvalgt:", + "LabelTonemappingParam": "Tonekartlegging-parameter:", + "LabelTonemappingPeakHelp": "Overstyr signal/nominell/referansetopp med denne verdien. Nyttig når den innebygde toppinformasjonen i metadata på skjermen ikke er pålitelig eller når tonekartlegging fra et lavere område til et høyere område. De anbefalte og standardverdiene er 100 og 0.", + "LabelTonemappingPeak": "Tonekartlegging topp:", + "LabelTonemappingThresholdHelp": "Parameterne for tonekartlegging finjusteres for hver scene. En terskel brukes til å oppdage om scenen har endret seg eller ikke. Hvis avstanden mellom gjeldende bildes gjennomsnittlige lysstyrke og det nåværende løpende gjennomsnittet overstiger en terskelverdi, vil scenens gjennomsnitt og topp lysstyrke beregnes på nytt. De anbefalte og standardverdiene er 0,8 og 0,2.", + "LabelTonemappingThreshold": "Tonekartlegging terskel:", + "LabelTonemappingDesatHelp": "Reduser metningen for lyse partier som overstiger denne lysstyrken. Jo høyere parameteren er, jo mere fargeinformasjon blir bevart. Denne innstillingen hjelper til med å forhindre unaturlig mettede farger for lyse partier i bildet ved å (gradvis) gå over mot hvitt i stedet. Dette får bilder til å føles mer naturlige, på bekostning av å redusere informasjon om farger utenfor fargeområdet. De anbefalte og standardverdiene er 0 og 0,5.", + "LabelTonemappingDesat": "Tonekartlegging avmetning:", "TonemappingRangeHelp": "Velg ut-fargeområdet. Auto er det samme som inn-området.", - "LabelTonemappingRange": "Tonemapping-område:", + "LabelTonemappingRange": "Tonekartlegging-område:", "TonemappingAlgorithmHelp": "Tonekartlegging kan finjusteres. Hvis du ikke er kjent med disse alternativene er det bare å beholde standardinnstillingen. Anbefalt verdi er BT.2390.", - "LabelTonemappingAlgorithm": "Velg algoritmen for tonekartlegging som skal brukes:", - "AllowTonemappingHelp": "Tonekartlegging kan forvandle det dynamiske området til en video fra HDR til SDR samtidig som bildedetaljer og farger opprettholdes, noe som er veldig viktig informasjon for å representere den originale scenen. Fungerer for øyeblikket bare med HDR10 eller HLG videoer. Dette krever korresponderende OpenCL eller CUDA runtime.", + "LabelTonemappingAlgorithm": "Velg algoritmen som skal brukes for tonekartlegging:", + "AllowTonemappingHelp": "Tonekartlegging kan forvandle det dynamiske området på en video fra HDR til SDR samtidig som bildedetaljer og farger opprettholdes, noe som er veldig viktig informasjon for å representere den opprinnelige scenen. Fungerer for øyeblikket bare med HDR10 eller HLG videoer. Dette krever korresponderende OpenCL eller CUDA runtime.", "OptionMaxActiveSessionsHelp": "En verdi på 0 skrur av denne funksjonen.", - "OptionMaxActiveSessions": "Setter maksimalt antall tilgjengelige brukerøkter.", + "OptionMaxActiveSessions": "Sett maksimalt antall tilgjengelige brukerøkter.", "LabelUserMaxActiveSessions": "Maksimalt antall samtidige brukerøkter:", "DeleteAll": "Slett alle", "AllowHevcEncoding": "Tillat koding i HEVC-format", "PreferFmp4HlsContainerHelp": "Foretrekk bruk av fMP4 som standard mediabeholder for HLS, noe som gjør det mulig å direktestrømme HEVC-innhold til støttede enheter.", - "PreferFmp4HlsContainer": "Foretrekk fMP4-HLS Mediabeholder", + "PreferFmp4HlsContainer": "Foretrekk fMP4-HLS mediabeholder", "LabelSyncPlayInfo": "SyncPlay-informasjon", - "LabelOriginalMediaInfo": "Original medieinformasjon", + "LabelOriginalMediaInfo": "Opprinnelig medieinformasjon", "LabelRemuxingInfo": "Ompakking-info", "LabelDirectStreamingInfo": "Direkteavspilling-info", "LabelTranscodingInfo": "Omkoding-info", @@ -1435,7 +1435,7 @@ "LabelAudioInfo": "Lydinformasjon", "LabelPlaybackInfo": "Avspillingsinformasjon", "RemuxHelp2": "Ompakking bruker svært lite prosessorkraft og fører ikke til tap av kvalitet på mediet.", - "RemuxHelp1": "Mediet er i en inkompatibel filbeholder (MKV, AVI, WMV osv.), men både videostrømmen og lydstrømmen er kompatibel med enheten. Mediet vil pakkes om på farten uten kvalitetstap før det sendes til enheten.", + "RemuxHelp1": "Mediet er i en inkompatibel mediabeholder (MKV, AVI, WMV osv.), men både videostrømmen og lydstrømmen er kompatibel med enheten. Mediet vil pakkes om fortløpende uten kvalitetstap før det sendes til enheten.", "Remuxing": "Ompakking", "AspectRatioFill": "Fyll", "AspectRatioCover": "Dekk", @@ -1461,7 +1461,7 @@ "LabelSSDPTracingFilterHelp": "Valgfri IP-adresse der den loggede SSDP-trafikken skal filtreres.", "LabelSSDPTracingFilter": "SSDP-filter:", "LabelPublishedServerUriHelp": "Overstyr URI som brukes av Jellyfin, basert på grensesnittet eller klientens IP-adresse.", - "LabelPublishedServerUri": "Publiserte server-URIer:", + "LabelPublishedServerUri": "Publiserte tjener-URIer:", "LabelMinAudiobookResumeHelp": "Titler antas å ikke være avspilt hvis de stoppes etter denne tiden.", "LabelMinAudiobookResume": "Minimum verdi for gjenopptakelse av lydbok i minutter:", "LabelMaxAudiobookResumeHelp": "Titler antas å være ferdig avspilt hvis de stoppes når gjenværende varighet er mindre en denne verdien.", @@ -1493,7 +1493,7 @@ "HeaderAddUpdateSubtitle": "Legg til/Oppdater undertekst", "DeleteDevicesConfirmation": "Er du sikker på at du vil slette alle enhetene? Alle andre økter logges ut. Enheter vises igjen neste gang en bruker logger på.", "MessagePlaybackError": "Det oppsto en feil under avspilling av denne filen på Google Cast-mottakeren.", - "MessageChromecastConnectionError": "Google Cast-mottakeren din kan ikke kontakte Jellyfin-serveren. Kontroller tilkoblingen, og prøv på nytt.", + "MessageChromecastConnectionError": "Google Cast-mottakeren din kan ikke kontakte Jellyfin-tjeneren. Kontroller tilkoblingen og prøv på nytt.", "YoutubeDenied": "Forespurt video kan ikke spilles i innebygde avspillere.", "YoutubeNotFound": "Fant ikke videoen.", "YoutubePlaybackError": "Forespurt video kan ikke spilles av.", @@ -1502,7 +1502,7 @@ "LabelSelectMono": "Mono", "LabelSelectAudioChannels": "Kanaler", "LabelAllowedAudioChannels": "Maksimalt antall lydkanaler tillatt", - "AllowVppTonemappingHelp": "Full Intel driverbasert tonekartlegging. Fungerer for øyeblikket bare på enkelt maskinvare med HDR10 videoer. Dette har en høyere prioritet enn en annen OpenCL implementering.", + "AllowVppTonemappingHelp": "Tonekartlegging som er fullstendig basert på Intel-drivere. Fungerer for øyeblikket bare på viss maskinvare med HDR10-videoer. Dette har en høyere prioritet enn en annen OpenCL-implementasjon.", "EnableVppTonemapping": "Aktiver VPP-tonekartlegging", "EnableEnhancedNvdecDecoder": "Aktiver forbedret NVDEC-dekoder", "Framerate": "Bildefrekvens", @@ -1514,39 +1514,39 @@ "MessageSent": "Melding sendt.", "LabelSlowResponseTime": "Tid i millisekunder før responsen regnes som treg:", "HeaderContinueReading": "Fortsett å lese", - "DisableCustomCss": "Deaktiver tilpasset CSS-kode fra server", + "DisableCustomCss": "Deaktiver tilpasset CSS-kode fra tjener", "ButtonExitApp": "Avslutt applikasjon", "Arranger": "Arrangør", "DeletedScene": "Slettet scene", "Trailer": "Trailer", - "PreferSystemNativeHwDecoder": "Foretrekk OS innebygget DXVA eller VA-API maskinvare dekodere", - "VideoProfileNotSupported": "Video kodekens profil er ikke støttet", - "VideoLevelNotSupported": "Video kodekens nivå er ikke støttet", - "VideoFramerateNotSupported": "Videoens bilderate er ikke støttet", - "VideoBitDepthNotSupported": "Videoens bit dybde er ikke støttet", - "RefFramesNotSupported": "Referanse bildesekvens er ikke støttet", - "EnableGamepadHelp": "Lytt for innputt fra tilkoblet kontroller.", + "PreferSystemNativeHwDecoder": "Foretrekk operativsystemets egne DXVA eller VA-API maskinvare-dekodere.", + "VideoProfileNotSupported": "Videoformatets profil støttes ikke", + "VideoLevelNotSupported": "Videoformatets nivå støttes ikke", + "VideoFramerateNotSupported": "Videoens bildefrekvens støttes ikke", + "VideoBitDepthNotSupported": "Videoens bitdybde støttes ikke", + "RefFramesNotSupported": "Referanse-bilder støttes ikke", + "EnableGamepadHelp": "Lytt til inndata fra tilkoblet kontroller.", "LabelEnableGamepad": "Aktiver spillkontroller", - "AudioBitDepthNotSupported": "Lydens bit dybde er ikke støttet", - "ThemeSong": "Tema låt", - "ThemeVideo": "Tema video", + "AudioBitDepthNotSupported": "Lydens bitdybde støttes ikke", + "ThemeSong": "Tema-låt", + "ThemeVideo": "Tema-video", "DirectPlayError": "En feil oppsto ved start av direkte avspilling", "UnknownAudioStreamInfo": "Lydstrømmens info er ukjent", - "UnknownVideoStreamInfo": "Videostømmens info er ukjent", - "EnableIntelLowPowerHevcHwEncoder": "Aktiver Intel Low-Power HEVC maskinvare koder", - "EnableIntelLowPowerH264HwEncoder": "Aktiver Intel Low-Power H.264 maskinvare koder", - "AudioProfileNotSupported": "Lyd kodekets profil er ikke støttet", - "VideoResolutionNotSupported": "Videoens oppløsning er ikke støttet", - "AudioChannelsNotSupported": "Antallet lydkanaler er ikke støttet", - "AudioBitrateNotSupported": "Lydens bitrate er ikke støttet", - "VideoCodecNotSupported": "Video kodeket er ikke støttet", - "SubtitleCodecNotSupported": "Undertekst kodeket er ikke støttet", - "ContainerNotSupported": "Containeren er ikke støttet", - "SecondaryAudioNotSupported": "Sekundær lydspor er ikke støttet", - "InterlacedVideoNotSupported": "Interlaced video er ikke støttet", - "AnamorphicVideoNotSupported": "Anamorfisk video er ikke støttet", - "AudioSampleRateNotSupported": "Lydens prøvefrekvens er ikke støttet", - "IntelLowPowerEncHelp": "Laveffekt koding kan forhindre unødvendig CPU-GPU-synkronisering. På Linux må de deaktiveres hvis i915 HuC-fastvaren ikke er konfigurert.", + "UnknownVideoStreamInfo": "Videostrømmens info er ukjent", + "EnableIntelLowPowerHevcHwEncoder": "Aktiver Intel Low-Power HEVC maskinvare-koder", + "EnableIntelLowPowerH264HwEncoder": "Aktiver Intel Low-Power H.264 maskinvare-koder", + "AudioProfileNotSupported": "Lydformatets profil støttes ikke", + "VideoResolutionNotSupported": "Videoens oppløsning støttes ikke", + "AudioChannelsNotSupported": "Antall lydkanaler støttes ikke", + "AudioBitrateNotSupported": "Lydens bithastighet støttes ikke", + "VideoCodecNotSupported": "Videoformatet støttes ikke", + "SubtitleCodecNotSupported": "Undertekstformatet støttes ikke", + "ContainerNotSupported": "Mediabeholderen støttes ikke", + "SecondaryAudioNotSupported": "Sekundære lydspor støttes ikke", + "InterlacedVideoNotSupported": "Flettet video støttes ikke", + "AnamorphicVideoNotSupported": "Anamorfisk video støttes ikke", + "AudioSampleRateNotSupported": "Lydens samplingsfrekvens støttes ikke", + "IntelLowPowerEncHelp": "Laveffekt-koding kan forhindre unødvendig CPU-GPU-synkronisering. På Linux må de deaktiveres hvis i915 HuC-fastvaren ikke er konfigurert.", "TypeOptionPluralVideo": "Videoer", "TypeOptionPluralMusicAlbum": "Musikk album", "TypeOptionPluralMusicArtist": "Musikk artister", @@ -1559,19 +1559,19 @@ "TypeOptionPluralEpisode": "Episoder", "Track": "Spor", "BehindTheScenes": "Bak kulissene", - "VideoBitrateNotSupported": "Videoens bitrate er ikke støttet", + "VideoBitrateNotSupported": "Videoens bithastighet støttes ikke", "AudioIsExternal": "Lydstrømmen er ekstern", "Scene": "Scene", "Interview": "Intervju", "Sample": "Prøve", - "LabelHardwareEncodingOptions": "Maskinvarekoding alternativer:", + "LabelHardwareEncodingOptions": "Alternativer for maskinvare-koding:", "SelectAll": "Merk alle", "OtherArtist": "Annen artist", - "ContainerBitrateExceedsLimit": "Videoens bitrate overgår begrensningen", + "ContainerBitrateExceedsLimit": "Videoens bithastighet overskrider grensen", "Cursive": "Kursiv", "Console": "Konsoll", "Conductor": "Dirigent", - "AudioCodecNotSupported": "Lyd kodek er ikke støttet", + "AudioCodecNotSupported": "Lydformatet støttes ikke", "AgeValue": "({0} år gammel)", "UseEpisodeImagesInNextUpHelp": "\"Neste\" og \"Fortsett å se\" seksjoner vil bruke episodebilder som miniatyrbilder i stedet for seriebilder.", "LabelMaxDaysForNextUpHelp": "Velg det maksimale antallet dager en serie skal forbli i \"Neste\"-listen uten å se den.", @@ -1596,7 +1596,7 @@ "LabelSyncPlaySettingsSpeedToSyncHelp": "Synkroniseringsmetode som består i å øke hastigheten på avspillingen. Synkroniseringskorrigering må være aktivert.", "LabelSyncPlaySettingsSpeedToSync": "Aktiver SpeedToSync", "LabelSyncPlaySettingsMinDelaySkipToSyncHelp": "Minimum avspillingsforsinkelse (i millisekunder) hvor SkipToSync prøver å korrigere avspillingsposisjonen.", - "LabelDisableCustomCss": "Deaktiver tilpasset CSS-kode for tema/merkevare levert av serveren.", + "LabelDisableCustomCss": "Deaktiver tilpasset CSS-kode for tema/merkevare levert av tjeneren.", "LabelSyncPlaySettingsMinDelaySkipToSync": "SkipToSync minimum forsinkelse:", "LabelSyncPlaySettingsSpeedToSyncDurationHelp": "Antall millisekunder brukt av SpeedToSync for å korrigere avspillingsposisjonen.", "LabelSyncPlaySettingsSpeedToSyncDuration": "SpeedToSync varighet:", @@ -1610,9 +1610,9 @@ "LabelSyncPlaySettingsExtraTimeOffset": "Ekstra tidsforskyvning:", "LabelSyncPlaySettingsDescription": "Endre SyncPlay innstillinger", "LabelSortName": "Sorteringsnavn:", - "LabelSlowResponseEnabled": "Logg et advarsel hvis serveren var treg til å svare", + "LabelSlowResponseEnabled": "Logg en advarsel hvis tjeneren er treg til å svare", "LabelOriginalName": "Originalnavn:", - "LabelLocalCustomCss": "Tilpasset CSS-kode for styling som kun gjelder for denne klienten. Det kan være lurt å deaktivere servertilpasset CSS-kode.", + "LabelLocalCustomCss": "Tilpasset CSS-kode for styling som kun gjelder for denne klienten. Det kan være lurt å deaktivere tilpasset CSS-kode på tjeneren.", "LabelHardwareEncoding": "Maskinvare koding:", "LabelAutomaticallyAddToCollection": "Legg til i samling automatisk", "LabelAutomaticallyAddToCollectionHelp": "Når minst 2 filmer har samme samlingsnavn, legges de automatisk til i samlingen.", @@ -1621,5 +1621,33 @@ "HeaderSyncPlaySettings": "SyncPlay Instillinger", "Casual": "Uformell", "ErrorPlayerNotFound": "Ingen avspiller funnet for det forespurte mediet.", - "Engineer": "Lydtekniker" + "Engineer": "Lydtekniker", + "Digital": "Digital", + "Clip": "Kortfilm", + "ButtonBackspace": "Tilbaketast", + "EnableEnhancedNvdecDecoderHelp": "Eksperimentell NVDEC-implementasjon, ikke aktiver dette valget med mindre du opplever problemer med avkoding.", + "StoryArc": "Historietråd", + "ShowParentImages": "Vis serie-bilder", + "Production": "Produksjon", + "AllowEmbeddedSubtitlesAllowTextOption": "Tillat tekst", + "AllowEmbeddedSubtitlesAllowImageOption": "Tillat bilde", + "AllowEmbeddedSubtitlesAllowNoneOption": "Tillat ingen", + "AllowEmbeddedSubtitlesAllowAllOption": "Tillat alle", + "AllowEmbeddedSubtitlesHelp": "Deaktiver undertekster som er pakket in i mediabeholder. Krever en full oppdatering av mediebibliotek.", + "AllowEmbeddedSubtitles": "Deaktiver ulike slags integrerte undertekster", + "OriginalAirDate": "Opprinnelig utgivelsesdato", + "MixedMoviesShows": "Blandede filmer og serier", + "MessageUnauthorizedUser": "Du har ikke tillatelse til å få tilgang til tjeneren for øyeblikket. Vennligst kontakt din tjeners administrator for mere informasjon.", + "Localization": "Lokalisering", + "ItemDetails": "Detaljer om element", + "HomeVideosPhotos": "Videoer og bilder for Hjem", + "GoogleCastUnsupported": "Google Cast støttes ikke", + "EnableRewatchingNextUpHelp": "Tillat vising av episoder som allerede er sett i \"Neste\"-seksjoner.", + "EnableRewatchingNextUp": "Tillat å se igjen i \"Neste\"", + "CopyFailed": "Kopiering mislyktes", + "Copy": "Kopier", + "Copied": "Kopiert", + "ButtonSpace": "Mellomrom", + "ButtonClose": "Steng", + "AddToFavorites": "Legg til i favoritter" } From 5ce72e2105a08a04a938e056a1f0c260aad4392a Mon Sep 17 00:00:00 2001 From: Nodirbek Khajiev Date: Fri, 29 Apr 2022 17:09:56 +0000 Subject: [PATCH 046/107] Translated using Weblate (Uzbek) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uz/ --- src/strings/uz.json | 216 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 215 insertions(+), 1 deletion(-) diff --git a/src/strings/uz.json b/src/strings/uz.json index 0967ef424b..65f7960dea 100644 --- a/src/strings/uz.json +++ b/src/strings/uz.json @@ -1 +1,215 @@ -{} +{ + "DropShadow": "Soyani Tushirish", + "DrmChannelsNotImported": "DRM bilan kanallar import qilinmaydi.", + "DownloadsValue": "Yuklanganlar: {0}", + "Download": "Yuklab olish", + "Down": "Pastga", + "DoNotRecord": "Yozmang", + "DisplayModeHelp": "Interfeys uchun kerakli formatlash uslubini tanlang.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Bu server konfiguratsiyasidagi TV media kutubxonalari uchun ham yoqilgan bo'lishi kerak.", + "DisplayMissingEpisodesWithinSeasons": "Fasllar ichida yetishmayotgan epizodlarni ko'rsatish", + "DisplayInOtherHomeScreenSections": "“Soʻnggi media” va “Koʻrishni davom ettirish” kabi asosiy ekran boʻlimlarida koʻrsatish", + "DisplayInMyMedia": "Asosiy ekranda ko'rsatish", + "Display": "Ko'rinish", + "Disconnect": "Ajratish", + "Disc": "Disk", + "DisablePlugin": "O'chirish", + "DisableCustomCss": "Server tomonidan taqdim etilgan maxsus CSS-ni o'chirib qo'yish", + "EnablePlugin": "Yoqish", + "DirectStreaming": "To'g'ridan-to'g'ri uzatish", + "DirectStreamHelp2": "Jonli oqim tomonidan iste'mol qilinadigan resurslar odatda audio profilga bog'liq. Faqat video oqimi yo'qotmasdan uzatiladi.", + "DirectStreamHelp1": "Video oqimi qurilma bilan mos keladi, lekin mos kelmaydigan audio formatga (DTS, Dolby TrueHD va boshqalar) yoki audio kanallar soniga ega. Qurilmaga jo'natilishdan oldin video oqimi yo'qotmasdan dinamik ravishda qayta paketlanadi. Faqat audio oqim qayta kodlanadi.", + "DirectPlayHelp": "Manba fayli ushbu mijoz bilan to'liq mos keladi va seans faylni o'zgarmagan holda qabul qiladi.", + "EnableEnhancedNvdecDecoderHelp": "NVDEC ning eksperimental amalga oshirilishi, agar dekodlashda xatolarga duch kelmasangiz, ushbu parametrni yoqmang.", + "DirectPlaying": "To'g'ridan-to'g'ri tomosha qilinyapti", + "Directors": "Rejissorlar", + "Director": "Rejissor", + "Digital": "Raqamli", + "DeviceAccessHelp": "Bu faqat noyob tarzda tan olinishi mumkin bo'lgan va brauzerga kirishga to'sqinlik qilmaydigan qurilmalar uchun amal qiladi. Foydalanuvchi qurilmasiga kirishni filtrlash yangi qurilmalar tasdiqlanmaguncha ulardan foydalanishni oldini oladi.", + "DetectingDevices": "Qurilmani aniqlash", + "Desktop": "Kompyuter", + "Descending": "Kamaytirish orqali", + "Depressed": "Tushkunlikka tushgan", + "DeleteUserConfirmation": "Bu foydalanuvchini oʻchirib tashlamoqchimisiz?", + "DeleteUser": "Foydalanuvchini oʻchirish", + "DeleteMedia": "Mediani o'chirish", + "DeleteImageConfirmation": "Haqiqatan ham bu rasmni oʻchirib tashlamoqchimisiz?", + "DeleteImage": "Rasmni o'chirish", + "DeleteDevicesConfirmation": "Haqiqatan ham barcha qurilmalarni oʻchirib tashlamoqchimisiz? Boshqa barcha seanslar o'chiriladi. Foydalanuvchi tizimga kirganida qurilmalar yana paydo bo'ladi.", + "DeleteDeviceConfirmation": "Haqiqatan ham bu qurilmani olib tashlamoqchimisiz? U keyingi safar foydalanuvchi tizimga kirganida yana paydo bo'ladi.", + "ConfirmDeleteImage": "Rasmni o'chirasizmi?", + "ConfirmDeleteItems": "Agar ma'lumotlar elementlarini olib tashlash, u fayl tizimi va media qutisiga olib tashlanadi. Albatta, davom etmoqchimisiz?", + "ConfirmDeleteItem": "Ushbu elementni o'chirsangiz, fayl tizimidan va media kutubxonasidan o'chiriladi. Albatta, davom etmoqchimisiz?", + "ConfirmDeletion": "O'chirishni tasdiqlash", + "DeleteAll": "Barchasini o'chirish", + "Delete": "O'chirish", + "DeinterlaceMethodHelp": "Kerakli tarkibni dasturiy tarzda transkodlashda foydalaniladigan taroqdan tozalash usulini tanlang. Uskunani dekombatsiya qilishni qo‘llab-quvvatlaydigan apparat tezlashuvi yoqilganda, bu sozlama o‘rniga apparatni dekombatsiya qilish qo‘llaniladi.", + "DefaultSubtitlesHelp": "Subtitrlarni yuklab olish o'rnatilgan metama'lumotlardagi \"Standart\" va \"Majburiy\" bayroqlari bilan belgilanadi. Til sozlamalari bir nechta variant mavjud bo'lganda hisobga olinadi.", + "DefaultMetadataLangaugeDescription": "Bu sizning standart sozlamalaringizdir va ular har bir media kutubxonasi uchun alohida sozlanishi mumkin.", + "Default": "Standart sifatida", + "DeathDateValue": "O'lim sanasi: {0}", + "DatePlayed": "Tomosha qilingan sana", + "DateAdded": "Qo'shilgan sana", + "Data": "Ma'lumotlar", + "DashboardVersionNumber": "Versiya: {0}", + "DashboardServerName": "Server: {0}", + "DashboardOperatingSystem": "Operatsion tizim: {0}", + "DashboardArchitecture": "Arxitektura: {0}", + "DailyAt": "Har kuni {0} da", + "CustomDlnaProfilesHelp": "Yangi qurilmaga tayinlangan maxsus profil yarating yoki tizim profilini bekor qiling.", + "Cursive": "Kursiv", + "CriticRating": "Tanqidchilarni baholash", + "CopyStreamURLSuccess": "URL muvaffaqiyatli ko'chirildi.", + "CopyStreamURL": "Oqimning URL manzilidan nusxa olish", + "CopyFailed": "Ko'chirib bo'lmadi", + "Copy": "Nusxa olish", + "Copied": "Nusxa olingan", + "Continuing": "Davomi", + "ContinueWatching": "Tomosha qilishda davom etish", + "Console": "Konsol", + "Connect": "Ulanish", + "ConfirmEndPlayerSession": "{0} da Jellyfin ishini tugatmoqchimisiz?", + "ConfigureDateAdded": "\"Qo'shish sanasi\" metadata sozlamalari Panel > Media kutubxonalari > NFO sozlamalari", + "Conductor": "Dirijyor", + "Composer": "Bastakor", + "CommunityRating": "Ijtimoiy baholash", + "ButtonSyncPlay": "", + "ColorTransfer": "Rangni qayta ishlash", + "ColorSpace": "Rang maydoni", + "ColorPrimaries": "Asosiy ranglar", + "Collections": "To'plamlar", + "ClientSettings": "Mijozlar parametrlari", + "ClearQueue": "Navbatni tozalash", + "CinemaModeConfigurationHelp": "Kino rejimi teatr tajribasini to'g'ridan-to'g'ri yashash xonangizga asosiy xususiyatdan oldin treylerlar va maxsus introlarni tomosha qilish imkonini beradi.", + "Channels": "Kanallar", + "ChannelNumber": "Kanal raqami", + "ChannelNameOnly": "Faqat kanal {0}", + "ChannelAccessHelp": "Ushbu foydalanuvchiga kirish uchun kanallarni tanlang. Administratorlar \"metadata menejeri\"yordamida barcha kanallarni boshqarishi mumkin.", + "ChangingMetadataImageSettingsNewContent": "Metadata yoki tasvirlarni yuklab olish sozlamalaridagi o'zgarishlar faqat media kutubxonasiga qo'shilgan yangi tarkibga qo'llaniladi. Mavjud ishlarga o'zgarishlarni qo'llash uchun ularning metadata ma'lumotlarini qo'lda yangilash kerak.", + "Categories": "Kategoriyalar", + "Casual": "Norasmiy", + "CancelSeries": "Serialni bekor qilish", + "CancelRecording": "Yozishni bekor qilish", + "Bwdif": "BWDIF filtri", + "ButtonWebsite": "Veb-sayt", + "ButtonUseQuickConnect": "Tez ulanishdan foydalanish", + "ButtonUninstall": "Olib tashlash", + "ButtonTrailer": "Treyler", + "ButtonTogglePlaylist": "Playlist", + "ButtonSubmit": "Tasdiqlash", + "ButtonStop": "To'xtatish", + "ButtonStart": "Ishga tushirish", + "ButtonSplit": "Ajratish", + "ButtonSpace": "Bo'sh joy", + "ButtonExitApp": "Dasturdan chiqish", + "ButtonSignOut": "Chiqish", + "ButtonSignIn": "Kirish", + "ButtonShutdown": "Ishni tugatish", + "ButtonSend": "Jo'natish", + "ButtonSelectView": "Ko'rinishni tanlash", + "ButtonSelectDirectory": "Katalog tanlash", + "ButtonScanAllLibraries": "Barcha kutubxonalarni skanerlash", + "ButtonRevoke": "Uyg'otish", + "ButtonResume": "Davom qilish", + "ButtonResetEasyPassword": "Oddiy PIN-kodni qayta tiklash", + "ButtonRename": "Nomlash", + "ButtonRemove": "Olib tashlash", + "ButtonRefreshGuideData": "Telegraf ma'lumotlarini yangilash", + "ButtonQuickStartGuide": "Ishga tushirish bo'yicha qo'llanma", + "ButtonPreviousTrack": "Oldingi trek", + "ButtonPlayer": "O'yinchi", + "ButtonPause": "Pauza", + "ButtonParentalControl": "Ota-ona nazorati", + "ButtonOpen": "Ochish", + "ButtonOk": "OK", + "ButtonNextTrack": "Keyingi trek", + "ButtonMore": "Yana", + "ButtonManualLogin": "Qo'lda kirish", + "ButtonLibraryAccess": "Media kutubxonasiga kirish", + "ButtonInfo": "Ma'lumot", + "ButtonGotIt": "Tushunarli", + "ButtonFullscreen": "To'liq ekran", + "ButtonForgotPassword": "Parolni eslatish", + "ButtonEditOtherUserPreferences": "Ushbu foydalanuvchining profili, rasm va shaxsiy sozlamalarini tahrirlash.", + "ButtonClose": "Yopish", + "ButtonChangeServer": "Serverni o'zgartirish", + "ButtonCast": "Qurilmaga uzatish", + "ButtonCancel": "Bekor qilish", + "ButtonBackspace": "Orqaga qaytish", + "ButtonBack": "Ortga", + "ButtonAudioTracks": "Audio Treklar", + "ButtonArrowRight": "O'nga", + "ButtonArrowLeft": "Chapga", + "ButtonAddUser": "Foydalanuvchi qo'shish", + "ButtonAddServer": "Server qo'shish", + "ButtonAddScheduledTaskTrigger": "Trigger qo'shish", + "ButtonAddMediaLibrary": "Media kutubxonasini qo'shing", + "ButtonAddImage": "Rasm qo'shish", + "ButtonActivate": "Faollashtirish", + "BurnSubtitlesHelp": "Videoni transkodlashda server subtitrlarni amalga oshirishi kerakligini aniqlash. Buning oldini olish samaradorlikni sezilarli darajada yaxshilaydi. Grafik asosidagi formatlarni (VobSub, PGS, SUB, IDX va boshqalar) va ba'zi ASS yoki SSA subtitrlarini yozish uchun \"Avto\" ni tanlang.", + "Browse": "Tanlash", + "BoxSet": "Quti To'plami", + "BoxRear": "Quti (orqa)", + "Box": "Quti", + "Books": "Kitoblar", + "BookLibraryHelp": "Audio va matnli kitoblar qo'llab-quvvatlanadi. {0} kitobini nomlash bo'yicha qo'llanma {1} ni ko'rib chiqing.", + "Blacklist": "Qora ro'yxat", + "BirthPlaceValue": "Tug'ilgan joy: {0}", + "BirthLocation": "Tug'ilgan joy", + "BirthDateValue": "Tug'ilgan sana: {0}", + "Banner": "Banner", + "Backdrops": "Orqa fonlar", + "Backdrop": "Orqa fon", + "Auto": "Avto", + "AuthProviderHelp": "Ushbu foydalanuvchi parolini autentifikatsiya qilish uchun ishlatiladigan autentifikatsiya provayderini tanlang.", + "Authorize": "Avtorizatsiya qilish", + "Audio": "Audio", + "AspectRatio": "Tomonlar nisbati", + "AsManyAsPossible": "Imkon qadar ko'proq", + "AskAdminToCreateLibrary": "Administratordan media kutubxonasini yaratishni so'rang.", + "Ascending": "O'sish bilan", + "Artists": "Ijrochilar", + "Artist": "Ijrochi", + "Art": "Qirqim", + "Arranger": "Aranjirovkachi", + "AroundTime": "Taxminan", + "ApiKeysCaption": "Joriy API kalitlari ro'yxati", + "Anytime": "Har qanday vaqtda", + "AnyLanguage": "Har qanday til", + "AlwaysPlaySubtitlesHelp": "Subtitrlar, tegishli til sozlamalari audio tilidan qat'iy nazar yuklanadi.", + "AlwaysPlaySubtitles": "Har doim ijro qilish", + "AllowTonemappingHelp": "Tonmapping HDRdan SDRgacha dinamik video oralig'ini o'zgartirishi mumkin, bu asl sahnani taqdim etish uchun juda muhim ma'lumotlar bo'lgan rasm va ranglarning tafsilotlarini saqlab qoladi. Hozirda faqat HDR 10 yoki HLG video bilan ishlaydi. Buning uchun OpenCL yoki CUDA ning tegishli ish vaqti muhiti talab qilinadi.", + "AllowRemoteAccessHelp": "Agar katakchani olib tashlasangiz, barcha o'chirilgan ulanishlar bloklanadi.", + "AllowRemoteAccess": "Ushbu serverga masofadan kirish imkonini berish", + "AllowOnTheFlySubtitleExtractionHelp": "Ichki subtitrlarni videodan olish mumkin va videoni transkodlashni oldini olish uchun mijozlarga muntazam matn sifatida etkazib berilishi mumkin. Ba'zi tizimlarda bu uzoq vaqt talab qilishi va ekstraksiya jarayonida videoni ijro etish kechikishiga olib kelishi mumkin. Ushbu parametrni o'chirib qo'ying, agar ularning qo'llab-quvvatlashi mijoz qurilmasiga o'rnatilmagan bo'lsa, videoni transkodlashda ichki subtitrlar saqlanadi.", + "AllowOnTheFlySubtitleExtraction": "Subtitrlarni dinamik ravishda chiqarishga ruxsat bering", + "AllowMediaConversionHelp": "Media ma'lumotlarini konvertatsiya qilish funktsiyasiga kirishni ta'minlash yoki taqiqlash.", + "AllowMediaConversion": "Media ma'lumotlarini o'zgartirishga ruxsat berish", + "AllowHWTranscodingHelp": "Tyunerga oqim oqimlarini dinamik ravishda transkod qilish imkonini beradi. Bu server tomonidan talab qilinadigan transkodlashni kamaytirishga yordam beradi.", + "Album": "Albom", + "Aired": "Efirli", + "AirDate": "Efir vaqti", + "AgeValue": "({0} yoshda)", + "AddToPlayQueue": "Tomosha qilish navbatiga qo'shish", + "AddToPlaylist": "Pleylistga qo'shish", + "AddToFavorites": "Sevimlilarga qo'shish", + "AddToCollection": "To'plamga qo'shish", + "AdditionalNotificationServices": "Qo'shimcha bildirishnoma xizmatlarini o'rnatish uchun plaginlar katalogini ko'rib chiqing.", + "AddedOnValue": "{0} qo'shildi", + "Add": "Qo'shish", + "Actor": "Aktyor", + "AccessRestrictedTryAgainLater": "Ayni paytda kirish taqiqlangan. Iltimos keyinroq qayta urinib ko'ring.", + "Absolute": "Mutlaq", + "AllowFfmpegThrottlingHelp": "Transkodlash yoki qayta tiklash joriy ijro etish pozitsiyasidan ancha oldinda bo'lsa, jarayon kamroq resurslarni iste'mol qilish uchun to'xtatiladi. Videoni tomosha qilishda kamdan-kam hollarda qaytarib olganingizda juda foydali. Ijro etish bilan bog'liq muammolar mavjud bo'lsa, uni o'chirib qo'ying.", + "AllowFfmpegThrottling": "Transkodlarni qisqartirish", + "AllowedRemoteAddressesHelp": "Uzoq ulanishga ruxsat berilgan ip-manzillar yoki IP/netmask tarmoqlarining vergul bilan ajratilgan yozuvlari ro'yxati. Agar siz ushbu maydonni bo'sh qoldirsangiz, barcha o'chirilgan manzillarga ruxsat beriladi.", + "AllLibraries": "Barcha kutubxonalar", + "AllLanguages": "Barcha tillar", + "AllEpisodes": "Barcha epizodlar", + "AllComplexFormats": "Barcha murakkab formatlar (ASS, SSA, VobSub, PGS, SUB, IDX, …)", + "AllChannels": "Barcha kanallar", + "All": "Barchasi", + "Alerts": "Ogohlantirishlar", + "Albums": "Albomlar", + "AlbumArtist": "Albom ijrochisi" +} From fe0f5c6587631969967b53c29ff59090440a7c30 Mon Sep 17 00:00:00 2001 From: Nodirbek Khajiev Date: Sun, 1 May 2022 10:33:18 +0000 Subject: [PATCH 047/107] Translated using Weblate (Uzbek) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uz/ --- src/strings/uz.json | 442 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 440 insertions(+), 2 deletions(-) diff --git a/src/strings/uz.json b/src/strings/uz.json index 65f7960dea..66791d7efe 100644 --- a/src/strings/uz.json +++ b/src/strings/uz.json @@ -73,7 +73,7 @@ "Conductor": "Dirijyor", "Composer": "Bastakor", "CommunityRating": "Ijtimoiy baholash", - "ButtonSyncPlay": "", + "ButtonSyncPlay": "Sync Play", "ColorTransfer": "Rangni qayta ishlash", "ColorSpace": "Rang maydoni", "ColorPrimaries": "Asosiy ranglar", @@ -211,5 +211,443 @@ "All": "Barchasi", "Alerts": "Ogohlantirishlar", "Albums": "Albomlar", - "AlbumArtist": "Albom ijrochisi" + "AlbumArtist": "Albom ijrochisi", + "LabelEnableSSDPTracingHelp": "Batafsil SSDP tarmoq kuzatuv maʼlumotlari jurnalga yozish uchun kiritilgan.
    OGOHLANTIRISH: Bu ish unumdorligining keskin pasayishiga olib keladi.", + "LabelEnableSSDPTracing": "SSDP kuzatuvini yoqish:", + "LabelEnableSingleImageInDidlLimitHelp": "DIDL ichidagi bir nechta rasm o'rnatilgan bo'lsa, ba'zi qurilmalarda yaxshi ko'rinmaydi.", + "LabelEnableSingleImageInDidlLimit": "Faqat ichki tasvirni cheklash", + "LabelEnableRealtimeMonitorHelp": "Qo'llab-quvvatlanadigan fayl tizimlarida fayllarni tahrirlash darhol ko'rib chiqiladi.", + "LabelEnableRealtimeMonitor": "Jonli kuzatishni yoqing", + "LabelEnableIP6Help": "IPv6 funksiyasini yoqing.", + "LabelEnableIP6": "IPv6 ni yoqing", + "LabelEnableIP4Help": "IPv4 funksiyasini yoqing.", + "LabelEnableIP4": "IPv4 ni yoqing", + "LabelEnableHttpsHelp": "Belgilangan HTTPS porti eshitiladi. Buni amalga oshirish uchun tegishli sertifikat ham taqdim etilishi kerak.", + "LabelEnableHttps": "HTTPS-ni yoqish", + "LabelEnableHardwareDecodingFor": "Uskuna kodini yoqish uchun:", + "LabelEnableDlnaServerHelp": "Uy tarmog'ining UPnP qurilmalari uchun kontentni navigatsiya qilish va uni ijro etish imkonini beradi.", + "LabelEnableDlnaServer": "DLNA serverini yoqish", + "LabelEnableDlnaPlayToHelp": "Tarmoq ichidagi qurilmalar aniqlanadi va ularni masofadan boshqarish imkoniyati ham taqdim etiladi.", + "LabelEnableDlnaPlayTo": "DLNA \"Play To\" funksiyasini yoqish", + "LabelEnableDlnaDebugLoggingHelp": "Katta jurnalistika fayllarini yaratadi, faqat muammolarni bartaraf etish uchun ishlatilishi kerak.", + "LabelEnableDlnaDebugLogging": "DLNA raskadrovka jurnalini yoqish", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Ikki SSDP so'rovi orasidagi intervalni soniyalarda belgilang.", + "LabelEnableDlnaClientDiscoveryInterval": "Mijozlarni aniqlash oralig'i:", + "LabelEnableBlastAliveMessagesHelp": "Server tarmoqdagi boshqa UPnP qurilmalari tomonidan ishonchli aniqlanmasa, uni yoqing.", + "LabelEnableBlastAliveMessages": "Faoliyatni tekshirish xabarlari bilan bombardimon qilish", + "LabelEnableAutomaticPortMapHelp": "Routerning umumiy portlarini UPnP orqali serverning mahalliy portlariga avtomatik yo'naltirish. Bu ba'zi router modellari yoki tarmoq konfiguratsiyasi bilan ishlamasligi mumkin. O'zgarishlar server qayta ishga tushirilmaguncha qo'llanilmaydi.", + "LabelEnableAutomaticPortMap": "Avtomatik port xaritasini yoqish", + "LabelEmbedAlbumArtDidlHelp": "Ba'zi qurilmalar uchun albom rasmlarini olishning ushbu usuli afzalroqdir. Ushbu parametr yoqilgan bo'lsa, boshqalar tomosha qila olmasligi mumkin.", + "LabelEmbedAlbumArtDidl": "Albom rasmini DIDL-ga joylashtiring", + "LabelEasyPinCode": "Oddiy PIN-kod:", + "LabelDynamicExternalId": "{0} ID:", + "LabelDropSubtitleHere": "Subtitrlarni shu yerga torting yoki navigatsiya qilish uchun bosing.", + "LabelDropShadow": "Soyani tushirish:", + "LabelDroppedFrames": "O'tkazib yuborilgan kadrlar:", + "LabelDropImageHere": "Rasmni shu yerga torting yoki navigatsiya qilish uchun bosing.", + "LabelDownMixAudioScaleHelp": "Stereoga tushirilganda ovozni tenglashtirish miqdori. 1 qiymati asl darajani saqlaydi.", + "LabelDownMixAudioScale": "Pastga aralashtirishda ovozni kuchaytirish:", + "LabelDownloadLanguages": "Yuklab olinadigan tillar:", + "LabelDisplaySpecialsWithinSeasons": "Jonli efirga chiqqan mavsumlarda maxsus epizodlarni ko'rsatish", + "LabelDisplayOrder": "Ko'rsatish tartibi:", + "LabelDisplayName": "Ko'rsatiladigan ism:", + "LabelDisplayMode": "Ko'rsatish rejimi:", + "LabelDisplayLanguageHelp": "Jellyfin tarjimasi davom etmoqda.", + "LabelDisplayLanguage": "Displey tili:", + "LabelDiscNumber": "Disk raqami:", + "LabelDisableCustomCss": "Server tomonidan taqdim etilgan maxsus mavzu/brendlash CSS-ni o'chiradi.", + "LabelDidlMode": "DIDL rejimi:", + "LabelDeviceDescription": "Qurilma tavsifi:", + "LabelDeinterlaceMethod": "Deinterlacing usuli:", + "LabelDefaultUserHelp": "Ulangan qurilmalarda kimning kutubxonasi ko'rsatilishi kerakligini aniqlang. Buni har bir qurilma asosida bekor qilish profillar bilan mumkin.", + "LabelDefaultUser": "Standart foydalanuvchi:", + "LabelDefaultScreen": "Standart ekran:", + "LabelDeathDate": "O'lim sanasi:", + "LabelDay": "Hafta kuni:", + "LabelDateTimeLocale": "Mahalliy sana va vaqt:", + "LabelDateAddedBehaviorHelp": "Agar metama'lumotlarda qiymat mavjud bo'lsa, u har doim ushbu variantlardan biriga ustunlik sifatida ishlatiladi.", + "LabelDateAddedBehavior": "Yangi tarkib uchun qo'shilish sanasi quyidagicha qabul qilinadi:", + "LabelDateAdded": "Qo'shilgan sana:", + "LabelDashboardTheme": "Server paneli mavzusi:", + "LabelCustomRating": "Ixtiyoriy yosh toifasi:", + "LabelCustomDeviceDisplayNameHelp": "Qurilma tomonidan berilgan nomdan foydalanish uchun ko'rsatish yoki to'ldirish uchun tasodifiy nom bering.", + "LabelCustomCssHelp": "Veb-interfeysni mavzulash/brendlash uchun maxsus CSS kodingizni qo'llang.", + "LabelCustomCss": "Maxsus CSS kodi:", + "LabelCustomCertificatePathHelp": "Maxsus domenda TLS qoʻllab-quvvatlashini yoqish uchun sertifikat va shaxsiy kalitni oʻz ichiga olgan PKCS #12 fayliga yoʻl.", + "LabelCustomCertificatePath": "Maxsus SSL sertifikatiga yo'l:", + "LabelCurrentStatus": "Hozirgi holat:", + "LabelCurrentPassword": "Joriy Parol:", + "LabelCriticRating": "Tanqidchilarning reytingi:", + "LabelCreateHttpPortMapHelp": "Port avtomatik xaritalash HTTPS trafigiga qo'shimcha ravishda HTTP trafigiga qoida yaratish imkonini beradi.", + "LabelCreateHttpPortMap": "Avtoportni xaritalashni HTTP va HTTPS trafigi uchun yoqish.", + "LabelCountry": "Davlat:", + "LabelCorruptedFrames": "Buzilgan tasvirlar:", + "LabelContentType": "Tarkib turi:", + "LabelCommunityRating": "Jamoatchilik bahosi:", + "LabelColorTransfer": "Rangni uzatish:", + "LabelColorSpace": "Rang maydoni:", + "LabelColorPrimaries": "Asosiy ranglar:", + "LabelCollection": "To'plam:", + "LabelChromecastVersion": "Google Cast versiyasi", + "LabelChannels": "Kanallar:", + "LabelCertificatePasswordHelp": "Agar sertifikatingiz parol talab qilsa, uni shu yerga kiriting.", + "LabelCertificatePassword": "Sertifikat paroli:", + "LabelCancelled": "Bekor qilingan", + "HeaderMetadataSettings": "Media-ma'lumotlar sozlamalari", + "HeaderMediaFolders": "Media papkalar", + "HeaderMedia": "Media-ma'lumotlar", + "HeaderLoginFailure": "Kirishda xatolik", + "HeaderLiveTvTunerSetup": "Jonli TV tyunerini sozlash", + "HeaderLibrarySettings": "Kutubxona sozlamalari", + "HeaderLibraryOrder": "Kutubxona tartibi", + "HeaderLibraryFolders": "Kutubxona papkalari", + "HeaderLibraryAccess": "Media kutubxonasiga kirish", + "HeaderLibraries": "Media kutubxonalar", + "HeaderLatestRecordings": "Oxirgi yozuvlar", + "HeaderLatestMusic": "So'ngi musiqalar", + "HeaderLatestMovies": "So'ngi filmlar", + "HeaderLatestMedia": "So'ngi media-ma'lumotlar", + "HeaderLatestEpisodes": "So'ngi epizodlar", + "HeaderKodiMetadataHelp": "NFO metamaʼlumotlarini yoqish yoki oʻchirish uchun kutubxonangizni tahrirlang va “Metamaʼlumotlar saqlovchilari” boʻlimini toping.", + "HeaderKeepSeries": "Seriyani saqlash", + "HeaderKeepRecording": "Yozishni davom etish", + "HeaderInstantMix": "Avtomiks", + "HeaderInstall": "O'rnatish", + "HeaderImageSettings": "Rasm sozlamalari", + "HeaderImageOptions": "Rasm parametrlari", + "HeaderIdentifyItemHelp": "Bir yoki bir nechta qidiruv shartlarini kiriting. Topilgan natijalarni oshirish uchun shartni bekor qiling.", + "HeaderIdentificationHeader": "Aniqlash uchun sarlavha", + "HeaderIdentificationCriteriaHelp": "Aniqlash uchun kamida bitta shartni kiriting.", + "HeaderIdentification": "Aniqlash", + "HeaderHttpsSettings": "HTTPS sozlamalari", + "HeaderHttpHeaders": "HTTP sarlavhalari", + "HeaderGuideProviders": "TV qo'llanma ma'lumotlar provayderlari", + "HeaderFrequentlyPlayed": "Tez-tez ko'rilgan", + "HeaderForKids": "Bolalar uchun", + "HeaderFetchImages": "Rasmlarni tanlash:", + "HeaderFetcherSettings": "Tanlash parametrlari", + "HeaderFeatureAccess": "Imkoniyatlarga kirish:", + "HeaderExternalIds": "Tashqi identifikatorlar:", + "HeaderError": "Xatolik", + "HeaderEnabledFieldsHelp": "Maydonni tuzatish va uning ma'lumotlarini o'zgarishlardan himoya qilish uchun katakchani olib tashlang.", + "HeaderEnabledFields": "Yoqilgan maydonlar", + "HeaderEditImages": "Rasmlarni tahrirlash", + "HeaderEasyPinCode": "Oddiy PIN kod", + "HeaderDVR": "Raqamli yozib olish", + "HeaderDownloadSync": "Yuklab olish va sinxronlash", + "HeaderDirectPlayProfileHelp": "Qurilmaga qaysi formatlar o'rnatilganligini aniqlash uchun to'g'ridan-to'g'ri ijro profillarini qo'shing.", + "HeaderDirectPlayProfile": "To'g'ridan-to'g'ri ijro profili", + "HeaderDevices": "Qurilmalar", + "HeaderDeviceAccess": "Qurilmaga kirish", + "HeaderDeveloperInfo": "Ishlab chiquvchilar haqida", + "HeaderDetectMyDevices": "Mening qurilmalarimni aniqlash", + "HeaderDeleteTaskTrigger": "Vazifa tetiklagichini o'chirish", + "HeaderDeleteProvider": "Provayderni o'chirish", + "HeaderDeleteItems": "Elementlarni o'chirish", + "HeaderDeleteItem": "Elementni o'chirish", + "HeaderDeleteDevices": "Barcha qurilmalarni o'chirib tashlash", + "HeaderDeleteDevice": "Qurilmani o'chirish", + "HeaderDefaultRecordingSettings": "Standart yozish imkoniyatlari", + "HeaderDebugging": "Nosozliklarni tuzatish va kuzatish", + "HeaderDateIssued": "Berilgan sana", + "HeaderCustomDlnaProfiles": "Shaxsiy profillar", + "HeaderContinueReading": "O'qishni davom ettirish", + "HeaderContinueListening": "Eshitishda davom etish", + "HeaderContinueWatching": "Ko‘rishda davom etish", + "HeaderContainerProfileHelp": "Konteyner profillari ma'lum formatlarni o'ynatishda qurilma cheklovlarini bildiradi. Agar cheklov qo'llanilsa, format to'g'ridan-to'g'ri ijro etish uchun o'rnatilgan bo'lsa ham, media qayta kodlanadi.", + "HeaderContainerProfile": "Konteyner profili", + "HeaderConnectToServer": "Serverga ulanish", + "HeaderConnectionFailure": "Ulanish muvaffaqiyatsiz tugadi", + "HeaderConfirmRevokeApiKey": "API kalitini bekor qilish", + "HeaderConfirmProfileDeletion": "Profilni o'chirishni tasdiqlash", + "HeaderConfirmPluginInstallation": "Plaginni o'rnatishni tasdiqlash", + "HeaderConfigureRemoteAccess": "Masofaviy erkin foydalanishni sozlash", + "HeaderCodecProfileHelp": "Kodek profillari ma'lum kodeklar bilan o'ynashda qurilma cheklovlarini ko'rsatadi. Agar cheklov qo'llanilsa, kodek to'g'ridan-to'g'ri ijro etish uchun sozlangan bo'lsa ham, media qayta kodlanadi.", + "HeaderCodecProfile": "Kodek profili", + "HeaderChapterImages": "Sahna tasvirlari", + "HeaderChannelAccess": "Kanallarga kirish", + "HeaderCastAndCrew": "Suratga tushganlar va suratga olganlar", + "HeaderCancelSeries": "Seriyani bekor qilish", + "HeaderCancelRecording": "Yozuvni bekor qilish", + "HeaderBranding": "Ro'yxatga olish", + "HeaderBlockItemsWithNoRating": "Yosh toifasi haqida kam yoki noma'lum ma'lumotlarga ega bo'lgan elementlarni bloklash:", + "HeaderAutoDiscovery": "Tarmoqni aniqlash", + "HeaderAudioSettings": "Audio opsiyalari", + "HeaderAudioBooks": "Audio kitoblar", + "HeaderAppearsOn": "Taqdim etilgan", + "HeaderApp": "Ilova", + "HeaderApiKeysHelp": "Tashqi ilovalar serverga ulanish uchun API kalitini talab qiladi. Kalitlar oddiy foydalanuvchi hisobiga kirganda beriladi yoki kalit ilovaga qo'lda taqdim etiladi.", + "HeaderApiKeys": "API kalitlar", + "HeaderApiKey": "API kalit", + "HeaderAllowMediaDeletionFrom": "Mediani quyidagidan olib tashlashga ruxsat berish:", + "HeaderAlert": "Ogohlantirish", + "HeaderAlbumArtists": "Albom ijrochilari", + "HeaderAdmin": "Boshqaruv", + "HeaderAddUser": "Foydalanuvchi qo'shish", + "HeaderAddUpdateSubtitle": "Subtitrlarni qo'shish/yangilash", + "HeaderAddUpdateImage": "Rasm qo'shish/yangilash", + "HeaderAddToPlaylist": "Pleylistga qo'shish", + "HeaderAddToCollection": "To'plamga qo'shish", + "HeaderAdditionalParts": "Qo'shimcha qismlar", + "HeaderActivity": "Harakatlar", + "HeaderActiveRecordings": "Faol yozuvlar", + "HeaderActiveDevices": "Faol qurilmalar", + "HeaderAccessScheduleHelp": "Muayyan soatlarga kirishni cheklash uchun kirish jadvallarini yarating.", + "HeaderAccessSchedule": "Kirish jadvali", + "HardwareAccelerationWarning": "Uskuna tezlashtirishni yoqish ba'zi muhitlarda beqarorlikka olib kelishi mumkin. Operatsion tizimingiz va video drayverlaringiz yangilanganligiga ishonch hosil qiling. Buni yoqganingizdan so'ng videoni o'ynatishda muammoga duch kelsangiz, sozlamani \"Hech narsa\" ga o'zgartirishingiz kerak.", + "HDPrograms": "HD uzatish", + "H264CrfHelp": "Doimiy reyting koeffitsienti (CRF) x264 va x265 kodlovchilar uchun standart sifat sozlamasidir. 0 dan 51 gacha qiymatlarni o'rnatish mumkin, bunda kichikroq qiymatlar yaxshi sifatga olib keladi (fayl o'lchamlarini oshirish orqali). Qabul qilinadigan qiymatlar 18 dan 28 gacha. Standart x264 uchun 23 va x265 uchun 28, shuning uchun siz undan boshlang'ich nuqta sifatida foydalanishingiz mumkin.", + "GuideProviderSelectListings": "Ro'yxatlarni tanlash", + "GuideProviderLogin": "Kirish", + "Guide": "Televizion qo'llanma", + "GuestStar": "Mehmon aktyor", + "GroupVersions": "Versiyalar bo‘yicha guruhlash", + "GroupBySeries": "Seriyalar bo‘yicha guruhlash", + "GoogleCastUnsupported": "Google Cast qo'llab-quvvatlanmaydi", + "Genres": "Janrlar", + "Genre": "Janr", + "General": "Umumiy", + "Fullscreen": "To'liq ekran", + "Friday": "Juma", + "Framerate": "Kadrlar soni", + "FormatValue": "Format: {0}", + "Folders": "Jildlar", + "Filters": "Filtrlar", + "Filter": "Filtr", + "FileReadError": "Faylni o'qishda xatolik yuz berdi.", + "FileReadCancelled": "Faylni o'qish bekor qilindi.", + "FileNotFound": "Fayl topilmadi.", + "File": "Fayl", + "FFmpegSavePathNotFound": "Siz kiritgan yoʻlda FFmpeg topilmadi. FFprobe ham talab qilinadi va bir xil papkada bo'lishi kerak. Ushbu komponentlar odatda bitta yuklab olish paketida birga yuboriladi. Yo'lni tekshiring va qayta urinib ko'ring.", + "FetchingData": "Qoʻshimcha maʼlumotlar olinmoqda", + "Features": "Imkoniyatlar", + "Favorites": "Sevimlilar", + "Favorite": "Sevimlilar", + "FastForward": "Tezda oldinga", + "Extras": "Qo'shimcha materiallar", + "ExtraLarge": "Eng katta", + "ExtractChapterImagesHelp": "Sahna tasvirini qidirish mijozlarga sahnani tanlashning grafik menyularini ko'rsatish imkoniyatini beradi. Bu jarayon sekin bo'lishi mumkin, resurslarni sarflaydi va bir necha gigabayt bo'sh joy talab qilishi mumkin. U videofayllar aniqlanganda, shuningdek, kechaga rejalashtirilgan vazifa sifatida ishlaydi. Jadvalni Tayinlangan vazifalar maydonida qayta sozlash mumkin. Ushbu vazifani eng yuqori soatlarda bajarish tavsiya etilmaydi.", + "ExitFullscreen": "Toʻliq ekrandan chiqish", + "EveryXMinutes": "Har {0} daqiqada", + "EveryXHours": "Har {0} soatda", + "EveryNDays": "Har {0} kunda", + "EveryHour": "Har soat", + "ErrorStartHourGreaterThanEnd": "Tugash vaqti boshlanish vaqtidan kechroq bo'lishi kerak.", + "ErrorSavingTvProvider": "Televizor provayderini saqlashda xatolik yuz berdi. Uning mavjudligiga ishonch hosil qiling va qaytadan urining.", + "ErrorPleaseSelectLineup": "Moslik roʻyxatini ajratib koʻrsating va qayta urinib koʻring. Agar mos keladigan ro'yxatlar bo'lmasa, foydalanuvchi nomi, parol va pochta indeksi to'g'ri ekanligini tekshiring.", + "ErrorPlayerNotFound": "Soʻralgan media uchun pleer topilmadi.", + "ErrorGettingTvLineups": "Xaritalash roʻyxatlarini yuklashda xatolik yuz berdi. Tafsilotlaringiz toʻgʻri ekanligiga ishonch hosil qiling va qaytadan urinib koʻring.", + "ErrorDeletingItem": "Serverdan elementni oʻchirishda xatolik yuz berdi. Jellyfinning media jildiga yozish huquqi borligini tekshiring va qaytadan urinib ko'ring.", + "ErrorDefault": "So‘rovni qayta ishlashda xatolik yuz berdi. Iltimos keyinroq qayta urinib ko'ring.", + "ErrorAddingXmlTvFile": "XMLTV fayliga kirishda xatolik yuz berdi. Fayl mavjudligiga ishonch hosil qiling va qayta urinib ko'ring.", + "ErrorAddingTunerDevice": "Tyuner qurilmasini qo‘shishda xatolik yuz berdi. Uning mavjudligiga ishonch hosil qiling va qaytadan urining.", + "ErrorAddingMediaPathToVirtualFolder": "Media yoʻlini qoʻshishda xatolik yuz berdi. Yo‘l to‘g‘ri ekanligiga va Jellyfin bu joyga kirish huquqiga egaligiga ishonch hosil qiling .", + "ErrorAddingListingsToSchedulesDirect": "Xaritalash roʻyxatini Schedules Direct hisobiga qoʻshishda xatolik yuz berdi. Schedules Direct har bir hisob uchun bunday ro'yxatlarning cheklangan soniga ruxsat beradi. Davom etishdan oldin Schedules Direct saytiga kirishingiz va hisobingizdan boshqa roʻyxatlarni olib tashlashingiz kerak boʻlishi mumkin.", + "Episodes": "Epizodlar", + "Episode": "Epizod", + "Engineer": "Yozuvchi muhandis", + "EndsAtValue": "Tugash vaqti: {0}", + "Ended": "Bekor qilingan", + "EncoderPresetHelp": "Yaxshiroq ishlash uchun tezroq qiymatni yoki yaxshiroq sifat uchun sekinroq qiymatni tanlang.", + "EnableTonemapping": "Tonemappingni yoqish", + "EnableThemeVideosHelp": "Media kutubxonasini navigatsiya qilishda fon rejimida anik videolarni ijro etish.", + "EnableThemeSongsHelp": "Media kutubxonasini navigatsiya qilishda fon rejimida tematik kompozitsiyalarni ijro etish.", + "EnableStreamLoopingHelp": "Eshittirishlar faqat bir necha soniya davomida ma'lumotlarni o'z ichiga olgan bo'lsa va ularni doimiy ravishda talab qilish kerak bo'lsa, uni yoqing. Bunga ehtiyoj sezmasdan, uni yoqish muammoga olib kelishi mumkin.", + "EnableStreamLooping": "Avtomatik uzatish", + "EnableQuickConnect": "Ushbu serverda Quick Connect-ni yoqish", + "EnableRewatchingNextUpHelp": "\"Keyingi\" bo'limlarida allaqachon ko'rilgan epizodlarni ko'rsatishni yoqing.", + "EnableRewatchingNextUp": "\"Keyingi\" bo'limida takrorlashni yoqing", + "EnablePhotosHelp": "Tasvirlar aniqlanadi va boshqa media fayllar bilan birga ko'rsatiladi.", + "EnablePhotos": "Rasmlarni ko'rsatish", + "EnableNextVideoInfoOverlayHelp": "Videoning oxirida joriy pleylistdagi keyingi video haqidagi ma'lumotlarni ko'rsating.", + "EnableNextVideoInfoOverlay": "Ijro paytida keyingi video tafsilotlarini ko'rsatish", + "EnableHardwareEncoding": "Uskunani kodlashni yoqish", + "EnableFasterAnimationsHelp": "Tezlashtirilgan animatsiya va o'tishlardan foydalanish.", + "EnableFasterAnimations": "Tezlashtirilgan animatsiya", + "EnableExternalVideoPlayersHelp": "Videoni ijro etishni boshlaganingizda tashqi pleyer menyusi ko'rsatiladi.", + "EnableExternalVideoPlayers": "Tashqi video pleerlar", + "EnableDisplayMirroring": "Displeyni takrorlash", + "EnableDetailsBannerHelp": "Elementning tafsilotlari sahifasining yuqori qismidagi banner rasmini ko'rsatadi.", + "EnableDetailsBanner": "Tafsilotli banner", + "EnableDecodingColorDepth10Vp9": "VP9 uchun 10-bitli apparat dekodlashni yoqing", + "EnableDecodingColorDepth10Hevc": "HEVC uchun 10-bit apparat kodini yoqish", + "EnableColorCodedBackgrounds": "Fon rangi bilan belgilangan", + "EnableCinemaMode": "Kino rejimi", + "EnableBlurHashHelp": "Hali yuklanayotgan rasmlar noyob to'ldirish bilan ko'rsatiladi.", + "EnableBlurHash": "Tasvirlar uchun loyqa joy egalarini yoqing", + "EnableBackdropsHelp": "Media kutubxonasini ko'rib chiqayotganda orqa fonda ba'zi sahifalarda ko'rsatiladi.", + "EnableAutoCast": "Standart o'rnatish", + "EditSubtitles": "Subtitrlarni tahrirlash", + "EditMetadata": "Metamaʼlumotlarni tahrirlash", + "EditImages": "Rasmni tahrirlash", + "Edit": "Tahrirlash", + "EasyPasswordHelp": "Oddiy PIN-kod qo'llab-quvvatlanadigan mijozlarga mustaqil ravishda kirish uchun ishlatiladi va qulay ichki tarmoqqa kirish uchun ham ishlatilishi mumkin.", + "LabelCachePathHelp": "Rasmlar kabi server kesh fayllari uchun maxsus joyni belgilang. Standart qiymatdan foydalanish uchun maydonni bo'sh qoldiring.", + "LabelCachePath": "Keshga yo'l:", + "LabelCache": "Kesh:", + "LabelBurnSubtitles": "Subtitrlarni joriy qilish:", + "LabelBlockContentWithTags": "Tegli elementlarni bloklash:", + "LabelBlastMessageIntervalHelp": "Faoliyatni tekshirish xabarlari bilan bombardimon qilish o'rtasidagi soniyalarda vaqtni aniqlash.", + "LabelBlastMessageInterval": "Faoliyat tekshirish xabarlari oralig'i:", + "LabelBitrate": "Oqim. tezlik:", + "LabelBirthYear": "Tug'ilgan yil:", + "LabelBirthDate": "Tug'ilgan kun:", + "LabelBindToLocalNetworkAddressHelp": "HTTP serveri uchun mahalliy IP manzilni bekor qiladi. Agar maydon bo'sh bo'lsa, u holda server ulanishi barcha mavjud manzillarga bo'ladi. Ushbu qiymatni o'zgartirish qayta ishga tushirishni talab qiladi.", + "LabelBindToLocalNetworkAddress": "Mahalliy tarmoqdagi manzilga ulanish:", + "LabelBaseUrlHelp": "Server URL manziliga maxsus pastki katalog qo'shadi. Masalan: http://example.com/<baseurl>", + "LabelBaseUrl": "Asosiy URL:", + "LabelAutomaticDiscoveryHelp": "Ilovalarga UDP port 7359 yordamida Jellyfinni avtomatik ravishda topishga ruxsat bering.", + "LabelAutomaticDiscovery": "Avtomatik topishni yoqish:", + "LabelAutomaticallyRefreshInternetMetadataEvery": "Internetdagi metamaʼlumotlarni avtomatik yangilash:", + "LabelAutoDiscoveryTracingHelp": "Yoqilganda, avtomatik aniqlash porti orqali qabul qilingan paketlar qayd qilinadi.", + "LabelAutoDiscoveryTracing": "Avtomatik aniqlash izini yoqish.", + "LabelAutomaticallyAddToCollectionHelp": "Agar kamida ikkita film bir xil to'plam nomiga ega bo'lsa, ular avtomatik ravishda to'plamga qo'shiladi.", + "LabelAutomaticallyAddToCollection": "To'plamga avtomatik qo'shish", + "LabelAuthProvider": "Autentifikatsiya provayderi:", + "LabelAudioSampleRate": "Audio namuna tezligi:", + "LabelAudioLanguagePreference": "Audio tilini tanlash:", + "LabelAudioCodec": "Audio kodek:", + "LabelAudioChannels": "Audio kanallar:", + "LabelAudioBitrate": "Audio oqim tezligi:", + "LabelAudioBitDepth": "Ovoz hajmi:", + "LabelArtistsHelp": "Ijrochilarni nuqta-vergul bilan ajrating.", + "LabelArtists": "Ijrochilar:", + "LabelAppNameExample": "Misol uchun: Sickbeard, Sonar", + "LabelAppName": "Ilova nomi", + "LabelAllowHWTranscoding": "Uskuna transkodlashiga ruxsat berish", + "LabelAllowedRemoteAddressesMode": "Tashqi IP-manzilni filtrlash rejimi:", + "LabelAllowedRemoteAddresses": "Tashqi IP manzil filtri:", + "LabelAlbumArtPN": "Albom muqovasi PN:", + "LabelAlbumArtMaxWidth": "Maks. albom muqovasi kengligi:", + "LabelAlbumArtMaxResHelp": "\"upnp:albumArtURI\" xususiyati orqali ko'rsatilgan albom muqovasining maksimal ruxsati.", + "LabelAlbumArtMaxHeight": "Maks. albom muqovasi balandligi:", + "LabelAlbumArtists": "Albom ijrochilari:", + "LabelAlbumArtHelp": "\"upnp:albumArtURI\"ning \"dlna:profileID\" atributi ichida albom tasviri uchun foydalaniladigan PN. Ba'zi qurilmalar tasvir hajmidan qat'i nazar, ma'lum bir qiymatni talab qiladi.", + "LabelAlbum": "Albom:", + "LabelAirTime": "Efir vaqti:", + "LabelAirsBeforeSeason": "Fasldan oldingi efirlar:", + "LabelAirsBeforeEpisode": "Fasldan oldingi efirlar:", + "LabelAirsAfterSeason": "Fasldan keyingi efirlar:", + "LabelAirDays": "Efir kunlari:", + "LabelAccessStart": "Boshlanish vaqti:", + "LabelAccessEnd": "Tugash vaqti:", + "LabelAccessDay": "Hafta kuni:", + "LabelAbortedByServerShutdown": "(Serverning o'chirilishi tufayli bekor qilingan)", + "Label3DFormat": "3D format:", + "KnownProxiesHelp": "Jellyfin instansiyangizga ulanishda ishlatiladigan maʼlum proksi-serverlarning IP manzillari yoki xost nomlarining vergul bilan ajratilgan roʻyxati. Bu \"X-Forwarded-For\" sarlavhalarini to'g'ri ishlatish uchun zarur. Saqlagandan keyin qayta ishga tushirish talab qilinadi.", + "Kids": "Bolalar", + "Items": "Elementlar", + "ItemDetails": "Element tafsilotlari", + "ItemCount": "{0} ta element(lar)", + "InstantMix": "Avtomiks", + "InstallingPackage": "{0} oʻrnatilmoqda (versiya {1})", + "ImportFavoriteChannelsHelp": "Faqat tyuner qurilmasida sevimlilar sifatida belgilangan kanallar import qilinadi.", + "Images": "Rasmlar", + "Image": "Rasm", + "Identify": "Aniqlsh", + "HttpsRequiresCert": "Tashqi ulanishlar uchun HTTPSni yoqish uchun siz Let's Encrypt kabi ishonchli SSL sertifikatini taqdim etishingiz kerak bo'ladi. Sertifikat taqdim eting yoki xavfsiz ulanishlarni o'chiring.", + "Horizontal": "Gorizontal", + "HomeVideosPhotos": "Uy videolari va fotosuratlari", + "Home": "Asosiy", + "HideWatchedContentFromLatestMedia": "\"Soʻnggi media\"dan tomosha qilingan kontentni yashirish", + "Hide": "Yashirish", + "Help": "Ma'lumot", + "HeaderYears": "Yillar", + "HeaderXmlSettings": "XML sozlamalari", + "HeaderXmlDocumentAttributes": "XML hujjat atributlari", + "HeaderXmlDocumentAttribute": "XML hujjat atributi", + "HeaderVideoTypes": "Video turlari", + "HeaderVideoType": "Video turi", + "HeaderVideos": "Videolar", + "HeaderVideoQuality": "Video sifati", + "HeaderUsers": "Foydalanuvchilar", + "HeaderUser": "Foydalanuvchi", + "HeaderUploadSubtitle": "Subtitrlarni yuklash", + "HeaderUploadImage": "Rasm yuklash", + "HeaderUpcomingOnTV": "Televizorda kutilmoqda", + "HeaderUninstallPlugin": "Plaginni o'chirish", + "HeaderTypeText": "Matn kiritish", + "HeaderTypeImageFetchers": "Rasm tanlagichlar ({0}):", + "HeaderTuners": "Tyunerlar", + "HeaderTunerDevices": "Tuner qurilmalari", + "HeaderTranscodingProfileHelp": "Transkodlashni talab qilganda qaysi formatlarni ishlatish kerakligini ko'rsatish uchun transkoding rejimlarini qo'shing.", + "HeaderTranscodingProfile": "Transkodlash profili", + "HeaderTracks": "Treklar", + "HeaderThisUserIsCurrentlyDisabled": "Bu foydalanuvchi hozirda bloklangan", + "HeaderTaskTriggers": "Vazifa triggerlari", + "HeaderSystemDlnaProfiles": "Tizim profillari", + "HeaderSyncPlayTimeSyncSettings": "Vaqtni sinxronlashtirish", + "HeaderSyncPlayPlaybackSettings": "Ijro etish", + "HeaderSyncPlaySettings": "SyncPlay sozlamalari", + "HeaderSyncPlaySelectGroup": "Guruhga qo'shilish", + "HeaderSyncPlayEnabled": "SyncPlay yoqilgan", + "HeaderSubtitleProfilesHelp": "Subtitr profillari qurilma tomonidan qo'llab-quvvatlanadigan subtitr formatlarini tavsiflaydi.", + "HeaderSubtitleProfiles": "Subtitr profillari", + "HeaderSubtitleProfile": "Subtitr profili", + "HeaderSubtitleDownloads": "Subtitrlarni yuklab olish", + "HeaderSubtitleAppearance": "Subtitr ko'rinishi", + "HeaderStopRecording": "Yozishni to'xtating", + "HeaderStatus": "Holat", + "HeaderStartNow": "Darhol ishga tushirish", + "HeaderSpecialEpisodeInfo": "Maxsus epizod haqida", + "HeaderSortOrder": "Saralash tartibi", + "HeaderSortBy": "Saralash turi", + "HeaderSetupLibrary": "Media kutubxonani o'rnatish va sozlash", + "HeaderServerSettings": "Server sozlamalari", + "HeaderServerAddressSettings": "Server manzili parametrlari", + "HeaderSeriesStatus": "Seriya holati", + "HeaderSeriesOptions": "Seriya imkoniyatlari", + "HeaderSendMessage": "Xabar yuborish", + "HeaderSelectTranscodingPathHelp": "Fayllarni transkodlash uchun foydalaniladigan yoʻlni toping yoki kiriting. Papka yoziladigan bo'lishi kerak.", + "HeaderSelectTranscodingPath": "Vaqtinchalik fayllarni transkod qilish uchun yo'lni tanlash", + "HeaderSelectServerCachePathHelp": "Server kesh fayllari uchun foydalanish yo'lini toping yoki kiriting. Papka yoziladigan bo'lishi kerak.", + "HeaderSelectServerCachePath": "Server keshi uchun yo'lni tanlash", + "HeaderSelectPath": "Yo'l tanlash", + "HeaderSelectMetadataPathHelp": "Meta-ma'lumotlar uchun foydalanmoqchi bo'lgan yo'lni toping yoki kiriting. Papka yoziladigan bo'lishi kerak.", + "HeaderSelectMetadataPath": "Meta-ma'lumotlar yo'lini tanlash", + "HeaderSelectCertificatePath": "Sertifikatga yo'lni tanlash", + "HeaderSecondsValue": "{0} soniya", + "HeaderSeasons": "Fasllar", + "HeaderScenes": "Sahnalar", + "HeaderRunningTasks": "Vazifalarni bajarish", + "HeaderRevisionHistory": "O'zgarishlar tarixi", + "HeaderResponseProfileHelp": "Javob rejimlari ma'lum turdagi medialarni ijro qilishda qurilmaga yuboriladigan ma'lumotni sozlash usulini ta'minlaydi.", + "HeaderResponseProfile": "Javob profili", + "HeaderRemoveMediaLocation": "Media joylashuvini o'chirish", + "HeaderRemoveMediaFolder": "Media papkasini o'chirish", + "HeaderRemoteControl": "Masofaviy boshqarish", + "HeaderRemoteAccessSettings": "Masofaviy kirish imkoniyatlari", + "HeaderRecordingPostProcessing": "Yozuvni keyingi qayta ishlash", + "HeaderRecordingOptions": "Yozib olish imkoniyatlari", + "HeaderRecentlyPlayed": "Yaqinda tomosha qilingan", + "HeaderProfileServerSettingsHelp": "Ushbu qiymatlar server o'zini mijozlarga qanday ko'rsatishini nazorat qiladi.", + "HeaderProfileInformation": "Profil haqida", + "HeaderPreferredMetadataLanguage": "Meta-ma'lumotlar tilini tanlash", + "HeaderPortRanges": "Xavfsizlik devori va proksi-server sozlamalari", + "HeaderPluginInstallation": "Plagin o'rnatish", + "HeaderPleaseSignIn": "Iltimos, tizimga kiring", + "HeaderPlayOn": "Ijro etish", + "HeaderPlaybackError": "Ijro etish xatosi", + "HeaderPlayback": "Media ma'lumotlarini ijro etish:", + "HeaderPlayAll": "Hammasini tomosha qilish", + "HeaderPinCodeReset": "Oddiy PIN-kodni tiklash", + "HeaderPhotoAlbums": "Fotoalbomlar", + "HeaderPaths": "Yo'llar", + "HeaderPasswordReset": "Parolni tiklash", + "HeaderPassword": "Parol", + "HeaderParentalRatings": "Yosh toifalari", + "HeaderOtherItems": "Boshqa elementlar", + "HeaderOnNow": "Jonli efirda", + "HeaderNextVideoPlayingInValue": "Keyingi video {0} dan keyin ijro etiladi", + "HeaderNextEpisodePlayingInValue": "Keyingi qism {0} da boshlanadi", + "HeaderNewRepository": "Yangi ombor", + "HeaderNewDevices": "Yangi qurilmalar", + "HeaderNewApiKey": "Yangi API kalit", + "HeaderNetworking": "IP protokollar", + "HeaderNavigation": "Navigatsiya", + "HeaderMyMediaSmall": "Mening media-ma'lumotlarim (ixcham)", + "HeaderMyMedia": "Mening media-ma'lumotlarim", + "HeaderMyDevice": "Mening qurilmam", + "HeaderMusicQuality": "Musiqa sifati", + "HeaderMoreLikeThis": "Shunga o'xshash" } From 2e190536359878ea60be04ada66cf7dad7dd2eb8 Mon Sep 17 00:00:00 2001 From: Rhodri Date: Mon, 2 May 2022 10:28:34 +0000 Subject: [PATCH 048/107] Translated using Weblate (Welsh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cy/ --- src/strings/cy.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/cy.json b/src/strings/cy.json index cb7076d59a..e65fd171fb 100644 --- a/src/strings/cy.json +++ b/src/strings/cy.json @@ -438,7 +438,7 @@ "DateAdded": "Dyddiad ychwanegu", "DashboardVersionNumber": "Fersiwn: {0}", "DashboardServerName": "Gweinydd: {0}", - "DashboardArchitecture": "Pensaernïaeth: {0}", + "DashboardArchitecture": "Adeiledd: {0}", "CriticRating": "Sgôr beirniaid", "ContinueWatching": "Parhau i wylio", "ConfirmDeletion": "Cadarnhau Dileu", @@ -510,7 +510,7 @@ "ButtonResetEasyPassword": "Ailosod cod PIN Rhwydd", "ButtonRefreshGuideData": "Adnewyddu Data Canllaw", "ButtonQuickStartGuide": "Canllaw Cychwyn Cyflym", - "HeaderMyMedia": "Fy Cyfryngau", + "HeaderMyMedia": "Fy Nghyfryngau", "LabelForgotPasswordUsernameHelp": "Mewnbynnwch eich enw defnyddiwr, os ydych chi'n ei gofio.", "RememberMe": "Cofiwch Fi", "LabelNewPassword": "Cyfrinair newydd:", From e9a1baec7cdacdbf506a7bf588b4e2c38a40afe3 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Mon, 2 May 2022 11:01:25 +0000 Subject: [PATCH 049/107] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index a3d186d373..74e90b4f37 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -343,7 +343,7 @@ "HeaderPlayOn": "Воспроизведение", "HeaderPlayback": "Воспроизведение медиаданных:", "HeaderPlaybackError": "Ошибка воспроизведения", - "HeaderPleaseSignIn": "Выполните вход", + "HeaderPleaseSignIn": "Выполнить вход", "HeaderPluginInstallation": "Установка плагина", "HeaderPreferredMetadataLanguage": "Выбор языка метаданных", "HeaderProfileInformation": "О профиле", From aeefc38ef7e9436e461f436a0cd17e8213399b19 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Mon, 2 May 2022 10:53:48 +0000 Subject: [PATCH 050/107] Translated using Weblate (Esperanto) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/eo/ --- src/strings/eo.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/eo.json b/src/strings/eo.json index 0e30231e15..7f75950f6f 100644 --- a/src/strings/eo.json +++ b/src/strings/eo.json @@ -475,7 +475,7 @@ "LabelAlbumArtMaxHeight": "Maks. alteco de albumarto:", "LabelAlbumArtMaxResHelp": "Maksimuma distingivo de albumarto elmontrita per la \"upnp: albumArtURI\" eco.", "ButtonWebsite": "Retejen", - "ButtonUseQuickConnect": "Uzu Rapidan Konekton", + "ButtonUseQuickConnect": "Uzi Rapidan Konekton", "ButtonUninstall": "Malinstalu", "ButtonNetwork": "Starigi Reton", "ButtonManualLogin": "Ensalutu Mane", @@ -843,8 +843,8 @@ "ButtonTogglePlaylist": "Ludlistu", "ButtonSubmit": "Proponu", "ButtonSplit": "Disigu", - "ButtonSignOut": "Elsalutu", - "ButtonSignIn": "Ensaluti", + "ButtonSignOut": "Elsaluto", + "ButtonSignIn": "Ensaluto", "ButtonRevoke": "Revoku", "ButtonResetEasyPassword": "Restarigi Facilan PIN-kodon", "ButtonRefreshGuideData": "Refreŝigu Gvidilan Datenon", From 9a1610182d27d853cd6e59e4d10043aa77b8cfb5 Mon Sep 17 00:00:00 2001 From: Rhodri Date: Mon, 2 May 2022 11:12:27 +0000 Subject: [PATCH 051/107] Translated using Weblate (Welsh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cy/ --- src/strings/cy.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/cy.json b/src/strings/cy.json index e65fd171fb..5cfa2f7ca2 100644 --- a/src/strings/cy.json +++ b/src/strings/cy.json @@ -527,5 +527,6 @@ "Copy": "Copi", "Copied": "Wedi'i gopïo", "ConfirmEndPlayerSession": "Hoffech chi ddiffodd Jellyfin ar {0}?", - "ConfirmDeleteItem": "Bydd dileu'r eitem hon yn ei dileu o'r system ffeiliau a'ch llyfrgell gyfryngau. Ydych chi'n siŵr eich bod eisiau parhau?" + "ConfirmDeleteItem": "Bydd dileu'r eitem hon yn ei dileu o'r system ffeiliau a'ch llyfrgell gyfryngau. Ydych chi'n siŵr eich bod eisiau parhau?", + "LabelDisplayLanguage": "Iaith arddangos:" } From 30953dbf8757ddf6bde6aa39c222dda8bac435da Mon Sep 17 00:00:00 2001 From: Rhodri Date: Mon, 2 May 2022 14:07:33 +0000 Subject: [PATCH 052/107] Translated using Weblate (Welsh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cy/ --- src/strings/cy.json | 85 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 10 deletions(-) diff --git a/src/strings/cy.json b/src/strings/cy.json index 5cfa2f7ca2..0a61c883a0 100644 --- a/src/strings/cy.json +++ b/src/strings/cy.json @@ -75,7 +75,7 @@ "ButtonRevoke": "Dirymu", "ButtonResume": "Ailgydio", "ButtonRename": "Ailenwi", - "ButtonRemove": "Tynnu", + "ButtonRemove": "Gwaredu", "ButtonPlayer": "Chwaraewr", "ButtonPause": "Saib", "ButtonOpen": "Agor", @@ -169,7 +169,7 @@ "MediaInfoLanguage": "Iaith", "MediaInfoInterlaced": "Wedi'i blethu", "MediaInfoFramerate": "Cyfradd fframiau", - "MediaInfoForced": "Orfodi", + "MediaInfoForced": "Gorfodol", "MediaInfoExternal": "Allanol", "ValueVideoCodec": "Codec fideo: {0}", "ValueCodec": "Codec: {0}", @@ -232,7 +232,7 @@ "LabelLogs": "Cofnodion:", "LabelLineup": "Harchebion:", "LabelLanguage": "Iaith:", - "LabelIsForced": "Orfodi", + "LabelIsForced": "Gorfodol", "LabelFormat": "Fformat:", "LabelFont": "Ffont:", "LabelFolder": "Ffolder:", @@ -314,7 +314,7 @@ "OptionMissingEpisode": "Pennodau ar Goll", "NewEpisodes": "Penodau newydd", "LabelEpisodeNumber": "Rhif pennod:", - "HeaderLatestEpisodes": "Pennod Diweddaraf", + "HeaderLatestEpisodes": "Pennodau Diweddaraf", "AllEpisodes": "Pob pennod", "Episodes": "Penodau", "TypeOptionPluralEpisode": "Penodau", @@ -331,7 +331,7 @@ "TabStreaming": "Ffrydio", "TabServer": "Gweinydd", "TabResponses": "Ymatebion", - "TabRepositories": "Ystorfeydd", + "TabRepositories": "Storfeydd", "TabProfiles": "Proffiliau", "TabPlugins": "Ategion", "TabOther": "Arall", @@ -370,7 +370,7 @@ "Screenshots": "Sgrinluniau", "Screenshot": "Sgrinlun", "Schedule": "Trefnlen", - "Save": "Cadw", + "Save": "Arbed", "Saturday": "Dydd Sadwrn", "Runtime": "Amser rhedeg", "Rewind": "Dirwyn yn ôl", @@ -387,7 +387,7 @@ "Profile": "Proffil", "Producer": "Cynhyrchydd", "Print": "Argraffu", - "Primary": "Prif", + "Primary": "Cynradd", "Previous": "Blaenorol", "Preview": "Rhagolwg", "Premieres": "Perfformiadau cyntaf", @@ -428,7 +428,7 @@ "DownloadsValue": "{0} dadlwythiad", "DirectStreaming": "Ffrydio uniongyrchol", "DirectPlaying": "Chwarae uniongyrchol", - "DetectingDevices": "Dyfeisiau canfod", + "DetectingDevices": "Edrych am ddyfeisiau", "DeleteUser": "Dileu Defnyddiwr", "DeleteMedia": "Dileu cyfryngau", "DeleteImage": "Dileu'r Ddelwedd", @@ -456,7 +456,7 @@ "HeaderAddUser": "Ychwanegu Defnyddiwr", "HeaderAdditionalParts": "Rhannau Ychwanegol", "HeaderActiveRecordings": "Gweithredol Recordiadau", - "HeaderActiveDevices": "Gweithredol Dyfeisiau", + "HeaderActiveDevices": "Dyfeisiau Gweithredol", "HeaderAccessSchedule": "Amserlen Mynediad", "GuideProviderSelectListings": "Dewis Rhestriadau", "GuestStar": "Seren wadd", @@ -528,5 +528,70 @@ "Copied": "Wedi'i gopïo", "ConfirmEndPlayerSession": "Hoffech chi ddiffodd Jellyfin ar {0}?", "ConfirmDeleteItem": "Bydd dileu'r eitem hon yn ei dileu o'r system ffeiliau a'ch llyfrgell gyfryngau. Ydych chi'n siŵr eich bod eisiau parhau?", - "LabelDisplayLanguage": "Iaith arddangos:" + "LabelDisplayLanguage": "Iaith arddangos:", + "OptionEstimateContentLength": "Amcangyfrif hyd cyfrwng pan yn trawsgodio", + "SaveChanges": "Arbed newidiadau", + "MarkUnplayed": "Heb ei wylio", + "EnableQuickConnect": "Actifadu Cyswllt Cyflym ar y gweinydd hwn", + "QuickConnectInvalidCode": "Côd Cyswllt Cyflym annilys", + "HeaderAddUpdateImage": "Adio/Diweddaru Llun", + "Interview": "Cyfweliad", + "LabelSyncPlayNewGroupDescription": "Creu grŵp newydd", + "HeaderRunningTasks": "Tasgau sy'n rhedeg", + "TabScheduledTasks": "Amserlen Tasgau", + "PluginFromRepo": "{0} o'r storfa {1}", + "LabelRepositoryUrl": "URL Storfa", + "LabelRepositoryNameHelp": "Enw unigryw i wahaniaethu rhwng y storfa hon ac eraill a ychwanegwyd at eich gweinydd.", + "LabelRepositoryName": "Enw Storfa", + "HeaderNewRepository": "Storfa Newydd", + "TabMyPlugins": "Fy Ategion", + "HeaderDateIssued": "Dyddiad Dyroddi", + "LabelEnableIP6Help": "Actifadu swyddogaeth IPv6.", + "LabelEnableIP6": "Actifadu IPv6", + "LabelEnableIP4Help": "Actifadu swyddogaeth IPv4.", + "LabelEnableIP4": "Actifadu IPv4", + "LabelEnableHttps": "Actifadu HTTPS", + "HeaderServerAddressSettings": "Gosodiadau Cyfeiriad Gweinydd", + "HeaderTranscodingProfile": "Proffil Trawsgodio", + "LabelReasonForTranscoding": "Rheswm dros trawsgodio:", + "LabelTranscodingInfo": "Gwybodaeth Trawsgodio", + "Transcoding": "Trawsgodio", + "HeaderEditImages": "Golygu delweddau", + "ScanLibrary": "Sganio'r llyfrgell", + "SettingsSaved": "Gosodiadau wedi'i arbed.", + "LabelContentType": "Math y cyfrwng:", + "LabelDisplayName": "Enw arddangos:", + "LastSeen": "Gwelwyd {0}", + "HeaderMoreLikeThis": "Mwy fel hwn", + "LabelOriginalMediaInfo": "Gwybodaeth Cyfrwng Gwreiddiol", + "MoreMediaInfo": "Gwybodaeth Cyfrwng", + "MarkPlayed": "Wedi'i wylio", + "HeaderCastAndCrew": "Cast a Chriw", + "HeaderPasswordReset": "Ailosod Cyfrinair", + "HeaderHttpsSettings": "Gosodiadau HTTPS", + "HeaderFrequentlyPlayed": "Chwaraewyd yn Aml", + "HeaderForKids": "Ar gyfer plant", + "HeaderDeleteItems": "Dileu Eitemau", + "HeaderDeleteItem": "Dileu Eitem", + "HeaderDeleteDevice": "Dileu Dyfais", + "HeaderContinueReading": "Parhau i ddarllen", + "HeaderContinueListening": "Parhau i wrando", + "QuickConnectAuthorizeCode": "Mewnbynnwch y côd {0} i fewngyfnodi", + "QuickConnectAuthorizeFail": "Côd Cyswllt Cyflym anhysbys", + "LabelQuickConnectCode": "Côd Cyswllt Cyflym:", + "QuickConnect": "Cyswllt Cyflym", + "HeaderApiKeys": "Allweddi API", + "HeaderApiKey": "Allwedd API", + "HeaderAddUpdateSubtitle": "Adio/Diweddaru Isdeitl", + "Scene": "Golygfa", + "ServerNameIsShuttingDown": "Mae'r gweinydd {0} yn diffodd.", + "ServerNameIsRestarting": "Mae'r gweinydd {0} yn ailddechrau.", + "PleaseRestartServerName": "Ailgychwynnwch Jellyfin ar {0}.", + "LabelServerNameHelp": "Bydd yr enw yn cael ei ddefnyddio i adnabod eich gweinydd a bydd yn arfer defnyddio enw gwesteiwr y gweinydd.", + "LabelServerName": "Enw'r gweinydd:", + "LabelSyncPlayNewGroup": "Grŵp newydd", + "HeaderSyncPlaySelectGroup": "Ymuno grŵp", + "HeaderLatestRecordings": "Recordiadau Diweddaraf", + "HeaderLatestMusic": "Cerddoriaeth Diweddaraf", + "HeaderLatestMovies": "Ffilmiau Diweddaraf" } From 4335209b0ef4704d8506fbf4f988ce1207780dc0 Mon Sep 17 00:00:00 2001 From: Alan Azar Date: Mon, 2 May 2022 18:35:56 +0000 Subject: [PATCH 053/107] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)=20Translation:=20Jellyfin/Jellyfin=20Web=20Tr?= =?UTF-8?q?anslate-URL:=20https://translate.jellyfin.org/projects/jellyfin?= =?UTF-8?q?/jellyfin-web/nb=5FNO/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/strings/nb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index d156636241..e51ca2ed2f 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1519,7 +1519,7 @@ "Arranger": "Arrangør", "DeletedScene": "Slettet scene", "Trailer": "Trailer", - "PreferSystemNativeHwDecoder": "Foretrekk operativsystemets egne DXVA eller VA-API maskinvare-dekodere.", + "PreferSystemNativeHwDecoder": "Foretrekk operativsystemets egne DXVA eller VA-API maskinvare-dekodere", "VideoProfileNotSupported": "Videoformatets profil støttes ikke", "VideoLevelNotSupported": "Videoformatets nivå støttes ikke", "VideoFramerateNotSupported": "Videoens bildefrekvens støttes ikke", From 4e4fab86c3790613ddcb2bc8039a60993be8bbe6 Mon Sep 17 00:00:00 2001 From: Francisco de Borja Viera Prieto Date: Tue, 3 May 2022 06:22:36 +0000 Subject: [PATCH 054/107] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 6a4dc14878..392bd5fb05 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -402,7 +402,7 @@ "LabelCustomCertificatePath": "Ruta del certificado SSL personalizado:", "LabelCustomCertificatePathHelp": "Ruta a un archivo PKCS # 12 que contiene un certificado y una clave privada para habilitar el soporte de TLS en un dominio personalizado.", "LabelCustomCss": "Código CSS personalizado:", - "LabelCustomCssHelp": "Aplicar su código CSS personalizado para el theming/branding en la interfaz web.", + "LabelCustomCssHelp": "Aplicar su código CSS personalizado para el tema/estilo en la interfaz web.", "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:", @@ -1538,7 +1538,7 @@ "LabelSlowResponseTime": "Tiempo en ms a partir del cual una respuesta se considera lenta:", "LabelSlowResponseEnabled": "Registrar alerta si la respuesta del servidor es lenta", "LabelLocalCustomCss": "Estilos CSS personalizados que se aplican sólo a este cliente. Es posible que desee desactivar el CSS personalizado del servidor.", - "LabelDisableCustomCss": "Desactivar el código CSS personalizado para theming/branding proporcionado desde el servidor.", + "LabelDisableCustomCss": "Desactivar el código CSS personalizado para tema/estilo proporcionado desde el servidor.", "DisableCustomCss": "Desactivar el código CSS personalizado proporcionado por el servidor", "ErrorPlayerNotFound": "No se ha encontrado un reproductor para el medio solicitado.", "Engineer": "Ingeniero de sonido", @@ -1629,5 +1629,26 @@ "EnableRewatchingNextUpHelp": "Mostrar episodios vistos en la sección 'Volver a ver'.", "EnableRewatchingNextUp": "Activar Volver a ver", "Digital": "Digital", - "EnableEnhancedNvdecDecoderHelp": "Implementación experimental de NVDEC, no habilite esta opción a menos que encuentre errores de decodificación." + "EnableEnhancedNvdecDecoderHelp": "Implementación experimental de NVDEC, no habilite esta opción a menos que encuentre errores de decodificación.", + "ThemeSong": "Tema principal", + "Sample": "Muestra", + "Scene": "Escena", + "Interview": "Entrevista", + "DeletedScene": "Escena eliminada", + "BehindTheScenes": "Detrás de las cámaras", + "Trailer": "Trailer", + "Clip": "Mediometraje", + "SelectAll": "Seleccionar todo", + "DirectPlayError": "Hubo un error al iniciar la reproducción directa", + "UnknownAudioStreamInfo": "La información de la pista de audio es desconocida", + "UnknownVideoStreamInfo": "La información de la pista de video es desconocida", + "VideoBitrateNotSupported": "El bitrate del video no está soportado", + "AudioIsExternal": "La pista de audio es externa", + "LabelHardwareEncodingOptions": "Opciones de codificación por hardware:", + "StoryArc": "Arco argumental", + "Production": "Producción", + "OriginalAirDate": "Fecha de emisión original", + "MessageUnauthorizedUser": "No tienes autorización para acceder al servidor ahora mismo. Por favor contacta con el administrador del servidor para más información.", + "Localization": "Ubicación", + "HomeVideosPhotos": "Vídeos caseros y fotos" } From c9e2d11c5d33f04faa286894080b62ebf39115e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= Date: Tue, 3 May 2022 10:58:26 +0000 Subject: [PATCH 055/107] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index 88ff1c6132..174853a686 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -1467,5 +1467,20 @@ "MediaInfoSampleRate": "Aynı oran", "MediaInfoInterlaced": "Geçmeli", "MediaInfoContainer": "Konteyner", - "HomeVideosPhotos": "Ev Videolar ve Fotoğraflar" + "HomeVideosPhotos": "Ev Videolar ve Fotoğraflar", + "MessageNoPluginConfiguration": "Bu eklentinin kurulacak ayarı yok.", + "MessageNoGenresAvailable": "Bazı meta veri sağlayıcılarının türleri internetten çekmesini sağlayın.", + "MessageLeaveEmptyToInherit": "Ayarları bir üst öğeden veya genel varsayılan değerden devralmak için boş bırakın.", + "MessageInvalidForgotPasswordPin": "Geçersiz veya süresi dolmuş bir PIN kodu girildi. Lütfen tekrar deneyin.", + "MessageImageTypeNotSelected": "Lütfen açılır menüden bir resim türü seçin.", + "MessageForgotPasswordInNetworkRequired": "Parola sıfırlama işlemini başlatmak için lütfen ev ağınızda tekrar deneyin.", + "MessageForgotPasswordFileCreated": "Aşağıdaki dosya sunucunuzda oluşturuldu ve nasıl devam edileceğine ilişkin talimatları içeriyor:", + "MessageFileReadError": "Dosya okunurken bir hata oluştu. Lütfen tekrar deneyin.", + "MessageDownloadQueued": "İndirme sıraya alındı.", + "MessageDirectoryPickerLinuxInstruction": "Linux için Arch Linux, CentOS, Debian, Fedora, openSUSE veya Ubuntu üzerinde, hizmet kullanıcısına en azından depolama konumlarınıza okuma erişimi vermelisiniz.", + "MessageDirectoryPickerBSDInstruction": "BSD için, Jellyfin'in medyanıza erişebilmesi için 'FreeNAS Jail' depolama kurmanız gerekebilir.", + "MessageDeleteTaskTrigger": "Bu görev tetikleyicisini silmek istediğinizden emin misiniz?", + "MessageCreateAccountAt": "{0} adresinde bir hesap oluşturun", + "MessageConfirmRevokeApiKey": "Bu API anahtarını iptal etmek istediğinizden emin misiniz? Uygulamanın bu sunucuyla bağlantısı aniden sonlandırılacak.", + "MessageConfirmRemoveMediaLocation": "Bu konumu kaldırmak istediğinizden emin misiniz?" } From 43a05129423f76317d2064715d86c92a8c589849 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Tue, 3 May 2022 17:13:32 +0000 Subject: [PATCH 056/107] Translated using Weblate (Spanish (Argentina)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_AR/ --- src/strings/es-ar.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index ce6bfc109d..030bdd2007 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1639,5 +1639,6 @@ "ButtonExitApp": "Salir de la aplicación", "ButtonClose": "Cerrar", "ButtonBackspace": "Retroceso", - "AddToFavorites": "Añadir a favoritos" + "AddToFavorites": "Añadir a favoritos", + "EnableEnhancedNvdecDecoderHelp": "Implementación experimental de NVDEC, no habilite esta opción a menos que encuentre errores de decodificación." } From df53d6424c19a3d1586f3d6f36b0263a7dd0ced3 Mon Sep 17 00:00:00 2001 From: Weevild Date: Tue, 3 May 2022 18:26:28 +0000 Subject: [PATCH 057/107] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index db6e16c9fd..da7c1b4375 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -283,7 +283,7 @@ "HeaderLoginFailure": "Misslyckad inloggning", "HeaderMediaFolders": "Mediamappar", "HeaderMetadataSettings": "Metadatainställningar", - "HeaderMoreLikeThis": "Mer som denna", + "HeaderMoreLikeThis": "Mer som detta", "HeaderMusicQuality": "Musikkvalitet", "HeaderMyDevice": "Min enhet", "HeaderMyMedia": "Min media", @@ -1647,5 +1647,7 @@ "AllowEmbeddedSubtitlesHelp": "Avaktivera inbäddade undertexter. Kräver fullständig uppdatering av biblioteket.", "EnableRewatchingNextUpHelp": "Visa redan sedda avsnitt i \"Nästa på tur\".", "EnableRewatchingNextUp": "Aktivera 'se om' i \"Nästa på tur\"", - "ThemeVideo": "Temavideo" + "ThemeVideo": "Temavideo", + "EnableEnhancedNvdecDecoderHelp": "Experimentellt NVDEC genomförande. Aktivera ej detta om du upplever avkodningsfel.", + "HomeVideosPhotos": "Hemvideor och bilder" } From b6aa7701327550d1c51c15775beb5a8cc1455a1e Mon Sep 17 00:00:00 2001 From: Julien Veyssier Date: Wed, 4 May 2022 11:50:31 +0000 Subject: [PATCH 058/107] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 6fa174220c..2d0f65c27e 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -837,7 +837,7 @@ "NextUp": "À suivre", "No": "Non", "NoNewDevicesFound": "Aucun nouvel appareil détecté. Pour en ajouter un, fermez cette fenêtre et saisissez les informations de l'appareil manuellement.", - "MessageNoNextUpItems": "Aucun élément trouvé. Commencez à regarder vos émissions !", + "MessageNoNextUpItems": "Aucun élément trouvé. Commencez à regarder vos séries !", "MessageNoPluginConfiguration": "Cette extension n'a aucun paramètre à configurer.", "NoSubtitleSearchResultsFound": "Aucun résultat trouvé.", "NoSubtitlesHelp": "Les sous-titres ne seront pas chargés par défaut. Ils peuvent toujours être activés manuellement pendant la lecture.", @@ -1039,7 +1039,7 @@ "ShowIndicatorsFor": "Montrer les indicateurs pour :", "ShowTitle": "Montrer le titre", "ShowYear": "Voir l'année", - "Shows": "Émissions", + "Shows": "Séries", "Shuffle": "Aléatoire", "SimultaneousConnectionLimitHelp": "Le nombre maximal de flux simultanés autorisés. Une valeur nulle n'impose aucune limite.", "SkipEpisodesAlreadyInMyLibrary": "Ne pas enregistrer les épisodes déjà présents dans ma médiathèque", @@ -1097,7 +1097,7 @@ "Trailers": "Bandes-annonces", "Transcoding": "Transcodage", "Tuesday": "Mardi", - "TvLibraryHelp": "Consulter le {0}guide de nommage des émissions{1}.", + "TvLibraryHelp": "Consulter le {0}guide de nommage des séries{1}.", "Uniform": "Uniforme", "UninstallPluginConfirmation": "Êtes-vous sûr de vouloir désinstaller {0} ?", "HeaderUninstallPlugin": "Désinstaller Plug-in", @@ -1579,7 +1579,7 @@ "SetUsingLastTracksHelp": "Choisir la piste audio et les sous-titres les plus proches de la dernière vidéo lue.", "SetUsingLastTracks": "Utiliser les pistes de sous-titres et audio de l'élément précédent", "PlaybackErrorPlaceHolder": "Ceci est un emplacement pour les médias physiques que Jellyfin ne peut pas jouer. Merci d'insérer le disque pour lancer la lecture.", - "LabelMaxDaysForNextUpHelp": "Définir le nombre de jours d'inactivité avant qu'une émission ne soit automatiquement ôtée de la section 'À suivre'.", + "LabelMaxDaysForNextUpHelp": "Définir le nombre de jours d'inactivité avant qu'une série ne soit automatiquement ôtée de la section 'À suivre'.", "LabelMaxDaysForNextUp": "Délai d'expiration dans 'À suivre' :", "MediaInfoTitle": "Titre", "Typewriter": "Machine à écrire", @@ -1588,7 +1588,7 @@ "Console": "Console", "Casual": "Décontracté", "TypeOptionPluralVideo": "Vidéos", - "TypeOptionPluralSeries": "Émissions TV", + "TypeOptionPluralSeries": "Séries TV", "TypeOptionPluralSeason": "Saisons", "TypeOptionPluralMusicVideo": "Vidéos musicales", "TypeOptionPluralMusicArtist": "Artistes musicaux", @@ -1631,7 +1631,7 @@ "AllowEmbeddedSubtitles": "Désactiver les sous-titres intégrés", "ShowParentImages": "Afficher les images de la série", "NextUpRewatching": "Revoir", - "MixedMoviesShows": "Films et émissions", + "MixedMoviesShows": "Films et séries", "AddToFavorites": "Ajouter aux favoris", "CopyFailed": "Impossible de copier", "Copy": "Copier", From 5f253033b8f313b3f985baaf8e61bdc2ae673b57 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Wed, 4 May 2022 20:31:15 +0000 Subject: [PATCH 059/107] Translated using Weblate (Spanish (Argentina)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_AR/ --- src/strings/es-ar.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 030bdd2007..030c5f7c9c 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1640,5 +1640,6 @@ "ButtonClose": "Cerrar", "ButtonBackspace": "Retroceso", "AddToFavorites": "Añadir a favoritos", - "EnableEnhancedNvdecDecoderHelp": "Implementación experimental de NVDEC, no habilite esta opción a menos que encuentre errores de decodificación." + "EnableEnhancedNvdecDecoderHelp": "Implementación experimental de NVDEC, no habilite esta opción a menos que encuentre errores de decodificación.", + "HomeVideosPhotos": "Videos y fotos caseros" } From 728aeb4b17002a568a40715a2220eae6bc752494 Mon Sep 17 00:00:00 2001 From: lee89tw14 Date: Thu, 5 May 2022 11:54:44 +0000 Subject: [PATCH 060/107] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 119 +++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 57 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 47d9417630..bc445d96d7 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -69,11 +69,11 @@ "LabelContentType": "內容類型:", "LabelCountry": "國家/地區:", "LabelCurrentPassword": "當前的密碼:", - "LabelDay": "日:", + "LabelDay": "星期:", "LabelEnableDlnaClientDiscoveryInterval": "尋找用戶端時間間隔:", "LabelEnableDlnaDebugLogging": "記錄 DLNA 除錯資料到日誌", "LabelEnableDlnaDebugLoggingHelp": "將會建立非常大的日誌檔案,建議在進行故障排除時啟用。", - "LabelEnableDlnaPlayTo": "播放到 DLNA 設備", + "LabelEnableDlnaPlayTo": "啟用DLNA播放功能", "LabelEnableRealtimeMonitor": "啟用即時監控", "LabelEnableRealtimeMonitorHelp": "檔案的更改將在支援的檔案系統上立即處理。", "LabelEvent": "事件:", @@ -112,7 +112,7 @@ "MessageItemsAdded": "已新增項目。", "MessageNoMovieSuggestionsAvailable": "目前並沒有推薦的電影,開始觀看並對您的電影評分後,我們就會為您推薦您可能會喜歡的內容。", "MessageNothingHere": "這裡沒有什麼。", - "MessagePasswordResetForUsers": "下列使用者的密碼已被重新設置。該使用者現在可以使用在密碼重設時所使用之 PIN 代碼進行登入。", + "MessagePasswordResetForUsers": "下列使用者的密碼已被重新設置。該使用者現在可以使用在密碼重設時所使用之簡易 PIN code 進行登入。", "MessagePleaseEnsureInternetMetadata": "請確保已啟用從網際網路下載媒體資料。", "Monday": "星期一", "MoreUsersCanBeAddedLater": "也可於控制台內新增使用者。", @@ -127,7 +127,7 @@ "OptionAllowUserToManageServer": "允許該使用者管理伺服器", "OptionBluray": "藍光", "OptionCommunityRating": "社區評分", - "OptionCriticRating": "影評人評價", + "OptionCriticRating": "影評評價", "OptionDaily": "每日", "OptionDateAdded": "新增日期", "OptionDatePlayed": "播放日期", @@ -223,7 +223,7 @@ "AnyLanguage": "任何語言", "Anytime": "任何時間", "AroundTime": "大概", - "Art": "圖像", + "Art": "視覺圖", "Artists": "演出者", "AsManyAsPossible": "越多越好", "Ascending": "遞增", @@ -293,7 +293,7 @@ "CinemaModeConfigurationHelp": "劇院模式直接為您的客廳帶來劇院級體驗,同時還可以播放預告片和自定開場白。", "Collections": "合輯", "Composer": "作曲家", - "ConfigureDateAdded": "調整伺服器如何判定媒體庫的「新增日期」", + "ConfigureDateAdded": "設置如何在控制台 > 媒體庫 > NFOSettings 中確定「添加日期」的中繼資料", "ConfirmDeleteImage": "刪除圖片?", "ConfirmDeleteItems": "刪除這些項目會將檔案從系統和媒體庫中刪除。你真的要繼續嗎?", "ConfirmEndPlayerSession": "您要在 {0} 秒後將 Jellyfin關機嗎?", @@ -303,7 +303,7 @@ "DateAdded": "新增日期", "DatePlayed": "播放日期", "DeathDateValue": "死於: {0}", - "Default": "原本", + "Default": "預設", "ButtonAddScheduledTaskTrigger": "新增觸發器", "ColorPrimaries": "三原色", "ColorSpace": "色彩空間", @@ -418,7 +418,7 @@ "HeaderChapterImages": "章節圖片", "HeaderCodecProfile": "編碼設定檔", "HeaderCodecProfileHelp": "編碼器的設定檔標明了設備播放特定編碼時的限制;如果在限制之內則媒體將被轉檔,否則編碼器將被設定為直接播放。", - "HeaderConfigureRemoteAccess": "設定遠端控制", + "HeaderConfigureRemoteAccess": "設定遠端訪問", "HeaderConfirmPluginInstallation": "確認附加元件安裝", "HeaderConfirmProfileDeletion": "確認刪除個人資料", "HeaderConfirmRevokeApiKey": "重設 API 金鑰", @@ -484,7 +484,7 @@ "HeaderPassword": "密碼", "HeaderPasswordReset": "重設密碼", "HeaderPhotoAlbums": "相簿", - "HeaderPinCodeReset": "重設PIN碼", + "HeaderPinCodeReset": "重設簡易 PIN 碼", "HeaderPlayOn": "播放在", "HeaderPlayback": "媒體播放:", "HeaderPlaybackError": "播放錯誤", @@ -522,7 +522,7 @@ "Shows": "節目", "Songs": "歌曲", "Sync": "同步", - "ValueSpecialEpisodeName": "特典 - {0}", + "ValueSpecialEpisodeName": "特輯 - {0}", "AuthProviderHelp": "選擇用於驗證使用者密碼的身份驗證提供者。", "HeaderParentalRatings": "家長評級", "HeaderProfileInformation": "設定檔訊息", @@ -607,7 +607,7 @@ "LabelCustomCertificatePath": "自訂 SSL 證書路徑:", "LabelCustomCertificatePathHelp": "提供包含證書和金鑰的 PKCS #12 文件的路徑以在自訂域名上啟用 TLS。", "LabelCustomCss": "自訂 CSS:", - "LabelCustomCssHelp": "於網頁介面套用您的自訂樣式。", + "LabelCustomCssHelp": "於網頁介面套用您自訂的標籤或品牌樣式。", "Depressed": "凹陷", "HeaderSelectMetadataPathHelp": "瀏覽或者輸入路徑以用於保存中繼資料,請確保資料夾可以寫入。", "HeaderSelectServerCachePathHelp": "瀏覽或者輸入路徑以用於伺服器快取檔案。請確保該資料夾可以被寫入。", @@ -791,7 +791,7 @@ "LabelDownMixAudioScaleHelp": "縮混時增強音訊。其中一個音軌將保持原始音量。", "LabelDownloadLanguages": "下載語言:", "LabelDynamicExternalId": "{0} Id:", - "LabelEasyPinCode": "簡易代碼:", + "LabelEasyPinCode": "簡易 PIN 碼:", "LabelEnableAutomaticPortMap": "啟用自動埠映射", "LabelEnableSingleImageInDidlLimit": "限制單個嵌入式圖片", "LabelEndDate": "結束日期:", @@ -799,7 +799,7 @@ "LabelManufacturer": "製造商:", "LabelLoginDisclaimerHelp": "顯示在登入頁面底部的訊息。", "LabelManufacturerUrl": "製造商網址:", - "LabelMaxChromecastBitrate": "Chromecast 串流解析度:", + "LabelMaxChromecastBitrate": "Google Cast 串流解析度:", "LabelOriginalTitle": "原始標題:", "LabelSelectUsers": "選擇使用者:", "LabelSelectVersionToInstall": "選擇要安裝的版本:", @@ -824,11 +824,11 @@ "LabelGroupMoviesIntoCollections": "將電影分組", "LabelKodiMetadataDateFormat": "釋出日期格式:", "LabelIconMaxWidth": "Icon 最寬寬度:", - "LabelGroupMoviesIntoCollectionsHelp": "顯示電影清單時,屬於相同集合的電影將作為分組項目顯示。", + "LabelGroupMoviesIntoCollectionsHelp": "選擇檢視電影清單時,集合中的電影將作為一個分組項目顯示。", "LabelEncoderPreset": "預設編碼:", "LabelHardwareAccelerationType": "硬體加速:", "LabelImportOnlyFavoriteChannels": "僅限收藏的頻道", - "LabelInNetworkSignInWithEasyPassword": "啟用以簡易密碼進行區域網路登入", + "LabelInNetworkSignInWithEasyPassword": "啟用 簡易 PIN code 進行區域網路登入", "LabelH264Crf": "H.264 編碼 CRF:", "LabelMaxStreamingBitrate": "最大串流畫質:", "LabelMaxStreamingBitrateHelp": "指定最大串流位元率。", @@ -892,7 +892,7 @@ "OptionCaptionInfoExSamsung": "CaptionInfoEx(三星)", "People": "人物", "OptionEnableExternalContentInSuggestions": "在建議中啟用外部內容", - "OptionEnableM2tsMode": "啟用 M2ts 模式", + "OptionEnableM2tsMode": "啟用 M2TS 模式", "LabelKeepUpTo": "保持:", "LabelKidsCategories": "兒童分類:", "LabelKodiMetadataEnablePathSubstitution": "啟用路徑取代", @@ -929,13 +929,13 @@ "OptionEnableAccessToAllLibraries": "允許存取所有媒體庫", "OptionEnableForAllTuners": "開啟所有調諧器", "OptionExtractChapterImage": "開啟章節圖片擷取", - "OptionEnableM2tsModeHelp": "當編碼為 MPEGTS 時啟用 M2TS 模式。", + "OptionEnableM2tsModeHelp": "當編碼為 MPEG-TS 時啟用 M2TS 模式。", "OptionEquals": "等於", "OptionEstimateContentLength": "轉檔時,估計內容長度", "OptionExternallyDownloaded": "外部下載", "OptionHlsSegmentedSubtitles": "HLS 分段字幕", "OptionLoginAttemptsBeforeLockout": "在被封鎖之前可以登入失敗幾次。", - "OptionRequirePerfectSubtitleMatch": "只下載與我的影片檔案完美匹配的字幕", + "OptionRequirePerfectSubtitleMatch": "只下載與影片檔案完美匹配的字幕", "PlayCount": "播放次數", "Series": "電視劇", "SeriesCancelled": "電視劇已取消。", @@ -953,7 +953,7 @@ "StopRecording": "停止錄影", "LabelDefaultUserHelp": "確定哪些使用者媒體庫將顯示在連接裝置上。這可以為每個裝置提供不同的使用者設定檔。", "LabelEnableBlastAliveMessagesHelp": "若此伺服器無法被其他 UPnP 裝置偵測到,請啟用此選項。", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "決定進行 SSDP 搜尋之間的持續時間(以秒為單位)。", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "決定兩次 SSDP 搜尋之間的持續時間(以秒為單位)。", "LabelEnableDlnaPlayToHelp": "偵測您網路裡的設備並遠端控制它們。", "LabelExtractChaptersDuringLibraryScanHelp": "當媒體庫匯入影片並掃描時,將擷取章節圖片。否則,章節圖片將在之後的計畫任務中擷取,而媒體庫會更快完成掃描。", "LabelMoviePrefixHelp": "若前綴套用到電影標題,請在此處輸入它來方便伺服器能夠正確處理。", @@ -986,10 +986,10 @@ "LabelWeb": "網站:", "LabelXDlnaCapHelp": "決定在 urn:schemas-dlna-org:device-1-0 namespace 中的 X_DLNACAP 元素的內容。", "LabelXDlnaDocHelp": "決定在 urn:schemas-dlna-org:device-1-0 namespace 中的 X-Dlna doc 元素的內容。", - "LabelUserRemoteClientBitrateLimitHelp": "覆蓋伺服器重播設定中設置的預設全域值。", + "LabelUserRemoteClientBitrateLimitHelp": "覆蓋伺服器設定中的預設全域值。詳請參照 控制台 > 播放 > 串流。", "LabelTranscodingThreadCountHelp": "選擇轉檔時要使用的最大執行緒數,減少執行緒數將降低 CPU 使用率,但轉換速度可能不足以提供流暢的播放體驗。", - "LabelXDlnaCap": "X-DLNA 上限:", - "LabelXDlnaDoc": "X-DLNA 檔案:", + "LabelXDlnaCap": "裝置功能 ID:", + "LabelXDlnaDoc": "裝置類別 ID:", "LeaveBlankToNotSetAPassword": "您可以將此欄位留空來將密碼設定為無。", "LiveTV": "電視直播", "MapChannels": "映射頻道", @@ -1017,7 +1017,7 @@ "MessageNoAvailablePlugins": "沒有可用的附加元件。", "MessageNoServersAvailable": "無法自動偵測伺服器。", "MessageLeaveEmptyToInherit": "保留為空以繼承父項或全域預設值的設定。", - "MessageNoCollectionsAvailable": "分組能夠讓您享受個性化的影片、劇集和專輯。點擊+按鈕開始建立分組。", + "MessageNoCollectionsAvailable": "分組能夠讓您享受個性化的影片、劇集和專輯。點擊\"+\"按鈕開始建立分組。", "MessagePlayAccessRestricted": "此內容的播放受到限制,聯繫您的伺服器管理員以獲取更多訊息。", "MessagePluginConfigurationRequiresLocalAccess": "請直接登入你的本地伺服器以設定這個附加元件。", "MessagePluginInstallDisclaimer": "安裝 Jellyfin 社區成員建立的附加元件來讓您的 Jellyfin 獲取額外的功能最佳化您的使用體驗。但可能會對你的 Jellyfin 伺服器效能造成影響,如更長的媒體庫掃描時間、額外的背景資料處理與系統穩定性降低等。", @@ -1057,13 +1057,13 @@ "Overview": "概述", "PackageInstallCancelled": "{0} (版本 {1})安裝被取消。", "PlayAllFromHere": "從這裡開始全部播放", - "PleaseAddAtLeastOneFolder": "請點擊新增按鈕,新增至少一個資料夾到這個媒體庫。", + "PleaseAddAtLeastOneFolder": "請點擊\" + \"按鈕,並在資料夾區域中新增至少一個資料夾到這個媒體庫。", "PleaseConfirmPluginInstallation": "點擊「OK」以確認您已經閱讀了上述內容並希望繼續安裝附加元件。", "PleaseEnterNameOrId": "請輸入一個名稱或一個外部 ID。", "PleaseRestartServerName": "請重啟 Jellyfin 於 {0}。", "PleaseSelectTwoItems": "請至少選擇 2 個項目。", "PreferEmbeddedTitlesOverFileNames": "優先使用內建的標題而不是檔案名稱", - "PreferEmbeddedTitlesOverFileNamesHelp": "這將在沒有網路上的中繼資料或本地中繼資料可用時顯示預設標題。", + "PreferEmbeddedTitlesOverFileNamesHelp": "在本地及網路無可用中繼資料時顯示預設標題。", "Premiere": "首映", "Premieres": "首映", "Previous": "上一個", @@ -1091,7 +1091,7 @@ "LabelPleaseRestart": "改動將在手動重啟用戶端後生效。", "LabelProfileCodecsHelp": "以逗號分隔。留空則適用於所有編解碼器。", "OptionPlainStorageFoldersHelp": "所有資料夾在 DIDL 中顯示為「object.container.storageFolder 」,而不是一個更具體的類型,如「object.container.person.musicArtist」。", - "LabelInNetworkSignInWithEasyPasswordHelp": "你可以在你的家庭網路中使用你的簡易 PIN 碼登錄 Jellyfin 應用程式,僅在你使用外部網路時才需要輸入密碼,如果 PIN 碼留空,那麼在你的區域網路中便不需輸入密碼。", + "LabelInNetworkSignInWithEasyPasswordHelp": "你可以在你的區域網路中使用你的簡易 PIN code 登錄 Jellyfin 應用程式,僅在你使用外部網路時才需要輸入密碼,如果 PIN code 留空,那麼在你的區域網路中便不需輸入密碼。", "LabelReleaseDate": "釋出日期:", "LabelRemoteClientBitrateLimit": "網際網路串流傳輸位元率限制(Mbps):", "LanNetworksHelp": "在強制頻寬限制時,認作本地網路上的 IP 位址或 IP/子網域遮罩項目的逗號分隔清單。若設置此項,所有其它 IP 位址將被視作在外部網路上,並且將受到外部頻寬限制。如果保留為空,則只將伺服器的子網域遮罩作本地網路。", @@ -1101,16 +1101,16 @@ "OptionRequirePerfectSubtitleMatchHelp": "僅下載經過測試並確認跟此影片檔案完美匹配的字幕。取消勾選這個項目可以增加找到並下載字幕的可能性,但可能會下載時間軸、翻譯不正確的字幕。", "MessagePluginInstalled": "附加元件安裝成功,但需要重新啟動 Jellyfin 伺服器以使附加元件生效。", "MessageChangeRecordingPath": "更改錄製資料夾不會將現有錄製從舊位置遷移到新的,您需要手動移動它們。", - "LabelEmbedAlbumArtDidl": "於 Didl 中嵌入專輯封面", + "LabelEmbedAlbumArtDidl": "於 DIDL 中嵌入專輯封面", "LabelEnableAutomaticPortMapHelp": "透過 UPnP 自動將路由器上的公共埠轉發到伺服器上的本地埠。這可能不適用於某些路由器型號或網路設定。在伺服器重新啟動後才會進行更改。", "LabelEmbedAlbumArtDidlHelp": "有些裝置使用這個方式來取得專輯封面,啟用這個選項可能導致其他設備播放失敗。", "SettingsWarning": "更改這些值可能會導致不穩定或連線故障。如果您遇到任何問題,建議將它們重新更改為預設值。", - "LabelEnableSingleImageInDidlLimitHelp": "若在 Didl 中嵌入多個圖片,某些裝置可能無法正常顯示。", + "LabelEnableSingleImageInDidlLimitHelp": "若在 DIDL 中嵌入多個圖片,某些裝置可能無法正常顯示。", "SortByValue": "排序方式:{0}", "LabelLineup": "排隊:", "LabelLocalHttpServerPortNumber": "本地 HTTP 埠:", "LabelLocalHttpServerPortNumberHelp": "HTTP 伺服器的 TCP 埠。", - "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "此設定也會影響透過此裝置投放的 Chromecast。", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "此設定也會影響透過此裝置投放的 Google Cast。", "LabelLoginDisclaimer": "登入字句:", "LabelLogs": "日誌:", "SubtitleDownloadersHelp": "按優先順序啟用並排列您的首選字幕下載程式。", @@ -1127,7 +1127,7 @@ "LabelRecordingPathHelp": "指定用於存儲轉檔的位置,留空將使用伺服器的程式根目錄。", "LabelRemoteClientBitrateLimitHelp": "所有網路裝置都能夠調整流位元率限制,這對於防止設備請求比網路連接所能處理的更高的位元率非常有用。這可能會導致伺服器上的 CPU 負載增加,以便將影片轉檔到較低的位元率。", "SmartSubtitlesHelp": "當音訊為外語時,將載入與語言偏好匹配的字幕。", - "SubtitleAppearanceSettingsDisclaimer": "這些設定將不會套用在圖形字幕(如 PGS、DVD 等),或者一些有著自己的內建樣式的字幕(ASS/SSA)。", + "SubtitleAppearanceSettingsDisclaimer": "這些設定不會套用在圖形字幕(如 PGS、DVD 等),或者一些有著自己的內建樣式的字幕(如 ASS/SSA)。", "UserAgentHelp": "提供自訂的使用者代理 HTTP 標頭。", "LabelRuntimeMinutes": "播放時間:", "LabelScheduledTaskLastRan": "最後執行 {0},花費時間 {1}。", @@ -1143,7 +1143,7 @@ "LabelSpecialSeasonsDisplayName": "SP 季顯示名稱:", "LabelSportsCategories": "體育分類:", "LabelStartWhenPossible": "當可能時自動開始:", - "LabelVaapiDevice": "VA API 裝置:", + "LabelVaapiDevice": "VA-API 裝置:", "DashboardArchitecture": "架構:{0}", "MediaInfoSampleRate": "採樣率", "MessageContactAdminToResetPassword": "請聯絡您的管理員來重設密碼。", @@ -1210,7 +1210,7 @@ "ViewPlaybackInfo": "查看播放訊息", "XmlTvSportsCategoriesHelp": "有這些類別的節目會被當作體育節目,以「|」來分隔多個項目。", "XmlTvPathHelp": "XML 電視檔案的路徑,Jellyfin 將讀取該檔案並定期檢查其更新,您負責建立和更新檔案。", - "MessageInvalidForgotPasswordPin": "簡易代碼錯誤或已過期,請重試。", + "MessageInvalidForgotPasswordPin": "簡易 PIN code 錯誤或已過期,請重試。", "OptionAllowVideoPlaybackTranscoding": "允許播放需要轉檔的影片", "Small": "小", "Smaller": "更小", @@ -1219,12 +1219,12 @@ "LabelDisplaySpecialsWithinSeasons": "顯示劇集季度中的特集", "LabelNumberOfGuideDaysHelp": "下載多日的節目指南可以幫你進一步查看節目列表並做出提前安排,但下載過程也將耗時更久。它將基於頻道數量自動選擇。", "LabelOptionalNetworkPath": "分享的網路資料夾:", - "OptionResElement": "res 元素", - "PinCodeResetComplete": "PIN 碼已被重設。", - "PinCodeResetConfirmation": "你確定要重設 PIN 碼?", + "OptionResElement": "'res' 元素", + "PinCodeResetComplete": "簡易 PIN code 已被重設。", + "PinCodeResetConfirmation": "你確定要重設簡易 PIN code 嗎?", "PasswordResetProviderHelp": "選擇重設密碼提供者以便使用者重設密碼。", "PlaceFavoriteChannelsAtBeginning": "將喜愛的頻道置頂", - "PlaybackData": "恢復播放資料", + "PlaybackData": "播放資料", "OptionRandom": "隨機", "XmlDocumentAttributeListHelp": "這些屬性會在每一個 XML 回應的根元素上套用。", "SkipEpisodesAlreadyInMyLibraryHelp": "劇集將使用季和劇集編號進行比較。", @@ -1244,7 +1244,7 @@ "ClientSettings": "用戶端設定", "AllowFfmpegThrottlingHelp": "當轉檔或重組進度遠超於目前播放進度時,將暫停轉檔節省消耗的資源。在不常跳播的時候最有效。如果遇到播放問題,請關閉此功能。", "AllowFfmpegThrottling": "限制轉檔", - "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "這將會使用內建中繼資料。", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "當內建中繼資料可用時將使用內建的劇集資料。", "PlaybackErrorNoCompatibleStream": "用戶端與該媒體不相容,伺服器也未傳送相容的媒體格式。", "PreferEmbeddedEpisodeInfosOverFileNames": "優先使用內建劇集資訊而不是檔案名稱", "Artist": "演出者", @@ -1283,7 +1283,7 @@ "EnableFasterAnimations": "更快的動畫", "LabelRequireHttps": "強制 HTTPS", "LabelStable": "穩定版", - "LabelChromecastVersion": "Chromecast 版本", + "LabelChromecastVersion": "Google Cast 版本", "LabelEnableHttpsHelp": "監聽指定的 HTTPS 埠。須設定有效的證書使其生效。", "LabelEnableHttps": "啟用 HTTPS", "HeaderServerAddressSettings": "伺服器位置設定", @@ -1291,8 +1291,8 @@ "HeaderHttpsSettings": "HTTPS 設定", "EnableDetailsBannerHelp": "在項目詳細訊息頁面的頂部顯示橫幅。", "EnableDetailsBanner": "詳情橫幅", - "EnableDecodingColorDepth10Vp9": "啟用 VP9 10-Bit 硬體解碼", - "EnableDecodingColorDepth10Hevc": "啟用 HEVC 10-Bit 硬體解碼", + "EnableDecodingColorDepth10Vp9": "啟用 VP9 10-bit 硬體解碼", + "EnableDecodingColorDepth10Hevc": "啟用 HEVC 10-bit 硬體解碼", "LabelSyncPlayPlaybackDiff": "播放時間差距:", "LabelSyncPlayTimeOffset": "伺服器時間延遲:", "LabelRepositoryUrlHelp": "儲存庫的位置。", @@ -1304,7 +1304,7 @@ "SaveChanges": "儲存", "ShowLess": "顯示更少", "ShowMore": "顯示更多", - "SyncPlayAccessHelp": "選取該使用者對同步播放的存取權。此功能能讓你與其他裝置同步播放進度。", + "SyncPlayAccessHelp": "啟用同步播放功能讓你與其他裝置同步播放進度。 選擇使用者對此功能的存取權限。", "EnableBlurHash": "啟用模糊的占位圖片", "EnableBlurHashHelp": "尚未讀取完畢的圖片會先顯示模糊的版本。", "ClearQueue": "清空佇列", @@ -1411,15 +1411,15 @@ "LabelTonemappingDesat": "色調映射降低飽和度:", "TonemappingRangeHelp": "選擇輸出顏色範圍。選自動則與輸入範圍相同。", "LabelTonemappingRange": "色調映射範圍:", - "TonemappingAlgorithmHelp": "色調映射可以微調。如果你不是很熟悉這些選項,保持預設即可。建議值為 Hable。", + "TonemappingAlgorithmHelp": "色調映射可以微調。如果你不是很熟悉這些選項,保持預設即可。建議值為 \"BT.2390\"。", "LabelTonemappingAlgorithm": "選擇要使用的色調映射算法:", - "AllowTonemappingHelp": "色調映射可以將影片的動態範圍從 HDR 變換成 SDR,同時保持圖像細節與顏色等對於表現原始場景非常重要的資訊。目前僅在轉碼內嵌 HDR10 或 HLG 元數據的影片時生效。如果播放不順暢或失敗,請考慮關閉對應的硬體解碼器。", + "AllowTonemappingHelp": "色調映射可以將影片的動態範圍從 HDR 變換成 SDR,同時保持圖像細節與顏色等對於表現原始場景非常重要的資訊。目前僅針對 HDR10 或 HLG 影片有效。此一選項需要對應的 OpenCL 或 CUDA runtime。", "EnableTonemapping": "啟用色調映射", "LabelOpenclDeviceHelp": "此 OpenCL 設備用來色調映射。點的左側為平台號碼,右側為此平台上的設備號碼。默認值為 0.0。需要有 OpenCL 硬體加速功能的 FFmpeg 應用程式。", "LabelColorPrimaries": "三原色:", "MediaInfoColorPrimaries": "三原色", "UseDoubleRateDeinterlacingHelp": "此設定使用去交錯時的刷新頻率,通常稱為 Bob 去交錯。它將影片的幀率加倍,以提供完整的運動效果,就類似在電視上觀看隔行掃描的影片看到的那樣。", - "LabelMaxMuxingQueueSizeHelp": "等待所有流初始化時可緩衝的最大封包數。如果在 ffmpeg 日誌中仍然遇到 \"Too many packets buffered for output stream\" 錯誤,請嘗試增加該值。建議值為 2048。", + "LabelMaxMuxingQueueSizeHelp": "等待所有流初始化時可緩衝的最大封包數。如果在 FFmpeg 日誌中仍然遇到 \"Too many packets buffered for output stream\" 錯誤,請嘗試增加該值。建議值為 2048。", "LabelTonemappingParamHelp": "調整色調映射算法。建議值和預設值均為 NaN。通常將其留空。", "LabelTonemappingParam": "色調映射參數:", "LabelTonemappingPeakHelp": "用該值覆蓋信號/標稱/參考峰值。當顯示元數據中嵌入的峰值資訊不可靠時,或從較低範圍到較高範圍的色調映射時,此選項很有用。建議值和預設值分別為 100 和 0。", @@ -1473,8 +1473,8 @@ "LabelMinAudiobookResumeHelp": "將在此時間前停止播放的媒體當作尚未播放。", "LabelMaxAudiobookResumeHelp": "將剩下的部分小於此時長後停止播放的媒體當作已播畢。", "LabelIsForced": "強制", - "LabelHDHomerunPortRangeHelp": "將HD Homerun UDP 端口範圍限制至該值內。(預設值為 1024 - 645535)。", - "LabelHDHomerunPortRange": "HD Homerun 端口範圍:", + "LabelHDHomerunPortRangeHelp": "將HDHomeRun UDP 端口範圍限制至該值內。(預設值為 1024 - 645535)。", + "LabelHDHomerunPortRange": "HDHomeRun 端口範圍:", "LabelH265Crf": "H.265 編碼 CRF:", "LabelEnableSSDPTracingHelp": "將 SSDP 追蹤詳細資料記錄至日誌。
    警告:這將導致效能嚴重損失。", "LabelEnableSSDPTracing": "啟用 SSDP 追蹤:", @@ -1513,7 +1513,7 @@ "EnableGamepadHelp": "監聽所有來自游戲遙控器的輸入。", "LabelEnableGamepad": "啟用遊戲手把", "Controls": "控制", - "AllowVppTonemappingHelp": "不使用OpenCL過濾器的硬體色調映射。目前僅在轉碼 HDR10 中繼資料的影片時使用。", + "AllowVppTonemappingHelp": "完全基於Intel驅動的色調映射。目前只針對部分硬體及HDR10影片有效。此一選項比OpenCL實作有更高的優先級。", "EnableVppTonemapping": "啟用VPP色調映射", "EnableEnhancedNvdecDecoder": "啟用加強NVDEC解碼器", "MessagePlaybackError": "在您的 Google Cast 接收器上播放此檔案時發生錯誤。", @@ -1524,14 +1524,14 @@ "LabelOriginalMediaInfo": "原始媒體資訊", "LabelRemuxingInfo": "重新封裝資訊", "Remuxing": "重新封裝中", - "UseEpisodeImagesInNextUpHelp": "接下來和繼續觀看區塊將不採用該劇的縮圖而使用該集的圖片作為縮圖。", - "UseEpisodeImagesInNextUp": "在接下來和繼續觀看區塊中使用劇集圖片", + "UseEpisodeImagesInNextUpHelp": "\"接下來\"和\"繼續觀賞\"區塊將不採用該劇的縮圖而使用該集的圖片作為縮圖。", + "UseEpisodeImagesInNextUp": "在\"接下來\"和\"繼續觀賞\"區塊中使用劇集圖片", "TextSent": "訊息送出。", "SyncPlayGroupDefaultTitle": "{0}的群組", "PluginFromRepo": "{0} 來自倉儲 {1}", "MessageSent": "訊息送出。", "LabelSlowResponseTime": "反應緩慢判斷時間(毫秒):", - "LabelSlowResponseEnabled": "當伺服器反應過慢時記錄警告", + "LabelSlowResponseEnabled": "當伺服器應答過慢時記錄警告訊息", "LabelMinAudiobookResume": "恢復播放有聲書的最短時間:", "LabelMaxAudiobookResume": "恢復播放有聲書的剩餘時間:", "LabelLocalCustomCss": "自訂CSS樣式僅使用於此客戶端。你可能會想要停用伺服器自訂CSS。", @@ -1547,26 +1547,26 @@ "OtherArtist": "其他作家", "Mixer": "混音師", "Lyricist": "作詞", - "Engineer": "工程師", + "Engineer": "聲音工程師", "Conductor": "指揮", "Arranger": "編曲", "LabelSyncPlaySettingsMinDelaySkipToSync": "SkipToSync 最低延遲:", - "LabelSyncPlaySettingsSpeedToSyncDurationHelp": "使用SpeedToSync來校正播放位置所需的時間。", + "LabelSyncPlaySettingsSpeedToSyncDurationHelp": "使用SpeedToSync來校正播放位置所需的毫秒。", "LabelSyncPlaySettingsSpeedToSyncDuration": "SpeedToSync長度:", - "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "在最大值的播放延遲後將SpeedToSync轉為採用SkipToSync。", + "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "在最大值的播放延遲(毫秒)後將SpeedToSync轉為採用SkipToSync。", "LabelSyncPlaySettingsMaxDelaySpeedToSync": "SpeedToSync最大延遲:", - "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "在SpeedToSync嘗試校正播放位置後的最低播放延遲。", + "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "在SpeedToSync嘗試校正播放位置後的最低播放延遲(以毫秒為單位)。", "LabelSyncPlaySettingsMinDelaySpeedToSync": "SpeedToSync最低延遲:", "LabelSyncPlaySettingsSyncCorrectionHelp": "透過加速媒體或透過尋找大概位置來啓用播放的主動同步。在嚴重卡頓時請不要開啟這個功能。", "LabelSyncPlaySettingsSyncCorrection": "同步校正", - "LabelSyncPlaySettingsExtraTimeOffsetHelp": "手動調整與所選的時間同步裝置的時間偏移。小心調整。", + "LabelSyncPlaySettingsExtraTimeOffsetHelp": "手動調整與所選的時間同步裝置的時間偏移(以毫秒為單位)。小心調整。", "LabelSyncPlaySettingsExtraTimeOffset": "額外時間偏移:", "LabelSyncPlaySettingsDescription": "變更SyncPlay設定", "HeaderSyncPlayTimeSyncSettings": "時間同步", "HeaderSyncPlayPlaybackSettings": "回放", "HeaderSyncPlaySettings": "SyncPlay設定", "LabelSyncPlaySettingsSpeedToSync": "啟用SpeedToSync", - "LabelSyncPlaySettingsMinDelaySkipToSyncHelp": "SkipToSync嘗試校正播放位置後的最小延遲。", + "LabelSyncPlaySettingsMinDelaySkipToSyncHelp": "SkipToSync嘗試校正播放位置後的最小延遲(毫秒)。", "ErrorPlayerNotFound": "找不到這個媒體所需的播放器。", "LabelSyncPlaySettingsSkipToSyncHelp": "同步校正方法包括尋找估計位置。必須啓用同步校正。", "LabelSyncPlaySettingsSkipToSync": "啟用SkipToSync", @@ -1586,5 +1586,10 @@ "Copy": "複製", "Copied": "複製", "Casual": "休閒", - "AddToFavorites": "添加到收藏" + "AddToFavorites": "添加到收藏", + "LabelAutomaticallyAddToCollection": "自動加入合輯", + "GoogleCastUnsupported": "不支援Google Cast", + "EnableRewatchingNextUpHelp": "在「接下來」中顯示已觀看的影集。", + "EnableRewatchingNextUp": "在接下來介面中啟用再看一次", + "Digital": "數位的" } From c78e75b0ecdff497fbfcb0263d8f906c04fa77c9 Mon Sep 17 00:00:00 2001 From: angedam Date: Thu, 5 May 2022 15:02:12 +0000 Subject: [PATCH 061/107] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index a51e8a988f..b59c33fb64 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -280,11 +280,11 @@ "HeaderKeepRecording": "Mantieni la registrazione", "HeaderKeepSeries": "Mantieni Serie TV", "HeaderKodiMetadataHelp": "Per abilitare o disabilitare i metadati NFO, editare una libreria e configurare l'opzione nella sezione Metadati.", - "HeaderLatestEpisodes": "Ultimi Episodi Aggiunti", + "HeaderLatestEpisodes": "Episodi Aggiunti Di Recente", "HeaderLatestMedia": "Ultimi Media", - "HeaderLatestMovies": "Ultimi Film Aggiunti", - "HeaderLatestMusic": "Musica Recente", - "HeaderLatestRecordings": "Ultime registrazioni", + "HeaderLatestMovies": "Film Aggiunti Di recente", + "HeaderLatestMusic": "Musica Aggiunta Di Recente", + "HeaderLatestRecordings": "Registrazioni Aggiunte Di recente", "HeaderLibraries": "Librerie", "HeaderLibraryAccess": "Accesso libreria", "HeaderLibraryFolders": "Cartelle Libreria", @@ -698,7 +698,7 @@ "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}", + "LatestFromLibrary": "Ultime {0}", "LearnHowYouCanContribute": "Scopri come puoi contribuire.", "LibraryAccessHelp": "Seleziona le librerie da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.", "List": "Lista", @@ -937,7 +937,7 @@ "Raised": "Rilievo", "Rate": "Vota", "RecentlyWatched": "Visti di recente", - "RecommendationBecauseYouLike": "Perché ti piace {0}", + "RecommendationBecauseYouLike": "Poiché ti piace {0}", "RecommendationBecauseYouWatched": "Perché hai visto {0}", "RecommendationDirectedBy": "Diretto da {0}", "RecommendationStarring": "Protagonisti {0}", @@ -1110,7 +1110,7 @@ "Audio": "Audio", "Auto": "Auto", "Banner": "Banner", - "Blacklist": "Blacklist", + "Blacklist": "Lista Nera", "Box": "Scatola", "ButtonInfo": "Info", "ButtonOk": "Ok", @@ -1152,7 +1152,7 @@ "LabelSonyAggregationFlags": "Flag di aggregazione Sony:", "LabelUserLoginAttemptsBeforeLockout": "Tentativi di login falliti prima che l'utente sia bloccato:", "DashboardOperatingSystem": "Sistema Operativo: {0}", - "LabelXDlnaCap": "Device Capability ID:", + "LabelXDlnaCap": "ID capacità del dispositivo:", "MessageImageTypeNotSelected": "Per favore seleziona un'immagine dal menù a tendina.", "OptionProtocolHls": "Streaming in Diretta HTTP (HLS)", "OptionMax": "Massimo", @@ -1162,11 +1162,11 @@ "Whitelist": "Lista bianca", "LabelVideoBitrate": "Bitrate video:", "LabelVideoCodec": "Codec video:", - "LabelXDlnaDoc": "Device Class ID:", - "MediaInfoFramerate": "Framerate", + "LabelXDlnaDoc": "ID Classe del dispositivo:", + "MediaInfoFramerate": "Frequenza fotogrammi", "MessageImageFileTypeAllowed": "Solo file JPEG e PNG sono supportati.", "OptionIsHD": "HD", - "LabelPlayer": "Player:", + "LabelPlayer": "Riproduttore:", "MediaInfoCodec": "Codec", "LabelAudioBitDepth": "Profondità audio in bit:", "LabelAudioBitrate": "Bitrate Audio:", @@ -1217,7 +1217,7 @@ "PictureInPicture": "Mini-schermo", "ShowAdvancedSettings": "Mostra impostazioni avanzate", "Smaller": "Più piccolo", - "Studios": "Studios", + "Studios": "Studi", "SubtitleOffset": "Sfasamento Sottotitolo", "TV": "TV", "TabLogs": "Log", @@ -1325,7 +1325,7 @@ "ShowMore": "Mostra di più", "ShowLess": "Mostra meno", "ButtonCast": "Trasmetti al dispositivo", - "ButtonSyncPlay": "SyncPlay", + "ButtonSyncPlay": "Sincronizza Riproduzione", "EnableFasterAnimationsHelp": "Utilizza animazioni e transizioni veloci.", "EnableFasterAnimations": "Animazioni veloci", "EnableDecodingColorDepth10Vp9": "Abilita la decodifica hardware 10-bit per VP9", @@ -1339,7 +1339,7 @@ "LabelRepositoryUrl": "URL Repository", "HeaderNewRepository": "Nuovo Repository", "MessageNoRepositories": "Nessun repository.", - "ButtonPlayer": "Player", + "ButtonPlayer": "Riproduttore", "ViewAlbumArtist": "Visualizza artista dell'album", "Writers": "Scrittori", "ClearQueue": "Svuota la coda", @@ -1507,7 +1507,7 @@ "HeaderSelectFallbackFontPathHelp": "Esplora o inserisci il percorso della cartella contenete i font di riserva per i sottotitoli ASS/SSA.", "HeaderSelectFallbackFontPath": "Selezionare il percorso della cartella contenente i font di riserva", "LabelTonemappingThresholdHelp": "L'algoritmo di mappatura dei toni viene adattato per ogni scena e la soglia è utilizzata per rilevare cambiamenti di scena. Se la distanza tra la luminosità media del frame corrente e quella della scena corrente superano la soglia, la luminosità media e di picco della scena verranno ricalcolate. I valori predefiniti e raccomandati sono 0.8 e 0.2.", - "Framerate": "Framerate", + "Framerate": "Frequenza Fotogrammi", "LabelTonemappingPeakHelp": "Sovrascrive il segnale nominale/picco/di riferimento con questo valore. Utile quando le informazioni di picco incorporate nei metadati di visualizzazione non sono affidabili o quando si esegue la mappatura dei toni da una gamma inferiore a una gamma più alta. I valori consigliati e predefiniti sono 100 e 0.", "HeaderContinueReading": "Continua a leggere", "MessageSent": "Messaggio inviato.", @@ -1545,7 +1545,7 @@ "SetUsingLastTracksHelp": "Tenta di impostare la traccia Sottotitoli/Audio alla corrispondenza migliore all'ultimo video.", "SetUsingLastTracks": "Imposta Tracce Sottotitoli/Audio con l'elemento precedente", "Remixer": "Remixer", - "ReleaseGroup": "Release Group", + "ReleaseGroup": "Gruppo di Rilascio", "PreviousChapter": "Capitolo precedente", "PlaybackErrorPlaceHolder": "Questo è il segnaposto per un contenuto fisico che Jellyfin non può riprodurre. Inserire il disco per riprodurre.", "OtherArtist": "Altro Artista", @@ -1640,5 +1640,15 @@ "ButtonClose": "Chiudi", "Production": "Produzione", "MessageUnauthorizedUser": "Non sei autorizzato ad accedere al server in questo momento. Contatta l'amministratore del server per ulteriori dettagli.", - "EnableEnhancedNvdecDecoderHelp": "Implementazione sperimentale NVDEC, da abilitare solo se esistono errori di decodifica." + "EnableEnhancedNvdecDecoderHelp": "Implementazione sperimentale NVDEC, da abilitare solo se esistono errori di decodifica.", + "Sample": "Prova", + "Trailer": "Trailer", + "HomeVideosPhotos": "Home Video e Foto", + "EnableRewatchingNextUpHelp": "Abilita la visualizzazione degli episodi già visti nelle sezioni 'Prossimi'.", + "EnableRewatchingNextUp": "Abilita Vedere Di Nuovo Nei Prossimi", + "StoryArc": "Arco Narrativo", + "OriginalAirDate": "Data Originale Di Messa In Onda", + "Localization": "Localizzazione", + "ItemDetails": "Dettagli Titolo", + "Digital": "Digitale" } From 288763924392f400e09ae7d564e24f5235026b02 Mon Sep 17 00:00:00 2001 From: Kane Blueriver Date: Thu, 5 May 2022 16:52:39 +0000 Subject: [PATCH 062/107] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 6fbeecb1a5..384fab002a 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1649,5 +1649,6 @@ "OriginalAirDate": "原始播出日期", "Digital": "数字的", "MessageUnauthorizedUser": "您目前无权访问服务器。请联系您的服务器管理员以获取更多信息。", - "EnableEnhancedNvdecDecoderHelp": "实验性的 NVDEC 实现,除非你遇到了解码错误,否则不要启用此选项。" + "EnableEnhancedNvdecDecoderHelp": "实验性的 NVDEC 实现,除非你遇到了解码错误,否则不要启用此选项。", + "HomeVideosPhotos": "主页视频及照片" } From c19b8205d6fe8075868700fd6c5a04bdbe4324ba Mon Sep 17 00:00:00 2001 From: Weevild Date: Fri, 6 May 2022 16:59:37 +0000 Subject: [PATCH 063/107] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index da7c1b4375..ff57f3e553 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -687,7 +687,7 @@ "LibraryAccessHelp": "Ange vilka mediemappar den här användaren ska ha tillgång till. Administratörer har rätt att redigera alla mappar i metadatahanteraren.", "List": "Lista", "LiveBroadcasts": "Livesändningar", - "LiveTV": "Live-TV", + "LiveTV": "Direktsänd TV", "Logo": "Logotyp", "ManageRecording": "Hantera inspelning", "MapChannels": "Mappa kanaler", @@ -798,11 +798,11 @@ "OptionAdminUsers": "Administratörer", "OptionAllUsers": "Alla användare", "OptionAllowAudioPlaybackTranscoding": "Tillåt ljuduppspelning som kräver omkodning", - "OptionAllowBrowsingLiveTv": "Tillåt Live-TV åtkomst", + "OptionAllowBrowsingLiveTv": "Tillåt åtkomst för direktsänd TV", "OptionAllowContentDownloading": "Tillåt nedladdning av media", "OptionAllowLinkSharing": "Tillåt delning för sociala medier", "OptionAllowLinkSharingHelp": "Endast webbsidor med medieinformation delas. Mediefiler delas aldrig publikt. Delningar är tidsbegränsade och upphör efter {0} dagar.", - "OptionAllowManageLiveTv": "Tillåt hantering av Live-TV inspelningar", + "OptionAllowManageLiveTv": "Tillåt hantering av direktsända TV-inspelningar", "OptionAllowMediaPlayback": "Tillåt mediauppspelning", "OptionAllowMediaPlaybackTranscodingHelp": "Att förhindra åtkomst till omkodning kan orsaka uppspelningsfel i klienter på grund av mediaformat som inte stöds.", "OptionAllowRemoteControlOthers": "Tillåt fjärrstyrning av andra användare", @@ -836,7 +836,7 @@ "OptionEnableAccessToAllChannels": "Aktivera åtkomst till alla kanaler", "OptionEnableAccessToAllLibraries": "Aktivera åtkomst till alla bibliotek", "OptionEnableExternalContentInSuggestions": "Aktivera externt innehåll under förslag", - "OptionEnableExternalContentInSuggestionsHelp": "Tillåt internet trailers och livetv-program att visas under förslag på innehåll.", + "OptionEnableExternalContentInSuggestionsHelp": "Tillåt internet trailers och direktsända TV-program att visas under förslag på innehåll.", "OptionEnableForAllTuners": "Aktivera för alla TV-mottagare", "OptionEnableM2tsMode": "Tillåt M2TS-läge", "OptionEnableM2tsModeHelp": "Aktivera M2TS-läge när kodning sker till MPEG-TS.", @@ -850,8 +850,8 @@ "OptionHideUser": "Visa inte den här användaren på inloggningssidorna", "OptionHideUserFromLoginHelp": "Användbart för privata konton eller gömda administratörskonton. Användaren beöver logga in manuellt genom att skriva sitt användarnamn och lösenord.", "OptionHlsSegmentedSubtitles": "HLS-segmenterade undertexter", - "OptionIgnoreTranscodeByteRangeRequests": "Ignorera begäran om \"byte range\" vid omkodning", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Dessa anrop kommer att hanteras, men \"byte range\"-headern ignoreras.", + "OptionIgnoreTranscodeByteRangeRequests": "Ignorera begäran om byteomfång vid omkodning", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Dessa anrop kommer att hanteras, men byteomfångsheadern ignoreras.", "OptionImdbRating": "Betyg på IMDB", "OptionLikes": "Gillar", "OptionMissingEpisode": "Saknade avsnitt", @@ -1141,7 +1141,7 @@ "LabelAllowedRemoteAddresses": "Fjärr-IP-adressfilter:", "HttpsRequiresCert": "För att aktivera säkra anslutningar måste du tillhandahålla ett pålitligt SSL-certifikat, till exempel \"Let's Encrypt\". Vänligen ange ett certifikat eller inaktivera säkra anslutningar.", "HeaderTypeImageFetchers": "Bildhämtare ({0}):", - "HeaderLiveTvTunerSetup": "Ställ in Live-TV-mottagare", + "HeaderLiveTvTunerSetup": "Ställ in mottagare för direktsänd TV", "ButtonSplit": "Dela upp", "LabelCache": "Cache:", "LabelAlbum": "Album:", @@ -1199,7 +1199,7 @@ "OptionIsSD": "SD", "OptionIsHD": "HD", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionForceRemoteSourceTranscoding": "Tvinga omkodning på utomstående mediakällor, som t.ex. live-TV", + "OptionForceRemoteSourceTranscoding": "Tvinga omkodning på utomstående mediakällor, som t.ex. direktsänd TV", "Option3D": "3D", "Normal": "Normal", "NoCreatedLibraries": "Ser ut som du inte har skapat några bibliotek än. {0}Vill du skapa ett nu?{1}", @@ -1216,7 +1216,7 @@ "MessageImageTypeNotSelected": "Vänligen välj en bild typ från rullningslisten.", "MessageImageFileTypeAllowed": "Endast JPEG och PNG filer stöds.", "MessageConfirmAppExit": "Vill du avsluta?", - "MediaInfoLayout": "Design", + "MediaInfoLayout": "Layout", "MediaInfoContainer": "Behållare", "ManageLibrary": "Hantera bibliotek", "Live": "Direktsänt", @@ -1240,7 +1240,7 @@ "LabelTranscodingProgress": "Omkodning progress:", "LabelTranscodingFramerate": "Omkodning framerate:", "LabelTranscodes": "Omkodningar:", - "LabelTranscodePath": "Omkodning sökväg:", + "LabelTranscodePath": "Omkodningssökväg:", "PlaybackErrorNoCompatibleStream": "Klienten är inte kompatibel med medieformatet och servern skickar inte ett kompatibelt medieformat.", "AllowFfmpegThrottlingHelp": "När omkodningen går uppspelningen långt i förväg pausas den tills vidare för att spara resurser. Detta fungerar bäst när du tittar utan att spola mycket; stäng av om du upplever uppspelningsproblem.", "AllowFfmpegThrottling": "Begränsad omkodning", @@ -1485,7 +1485,7 @@ "LabelFallbackFontPath": "Sökväg till reservmapp för typsnitt:", "HeaderSelectFallbackFontPath": "Välj reservmapp för typsnitt", "HeaderSelectFallbackFontPathHelp": "Bläddra till eller mata in sökvägen till reservmappen för typsnitt att använda i framställningen av ASS/SSA-undertexter.", - "AllowTonemappingHelp": "Tonmappning kan förvandla en videos dynamiska omfång från HDR till SDR medans den bibehåller bildens detaljer och färger, som är mycket viktig information för att representera originalscenen. Fungerar för närvarande bara med HDR10 eller HLG-videos. Det här kräver motsvarande körning av OpenCL eller CUDA.", + "AllowTonemappingHelp": "Tonmappning kan omvandla en videos dynamiska omfång från HDR till SDR medans den bibehåller bildens detaljer och färger. Detta är viktig information för att kunna representera originalscenen. Fungerar för närvarande bara med HDR10 eller HLG-videos. Det här kräver motsvarande körning av OpenCL eller CUDA.", "AllowVppTonemappingHelp": "Helt Intel-baserad tonmappning. Fungerar för närvarande endast för viss hårdvara när videor omkodas med inbäddad HDR10-metadata. Detta har högre prioritet än andra tillämpningar av OpenCL.", "EnableVppTonemapping": "Aktivera VPP tonmappning", "EnableEnhancedNvdecDecoder": "Aktivera förbättrad NVDEC-avkodare", From 01d29bcf111597e1fd8af59c5a3a13f8bcef1d4d Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Wed, 5 Jan 2022 21:53:15 +0300 Subject: [PATCH 064/107] =?UTF-8?q?=EF=BB=BFmove=20SectionTitleContainer?= =?UTF-8?q?=20into=20its=20own=20Components?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dashboard/users/SectionTitleContainer.tsx | 25 +++++++++++++++++++ src/components/pages/NewUserPage.tsx | 16 ++---------- src/components/pages/UserEditPage.tsx | 15 ++--------- .../pages/UserLibraryAccessPage.tsx | 17 +++---------- src/components/pages/UserParentalControl.tsx | 15 ++--------- src/components/pages/UserPasswordPage.tsx | 15 ++--------- 6 files changed, 36 insertions(+), 67 deletions(-) create mode 100644 src/components/dashboard/users/SectionTitleContainer.tsx diff --git a/src/components/dashboard/users/SectionTitleContainer.tsx b/src/components/dashboard/users/SectionTitleContainer.tsx new file mode 100644 index 0000000000..2347fac8f7 --- /dev/null +++ b/src/components/dashboard/users/SectionTitleContainer.tsx @@ -0,0 +1,25 @@ +import React, { FunctionComponent } from 'react'; +import SectionTitleLinkElement from './SectionTitleLinkElement'; + +type IProps = { + title: string; +} + +const SectionTitleContainer: FunctionComponent = ({title}: IProps) => { + return ( +
    +
    +

    + {title} +

    + +
    +
    + ); +}; + +export default SectionTitleContainer; diff --git a/src/components/pages/NewUserPage.tsx b/src/components/pages/NewUserPage.tsx index 9c8110310c..f35e80a286 100644 --- a/src/components/pages/NewUserPage.tsx +++ b/src/components/pages/NewUserPage.tsx @@ -4,8 +4,7 @@ import Dashboard from '../../utils/dashboard'; import globalize from '../../scripts/globalize'; import loading from '../loading/loading'; import toast from '../toast/toast'; - -import SectionTitleLinkElement from '../dashboard/users/SectionTitleLinkElement'; +import SectionTitleContainer from '../dashboard/users/SectionTitleContainer'; import InputElement from '../dashboard/users/InputElement'; import CheckBoxElement from '../dashboard/users/CheckBoxElement'; import CheckBoxListItem from '../dashboard/users/CheckBoxListItem'; @@ -178,18 +177,7 @@ const NewUserPage: FunctionComponent = () => { return (
    -
    -
    -

    - {globalize.translate('ButtonAddUser')} -

    - -
    -
    +
    { return (
    -
    -
    -

    - {userName} -

    - -
    -
    +
    { itemsArr.push({ Id: device.Id, Name: device.Name, - AppName : device.AppName, + AppName: device.AppName, checkedAttribute: checkedAttribute }); } @@ -228,18 +228,7 @@ const UserLibraryAccessPage: FunctionComponent = () => { return (
    -
    -
    -

    - {userName} -

    - -
    -
    +
    diff --git a/src/components/pages/UserParentalControl.tsx b/src/components/pages/UserParentalControl.tsx index 8c9c6b66b8..8774ccee1d 100644 --- a/src/components/pages/UserParentalControl.tsx +++ b/src/components/pages/UserParentalControl.tsx @@ -7,7 +7,7 @@ import BlockedTagList from '../dashboard/users/BlockedTagList'; import ButtonElement from '../dashboard/users/ButtonElement'; import CheckBoxListItem from '../dashboard/users/CheckBoxListItem'; import SectionTitleButtonElement from '../dashboard/users/SectionTitleButtonElement'; -import SectionTitleLinkElement from '../dashboard/users/SectionTitleLinkElement'; +import SectionTitleContainer from '../dashboard/users/SectionTitleContainer'; import SelectMaxParentalRating from '../dashboard/users/SelectMaxParentalRating'; import SectionTabs from '../dashboard/users/SectionTabs'; import loading from '../loading/loading'; @@ -319,18 +319,7 @@ const UserParentalControl: FunctionComponent = () => { return (
    -
    -
    -

    - {userName} -

    - -
    -
    +
    diff --git a/src/components/pages/UserPasswordPage.tsx b/src/components/pages/UserPasswordPage.tsx index 2eba530ae2..ef8bd3ca33 100644 --- a/src/components/pages/UserPasswordPage.tsx +++ b/src/components/pages/UserPasswordPage.tsx @@ -1,8 +1,8 @@ import React, { FunctionComponent, useCallback, useEffect, useState } from 'react'; -import SectionTitleLinkElement from '../dashboard/users/SectionTitleLinkElement'; import SectionTabs from '../dashboard/users/SectionTabs'; import UserPasswordForm from '../dashboard/users/UserPasswordForm'; import { getParameterByName } from '../../utils/url'; +import SectionTitleContainer from '../dashboard/users/SectionTitleContainer'; const UserPasswordPage: FunctionComponent = () => { const userId = getParameterByName('userId'); @@ -23,18 +23,7 @@ const UserPasswordPage: FunctionComponent = () => { return (
    -
    -
    -

    - {userName} -

    - -
    -
    +
    Date: Sat, 7 May 2022 10:41:55 +0000 Subject: [PATCH 065/107] Translated using Weblate (Welsh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cy/ --- src/strings/cy.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/cy.json b/src/strings/cy.json index 0a61c883a0..aada638de9 100644 --- a/src/strings/cy.json +++ b/src/strings/cy.json @@ -593,5 +593,6 @@ "HeaderSyncPlaySelectGroup": "Ymuno grŵp", "HeaderLatestRecordings": "Recordiadau Diweddaraf", "HeaderLatestMusic": "Cerddoriaeth Diweddaraf", - "HeaderLatestMovies": "Ffilmiau Diweddaraf" + "HeaderLatestMovies": "Ffilmiau Diweddaraf", + "MixedMoviesShows": "Rhaglenni teledu a Ffilmiau Cymysg" } From 681cc71181249fea729923ba0669879eb69b3b08 Mon Sep 17 00:00:00 2001 From: pinks Date: Sat, 7 May 2022 15:58:47 +0000 Subject: [PATCH 066/107] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index be57ed902d..3ab7c39d80 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -1223,7 +1223,7 @@ "QuickConnectAuthorizeCode": "로그인하려면 {0} 코드를 입력하세요", "QuickConnectActivationSuccessful": "성공적으로 활성화되었습니다", "QuickConnect": "퀵커넥트", - "Profile": "프로파일", + "Profile": "프로필", "ProductionLocations": "프로덕션 위치", "Primary": "기본", "PreviousTrack": "이전으로 건너 뛰기", From 494a00a4f35cad74ef872da939e2c286c72a7dca Mon Sep 17 00:00:00 2001 From: dkadavarath Date: Sat, 7 May 2022 15:35:12 +0000 Subject: [PATCH 067/107] Translated using Weblate (Malayalam) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ml/ --- src/strings/ml.json | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/strings/ml.json b/src/strings/ml.json index a898ab8fa2..490f11e64d 100644 --- a/src/strings/ml.json +++ b/src/strings/ml.json @@ -12,7 +12,7 @@ "ButtonScanAllLibraries": "എല്ലാ ലൈബ്രറികളും സ്കാൻ ചെയ്യുക", "ButtonRevoke": "അസാധുവാക്കുക", "ButtonResume": "പുനരാരംഭിക്കുക", - "ButtonResetEasyPassword": "എളുപ്പമുള്ള പിൻ കോഡ് പുന reset സജ്ജമാക്കുക", + "ButtonResetEasyPassword": "എളുപ്പമുള്ള പിൻ കോഡ് പുനസജ്ജമാക്കുക", "ButtonRename": "പേരുമാറ്റുക", "ButtonRemove": "നീക്കംചെയ്യുക", "ButtonRefreshGuideData": "ഗൈഡ് ഡാറ്റ പുതുക്കുക", @@ -34,7 +34,7 @@ "ButtonForgotPassword": "പാസ്വേഡ് മറന്നോ", "ButtonEditOtherUserPreferences": "ഈ ഉപയോക്താവിന്റെ പ്രൊഫൈൽ, ഇമേജ്, വ്യക്തിഗത മുൻഗണനകൾ എന്നിവ എഡിറ്റുചെയ്യുക.", "ButtonChangeServer": "സെർവർ മാറ്റുക", - "ButtonCast": "അഭിനേതാക്കൾ", + "ButtonCast": "ബാഹിക ഉപകരണത്തിലേക്ക് അയക്കുക", "ButtonCancel": "റദ്ദാക്കുക", "ButtonBack": "തിരികെ", "ButtonAudioTracks": "ഓഡിയോ ട്രാക്കുകൾ", @@ -46,7 +46,7 @@ "ButtonAddMediaLibrary": "മീഡിയ ലൈബ്രറി ചേർക്കുക", "ButtonAddImage": "ചിത്രം ചേർക്കുക", "ButtonActivate": "സജീവമാക്കുക", - "BurnSubtitlesHelp": "വീഡിയോകൾ ട്രാൻസ്‌കോഡുചെയ്യുമ്പോൾ സെർവർ സബ്ടൈറ്റിലുകളിൽ കത്തിക്കണോ എന്ന് നിർണ്ണയിക്കുന്നു. ഇത് ഒഴിവാക്കുന്നത് പ്രകടനം വളരെയധികം മെച്ചപ്പെടുത്തും. ഇമേജ് അധിഷ്‌ഠിത ഫോർമാറ്റുകളും (VOBSUB, PGS, SUB, IDX,…) ചില ASS അല്ലെങ്കിൽ SSA സബ്ടൈറ്റിലുകളും കത്തിക്കാൻ യാന്ത്രിക തിരഞ്ഞെടുക്കുക.", + "BurnSubtitlesHelp": "വീഡിയോകൾ ട്രാൻസ്‌കോഡുചെയ്യുമ്പോൾ സെർവർ സബ്‌ടൈറ്റിലുകൾ വേർതിരിക്കാൻ ആവാത്ത തരത്തിൽ ചേർക്കണോ എന്ന് നിർണ്ണയിക്കുന്നു. ഇത് ഒഴിവാക്കുന്നത് പ്രകടനം വളരെയധികം മെച്ചപ്പെടുത്തും. ഇമേജ് അധിഷ്‌ഠിത ഫോർമാറ്റുകളും (VOBSUB, PGS, SUB, IDX,…) ചില ASS അല്ലെങ്കിൽ SSA സബ്ടൈറ്റിലുകളും കത്തിക്കാൻ യാന്ത്രിക തിരഞ്ഞെടുക്കുക.", "Browse": "ബ്രൗസുചെയ്യുക", "BoxSet": "ബോക്സ് സെറ്റ്", "BoxRear": "ബോക്സ് (പിൻ)", @@ -494,7 +494,7 @@ "Disc": "ഡിസ്ക്", "DirectStreaming": "നേരിട്ടുള്ള സ്ട്രീമിംഗ്", "DirectStreamHelp2": "നേരിട്ടുള്ള സ്ട്രീമിംഗ് ഉപയോഗിക്കുന്ന പവർ സാധാരണയായി ഓഡിയോ പ്രൊഫൈലിനെ ആശ്രയിച്ചിരിക്കുന്നു. വീഡിയോ സ്ട്രീം മാത്രമാണ് നഷ്ടമില്ലാത്തത്.", - "DirectStreamHelp1": "വീഡിയോ സ്ട്രീം ഉപകരണവുമായി പൊരുത്തപ്പെടുന്നു, പക്ഷേ പൊരുത്തപ്പെടാത്ത ഓഡിയോ ഫോർമാറ്റ് (DTS, TRUEHD, മുതലായവ) അല്ലെങ്കിൽ ഓഡിയോ ചാനലുകളുടെ എണ്ണം ഉണ്ട്. ഉപകരണത്തിലേക്ക് അയയ്‌ക്കുന്നതിന് മുമ്പ് വീഡിയോ സ്ട്രീം ഈച്ചയിൽ നഷ്ടമില്ലാതെ വീണ്ടും പാക്കേജുചെയ്യും. ഓഡിയോ സ്ട്രീം മാത്രമേ ട്രാൻസ്കോഡ് ചെയ്യുകയുള്ളൂ.", + "DirectStreamHelp1": "വീഡിയോ സ്ട്രീം ഉപകരണവുമായി പൊരുത്തപ്പെടുന്നു, പക്ഷേ പൊരുത്തപ്പെടാത്ത ഓഡിയോ ഫോർമാറ്റ് (DTS, TRUEHD, മുതലായവ) അല്ലെങ്കിൽ ഓഡിയോ ചാനലുകളുടെ എണ്ണം ഉണ്ട്. ഉപകരണത്തിലേക്ക് അയയ്‌ക്കുന്നതിന് മുമ്പ് വീഡിയോ സ്ട്രീം നഷ്ടമില്ലാതെ വീണ്ടും പാക്കേജുചെയ്യും. ഓഡിയോ സ്ട്രീം മാത്രമേ ട്രാൻസ്കോഡ് ചെയ്യുകയുള്ളൂ.", "DetectingDevices": "ഉപകരണങ്ങൾ കണ്ടെത്തുന്നു", "DeleteUserConfirmation": "ഈ ഉപയോക്താവിനെ ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?", "DeleteUser": "ഉപയോക്താവിനെ ഇല്ലാതാക്കുക", @@ -684,7 +684,7 @@ "QuickConnectDescription": "ദ്രുത കണക്റ്റ് ഉപയോഗിച്ച് പ്രവേശിക്കാൻ, നിങ്ങൾ ലോഗിൻ ചെയ്യുന്ന ഉപകരണത്തിലെ ദ്രുത കണക്റ്റ് ബട്ടൺ തിരഞ്ഞെടുത്ത് ചുവടെ പ്രദർശിപ്പിച്ച കോഡ് നൽകുക.", "CopyStreamURL": "സ്ട്രീം URL പകർത്തുക", "CopyStreamURLSuccess": "URL വിജയകരമായി പകർത്തി.", - "CriticRating": "വിമർശനാത്മക റേറ്റിംഗ്", + "CriticRating": "വിമർശകർ നിർണ്ണയിച്ച മതിപ്പ്", "CustomDlnaProfilesHelp": "ഒരു പുതിയ ഉപകരണം ടാർഗെറ്റുചെയ്യുന്നതിനോ സിസ്റ്റം പ്രൊഫൈൽ അസാധുവാക്കുന്നതിനോ ഒരു ഇഷ്‌ടാനുസൃത പ്രൊഫൈൽ സൃഷ്‌ടിക്കുക.", "DailyAt": "പ്രതിദിനം {0}", "DashboardArchitecture": "വാസ്തുവിദ്യ: {0}", @@ -1573,5 +1573,17 @@ "Arranger": "അറേഞ്ചർ", "AgeValue": "({0} വർഷം പഴക്കം)", "LabelOriginalName": "പ്രഥമമായ നാമം:", - "LabelSortName": "വേർതിരിക്കേണ്ടുന്ന പേര്:" + "LabelSortName": "വേർതിരിക്കേണ്ടുന്ന പേര്:", + "Digital": "ഡിജിറ്റൽ", + "Cursive": "കൂട്ടെഴുത്ത്", + "CopyFailed": "പകർത്താൻ കഴിഞ്ഞില്ല", + "Copy": "പകർത്തുക", + "Copied": "പകർത്തി", + "Console": "കൺസോൾ", + "Casual": "നിസ്സാരം", + "ButtonSpace": "സ്ഥലം", + "ButtonExitApp": "അപ്ലിക്കേഷനിൽ നിന്ന് പുറത്തു വരുക", + "ButtonClose": "അടയ്ക്കുക", + "ButtonBackspace": "ബാക്ക്സ്പേസ്", + "AddToFavorites": "പ്രിയപ്പെട്ടതിലേക്ക് ചേർക്കുക" } From 0c4851b0927e7333c9e78d3f06a894b498af8a88 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sat, 7 May 2022 22:10:01 +0300 Subject: [PATCH 068/107] move AccessContainer into its own Components --- .../dashboard/users/AccessContainer.tsx | 41 +++++ src/components/pages/NewUserPage.tsx | 99 +++++------ .../pages/UserLibraryAccessPage.tsx | 159 +++++++----------- 3 files changed, 146 insertions(+), 153 deletions(-) create mode 100644 src/components/dashboard/users/AccessContainer.tsx diff --git a/src/components/dashboard/users/AccessContainer.tsx b/src/components/dashboard/users/AccessContainer.tsx new file mode 100644 index 0000000000..7c3cda360e --- /dev/null +++ b/src/components/dashboard/users/AccessContainer.tsx @@ -0,0 +1,41 @@ +import React, { FunctionComponent } from 'react'; +import globalize from '../../../scripts/globalize'; +import CheckBoxElement from './CheckBoxElement'; + +type IProps = { + ContainerClassName?: string; + HeaderTitle?: string; + CheckBoxClassName?: string; + CheckBoxTitle?: string; + ListContainerClassName?: string; + AccessClassName?: string; + ListTitle?: string; + Description?: string; + children?: React.ReactNode +} + +const AccessContainer: FunctionComponent = ({ContainerClassName, HeaderTitle, CheckBoxClassName, CheckBoxTitle, ListContainerClassName, AccessClassName, ListTitle, Description, children }: IProps) => { + return ( +
    +

    {globalize.translate(HeaderTitle)}

    + +
    +
    +

    + {globalize.translate(ListTitle)} +

    +
    + {children} +
    +
    +
    + {globalize.translate(Description)} +
    +
    +
    + ); +}; + +export default AccessContainer; diff --git a/src/components/pages/NewUserPage.tsx b/src/components/pages/NewUserPage.tsx index f35e80a286..139bc4cc33 100644 --- a/src/components/pages/NewUserPage.tsx +++ b/src/components/pages/NewUserPage.tsx @@ -9,6 +9,7 @@ import InputElement from '../dashboard/users/InputElement'; import CheckBoxElement from '../dashboard/users/CheckBoxElement'; import CheckBoxListItem from '../dashboard/users/CheckBoxListItem'; import ButtonElement from '../dashboard/users/ButtonElement'; +import AccessContainer from '../dashboard/users/AccessContainer'; type userInput = { Name?: string; @@ -194,65 +195,47 @@ const NewUserPage: FunctionComponent = () => { label='LabelPassword' />
    + + {mediaFoldersItems.map(Item => ( + + ))} + -
    -

    {globalize.translate('HeaderLibraryAccess')}

    - -
    -
    -

    - {globalize.translate('HeaderLibraries')} -

    -
    - {mediaFoldersItems.map(Item => ( - - ))} -
    -
    -
    - {globalize.translate('LibraryAccessHelp')} -
    -
    -
    -
    -

    {globalize.translate('HeaderChannelAccess')}

    - -
    -
    -

    - {globalize.translate('Channels')} -

    -
    - {channelsItems.map(Item => ( - - ))} -
    -
    -
    - {globalize.translate('ChannelAccessHelp')} -
    -
    -
    + + {channelsItems.map(Item => ( + + ))} +
    { -
    -

    {globalize.translate('HeaderLibraryAccess')}

    - -
    -
    -

    - {globalize.translate('HeaderLibraries')} -

    -
    - {mediaFoldersItems.map(Item => { - return ( - - ); - })} -
    -
    -
    - {globalize.translate('LibraryAccessHelp')} -
    -
    -
    -
    -

    {globalize.translate('HeaderChannelAccess')}

    - -
    -
    -

    - {globalize.translate('Channels')} -

    -
    - {channelsItems.map(Item => ( - - ))} -
    -
    -
    - {globalize.translate('ChannelAccessHelp')} -
    -
    -
    -
    -
    -

    {globalize.translate('HeaderDeviceAccess')}

    - -
    -
    -

    - {globalize.translate('HeaderDevices')} -

    -
    - {devicesItems.map(Item => ( - - ))} -
    -
    -
    - {globalize.translate('DeviceAccessHelp')} -
    -
    -
    -
    + + {mediaFoldersItems.map(Item => ( + + ))} + + + + {channelsItems.map(Item => ( + + ))} + + + + {devicesItems.map(Item => ( + + ))} +
    Date: Sat, 7 May 2022 22:12:21 +0300 Subject: [PATCH 069/107] clean up --- src/components/pages/NewUserPage.tsx | 1 - src/components/pages/UserLibraryAccessPage.tsx | 1 - 2 files changed, 2 deletions(-) diff --git a/src/components/pages/NewUserPage.tsx b/src/components/pages/NewUserPage.tsx index 139bc4cc33..8d42140885 100644 --- a/src/components/pages/NewUserPage.tsx +++ b/src/components/pages/NewUserPage.tsx @@ -6,7 +6,6 @@ import loading from '../loading/loading'; import toast from '../toast/toast'; import SectionTitleContainer from '../dashboard/users/SectionTitleContainer'; import InputElement from '../dashboard/users/InputElement'; -import CheckBoxElement from '../dashboard/users/CheckBoxElement'; import CheckBoxListItem from '../dashboard/users/CheckBoxListItem'; import ButtonElement from '../dashboard/users/ButtonElement'; import AccessContainer from '../dashboard/users/AccessContainer'; diff --git a/src/components/pages/UserLibraryAccessPage.tsx b/src/components/pages/UserLibraryAccessPage.tsx index b4ad45490a..aadb3bc2f7 100644 --- a/src/components/pages/UserLibraryAccessPage.tsx +++ b/src/components/pages/UserLibraryAccessPage.tsx @@ -6,7 +6,6 @@ import libraryMenu from '../../scripts/libraryMenu'; import globalize from '../../scripts/globalize'; import toast from '../toast/toast'; import SectionTabs from '../dashboard/users/SectionTabs'; -import CheckBoxElement from '../dashboard/users/CheckBoxElement'; import CheckBoxListItem from '../dashboard/users/CheckBoxListItem'; import ButtonElement from '../dashboard/users/ButtonElement'; import { getParameterByName } from '../../utils/url'; From 2fc9741d57446f0156506e7245654d8c6ab492e6 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Sat, 7 May 2022 23:27:33 +0300 Subject: [PATCH 070/107] Add SectionTitleContainer in UserProfilesPage --- .../dashboard/users/SectionTitleContainer.tsx | 14 ++++++- src/components/pages/NewUserPage.tsx | 6 ++- src/components/pages/UserEditPage.tsx | 6 ++- .../pages/UserLibraryAccessPage.tsx | 6 ++- src/components/pages/UserParentalControl.tsx | 6 ++- src/components/pages/UserPasswordPage.tsx | 6 ++- src/components/pages/UserProfilesPage.tsx | 37 ++++++------------- 7 files changed, 48 insertions(+), 33 deletions(-) diff --git a/src/components/dashboard/users/SectionTitleContainer.tsx b/src/components/dashboard/users/SectionTitleContainer.tsx index 2347fac8f7..03d6478c2f 100644 --- a/src/components/dashboard/users/SectionTitleContainer.tsx +++ b/src/components/dashboard/users/SectionTitleContainer.tsx @@ -1,21 +1,31 @@ import React, { FunctionComponent } from 'react'; +import SectionTitleButtonElement from './SectionTitleButtonElement'; import SectionTitleLinkElement from './SectionTitleLinkElement'; type IProps = { title: string; + isBtnVisible?: boolean; + titleLink?: string; } -const SectionTitleContainer: FunctionComponent = ({title}: IProps) => { +const SectionTitleContainer: FunctionComponent = ({title, isBtnVisible, titleLink}: IProps) => { return (

    {title}

    + + {isBtnVisible && } +
    diff --git a/src/components/pages/NewUserPage.tsx b/src/components/pages/NewUserPage.tsx index 8d42140885..9642e29856 100644 --- a/src/components/pages/NewUserPage.tsx +++ b/src/components/pages/NewUserPage.tsx @@ -177,7 +177,11 @@ const NewUserPage: FunctionComponent = () => { return (
    - +
    { return (
    - +
    { return (
    - + { return (
    - +
    diff --git a/src/components/pages/UserPasswordPage.tsx b/src/components/pages/UserPasswordPage.tsx index ef8bd3ca33..91e7898c1f 100644 --- a/src/components/pages/UserPasswordPage.tsx +++ b/src/components/pages/UserPasswordPage.tsx @@ -23,7 +23,11 @@ const UserPasswordPage: FunctionComponent = () => { return (
    - +
    { return (
    -
    -
    -

    - {globalize.translate('HeaderUsers')} -

    - - -
    -
    - {users.map(user => { - return ; - })} -
    + + +
    + {users.map(user => { + return ; + })}
    From f6d60b2f5102542c7e9c6b51e9a18013eb1d8d8e Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sun, 8 May 2022 03:15:23 +0000 Subject: [PATCH 071/107] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index fff23bbce5..7ba0fb22ce 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1663,5 +1663,7 @@ "ItemDetails": "பொருள் விவரங்கள்", "EnableRewatchingNextUpHelp": "ஏற்கனவே பார்த்த எபிசோட்களை 'அடுத்து' பிரிவில் காட்டுவதை இயக்கவும்.", "EnableRewatchingNextUp": "அடுத்ததில் மீண்டும் பார்ப்பதை இயக்கவும்", - "Digital": "டிஜிட்டல்" + "Digital": "டிஜிட்டல்", + "EnableEnhancedNvdecDecoderHelp": "சோதனை NVDEC செயல்படுத்தல், டிகோடிங் பிழைகளை நீங்கள் சந்திக்கும் வரை இந்த விருப்பத்தை இயக்க வேண்டாம்.", + "HomeVideosPhotos": "முகப்பு வீடியோக்கள் மற்றும் புகைப்படங்கள்" } From 60a7722c1af4a2714e13920c9580fe8affd14597 Mon Sep 17 00:00:00 2001 From: Sipie Games Date: Sun, 8 May 2022 09:25:50 +0000 Subject: [PATCH 072/107] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index cd6f548129..53f6736d3e 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1604,5 +1604,21 @@ "ButtonExitApp": "Verlaat de applicatie", "Digital": "Digitaal", "ButtonClose": "Sluiten", - "AddToFavorites": "Toevoegen aan favorieten" + "AddToFavorites": "Toevoegen aan favorieten", + "ShowParentImages": "Laat serie-afbeeldingen zien", + "Production": "Productie", + "AllowEmbeddedSubtitlesAllowTextOption": "Text Toestaan", + "AllowEmbeddedSubtitlesAllowImageOption": "Afbeelding Toestaan", + "AllowEmbeddedSubtitlesAllowNoneOption": "Niks Toestaan", + "AllowEmbeddedSubtitlesAllowAllOption": "Alles Toestaan", + "AllowEmbeddedSubtitlesHelp": "Schakel ondertitels uit die zijn verpakt in mediacontainers. Vereist een volledige library-vernieuwing.", + "AllowEmbeddedSubtitles": "Schakel verschillende soorten ingesloten ondertitels uit", + "OriginalAirDate": "Originele uitzenddatum", + "MixedMoviesShows": "Gemixte Films en Shows", + "MessageUnauthorizedUser": "U heeft op dit moment geen toegang tot de server. Neem contact op met uw serverbeheerder voor meer informatie.", + "Localization": "Lokalisatie", + "GoogleCastUnsupported": "Google Cast niet ondersteund", + "CopyFailed": "Kan niet kopiëren", + "Copy": "Kopieer", + "Copied": "Gekopieerd" } From fe05939ec3b46011be1d074456f119e1cf0201b1 Mon Sep 17 00:00:00 2001 From: Victor Usoltsev Date: Mon, 9 May 2022 22:36:07 +1200 Subject: [PATCH 073/107] Adds shuffle button to movie collections. --- src/controllers/movies/movies.html | 1 + src/controllers/movies/movies.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/controllers/movies/movies.html b/src/controllers/movies/movies.html index 428b83de45..63fe332a8e 100644 --- a/src/controllers/movies/movies.html +++ b/src/controllers/movies/movies.html @@ -6,6 +6,7 @@ +
    diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index e8137fd764..22f0c18469 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -6,6 +6,7 @@ import { AlphaPicker } from '../../components/alphaPicker/alphaPicker'; import listView from '../../components/listview/listview'; import cardBuilder from '../../components/cardbuilder/cardBuilder'; import globalize from '../../scripts/globalize'; +import { playbackManager } from '../../components/playback/playbackmanager'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; /* eslint-disable indent */ @@ -52,6 +53,19 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; itemsContainer.refreshItems(); } + function onShuffleClick() { + if (isLoading) { + return; + } + + ApiClient.getItem( + ApiClient.getCurrentUserId(), + params.topParentId + ).then(item => { + playbackManager.shuffle(item); + }); + } + window.scrollTo(0, 0); this.alphaPicker?.updateControls(query); const pagingHtml = libraryBrowser.getQueryPagingHtml({ @@ -77,6 +91,10 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; elem.addEventListener('click', onPreviousPageClick); } + for (const elem of tabContent.querySelectorAll('.btnShuffle')) { + elem.addEventListener('click', onShuffleClick); + } + isLoading = false; loading.hide(); From 0a881d6f6f1c87efb1a5330499b676d9991461c2 Mon Sep 17 00:00:00 2001 From: grafixeyehero Date: Mon, 9 May 2022 20:11:47 +0300 Subject: [PATCH 074/107] use camelCase for props --- .../dashboard/users/AccessContainer.tsx | 32 ++++++------- src/components/pages/NewUserPage.tsx | 32 ++++++------- .../pages/UserLibraryAccessPage.tsx | 48 +++++++++---------- 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/src/components/dashboard/users/AccessContainer.tsx b/src/components/dashboard/users/AccessContainer.tsx index 7c3cda360e..5c0d6341b7 100644 --- a/src/components/dashboard/users/AccessContainer.tsx +++ b/src/components/dashboard/users/AccessContainer.tsx @@ -3,26 +3,26 @@ import globalize from '../../../scripts/globalize'; import CheckBoxElement from './CheckBoxElement'; type IProps = { - ContainerClassName?: string; - HeaderTitle?: string; - CheckBoxClassName?: string; - CheckBoxTitle?: string; - ListContainerClassName?: string; - AccessClassName?: string; - ListTitle?: string; - Description?: string; + containerClassName?: string; + headerTitle?: string; + checkBoxClassName?: string; + checkBoxTitle?: string; + listContainerClassName?: string; + accessClassName?: string; + listTitle?: string; + description?: string; children?: React.ReactNode } -const AccessContainer: FunctionComponent = ({ContainerClassName, HeaderTitle, CheckBoxClassName, CheckBoxTitle, ListContainerClassName, AccessClassName, ListTitle, Description, children }: IProps) => { +const AccessContainer: FunctionComponent = ({containerClassName, headerTitle, checkBoxClassName, checkBoxTitle, listContainerClassName, accessClassName, listTitle, description, children }: IProps) => { return ( -
    -

    {globalize.translate(HeaderTitle)}

    - -
    -
    +
    +

    {globalize.translate(headerTitle)}

    + +
    +

    - {globalize.translate(ListTitle)} + {globalize.translate(listTitle)}

    = ({ContainerClassName, HeaderT
    - {globalize.translate(Description)} + {globalize.translate(description)}
    diff --git a/src/components/pages/NewUserPage.tsx b/src/components/pages/NewUserPage.tsx index 9642e29856..bd8dc289c5 100644 --- a/src/components/pages/NewUserPage.tsx +++ b/src/components/pages/NewUserPage.tsx @@ -199,14 +199,14 @@ const NewUserPage: FunctionComponent = () => { />
    {mediaFoldersItems.map(Item => ( { {channelsItems.map(Item => ( { {mediaFoldersItems.map(Item => ( { {channelsItems.map(Item => ( { {devicesItems.map(Item => ( Date: Mon, 9 May 2022 20:35:08 +0300 Subject: [PATCH 075/107] add default isBtnVisible to false --- src/components/dashboard/users/SectionTitleContainer.tsx | 2 +- src/components/pages/NewUserPage.tsx | 1 - src/components/pages/UserEditPage.tsx | 1 - src/components/pages/UserLibraryAccessPage.tsx | 1 - src/components/pages/UserParentalControl.tsx | 1 - src/components/pages/UserPasswordPage.tsx | 1 - 6 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/components/dashboard/users/SectionTitleContainer.tsx b/src/components/dashboard/users/SectionTitleContainer.tsx index 03d6478c2f..e5e4b8952a 100644 --- a/src/components/dashboard/users/SectionTitleContainer.tsx +++ b/src/components/dashboard/users/SectionTitleContainer.tsx @@ -8,7 +8,7 @@ type IProps = { titleLink?: string; } -const SectionTitleContainer: FunctionComponent = ({title, isBtnVisible, titleLink}: IProps) => { +const SectionTitleContainer: FunctionComponent = ({title, isBtnVisible = false, titleLink}: IProps) => { return (
    diff --git a/src/components/pages/NewUserPage.tsx b/src/components/pages/NewUserPage.tsx index bd8dc289c5..3f94055dae 100644 --- a/src/components/pages/NewUserPage.tsx +++ b/src/components/pages/NewUserPage.tsx @@ -179,7 +179,6 @@ const NewUserPage: FunctionComponent = () => {
    diff --git a/src/components/pages/UserEditPage.tsx b/src/components/pages/UserEditPage.tsx index 967d0de421..dce189c696 100644 --- a/src/components/pages/UserEditPage.tsx +++ b/src/components/pages/UserEditPage.tsx @@ -280,7 +280,6 @@ const UserEditPage: FunctionComponent = () => {
    diff --git a/src/components/pages/UserLibraryAccessPage.tsx b/src/components/pages/UserLibraryAccessPage.tsx index a1bfd571df..0ffea1565f 100644 --- a/src/components/pages/UserLibraryAccessPage.tsx +++ b/src/components/pages/UserLibraryAccessPage.tsx @@ -230,7 +230,6 @@ const UserLibraryAccessPage: FunctionComponent = () => {
    diff --git a/src/components/pages/UserParentalControl.tsx b/src/components/pages/UserParentalControl.tsx index 9bc84dc131..7744d790b2 100644 --- a/src/components/pages/UserParentalControl.tsx +++ b/src/components/pages/UserParentalControl.tsx @@ -321,7 +321,6 @@ const UserParentalControl: FunctionComponent = () => {
    diff --git a/src/components/pages/UserPasswordPage.tsx b/src/components/pages/UserPasswordPage.tsx index 91e7898c1f..305e8a4422 100644 --- a/src/components/pages/UserPasswordPage.tsx +++ b/src/components/pages/UserPasswordPage.tsx @@ -25,7 +25,6 @@ const UserPasswordPage: FunctionComponent = () => {
    From e3e8314a0e7c51f85c283ec2b2fbcb56dcc1a34b Mon Sep 17 00:00:00 2001 From: fh0d Date: Tue, 10 May 2022 18:49:18 +0000 Subject: [PATCH 076/107] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index f8aef8456b..6cc0d4683d 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1586,7 +1586,7 @@ "MediaInfoTitle": "Tytuł", "Larger": "Większy", "Console": "Konsola", - "Casual": "Zwykły", + "Casual": "Zwykłe", "TypeOptionPluralVideo": "Pliki wideo", "TypeOptionPluralSeries": "Seriale", "TypeOptionPluralSeason": "Sezony", @@ -1644,5 +1644,11 @@ "MessageUnauthorizedUser": "W tej chwili nie masz uprawnień dostępu do serwera. Aby uzyskać więcej informacji, skontaktuj się z administratorem serwera.", "Localization": "Lokalizacja", "ItemDetails": "Szczegóły pozycji", - "Digital": "Cyfrowy" + "Digital": "Cyfrowy", + "EnableEnhancedNvdecDecoderHelp": "Eksperymentalna implementacja NVDEC, nie używaj tej opcji, chyba że chcesz otrzymywaćsię z licznymi błędami dekodowania.", + "StoryArc": "Artykuł fabularny", + "OriginalAirDate": "Data pierwszej emisji", + "HomeVideosPhotos": "Filmy i zdjęcia", + "EnableRewatchingNextUpHelp": "Włącz pokazywanie już obejrzanych odcinków w sekcji 'Następne'.", + "EnableRewatchingNextUp": "Włącz odtwarzanie obejrzanych odcinków w 'Następnych'" } From 0e8990d781c01ece01467c23bdf56e6cfaf33b17 Mon Sep 17 00:00:00 2001 From: Victor Usoltsev Date: Wed, 11 May 2022 09:27:23 +1200 Subject: [PATCH 077/107] Fix PR comments. --- src/controllers/movies/movies.html | 2 +- src/controllers/movies/movies.js | 28 +++++++++++----------------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/controllers/movies/movies.html b/src/controllers/movies/movies.html index 63fe332a8e..a101348f49 100644 --- a/src/controllers/movies/movies.html +++ b/src/controllers/movies/movies.html @@ -3,10 +3,10 @@
    + -
    diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 22f0c18469..9446da1b95 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -30,6 +30,15 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; return ApiClient.getItems(ApiClient.getCurrentUserId(), query); } + function shuffle() { + ApiClient.getItem( + ApiClient.getCurrentUserId(), + params.topParentId + ).then((item) => { + playbackManager.shuffle(item); + }); + } + const afterRefresh = (result) => { function onNextPageClick() { if (isLoading) { @@ -53,19 +62,6 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; itemsContainer.refreshItems(); } - function onShuffleClick() { - if (isLoading) { - return; - } - - ApiClient.getItem( - ApiClient.getCurrentUserId(), - params.topParentId - ).then(item => { - playbackManager.shuffle(item); - }); - } - window.scrollTo(0, 0); this.alphaPicker?.updateControls(query); const pagingHtml = libraryBrowser.getQueryPagingHtml({ @@ -91,10 +87,6 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; elem.addEventListener('click', onPreviousPageClick); } - for (const elem of tabContent.querySelectorAll('.btnShuffle')) { - elem.addEventListener('click', onShuffleClick); - } - isLoading = false; loading.hide(); @@ -261,6 +253,8 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; onViewStyleChange(); itemsContainer.refreshItems(); }); + + tabContent.querySelector('.btnShuffle').addEventListener('click', shuffle); }; let itemsContainer = tabContent.querySelector('.itemsContainer'); From 631284e56f367e25a9de245a2e8dbadf1a3e4660 Mon Sep 17 00:00:00 2001 From: Jesse Seeligsohn Date: Sat, 7 May 2022 12:21:11 -0400 Subject: [PATCH 078/107] Append year to title of content in video playback if possible. --- src/controllers/playback/video/index.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index bb683b7f35..93d7e1ad87 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -210,7 +210,18 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components itemName = parentName || ''; } - LibraryMenu.setTitle(itemName); + // Display the item with its premiere date if it has one + let title = itemName; + if (item.PremiereDate) { + try { + const year = datetime.parseISO8601Date(item.PremiereDate).getFullYear(); + title += ` (${year})`; + } catch (e) { + console.error(e); + } + } + + LibraryMenu.setTitle(title); const documentTitle = parentName || (item ? item.Name : null); From d57ac967f21d8e0c6783ed0290d5eccab4a34e8f Mon Sep 17 00:00:00 2001 From: Weevild Date: Wed, 11 May 2022 14:29:48 +0000 Subject: [PATCH 079/107] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index ff57f3e553..80997866cc 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -864,7 +864,7 @@ "OptionPlainVideoItemsHelp": "Alla videor representeras i DIDL som 'object.item.videoItem' i stället för en mer specifik typ, t ex 'object.item.videoItem.movie'.", "OptionPlayCount": "Antal visningar", "OptionPremiereDate": "Premiärdatum", - "OptionProtocolHls": "Live-strömning via HTTP (HLS)", + "OptionProtocolHls": "Direktströmning via HTTP (HLS)", "OptionReleaseDate": "Premiärdatum", "OptionReportByteRangeSeekingWhenTranscoding": "Meddela att servern stödjer bytebaserad sökning vid omkodning", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Detta krävs för vissa enheter som inte kan utföra tidssökning på ett tillfredsställande sätt.", From de1cd2275f1ff3e08b00fe50e47f185bf78dd087 Mon Sep 17 00:00:00 2001 From: Victor Usoltsev Date: Thu, 12 May 2022 10:16:09 +1200 Subject: [PATCH 080/107] Shows movie shuffle button only when items are present. --- src/controllers/movies/movies.html | 2 +- src/controllers/movies/movies.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/controllers/movies/movies.html b/src/controllers/movies/movies.html index a101348f49..7a08694b2a 100644 --- a/src/controllers/movies/movies.html +++ b/src/controllers/movies/movies.html @@ -3,7 +3,7 @@
    - + diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 9446da1b95..e08b506a58 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -87,6 +87,8 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; elem.addEventListener('click', onPreviousPageClick); } + tabContent.querySelector(".btnShuffle").classList.toggle("hide", result.TotalRecordCount < 1); + isLoading = false; loading.hide(); From 4d75c88e28b0f3b85f76e1a40e943e5a8d0c4f09 Mon Sep 17 00:00:00 2001 From: Weevild Date: Thu, 12 May 2022 15:41:46 +0000 Subject: [PATCH 081/107] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 96 ++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 80997866cc..1e2ab38624 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -75,7 +75,7 @@ "ButtonResetEasyPassword": "Återställ enkel pinkod", "ButtonResume": "Återuppta", "ButtonRevoke": "Återkalla", - "ButtonScanAllLibraries": "Scanna alla bibliotek", + "ButtonScanAllLibraries": "Skanna alla biblioteken", "ButtonSelectDirectory": "Välj mapp", "ButtonSelectView": "Välj vy", "ButtonSend": "Skicka", @@ -98,8 +98,8 @@ "Composer": "Kompositör", "ConfigureDateAdded": "Konfigurera hur tillagt datum bestäms på bibliotek > NFO-inställningar", "ConfirmDeleteImage": "Ta bort bild?", - "ConfirmDeleteItem": "Tar du bort det här objeketet så tas det bort från både ditt filsystem och mediabibliotek. Är du säker på att du vill fortsätta?", - "ConfirmDeleteItems": "Tar du bort dessa objekt tas dom också bort ifrån både ditt filsystem och mediabibliotek. Är du säker på att du vill fortsätta?", + "ConfirmDeleteItem": "Tar du bort det här objektet tas det bort från både ditt filsystem och mediabibliotek. Är du säker på att du vill fortsätta?", + "ConfirmDeleteItems": "Tar du bort dessa objekt tas dem också bort ifrån både ditt filsystem och mediabibliotek. Är du säker på att du vill fortsätta?", "ConfirmDeletion": "Bekräfta radering", "ConfirmEndPlayerSession": "Vill du stänga ner Jellyfin på {0}?", "Connect": "Anslut", @@ -109,9 +109,9 @@ "CustomDlnaProfilesHelp": "Skapa en anpassad profil för ny enhet eller för att överlappa en systemprofil.", "DateAdded": "Inlagd den", "DatePlayed": "Senast visad", - "DeathDateValue": "Död: {0}", + "DeathDateValue": "Dog: {0}", "Default": "Standard", - "ErrorDefault": "Ett fel uppstd vid begäran. Försök igen senare.", + "ErrorDefault": "Ett fel uppstod vid förfrågningsprocessen. Försök igen senare.", "DefaultSubtitlesHelp": "Undertexter visas baserat på standardspråk och tvingande undertexter i den inbäddade metadatan. Förvalsspråk kommer väljas när fler val är möjliga.", "Delete": "Ta bort", "DeleteDeviceConfirmation": "Är du säker på att du vill ta bort den här enheten? Den kommer att dyka upp igen nästa gång en användare kopplar upp sig med den.", @@ -134,7 +134,7 @@ "Disconnect": "Koppla bort", "Display": "Visning", "DisplayInMyMedia": "Visa på hemskärmen", - "DisplayInOtherHomeScreenSections": "Visa sektioner på hemskärmen som till exempel senast media och fortsätt titta på", + "DisplayInOtherHomeScreenSections": "Visa sektioner på hemskärmen som till exempel \"Nytillkommen media\" och \"Fortsätt titta på\"", "DisplayMissingEpisodesWithinSeasons": "Visa saknade avsnitt i säsonger", "DisplayMissingEpisodesWithinSeasonsHelp": "Detta måste också vara aktiverat för TV-bibliotek i serverkonfigurationen.", "DisplayModeHelp": "Välj vilken layout du vill använda i gränssnittet.", @@ -170,11 +170,11 @@ "ErrorDeletingItem": "Det gick inte att ta bort det här objektet från servern. Kontrollera att Jellyfin har skrivrättigheter till media-mappen och försök igen.", "ErrorGettingTvLineups": "Ett fel uppstod vid nedladdningen utav TV-sortimentet. Se till så att uppgifterna stämmer och försök igen.", "ErrorStartHourGreaterThanEnd": "Sluttiden måste vara senare än starttiden.", - "ErrorPleaseSelectLineup": "Välj en lineup och försök igen. Om inga lineups finns tillgängliga, kolla så att användarnamn, lösenord och postnummer stämmer.", + "ErrorPleaseSelectLineup": "Välj en lineup och försök igen. Kontrollera så att användarnamn, lösenord och postnummer stämmer om inga lineups finns tillgängliga.", "ErrorSavingTvProvider": "Ett fel uppstod när TV-tjänsten skulle sparas. Se till att den går att nå och försök igen senare.", "EveryNDays": "Var {0}:e dag", "ExitFullscreen": "Avsluta fullskärm", - "ExtraLarge": "Extra Stor", + "ExtraLarge": "Extra stor", "ExtractChapterImagesHelp": "Att extrahera kapitelrutor möjliggör för klienter att visa grafiska menyer för kapitelval. Aktiviteten kan vara långsam, resurs-intensiv och kan kräva flera gigabyte i utrymme. Aktiviteten körs när nya videofiler upptäcks, och är även schemalagd under nattetid. Schemat går att konfigurera under schemalagda aktiviteter. Det är inte rekommenderat att köra den här aktiviteten vid tider med hög belastning.", "FFmpegSavePathNotFound": "Det gick inte att hitta FFmpeg med den angivna sökvägen. FFprobe måste även finnas i samma mapp. Dessa komponenter inkluderas normalt i samma nedladdning. Var god undersök sökvägen och försök igen.", "Favorite": "Favorit", @@ -197,14 +197,14 @@ "H264CrfHelp": "Constant Rate Factor (CRF) är den förvalda kvalitetsinställningen för x264- och x265-kodaren. Du kan ange värden mellan 0-51, där lägre värden resulterar i högre kvalitet men på bekostnad av större filstorlekar. Rimliga värden ligger mellan 18-28. Det förvalda värdet för x264 är 23 och x265 är 28, så du kan använda det som utgångspunkt.", "EncoderPresetHelp": "Välj ett snabbare värde för öka prestandan eller ett långsammare för att utöka kvalitén.", "HDPrograms": "HD-program", - "HardwareAccelerationWarning": "Aktivering av hårdvaruacceleration kan innebära instabilitet i vissa miljöer. Säkerställ att ditt operativsystem och dina grafikdrivrutiner är helt uppdaterade. Om du har problem med uppspelning när detta är på behöver du ändra tillbaka inställningen till Auto.", + "HardwareAccelerationWarning": "Aktivering av hårdvaruacceleration kan innebära instabilitet i vissa miljöer. Säkerställ att ditt operativsystem och dina grafikdrivrutiner är helt uppdaterade. Om du har problem med uppspelning när detta är på behöver du ändra tillbaka inställningen till \"Inga\".", "HeaderAccessSchedule": "Schema för åtkomst", "HeaderAccessScheduleHelp": "Skapa ett schema för att begränsa åtkomsten till vissa tider.", "HeaderActiveDevices": "Aktiva enheter", "HeaderActiveRecordings": "Pågående inspelningar", "HeaderActivity": "Aktivitet", "HeaderAddToCollection": "Lägg till samling", - "HeaderAddToPlaylist": "Lägg till i Spellista", + "HeaderAddToPlaylist": "Lägg till i spellista", "HeaderAddUpdateImage": "Lägg till/uppdatera bild", "HeaderAdditionalParts": "Ytterligare delar", "HeaderAlbumArtists": "Albumsartister", @@ -221,8 +221,8 @@ "HeaderCastAndCrew": "Medverkande", "HeaderChannelAccess": "Kanalåtkomst", "HeaderChapterImages": "Kapitelbilder", - "HeaderCodecProfile": "Profil för videokodning", - "HeaderCodecProfileHelp": "Avkodarprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika kodningstyper. Om en begränsning är aktuell kommer innehållet att kodas om, även om kodningstypen sig är inställd för direkt avspelning.", + "HeaderCodecProfile": "Kodeksprofil", + "HeaderCodecProfileHelp": "Avkodarprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika kodningstyper. Om en begränsning är aktuell kommer innehållet att kodas om, även om kodningstypen sig är konfigurerat för direktuppspelning.", "HeaderConfigureRemoteAccess": "Konfigurera fjärråtkomst", "HeaderConfirmPluginInstallation": "Bekräfta installation av tillägg", "HeaderConfirmProfileDeletion": "Bekräfta radering av profil", @@ -230,9 +230,9 @@ "HeaderConnectToServer": "Anslut till server", "HeaderConnectionFailure": "Misslyckad anslutning", "HeaderContainerProfile": "Behållareprofil", - "HeaderContainerProfileHelp": "Behållareprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika filformat. Om en begränsning är aktuell kommer innehållet att kodas om, även om formatet i sig är inställt för direkt avspelning.", + "HeaderContainerProfileHelp": "Behållareprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika filformat. Om en begränsning är aktuell kommer innehållet att kodas om, även om formatet i sig är konfigurerat för direktuppspelning.", "HeaderContinueListening": "Fortsätt lyssna på", - "HeaderContinueWatching": "Fortsätt kolla på", + "HeaderContinueWatching": "Fortsätt titta på", "HeaderCustomDlnaProfiles": "Anpassade profiler", "HeaderDateIssued": "Utgivningsdatum", "HeaderDefaultRecordingSettings": "Standard inspelningsinställningar", @@ -247,7 +247,7 @@ "HeaderDevices": "Enheter", "HeaderDirectPlayProfile": "Profil för direktuppspelning", "HeaderDirectPlayProfileHelp": "Ange direktuppspelningsprofiler för att indikera vilka format enheten kan spela upp utan omkodning.", - "HeaderDownloadSync": "Ladda ner & Synka", + "HeaderDownloadSync": "Ladda ner & synka", "HeaderEasyPinCode": "Enkel pinkod", "HeaderEditImages": "Redigera bilder", "HeaderEnabledFields": "Aktiverade fält", @@ -269,12 +269,12 @@ "HeaderInstantMix": "Direktmix", "HeaderKeepRecording": "Fortsätt spela in", "HeaderKeepSeries": "Behåll serie", - "HeaderKodiMetadataHelp": "För att aktivera eller inaktivera NFO-metadata, redigera ett bibliotek och använd metadatafliken.", + "HeaderKodiMetadataHelp": "För att aktivera eller inaktivera NFO-metadata: redigera ett bibliotek och använd metadatafliken.", "HeaderLatestEpisodes": "Senaste avsnitten", - "HeaderLatestMedia": "Nytillkommet", + "HeaderLatestMedia": "Nytillkommen media", "HeaderLatestMovies": "Nytillkomna filmer", "HeaderLatestMusic": "Nytillkommen musik", - "HeaderLatestRecordings": "Senaste inspelningar", + "HeaderLatestRecordings": "Senaste inspelningarna", "HeaderLibraries": "Bibliotek", "HeaderLibraryAccess": "Biblioteksåtkomst", "HeaderLibraryFolders": "Biblioteksmappar", @@ -303,11 +303,11 @@ "HeaderPlayOn": "Spela på", "HeaderPlayback": "Media uppspelning:", "HeaderPlaybackError": "Uppspelningsfel", - "HeaderPleaseSignIn": "Var god logga in", - "HeaderPluginInstallation": "Installation av tillägg", + "HeaderPleaseSignIn": "Vänligen logga in", + "HeaderPluginInstallation": "Tilläggsinstallation", "HeaderPreferredMetadataLanguage": "Önskat språk för metadata", "HeaderProfileInformation": "Profilinformation", - "HeaderProfileServerSettingsHelp": "Dessa inställningar bestämmer hur servern presenterar sig för enheter.", + "HeaderProfileServerSettingsHelp": "Dessa inställningar bestämmer hur servern framstår för enheter.", "HeaderRecentlyPlayed": "Nyligen spelade", "HeaderRecordingOptions": "Inspelningsalternativ", "HeaderRecordingPostProcessing": "Post-proccessing för inspelningar", @@ -323,17 +323,17 @@ "HeaderSecondsValue": "{0} sekunder", "HeaderSelectCertificatePath": "Välj sökväg för certifikat", "HeaderSelectMetadataPath": "Välj plats för metadatalagring", - "HeaderSelectMetadataPathHelp": "Bläddra fram, eller ange, sökväg för lagring av metadata. Katalogen måste vara skrivningsbar.", + "HeaderSelectMetadataPathHelp": "Bläddra fram, eller ange, sökväg för lagring av metadata. Katalogen måste vara skrivbar.", "HeaderSelectPath": "Välj sökväg", "HeaderSelectServerCachePath": "Välj plats för serverns cache", - "HeaderSelectServerCachePathHelp": "Bläddra fram till eller ange plats för serverns cache. Katalogen måste vara tillgänglig för skrivning.", + "HeaderSelectServerCachePathHelp": "Bläddra fram till eller ange plats för serverns cache. Katalogen måste vara skrivbar.", "HeaderSelectTranscodingPath": "Välj plats för mellanlagring vid omkodning", - "HeaderSelectTranscodingPathHelp": "Bläddra fram till eller ange plats för lagringen av omkodningsfiler. Katalogen måste vara tillgänglig för skrivning.", + "HeaderSelectTranscodingPathHelp": "Bläddra fram till eller ange plats för lagringen av omkodningsfiler. Katalogen måste vara skrivbar.", "HeaderSendMessage": "Skicka meddelande", "HeaderSeriesOptions": "Seriealternativ", "HeaderSeriesStatus": "Seriestatus", "HeaderServerSettings": "Serverinställningar", - "HeaderSetupLibrary": "Sätt upp dina mediabibliotek", + "HeaderSetupLibrary": "Ställ in dina mediabibliotek", "HeaderSortBy": "Sortera efter", "HeaderSortOrder": "Sortering", "HeaderSpecialEpisodeInfo": "Information om specialavsnitt", @@ -365,7 +365,7 @@ "HeaderYears": "År", "Help": "Hjälp", "Hide": "Dölj", - "HideWatchedContentFromLatestMedia": "Dölj visat innehåll ifrån \"Senaste media\"", + "HideWatchedContentFromLatestMedia": "Dölj visat innehåll ifrån \"Nytillkommen media\"", "Home": "Hem", "Horizontal": "Horisontell", "Identify": "Identifiera", @@ -402,8 +402,8 @@ "LabelBindToLocalNetworkAddressHelp": "Skriv över den lokala IP-adressen för HTTP-servern. Om den är tom kommer servern knytas till alla tillgängliga adresser. Ändring av detta värde kräver en omstart.", "LabelBirthDate": "Födelsedatum:", "LabelBirthYear": "Födelseår:", - "LabelBlastMessageInterval": "Sändningsintervall för \"jag lever\"-meddelanden:", - "LabelBlastMessageIntervalHelp": "Bestäm tiden i sekunder mellan varje \"jag lever\"-meddelande.", + "LabelBlastMessageInterval": "Sändningsintervall för \"Är du vaken?\"-meddelanden:", + "LabelBlastMessageIntervalHelp": "Bestäm tiden i sekunder mellan varje \"Är du vaken?\"-meddelande.", "LabelBlockContentWithTags": "Blockera innehåll med etiketterna:", "LabelBurnSubtitles": "Bränn undertexter:", "LabelCachePath": "Plats för cache:", @@ -452,15 +452,15 @@ "LabelEasyPinCode": "Enkel pinkod:", "LabelEmbedAlbumArtDidl": "Bädda in omslagsbilder i DIDL", "LabelEmbedAlbumArtDidlHelp": "Vissa enheter föredrar den här metoden att ta fram omslagsbilder. Andra kanske avbryter avspelningen om detta val är aktiverat.", - "LabelEnableAutomaticPortMap": "Aktivera automatisk koppling av portar", + "LabelEnableAutomaticPortMap": "Aktivera automatisk portkartläggning", "LabelEnableAutomaticPortMapHelp": "För automatiskt vidare publika portar från din router till lokala portar på din server via UPnP. Detta fungerar inte med alla router modeller eller nätverkskonfigurationer. Ändringar kommer inte appliceras inte tills server startats om.", - "LabelEnableBlastAliveMessages": "Skicka ut \"jag lever\"-meddelanden", + "LabelEnableBlastAliveMessages": "Skicka ut \"Är du vaken?\"-meddelanden", "LabelEnableBlastAliveMessagesHelp": "Aktivera detta om andra UPnP-enheter på nätverket har problem att upptäcka servern.", "LabelEnableDlnaClientDiscoveryInterval": "Intervall för att upptäcka klienter:", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Ange hur ofta det söks efter nya DLNA-klienter med hjälp av SSDP-protokollet.", "LabelEnableDlnaDebugLogging": "Aktivera DLNA felsökningsloggning", "LabelEnableDlnaDebugLoggingHelp": "Detta resulterar i mycket stora loggfiler och rekommenderas bara vid felsökning.", - "LabelEnableDlnaPlayTo": "Aktivera DLNA 'spela-upp-på'-funktion", + "LabelEnableDlnaPlayTo": "Aktivera DLNA \"spela-upp-på\"-funktion", "LabelEnableDlnaPlayToHelp": "Upptäck enheter på ditt nätverk och erbjud möjligheten att fjärrstyra dem.", "LabelEnableDlnaServer": "Aktivera DLNA-server", "LabelEnableDlnaServerHelp": "Tillåt UPnP-enheter på ditt nätverk att se och spela upp innehåll.", @@ -474,7 +474,7 @@ "LabelEvent": "Händelse:", "LabelEveryXMinutes": "Varje:", "LabelExtractChaptersDuringLibraryScan": "Extrahera kapitelbildrutor vid genomsökning av biblioteket", - "LabelExtractChaptersDuringLibraryScanHelp": "Om aktiverat extraheras kapitelbildrutor när videor importeras vid genomsökning av biblioteket. Om avaktiverat kommer extrahering att ske vid schemalagd kapitelbildrutebehandling, för att snabba upp den regelbundna genomsökningen av biblioteket.", + "LabelExtractChaptersDuringLibraryScanHelp": "Om aktiverat extraheras kapitelbildrutor när videor importeras vid genomsökning av biblioteket. Om avaktiverat kommer extrahering att ske vid schemalagd kapitelbildrutebehandling för att snabba upp den regelbundna genomsökningen av biblioteket.", "LabelFailed": "Misslyckades", "LabelFileOrUrl": "Fil eller URL:", "LabelFinish": "Klart", @@ -682,7 +682,7 @@ "LabelffmpegPath": "FFmpeg-sökväg:", "LabelffmpegPathHelp": "Sökväg till FFmpeg-applikationen, eller mappen som innehåller FFmpeg.", "Large": "Stor", - "LatestFromLibrary": "Senaste {0}", + "LatestFromLibrary": "Senaste i {0}", "LearnHowYouCanContribute": "Se hur du kan hjälpa till.", "LibraryAccessHelp": "Ange vilka mediemappar den här användaren ska ha tillgång till. Administratörer har rätt att redigera alla mappar i metadatahanteraren.", "List": "Lista", @@ -1094,7 +1094,7 @@ "General": "Allmänt", "FastForward": "Snabbspola", "Extras": "Extramaterial", - "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XMLTV filen. Kontrollera att filen är tillgänglig och försök igen.", + "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XMLTV-filen. Kontrollera att filen är tillgänglig och försök igen.", "ErrorAddingListingsToSchedulesDirect": "Det uppstod ett problem när din lista skulle läggas till på ditt Schedules Direct konto. Schedules Direct tillåter bara ett begränsat antal listor per konto. Du kanske behöver logga in på Schedules Direct hemsidan och ta bort andras listningar från ditt konto innan du fortsätter.", "EnableStreamLoopingHelp": "Aktivera enbart detta om direktsändningen enbart innehåller några sekunders data och behöver bli kontinuerligt uppdaterad. Att aktivera denna funktion i onödan kan skapa problem.", "EnableStreamLooping": "Loopa direktsändningar", @@ -1153,15 +1153,15 @@ "LabelServerName": "Servernamn:", "LabelPostProcessorArgumentsHelp": "Använd {path} som sökväg till inspelade filen.", "LabelPostProcessorArguments": "Post-processor kommandoradsargument:", - "LabelDroppedFrames": "Tappade ramar:", - "LabelAudioSampleRate": "Ljudprovfrekvens:", + "LabelDroppedFrames": "Tappade bildrutor:", + "LabelAudioSampleRate": "Ljudsamplingshastighet:", "LabelAudioBitrate": "Ljudbithastighet:", "LabelAudioBitDepth": "Ljudbitdjup:", "LabelPlayMethod": "Spelmetod:", "LabelPlayerDimensions": "Spelare dimensioner:", "LabelPasswordResetProvider": "Lösenords Återställning Leverantör:", "LabelBaseUrlHelp": "Lägg till en anpassad undermapp till serverns URL. Till exempel: http://example.com/<baseurl>", - "LabelCorruptedFrames": "Skadade ramar:", + "LabelCorruptedFrames": "Korrupta bildrutor:", "HeaderParentalRatings": "Föräldrabetyg", "HeaderNavigation": "Navigering", "HeaderBranding": "Märke", @@ -1276,7 +1276,7 @@ "UnsupportedPlayback": "Jellyfin kan inte dekryptera innehåll skyddat av DRM men allt innehåll kommer ändå försökas, även skyddade titlar. Vissa filer kan se helt svarta ut på grund av kryptering eller andra funktioner som inte stöds, till exempel interaktiva titlar.", "LabelLibraryPageSizeHelp": "Bestäm antalet objekt att visas på en bibliotekssida. Sätt 0 för att avaktivera paginering.", "ApiKeysCaption": "Lista av aktiva API-nycklar", - "DeinterlaceMethodHelp": "Välj metod för avflätning vid mjukvarukonvertering av inflätat innehåll. När hårdvaruacceleration med stöd för hårdvarustödd avflätning används så kommer hårdvarustödd avflätning användas istället.", + "DeinterlaceMethodHelp": "Välj metod för deinterlacing vid mjukvarukonvertering av inflätat innehåll. När hårdvara med stöd för hårdvaruaccelererad deinterlacing är aktiverat kommer hårdvaru-deinterlacer att användas istället.", "SaveChanges": "Spara ändringar", "LabelRequireHttps": "Kräv HTTPS", "LabelChromecastVersion": "Googlecast-version", @@ -1292,8 +1292,8 @@ "EnableDecodingColorDepth10Vp9": "Aktivera 10-bitars hårdvaruavkodning för VP9", "EnableDecodingColorDepth10Hevc": "Aktivera 10-bitars hårdvaruavkodning för HEVC", "HeaderSyncPlayEnabled": "SyncPlay aktiverat", - "EnableDetailsBannerHelp": "Visa en bannerbild högst upp på sidan för detaljsidan .", - "EnableDetailsBanner": "Information banner", + "EnableDetailsBannerHelp": "Visa en banderoll högst upp på sidan för detaljsidan .", + "EnableDetailsBanner": "Informationsbanderoll", "LabelRepositoryName": "Förvaringsplats namn", "LabelRepositoryUrlHelp": "Platsen för det förvaringsplats manifest du vill inkludera.", "LabelRepositoryUrl": "Förvaringsplats URL", @@ -1410,11 +1410,11 @@ "DeleteAll": "Radera alla", "LabelCreateHttpPortMap": "Aktivera automatisk portmappning för HTTP och HTTPS-trafik.", "LabelAutomaticDiscoveryHelp": "Tillåt applikationer att automatiskt detektera Jellyfin på UDP port 7359.", - "LabelAutomaticDiscovery": "Aktivera Auto Discovery:", - "LabelAutoDiscoveryTracingHelp": "Paket som tas emot på Auto discovery-porten loggas.", + "LabelAutomaticDiscovery": "Aktivera automatisk uppteckning:", + "LabelAutoDiscoveryTracingHelp": "Paket som tas emot på automatisk uppteckning-porten loggas.", "HeaderUploadSubtitle": "Ladda upp undertext", "HeaderPortRanges": "Brandvägg och Proxy", - "HeaderNetworking": "IP Protokoll", + "HeaderNetworking": "IP-protokoll", "HeaderAddUser": "Lägg till användare", "HeaderAddUpdateSubtitle": "Lägg till/uppdatera undertext", "EnableTonemapping": "Aktivera Tone mapping", @@ -1431,11 +1431,11 @@ "LabelEnableIP6": "Aktivera IPv6", "LabelEnableIP4Help": "Aktiverar IPv4-funktionalitet.", "LabelEnableIP4": "Aktivera IPv4", - "LabelDropSubtitleHere": "Släpp undertext här, eller klicka på Bläddra.", + "LabelDropSubtitleHere": "Släpp undertext här, eller klicka på bläddra.", "LabelCreateHttpPortMapHelp": "Tillåt automatisk portmappning för att skapa regler för HTTP-trafik, utöver HTTPS-trafik.", "LabelAutoDiscoveryTracing": "Aktivera automatisk upptäcktsspårning.", "HeaderDebugging": "Felsökning och spårning", - "HeaderAutoDiscovery": "Nätverksupptäckt", + "HeaderAutoDiscovery": "Nätverksupptäckning", "LabelPublishedServerUri": "Publicerade server-URIs:", "LabelMinAudiobookResume": "Minimal tid för återupptagning för ljudböcker i minuter:", "LabelMaxMuxingQueueSize": "Maximal muxing köstorlek:", @@ -1443,7 +1443,7 @@ "Framerate": "Bilder per sekund", "DisablePlugin": "Avaktivera", "EnablePlugin": "Aktivera", - "DirectPlayHelp": "Källfilen är helt kompatibel med denna klient, filen spelas upp utan omkodning.", + "DirectPlayHelp": "Originalfilen är helt kompatibel med denna klient. Filen spelas upp utan omkodning.", "LabelTonemappingDesat": "Tonmappningsblekning:", "LabelTonemappingAlgorithm": "Välj algoritm för tonmappning:", "LabelSyncPlayTimeSyncOffset": "Tidsförskjutning:", @@ -1485,7 +1485,7 @@ "LabelFallbackFontPath": "Sökväg till reservmapp för typsnitt:", "HeaderSelectFallbackFontPath": "Välj reservmapp för typsnitt", "HeaderSelectFallbackFontPathHelp": "Bläddra till eller mata in sökvägen till reservmappen för typsnitt att använda i framställningen av ASS/SSA-undertexter.", - "AllowTonemappingHelp": "Tonmappning kan omvandla en videos dynamiska omfång från HDR till SDR medans den bibehåller bildens detaljer och färger. Detta är viktig information för att kunna representera originalscenen. Fungerar för närvarande bara med HDR10 eller HLG-videos. Det här kräver motsvarande körning av OpenCL eller CUDA.", + "AllowTonemappingHelp": "Tonmappning kan omvandla en videos dynamiska omfång från HDR till SDR medans den bibehåller bildens detaljer och färger. Detta är viktig information för att kunna representera originalscenen. Fungerar för närvarande bara med HDR10 eller HLG-videor. Det här kräver motsvarande körning av OpenCL eller CUDA.", "AllowVppTonemappingHelp": "Helt Intel-baserad tonmappning. Fungerar för närvarande endast för viss hårdvara när videor omkodas med inbäddad HDR10-metadata. Detta har högre prioritet än andra tillämpningar av OpenCL.", "EnableVppTonemapping": "Aktivera VPP tonmappning", "EnableEnhancedNvdecDecoder": "Aktivera förbättrad NVDEC-avkodare", @@ -1646,7 +1646,7 @@ "Production": "Produktion", "AllowEmbeddedSubtitlesHelp": "Avaktivera inbäddade undertexter. Kräver fullständig uppdatering av biblioteket.", "EnableRewatchingNextUpHelp": "Visa redan sedda avsnitt i \"Nästa på tur\".", - "EnableRewatchingNextUp": "Aktivera 'se om' i \"Nästa på tur\"", + "EnableRewatchingNextUp": "Aktivera \"Titta igen\" i \"Nästa på tur\"", "ThemeVideo": "Temavideo", "EnableEnhancedNvdecDecoderHelp": "Experimentellt NVDEC genomförande. Aktivera ej detta om du upplever avkodningsfel.", "HomeVideosPhotos": "Hemvideor och bilder" From add1bbf28550888fdf9af86b23acf4e12982905a Mon Sep 17 00:00:00 2001 From: Danny Michel Date: Wed, 11 May 2022 14:08:01 -0400 Subject: [PATCH 082/107] create option for bold subtitles --- .../subtitlesettings/subtitleappearancehelper.js | 10 ++++++++++ src/components/subtitlesettings/subtitlesettings.js | 3 +++ .../subtitlesettings/subtitlesettings.template.html | 7 +++++++ src/strings/en-gb.json | 1 + src/strings/en-us.json | 2 ++ 5 files changed, 23 insertions(+) diff --git a/src/components/subtitlesettings/subtitleappearancehelper.js b/src/components/subtitlesettings/subtitleappearancehelper.js index 52a84bc2dc..6cd5440ea6 100644 --- a/src/components/subtitlesettings/subtitleappearancehelper.js +++ b/src/components/subtitlesettings/subtitleappearancehelper.js @@ -28,6 +28,16 @@ function getTextStyles(settings, preview) { break; } + switch (settings.textWeight || '') { + case 'bold': + list.push({ name: 'font-weight', value: 'bold' }); + break; + case 'normal': + default: + list.push({ name: 'font-weight', value: 'normal' }); + break; + } + switch (settings.dropShadow || '') { case 'raised': list.push({ name: 'text-shadow', value: '-1px -1px white, 0px -1px white, -1px 0px white, 1px 1px black, 0px 1px black, 1px 0px black' }); diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index 0342dddf4c..067d8f9e40 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -28,6 +28,7 @@ function getSubtitleAppearanceObject(context) { const appearanceSettings = {}; appearanceSettings.textSize = context.querySelector('#selectTextSize').value; + appearanceSettings.textWeight = context.querySelector('#selectTextWeight').value; appearanceSettings.dropShadow = context.querySelector('#selectDropShadow').value; appearanceSettings.font = context.querySelector('#selectFont').value; appearanceSettings.textBackground = context.querySelector('#inputTextBackground').value; @@ -53,6 +54,7 @@ function loadForm(context, user, userSettings, appearanceSettings, apiClient) { context.querySelector('#selectSubtitlePlaybackMode').dispatchEvent(new CustomEvent('change', {})); context.querySelector('#selectTextSize').value = appearanceSettings.textSize || ''; + context.querySelector('#selectTextWeight').value = appearanceSettings.textWeight || 'normal'; context.querySelector('#selectDropShadow').value = appearanceSettings.dropShadow || ''; context.querySelector('#inputTextBackground').value = appearanceSettings.textBackground || 'transparent'; context.querySelector('#inputTextColor').value = appearanceSettings.textColor || '#ffffff'; @@ -166,6 +168,7 @@ function embed(options, self) { options.element.querySelector('#selectSubtitlePlaybackMode').addEventListener('change', onSubtitleModeChange); options.element.querySelector('#selectTextSize').addEventListener('change', onAppearanceFieldChange); + options.element.querySelector('#selectTextWeight').addEventListener('change', onAppearanceFieldChange); options.element.querySelector('#selectDropShadow').addEventListener('change', onAppearanceFieldChange); options.element.querySelector('#selectFont').addEventListener('change', onAppearanceFieldChange); options.element.querySelector('#inputTextColor').addEventListener('change', onAppearanceFieldChange); diff --git a/src/components/subtitlesettings/subtitlesettings.template.html b/src/components/subtitlesettings/subtitlesettings.template.html index 7c41fcdad2..941cd937d9 100644 --- a/src/components/subtitlesettings/subtitlesettings.template.html +++ b/src/components/subtitlesettings/subtitlesettings.template.html @@ -72,6 +72,13 @@
    +
    + +
    +