From fad290483e079abf1dc98ac0e9b10bb2e18358c3 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Sun, 26 Dec 2021 19:11:07 +0000 Subject: [PATCH 001/389] Add DisableEmbeddedSubtitles support Adds the option to disable embedded subs for libraries --- CONTRIBUTORS.md | 1 + .../libraryoptionseditor/libraryoptionseditor.js | 8 ++++++++ .../libraryoptionseditor.template.html | 7 +++++++ src/strings/en-gb.json | 2 ++ src/strings/en-us.json | 2 ++ 5 files changed, 20 insertions(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 6811962cc7..34e077c433 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -50,6 +50,7 @@ - [Keegan Dahm](https://github.com/keegandahm) - [GodTamIt](https://github.com/GodTamIt) - [MinecraftPlaye](https://github.com/MinecraftPlaye) + - [Matthew Jones](https://github.com/matthew-jones-uk) # Emby Contributors diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 252b8b6dfc..8418621095 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -411,6 +411,12 @@ import template from './libraryoptionseditor.template.html'; parent.querySelector('.chkEnableEmbeddedEpisodeInfosContainer').classList.add('hide'); } + if (contentType !== 'tvshows' || contentType !== 'movies' || contentType !== 'musicvideos' || contentType !== 'mixed') { + parent.querySelector('.chkDisableEmbeddedSubtitlesContainer').classList.remove('hide'); + } else { + parent.querySelector('.chkDisableEmbeddedSubtitlesContainer').classList.add('hide'); + } + parent.querySelector('.chkAutomaticallyAddToCollectionContainer').classList.toggle('hide', contentType !== 'movies'); return populateMetadataSettings(parent, contentType); @@ -509,6 +515,7 @@ import template from './libraryoptionseditor.template.html'; AutomaticRefreshIntervalDays: parseInt(parent.querySelector('#selectAutoRefreshInterval').value), EnableEmbeddedTitles: parent.querySelector('#chkEnableEmbeddedTitles').checked, EnableEmbeddedEpisodeInfos: parent.querySelector('#chkEnableEmbeddedEpisodeInfos').checked, + DisableEmbeddedSubtitles: parent.querySelector('#chkDisableEmbeddedSubtitles').checked, SkipSubtitlesIfEmbeddedSubtitlesPresent: parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked, SkipSubtitlesIfAudioTrackMatches: parent.querySelector('#chkSkipIfAudioTrackPresent').checked, SaveSubtitlesWithMedia: parent.querySelector('#chkSaveSubtitlesLocally').checked, @@ -561,6 +568,7 @@ import template from './libraryoptionseditor.template.html'; parent.querySelector('.chkAutomaticallyGroupSeries').checked = options.EnableAutomaticSeriesGrouping; parent.querySelector('#chkEnableEmbeddedTitles').checked = options.EnableEmbeddedTitles; parent.querySelector('#chkEnableEmbeddedEpisodeInfos').checked = options.EnableEmbeddedEpisodeInfos; + parent.querySelector('#chkDisableEmbeddedSubtitles').checked = options.DisableEmbeddedSubtitles; parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent; parent.querySelector('#chkSaveSubtitlesLocally').checked = options.SaveSubtitlesWithMedia; parent.querySelector('#chkSkipIfAudioTrackPresent').checked = options.SkipSubtitlesIfAudioTrackMatches; diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.template.html b/src/components/libraryoptionseditor/libraryoptionseditor.template.html index bb94e0ee20..57cca6302c 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/src/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -30,6 +30,13 @@
${PreferEmbeddedEpisodeInfosOverFileNamesHelp}
+
+ +
${DisableEmbeddedSubtitlesHelp}
+
diff --git a/src/controllers/user/menu/index.js b/src/controllers/user/menu/index.js index 7b0d045b17..4e707af742 100644 --- a/src/controllers/user/menu/index.js +++ b/src/controllers/user/menu/index.js @@ -17,6 +17,10 @@ export default function (view, params) { window.NativeShell.openClientSettings(); }); + view.querySelector('.quitApp').addEventListener('click', function () { + window.NativeShell.quitApp(); + }); + view.addEventListener('viewshow', function () { // this page can also be used by admins to change user preferences from the user edit page const userId = params.userId || Dashboard.getCurrentUserId(); @@ -33,6 +37,9 @@ export default function (view, params) { const supportsClientSettings = appHost.supports('clientsettings'); page.querySelector('.clientSettings').classList.toggle('hide', !supportsClientSettings); + const supportsQuitApp = appHost.supports('quitapp'); + page.querySelector('.quitApp').classList.toggle('hide', !supportsQuitApp); + const supportsMultiServer = appHost.supports('multiserver'); page.querySelector('.selectServer').classList.toggle('hide', !supportsMultiServer); diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 6e8f8ae8de..18e3800031 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -302,6 +302,11 @@ import Headroom from 'headroom.js'; html += '' + globalize.translate('Settings') + ''; html += '' + globalize.translate('ButtonSignOut') + ''; + + if (appHost.supports('quitapp')) { + html += '' + globalize.translate('ButtonQuitApp') + ''; + } + html += ''; } diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 4d71420ce0..416daa815b 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -134,6 +134,7 @@ "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", + "ButtonQuitApp": "Quit Application", "ButtonStart": "Start", "ButtonStop": "Stop", "ButtonSubmit": "Submit", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index f1144e8f40..bdf4a4bfc7 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -106,6 +106,7 @@ "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", + "ButtonQuitApp": "Quit Application", "ButtonSplit": "Split", "ButtonStart": "Start", "ButtonStop": "Stop", From c03166ed02b2a6bb59339b9914b368d7636bb52c Mon Sep 17 00:00:00 2001 From: iainsaxonhome Date: Thu, 13 Jan 2022 08:46:00 +1100 Subject: [PATCH 007/389] Reimplemented Exit App function --- src/controllers/user/menu/index.html | 4 ++-- src/controllers/user/menu/index.js | 8 ++++---- src/scripts/libraryMenu.js | 4 ++-- src/strings/en-gb.json | 2 +- src/strings/en-us.json | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/controllers/user/menu/index.html b/src/controllers/user/menu/index.html index 39b6c57cc9..66a07f2a14 100644 --- a/src/controllers/user/menu/index.html +++ b/src/controllers/user/menu/index.html @@ -113,11 +113,11 @@ - +
-
${ButtonQuitApp}
+
${ButtonExitApp}
diff --git a/src/controllers/user/menu/index.js b/src/controllers/user/menu/index.js index 4e707af742..f9443c92d1 100644 --- a/src/controllers/user/menu/index.js +++ b/src/controllers/user/menu/index.js @@ -17,8 +17,8 @@ export default function (view, params) { window.NativeShell.openClientSettings(); }); - view.querySelector('.quitApp').addEventListener('click', function () { - window.NativeShell.quitApp(); + view.querySelector('.exitApp').addEventListener('click', function () { + appHost.exit(); }); view.addEventListener('viewshow', function () { @@ -37,8 +37,8 @@ export default function (view, params) { const supportsClientSettings = appHost.supports('clientsettings'); page.querySelector('.clientSettings').classList.toggle('hide', !supportsClientSettings); - const supportsQuitApp = appHost.supports('quitapp'); - page.querySelector('.quitApp').classList.toggle('hide', !supportsQuitApp); + const supportsExitMenu = appHost.supports('exitmenu'); + page.querySelector('.exitApp').classList.toggle('hide', !supportsExitMenu); const supportsMultiServer = appHost.supports('multiserver'); page.querySelector('.selectServer').classList.toggle('hide', !supportsMultiServer); diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 18e3800031..0fe49e86ec 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -303,8 +303,8 @@ import Headroom from 'headroom.js'; html += '' + globalize.translate('Settings') + ''; html += '' + globalize.translate('ButtonSignOut') + ''; - if (appHost.supports('quitapp')) { - html += '' + globalize.translate('ButtonQuitApp') + ''; + if (appHost.supports('exitmenu')) { + html += '' + globalize.translate('ButtonExitApp') + ''; } html += ''; diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 416daa815b..116692d50f 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -134,7 +134,7 @@ "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", - "ButtonQuitApp": "Quit Application", + "ButtonExitApp": "Exit Application", "ButtonStart": "Start", "ButtonStop": "Stop", "ButtonSubmit": "Submit", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index bdf4a4bfc7..fe75c835c9 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -106,7 +106,7 @@ "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", - "ButtonQuitApp": "Quit Application", + "ButtonExitApp": "Exit Application", "ButtonSplit": "Split", "ButtonStart": "Start", "ButtonStop": "Stop", From 71d4eeadbad63a04959f5f708ad9062adf8cac4f Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@gmail.com> Date: Tue, 11 Jan 2022 22:28:18 +0100 Subject: [PATCH 008/389] Expose collection generation options for mixed libraries Pass "mixed" instead of "" for library type "Other" --- src/components/libraryoptionseditor/libraryoptionseditor.js | 2 +- src/components/mediaLibraryCreator/mediaLibraryCreator.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 252b8b6dfc..d73f7233b5 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -411,7 +411,7 @@ import template from './libraryoptionseditor.template.html'; parent.querySelector('.chkEnableEmbeddedEpisodeInfosContainer').classList.add('hide'); } - parent.querySelector('.chkAutomaticallyAddToCollectionContainer').classList.toggle('hide', contentType !== 'movies'); + parent.querySelector('.chkAutomaticallyAddToCollectionContainer').classList.toggle('hide', contentType !== 'movies' && contentType !== 'mixed'); return populateMetadataSettings(parent, contentType); } diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.js b/src/components/mediaLibraryCreator/mediaLibraryCreator.js index 72795f66f1..3126ed00af 100644 --- a/src/components/mediaLibraryCreator/mediaLibraryCreator.js +++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.js @@ -73,7 +73,7 @@ import template from './mediaLibraryCreator.template.html'; $('#selectCollectionType', page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val('').on('change', function () { const value = this.value; const dlg = $(this).parents('.dialog')[0]; - libraryoptionseditor.setContentType(dlg.querySelector('.libraryOptions'), value == 'mixed' ? '' : value); + libraryoptionseditor.setContentType(dlg.querySelector('.libraryOptions'), value); if (value) { dlg.querySelector('.libraryOptions').classList.remove('hide'); From f5b69e0de3a0277b01738e5436357fd228abe16e Mon Sep 17 00:00:00 2001 From: grafixeyehero <32230989+grafixeyehero@users.noreply.github.com> Date: Fri, 14 Jan 2022 19:20:27 +0300 Subject: [PATCH 009/389] apply suggestions --- src/components/pages/UserParentalControl.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/pages/UserParentalControl.tsx b/src/components/pages/UserParentalControl.tsx index 7d408fd6c5..98e3dba548 100644 --- a/src/components/pages/UserParentalControl.tsx +++ b/src/components/pages/UserParentalControl.tsx @@ -168,7 +168,6 @@ const UserParentalControl: FunctionComponent = () => { const userId = appRouter.param('userId'); const promise1 = window.ApiClient.getUser(userId); const promise2 = window.ApiClient.getParentalRatings(); - // eslint-disable-next-line compat/compat Promise.all([promise1, promise2]).then(function (responses) { loadUser(responses[0], responses[1]); }); From 88ece494606e92a81782ce13f6aac57831cc0a11 Mon Sep 17 00:00:00 2001 From: SenorSmartyPants Date: Fri, 14 Jan 2022 16:45:03 -0600 Subject: [PATCH 010/389] Display series level extras on tv series page. --- 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 4bc07ad1f7..6fbed7f444 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -921,7 +921,7 @@ function setInitialCollapsibleState(page, item, apiClient, context, user) { renderScenes(page, item); - if (item.SpecialFeatureCount && item.SpecialFeatureCount != 0 && item.Type != 'Series') { + if (item.SpecialFeatureCount && item.SpecialFeatureCount != 0) { page.querySelector('#specialsCollapsible').classList.remove('hide'); renderSpecials(page, item, user); } else { From 22e45c2bf2180e5e5968af857dcc138c55550960 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 15 Jan 2022 20:03:13 +0300 Subject: [PATCH 011/389] Fix auto focus on Play/Resume --- src/components/autoFocuser.js | 3 +++ src/controllers/itemDetails/index.js | 15 +++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/components/autoFocuser.js b/src/components/autoFocuser.js index aa88e0c294..6afb38d40d 100644 --- a/src/components/autoFocuser.js +++ b/src/components/autoFocuser.js @@ -59,6 +59,9 @@ import layoutManager from './layoutManager'; candidates.push(container.querySelector('.btnPreviousPage')); } else if (activeElement.classList.contains('btnSelectView')) { candidates.push(container.querySelector('.btnSelectView')); + } else if (activeElement.classList.contains('btnPlay')) { + // Resume has priority over Play + candidates = candidates.concat(Array.from(container.querySelectorAll('.btnResume'))); } candidates.push(activeElement); diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 4bc07ad1f7..0fad976059 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -33,6 +33,12 @@ import ServerConnections from '../../components/ServerConnections'; import confirm from '../../components/confirm/confirm'; import { download } from '../../scripts/fileDownloader'; +function autoFocus(container) { + import('../../components/autoFocuser').then(({ default: autoFocuser }) => { + autoFocuser.autoFocus(container); + }); +} + function getPromise(apiClient, params) { const id = params.id; @@ -727,9 +733,7 @@ function reloadFromItem(instance, page, params, item, user) { hideAll(page, 'btnDownload', true); } - import('../../components/autoFocuser').then(({ default: autoFocuser }) => { - autoFocuser.autoFocus(page); - }); + autoFocus(page); } function logoImageUrl(item, apiClient, options) { @@ -1756,9 +1760,7 @@ function renderCollectionItems(page, parentItem, types, items) { // HACK: Call autoFocuser again because btnPlay may be hidden, but focused by reloadFromItem // FIXME: Sometimes focus does not move until all (?) sections are loaded - import('../../components/autoFocuser').then(({ default: autoFocuser }) => { - autoFocuser.autoFocus(page); - }); + autoFocus(page); } function renderCollectionItemType(page, parentItem, type, items) { @@ -2060,6 +2062,7 @@ export default function (view, params) { currentItem.UserData = userData; reloadPlayButtons(view, currentItem); refreshImage(view, currentItem); + autoFocus(view); } } } From cf55e3341dac05082e46f47eb203c6caa705732b Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 15 Jan 2022 20:24:25 +0300 Subject: [PATCH 012/389] Fix Play/Resume highlighting --- src/controllers/itemDetails/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 0fad976059..2a365f5694 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -374,12 +374,12 @@ function reloadPlayButtons(page, item) { hideAll(page, 'btnShuffle'); } - const btnResume = page.querySelector('.mainDetailButtons .btnResume'); - const btnPlay = page.querySelector('.mainDetailButtons .btnPlay'); - if (layoutManager.tv && !btnResume.classList.contains('hide')) { - btnResume.classList.add('fab'); - } else if (layoutManager.tv && btnResume.classList.contains('hide')) { - btnPlay.classList.add('fab'); + if (layoutManager.tv) { + const btnResume = page.querySelector('.mainDetailButtons .btnResume'); + const btnPlay = page.querySelector('.mainDetailButtons .btnPlay'); + const resumeHidden = btnResume.classList.contains('hide'); + btnResume.classList.toggle('fab', !resumeHidden); + btnPlay.classList.toggle('fab', resumeHidden); } return canPlay; From 2fc99360bda11ab89cf40cb09a663d8acbd0e80e Mon Sep 17 00:00:00 2001 From: iainsaxonhome Date: Sun, 16 Jan 2022 21:25:13 +1100 Subject: [PATCH 013/389] Removed exitmenu from browser support list --- src/components/apphost.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/apphost.js b/src/components/apphost.js index 3e4d9d1f50..e468ce161d 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -199,7 +199,6 @@ const supportedFeatures = function () { if (browser.operaTv || browser.tizen || browser.orsay || browser.web0s) { features.push('exit'); } else { - features.push('exitmenu'); features.push('plugins'); } From f942465afce09154c97f78dc95db30b6c4ec1d18 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Jan 2022 16:38:12 +0300 Subject: [PATCH 014/389] Add paging to listview --- src/controllers/list.html | 4 ++ src/controllers/list.js | 77 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 75 insertions(+), 6 deletions(-) diff --git a/src/controllers/list.html b/src/controllers/list.html index 72dd983d6e..e5292522a1 100644 --- a/src/controllers/list.html +++ b/src/controllers/list.html @@ -3,6 +3,7 @@
+
@@ -50,5 +51,8 @@
+
+
+
diff --git a/src/controllers/list.js b/src/controllers/list.js index 6d1499366a..416ff0e9a1 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -1,11 +1,11 @@ import globalize from '../scripts/globalize'; import listView from '../components/listview/listview'; -import layoutManager from '../components/layoutManager'; import * as userSettings from '../scripts/settings/userSettings'; import focusManager from '../components/focusManager'; import cardBuilder from '../components/cardbuilder/cardBuilder'; import loading from '../components/loading/loading'; import AlphaNumericShortcuts from '../scripts/alphanumericshortcuts'; +import libraryBrowser from '../scripts/libraryBrowser'; import { playbackManager } from '../components/playback/playbackmanager'; import AlphaPicker from '../components/alphaPicker/alphaPicker'; import '../elements/emby-itemscontainer/emby-itemscontainer'; @@ -423,14 +423,75 @@ import { appRouter } from '../components/appRouter'; class ItemsView { constructor(view, params) { + const query = { + StartIndex: 0, + Limit: undefined + }; + + if (userSettings.libraryPageSize() > 0) { + query['Limit'] = userSettings.libraryPageSize(); + } + + let isLoading = false; + + function onNextPageClick() { + if (!isLoading && query.Limit > 0) { + query.StartIndex += query.Limit; + self.itemsContainer.refreshItems().then(() => { + window.scrollTo(0, 0); + autoFocus(); + }); + } + } + + function onPreviousPageClick() { + if (!isLoading && query.Limit > 0) { + query.StartIndex = Math.max(0, query.StartIndex - query.Limit); + self.itemsContainer.refreshItems().then(() => { + window.scrollTo(0, 0); + autoFocus(); + }); + } + } + + function updatePaging(startIndex, totalRecordCount, limit) { + const pagingHtml = libraryBrowser.getQueryPagingHtml({ + startIndex, + limit, + totalRecordCount, + showLimit: false, + updatePageSizeSetting: false, + addLayoutButton: false, + sortButton: false, + filterButton: false + }); + + for (const elem of view.querySelectorAll('.paging')) { + elem.innerHTML = pagingHtml; + } + + for (const elem of view.querySelectorAll('.btnNextPage')) { + elem.addEventListener('click', onNextPageClick); + } + + for (const elem of view.querySelectorAll('.btnPreviousPage')) { + elem.addEventListener('click', onPreviousPageClick); + } + } + function fetchData() { - return getItems(self, params, self.currentItem).then(function (result) { + isLoading = true; + + return getItems(self, params, self.currentItem, null, query.StartIndex, query.Limit).then(function (result) { if (self.totalItemCount == null) { self.totalItemCount = result.Items ? result.Items.length : result.length; } updateAlphaPickerState(self, self.totalItemCount); + updatePaging(result.StartIndex, result.TotalRecordCount, query.Limit); return result; + }).finally(() => { + isLoading = false; }); } @@ -559,15 +620,13 @@ class ItemsView { self.alphaPicker = new AlphaPicker({ element: alphaPickerElement, - itemsContainer: layoutManager.tv ? self.itemsContainer : null, - itemClass: 'card', - valueChangeEvent: layoutManager.tv ? null : 'click' + valueChangeEvent: 'click' }); self.alphaPicker.on('alphavaluechanged', onAlphaPickerValueChanged); } function onAlphaPickerValueChanged() { - self.alphaPicker.value(); + query.StartIndex = 0; self.itemsContainer.refreshItems(); } @@ -710,6 +769,12 @@ class ItemsView { } } + function autoFocus() { + import('../components/autoFocuser').then(({default: autoFocuser}) => { + autoFocuser.autoFocus(view); + }); + } + const self = this; self.params = params; this.itemsContainer = view.querySelector('.itemsContainer'); From 60437c4350f725eca777713a32fe1bc15226de34 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Jan 2022 18:14:14 +0300 Subject: [PATCH 015/389] Fix number option in alphapicker --- src/controllers/list.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/controllers/list.js b/src/controllers/list.js index 416ff0e9a1..b2be0bbd00 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -165,7 +165,14 @@ import { appRouter } from '../components/appRouter'; instance.setFilterStatus(hasFilters); if (instance.alphaPicker) { - query.NameStartsWith = instance.alphaPicker.value(); + const newValue = instance.alphaPicker.value(); + if (newValue === '#') { + query.NameLessThan = 'A'; + delete query.NameStartsWith; + } else { + query.NameStartsWith = newValue; + delete query.NameLessThan; + } } return query; From d1d4ff865dd967607ceb117ba194573647629cf2 Mon Sep 17 00:00:00 2001 From: iainsaxonhome Date: Mon, 17 Jan 2022 08:26:26 +1100 Subject: [PATCH 016/389] Added exit app event handling to library menu --- src/scripts/libraryMenu.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 0fe49e86ec..ea74637839 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -323,6 +323,11 @@ import Headroom from 'headroom.js'; btnSettings.addEventListener('click', onSettingsClick); } + const btnExit = navDrawerScrollContainer.querySelector('.exitApp'); + if (btnExit) { + btnExit.addEventListener('click', onExitAppClick); + } + const btnLogout = navDrawerScrollContainer.querySelector('.btnLogout'); if (btnLogout) { btnLogout.addEventListener('click', onLogoutClick); @@ -711,6 +716,10 @@ import Headroom from 'headroom.js'; Dashboard.navigate('mypreferencesmenu.html'); } + function onExitAppClick() { + appHost.exit(); + } + function onLogoutClick() { Dashboard.logout(); } From c43f3846f865e102a4c2b29d931cbd1a6acc3ad5 Mon Sep 17 00:00:00 2001 From: knackebrot Date: Mon, 17 Jan 2022 00:08:33 +0100 Subject: [PATCH 017/389] Try to determine the number of speakers before falling back to hardcoded values --- src/scripts/browserDeviceProfile.js | 49 +++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index 6ef748fbf8..8ef075c4b1 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -294,12 +294,55 @@ import browser from './browser'; (browser.tizen && isTizenFhd ? 20000000 : null))); } + function getSpeakerCount() { + const AudioContext = window.AudioContext || window.webkitAudioContext || false; /* eslint-disable-line compat/compat */ + + if (AudioContext) { + const audioCtx = new AudioContext(); + + return audioCtx.destination.maxChannelCount; + } + + return -1; + } + + function getPhysicalAudioChannels(options) { + const allowedAudioChannels = parseInt(userSettings.allowedAudioChannels(), 10); + + if (allowedAudioChannels > 0) { + return allowedAudioChannels; + } + + if (options.audioChannels) { + return options.audioChannels; + } + + const isSurroundSoundSupportedBrowser = browser.safari || browser.chrome || browser.edgeChromium || browser.firefox || browser.tv || browser.ps4 || browser.xboxOne; + const speakerCount = getSpeakerCount(); + + if (speakerCount > 2) { + if (isSurroundSoundSupportedBrowser) { + return speakerCount; + } + + return 2; + } + + if (speakerCount > 0) { + return speakerCount; + } + + if (isSurroundSoundSupportedBrowser) { + return 6; + } + + return 2; + } + export default function (options) { options = options || {}; - const isSurroundSoundSupportedBrowser = browser.safari || browser.chrome || browser.edgeChromium || browser.firefox; - const allowedAudioChannels = parseInt(userSettings.allowedAudioChannels() || '-1'); - const physicalAudioChannels = (allowedAudioChannels > 0 ? allowedAudioChannels : null) || options.audioChannels || (isSurroundSoundSupportedBrowser || browser.tv || browser.ps4 || browser.xboxOne ? 6 : 2); + const physicalAudioChannels = getPhysicalAudioChannels(options); const bitrateSetting = getMaxBitrate(); From 390d9cc21354d1fb9dc9575bf40fc0b959768bf0 Mon Sep 17 00:00:00 2001 From: Alan Azar Date: Tue, 18 Jan 2022 03:38:13 +0000 Subject: [PATCH 018/389] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index dcb0ee0d8c..6c7823c1be 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -618,7 +618,7 @@ "OptionReportByteRangeSeekingWhenTranscoding": "قرّر ما إذا كان الخادم يدعم البحث عن البايت حال التشفير", "OptionReportByteRangeSeekingWhenTranscodingHelp": "هذه مطلوبة لبعض الأجهزة التي لا تحسن البحث في الوقت.", "OptionRequirePerfectSubtitleMatch": "قم بتنزيل الترجمات المطابقة تمامًا لملفات الفيديو فقط", - "OptionResElement": "'res' element", + "OptionResElement": "المورد", "OptionResumable": "إمكانية التكملة", "OptionSaveMetadataAsHidden": "حفظ واصفات البيانات والصور كملفات مخفية", "OptionSaveMetadataAsHiddenHelp": "سيؤدي تغيير هذا إلى تطبيق البيانات الوصفية الجديدة المحفوظة من الآن فصاعدًا. سيتم تحديث ملفات البيانات الوصفية الموجودة في المرة التالية التي يتم فيها حفظها بواسطة الخادم.", @@ -1564,11 +1564,11 @@ "LabelAutomaticallyAddToCollection": "إضافة إلى المجموعة تلقائيا", "Console": "وحدة التحكم", "Casual": "غير رسمي", - "AllowTonemappingHelp": "يمكن أن يؤدي تعيين النغمة إلى تحويل النطاق الديناميكي لمقطع فيديو من HDR إلى SDR مع الحفاظ على تفاصيل الصورة والألوان ، وهي معلومات مهمة جدًا لتمثيل المشهد الأصلي. يعمل حاليًا فقط عند تحويل ترميز مقاطع الفيديو باستخدام بيانات التعريف HDR10 أو HLG المضمنة. إذا لم يكن التشغيل سلسًا أو فشل ، فيرجى التفكير في إيقاف تشغيل وحدة فك ترميز الأجهزة المقابلة.", + "AllowTonemappingHelp": "يمكن أن يؤدي تعيين النغمة إلى تحويل النطاق الديناميكي لمقطع فيديو من HDR إلى SDR مع الحفاظ على تفاصيل الصورة والألوان ، وهي معلومات مهمة جدًا لتمثيل المشهد الأصلي. يعمل حاليًا فقط مع مقاطع فيديو HDR10 أو HLG. يتطلب هذا وقت تشغيل OpenCL أو CUDA المقابل.", "RefFramesNotSupported": "الإطارات المرجعية غير مدعومة", "InterlacedVideoNotSupported": "الفيديو المتشابك غير مدعوم", "AnamorphicVideoNotSupported": "لا يتم دعم الفيديو ذي الصورة المشوهة", - "AllowVppTonemappingHelp": "تعين النغمة الكامل للأجهزة دون استخدام مرشح OpenCL. يعمل حاليًا فقط عند تحويل ترميز مقاطع الفيديو باستخدام بيانات تعريف HDR10 المضمنة.", + "AllowVppTonemappingHelp": "تعين النغمة الكامل للأجهزة باستخدام Intel. يعمل حاليًا فقط على أجهزة معينة مع مقاطع فيديو HDR10. هذا له أولوية أعلى مقارنة بتطبيق OpenCL آخر.", "EnableVppTonemapping": "تفعيل تعيين نغمة VPP", "Remuxing": "إعادة", "AspectRatioCover": "غلاف", @@ -1604,5 +1604,11 @@ "EnableIntelLowPowerHevcHwEncoder": "قم بتمكين ترميز أجهزة Intel Low-Power HEVC", "EnableIntelLowPowerH264HwEncoder": "قم بتمكين برنامج تشفير الأجهزة Intel Low-Power H.264", "PreferSystemNativeHwDecoder": "تفضل وحدات فك ترميز أجهزة DXVA أو VA-API الأصلية لنظام التشغيل", - "ContainerBitrateExceedsLimit": "معدل بت الفيديو تجاوز الحد" + "ContainerBitrateExceedsLimit": "معدل بت الفيديو تجاوز الحد", + "SelectAll": "اختر الكل", + "DirectPlayError": "حدث خطأ في بدء التشغيل المباشر", + "UnknownAudioStreamInfo": "معلومات دفق الصوت غير معروفة", + "UnknownVideoStreamInfo": "معلومات دفق الفيديو غير معروفة", + "VideoBitrateNotSupported": "معدل بت الفيديو غير مدعوم", + "AudioIsExternal": "دفق الصوت خارجي" } From 52c45bae426a721f968c37be0a162e6355e1e84a Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 18 Jan 2022 10:22:54 -0500 Subject: [PATCH 019/389] Fix class name parameter in SelectSyncPlayAccessElement --- src/components/dashboard/users/SelectSyncPlayAccessElement.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/dashboard/users/SelectSyncPlayAccessElement.tsx b/src/components/dashboard/users/SelectSyncPlayAccessElement.tsx index 3ea02fa670..818dc389c2 100644 --- a/src/components/dashboard/users/SelectSyncPlayAccessElement.tsx +++ b/src/components/dashboard/users/SelectSyncPlayAccessElement.tsx @@ -3,7 +3,7 @@ import globalize from '../../../scripts/globalize'; const createSelectElement = ({ className, id, label }) => ({ __html: ` ${Name} ${AppName} ` }); -const CheckBoxListItem: FunctionComponent = ({className, Name, Id, AppName, checkedAttribute}: IProps) => { +const CheckBoxListItem: FunctionComponent = ({className, Name, Id, ItemType, AppName, checkedAttribute}: IProps) => { return (
({ ` }); +type RatingsArr = { + Name: string; + Value: number; +} + type IProps = { className?: string; label?: string; - parentalRatings: any + parentalRatings: RatingsArr[]; } const SelectMaxParentalRating: FunctionComponent = ({ className, label, parentalRatings }: IProps) => { - const renderOption = ratings => { + const renderOption = () => { let content = ''; - for (const rating of ratings) { + for (const rating of parentalRatings) { content += ``; } return content; @@ -32,7 +37,7 @@ const SelectMaxParentalRating: FunctionComponent = ({ className, label, dangerouslySetInnerHTML={createSelectElement({ className: className, label: globalize.translate(label), - option: renderOption(parentalRatings) + option: renderOption() })} /> ); diff --git a/src/components/pages/UserParentalControl.tsx b/src/components/pages/UserParentalControl.tsx index 98e3dba548..81418a588d 100644 --- a/src/components/pages/UserParentalControl.tsx +++ b/src/components/pages/UserParentalControl.tsx @@ -13,9 +13,9 @@ import SectionTabs from '../dashboard/users/SectionTabs'; import loading from '../loading/loading'; import toast from '../toast/toast'; -type Ratings = { +type RatingsArr = { Name: string; - Value: string; + Value: number; } type ItemsArr = { @@ -35,7 +35,7 @@ const UserParentalControl: FunctionComponent = () => { const populateRatings = useCallback((allParentalRatings) => { let rating; - const ratings: Ratings[] = []; + const ratings: RatingsArr[] = []; for (let i = 0, length = allParentalRatings.length; i < length; i++) { rating = allParentalRatings[i]; @@ -186,7 +186,7 @@ const UserParentalControl: FunctionComponent = () => { user.Policy.BlockUnratedItems = Array.prototype.filter.call(element?.current?.querySelectorAll('.chkUnratedItem'), function (i) { return i.checked; }).map(function (i) { - return i.getAttribute('data-id'); + return i.getAttribute('data-itemtype'); }); user.Policy.AccessSchedules = getSchedulesFromPage(); user.Policy.BlockedTags = getBlockedTagsFromPage(); @@ -303,7 +303,7 @@ const UserParentalControl: FunctionComponent = () => { return ; From 4f770f26ce117e05fb18d45704a8c9011047bc0b Mon Sep 17 00:00:00 2001 From: Patrick Farwick <9168045+MinecraftPlaye@users.noreply.github.com> Date: Sat, 22 Jan 2022 21:17:57 +0000 Subject: [PATCH 051/389] Ignore files which do not have a file extension --- src/plugins/comicsPlayer/plugin.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/comicsPlayer/plugin.js b/src/plugins/comicsPlayer/plugin.js index 6f53d28786..139704f69f 100644 --- a/src/plugins/comicsPlayer/plugin.js +++ b/src/plugins/comicsPlayer/plugin.js @@ -241,6 +241,9 @@ export class ComicsPlayer { } } +// the comic book archive supports any kind of image format as it's just a zip archive +const supportedFormats = ['jpg', 'png', 'avif', 'gif', 'bmp', 'dib', 'tiff', 'tif']; + class ArchiveSource { constructor(url) { this.url = url; @@ -259,14 +262,11 @@ class ArchiveSource { this.raw = await this.archive.getFilesArray(); await this.archive.extractFiles(); - // the comic book archive supports any kind of image format as it's just a zip archive - const supportedFormats = ['jpg', 'png', 'avif', 'gif', 'bmp', 'dib', 'tiff', 'tif']; - let files = await this.archive.getFilesArray(); files = files.filter((file) => { const name = file.file.name; const index = name.lastIndexOf('.'); - return supportedFormats.includes(name.substr(index + 1)); + return index !== 1 && supportedFormats.includes(name.slice(index + 1)); }); files.sort((a, b) => { if (a.file.name < b.file.name) { From 4c4bf544dda15886474efa607f186d001d5335d2 Mon Sep 17 00:00:00 2001 From: Justin Tamblyn Date: Sun, 23 Jan 2022 08:51:09 +0000 Subject: [PATCH 052/389] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index 47762df8fd..b0ac48b36e 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -793,5 +793,15 @@ "OptionBluray": "BD", "TypeOptionPluralSeries": "TV Programme", "LiveTV": "Lewendige TV", - "OptionCriticRating": "Filkritiek Gradering" + "OptionCriticRating": "Filkritiek Gradering", + "HeaderSyncPlayTimeSyncSettings": "Tydsinkronisering", + "HeaderSyncPlayPlaybackSettings": "Afspeel", + "HeaderSyncPlaySettings": "SyncPlay Konfigurasie", + "ErrorPlayerNotFound": "Geen speler vir die gevraagde media gevind nie.", + "Engineer": "Klankingenieur", + "Cursive": "Kursief", + "Console": "Konsole", + "Conductor": "Kondukteur", + "Casual": "Informeel", + "Arranger": "Organiseerder" } From 9fcb3569c07a9b111a933b86e30514f28e922a75 Mon Sep 17 00:00:00 2001 From: SeanPai Date: Sun, 23 Jan 2022 11:09:12 +0000 Subject: [PATCH 053/389] 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index cc6b99c656..5439e39ced 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -849,7 +849,7 @@ "Screenshot": "截圖", "Suggestions": "建議", "TabCodecs": "編碼", - "TabContainers": "影片容器", + "TabContainers": "影片格式", "TabDashboard": "控制台", "TabLogs": "日誌", "TabNotifications": "通知", From f70e5195d1d7f3f53556489b693153c9e33a96eb Mon Sep 17 00:00:00 2001 From: LordBurtz Date: Sun, 23 Jan 2022 13:49:03 +0000 Subject: [PATCH 054/389] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 4e6c408e62..586b3cbee2 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -618,7 +618,7 @@ "LabelRecordingPathHelp": "Legt das Verzeichnis für Aufnahmen fest. Wird es leer gelassen, wird das Daten-Verzeichnis des Servers verwendet.", "LabelRefreshMode": "Aktualisierungsmodus:", "LabelReleaseDate": "Veröffentlichungsdatum:", - "LabelRemoteClientBitrateLimit": "Limit für die Internet Streaming Datenrate (Mbps):", + "LabelRemoteClientBitrateLimit": "Limit der Internet Streaming bitrate (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Ein optionales Bitratenlimit pro Stream für alle Geräte außerhalb des Netzwerkes. Dies ist nützlich, um zu verhindern, dass Geräte eine höhere Datenrate verwenden, als die Internetverbindung erlaubt. Es kann zu erhöhter CPU-Last auf deinem Server kommen, da ggf. Videos in Echtzeit in eine niedrigere Bitrate transkodiert werden müssen.", "LabelRuntimeMinutes": "Laufzeit:", "LabelSaveLocalMetadata": "Bildmaterial in den Medienverzeichnissen speichern", From 0083dd2dd7f0ab5093b8de55ad82e2f973cd906c Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sun, 23 Jan 2022 12:57:21 +0000 Subject: [PATCH 055/389] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 8ccfea9156..abe003bc0c 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1516,7 +1516,7 @@ "TextSent": "Đã gửi văn bản.", "MessageSent": "Đã gửi tin nhắn.", "LabelSlowResponseTime": "Thời gian tính bằng mili giây sau đó phản hồi được coi là chậm:", - "LabelSlowResponseEnabled": "Ghi lại thông báo cảnh báo nếu máy chủ trả lời chậm", + "LabelSlowResponseEnabled": "Ghi lại thông báo cảnh báo nếu máy chủ hồi đáp chậm", "UseEpisodeImagesInNextUpHelp": "Phần 'Tiếp theo' và 'Tiếp tục Xem' sẽ dùng ảnh của tập làm ảnh thu nhỏ thay vì ảnh thu nhỏ chính thức của chương trình.", "UseEpisodeImagesInNextUp": "Sử dụng hình ảnh tập trong phần 'Tiếp theo' và 'Tiếp tục Xem'", "LabelLocalCustomCss": "Mã CSS tùy chỉnh để tạo kiểu chỉ áp dụng cho ứng dụng khách này. Bạn có thể muốn tắt mã CSS tùy chỉnh của máy chủ.", From d6aafb0fcb082cb2f7adad41ab3ae45d3cd6edbc Mon Sep 17 00:00:00 2001 From: h1dden-da3m0n <33120068+h1dden-da3m0n@users.noreply.github.com> Date: Sun, 23 Jan 2022 16:48:15 +0100 Subject: [PATCH 056/389] add stale issue check workflow this should replace the functionality of the discontinued stale-bot --- .github/stale.yml | 27 --------------------------- .github/workflows/repo-stale.yaml | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 27 deletions(-) delete mode 100644 .github/stale.yml create mode 100644 .github/workflows/repo-stale.yaml diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 86d1216bae..0000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,27 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 120 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 21 -# Issues with these labels will never be considered stale -exemptLabels: - - regression - - security - - roadmap - - future - - feature - - enhancement - - confirmed -# Label to use when marking an issue as stale -staleLabel: stale -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments. - - If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or nightlies, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label. - This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on [Matrix or Social Media](https://docs.jellyfin.org/general/getting-help.html). -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false - -# Disable automatic closing of pull requests -pulls: - daysUntilClose: false diff --git a/.github/workflows/repo-stale.yaml b/.github/workflows/repo-stale.yaml new file mode 100644 index 0000000000..3dca44122e --- /dev/null +++ b/.github/workflows/repo-stale.yaml @@ -0,0 +1,30 @@ +name: Issue Stale Check + +on: + schedule: + - cron: '30 1 * * *' + workflow_dispatch: + +permissions: + issues: write + pull-requests: write + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v4.1.0 + with: + repo-token: ${{ github.token }} + days-before-stale: 120 + days-before-pr-stale: -1 + days-before-close: 21 + days-before-pr-close: -1 + exempt-issue-labels: regression,security,roadmap,future,feature,enhancement,confirmed + stale-issue-label: stale + stale-issue-message: |- + This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments. + + If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or master branch, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label. + + This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on [Matrix or Social Media](https://docs.jellyfin.org/general/getting-help.html). From 0c37ae4e7e619660534b56e4442132340da3b7fd Mon Sep 17 00:00:00 2001 From: K3rnelPan1c <33120068+h1dden-da3m0n@users.noreply.github.com> Date: Sun, 23 Jan 2022 18:22:51 +0100 Subject: [PATCH 057/389] change PAT use for stale action --- .github/workflows/repo-stale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/repo-stale.yaml b/.github/workflows/repo-stale.yaml index 3dca44122e..78a90795d8 100644 --- a/.github/workflows/repo-stale.yaml +++ b/.github/workflows/repo-stale.yaml @@ -15,7 +15,7 @@ jobs: steps: - uses: actions/stale@v4.1.0 with: - repo-token: ${{ github.token }} + repo-token: ${{ secrets.JF_BOT_TOKEN }} days-before-stale: 120 days-before-pr-stale: -1 days-before-close: 21 From 6a48153ebfcdf272d2c5459bc6c701a51b35aaab Mon Sep 17 00:00:00 2001 From: K3rnelPan1c <33120068+h1dden-da3m0n@users.noreply.github.com> Date: Tue, 25 Jan 2022 18:33:49 +0100 Subject: [PATCH 058/389] add org filter to stale workflow --- .github/workflows/repo-stale.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/repo-stale.yaml b/.github/workflows/repo-stale.yaml index 78a90795d8..ef221760b8 100644 --- a/.github/workflows/repo-stale.yaml +++ b/.github/workflows/repo-stale.yaml @@ -12,6 +12,7 @@ permissions: jobs: stale: runs-on: ubuntu-latest + if: ${{ contains(github.repository, 'jellyfin/') }} steps: - uses: actions/stale@v4.1.0 with: From 6def0102dc457b54b5567356259e3a5835d4307a Mon Sep 17 00:00:00 2001 From: WWWesten Date: Tue, 25 Jan 2022 19:56:41 +0000 Subject: [PATCH 059/389] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 586b3cbee2..eabfcc001b 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -618,7 +618,7 @@ "LabelRecordingPathHelp": "Legt das Verzeichnis für Aufnahmen fest. Wird es leer gelassen, wird das Daten-Verzeichnis des Servers verwendet.", "LabelRefreshMode": "Aktualisierungsmodus:", "LabelReleaseDate": "Veröffentlichungsdatum:", - "LabelRemoteClientBitrateLimit": "Limit der Internet Streaming bitrate (Mbps):", + "LabelRemoteClientBitrateLimit": "Limit der Internet Streaming bitrate (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Ein optionales Bitratenlimit pro Stream für alle Geräte außerhalb des Netzwerkes. Dies ist nützlich, um zu verhindern, dass Geräte eine höhere Datenrate verwenden, als die Internetverbindung erlaubt. Es kann zu erhöhter CPU-Last auf deinem Server kommen, da ggf. Videos in Echtzeit in eine niedrigere Bitrate transkodiert werden müssen.", "LabelRuntimeMinutes": "Laufzeit:", "LabelSaveLocalMetadata": "Bildmaterial in den Medienverzeichnissen speichern", From 3d36863b317285733b9b644b97c96e5a31845372 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Tue, 25 Jan 2022 19:58:47 +0000 Subject: [PATCH 060/389] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index 15b3f5790a..bbe6040a45 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -1501,7 +1501,7 @@ "UnsupportedPlayback": "Jellyfin, DRM arqyly qorğalğan mazmūndyñ şifryn şeşe almaidy, bıraq barlyq mazmūnğa, sonyñ ışınde qorğalğan şyğarymdarğa, būğan qaramastan äreket jasalady. Keibır faildar, şifrlau nemese basqa qoldau körsetılmeitın şaralarğa bailanysty, mysaly, äreketestık şyğarymdarğa, tolyq qara bolyp körınuı mümkın.", "LabelTonemappingPeakHelp": "Osy mänmen signaldy/nominaldy/anyqtamalyq şyñ qaita anyqtalady. Beinelenetın metaderekterge endırılgen şyñdyq aqparat senımdı bolmağan kezde nemese tömengı auqymnan joğary auqymğa ötkızetın tonmapiñ kezınde paidaly. Ūsynylğan jäne ädepkı mänder 100 jäne 0.", "UseDoubleRateDeinterlacingHelp": "Būl parametr şatyssyzdandyru kezınde örıs qarqynyn paidalanady, ony köbınese \"bob\" şatyssyzdandyru dep ataidy, būl şatysqan beinenı teledidardan körgen kezdegıdei tolyq jyljymaldyqty jetkızu üşın beinenıñ kadr jiılıgı qosarlatylady.", - "LabelTonemappingThresholdHelp": "Tonmapiñ algoritmynyñ parametrlerı är sahnağa säikes baptalady. Al şektık män sahnanyñ özgergen-özgermegenın anyqtau üşın qoldanylady. Eger ağymdyq kadrdyñ ortaşa jaryqtyğy men ağymdyq syrğymaly orta män aralyğy şektık männen asyp ketse, onda bız sahna orta mänı men şyñdyq jaryqtyğyn qaita esepteitın bolamyz. Ūsynylğan jäne ädepkı mänder - 0,8 jäne 0,2 bolady.", + "LabelTonemappingThresholdHelp": "Tonmapiñ algoritmynyñ parametrlerı är sahnağa säikes baptalady. Al şektık män sahnanyñ özgergen-özgermegenın anyqtau üşın qoldanylady. Eger ağymdyq kadrdyñ ortaşa jaryqtyğy men ağymdyq syrğymaly orta män aralyğy şektık männen asyp ketse, onda bız sahna orta mänı men şyñdyq jaryqtyğyn qaita esepteitın bolamyz. Ūsynylğan jäne ädepkı mänder - 0.8 jäne 0.2 bolady.", "LabelTonemappingDesatHelp": "Jaryqtyqtyñ osy deñgeiınen asatyn jarqyn aimaqtar üşın qanyqsyzdandyru qoldanylady. Parametr neğūrlym joğary bolsa, soğūrlym tüstık aqparat saqtalady. Būl parametr öte jarqyn aimaqtar üşın rabaisyz köz şağylystyratyndai tüsterın boldyrmauğa kömektesedı, ornyna olar aq tüske (tegıs) ainalady. Būl auqymnan tys tüster turaly aqparatty azaitu esebınen keskınderdın tabiğilyğyn köbırek sezınuge mäjbür etedı. Ūsynylğan jäne ädepkı mänder - 0 jäne 0.5 bolady.", "AllowVppTonemappingHelp": "Tolyq Intel draiverıne negızdelgen tonmapiñ. Ağymda belgılı bır qūrylğyda ğana HDR10 beinelerımen jūmys ısteydı. Basqa OpenCL endırulerımen salıstırğanda bunyñ basımdığy joğary.", "EnableVppTonemapping": "VPP tonmapiñdı qosu", From 02b99e503b0b6642cf1d8454d1e89acbf637f0fb Mon Sep 17 00:00:00 2001 From: WWWesten Date: Tue, 25 Jan 2022 20:05:56 +0000 Subject: [PATCH 061/389] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index eda44be25c..15561d289f 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -1104,7 +1104,7 @@ "LabelUDPPortRange": "UDP komunikāciju diapazons:", "LabelTranscodingThreadCountHelp": "Atlasiet maksimālo pārkodēšanai izmantojamo pavedienu skaitu. Samazinot pavedienu skaitu, tiks samazināts CPU lietojums, taču konvertēšana var nebūt pietiekami ātra, lai atskaņošana būtu vienmērīga.", "LabelTranscodingTempPathHelp": "Norādiet pielāgotu ceļu pārkodēšanas failiem, kas tiek nodrošināti klientiem. Atstājiet tukšu, lai izmantotu servera noklusējuma iestatījumu.", - "LabelTonemappingThresholdHelp": "Toņu kartēšanas algoritma parametri tiek precīzi noregulēti katrai ainai. Un tiek izmantots slieksnis, lai noteiktu, vai aina ir mainījusies vai nav. Ja attālums starp pašreizējo kadra vidējo spilgtumu un pašreizējo vidējo vidējo spilgtumu pārsniedz sliekšņa vērtību, mēs pārrēķinām ainas vidējo un maksimālo spilgtumu. Ieteicamās un noklusējuma vērtības ir 0.8 un 0.2 .", + "LabelTonemappingThresholdHelp": "Toņu kartēšanas algoritma parametri tiek precīzi noregulēti katrai ainai. Un tiek izmantots slieksnis, lai noteiktu, vai aina ir mainījusies vai nav. Ja attālums starp pašreizējo kadra vidējo spilgtumu un pašreizējo vidējo spilgtumu pārsniedz sliekšņa vērtību, mēs pārrēķinām ainas vidējo un maksimālo spilgtumu. Ieteicamās un noklusējuma vērtības ir 0.8 un 0.2 .", "LabelTonemappingThreshold": "Toņu kartēšanas slieksnis:", "LabelTonemappingRange": "Toņu kartēšanas diapazons:", "LabelTonemappingPeakHelp": "Ignorēt signālu/nominālo/atsauces maksimumu ar šo vērtību. Noderīga, ja displeja metadatos iegultā maksimālā informācija nav uzticama vai arī notiek toņu kartēšana no zemāka diapazona uz augstāku diapazonu. Ieteicamās un noklusējuma vērtības ir 100 un 0.", From 8edfe0284ad726060d0cc4ae6d47c0bad301cc78 Mon Sep 17 00:00:00 2001 From: K3rnelPan1c <33120068+h1dden-da3m0n@users.noreply.github.com> Date: Tue, 25 Jan 2022 22:58:23 +0100 Subject: [PATCH 062/389] remove obsolete permissions block we use the JF_BOT_TOKEN PAT and not the default GITHUB_TOKEN --- .github/workflows/repo-stale.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/repo-stale.yaml b/.github/workflows/repo-stale.yaml index ef221760b8..63ded41400 100644 --- a/.github/workflows/repo-stale.yaml +++ b/.github/workflows/repo-stale.yaml @@ -5,10 +5,6 @@ on: - cron: '30 1 * * *' workflow_dispatch: -permissions: - issues: write - pull-requests: write - jobs: stale: runs-on: ubuntu-latest From 41fb4a146826e7c228ca1ce376c307f9e21d5880 Mon Sep 17 00:00:00 2001 From: Jonas Date: Wed, 26 Jan 2022 10:27:24 +0000 Subject: [PATCH 063/389] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index eabfcc001b..cbb5f73a5d 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -618,7 +618,7 @@ "LabelRecordingPathHelp": "Legt das Verzeichnis für Aufnahmen fest. Wird es leer gelassen, wird das Daten-Verzeichnis des Servers verwendet.", "LabelRefreshMode": "Aktualisierungsmodus:", "LabelReleaseDate": "Veröffentlichungsdatum:", - "LabelRemoteClientBitrateLimit": "Limit der Internet Streaming bitrate (Mbps):", + "LabelRemoteClientBitrateLimit": "Limit der Internet Streaming bitrate (Mbit/s):", "LabelRemoteClientBitrateLimitHelp": "Ein optionales Bitratenlimit pro Stream für alle Geräte außerhalb des Netzwerkes. Dies ist nützlich, um zu verhindern, dass Geräte eine höhere Datenrate verwenden, als die Internetverbindung erlaubt. Es kann zu erhöhter CPU-Last auf deinem Server kommen, da ggf. Videos in Echtzeit in eine niedrigere Bitrate transkodiert werden müssen.", "LabelRuntimeMinutes": "Laufzeit:", "LabelSaveLocalMetadata": "Bildmaterial in den Medienverzeichnissen speichern", From d27bfe94104998f69e097fe17eaf42bf1a6e3a7b Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Wed, 26 Jan 2022 11:50:20 +0000 Subject: [PATCH 064/389] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index cbb5f73a5d..1b0da0148b 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -121,7 +121,7 @@ "DeleteMedia": "Medien löschen", "DeleteUser": "Benutzer löschen", "DeleteUserConfirmation": "Bist du dir sicher, dass du diesen Benutzer löschen willst?", - "Depressed": "Gedrückt", + "Depressed": "Gesenkt", "Descending": "Absteigend", "DetectingDevices": "Suche Geräte", "DeviceAccessHelp": "Dies wird nur auf Geräte angewendet, die eindeutig identifiziert werden können, und verhindert nicht den Web-Zugriff. Gefilterter Zugriff auf Geräte verhindert die Nutzung neuer Geräte solange, bis der Zugriff für diese freigegeben wird.", @@ -618,7 +618,7 @@ "LabelRecordingPathHelp": "Legt das Verzeichnis für Aufnahmen fest. Wird es leer gelassen, wird das Daten-Verzeichnis des Servers verwendet.", "LabelRefreshMode": "Aktualisierungsmodus:", "LabelReleaseDate": "Veröffentlichungsdatum:", - "LabelRemoteClientBitrateLimit": "Limit der Internet Streaming bitrate (Mbit/s):", + "LabelRemoteClientBitrateLimit": "Bitratenlimit für Internet-Streaming (Mbit/s):", "LabelRemoteClientBitrateLimitHelp": "Ein optionales Bitratenlimit pro Stream für alle Geräte außerhalb des Netzwerkes. Dies ist nützlich, um zu verhindern, dass Geräte eine höhere Datenrate verwenden, als die Internetverbindung erlaubt. Es kann zu erhöhter CPU-Last auf deinem Server kommen, da ggf. Videos in Echtzeit in eine niedrigere Bitrate transkodiert werden müssen.", "LabelRuntimeMinutes": "Laufzeit:", "LabelSaveLocalMetadata": "Bildmaterial in den Medienverzeichnissen speichern", From 424b4fb9768b1fea4fc42f6180f489c419b0e4ff Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Wed, 26 Jan 2022 20:38:41 +0000 Subject: [PATCH 065/389] Change to drop-down for embed sub options --- .../libraryoptionseditor/libraryoptionseditor.js | 10 +++++----- .../libraryoptionseditor.template.html | 14 ++++++++------ src/strings/en-gb.json | 8 ++++++-- src/strings/en-us.json | 8 ++++++-- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 964b2bb745..5fdd413c14 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -412,9 +412,9 @@ import template from './libraryoptionseditor.template.html'; } if (contentType === 'tvshows' || contentType === 'movies' || contentType === 'musicvideos' || contentType === 'mixed') { - parent.querySelector('.chkDisableEmbeddedSubtitlesContainer').classList.remove('hide'); + parent.querySelector('.fldAllowEmbeddedSubtitlesContainer').classList.remove('hide'); } else { - parent.querySelector('.chkDisableEmbeddedSubtitlesContainer').classList.add('hide'); + parent.querySelector('.fldAllowEmbeddedSubtitlesContainer').classList.add('hide'); } parent.querySelector('.chkAutomaticallyAddToCollectionContainer').classList.toggle('hide', contentType !== 'movies'); @@ -515,7 +515,7 @@ import template from './libraryoptionseditor.template.html'; AutomaticRefreshIntervalDays: parseInt(parent.querySelector('#selectAutoRefreshInterval').value), EnableEmbeddedTitles: parent.querySelector('#chkEnableEmbeddedTitles').checked, EnableEmbeddedEpisodeInfos: parent.querySelector('#chkEnableEmbeddedEpisodeInfos').checked, - DisableEmbeddedSubtitles: parent.querySelector('#chkDisableEmbeddedSubtitles').checked, + AllowEmbeddedSubtitles: parent.querySelector('#selectAllowEmbeddedSubtitles').value, SkipSubtitlesIfEmbeddedSubtitlesPresent: parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked, SkipSubtitlesIfAudioTrackMatches: parent.querySelector('#chkSkipIfAudioTrackPresent').checked, SaveSubtitlesWithMedia: parent.querySelector('#chkSaveSubtitlesLocally').checked, @@ -567,8 +567,8 @@ import template from './libraryoptionseditor.template.html'; parent.querySelector('#chkSaveLocal').checked = options.SaveLocalMetadata; parent.querySelector('.chkAutomaticallyGroupSeries').checked = options.EnableAutomaticSeriesGrouping; parent.querySelector('#chkEnableEmbeddedTitles').checked = options.EnableEmbeddedTitles; - parent.querySelector('#chkEnableEmbeddedEpisodeInfos').checked = options.EnableEmbeddedEpisodeInfos; - parent.querySelector('#chkDisableEmbeddedSubtitles').checked = options.DisableEmbeddedSubtitles; + parent.querySelector('#chkEnableEmbeddedEpisodeInfos').value = options.EnableEmbeddedEpisodeInfos; + parent.querySelector("#selectAllowEmbeddedSubtitles").value = options.AllowEmbeddedSubtitles; parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent; parent.querySelector('#chkSaveSubtitlesLocally').checked = options.SaveSubtitlesWithMedia; parent.querySelector('#chkSkipIfAudioTrackPresent').checked = options.SkipSubtitlesIfAudioTrackMatches; diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.template.html b/src/components/libraryoptionseditor/libraryoptionseditor.template.html index 57cca6302c..8f792eaab2 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/src/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -30,12 +30,14 @@
${PreferEmbeddedEpisodeInfosOverFileNamesHelp}
-
- -
${DisableEmbeddedSubtitlesHelp}
+
+ +
${AllowEmbeddedSubtitlesHelp}
diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 22c2326267..a1a29061be 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1266,8 +1266,12 @@ "Season": "Series", "PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode information over filenames", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Use the episode information from the embedded metadata if available.", - "DisableEmbeddedSubtitles": "Disable embedded subtitles", - "DisableEmbeddedSubtitlesHelp": "Disable subtitles that are packaged within media containers.", + "AllowEmbeddedSubtitles": "Disable different types of embedded subtitles", + "AllowEmbeddedSubtitlesHelp": "Disable subtitles that are packaged within media containers. Requires a full library refresh.", + "AllowEmbeddedSubtitlesAllowAllOption": "Allow All", + "AllowEmbeddedSubtitlesAllowNoneOption": "Allow None", + "AllowEmbeddedSubtitlesAllowImageOption": "Allow Image", + "AllowEmbeddedSubtitlesAllowTextOption": "Allow Text", "Person": "Person", "Movie": "Film", "LabelLibraryPageSizeHelp": "Set the amount of items to show on a library page. Set to 0 in order to disable paging.", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 0685d09df5..725af66861 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1288,8 +1288,12 @@ "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Use the episode information from the embedded metadata if available.", "PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames", "PreferEmbeddedTitlesOverFileNamesHelp": "Determine the display title to use when no internet metadata or local metadata is available.", - "DisableEmbeddedSubtitles": "Disable embedded subtitles", - "DisableEmbeddedSubtitlesHelp": "Disable subtitles that are packaged within media containers.", + "AllowEmbeddedSubtitles": "Disable different types of embedded subtitles", + "AllowEmbeddedSubtitlesHelp": "Disable subtitles that are packaged within media containers. Requires a full library refresh.", + "AllowEmbeddedSubtitlesAllowAllOption": "Allow All", + "AllowEmbeddedSubtitlesAllowNoneOption": "Allow None", + "AllowEmbeddedSubtitlesAllowImageOption": "Allow Image", + "AllowEmbeddedSubtitlesAllowTextOption": "Allow Text", "Premiere": "Premiere", "Premieres": "Premieres", "Preview": "Preview", From a6267aee68f6bdbec86c80cf87de078a539ef979 Mon Sep 17 00:00:00 2001 From: SenorSmartyPants Date: Wed, 26 Jan 2022 17:16:30 -0600 Subject: [PATCH 066/389] Display rewatching list in Next up section on home page Supports a Rewatching list page as well. --- src/components/appRouter.js | 8 +++- src/components/homesections/homesections.js | 42 +++++++++++++++++---- src/controllers/list.js | 6 ++- src/strings/en-us.json | 1 + 4 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 62ba350ed8..db94715ede 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -752,7 +752,13 @@ class AppRouter { } if (item === 'nextup') { - return '#!/list.html?type=nextup&serverId=' + options.serverId; + let url = '#!/list.html?type=nextup&serverId=' + options.serverId; + + if (options.rewatching) { + url += '&rewatching=' + options.rewatching; + } + + return url; } if (item === 'list') { diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 94f0e2d3aa..68e858c6f9 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -600,7 +600,7 @@ import ServerConnections from '../ServerConnections'; }); } - function getNextUpFetchFn(serverId, userSettings) { + function getNextUpFetchFn(serverId, userSettings, rewatching) { return function () { const apiClient = ServerConnections.getApiClient(serverId); const oldestDateForNextUp = new Date(); @@ -613,7 +613,8 @@ import ServerConnections from '../ServerConnections'; EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableTotalRecordCount: false, DisableFirstEpisode: false, - NextUpDateCutoff: oldestDateForNextUp.toISOString() + NextUpDateCutoff: oldestDateForNextUp.toISOString(), + Rewatching: rewatching }); }; } @@ -639,21 +640,32 @@ import ServerConnections from '../ServerConnections'; }; } - function loadNextUp(elem, apiClient, userSettings) { + function renderNextUpSection(elem, apiClient, userSettings, rewatching) { let html = ''; html += '
'; if (!layoutManager.tv) { html += ''; html += '

'; - html += globalize.translate('NextUp'); + if (rewatching) { + html += globalize.translate('NextUpRewatching'); + } else { + html += globalize.translate('NextUp'); + } html += '

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

' + globalize.translate('NextUp') + '

'; + html += '

'; + if (rewatching) { + html += globalize.translate('NextUpRewatching'); + } else { + html += globalize.translate('NextUp'); + } + html += '

'; } html += '
'; @@ -673,11 +685,27 @@ import ServerConnections from '../ServerConnections'; elem.innerHTML = html; const itemsContainer = elem.querySelector('.itemsContainer'); - itemsContainer.fetchData = getNextUpFetchFn(apiClient.serverId(), userSettings); + itemsContainer.fetchData = getNextUpFetchFn(apiClient.serverId(), userSettings, rewatching); itemsContainer.getItemsHtml = getNextUpItemsHtmlFn(userSettings.useEpisodeImagesInNextUpAndResume()); itemsContainer.parentContainer = elem; } + function loadNextUp(elem, apiClient, userSettings) { + elem.classList.remove('verticalSection'); + + for (let i = 0; i <= 1; i++) { + + const frag = document.createElement('div'); + frag.classList.add('verticalSection'); + frag.classList.add('hide'); + elem.appendChild(frag); + + // 0 pass is regular next up + // 1 pass is rewatching next up + renderNextUpSection(frag, apiClient, userSettings, i == 1); + } + } + function getLatestRecordingsFetchFn(serverId, activeRecordingsOnly) { return function () { const apiClient = ServerConnections.getApiClient(serverId); diff --git a/src/controllers/list.js b/src/controllers/list.js index 6d1499366a..245d4507dc 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -256,7 +256,8 @@ import { appRouter } from '../components/appRouter'; ImageTypeLimit: 1, EnableImageTypes: 'Primary,Backdrop,Thumb', EnableTotalRecordCount: false, - SortBy: sortBy + SortBy: sortBy, + Rewatching: params.rewatching })); } @@ -615,6 +616,9 @@ class ItemsView { } if (params.type === 'nextup') { + if (params.rewatching === 'true') { + return globalize.translate('NextUpRewatching'); + } return globalize.translate('NextUp'); } diff --git a/src/strings/en-us.json b/src/strings/en-us.json index f1144e8f40..45e3f2c01c 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1125,6 +1125,7 @@ "NextChapter": "Next chapter", "NextTrack": "Skip to next", "NextUp": "Next Up", + "NextUpRewatching": "Rewatching", "No": "No", "NoCreatedLibraries": "Seems like you haven't created any libraries yet. {0}Would you like to create one now?{1}", "None": "None", From 08628e8e7ac8fb2f9ee928fd38c6cf0fadd5323c Mon Sep 17 00:00:00 2001 From: SenorSmartyPants Date: Wed, 26 Jan 2022 17:31:18 -0600 Subject: [PATCH 067/389] Fix linting --- src/components/homesections/homesections.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 68e858c6f9..178efc97fc 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -694,7 +694,6 @@ import ServerConnections from '../ServerConnections'; elem.classList.remove('verticalSection'); for (let i = 0; i <= 1; i++) { - const frag = document.createElement('div'); frag.classList.add('verticalSection'); frag.classList.add('hide'); From c5786ac66d226cf8c08994ab5ec9940f2910493d Mon Sep 17 00:00:00 2001 From: SenorSmartyPants Date: Wed, 26 Jan 2022 17:34:13 -0600 Subject: [PATCH 068/389] Fix code smell --- 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 db94715ede..4b2b0006c0 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -752,7 +752,7 @@ class AppRouter { } if (item === 'nextup') { - let url = '#!/list.html?type=nextup&serverId=' + options.serverId; + url = '#!/list.html?type=nextup&serverId=' + options.serverId; if (options.rewatching) { url += '&rewatching=' + options.rewatching; From 35fa4640a05007b54b767529677f6f60c24b111b Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 28 Jan 2022 07:36:43 -0500 Subject: [PATCH 069/389] Added translation using Weblate (Uyghur) --- src/strings/ug.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/ug.json diff --git a/src/strings/ug.json b/src/strings/ug.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/ug.json @@ -0,0 +1 @@ +{} From fbee2ebf5509f6c9a2da591541b06833cc8f117b Mon Sep 17 00:00:00 2001 From: Yanom1212 Date: Sat, 29 Jan 2022 17:08:06 +0000 Subject: [PATCH 070/389] Translated using Weblate (French (Canada)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr_CA/ --- src/strings/fr-ca.json | 180 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 179 insertions(+), 1 deletion(-) diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 15ddb874ec..3594729b99 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -727,5 +727,183 @@ "HeaderSyncPlaySettings": "Paramètres SyncPlay", "ErrorPlayerNotFound": "Aucun lecteur trouvé pour le média demandé.", "Console": "Console", - "AgeValue": "({0} an(s))" + "AgeValue": "({0} an(s))", + "MessagePasswordResetForUsers": "Les utilisateurs suivants ont vu leur mot de passe réinitialisé. Ils peuvent se connecter avec les codes PIN qui ont été utilisés pour faire la réinitialisation.", + "MessageNothingHere": "Rien ici.", + "MessageNoServersAvailable": "Aucun serveur n'a été trouvé par la découverte de serveur automatique.", + "MessageNoRepositories": "Pas de dépôts.", + "MessageNoPluginsInstalled": "Vous n'avez pas de plugins installés.", + "MessageNoPluginConfiguration": "Ce plugin n'a pas de paramètres à configurer.", + "MessageNoNextUpItems": "Rien n'a été trouvé. Commencez à regarder vos émissions !", + "MessageNoMovieSuggestionsAvailable": "Aucune suggestion de film n'est disponible. Commencez à regarder et noter vos films, pour avoir des recommandations.", + "MessageNoGenresAvailable": "Utiliser des fournisseurs de métadonnées pour récupérer les genres depuis internet.", + "MessageNoAvailablePlugins": "Aucun plugin disponible.", + "MessageItemSaved": "Élément ajouté.", + "MessageInvalidUser": "Nom d'utilisateur ou mot de passe invalide. Réessayer.", + "MessageInvalidForgotPasswordPin": "Un code PIN invalide ou expiré a été saisi. Réessayer.", + "MessageImageTypeNotSelected": "Sélectionner un type d'image dans le menu déroulant.", + "MessageImageFileTypeAllowed": "Seuls les fichiers JPEG et PNG sont pris en charge.", + "MessageGetInstalledPluginsError": "Une erreur s'est produite lors de la récupération de la liste des plugins actuellement installés.", + "MessageForgotPasswordFileCreated": "Le fichier suivant a été créé sur votre serveur et contient des instructions sur la marche à suivre :", + "MessageFileReadError": "Une erreur s'est produite lors de la lecture du fichier. Réessayer.", + "MessageEnablingOptionLongerScans": "L'activation de cette option peut entraîner des analyses de bibliothèque beaucoup plus longues.", + "MessageDownloadQueued": "Téléchargement en file d'attente.", + "MessageDeleteTaskTrigger": "T'est tu sûr de vouloir supprimer ce déclencheur de tâche ?", + "MessageCreateAccountAt": "Créez un compte sur {0}", + "MessageContactAdminToResetPassword": "Contacter votre administrateur système pour réinitialiser votre mot de passe.", + "MessageConfirmShutdown": "T'est tu sûr de vouloir arrêter le serveur ?", + "MessageConfirmRevokeApiKey": "T'est tu sûr de vouloir révoquer cette clé API. La connexion de l'application à ce serveur sera brutalement interrompue.", + "MessageConfirmRestart": "T'est tu sûr de vouloir redémarrer Jellyfin ?", + "MessageConfirmRemoveMediaLocation": "T'est tu sûr de vouloir supprimer cet emplacement ?", + "MessageConfirmRecordingCancellation": "Canceller l'enregistrement ?", + "MessageConfirmDeleteTunerDevice": "T'est tu sûr de vouloir supprimer cet appareil ?", + "MessageConfirmDeleteGuideProvider": "T'est tu sûr de vouloir supprimer ce fournisseur de guide TV ?", + "MessageConfirmAppExit": "Veux-tu sortir ?", + "MessageAreYouSureYouWishToRemoveMediaFolder": "T'est tu sûr de vouloir supprimer ce dossier multimédia ?", + "MessageAreYouSureDeleteSubtitles": "T'est tu sûr de vouloir supprimer ce fichier de sous-titre ?", + "MessageAlreadyInstalled": "Cette version est déjà installée.", + "Menu": "Menu", + "MediaIsBeingConverted": "Le fichier est en cours de conversion dans un format compatible avec l'appareil qui utilise le fichier.", + "MediaInfoVideoRange": "Gamme vidéo", + "MediaInfoSampleRate": "Taux d'échantillonnage", + "MediaInfoResolution": "Résolution", + "MediaInfoProfile": "Profil", + "MediaInfoPixelFormat": "Format de pixel", + "MediaInfoPath": "Chemin", + "MediaInfoLanguage": "Langue", + "MediaInfoInterlaced": "Entrelacé", + "MediaInfoFramerate": "Fréquence d'images (IPS)", + "MediaInfoExternal": "Externe", + "MediaInfoDefault": "Défaut", + "MediaInfoContainer": "Conteneur", + "MediaInfoColorSpace": "Espace de couleur", + "MediaInfoColorPrimaries": "Couleurs primaires", + "MediaInfoCodecTag": "Balise de codec", + "MediaInfoCodec": "Codec", + "MediaInfoChannels": "Chaînes", + "MediaInfoBitDepth": "Profondeur de couleur", + "MediaInfoAspectRatio": "Rapport de forme", + "LiveTV": "TV en direct", + "MediaInfoBitrate": "Débit binaire", + "MediaInfoForced": "Forcé", + "MediaInfoTitle": "Titre", + "MediaInfoTimestamp": "Horodatage", + "MediaInfoSize": "Poids", + "MessageConfirmProfileDeletion": "T'est tu sûr de vouloir supprimer ce profil ?", + "MessageForgotPasswordInNetworkRequired": "Veuillez réessayer sur votre réseau local pour lancer la réinitialisation du mot de passe.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Utilisez le code PIN pour vous connecter sur votre réseau local. Votre mot de passe habituel ne sera nécessaire qu'à l'extérieur de du réseau local. Si le code PIN est vide, vous n'aurez pas besoin d'un mot de passe sur votre réseau local.", + "LabelHDHomerunPortRange": "Plage de ports HDHomeRun :", + "OptionEnableExternalContentInSuggestionsHelp": "Autoriser l'inclusion de bandes-annonces sur Internet et d'émissions de TV en direct dans le contenu suggéré.", + "OptionEnableExternalContentInSuggestions": "Activer le contenu externe dans les suggestions", + "OptionEnableAccessToAllLibraries": "Activer l'accès à toutes les bibliothèques", + "OptionEnableAccessToAllChannels": "Activer l'accès à toutes les chaînes de TV", + "OptionEnableAccessFromAllDevices": "Autoriser l'accès depuis tous les appareils", + "OptionEmbedSubtitles": "Intégrer dans l'conteneur", + "OptionDvd": "DVD", + "OptionDisplayFolderViewHelp": "Ajouter une librairie 'dossiers' à la médiathèque. Cela permet d'avoir une vue complète des dossiers et fichiers.", + "OptionDisplayFolderView": "Afficher une vue de dossiers pour montrer les dossiers multimédia au complet", + "OptionDislikes": "Aime pas", + "OptionDisableUserHelp": "Le serveur n'autorisera aucune connexion de cet utilisateur. Les connexions existantes seront interrompues.", + "OptionDisableUser": "Désactiver cet utilisateur", + "OptionDatePlayed": "Date de lecture", + "OptionDateAddedImportTime": "Utiliser la date d'ajout dans la bibliothèque", + "OptionDateAddedFileTime": "Utiliser la date de création du fichier", + "OptionDateAdded": "Date d'ajout", + "OptionDaily": "Quotidien", + "OptionCustomUsers": "Personnalisé", + "OptionCriticRating": "Note des critiques", + "OptionCommunityRating": "Note de la communauté", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionAutomaticallyGroupSeriesHelp": "Les séries réparties dans plusieurs dossiers de cette bibliothèque seront automatiquement fusionnées en un.", + "OptionAutomaticallyGroupSeries": "Fusionner automatiquement les séries réparties sur plusieurs dossiers", + "OptionAllUsers": "Tous les utilisateurs", + "OptionAllowVideoPlaybackTranscoding": "Autoriser la lecture vidéo nécessitant un transcodage", + "OptionAllowVideoPlaybackRemuxing": "Autoriser la lecture vidéo nécessitant une conversion sans réencodage", + "OptionAllowUserToManageServer": "Autoriser cet utilisateur à gérer le serveur", + "OptionAllowSyncTranscoding": "Autoriser le téléchargement et la synchronisation des médias nécessitant un transcodage", + "OptionAllowRemoteSharedDevicesHelp": "Les appareils DLNA sont considérés comme partagés tant qu'un utilisateur ne commence pas à les contrôler.", + "OptionAllowRemoteSharedDevices": "Autoriser le contrôle à distance des appareils partagés", + "OptionAllowRemoteControlOthers": "Autoriser le contrôle à distance de d'autres utilisateurs", + "OptionAllowMediaPlaybackTranscodingHelp": "Limiter l'accès au transcodage peut entraîner des échecs de lecture dans les clients en raison de formats multimédias non pris en charge.", + "OptionAllowMediaPlayback": "Autoriser la lecture multimédia", + "OptionAllowManageLiveTv": "Autoriser la gestion des enregistrements TV en direct", + "OptionAllowLinkSharingHelp": "Seules les pages Web contenant des informations sur les médias sont partagées. Les fichiers multimédias ne sont jamais partagés publiquement. Les partages sont limités dans le temps et expireront après {0} jours.", + "OptionAllowLinkSharing": "Autoriser le partage sur les réseaux sociaux", + "OptionAllowContentDownloadHelp": "Les utilisateurs peuvent télécharger les médias pour les stocker sur leurs appareils. Ce n'est pas la même chose qu'une fonction de synchronisation. Les bibliothèques de livres nécessitent cette activation pour fonctionner correctement.", + "OptionAllowContentDownload": "Autoriser les téléchargements des fichiers", + "OptionAllowBrowsingLiveTv": "Autoriser l'accès à la TV en direct", + "OptionAllowAudioPlaybackTranscoding": "Autoriser la lecture audio nécessitant un transcodage", + "OptionAdminUsers": "Administrateurs", + "Option3D": "3D", + "OnWakeFromSleep": "À la sortie de veille", + "OnlyImageFormats": "Seulement les formats image (VobSub, PGS, SUB)", + "OnlyForcedSubtitlesHelp": "Seuls les sous-titres forcés seront chargés.", + "OnlyForcedSubtitles": "Uniquement les forcé", + "OneChannel": "Une chaîne", + "OnApplicationStartup": "Au démarrage de l'application", + "Off": "Désactivé", + "NumLocationsValue": "{0} dossiers", + "NoSubtitlesHelp": "Les sous-titres ne seront pas activés par défaut. Ils peuvent être activés manuellement pendant la lecture.", + "Normal": "Normal", + "NoNewDevicesFound": "Aucun nouvel appareil trouvé. Pour en ajouter un, fermez cette fenêtre et saisissez les informations de l'appareil manuellement.", + "None": "Aucun", + "NoCreatedLibraries": "On dirais que vous n'avez pas encore créé de bibliothèque. {0}Voulez-vous en créer une maintenant ?{1}", + "No": "Non", + "NextUp": "À suivre", + "NextTrack": "Passer au prochain", + "NextChapter": "Prochain chapitre", + "News": "Nouvelles", + "NewEpisodesOnly": "Juste les nouveaux épisodes", + "NewEpisodes": "Nouveaux épisodes", + "New": "Nouveau", + "Never": "Jamais", + "Name": "Nom", + "MySubtitles": "Mes sous-titres", + "Mute": "Muet", + "MusicVideo": "Vidéo musical", + "MusicLibraryHelp": "Consultez le {0}guide de dénomination de musique{1}.", + "MusicArtist": "Artiste de musique", + "MusicAlbum": "Album de musique", + "MovieLibraryHelp": "Consultez le {0}guide de dénomination des films{1}.", + "Movie": "Film", + "MoveRight": "Déplacer à droite", + "MoveLeft": "Déplacer à gauche", + "MoreMediaInfo": "Media Info", + "MoreFromValue": "Plus de {0}", + "Mobile": "Appareil mobile", + "Mixer": "Mixeur", + "MinutesBefore": "minutes avant", + "MinutesAfter": "minutes après", + "MillisecondsUnit": "ms", + "MetadataSettingChangeHelp": "La modification des paramètres des métadonnées affectera seulement le nouveau contenu ajouté. Pour actualiser le contenu existant, ouvrez l'écran des détails et cliquer sur le bouton \"Actualiser\", ou effectuez des actualisations en masse à l'aide du \"Gestionnaire de métadonnées\".", + "MetadataManager": "Gestionnaire de métadonnées", + "Metadata": "Métadonnées", + "MessageYouHaveVersionInstalled": "Tu a actuellement la version {0} d'installée.", + "MessageUnsetContentHelp": "Le contenu sera affiché sous forme de dossiers. Pour de meilleurs résultats, utilisez le gestionnaire de métadonnées pour définir les types de contenu des sous-dossiers.", + "MessageUnableToConnectToServer": "Impossible de se connecter au serveur sélectionné. Assurez-vous qu'il est opérationnel.", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Les emplacements multimédias suivants seront supprimés de votre bibliothèque :", + "MessageSyncPlayUserLeft": "{0} est parti du groupe.", + "MessageSyncPlayUserJoined": "{0} a rejoint le groupe.", + "MessageSyncPlayPlaybackPermissionRequired": "Autorisation de lecture requise.", + "MessageSyncPlayNoGroupsAvailable": "Aucun groupe disponible. Commencez à jouer quelque chose.", + "MessageSyncPlayLibraryAccessDenied": "L'accès à ce contenu est restreint.", + "MessageSyncPlayJoinGroupDenied": "Impossible de rejoindre le groupe.", + "MessageSyncPlayIsDisabled": "Autorisation requise pour utiliser SyncPlay.", + "MessageSyncPlayGroupWait": "{0} mise en mémoire tampon…", + "MessageSyncPlayGroupDoesNotExist": "Impossible de rejoindre le groupe car il n'existe pas.", + "MessageSyncPlayErrorNoActivePlayer": "Aucun lecteur actif trouvé. SyncPlay a été désactivé.", + "MessageSyncPlayErrorMissingSession": "Échec de l'activation de SyncPlay ! Session manquante.", + "MessageSyncPlayErrorMedia": "Échec de l'activation de SyncPlay ! Erreur de média.", + "MessageSyncPlayErrorAccessingGroups": "Une erreur s'est produite lors de l'accès à la liste de groupes.", + "MessageSyncPlayEnabled": "SyncPlay activé.", + "MessageSyncPlayDisabled": "SyncPlay désactivé.", + "MessageSyncPlayCreateGroupDenied": "Autorisation requise pour créer un groupe.", + "MessageSent": "Message envoyé.", + "MessageReenableUser": "Voir ci-dessous pour le réactiver", + "MessagePluginInstallError": "Une erreur s'est produite durant l'installation du plugin.", + "MessagePluginInstalled": "Le plugin a été installé sans problème. Le serveur devra être redémarré pour que les modifications prennent effet.", + "MessagePluginConfigurationRequiresLocalAccess": "Pour configurer ce plugin, Connectez-vous directement à votre serveur local.", + "MessagePleaseWait": "Attendez. Ça peut prendre quelques minutes.", + "MessagePleaseEnsureInternetMetadata": "Assurez-vous que le téléchargement des métadonnées sur Internet est activé.", + "MessagePlayAccessRestricted": "La lecture de ce contenu est restreinte. Contactez l'administrateur pour plus d'informations." } From bd8cae6f15c84886b6b26df6f11a2e4434ba4020 Mon Sep 17 00:00:00 2001 From: Sal Date: Sun, 30 Jan 2022 00:33:28 +0000 Subject: [PATCH 071/389] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 6c7823c1be..4a294b6ca5 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -753,7 +753,7 @@ "CancelSeries": "إلغاء المسلسل", "CancelRecording": "إلغاء التسجيل", "ButtonScanAllLibraries": "فحص جميع المكتبات", - "ButtonGotIt": "وجدتها", + "ButtonGotIt": "حسنا", "ButtonAddImage": "أضف صورة", "BurnSubtitlesHelp": "يحدد ما إذا كان يجب على الخادم نسخ الترجمات المصاحبة عند تحويل ترميز مقاطع الفيديو. سيؤدي تجنب ذلك إلى تحسين الأداء بشكل كبير. حدد تلقائي لنسخ التنسيقات القائمة على الصور (VOBSUB ، و PGS ، و SUB ، و IDX ، ...) وبعض ترجمات ASS أو SSA.", "BoxRear": "العلبة (الجهة الخلفية)", @@ -789,8 +789,8 @@ "Aired": "عرضت", "AirDate": "تاريخ العرض", "AddedOnValue": "تم إضافة {0}", - "AddToPlaylist": "إضافة لقائمة التشغيل", - "AddToPlayQueue": "إضافة لقائمة التشغيل المؤقتة", + "AddToPlaylist": "أضف إلى قائمة التشغيل", + "AddToPlayQueue": "أضف إلى قائمة التشغيل المؤقتة", "AddToCollection": "إضافة للتجميعات", "Add": "إضافة", "Actor": "ممثل", From 0d3550c534e5a5ce68a42ba751b9846e0a895a57 Mon Sep 17 00:00:00 2001 From: Sal Date: Sun, 30 Jan 2022 00:52:16 +0000 Subject: [PATCH 072/389] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 4a294b6ca5..21a0080a00 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -766,7 +766,7 @@ "Backdrop": "خلفية الصفحة", "Auto": "تلقائي", "AuthProviderHelp": "إختر مقدم المصادقة ليتم إستخدامه لمصادقة كلمة مرور هذا المستخدم.", - "AroundTime": "حول", + "AroundTime": "حوالي {0}", "AspectRatio": "نسبة العرض الى الارتفاع", "Ascending": "تصاعدي", "AsManyAsPossible": "أكبر عدد ممكن", @@ -791,8 +791,8 @@ "AddedOnValue": "تم إضافة {0}", "AddToPlaylist": "أضف إلى قائمة التشغيل", "AddToPlayQueue": "أضف إلى قائمة التشغيل المؤقتة", - "AddToCollection": "إضافة للتجميعات", - "Add": "إضافة", + "AddToCollection": "أضف إلى التجميعات", + "Add": "اضف", "Actor": "ممثل", "AccessRestrictedTryAgainLater": "الوصول مقيد حاليًا. الرجاء المحاولة لاحقا.", "Absolute": "مطلق", @@ -859,7 +859,7 @@ "Artist": "الفنان", "AllowFfmpegThrottling": "إبطاء التحويل", "AlbumArtist": "المؤدي", - "Album": "الألبوم", + "Album": "ألبوم", "Disconnect": "قطع الاتصال", "Disc": "القرص", "Directors": "المخرجون", From d997d63d11e337ff4827009bdee5a4e0e04dfabc Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Mon, 31 Jan 2022 23:44:07 +0300 Subject: [PATCH 073/389] Fix theme song playback when switching items with different themes When you change an item with a theme to an item with a different theme, the backdrop tries to access the player. The latter has not yet started playing the new theme (`streamInfo` is null), but is already considered playing. A runtime error occurs when referring to null `streamInfo` (to check if the content type matches). To fix the problem, set `streamInfo` just before playback starts. --- src/components/playback/playbackmanager.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 5e926f5f40..a03e25f036 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -2385,8 +2385,11 @@ class PlaybackManager { streamInfo.fullscreen = playOptions.fullscreen; - getPlayerData(player).isChangingStream = false; - getPlayerData(player).maxStreamingBitrate = maxBitrate; + const playerData = getPlayerData(player); + + playerData.isChangingStream = false; + playerData.maxStreamingBitrate = maxBitrate; + playerData.streamInfo = streamInfo; return player.play(streamInfo).then(function () { loading.hide(); From 2d5e7f745f54da7917ad6768d3e9b58fcadf3e69 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 1 Feb 2022 00:33:42 +0300 Subject: [PATCH 074/389] Skip non-ready state of player in nowPlayingBar When nowPlayingBar receives an `init` event, some propertes of `state` are not yet defined. Wait for `playbackstart`. --- src/components/nowPlayingBar/nowPlayingBar.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/nowPlayingBar/nowPlayingBar.js b/src/components/nowPlayingBar/nowPlayingBar.js index daa2d3bf15..9b2d55c2f9 100644 --- a/src/components/nowPlayingBar/nowPlayingBar.js +++ b/src/components/nowPlayingBar/nowPlayingBar.js @@ -658,6 +658,11 @@ import { appRouter } from '../appRouter'; } function onStateChanged(event, state) { + if (event.type === 'init') { + // skip non-ready state + return; + } + console.debug('nowplaying event: ' + event.type); const player = this; From b141b8c0417cd2d6907ebe7f9819d62e1e7fc7f6 Mon Sep 17 00:00:00 2001 From: Grzegorz Koperwas Date: Mon, 31 Jan 2022 22:11:30 +0000 Subject: [PATCH 075/389] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index f653658cae..d6937eeddc 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -4,7 +4,7 @@ "Actor": "Aktor", "Add": "Dodaj", "AddToCollection": "Dodaj do kolekcji", - "AddToPlayQueue": "Dodaj do kolejki odtwarzania", + "AddToPlayQueue": "Dodaj do kolejki", "AddToPlaylist": "Dodaj do listy", "AddedOnValue": "Dodano {0}", "AdditionalNotificationServices": "Przeglądaj katalog wtyczek, aby zainstalować dodatkowe usługi powiadomień.", @@ -24,7 +24,7 @@ "AllowOnTheFlySubtitleExtraction": "Zezwalaj na wydobywanie napisów w locie", "AllowOnTheFlySubtitleExtractionHelp": "Napisy wbudowane mogą zostać wydobyte z plików wideo i dostarczone do klienta w postaci zwykłego tekstu, zapobiegając transkodowaniu wideo. Na niektórych systemach może to zabierać dużo czasu i powodować wstrzymywanie odtwarzania wideo podczas procesu ekstrakcji. Odznacz tę opcję, aby wbudowane napisy były wypalane w transkodowanym wideo, gdy nie są obsługiwane przez urządzenie klienta.", "AllowRemoteAccess": "Zezwalaj na zdalne połączenia z tym serwerem", - "AllowRemoteAccessHelp": "Jeśli nieaktywne, wszelkie zdalne połączenia będą blokowane.", + "AllowRemoteAccessHelp": "Jeśli niezaznaczone, wszelkie zdalne połączenia będą blokowane.", "AllowedRemoteAddressesHelp": "Lista rozdzielona przecinkiem w postaci adresów IP lub adresów IP z maską sieciową dla całych podsieci. W przypadku pozostawienia pustego pola, dopuszczalne będą połączenia ze wszystkich zdalnych adresów.", "AlwaysPlaySubtitles": "Zawsze wyświetlaj napisy", "AlwaysPlaySubtitlesHelp": "Napisy pasujące do preferowanego języka będą wczytywane, niezależnie od języka ścieżki dźwiękowej.", From d19b5171b86baac94d9173dc3a044947eea31e5e Mon Sep 17 00:00:00 2001 From: LordBurtz Date: Tue, 1 Feb 2022 18:39:14 +0000 Subject: [PATCH 076/389] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 1b0da0148b..0dbc4426b2 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -121,7 +121,7 @@ "DeleteMedia": "Medien löschen", "DeleteUser": "Benutzer löschen", "DeleteUserConfirmation": "Bist du dir sicher, dass du diesen Benutzer löschen willst?", - "Depressed": "Gesenkt", + "Depressed": "gedrückt", "Descending": "Absteigend", "DetectingDevices": "Suche Geräte", "DeviceAccessHelp": "Dies wird nur auf Geräte angewendet, die eindeutig identifiziert werden können, und verhindert nicht den Web-Zugriff. Gefilterter Zugriff auf Geräte verhindert die Nutzung neuer Geräte solange, bis der Zugriff für diese freigegeben wird.", From 612613eb11b9bb75c6f407f5d3b79f0c463e80f7 Mon Sep 17 00:00:00 2001 From: johsoderi Date: Tue, 1 Feb 2022 22:09:17 +0000 Subject: [PATCH 077/389] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 54 ++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index c5d0193ef2..c77e02fc29 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -421,7 +421,7 @@ "LabelCustomCertificatePath": "Sökväg för anpassat SSL-certifikat:", "LabelCustomCertificatePathHelp": "Lägg upp ditt eget SSL-certifkat i .pfx-format.", "LabelCustomCss": "Egen CSS-kod:", - "LabelCustomCssHelp": "Applicera din egen CSS-stil för webbgränssnittet.", + "LabelCustomCssHelp": "Applicera din egen CSS-kod för tema/varumärke i webbgränssnittet.", "LabelCustomDeviceDisplayNameHelp": "Ange ett anpassat enhetsnamn. Lämna blankt för att använda det namn enheten själv rapporterar.", "LabelCustomRating": "Anpassad åldersgräns:", "LabelDashboardTheme": "Kontrollpanelstema:", @@ -460,7 +460,7 @@ "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": "Använd DLNA spela-upp-på", + "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.", @@ -499,7 +499,7 @@ "LabelImageType": "Typ av bild:", "LabelImportOnlyFavoriteChannels": "Endast favoritkanaler", "LabelInNetworkSignInWithEasyPassword": "Tillåt inloggning från mitt nätverk med min enkla pinkod", - "LabelInNetworkSignInWithEasyPasswordHelp": "Använd den enkla pinkoden för att logga in på klienter inom ditt lokala nätverk. Ditt vanliga lösenord behövs bara hemifrån. Om pinkoden lämnas tom behöver du inget lösenord i ditt hemnätverk.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Använd den enkla pinkoden för att logga in från klienter inom ditt lokala nätverk. Ditt vanliga lösenord behövs bara utanför hemmet. Om pinkoden lämnas tom behöver du inget lösenord i ditt hemnätverk.", "LabelInternetQuality": "Internetkvalitet:", "LabelKeepUpTo": "Behåll upp till:", "LabelKidsCategories": "Barnkategorier:", @@ -615,7 +615,7 @@ "LabelScheduledTaskLastRan": "Senast körd {0}, tog {1}.", "LabelScreensaver": "Skärmsläckare:", "LabelSeasonNumber": "Säsongsnummer:", - "LabelSelectFolderGroups": "Gruppera automatiskt innehåll från dessa mappar i vyer, t ex Filmer, Musik eller TV:", + "LabelSelectFolderGroups": "Gruppera automatiskt innehåll från dessa mappar i vyer, t ex 'Filmer', 'Musik' eller 'TV':", "LabelSelectFolderGroupsHelp": "Ej valda mappar kommer att visas för sig själva i en egen vy.", "LabelSelectUsers": "Välj användare:", "LabelSelectVersionToInstall": "Välj version att installera:", @@ -632,7 +632,7 @@ "LabelSkipIfGraphicalSubsPresent": "Hoppa över om videofilen redan innehåller inbäddade undertexter", "LabelSkipIfGraphicalSubsPresentHelp": "Att även ha externa undertexter resulterar i en effektivare uppspelning och minskar risken för omkodning.", "LabelSonyAggregationFlags": "\"Aggregation flags\" för Sony:", - "LabelSonyAggregationFlagsHelp": "Anger innehållet i elementet aggregationFlags i namnutrymmet urn:schemas-sonycom:av.", + "LabelSonyAggregationFlagsHelp": "Ange innehållet i elementet 'aggregationFlags' i namnutrymmet 'urn:schemas-sonycom:av'.", "LabelSortBy": "Sortera efter:", "LabelSortOrder": "Sortering:", "LabelSortTitle": "Sorteringstitel:", @@ -668,14 +668,14 @@ "LabelUser": "Användare:", "LabelUserLibrary": "Användarbibliotek:", "LabelUserLibraryHelp": "Välj vilken användares bibliotek som skall visas på enheten. Lämna detta tomt för att använda standardbiblioteket.", - "LabelUserRemoteClientBitrateLimitHelp": "Kommer att skriva över det globala standard-värdet satt under serverns uppspelningsinställningar.", + "LabelUserRemoteClientBitrateLimitHelp": "Kommer att skriva över det globala standard-värdet satt under serverns inställningar, se Kontrollpanel>Uppspelning>???", "LabelUsername": "Användarnamn:", "LabelVaapiDevice": "VA-API-enhet:", "LabelVaapiDeviceHelp": "Detta är renderingsnoden som används för hårdvaruacceleration.", "LabelValue": "Värde:", "LabelVersionInstalled": "{0} installerade", - "LabelXDlnaCapHelp": "Anger innehållet i elementet X_DLNACAP i namnutrymmet urn:schemas-dlna-org:device-1-0.", - "LabelXDlnaDocHelp": "Anger innehållet i elementet X_DLNADOC i namnutrymmet urn:schemas-dlna-org:device-1-0.", + "LabelXDlnaCapHelp": "Ange innehållet i elementet 'X_DLNACAP' i namnutrymmet 'urn:schemas-dlna-org:device-1-0'.", + "LabelXDlnaDocHelp": "Ange innehållet i elementet 'X_DLNADOC' i namnutrymmet 'urn:schemas-dlna-org:device-1-0'.", "LabelYear": "År:", "LabelYoureDone": "Klart!", "LabelZipCode": "Postnummer:", @@ -732,7 +732,7 @@ "MessageContactAdminToResetPassword": "Vänligen kontakta din systemadministratör för att återställa ditt lösenord.", "MessageCreateAccountAt": "Skapa ett konto på {0}", "MessageDeleteTaskTrigger": "Vill du ta bort denna aktivitetsutlösare?", - "MessageDirectoryPickerBSDInstruction": "Om du kör BSD kan du behöva konfigurera din lagring inom ditt FreeNAS-Jail för att ge Jellyfin åtkomst till din media.", + "MessageDirectoryPickerBSDInstruction": "Om du kör BSD kan du behöva konfigurera din lagring inom ditt 'FreeNAS Jail' för att ge Jellyfin åtkomst till din media.", "MessageDirectoryPickerLinuxInstruction": "För Linux på ArchLinux, CentOS, Debian, Fedora, OpenSuse, eller Ubuntu, behöver du ge systemanvändaren för Jellyfin minst läsrättigheter till dina lagringsplatser.", "MessageDownloadQueued": "Nedladdning köad.", "MessageEnablingOptionLongerScans": "Aktivering av detta alternativ kan innebära att biblioteksskanningar tar längre tid.", @@ -749,7 +749,7 @@ "MessageNoPluginsInstalled": "Inga tillägg har installerats.", "MessageNoTrailersFound": "Installera Trailer-kanalen och öka biokänslan genom att lägga till ett bibliotek av trailers.", "MessageNothingHere": "Ingenting här.", - "MessagePasswordResetForUsers": "Följande användare har fått sitt lösenord återställt. De kan nu logga in med sin pinkod som de använde vid återställningen.", + "MessagePasswordResetForUsers": "Följande användare har fått sitt lösenord återställt. De kan nu logga in med sin enkla pinkod som de angav vid återställningen.", "MessagePlayAccessRestricted": "Uppspelning av detta innehållet är för närvarande begränsat. Kontakta din server administratör för mer information.", "MessagePleaseEnsureInternetMetadata": "Var god se till att hämtning av metadata via Internet är aktiverad.", "MessagePleaseWait": "Vänligen vänta. Detta kan ta ett tag.", @@ -859,16 +859,16 @@ "OptionOnInterval": "Med visst intervall", "OptionParentalRating": "Föräldraklassning", "OptionPlainStorageFolders": "Visa alla mappar som vanliga lagringsmappar", - "OptionPlainStorageFoldersHelp": "Alla mappar representeras i DIDL som \"object.container.storageFolder\" i stället för en mer specifik typ, t.ex. \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Alla mappar representeras i DIDL som 'object.container.storageFolder' i stället för en mer specifik typ, t.ex. 'object.container.person.musicArtist'.", "OptionPlainVideoItems": "Visa alla videor som objekt utan specifikt format", - "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\".", + "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)", "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.", - "OptionRequirePerfectSubtitleMatch": "Ladda endast ner undertexter som matchar mina videofiler exakt", + "OptionRequirePerfectSubtitleMatch": "Ladda endast ner undertexter som matchar videofiler exakt", "OptionRequirePerfectSubtitleMatchHelp": "Att kräva en perfekt matchning filtrerar undertexter till att bara inkludera de som testats och verifierats med din exakta videofil. Stänger du av detta ökas chansen att undertexter laddas ned, men ökar chanserna att de är osynkade eller felaktiga.", "OptionResumable": "Kan återupptas", "OptionSaveMetadataAsHidden": "Spara metadata och bilder som dolda filer", @@ -895,8 +895,8 @@ "PerfectMatch": "Perfekt matchning", "Photos": "Bilder", "PictureInPicture": "Bild i bild", - "PinCodeResetComplete": "Pinkoden har återställts.", - "PinCodeResetConfirmation": "Är du säker på att du vill återställa pinkoden?", + "PinCodeResetComplete": "Den enkla pinkoden har återställts.", + "PinCodeResetConfirmation": "Är du säker på att du vill återställa den enkla pinkoden?", "PlaceFavoriteChannelsAtBeginning": "Placera favoritkanaler i början", "Play": "Spela upp", "PlayAllFromHere": "Spela upp alla fr o m här", @@ -906,7 +906,7 @@ "PlayNextEpisodeAutomatically": "Spela nästa avsnitt automatiskt", "Played": "Visad", "Playlists": "Spellistor", - "PleaseAddAtLeastOneFolder": "Lägg till minst en katalog till det här biblioteket genom att klicka på Lägg till-knappen.", + "PleaseAddAtLeastOneFolder": "Lägg till minst en katalog till det här biblioteket genom att klicka på '+'-knappen i sektionen 'Mappar'.", "PleaseConfirmPluginInstallation": "Klicka på OK för att bekräfta att du har läst ovanstående och önskar fortsätta med installationen av tillägget.", "PleaseEnterNameOrId": "Ange ett namn eller externt id.", "PleaseRestartServerName": "Vänligen starta om Jellyfin på {0}.", @@ -1112,7 +1112,7 @@ "Auto": "Automatisk", "AuthProviderHelp": "Välj en autentiseringsleverantör som ska användas för att autentisera denna användarens lösenord.", "Ascending": "Stigande", - "AllowedRemoteAddressesHelp": "Kommaavgränsad lista av IP-adresser eller IP/nätmask poster för nätverk som kommer bli tillåtna att ansluta avlägset. Om fältet lämnas tomt så kommer alla avlägsna adresser tillåtas.", + "AllowedRemoteAddressesHelp": "Kommaavgränsad lista med IP-adresser eller IP/nätmask-poster för nätverk som ska tillåtas att fjärransluta. Om fältet lämnas tomt kommer alla fjärradresser att tillåtas.", "AllowMediaConversionHelp": "Tillåt eller neka tillgång till mediakonvertingsfunktionen.", "AllowMediaConversion": "Tillåt mediakonvertering", "Alerts": "Alarm", @@ -1209,7 +1209,7 @@ "MusicArtist": "Musik Artist", "MusicAlbum": "Musik Album", "MoreMediaInfo": "Medieinformation", - "MetadataSettingChangeHelp": "Ändring av metadata-inställningar påverkar endast innehåll som är tillagt framledes. För att uppdatera existerande innehåll, öppna detaljsidan och klicka på uppdatera-knappen, eller utför bulk-uppdateringar med metadata-hanteraren.", + "MetadataSettingChangeHelp": "Ändring av metadata-inställningar påverkar endast innehåll som är tillagt framledes. För att uppdatera existerande innehåll, öppna detaljsidan och klicka på 'Uppdatera'-knappen, eller utför bulk-uppdateringar med 'Metadata-hanteraren'.", "Metadata": "Metadata", "MessageNoServersAvailable": "Inga servrar har hittats med automatiska server sökningen.", "MessageNoCollectionsAvailable": "Samlingar tillåter dig att avnjuta personliga grupperingar av Filmer, Serier och Album. Tryck på \"+\"-knappen för att skapa samlingar.", @@ -1241,7 +1241,7 @@ "LabelTranscodingFramerate": "Omkodning framerate:", "LabelTranscodes": "Omkodningar:", "LabelTranscodePath": "Omkodning sökväg:", - "PlaybackErrorNoCompatibleStream": "Klienten är inte kompatibel med mediaformatet och servern skickar inte ett kompatibelt medieformat.", + "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 kollar utan att spola mycket; stäng av ifall spelaren krånglar.", "AllowFfmpegThrottling": "Begränsad omkodning", "Album": "Album", @@ -1349,8 +1349,8 @@ "NextTrack": "Hoppa över till nästa", "MusicVideos": "Musikvideor", "LabelUnstable": "Ostabil", - "LabelIconMaxResHelp": "Högsta tillåtna upplösning för ikoner som visas via egenskapen upnp:icon.", - "LabelAlbumArtMaxResHelp": "Högsta tillåtna upplösning för albumomslag som visas via egenskapen upnp:albumArtURI.", + "LabelIconMaxResHelp": "Högsta tillåtna upplösning för ikoner som visas via egenskapen 'upnp:icon'.", + "LabelAlbumArtMaxResHelp": "Högsta tillåtna upplösning för albumomslag som visas via egenskapen 'upnp:albumArtURI'.", "Image": "Bild", "Data": "Data", "ButtonUseQuickConnect": "Använd Quick Connect", @@ -1443,7 +1443,7 @@ "Framerate": "Bilder per sekund", "DisablePlugin": "Avaktivera", "EnablePlugin": "Aktivera", - "DirectPlayHelp": "Källfilen är inte kompatibel med denna klient, filen spelas upp utan omkodning.", + "DirectPlayHelp": "Källfilen är helt kompatibel med denna klient, filen spelas upp utan omkodning.", "LabelTonemappingDesat": "Tonmappningsblekning:", "LabelTonemappingAlgorithm": "Välj algoritm för tonmappning:", "LabelSyncPlayTimeSyncOffset": "Tidsförskjutning:", @@ -1455,7 +1455,7 @@ "LabelSSDPTracingFilterHelp": "Valfri IP-adress som den loggade SSDP-trafiken kan filtreras på.", "LabelSSDPTracingFilter": "SSDP-filter:", "LabelPublishedServerUriHelp": "Åsidosätt URI:n som används av Jellyfin, baserad på gränssnittet eller klientens IP-adress.", - "TonemappingAlgorithmHelp": "Tonmappningen kan finjusteras. Om du inte är bekant med dessa värden, så behåll de förvalda värdena. Det rekommenderade värdet är Hable.", + "TonemappingAlgorithmHelp": "Tonmappningen kan finjusteras. Om du inte är bekant med dessa värden, så behåll de förvalda värdena. Det rekommenderade värdet är 'BT.2390'.", "SyncPlayGroupDefaultTitle": "{0}s grupp", "SubtitleVerticalPositionHelp": "Radnummer där texten syns. Positiva tal är uppifrån och ner och negativa tal är nedifrån och upp.", "PluginFromRepo": "{0} från repository {1}", @@ -1531,14 +1531,14 @@ "EnableGamepadHelp": "Leta efter inmatning från vilken ansluten kontroller som helst.", "LabelEnableGamepad": "Aktivera Gamepad", "Controls": "Kontroller", - "UseEpisodeImagesInNextUpHelp": "Nästa på tur och Försätt titta på sektionerna kommer att använda avsnittsbilder som miniatyrbilder istället för den primära miniatyrbilden för showen.", + "UseEpisodeImagesInNextUpHelp": "Sektionerna 'Nästa på tur' och 'Fortsätt kolla' kommer att använda avsnittsbilder som miniatyrbilder istället för den primära miniatyrbilden för serien.", "UseEpisodeImagesInNextUp": "Använd avsnittsbilder i \"Nästa på tur\"- och \"Fortsätt titta på\"-sektionerna", "TextSent": "Text skickad.", "MessageSent": "Meddelande skickat.", "LabelSlowResponseTime": "Tid i ms efter vilket respons anses vara långsamt:", "LabelSlowResponseEnabled": "Logga ett varningsmeddelande om serverns respons var för långsam", - "LabelLocalCustomCss": "Unik CSS styling som enbart appliceras på denna klienten. Det rekommenderas att inaktivera server unik CSS.", - "LabelDisableCustomCss": "Inaktivera unikt CSS tema försedd av servern.", + "LabelLocalCustomCss": "Egen CSS-kod som enbart appliceras på denna klient. Du bör möjligen inaktivera serverns egna CSS-kod.", + "LabelDisableCustomCss": "Inaktivera serverns egna CSS-kod för tema/varumärke.", "DisableCustomCss": "Inaktivera server-försedd custom CSS-kod", "LabelHardwareEncoding": "Hårdvaraomkodning:", "LabelSyncPlaySettingsExtraTimeOffsetHelp": "Justera tidsförskjutning manuellt (i ms) med vald enhet for tidssynkronisering. Justera med omsorg.", @@ -1553,7 +1553,7 @@ "Engineer": "Ljudingenjör", "Conductor": "Dirigent", "Arranger": "Arrangör", - "AgeValue": "år gammal", + "AgeValue": "({0} år gammal)", "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "Minsta uppspelningsfördröjning (i ms) innan SpeedToSync försöker korrigera uppspelningspositionen.", "LabelSyncPlaySettingsSyncCorrectionHelp": "Aktivera aktiv synkronisering av uppspelning genom snabbspolning eller genom söka till den beräknade positionen. Avaktivera detta om uppspelningen hackar.", "LabelSyncPlaySettingsSyncCorrection": "Synkroniseringskorrigering", From 9d3a12237af75f36b7a9985453e9a01db3a03c7c Mon Sep 17 00:00:00 2001 From: nyoooooooooooooooom Date: Tue, 1 Feb 2022 20:38:14 +0000 Subject: [PATCH 078/389] Translated using Weblate (Spanish (Latin America)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_419/ --- src/strings/es_419.json | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index a83a587673..e78db87c90 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -312,7 +312,7 @@ "LatestFromLibrary": "Últimas - {0}", "Large": "Grande", "LanNetworksHelp": "Lista separada por comas de direcciones IP o entradas de IP/máscara de red para las redes que se considerarán en la red local al aplicar las restricciones de ancho de banda. Si se establecen, todas las demás direcciones IP se considerarán como parte de la red externa y estarán sujetas a las restricciones de ancho de banda externa. Si se deja en blanco, solo se considera a la subred del servidor estar en la red local.", - "LabelffmpegPathHelp": "La ruta hacia el archivo ejecutable ffmpeg, o la carpeta que contenga ffmpeg.", + "LabelffmpegPathHelp": "La ruta hacia el archivo ejecutable FFmpeg, o la carpeta que contenga FFmpeg.", "LabelffmpegPath": "Ruta del FFmpeg:", "LabelZipCode": "Código postal:", "LabelYoureDone": "¡Has terminado!", @@ -680,7 +680,7 @@ "LabelHardwareAccelerationType": "Aceleración por hardware:", "LabelEncoderPreset": "Preajuste de Codificación:", "LabelH264Crf": "CRF de codificación H.264:", - "LabelGroupMoviesIntoCollectionsHelp": "Cuando se muestran listados de películas, las películas que estén en alguna colección serán mostradas agrupadas en un solo artículo.", + "LabelGroupMoviesIntoCollectionsHelp": "Si escoge la vista de lista de películas, las cajas se mostrarán como elementos con películas agrupadas.", "LabelGroupMoviesIntoCollections": "Agrupar películas en colecciones", "LabelServerNameHelp": "Este nombre se usará para identificar el servidor y se predeterminará al nombre del servidor.", "LabelFriendlyName": "Nombre amistoso:", @@ -709,10 +709,10 @@ "LabelEnableDlnaServerHelp": "Permite a dispositivos UPnP en tu red explorar y reproducir contenido.", "LabelEnableDlnaServer": "Habilitar servidor DLNA", "LabelEnableDlnaPlayToHelp": "Detecta dispositivos dentro de tu red y ofrece la capacidad de controlarlos remotamente.", - "LabelEnableDlnaPlayTo": "Habilitar Reproducir En mediante DLNA", + "LabelEnableDlnaPlayTo": "Activar la función \"Reproducir en\" DLNA", "LabelEnableDlnaDebugLoggingHelp": "Crea grandes archivos de registro y solo se debe usar cuando se requiera para solucionar problemas.", "LabelEnableDlnaDebugLogging": "Habilitar el registro de depuración de DLNA", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre búsquedas SSDP.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre dos búsquedas de SSDP.", "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de descubrimiento de clientes:", "LabelEnableBlastAliveMessagesHelp": "Habilita esto si el servidor no es detectado de manera confiable por otros dispositivos UPnP en tu red.", "LabelEnableBlastAliveMessages": "Bombardeo de mensajes de vida", @@ -750,8 +750,8 @@ "LabelDashboardTheme": "Tema del panel de control del servidor:", "LabelCustomRating": "Calificación personalizada:", "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre personalizado para mostrar o déjalo vacío para usar el nombre reportado por el dispositivo.", - "LabelCustomCssHelp": "Aplica tu propio estilo personalizado a la interfaz web.", - "LabelCustomCss": "CSS personalizado:", + "LabelCustomCssHelp": "Aplique su código CSS personalizado para la temática/marca en la interfaz web.", + "LabelCustomCss": "Código CSS personalizado:", "LabelCustomCertificatePathHelp": "Ruta a un archivo PKCS #12 que contiene un certificado y una clave privada para habilitar el soporte TLS en un dominio personalizado.", "LabelCustomCertificatePath": "Ruta del certificado SSL personalizado:", "LabelCurrentPassword": "Contraseña actual:", @@ -852,7 +852,7 @@ "LabelAlbumArtPN": "PN del arte del álbum:", "LabelAlbumArtMaxWidth": "Ancho máximo del arte del álbum:", "LabelAlbumArtMaxHeight": "Altura máxima del arte del álbum:", - "LabelAlbumArtHelp": "PN usado para el arte del álbum, dentro del atributo dlna:profileID en upnp:albumArtURI. Algunos dispositivos requieren valores específicos, independientemente del tamaño de la imagen.", + "LabelAlbumArtHelp": "PN utilizado para la carátula del álbum, dentro del atributo 'dlna:profileID' en 'upnp:albumArtURI'. Algunos dispositivos requieren un valor específico, independientemente del tamaño de la imagen.", "LabelAlbum": "Álbum:", "LabelAirsBeforeSeason": "Transmisión antes de la temporada:", "LabelAirsBeforeEpisode": "Transmisión antes del episodio:", @@ -942,7 +942,7 @@ "HeaderPlayback": "Reproducción de medios:", "HeaderPlayOn": "Reproducir en", "HeaderPlayAll": "Reproducir todo", - "HeaderPinCodeReset": "Restablecer código PIN", + "HeaderPinCodeReset": "Restablecer código PIN fácil", "HeaderPhotoAlbums": "Álbumes de fotos", "HeaderPaths": "Rutas", "HeaderPasswordReset": "Restablecer contraseña", @@ -1063,7 +1063,7 @@ "HeaderConfirmProfileDeletion": "Confirmar eliminación de perfil", "HeaderConfirmPluginInstallation": "Confirmar instalación de complemento", "HeaderConfigureRemoteAccess": "Configurar acceso remoto", - "HeaderCodecProfileHelp": "Los perfiles de códecs indican las limitaciones de un dispositivo al reproducir códecs específicos. Si una limitación se aplica entonces el medio será transcodificado, incluso si el códec ha sido configurado para reproducción directa.", + "HeaderCodecProfileHelp": "Los perfiles de códecs indican las limitaciones de un dispositivo al reproducir códecs específicos. Si se aplica una limitación, el medio se transcodificará, incluso si el códec está configurado para la reproducción directa.", "HeaderCodecProfile": "Perfil de códec", "HeaderChapterImages": "Imágenes de los capítulos", "HeaderChannelAccess": "Acceso a los canales", @@ -1213,7 +1213,7 @@ "ConfirmDeleteItems": "Eliminar estos elementos los eliminará tanto del sistema como de tu biblioteca de medios. ¿Estás seguro de querer continuar?", "ConfirmDeleteItem": "Eliminar este elemento lo eliminará tanto del sistema como de tu biblioteca de medios. ¿Estás seguro de querer continuar?", "ConfirmDeleteImage": "¿Eliminar imagen?", - "ConfigureDateAdded": "Configura cómo se determina la fecha de adición en el panel de control en la configuración de la biblioteca", + "ConfigureDateAdded": "Configure como los metadatos para 'Fecha de adición' en el Panel de control > Bibliotecas > Configuración de NFO", "Composer": "Compositor", "CommunityRating": "Calificación de la comunidad", "ColorTransfer": "Transferencia de color", @@ -1359,7 +1359,7 @@ "Authorize": "Autorizar", "LabelCurrentStatus": "Estado actual:", "LabelAlbumArtMaxResHelp": "Resolución maxima expuesta por medio de la función upnp:albumArtURI.", - "KnownProxiesHelp": "Lista de direcciones IP o hostnames de proxies conocidos separada por comas a ser utilizados para conectarse a esta instancia de Jellyfin. Esto es requerido para hacer uso correcto de la cabecera X-Forwarded-For. Requiere un reinicio después de guardar.", + "KnownProxiesHelp": "Lista separada por comas de las direcciones IP o los nombres de host de los proxies conocidos que se utilizan al conectarse a su instancia de Jellyfin. Esto es necesario para hacer un uso adecuado de las cabeceras 'X-Forwarded-For'. Requiere un reinicio después de guardar.", "Image": "Imágen", "Other": "Otros", "EnableQuickConnect": "Habilitar «Conexión rápida» en este servidor", @@ -1417,7 +1417,7 @@ "MusicVideos": "Videos musicales", "LabelQuickConnectCode": "Código conexión rápida:", "LabelKnownProxies": "Proxies conocidos:", - "LabelIconMaxResHelp": "Resolución maxima de los iconos por medio de la función upnp:icon.", + "LabelIconMaxResHelp": "Resolución maxima de los iconos por medio de la función 'upnp:icon'.", "EnableAutoCast": "Establecer como Predeterminado", "OptionMaxActiveSessionsHelp": "fijar esto en 0 desactivará esta característica.", "OptionMaxActiveSessions": "Determina el número máximo de sesiones que puede tener cada usuario de forma simultnea.", @@ -1456,8 +1456,8 @@ "LabelMaxAudiobookResumeHelp": "Se asumirá que los títulos están completamente reproducidos si se detienen cuando el tiempo restante es menor a este valor.", "LabelMaxAudiobookResume": "Reanudación de audiolibros en minutos:", "LabelIsForced": "Forzar", - "LabelHDHomerunPortRangeHelp": "Restringe el rango de puertos UDP de HD Homerun al valor asignado. (Por defecto es 1024 - 645535).", - "LabelHDHomerunPortRange": "Rango de puertos para HD Homerun:", + "LabelHDHomerunPortRangeHelp": "Restringe el rango de puertos UDP de HDHomeRun al valor asignado. (Por defecto es 1024 - 645535).", + "LabelHDHomerunPortRange": "Rango de puertos para HDHomeRun:", "LabelH265Crf": "H.265 codificacion CRF:", "LabelEnableSSDPTracingHelp": "Habilita el registro del rastreo de red SSDP.
ADVERTENCIA: Esto causará una seria degradación del rendimiento.", "LabelEnableSSDPTracing": "Habilitar seguimiento SSDP:", @@ -1520,7 +1520,7 @@ "UseEpisodeImagesInNextUpHelp": "Las secciones Siguiente y Continuar viendo utilizaran imagenes del episodio como miniaturas en lugar de miniaturas del show.", "UseEpisodeImagesInNextUp": "Usar imágenes de los episodios en \"Siguiente\" y \"Continuar Viendo\"", "LabelLocalCustomCss": "El CSS personalizado aplica solo a este cliente. Puede quieras deshabilitar el CSS del servidor.", - "LabelDisableCustomCss": "Deshabilitar CSS personalizado de tema/marca del servidor.", + "LabelDisableCustomCss": "Desactivar el código CSS personalizado para la tematización/marca proporcionada desde el servidor.", "DisableCustomCss": "Deshabilitar CSS proveniente del servidor", "LabelAutomaticallyAddToCollectionHelp": "Cuando al menos 2 películas tengan el mismo nombre de colección, se añadirán automáticamente a dicha colección.", "LabelAutomaticallyAddToCollection": "Agregar automáticamente a la colección", @@ -1534,5 +1534,6 @@ "Console": "Consola", "Conductor": "Director", "Casual": "Casual", - "AgeValue": "({0} años)" + "AgeValue": "({0} años)", + "LabelHardwareEncoding": "Codificación por hardware:" } From 52919e3fe815912338faaef4e5be3a13a77084fd Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Thu, 3 Feb 2022 15:34:52 +0100 Subject: [PATCH 079/389] feat(mediainfo): add external, forced and default attributes to subtitle and audio --- src/components/itemMediaInfo/itemMediaInfo.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/itemMediaInfo/itemMediaInfo.js b/src/components/itemMediaInfo/itemMediaInfo.js index e32b821386..37d19dc805 100644 --- a/src/components/itemMediaInfo/itemMediaInfo.js +++ b/src/components/itemMediaInfo/itemMediaInfo.js @@ -143,10 +143,8 @@ import template from './itemMediaInfo.template.html'; if (stream.NalLengthSize) { attributes.push(createAttribute('NAL', stream.NalLengthSize)); } - if (stream.Type !== 'Video') { + if (stream.Type === 'Subtitle' || stream.Type === 'Audio') { attributes.push(createAttribute(globalize.translate('MediaInfoDefault'), (stream.IsDefault ? 'Yes' : 'No'))); - } - if (stream.Type === 'Subtitle') { attributes.push(createAttribute(globalize.translate('MediaInfoForced'), (stream.IsForced ? 'Yes' : 'No'))); attributes.push(createAttribute(globalize.translate('MediaInfoExternal'), (stream.IsExternal ? 'Yes' : 'No'))); } From 8494d49b96104255966b088b0f6a7d2ac1883dfb Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Thu, 3 Feb 2022 01:46:08 -0500 Subject: [PATCH 080/389] Fix issue where wrong plugin could be disabled --- src/scripts/site.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/scripts/site.js b/src/scripts/site.js index 232f29a167..ccfbe9d308 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -137,11 +137,11 @@ function loadPlugins() { return getPlugins().then(function (list) { if (!appHost.supports('remotecontrol')) { // Disable remote player plugins if not supported - list.splice(list.indexOf('sessionPlayer'), 1); - list.splice(list.indexOf('chromecastPlayer'), 1); + list = list.filter(plugin => !plugin.startsWith('sessionPlayer') + && !plugin.startsWith('chromecastPlayer')); } else if (!browser.chrome && !browser.edgeChromium && !browser.opera) { // Disable chromecast player in unsupported browsers - list.splice(list.indexOf('chromecastPlayer'), 1); + list = list.filter(plugin => !plugin.startsWith('chromecastPlayer')); } // add any native plugins From c42070e509f131bcc2b6dbee8f0fc9c45f124465 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 3 Feb 2022 20:54:11 +0300 Subject: [PATCH 081/389] Enable AV1 codec on webOS 5+ FHD 'window.outerHeight' can be 1080 on UHD TVs, and LG probably specifies the `Maximum Data Transmission Rate` (not the supported codecs) in that table on their website. So we are probably free to enable AV1 on webOS 5+ FHD. --- src/scripts/browserDeviceProfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index 8ef075c4b1..c9c7066143 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -173,7 +173,7 @@ import browser from './browser'; function testCanPlayAv1(videoTestElement) { if (browser.tizenVersion >= 5.5) { return true; - } else if (browser.web0sVersion >= 5 && window.outerHeight >= 2160) { + } else if (browser.web0sVersion >= 5) { return true; } From 4343b25723d7e57b347bd9a8791ad1fdbbbf64a3 Mon Sep 17 00:00:00 2001 From: Matt Rick Date: Thu, 3 Feb 2022 20:10:13 +0000 Subject: [PATCH 082/389] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 47 ++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/src/strings/id.json b/src/strings/id.json index 059033ff8f..36be6c2643 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -57,7 +57,7 @@ "ConfirmDeleteItems": "Penghapusan item-item ini akan menghapus baik pada sistem berkas maupun pustaka media Anda. Apakah Anda yakin untuk melanjutkan?", "ConfirmDeleteItem": "Penghapusan item ini akan menghapus baik pada sistem berkas maupun pustaka media Anda. Apakah Anda yakin untuk melanjutkan?", "ConfirmDeleteImage": "Hapus gambar?", - "ConfigureDateAdded": "Konfigurasikan bagaimana tanggal ditambahkan ditentukan di dasbor di bawah pengaturan pustaka", + "ConfigureDateAdded": "Atur cara kerja penentuan metadata untuk 'Tanggal ditambahkan' di menu Dasbor > Pustaka > Pengaturan NFO", "Composer": "Komposer", "CommunityRating": "Peringkat komunitas", "ChannelNumber": "Nomor saluran", @@ -77,7 +77,7 @@ "ButtonSelectDirectory": "Pilih Direktori", "ButtonScanAllLibraries": "Pindai Semua Pustaka", "ButtonResume": "Lanjutkan", - "ButtonResetEasyPassword": "Atur ulang kode PIN mudah", + "ButtonResetEasyPassword": "Atur ulang kode PIN Mudah", "ButtonRename": "Ubah nama", "ButtonRemove": "Hapus", "ButtonRefreshGuideData": "Muat ulang Data Panduan", @@ -122,7 +122,7 @@ "AspectRatio": "Rasio perbandingan", "Ascending": "Urutan naik", "AsManyAsPossible": "Sebanyak mungkin", - "Art": "Seni", + "Art": "Clearart", "AroundTime": "Sekitar", "Anytime": "Kapanpun", "AnyLanguage": "Bahasa apapun", @@ -131,8 +131,8 @@ "AllowedRemoteAddressesHelp": "Daftar yang dipisahkan dengan koma dari alamat IP atau catatan netmask untuk jaringan yang akan diperbolehkan untuk tersambuh dari jarak jauh. Jika dibiarkan kosong, seluruh alamat jarak jauh akan diperbolehkan.", "AllowRemoteAccessHelp": "Jika centang dihapus, semua koneksi jarak jauh akan diblokir.", "AllowRemoteAccess": "Izinkan koneksi jarak jauh ke server ini", - "AllowOnTheFlySubtitleExtraction": "Izinkan ekstraksi talop dengan cepat", - "AllowMediaConversionHelp": "Izinkan atau tolak akses ke fitur konversi media.", + "AllowOnTheFlySubtitleExtraction": "Izinkan ekstraksi subtitle dengan cepat", + "AllowMediaConversionHelp": "Izinkan atau tolak akses untuk fitur konversi media.", "AllLibraries": "Semua pustaka", "AllLanguages": "Semua bahasa", "AllComplexFormats": "Semua Format Kompleks (ASS, SSA, VOBSUB, PGS, SUB, IDX,…)", @@ -171,9 +171,9 @@ "EnableCinemaMode": "Mode bioskop", "EnableBackdropsHelp": "Menampilkan latar belakang di latar belakang beberapa halaman saat menjelajahi pustaka.", "EditSubtitles": "Edit subtitle", - "EditMetadata": "Edit metadata", + "EditMetadata": "Sunting metadata", "EditImages": "Edit Gambar", - "Edit": "Edit", + "Edit": "Sunting", "EasyPasswordHelp": "Kode PIN mudah Anda digunakan untuk akses offline di klien yang didukung dan juga dapat digunakan untuk masuk ke jaringan dengan mudah.", "DropShadow": "Drop Shadow", "DrmChannelsNotImported": "Saluran dengan DRM tidak akan diimpor.", @@ -192,7 +192,7 @@ "DirectPlaying": "Bermain langsung", "DirectStreaming": "Streaming langsung", "DirectStreamHelp2": "Konsumsi daya yang dipakai oleh streaming langsung bergantung pada profil audionya. Hanya aliran video yang lossless.", - "DirectStreamHelp1": "Aliran video kompatibel dengan perangkat, tetapi tidak kompatibel dengan jenis audio (DTS, TRUEHD, dll.) atau jumlah channel audionya. Aliran video akan dikemas ulang secara lossless dengan cepat sebelum dikirim ke perangkat. Hanya aliran audio yang akan diubah.", + "DirectStreamHelp1": "Aliran video kompatibel dengan perangkat tersebut, namun memiliki format audio yang tidak kompatibel (DTS, Dolby TrueHD, dll.) atau jumlah dari saluran audio. Aliran video akan dikemas ulang secara lossless dengan cepat sebelum dikirim ke perangkat. Hanya aliran audio yang akan diubah.", "DeviceAccessHelp": "Ini hanya berlaku untuk perangkat yang dapat diidentifikasi secara unik dan tidak akan mencegah akses browser. Memfilter akses perangkat pengguna akan mencegah mereka menggunakan perangkat baru hingga disetujui di sini.", "DetectingDevices": "Mendeteksi perangkat", "Desktop": "Desktop", @@ -220,7 +220,7 @@ "ButtonPreviousTrack": "Lagu sebelumnya", "ButtonNextTrack": "Lagu berikutnya", "ButtonManualLogin": "Login Manual", - "BurnSubtitlesHelp": "Menentukan apakah server harus membakar subtitle saat melakukan transcoding video. Menghindari ini akan sangat meningkatkan kinerja. Pilih Otomatis untuk membakar format berbasis gambar (VOBSUB, PGS, SUB, IDX,…) dan subtitle ASS atau SSA tertentu.", + "BurnSubtitlesHelp": "Menentukan apakah server harus menyatukan subtitle dengan video saat sedang melakukan proses transkode video. Menghindari hal ini akan sangat meningkatkan performa. Pilih opsi Otomatis untuk menyatukan subtitle dengan format berbasis gambar (VOBSUB, PGS, SUB, IDX, dll.) dan subtitle ASS atau SSA tertentu.", "BoxSet": "Set Kotak", "AskAdminToCreateLibrary": "Minta administrator untuk membuat pustaka.", "Artist": "Artis", @@ -289,7 +289,7 @@ "LabelHardwareAccelerationTypeHelp": "Akselerasi perangkat keras membutuhkan konfigurasi tambahan.", "LabelHardwareAccelerationType": "Akselerasi perangkat keras :", "LabelEncoderPreset": "Preset pengkodean:", - "LabelH264Crf": "H.264 encoding CRF:", + "LabelH264Crf": "H.264 pengkodean CRF:", "LabelGroupMoviesIntoCollectionsHelp": "Saat menampilkan daftar film, maka film dalam sebuah koleksi akan ditampilkan sebagai satu item yang dikelompokkan.", "LabelGroupMoviesIntoCollections": "Kelompokkan film ke dalam koleksi", "LabelFriendlyName": "Nama ramah :", @@ -308,7 +308,7 @@ "HeaderAudioSettings": "Pengaturan Audio", "HeaderAudioBooks": "Buku Audio", "HeaderAppearsOn": "Muncul Di", - "HeaderApp": "App", + "HeaderApp": "Aplikasi", "ApiKeysCaption": "Daftar API keys yang saat ini diaktifkan", "HeaderApiKeys": "API Keys", "HeaderApiKey": "API Key", @@ -362,7 +362,7 @@ "ErrorAddingTunerDevice": "Terjadi kesalahan saat menambahkan perangkat tuner. Harap pastikan itu dapat diakses dan coba lagi.", "ErrorAddingMediaPathToVirtualFolder": "Terjadi kesalahan saat menambahkan lokasi media. Harap pastikan lokasi valid dan Jellyfin memiliki akses ke lokasi itu.", "ErrorAddingListingsToSchedulesDirect": "Terjadi kesalahan saat menambahkan daftar ke akun Jadwal Langsung Anda. Jadwal Langsung hanya mengizinkan jumlah daftar terbatas per akun. Anda mungkin perlu masuk ke situs web Jadwal Langsung dan menghapus daftar orang lain dari akun Anda sebelum melanjutkan.", - "Episodes": "Episodes", + "Episodes": "Semua episode", "Episode": "Episode", "EndsAtValue": "Berakhir pada {0}", "Ended": "Berakhir", @@ -416,7 +416,7 @@ "LabelCertificatePassword": "Kata sandi sertifikat:", "LabelCancelled": "Dibatalkan", "LabelCache": "Cache:", - "LabelBurnSubtitles": "Bakar subtitle:", + "LabelBurnSubtitles": "Penyatuan subtitle dengan video:", "LabelBlockContentWithTags": "Blokir item dengan tag:", "LabelBlastMessageIntervalHelp": "Menentukan durasi dalam detik antara pesan ledakan hidup.", "LabelBlastMessageInterval": "Interval pesan hidup:", @@ -458,7 +458,7 @@ "Kids": "Anak-anak", "Items": "Item", "ItemCount": "{0} item", - "InstantMix": "Instant mix", + "InstantMix": "Mix instan", "InstallingPackage": "Memasang {0} (versi {1})", "ImportMissingEpisodesHelp": "Informasi tentang episode yang hilang akan diimpor ke database Anda dan ditampilkan dalam musim dan serial. Ini dapat menyebabkan pemindaian pustaka jauh lebih lama.", "ImportFavoriteChannelsHelp": "Hanya saluran yang ditandai sebagai favorit di perangkat tuner yang akan diimpor.", @@ -703,11 +703,11 @@ "LabelEnableDlnaDebugLogging": "Aktifkan logging debug DLNA", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Tentukan durasi dalam detik antara pencarian SSDP.", "LabelEnableDlnaClientDiscoveryInterval": "Interval penemuan klien:", - "LabelEnableBlastAliveMessages": "Ledakan pesan hidup", + "LabelEnableBlastAliveMessages": "Kirim pesan hidup secara cepat dalam jumlah banyak", "KnownProxiesHelp": "Daftar alamat IP yang dipisahkan koma dari proxy yang diketahui digunakan saat menghubungkan ke instance Jellyfin Anda. Ini diperlukan untuk menggunakan header X-Forwarded-For dengan benar. Membutuhkan reboot setelah menyimpan.", "LabelProtocolInfo": "Info protokol:", "LabelProtocol": "Protokol:", - "LabelProfileVideoCodecs": "Video codecs:", + "LabelProfileVideoCodecs": "Kodek video:", "LabelProfileContainersHelp": "Dipisah dengan koma. Ini semua bisa ditinggalkan kosong untuk mengaplikasikan semua penyimpan.", "LabelProfileContainer": "Penyimpan:", "LabelProfileCodecsHelp": "Dipisah menggunakan koma. Semua bisa ditinggalkan kosong untuk menggunakan semua codecs.", @@ -944,7 +944,7 @@ "HeaderNewRepository": "Repositori Baru", "MessageNoRepositories": "Repositori Tidak ada.", "MessageNoAvailablePlugins": "Plugin Tidak tersedia.", - "MessageLeaveEmptyToInherit": "Kosongkan untuk menurunkan pengaturan dari item diatasnya atau nilai setting global default.", + "MessageLeaveEmptyToInherit": "Kosongkan untuk menyamakan pengaturan dari item di atasnya atau nilai global bawaan.", "MessageItemsAdded": "Item Ditambahkan.", "MessageItemSaved": "Item Tersimpan.", "MessageInvalidUser": "Username atau passwotd tidak valid. Coba lagi mblo.", @@ -1039,7 +1039,7 @@ "ClearQueue": "Hapus antrian", "Bwdif": "BWDIF", "ButtonCast": "Siarkan", - "AllowTonemappingHelp": "Pemetaan corak dapat mengubah jarak dinamis video dari HDR menjadi SDR sembari mempertahankan detail dan kualitas gambar, yang merupakan informasi penting untuk merepresentasikan kualitas gambar orisinal. Saat ini hanya bekerja ketika transcoding video dengan metadata HDR10 atau HLG. Jika pemutaran video tidak lancar atau gagal, pertimbangkan untuk mematikan opsi dekoder perangkat keras yang sesuai.", + "AllowTonemappingHelp": "Pemetaan corak dapat mengubah rentang dinamis sebuah video dari HDR menjadi SDR sembari mempertahankan detail dan warna gambar, yang merupakan informasi yang sangat penting untuk merepresentasikan adegan orisinal. Saat ini hanya bekerja dengan video HDR10 atau HLG. Hal ini memerlukan waktu proses OpenCL atau CUDA yang sesuai.", "HeaderPortRanges": "Pengaturan Proxy dan Firewall", "HeaderUninstallPlugin": "Copot Plugin", "LabelTonemappingAlgorithm": "Pilih algoritma Tone Mapping untuk digunakan:", @@ -1067,7 +1067,7 @@ "OnlyForcedSubtitlesHelp": "Hanya subtitle yang ditandai sebagai dipaksa yang akan dimuat.", "LabelHDHomerunPortRangeHelp": "Batasi rentang port UDP Homerun HD ke nilai ini. (Default adalah 1024 - 645535).", "LabelHDHomerunPortRange": "Rentang port HD Homerun:", - "LabelH265Crf": "H.265 encoding CRF:", + "LabelH265Crf": "H.265 pengkodean CRF:", "LabelEnableSSDPTracingHelp": "Aktifkan detail pelacakan jaringan SSDP yang akan dicatat.
PERINGATAN: Ini akan menyebabkan penurunan kinerja yang serius.", "LabelEnableSSDPTracing": "Aktifkan Pelacakan SSDP:", "LabelEnableIP6Help": "Aktifkan fungsi IPv6.", @@ -1114,5 +1114,12 @@ "MovieLibraryHelp": "Tinjau {0} panduan penamaan film {1}.", "MessageNoMovieSuggestionsAvailable": "Tidak ada saran film yang tersedia saat ini. Mulailah menonton dan menilai film Anda, lalu kembali untuk melihat rekomendasi Anda.", "LabelPlaybackInfo": "Informasi Pemutaran", - "OptionBluray": "BD" + "OptionBluray": "BD", + "DirectPlayHelp": "File sumber sepenuhnya kompatibel dengan klien ini, dan sesi ini menerima file tersebut tanpa modifikasi.", + "Cursive": "Kursif", + "Console": "Konsol", + "Conductor": "Konduktor", + "Casual": "Kasual", + "Arranger": "Penyusun", + "AgeValue": "({0} tahun)" } From cb58acba0dfcb3676c81e71cc0b173be85b19f7a Mon Sep 17 00:00:00 2001 From: Emil Manea Date: Thu, 3 Feb 2022 21:02:15 +0000 Subject: [PATCH 083/389] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index 868f2e52d5..a990602cd3 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1509,5 +1509,7 @@ "Framerate": "Rata frame-urilor", "DisablePlugin": "Dezactivează", "EnablePlugin": "Activați", - "DirectPlayHelp": "Fișierul sursă este pe deplin compatibil cu acest client, iar sesiunea primește fișierul fără modificări." + "DirectPlayHelp": "Fișierul sursă este pe deplin compatibil cu acest client, iar sesiunea primește fișierul fără modificări.", + "Arranger": "Aranjor", + "AgeValue": "({0} ani)" } From 2677b2babe8687085d00abe868f53dd0ab49dbaf Mon Sep 17 00:00:00 2001 From: Emil Manea Date: Thu, 3 Feb 2022 22:38:23 +0000 Subject: [PATCH 084/389] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 66 ++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index a990602cd3..5a2664a6a5 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -212,7 +212,7 @@ "CinemaModeConfigurationHelp": "Mod cinema aduce experiența cinematografică în sufrageria dumneavoastră prin abilitatea de a rula trailere sau introuri personalizate înaintea titlului principal.", "ConfigureDateAdded": "Configurează cum este determinată data adaugării în tabloul de bord din setările librariei", "DefaultSubtitlesHelp": "Subtitrările sunt încărcate în funcție de opțiunile implicite și forțate din metadatele încorporate. Preferințele de limbă sunt luate în considerare atunci când sunt disponibile mai multe opțiuni.", - "DirectStreamHelp1": "Fluxul video este compatibil cu dispozitivul, dar are un format audio incompatibil(DTS, TRUEHD, etc) sau numărul de canale audio. Videoclipul va fi re-ambalat în timp real înainte de a-l transmite către dispozitiv.", + "DirectStreamHelp1": "Fluxul video este compatibil cu dispozitivul, dar are un format audio incompatibil(DTS, Dolby TrueHD, etc) sau numărul de canale audio. Videoclipul va fi re-ambalat în timp real înainte de a-l transmite către dispozitiv.", "CopyStreamURLSuccess": "URL copiat cu succes.", "CustomDlnaProfilesHelp": "Crează un profil customizat pentru a viza un nou dispozitiv sau a trece peste un profil de sistem.", "DateAdded": "Data adăugării", @@ -291,7 +291,7 @@ "EditImages": "Editare imagini", "EditMetadata": "Editare metadate", "EnableExternalVideoPlayers": "Playere video externe", - "EnablePhotos": "Afișare imagini", + "EnablePhotos": "Afișează imaginile", "EndsAtValue": "Se termină la {0}", "Episodes": "Episoade", "Favorites": "Favorite", @@ -350,7 +350,7 @@ "HeaderMyMediaSmall": "Fișierele mele Media ( micșorat )", "HeaderNewApiKey": "Nouă cheie API", "HeaderNewDevices": "Dispozitive noi", - "HeaderKodiMetadataHelp": "Pentru a activa sau dezactiva metadatele NFO, editați o bibliotecă, și localizați secțiunea de salvare a metadatelor.", + "HeaderKodiMetadataHelp": "Pentru a activa sau dezactiva metadatele NFO, editați o bibliotecă, și găsiți secțiunea de salvare a metadatelor.", "HeaderNextVideoPlayingInValue": "Următorul video se redă în {0}", "HeaderOnNow": "Pornit Acum", "HeaderOtherItems": "Alte Elemente", @@ -358,7 +358,7 @@ "HeaderPassword": "Parolă", "HeaderPasswordReset": "Resetare Parolă", "HeaderPhotoAlbums": "Albume Fotografii", - "HeaderPinCodeReset": "Resetare cod PIN", + "HeaderPinCodeReset": "Resetare codul Easy PIN", "HeaderPlayAll": "Redare tot", "HeaderPlayOn": "Redă pe", "HeaderPlayback": "Redare media:", @@ -438,7 +438,7 @@ "ErrorStartHourGreaterThanEnd": "Timpul de oprire trebuie să fie mai mare decât cel de pornire.", "ErrorPleaseSelectLineup": "Selectați o linie și încercați din nou. Dacă nu sunt disponibile linii, atunci vă rugăm să verificați dacă numele dvs. de utilizator, parola și codul poștal sunt corecte.", "ExitFullscreen": "Ieșiți din modul ecran complet", - "H264CrfHelp": "Factorul de Rată Constantă (CRF) este setarea implicită a calității pentru codificatorul x264 si x265. Puteți seta valorile între 0 și 51, unde valorile mai mici ar avea ca rezultat o calitate mai bună (în detrimentul dimensiunilor mai mari de fișiere). Valorile recomandate sunt cuprinse între 18 și 28. Valoarea implicită pentru x264 este 23, si pentru x265 este 28, deci puteți utiliza acest lucru ca punct de plecare.", + "H264CrfHelp": "'Factorul de Rată Constantă' (CRF) este setarea implicită a calității pentru codificatorul x264 si x265. Puteți seta valorile între 0 și 51, unde valorile mai mici ar avea ca rezultat o calitate mai bună (în detrimentul dimensiunilor mai mari de fișiere). Valorile recomandate sunt cuprinse între 18 și 28. Valoarea implicită pentru x264 este 23, si pentru x265 este 28, deci puteți utiliza acest lucru ca punct de plecare.", "HeaderBlockItemsWithNoRating": "Blocați elemente fără informații de rating sau nerecunoscute:", "HeaderCodecProfileHelp": "Profilurile codec-ului indică limitările unui dispozitiv atunci când redă codecuri specifice. Dacă se aplică o limitare, atunci media va fi transcodată, chiar dacă codecul este configurat pentru redare directă.", "HeaderConfigureRemoteAccess": "Configurați accesul de la distanță", @@ -479,7 +479,7 @@ "ErrorGettingTvLineups": "A apărut o eroare la descărcarea liniilor TV. Vă rugăm să vă asigurați că informațiile dvs. sunt corecte și încercați din nou.", "ErrorSavingTvProvider": "A apărut o eroare la salvarea furnizorului de televiziune. Vă rugăm să vă asigurați că este accesibil și încercați din nou.", "ExtraLarge": "Foarte mare", - "FFmpegSavePathNotFound": "Nu putem localiza FFmpeg folosind calea introdusă. FFprobe este de asemenea necesar și trebuie să existe în același dosar. În mod normal, aceste componente sunt grupate în aceeași descărcare. Verificați calea și încercați din nou.", + "FFmpegSavePathNotFound": "Nu putem găsi FFmpeg folosind calea introdusă. FFprobe este de asemenea necesar și trebuie să existe în același dosar. În mod normal, aceste componente sunt grupate în aceeași descărcare. Verificați calea și încercați din nou.", "FastForward": "Repede inainte", "HeaderSelectServerCachePathHelp": "Căutați sau introduceți ruta dosarului în care doriți să stocați fișierele cache pentru server. Dosarul trebuie să aibă permisiuni de scriere.", "HeaderSelectMetadataPathHelp": "Căutați sau introduceți ruta dosarului în care doriți să stocați metadatele. Dosarul trebuie să aibă permisiuni de scriere.", @@ -630,10 +630,10 @@ "LabelLocalHttpServerPortNumber": "Portul local HTTP:", "LabelLineup": "Echipa:", "LabelLanNetworks": "Rețele LAN:", - "LabelKodiMetadataUserHelp": "Salvați datele de vizionare în fișierele NFO pentru alte aplicații de utilizat.", + "LabelKodiMetadataUserHelp": "Salvați datele de vizionare în fișierele NFO pentru ca alte aplicații să le folosească.", "LabelKodiMetadataUser": "Salvați datele de vizionare ale utilizatorului în fișierele NFO pentru:", "LabelKodiMetadataSaveImagePathsHelp": "Acest lucru este recomandat dacă aveți nume de fișiere imagine care nu sunt conforme cu ghidurile Kodi.", - "LabelKodiMetadataSaveImagePaths": "Salvați căile de imagine în fișierele nfo", + "LabelKodiMetadataSaveImagePaths": "Salvați căile de imagine în fișierele NFO", "LabelKodiMetadataEnablePathSubstitutionHelp": "Permite substituirea căilor pentru căile de imagine utilizând setările de substituire ale căilor serverului.", "LabelKodiMetadataEnablePathSubstitution": "Activați substituirea căilor", "LabelKodiMetadataEnableExtraThumbsHelp": "Atunci când descărcați imagini, acestea pot fi salvate atât în extrafanart cât și în extrathumbs pentru o compatibilitate maximă cu tema Kodi.", @@ -643,7 +643,7 @@ "LabelKidsCategories": "Categorii pentru copii:", "LabelKeepUpTo": "Păstrați până la:", "LabelInternetQuality": "Calitatea internetului:", - "LabelInNetworkSignInWithEasyPasswordHelp": "Utilizați codul Easy PIN pentru a vă conecta la clienții din rețeaua dvs. locală. Parola dvs. obișnuită va fi necesară numai acasă. Dacă codul Easy PIN este lăsat gol, nu veți avea nevoie de o parolă în rețeaua de domiciliu.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Utilizați codul Easy PIN pentru a vă conecta de la clienții din rețeaua dvs. locală. Parola dvs. obișnuită va fi necesară numai acasă. Dacă codul PIN este lăsat gol, nu veți avea nevoie de o parolă în rețeaua de domiciliu.", "LabelInNetworkSignInWithEasyPassword": "Activați conectarea în rețea cu codul Easy PIN", "LabelImportOnlyFavoriteChannels": "Limitați la canalele marcate drept preferate", "LabelImageType": "Tipul imaginii:", @@ -659,7 +659,7 @@ "LabelHardwareAccelerationType": "Accelerare hardware:", "LabelEncoderPreset": "Codificare presetată:", "LabelH264Crf": "CRF codare H.264:", - "LabelGroupMoviesIntoCollectionsHelp": "La afișarea listelor de filme, filmele aparținând unei colecții vor fi afișate ca un articol grupat.", + "LabelGroupMoviesIntoCollectionsHelp": "Dacă alegeți vizualizarea listei de filme, atunci colecțiile de filme vor fi afișate ca elemente cu filme grupate.", "LabelGroupMoviesIntoCollections": "Grupează filmele în colecții", "LabelServerNameHelp": "Acest nume va fi utilizat pentru a identifica serverul și va fi implicit la numele computerului serverului.", "LabelFriendlyName": "Nume prietenos:", @@ -677,7 +677,7 @@ "LabelEvent": "Eveniment:", "LabelEpisodeNumber": "Numărul episodului:", "LabelEndDate": "Data de încheiere:", - "LabelEnableSingleImageInDidlLimitHelp": "Unele dispozitive nu vor reda corect dacă mai multe imagini sunt încorporate în Didl.", + "LabelEnableSingleImageInDidlLimitHelp": "Unele dispozitive nu vor reda corect dacă mai multe imagini sunt încorporate în DIDL.", "LabelEnableSingleImageInDidlLimit": "Limitați la o singură imagine încorporată", "LabelEnableRealtimeMonitorHelp": "Modificările la fișiere vor fi procesate imediat pe sistemele de fișiere acceptate.", "LabelEnableRealtimeMonitor": "Activați monitorizarea în timp real", @@ -685,7 +685,7 @@ "LabelEnableDlnaServerHelp": "Permite dispozitivelor UPnP din rețeaua dvs. să răsfoiască și să redea conținut.", "LabelEnableDlnaServer": "Activați serverul DLNA", "LabelEnableDlnaPlayToHelp": "Detectează dispozitivele din rețeaua dvs. și oferă posibilitatea de a le controla de la distanță.", - "LabelEnableDlnaPlayTo": "Activează DLNA Play To", + "LabelEnableDlnaPlayTo": "Activează caracteristica 'Play To' DLNA", "LabelEnableDlnaDebugLoggingHelp": "Creați fișiere de jurnal mari și trebuie utilizate numai în funcție de necesități pentru rezolvarea problemelor.", "LabelEnableDlnaDebugLogging": "Activați jurnalul de depanare DLNA", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determină durata în secunde între două căutările SSDP.", @@ -695,7 +695,7 @@ "LabelEnableAutomaticPortMapHelp": "Încercați să mapați automat portul public către portul local prin UPnP. Este posibil să nu funcționeze cu unele modele de router. Schimbările nu vor fi aplicate decât după un restart al serverului.", "LabelEnableAutomaticPortMap": "Activați maparea automată a porturilor", "LabelEmbedAlbumArtDidlHelp": "Unele dispozitive preferă această metodă pentru obținerea artei albumelor. Alții pot să nu redea cu această opțiune activată.", - "LabelEmbedAlbumArtDidl": "Încorporați arta albumului în Didl", + "LabelEmbedAlbumArtDidl": "Încorporați arta albumului în DIDL", "LabelEasyPinCode": "Codul Easy PIN:", "LabelDynamicExternalId": "{0} Id:", "LabelDropShadow": "Umbra:", @@ -712,7 +712,7 @@ "LabelDiscNumber": "Numărul discului:", "LabelDidlMode": "Modul DIDL:", "LabelDeviceDescription": "Descrierea dispozitivului:", - "LabelDefaultUserHelp": "Stabilește ce bibliotecă de utilizator ar trebui să fie afișată pe dispozitivele conectate. Aceasta poate fi rescrisă pentru fiecare dispozitiv folosind profiluri.", + "LabelDefaultUserHelp": "Determină ce bibliotecă de utilizator ar trebui să fie afișată pe dispozitivele conectate. Aceasta poate fi rescrisă pentru fiecare dispozitiv folosind profiluri.", "LabelDefaultUser": "Utilizator implicit:", "LabelDefaultScreen": "Ecran implicit:", "LabelDeathDate": "Data decedării:", @@ -721,10 +721,10 @@ "LabelDateAddedBehaviorHelp": "Dacă există o valoare de metadate, aceasta va fi întotdeauna folosită înainte de oricare dintre aceste opțiuni.", "LabelDateAddedBehavior": "Comportamentul datei adăugării pentru conținut nou:", "LabelDateAdded": "Data adăugării:", - "LabelDashboardTheme": "Tema tabloul de bord al serverului:", + "LabelDashboardTheme": "Tema Tabloul de Bord al serverului:", "LabelCustomRating": "Evaluare personalizată:", "LabelCustomDeviceDisplayNameHelp": "Furnizați un nume de afișare personalizat sau lăsați gol pentru a utiliza numele raportat de dispozitiv.", - "LabelCustomCssHelp": "Aplicați propriul stil personalizat pe interfața web.", + "LabelCustomCssHelp": "Aplicați propriul cod CSS pentru a modifica tema/branding-ul pe interfața web.", "LabelCustomCss": "Cod CSS personalizat:", "LabelCriticRating": "Evaluarea criticilor:", "LabelCommunityRating": "Evaluare comunitate:", @@ -759,7 +759,7 @@ "LabelAlbumArtPN": "Artă album PN:", "LabelAlbumArtMaxWidth": "Artă album lățime maximă:", "LabelAlbumArtMaxHeight": "Artă album înălțime maximă:", - "LabelAlbumArtHelp": "PN utilizat pentru art albumelor, în atributul dlna:profileID pe upnp:albumArtURI. Unele dispozitive necesită o valoare specifică, indiferent de dimensiunea imaginii.", + "LabelAlbumArtHelp": "PN utilizat pentru art albumelor, în atributul 'dlna:profileID' pe 'upnp:albumArtURI'. Unele dispozitive necesită o valoare specifică, indiferent de dimensiunea imaginii.", "LabelAlbum": "Album:", "LabelAirsBeforeSeason": "Emis după sezonul:", "LabelAirsBeforeEpisode": "Emis înaintea episodului:", @@ -782,12 +782,12 @@ "HttpsRequiresCert": "Pentru a activa conexiunile securizate, va trebui să furnizați un certificat SSL de încredere, cum ar fi Let's Encrypt. Vă rugăm să furnizați un certificat sau să dezactivați conexiunile securizate.", "Horizontal": "Orizontal", "Home": "Acasă", - "HideWatchedContentFromLatestMedia": "Ascunde conținutul vizionat din cele mai recente media", + "HideWatchedContentFromLatestMedia": "Ascunde conținutul vizionat secțiunea 'Cea mai recentă media'", "Hide": "Ascunde", "HeaderYears": "Ani", - "HeaderXmlSettings": "XML setări", - "HeaderXmlDocumentAttributes": "XML Document Atribute", - "HeaderXmlDocumentAttribute": "XML Document Atribut", + "HeaderXmlSettings": "Setări XML", + "HeaderXmlDocumentAttributes": "Atribut Document XML", + "HeaderXmlDocumentAttribute": "Atribut Document XML", "HeaderVideos": "Videoclipuri", "HeaderVideoTypes": "Tipuri video", "HeaderVideoType": "Tipul video", @@ -949,7 +949,7 @@ "LatestFromLibrary": "Ultimele {0}", "Large": "Mare", "LanNetworksHelp": "Lista separată de virgule a adreselor IP sau a intrărilor de tip IP/mască de rețea pentru rețelele care vor fi luate în considerare în rețeaua locală atunci când se aplică restricțiile de lățime de bandă. Dacă este setat, toate celelalte adrese IP vor fi considerate a fi în rețeaua externă și vor fi supuse restricțiilor de lățime de bandă externe. Dacă este lăsat necompletat, numai subnetul serverului este considerat a fi în rețeaua locală.", - "LabelffmpegPathHelp": "Calea către executabilul ffmpeg sau dosarul care conține ffmpeg.", + "LabelffmpegPathHelp": "Calea către executabilul FFmpeg sau dosarul care conține FFmpeg.", "LabelffmpegPath": "Calea către FFmpeg:", "LabelZipCode": "Cod poștal:", "LabelYear": "Anul:", @@ -1116,7 +1116,7 @@ "OptionSpecialEpisode": "Speciale", "OptionSaveMetadataAsHiddenHelp": "Modificarea acestui lucru se va aplica la noi metadate salvate de acum înainte. Fișierele de metadate existente vor fi actualizate data viitoare când sunt salvate de server.", "OptionSaveMetadataAsHidden": "Salvați metadata și imaginile ca fișiere ascunse", - "OptionResElement": "'res' element", + "OptionResElement": "element 'res'", "OptionRequirePerfectSubtitleMatchHelp": "Cerând o potrivire perfectă va filtra subtitrările pentru a le include doar pe cele care au fost testate și verificate cu fișierul dvs. video exact. Debifând acest lucru, va crește probabilitatea descărcării subtitrărilor, dar va crește șansele de a avea decalaje sau de a greși textul de subtitrare.", "OptionRequirePerfectSubtitleMatch": "Descărcați doar subtitrări care se potrivesc perfect pentru fișierele mele video", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Acest lucru este necesar pentru unele dispozitive care nu caută foarte bine în timp.", @@ -1288,7 +1288,7 @@ "HeaderRemoteAccessSettings": "Setări pentru acces distant", "HeaderHttpsSettings": "Setări HTTPS", "SaveChanges": "Salvează modificările", - "HeaderDVR": "DVR", + "HeaderDVR": "Înregistrator Digital", "SyncPlayAccessHelp": "Selectați nivelul de acces pe care îl are acest utilizator la funcția SyncPlay. La SyncPlay permite sincronizarea redării cu alte dispozitive.", "MessageSyncPlayErrorMedia": "Eroare la activarea SyncPlay! Eroare media.", "MessageSyncPlayErrorMissingSession": "Eroare la activarea SyncPlay! Sesiune lipsă.", @@ -1370,12 +1370,12 @@ "Poster": "Afiș", "Photo": "Fotografie", "MusicVideos": "Videoclipuri muzicale", - "LabelIconMaxResHelp": "Rezoluția maximă a pictogramelor expuse prin proprietatea upnp:icon.", - "LabelAlbumArtMaxResHelp": "Rezoluția maximă a imaginii albumului expus prin proprietatea upnp:albumArtURI.", + "LabelIconMaxResHelp": "Rezoluția maximă a pictogramelor expuse prin proprietatea 'upnp:icon'.", + "LabelAlbumArtMaxResHelp": "Rezoluția maximă a imaginii albumului expus prin proprietatea 'upnp:albumArtURI'.", "Image": "Imagine", "Other": "Altele", "Data": "Data", - "EnableQuickConnect": "Activează conectarea rapidă pe acest server", + "EnableQuickConnect": "Activează Conectarea Rapidă pe acest server", "ButtonUseQuickConnect": "Folosește conectarea rapidă", "ButtonActivate": "Activează", "Authorize": "Autorizează", @@ -1418,7 +1418,7 @@ "LabelQuickConnectCode": "Cod de conectare rapidă:", "LabelKnownProxies": "Proxyuri cunoscute:", "LabelCurrentStatus": "Stare curentă:", - "KnownProxiesHelp": "Lista separată prin virgulă a adreselor IP ale proxy-urilor cunoscute utilizate la conectarea la instanța dvs. Jellyfin. Acest lucru este necesar pentru a utiliza în mod corespunzător antetele X-Forwarded-For. Necesită o repornire după salvare.", + "KnownProxiesHelp": "Lista separată prin virgulă a adreselor IP ale proxy-urilor cunoscute utilizate la conectarea la instanța dvs. Jellyfin. Acest lucru este necesar pentru a utiliza în mod corespunzător antetele 'X-Forwarded-For'. Necesită o repornire după salvare.", "EnableAutoCast": "Setați ca implicit", "OptionMaxActiveSessionsHelp": "O valoare 0 va dezactiva opțiunea.", "OptionMaxActiveSessions": "Setează numărul maxim de sesiuni simultane per utilizator.", @@ -1455,7 +1455,7 @@ "LabelPlaybackInfo": "Informații despre redare", "RemuxHelp2": "Remux folosește foarte puțină putere de procesare, cu o calitate a media complet fără pierderi.", "RemuxHelp1": "Media se află într-un container de fișiere incompatibil (MKV, AVI, WMV etc.), dar atât fluxul video, cât și fluxul audio sunt compatibile cu dispozitivul. Mediul va fi reambalat fără pierderi, din mers, înainte de a fi trimis pe dispozitiv.", - "Remuxing": "Remuxing", + "Remuxing": "Remuxare", "AspectRatioFill": "Completați", "AspectRatioCover": "Copertă", "SyncPlayGroupDefaultTitle": "Grupul lui {0}", @@ -1474,8 +1474,8 @@ "LabelPublishedServerUriHelp": "Înlocuiți URI-ul folosit de Jellyfin, pe baza interfeței sau a adresei IP a clientului.", "LabelPublishedServerUri": "URI-uri de server publicate:", "LabelIsForced": "Forțat", - "LabelHDHomerunPortRangeHelp": "Restricționează gama de porturi HD Homerun UDP la această valoare. (Valoarea implicită este 1024 - 645535).", - "LabelHDHomerunPortRange": "Gama de porturi HD Homerun:", + "LabelHDHomerunPortRangeHelp": "Restricționează gama de porturi HDHomeRun UDP la această valoare. (Valoarea implicită este 1024 - 645535).", + "LabelHDHomerunPortRange": "Gama de porturi HDHomeRun:", "LabelH265Crf": "CRF codare H.265:", "LabelEnableSSDPTracingHelp": "Activați detaliile urmăririi rețelei SSDP pentru a fi înregistrate.
AVERTISMENT: Acest lucru va cauza o degradare gravă a performanței.", "LabelEnableSSDPTracing": "Activați urmărirea SSDP:", @@ -1501,8 +1501,8 @@ "MessageChromecastConnectionError": "Receptorul dvs. Google Cast nu poate contacta serverul Jellyfin. Vă rugăm să verificați conexiunea și să încercați din nou.", "LabelMinAudiobookResumeHelp": "Titlurile se presupun neredate dacă sunt oprite înainte de această durată.", "LabelMinAudiobookResume": "Timp minim de reluare pentru cărți audio:", - "LabelMaxAudiobookResumeHelp": "Titlurile sunt considerate complet redate dacă sunt oprite după acest timp.", - "LabelMaxAudiobookResume": "Timp maxim de reluare pentru cărți audio:", + "LabelMaxAudiobookResumeHelp": "Titlurile sunt considerate complet redate dacă sunt oprite când durata rămasă este mai mica decăt această valoare.", + "LabelMaxAudiobookResume": "Minute ramase din Audiobook pentru a rezuma:", "AllowVppTonemappingHelp": "Cartografiere completă a tonurilor bazată pe hardware fără utilizarea filtrului OpenCL. În prezent funcționează numai la transcodarea videoclipurilor cu metadate HDR10 încorporate.", "EnableVppTonemapping": "Activați maparea tonului VPP", "EnableEnhancedNvdecDecoder": "Activați decodorul NVDEC îmbunătățit", From b14daedb99ee300e0eba09043e5aea30332a1546 Mon Sep 17 00:00:00 2001 From: Ivo Capanema Date: Fri, 4 Feb 2022 06:21:32 +0000 Subject: [PATCH 085/389] 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 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index f351a9b7ab..79c5132b9d 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -607,7 +607,7 @@ "LabelParentalRating": "Classificação etária:", "LabelPassword": "Senha:", "LabelPasswordConfirm": "Senha (confirmar):", - "LabelPasswordRecoveryPinCode": "Código pin:", + "LabelPasswordRecoveryPinCode": "Código PIN:", "LabelPath": "Local:", "LabelPersonRole": "Personagem:", "LabelPersonRoleHelp": "Exemplo: motorista do carrinho de sorvete", @@ -644,7 +644,7 @@ "LabelScheduledTaskLastRan": "Última execução {0}, demorando {1}.", "LabelScreensaver": "Protetor de tela:", "LabelSeasonNumber": "Número da temporada:", - "LabelSelectFolderGroups": "Agrupar automaticamente o conteúdo das seguintes pastas em visualizações como Filmes, Músicas e TV:", + "LabelSelectFolderGroups": "Agrupar automaticamente o conteúdo das seguintes pastas em visualizações como 'Filmes', 'Músicas' e 'TV':", "LabelSelectFolderGroupsHelp": "Pastas que não estão marcadas serão exibidas em sua própria visualização.", "LabelSelectUsers": "Selecionar usuários:", "LabelSelectVersionToInstall": "Selecione a versão para instalar:", @@ -1325,7 +1325,7 @@ "ShowMore": "Mostrar mais", "ShowLess": "Mostrar menos", "ButtonSyncPlay": "SyncPlay", - "ButtonCast": "Elenco", + "ButtonCast": "Transmitir", "MessageNoGenresAvailable": "Habilitar alguns provedores de metadados a baixar gêneros da internet.", "EnableFasterAnimationsHelp": "Usar animações e transições mais rápidas.", "EnableFasterAnimations": "Animações mais rápidas", @@ -1392,11 +1392,11 @@ "LabelTonemappingAlgorithm": "Selecione o algoritmo de mapeamento de tons a ser usado:", "AllowTonemappingHelp": "O mapeamento de tons pode transformar a faixa dinâmica de um vídeo de HDR para SDR, mantendo detalhes e cores da imagem, informações muito importantes para representar a cena original. Atualmente, funciona apenas ao transcodificar vídeos com metadados HDR10 ou HLG incorporados. Se a reprodução não for suave ou falhar, considere desativar os vídeos HDR10 ou HLG de decodificadores de hardware correspondentes. Isso requer o tempo de execução correspondente do OpenCL ou CUDA.", "EnableTonemapping": "Ativar mapeamento de tons", - "LabelOpenclDeviceHelp": "Dispositivo OpenCL usado para a mapeação de tons. Os números ao lado esquerdo do ponto (.) são referentes ao número da plataforma, os números a direita representam o número do dispositivo dentro da plataforma. O valor padrão é 0.0. O arquivo da aplicação ffmpeg contendo o método de aceleraçao de hardware OpenCL é obrigatório.", + "LabelOpenclDeviceHelp": "Dispositivo OpenCL usado para a mapeação de tons. Os números ao lado esquerdo do ponto (.) são referentes ao número da plataforma, os números a direita representam o número do dispositivo dentro da plataforma. O valor padrão é 0.0. O arquivo da aplicação FFmpeg contendo o método de aceleração de hardware OpenCL é obrigatório.", "LabelOpenclDevice": "Dispositivo OpenCL:", "LabelColorPrimaries": "Cores primárias:", "UseDoubleRateDeinterlacing": "Dobra a taxa de quadros quando estiver desinterlaçando", - "LabelQuickConnectCode": "Código de conexão rápida:", + "LabelQuickConnectCode": "Código de Conexão Rápida:", "LabelKnownProxies": "Proxies conhecidos:", "KnownProxiesHelp": "Lista de endereços IP's, separados por vírgula, de proxies conhecidos usados para conectar na sua instância do Jellyfin. Isso é necessário para usar de forma adequada os cabeçalhos \"X-Forwarded-For (cabeçalho padrão para identificar o endereço de IP original de um cliente conectando a um servidor web)\". Essa alteração necessita que o sistema seja reiniciado após salvar.", "EnableAutoCast": "Definir como padrão", @@ -1514,7 +1514,7 @@ "TextSent": "Texto enviado.", "MessageSent": "Mensagem enviada.", "LabelSlowResponseTime": "Tempo em milissegundos para que uma resposta seja considerada lenta:", - "LabelSlowResponseEnabled": "Registrar alerta se a resposta do servidor for lenta", + "LabelSlowResponseEnabled": "Registrar mensagem de aviso se o servidor demorou para responder", "LabelLocalCustomCss": "Estilo CSS personalizado aplica-se apenas a este cliente. Você pode desabilitar o CSS personalizado do servidor.", "LabelDisableCustomCss": "Desativa temas CSS customizados fornecidos pelo servidor.", "DisableCustomCss": "Desativar código CSS personalizado fornecido pelo servidor", From 2d702eb53706dbbc3e9d13de45c26d78ef5f10ea Mon Sep 17 00:00:00 2001 From: Emil Manea Date: Fri, 4 Feb 2022 07:45:29 +0000 Subject: [PATCH 086/389] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index 5a2664a6a5..d8ad700620 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -205,12 +205,12 @@ "Director": "Regizor", "AllowOnTheFlySubtitleExtractionHelp": "Subtitrările încorporate pot fi extrase din video și transmise către client în mod text pentru a preveni transcodarea videoului. Pe unele sisteme acest lucru poate dura mult timp și poate cauza oprirea redării video în timpul procesului de extragere. Dezactivează opțiunea pentru a avea subtitrările încorporate incluse în videoul transcodat atunci când nu sunt nativ suportate de către dispozitivul client.", "BirthLocation": "Locul nașterii", - "BurnSubtitlesHelp": "Determină dacă serverul ar trebui să includă subtitrări când face transcodarea video. Evitând acest lucru va îmbunătăți performanța serverului. Selectează Auto pentru includerea formaturilor bazate pe imagini (VOBSUB, PGS, SUB, IDX, ...) și anumitor subtitrări ASS sau SSA.", + "BurnSubtitlesHelp": "Determină dacă serverul ar trebui să includă subtitrări când face transcodarea video. Evitând acest lucru va îmbunătăți performanța serverului. Selectează Auto pentru includerea formaturilor bazate pe imagini (VobSub, PGS, SUB, IDX, etc.) și anumitor subtitrări ASS sau SSA.", "ButtonPreviousTrack": "Calea anterioară", "ButtonRevoke": "Revocă", "ChangingMetadataImageSettingsNewContent": "Modificări ale metadatelor sau ale setărilor de descărcare a operelor de artă se va aplica doar conținutului nou adăugat în librăriile tale. Pentru a aplica modificările titlurilor deja existente va trebui reîmprospătată manual metadata lor.", "CinemaModeConfigurationHelp": "Mod cinema aduce experiența cinematografică în sufrageria dumneavoastră prin abilitatea de a rula trailere sau introuri personalizate înaintea titlului principal.", - "ConfigureDateAdded": "Configurează cum este determinată data adaugării în tabloul de bord din setările librariei", + "ConfigureDateAdded": "Configurează cum este determinată adăugatea de metadata în tabloul de bord din setările Tablou de bord >Librărie > Setări NFO", "DefaultSubtitlesHelp": "Subtitrările sunt încărcate în funcție de opțiunile implicite și forțate din metadatele încorporate. Preferințele de limbă sunt luate în considerare atunci când sunt disponibile mai multe opțiuni.", "DirectStreamHelp1": "Fluxul video este compatibil cu dispozitivul, dar are un format audio incompatibil(DTS, Dolby TrueHD, etc) sau numărul de canale audio. Videoclipul va fi re-ambalat în timp real înainte de a-l transmite către dispozitiv.", "CopyStreamURLSuccess": "URL copiat cu succes.", @@ -454,14 +454,14 @@ "HeaderCustomDlnaProfiles": "Profiluri personalizate", "HeaderDefaultRecordingSettings": "Setări implicite de înregistrare", "HeaderDeleteItem": "Ștergeți elementul", - "DisplayInOtherHomeScreenSections": "Afișați în secțiuni ecranul principal, cum ar fi cele mai noi suporturi și continuați să vizionați", + "DisplayInOtherHomeScreenSections": "Afișați în secțiuni ecranul principal, cum ar fi 'Cea mai recentă Media'și 'Continuați să Vizionați'", "DisplayMissingEpisodesWithinSeasons": "Afișați episoade lipsă din sezoane", "DisplayMissingEpisodesWithinSeasonsHelp": "Acesta trebuie de asemenea activat pentru bibliotecile TV din configurația serverului.", "DisplayModeHelp": "Selectați stilul schemei pe care îl doriți pentru interfață.", "Download": "Descarcă", "DrmChannelsNotImported": "Canalele cu DRM nu vor fi importate.", "DropShadow": "Umbra", - "EasyPasswordHelp": "Codul dvs. PIN simplu este utilizat pentru accesul offline la clienții suportați și poate fi folosit și pentru conectarea ușoară în rețea.", + "EasyPasswordHelp": "Codul dvs. Easy PIN simplu este utilizat pentru accesul offline la clienții suportați și poate fi folosit și pentru conectarea ușoară în rețea.", "EditSubtitles": "Editează subtitrări", "EnableBackdropsHelp": "Afișați decoruri în fundalul unor pagini în timp ce navigați în bibliotecă.", "EnableColorCodedBackgrounds": "Fundaluri codate color", @@ -538,7 +538,7 @@ "LabelSendNotificationToUsers": "Trimite notificarea către:", "LabelSelectVersionToInstall": "Alegeți versiunea pentru instalare:", "LabelSelectFolderGroupsHelp": "Dosarele care nu sunt bifate vor fi afișate de singure în propria vizualizare.", - "LabelSelectFolderGroups": "Grupați automat conținutul din următoarele foldere în vizualizări, cum ar fi Filme, Muzică și TV:", + "LabelSelectFolderGroups": "Grupați automat conținutul din următoarele foldere în vizualizări, cum ar fi 'Filme', 'Muzică' și 'TV':", "LabelSeasonNumber": "Numărul sezonului:", "LabelScreensaver": "Protector de ecran:", "LabelScheduledTaskLastRan": "Ultima redare{0}, cu durata {1}.", @@ -1379,7 +1379,7 @@ "ButtonUseQuickConnect": "Folosește conectarea rapidă", "ButtonActivate": "Activează", "Authorize": "Autorizează", - "LabelMaxMuxingQueueSizeHelp": "Numărul maxim de pachete care pot fi tamponate în așteptarea inițializării tuturor fluxurilor. Încercați să o măriți dacă întâmpinați încă o eroare „Prea multe pachete tamponate pentru fluxul de ieșire” în jurnalele ffmpeg. Valoarea recomandată este 2048.", + "LabelMaxMuxingQueueSizeHelp": "Numărul maxim de pachete care pot fi tamponate în așteptarea inițializării tuturor fluxurilor. Încercați să o măriți dacă întâmpinați încă o eroare „Prea multe pachete tamponate pentru fluxul de ieșire” în jurnalele FFmpeg. Valoarea recomandată este 2048.", "LabelMaxMuxingQueueSize": "Dimensiunea maximă a cozii de mux:", "LabelTonemappingParamHelp": "Reglați algoritmul de mapare a tonurilor. Valorile recomandate și implicite sunt NaN. În general, lăsați-l necompletat.", "LabelTonemappingParam": "Parametrii tonemapping:", @@ -1393,9 +1393,9 @@ "LabelTonemappingRange": "Gama tonemapping:", "TonemappingAlgorithmHelp": "Cartarea tonurilor poate fi reglată fin. Dacă nu sunteți familiarizați cu aceste opțiuni, păstrați doar valoarea implicită. Valoarea recomandată este Hable.", "LabelTonemappingAlgorithm": "Selectați algoritmul de mapare a tonurilor pe care să îl utilizați:", - "AllowTonemappingHelp": "Cartarea tonurilor poate transforma gama dinamică a unui videoclip de la HDR la SDR, menținând în același timp detaliile și culorile imaginii, care sunt informații foarte importante pentru reprezentarea scenei originale. În prezent funcționează numai la transcodarea videoclipurilor cu metadate HDR10 sau HLG încorporate. Dacă redarea nu este netedă sau eșuează, vă rugăm să luați în considerare oprirea decodorului hardware corespunzător.", + "AllowTonemappingHelp": "Cartarea tonurilor poate transforma gama dinamică a unui videoclip de la HDR la SDR, menținând în același timp detaliile și culorile imaginii, care sunt informații foarte importante pentru reprezentarea scenei originale. În prezent funcționează doar cu videoclipiro HDR10 sau HLG. Acest lucru necesită runtime-urile OpenCL sau CUDA corespunzătoate.", "EnableTonemapping": "Activați maparea tonurilor", - "LabelOpenclDeviceHelp": "Acesta este dispozitivul OpenCL care este utilizat pentru tonemapping. Partea stângă a punctului este numărul platformei, iar partea dreaptă este numărul dispozitivului de pe platformă. Valoarea implicită este 0,0. Este necesar fișierul aplicației ffmpeg care conține metoda de accelerare hardware OpenCL.", + "LabelOpenclDeviceHelp": "Acesta este dispozitivul OpenCL care este utilizat pentru tonemapping. Partea stângă a punctului este numărul platformei, iar partea dreaptă este numărul dispozitivului de pe platformă. Valoarea implicită este 0,0. Este necesar fișierul aplicației FFmpeg care conține metoda de accelerare hardware OpenCL.", "LabelOpenclDevice": "Dispozitiv OpenCL:", "LabelColorPrimaries": "Colori primare:", "LabelColorTransfer": "Transfer de culoare:", @@ -1415,7 +1415,7 @@ "QuickConnectAuthorizeCode": "Introduceți codul {0} pentru autentificare", "QuickConnectActivationSuccessful": "Activat cu succes", "QuickConnect": "Conectare rapidă", - "LabelQuickConnectCode": "Cod de conectare rapidă:", + "LabelQuickConnectCode": "Cod de Conectare Rapidă:", "LabelKnownProxies": "Proxyuri cunoscute:", "LabelCurrentStatus": "Stare curentă:", "KnownProxiesHelp": "Lista separată prin virgulă a adreselor IP ale proxy-urilor cunoscute utilizate la conectarea la instanța dvs. Jellyfin. Acest lucru este necesar pentru a utiliza în mod corespunzător antetele 'X-Forwarded-For'. Necesită o repornire după salvare.", @@ -1511,5 +1511,30 @@ "EnablePlugin": "Activați", "DirectPlayHelp": "Fișierul sursă este pe deplin compatibil cu acest client, iar sesiunea primește fișierul fără modificări.", "Arranger": "Aranjor", - "AgeValue": "({0} ani)" + "AgeValue": "({0} ani)", + "LabelSyncPlaySettingsExtraTimeOffsetHelp": "Reglați manual decalajul de timp (în ms) cu dispozitivul selectat pentru sincronizarea timpului. Reglați cu atenție.", + "LabelSyncPlaySettingsExtraTimeOffset": "Compensare suplimentară a decalajului de timp :", + "LabelSyncPlaySettingsDescription": "Schimbă preferințele SyncPlay", + "LabelSortName": "Sortare nume:", + "LabelSlowResponseTime": "Timp in ms după care răspunsul este considerat lent:", + "LabelSlowResponseEnabled": "Înregistrați un mesaj de avertizare în cazul în care serverul a răspuns lent", + "LabelOriginalName": "Nume original:", + "LabelLocalCustomCss": "Codul CSS personalizat care este aplicat doar la acest client. Este posibil să doriți să dezactivați codul CSS a server-ului.", + "LabelMaxDaysForNextUpHelp": "Setați numărul maxim de zile pentru care un program trebuie să rămână in lista 'Urmează' fără a fi vizionat.", + "LabelMaxDaysForNextUp": "Număr maxim de zile în 'Urmează':", + "LabelHardwareEncoding": "Encodare tip hardware:", + "LabelDisableCustomCss": "Dezactivați codul CSS pentru tema/brandingul furnizat de server.", + "LabelAutomaticallyAddToCollectionHelp": "Cănd cel puțin 2 filme au același nume de colecție, acestea vor fi adăugate automat în colecție.", + "LabelAutomaticallyAddToCollection": "Adaugă automat la colecție", + "HeaderSyncPlayTimeSyncSettings": "Sincronizare timp", + "HeaderSyncPlayPlaybackSettings": "Redare", + "HeaderSyncPlaySettings": "Setări SyncPlay", + "HeaderContinueReading": "Continuați să Citiți", + "ErrorPlayerNotFound": "Nu s-a gasit un player pentru fila media cerută.", + "Engineer": "Inginer de sunet", + "DisableCustomCss": "Dezactivează cod CSS personalizat furnizat de server", + "Cursive": "Cursiv", + "Console": "Consolă", + "Casual": "Cazual", + "Conductor": "Conductor" } From fcdc21288ec343230e22ba49450744fa619dd5bc Mon Sep 17 00:00:00 2001 From: Yanom1212 Date: Sat, 5 Feb 2022 05:20:23 +0000 Subject: [PATCH 087/389] Translated using Weblate (French (Canada)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr_CA/ --- src/strings/fr-ca.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 3594729b99..04c3e9158d 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -713,7 +713,7 @@ "HeaderContinueReading": "Continuer à lire", "MusicVideos": "Vidéos musicales", "OptionBluray": "BD", - "LabelEnableDlnaPlayTo": "Activer la fonction DLNA \"Lire sur\"", + "LabelEnableDlnaPlayTo": "Activer la fonction DLNA \"Play To\"", "Engineer": "Ingénieur du son", "Conductor": "Conducteur", "Casual": "Casuel", @@ -721,7 +721,7 @@ "LabelEnableDlnaDebugLoggingHelp": "Créer des fichiers de journalisation volumineux et ne doit être utilisé qu'en cas de besoin à des fins de dépannage.", "LabelEnableDlnaDebugLogging": "Activer la journalisation de débogage DLNA", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Déterminez la durée en secondes entre deux recherches SSDP.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervalle de découverte client :", + "LabelEnableDlnaClientDiscoveryInterval": "Intervalle de découverte client:", "LabelEnableBlastAliveMessagesHelp": "Activez cette option si le serveur n'est pas détecté par d'autres périphériques UPnP sur votre réseau.", "LabelEnableAutomaticPortMapHelp": "Transférez automatiquement les ports publics de votre routeur vers les ports locaux de votre serveur via UPnP. Cela peut ne pas fonctionner avec certains modèles de routeur ou configurations réseau. Les modifications ne s'appliqueront qu'après un redémarrage du serveur.", "HeaderSyncPlaySettings": "Paramètres SyncPlay", From ffaf742617bb43b43aca2b52094457ec06bb14ff Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 5 Feb 2022 13:20:51 +0000 Subject: [PATCH 088/389] Translated using Weblate (Uyghur) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ug/ --- src/strings/ug.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/ug.json b/src/strings/ug.json index 0967ef424b..5b897f03f6 100644 --- a/src/strings/ug.json +++ b/src/strings/ug.json @@ -1 +1,5 @@ -{} +{ + "Album": "البم", + "Actor": "اداڪار", + "Absolute": "مطلق" +} From 2e818a5fb60178a3bd10336f2b6f7371410c251a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= Date: Sat, 5 Feb 2022 21:31:53 +0000 Subject: [PATCH 089/389] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index c730cb4a16..6f29c8543b 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -209,7 +209,7 @@ "DirectPlaying": "Doğrudan oynatma", "CommunityRating": "Kullanıcı puanı", "Composer": "Besteci", - "ConfigureDateAdded": "Eklenen tarihin, Kitaplık ayarları altındaki kontrol panelinde nasıl belirleneceğini ayarlayın", + "ConfigureDateAdded": "Gösterge Tablosu > Kitaplıklar > NFO Ayarları'nda 'Eklenme tarihi' için metadataların nasıl belirleneceğini ayarlayın", "ConfirmDeleteImage": "Resmi Sil?", "ButtonResetEasyPassword": "Kolay PIN kodunu sıfırla", "ColorPrimaries": "Renk ön seçimleri", @@ -253,7 +253,7 @@ "Disconnect": "Bağlantıyı İptal Et", "Display": "Kullanıcı Ekranı", "DisplayInMyMedia": "Ana ekranda göster", - "DisplayInOtherHomeScreenSections": "Son eklenen medyada ve izlemeye devam et ekranlarında göster", + "DisplayInOtherHomeScreenSections": "'En Son Medya' ve 'İzlemeye Devam Et' gibi bölümleri ana ekran görüntüle", "BurnSubtitlesHelp": "Sunucunun video işlendiği esnada, altyazının görüntüye gömülmesini sağlar. Performansı çok düşürür, zorunda kalmadıkça bu özelliği seçmeyin. Görüntü tabanlı biçimleri (BobSub, PGS, SUB, IDX, vb.) Ve bazı ASS / SSA altyazıların görüntüye gömülmesi için Otomatik'i seçin.", "ConfirmDeleteItem": "Bu öğeyi silmek, onu hem dosya sisteminden hem de medya kütüphanenizden siler. Devam etmek istediğinize emin misiniz?", "ValueSpecialEpisodeName": "Özel - {0}", @@ -401,7 +401,7 @@ "Features": "Özellikleri", "Favorite": "Favori", "FastForward": "İleri sar", - "FFmpegSavePathNotFound": "Girdiğiniz yolu kullanarak FFmpeg'i bulamıyoruz. FFprobe da gereklidir ve aynı klasörde bulunmalıdır. Bu bileşenler normalde aynı indirmede birlikte paketlenmiştir. Lütfen yolu kontrol edip tekrar deneyin.", + "FFmpegSavePathNotFound": "Girdiğiniz yolu kullanarak FFmpeg'i bulamıyoruz. FFprobe da gereklidir ve aynı klasörde bulunmalıdır. Bu bileşenler normalde aynı indirme işleminde birlikte paketlenir. Lütfen yolu kontrol edip tekrar deneyin.", "Extras": "Ekstralar", "ExtractChapterImagesHelp": "Bölüm görüntülerini çıkarmak, müşterilerin grafiksel sahne seçim menülerini görüntülemesini sağlar. İşlem yavaş olabilir, kaynak yoğun olabilir ve birkaç gigabaytlık alan gerektirebilir. Videolar keşfedildiğinde ve ayrıca zamanlanmış bir görev olarak çalışır. Zamanlanmış, zamanlanmış görevler alanında yapılandırılabilir. Bu görevi yoğun kullanım saatlerinde yapmanız önerilmez.", "ExtraLarge": "Ekstra büyük", @@ -718,7 +718,7 @@ "ApiKeysCaption": "Şu anda etkin olan API anahtarlarının listesi", "Other": "Diğer", "EnableDetailsBanner": "Ayrıntılar Başlığı", - "EnableQuickConnect": "Bu sunucuda hızlı bağlantıyı etkinleştirin", + "EnableQuickConnect": "Bu sunucuda hızlı bağlantıyı etkinleştir", "EnableDecodingColorDepth10Vp9": "VP9 için 10 bit donanım kod çözmeyi etkinleştirin", "EnableDecodingColorDepth10Hevc": "HEVC için 10-bit donanım kod çözmeyi etkinleştirin", "EnableAutoCast": "Varsayılan olarak ayarla", @@ -1146,7 +1146,7 @@ "LabelDisableCustomCss": "Sunucu tarafından sağlanan kişiye özel CSS tema/özelleştirme işlevini kapat.", "LabelBlastMessageIntervalHelp": "Acil tanı mesajları arasındaki saniye cinsinden süreyi belirtir.", "HeaderContinueReading": "Okumaya devam et", - "DisableCustomCss": "Sunucuyu Devre Dışı Bırak- Özel CSS Dosyası Sağlanmış", + "DisableCustomCss": "Sunucu tarafından sağlanan özel CSS kodunu devre dışı bırak", "DirectPlayHelp": "Kaynak dosyası bu istemci ile tamamen uyumlu ve oturum dosyayı değişiklik yapmadan alıyor.", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionBluray": "BD", @@ -1234,5 +1234,18 @@ "LabelProfileContainersHelp": "Virgüle ile ayrılır. Tüm konteynerlere uygulamak için boş bırakılabilir.", "LabelProfileContainer": "Konteyner:", "TabDirectPlay": "Doğrudan oynatma", - "TV": "Televizyon alıcısı" + "TV": "Televizyon alıcısı", + "OptionDvd": "DVD", + "OptionProtocolHls": "HTTP Canlı Yayın (HLS)", + "OptionMaxActiveSessionsHelp": "0 değeri özelliği devre dışı bırakacaktır.", + "OptionMaxActiveSessions": "Maksimum eşzamanlı kullanıcı oturumu sayısını ayarlayın.", + "OptionMax": "Maks", + "OptionLoginAttemptsBeforeLockoutHelp": "Sıfır değeri, normal kullanıcılar için varsayılan üç deneme ve yöneticiler için beş denemenin devralınması anlamına gelir. Bunu -1 olarak ayarlamak özelliği devre dışı bırakacaktır.", + "OptionLoginAttemptsBeforeLockout": "Kilitleme gerçekleşmeden önce kaç tane hatalı oturum açma denemesi yapılabileceğini belirle.", + "OptionIsSD": "SD", + "OptionIsHD": "HD", + "OptionNew": "Yeni…", + "OptionProtocolHttp": "HTTP", + "OptionSaveMetadataAsHidden": "Metadataları ve görüntüleri gizli dosyalar olarak kaydedin", + "OptionWeekends": "Haftasonları" } From e0864e668a67fc61aee912c290efcfff1ec25e3c Mon Sep 17 00:00:00 2001 From: Renaldo Eduardo Freire Date: Sun, 6 Feb 2022 02:09:29 +0000 Subject: [PATCH 090/389] 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 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 79c5132b9d..23507ee859 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -661,7 +661,7 @@ "LabelSkipIfGraphicalSubsPresent": "Ignorar se o vídeo já possuir legendas incorporadas", "LabelSkipIfGraphicalSubsPresentHelp": "Manter versões das legendas em texto resultará em uma entrega mais eficiente e diminuirá a necessidade de transcodificação do vídeo.", "LabelSonyAggregationFlags": "Flags de agregação da Sony:", - "LabelSonyAggregationFlagsHelp": "Determina o conteúdo do elemento aggregationFlags no namespace urn:schemas-sonycom:av.", + "LabelSonyAggregationFlagsHelp": "Determina o conteúdo do elemento 'aggregationFlags' no namespace 'urn:schemas-sonycom:av'.", "LabelSortBy": "Ordenar por:", "LabelSortOrder": "Ordem:", "LabelSortTitle": "Ordenar por título:", @@ -1543,7 +1543,7 @@ "LabelHardwareEncoding": "Codificação de Hardware:", "LabelSyncPlaySettingsExtraTimeOffset": "Diferença extra de tempo:", "LabelSyncPlaySettingsSyncCorrection": "Correção de sincronização", - "LabelSyncPlaySettingsExtraTimeOffsetHelp": "Ajustar manualmente a diferença de tempo com o dispositivo selecionado para sincronização de tempo. Ajuste com cuidado.", + "LabelSyncPlaySettingsExtraTimeOffsetHelp": "Ajustar manualmente a diferença de tempo (em ms) com o dispositivo selecionado para sincronização de tempo. Ajuste com cuidado.", "LabelOriginalName": "Nome original:", "Track": "Faixa", "PreviousChapter": "Capítulo anterior", @@ -1569,13 +1569,13 @@ "LabelSyncPlaySettingsSkipToSync": "Habilitar SkipToSync", "LabelSyncPlaySettingsSpeedToSyncHelp": "Método de correção de sincronização que consiste em acelerar a reprodução. A correção de sincronização deve estar habilitada.", "LabelSyncPlaySettingsSpeedToSync": "Habilitar SpeedToSync", - "LabelSyncPlaySettingsMinDelaySkipToSyncHelp": "Atraso mínimo de reprodução após o qual SkipToSync tenta corrigir a posição de reprodução.", + "LabelSyncPlaySettingsMinDelaySkipToSyncHelp": "Atraso mínimo de reprodução (em ms) após o qual SkipToSync tenta corrigir a posição de reprodução.", "LabelSyncPlaySettingsMinDelaySkipToSync": "Atraso mínimo SkipToSync:", - "LabelSyncPlaySettingsSpeedToSyncDurationHelp": "Quantidade de tempo usada pelo SpeedToSync para corrigir a posição de reprodução.", + "LabelSyncPlaySettingsSpeedToSyncDurationHelp": "Quantidade de milissegundos usada pelo SpeedToSync para corrigir a posição de reprodução.", "LabelSyncPlaySettingsSpeedToSyncDuration": "Duração do SpeedToSync:", - "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "Atraso máximo de reprodução após o qual SkipToSync é usado em vez de SpeedToSync.", + "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "Atraso máximo de reprodução (em ms) após o qual SkipToSync é usado em vez de SpeedToSync.", "LabelSyncPlaySettingsMaxDelaySpeedToSync": "Atraso máximo do SpeedToSync:", - "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "Atraso mínimo de reprodução após o qual o SpeedToSync tenta corrigir a posição de reprodução.", + "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "Atraso mínimo de reprodução (em ms) após o qual o SpeedToSync tenta corrigir a posição de reprodução.", "LabelSyncPlaySettingsMinDelaySpeedToSync": "Atraso mínimo do SpeedToSync:", "LabelSyncPlaySettingsSyncCorrectionHelp": "Habilite a sincronização ativa de reprodução acelerando a mídia ou buscando a posição estimada. Desative isso em caso de travamento forte.", "LabelMaxDaysForNextUpHelp": "Define a quantidade máxima de dias que um programa deve permanecer na lista 'Próximos' sem assisti-lo.", From d881f5498b6d406870325439865becb5e05baa3b Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 6 Feb 2022 23:58:17 +0300 Subject: [PATCH 091/389] Add background to device cards Otherwise it will be white on white with Light theme. --- src/controllers/dashboard/devices/devices.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/controllers/dashboard/devices/devices.js b/src/controllers/dashboard/devices/devices.js index 58c1406241..3d5dbcf3bb 100644 --- a/src/controllers/dashboard/devices/devices.js +++ b/src/controllers/dashboard/devices/devices.js @@ -1,3 +1,4 @@ +import cardBuilder from '../../../components/cardbuilder/cardBuilder'; import loading from '../../../components/loading/loading'; import dom from '../../../scripts/dom'; import globalize from '../../../scripts/globalize'; @@ -96,7 +97,7 @@ import confirm from '../../../components/confirm/confirm'; deviceHtml += '
'; deviceHtml += '
'; deviceHtml += '
'; - deviceHtml += ``; + deviceHtml += ``; const iconUrl = imageHelper.getDeviceIcon(device); if (iconUrl) { From 2a5f3b4214fa5dcd3a78930b0c1976395aaabc57 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 6 Feb 2022 23:58:38 +0300 Subject: [PATCH 092/389] Add background to tuner device cards For consistency. --- src/controllers/livetvstatus.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 397aa50871..7de9d3dca1 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -2,6 +2,7 @@ import 'jquery'; import globalize from '../scripts/globalize'; import taskButton from '../scripts/taskbutton'; import dom from '../scripts/dom'; +import cardBuilder from '../components/cardbuilder/cardBuilder'; import layoutManager from '../components/layoutManager'; import loading from '../components/loading/loading'; import browser from '../scripts/browser'; @@ -37,7 +38,7 @@ function getDeviceHtml(device) { html += '
'; html += '
'; html += '
'; - html += '
'; + html += `
`; html += '
'; html += '
'; html += '
'; From 1dfd2676ecbdbd74b74d995ad90e6a0e289c83bd Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Mon, 7 Feb 2022 00:12:33 +0300 Subject: [PATCH 093/389] Fix background of control group button --- src/themes/appletv/theme.css | 5 +++++ src/themes/blueradiance/theme.css | 4 ++++ src/themes/light/theme.css | 4 ++++ src/themes/wmc/theme.css | 4 ++++ 4 files changed, 17 insertions(+) diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 849ef0b93c..1a35f8cc00 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -94,6 +94,11 @@ html { background: rgba(0, 0, 0, 0.24); } +a[data-role=button] { + background: #fff !important; + background: rgba(0, 0, 0, 0.14) !important; +} + .button-submit { background: #00a4dc; color: #fff; diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index f27abfc112..4d2e34eda5 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -93,6 +93,10 @@ html { background: rgba(0, 0, 0, 0.7); } +a[data-role=button] { + background: rgba(0, 0, 0, 0.5) !important; +} + .button-submit { background: #00a4dc; color: #fff; diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index e2f9bc5548..e97c6a39a4 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -99,6 +99,10 @@ html { background: #ccc; } +a[data-role=button] { + background: #d8d8d8 !important; +} + .button-submit { background: #00a4dc; color: #fff; diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 92175f309f..f78c4c6a74 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -91,6 +91,10 @@ html { background: #143451; } +a[data-role=button] { + background: #082845 !important; +} + .button-submit { background: #00a4dc; color: #fff; From 45417c41dd150cd1007e3b6f66e285dacd83ede0 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Mon, 7 Feb 2022 01:14:31 +0000 Subject: [PATCH 094/389] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index abe003bc0c..21ef1fc020 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -350,30 +350,30 @@ "HeaderPreferredMetadataLanguage": "Ngôn Ngữ Dữ Liệu Mô Tả Ưu Tiên", "HeaderPluginInstallation": "Cài Đặt Plugin", "HeaderPleaseSignIn": "Hãy đăng nhập", - "HeaderPlaybackError": "Lỗi Phát Sóng", + "HeaderPlaybackError": "Lỗi Phát Lại", "HeaderPlayback": "Phát lại phương tiện:", "HeaderPlayOn": "Phát Trên", "HeaderPlayAll": "Phát Tất Cả", "HeaderPinCodeReset": "Đặt Lại Mã PIN Tiện Lợi", - "HeaderPhotoAlbums": "Tuyển Tập Ảnh", + "HeaderPhotoAlbums": "Albums Ảnh", "HeaderPaths": "Đường Dẫn", "HeaderPasswordReset": "Đặt Lại Mật Khẩu", "HeaderPassword": "Mật Khẩu", "HeaderParentalRatings": "Đánh Giá Của Phụ Huynh", "HeaderOtherItems": "Những Mục Khác", - "HeaderOnNow": "Phát Sóng Hiện Tại", + "HeaderOnNow": "Ngay Bây Giờ", "HeaderNextVideoPlayingInValue": "Video Tiếp Theo Sẽ Phát trong {0}", - "HeaderNextEpisodePlayingInValue": "Tập Tiếp Theo sẽ phát trong {0}", + "HeaderNextEpisodePlayingInValue": "Tập Tiếp Theo Sẽ Phát trong {0}", "HeaderNewDevices": "Thiết Bị Mới", "HeaderNewApiKey": "Khóa API Mới", "HeaderNavigation": "Điều Hướng", - "HeaderMyMediaSmall": "Nội Dung Của Tôi (cỡ nhỏ)", - "HeaderMyMedia": "Nội Dung Của Tôi", + "HeaderMyMediaSmall": "Phương Tiện Của Tôi (nhỏ)", + "HeaderMyMedia": "Phương Tiện Của Tôi", "HeaderMyDevice": "Thiết Bị Của Tôi", "HeaderMusicQuality": "Chất Lượng Âm Nhạc", "HeaderMoreLikeThis": "Nội Dung Tương Tự", "HeaderMetadataSettings": "Cài Đặt Dữ Liệu Mô Tả", - "HeaderMediaFolders": "Thư Mục Chứa Nội Dung", + "HeaderMediaFolders": "Thư Mục Phương Tiện", "HeaderMedia": "Nội Dung", "HeaderLoginFailure": "Đăng nhập thất bại", "HeaderLiveTvTunerSetup": "Thiết lập Bộ dò TV Trực tiếp", @@ -390,11 +390,11 @@ "HeaderKeepRecording": "Tiếp Tục Ghi Âm/Ghi Hình", "HeaderInstantMix": "Trộn Lẫn Nhanh", "HeaderInstall": "Cài Đặt", - "HeaderImageSettings": "Thiết Lập Hình Ảnh", + "HeaderImageSettings": "Cài Đặt Hình Ảnh", "HeaderImageOptions": "Tuỳ Chọn Hình Ảnh", - "HeaderIdentifyItemHelp": "Hãy nhập một hoặc nhiều tiêu chí tìm kiếm. Xoá tiêu chí để tăng số lượng kết quả tìm kiếm.", - "HeaderIdentificationHeader": "Thông Tin Nhận Biết Trong Phần Đầu", - "HeaderIdentificationCriteriaHelp": "Nhập vào ít nhật một thông tin nhận biết.", + "HeaderIdentifyItemHelp": "Hãy nhập một hoặc nhiều tiêu chí tìm kiếm. Xoá tiêu chí để tăng kết quả tìm kiếm.", + "HeaderIdentificationHeader": "Tiêu Đề Nhận Dạng", + "HeaderIdentificationCriteriaHelp": "Nhập ít nhất một tiêu chí nhận dạng.", "HeaderIdentification": "Thông Tin Nhận Biết", "HeaderHttpHeaders": "HTTP Headers", "HeaderGuideProviders": "Nhà Cung Cấp Lịch Phát Sóng TV", From d8ca748bd77959c9eaff40f482aadfb0dc660dc5 Mon Sep 17 00:00:00 2001 From: Simo Hyttinen Date: Mon, 7 Feb 2022 19:50:52 +0000 Subject: [PATCH 095/389] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 1611384a3f..17d145c1d3 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1423,5 +1423,8 @@ "ErrorPlayerNotFound": "Pyydetylle medialle sopivaa soitinta ei löytynyt.", "Cursive": "Kursivointi", "WizardCompleted": "Siinä kaikki tällä erää tarvittava. Jellyfin on aloittanut kirjastosi tietojen keräyksen. Tutustu sovelluksiimme ja paina lopuksi Valmis avataksesi hallintapaneelin.", - "HeaderSyncPlayTimeSyncSettings": "Ajan synkronointi" + "HeaderSyncPlayTimeSyncSettings": "Ajan synkronointi", + "LabelMaxDaysForNextUpHelp": "Määritä maksimimäärä päiviä jonka ohjelman tulisi pysyä \"Seuraavaksi\"-listassa katsomatta sitä.", + "LabelMaxDaysForNextUp": "Päivien maksimimäärä \"Seuraavaksi\"-listassa:", + "LabelHardwareEncoding": "Laitteistoenkoodaus:" } From 408772d68680d6d1e800a0c42799fb74132a3826 Mon Sep 17 00:00:00 2001 From: NeroPcStation Date: Tue, 8 Feb 2022 05:57:35 +0000 Subject: [PATCH 096/389] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index d6937eeddc..7a3705c16c 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -323,7 +323,7 @@ "HeaderMyMediaSmall": "Moje multimedia (małe)", "HeaderNewApiKey": "Nowy Klucz API", "HeaderNewDevices": "Nowe urządzenia", - "HeaderNextEpisodePlayingInValue": "Następne odcinek za {0}", + "HeaderNextEpisodePlayingInValue": "Następny odcinek za {0}", "HeaderNextVideoPlayingInValue": "Następne wideo za {0}", "HeaderOnNow": "Teraz", "HeaderOtherItems": "Inne pozycje", From aeca06c8df40c37f13bd0f249f625e31a94d7fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Fern=C3=A1ndez?= Date: Mon, 7 Feb 2022 20:20:27 +0100 Subject: [PATCH 097/389] Switch to renovate --- .github/dependabot.yaml | 16 ---------------- .github/renovate.json | 33 +++++++++++++++++++++++++++++++++ .npmrc | 1 + 3 files changed, 34 insertions(+), 16 deletions(-) delete mode 100644 .github/dependabot.yaml create mode 100644 .github/renovate.json diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml deleted file mode 100644 index 8f914e60d7..0000000000 --- a/.github/dependabot.yaml +++ /dev/null @@ -1,16 +0,0 @@ -version: 2 -updates: - - package-ecosystem: npm - directory: / - schedule: - interval: weekly - open-pull-requests-limit: 10 - ignore: - - dependency-name: hls.js - update-types: [ version-update:semver-major ] - - - package-ecosystem: github-actions - directory: / - schedule: - interval: weekly - open-pull-requests-limit: 10 diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 0000000000..e3eb531c6e --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,33 @@ +{ + "packageRules": [ + { + "matchDepTypes": ["devDependencies"], + "groupName": "development dependencies", + "groupSlug": "dev-deps" + }, + { + "matchDepTypes": ["dependencies"], + "groupName": "dependencies", + "groupSlug": "deps" + }, + { + "matchDepTypes": ["action"], + "groupName": "CI dependencies", + "groupSlug": "ci-deps" + }, + { + "matchPackageNames": ["hls.js"], + "matchUpdateTypes": "major", + "enabled": false + } + ], + "dependencyDashboard": false, + "ignoreDeps": ["npm", "node"], + "lockFileMaintenance": { + "enabled": false + }, + "enabledManagers": ["npm", "github-actions"], + "labels": ["dependencies"], + "rebaseWhen": "behind-base-branch", + "rangeStrategy": "pin" +} diff --git a/.npmrc b/.npmrc index b215581d1f..95d3df9dfc 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,2 @@ fund=false +save-exact=true From ae1d197d4235bd14663daf439d0c833d75f5ded1 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 8 Feb 2022 16:41:42 +0000 Subject: [PATCH 098/389] Pin dependencies --- package-lock.json | 76 +++++++++++++++++------------------------------ package.json | 70 +++++++++++++++++++++---------------------- 2 files changed, 63 insertions(+), 83 deletions(-) diff --git a/package-lock.json b/package-lock.json index 68ec39c748..09826e7297 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3082,8 +3082,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", - "dev": true, - "requires": {} + "dev": true }, "@webpack-cli/info": { "version": "1.4.0", @@ -3098,8 +3097,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", - "dev": true, - "requires": {} + "dev": true }, "@xmldom/xmldom": { "version": "0.7.5", @@ -3144,15 +3142,13 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} + "dev": true }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "aggregate-error": { "version": "3.1.0", @@ -3209,8 +3205,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -4653,8 +4648,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true, - "requires": {} + "dev": true }, "csso": { "version": "4.2.0", @@ -5807,8 +5801,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", - "dev": true, - "requires": {} + "dev": true }, "eslint-rule-composer": { "version": "0.3.0", @@ -6032,8 +6025,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-3.1.0.tgz", "integrity": "sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA==", - "dev": true, - "requires": {} + "dev": true }, "express": { "version": "4.17.2", @@ -7038,8 +7030,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "idb": { "version": "6.1.2", @@ -9067,29 +9058,25 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-duplicates": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-empty": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-overridden": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true, - "requires": {} + "dev": true }, "postcss-double-position-gradients": { "version": "3.0.4", @@ -9705,8 +9692,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -9762,8 +9748,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-normalize-display-values": { "version": "5.0.1", @@ -10165,8 +10150,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.2.tgz", "integrity": "sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-selector-not": { "version": "5.0.0", @@ -10241,8 +10225,7 @@ "version": "0.36.2", "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true, - "requires": {} + "dev": true }, "postcss-unique-selectors": { "version": "5.0.2", @@ -11512,14 +11495,6 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -11567,6 +11542,14 @@ "define-properties": "^1.1.3" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "stringify-entities": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", @@ -11650,8 +11633,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true, - "requires": {} + "dev": true }, "style-search": { "version": "0.1.0", @@ -11863,8 +11845,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-selector-parser": { "version": "6.0.8", @@ -13682,8 +13663,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-7.0.1.tgz", "integrity": "sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==", - "dev": true, - "requires": {} + "dev": true } } }, diff --git a/package.json b/package.json index 3af8dd3b85..413b2bfad0 100644 --- a/package.json +++ b/package.json @@ -59,44 +59,44 @@ "worker-loader": "^3.0.8" }, "dependencies": { - "@fontsource/noto-sans": "^4.5.1", - "@fontsource/noto-sans-hk": "^4.5.2", - "@fontsource/noto-sans-jp": "^4.5.2", - "@fontsource/noto-sans-kr": "^4.5.2", - "@fontsource/noto-sans-sc": "^4.5.2", - "blurhash": "^1.1.4", + "@fontsource/noto-sans": "4.5.1", + "@fontsource/noto-sans-hk": "4.5.2", + "@fontsource/noto-sans-jp": "4.5.2", + "@fontsource/noto-sans-kr": "4.5.2", + "@fontsource/noto-sans-sc": "4.5.2", + "blurhash": "1.1.4", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", - "classnames": "^2.3.1", - "core-js": "^3.20.2", - "date-fns": "^2.28.0", - "dompurify": "^2.3.4", - "epubjs": "^0.3.90", - "fast-text-encoding": "^1.0.3", - "flv.js": "^1.6.2", - "headroom.js": "^0.12.0", - "hls.js": "^0.14.17", - "intersection-observer": "^0.12.0", - "jellyfin-apiclient": "^1.10.0", - "jquery": "^3.5.1", - "jstree": "^3.3.12", - "libarchive.js": "^1.3.0", + "classnames": "2.3.1", + "core-js": "3.20.2", + "date-fns": "2.28.0", + "dompurify": "2.3.4", + "epubjs": "0.3.90", + "fast-text-encoding": "1.0.3", + "flv.js": "1.6.2", + "headroom.js": "0.12.0", + "hls.js": "0.14.17", + "intersection-observer": "0.12.0", + "jellyfin-apiclient": "1.10.0", + "jquery": "3.6.0", + "jstree": "3.3.12", + "libarchive.js": "1.3.0", "libass-wasm": "git+https://github.com/jellyfin/JavascriptSubtitlesOctopus.git#4.0.0-jf-4", - "lodash-es": "^4.17.21", - "marked": "^4.0.8", - "material-design-icons-iconfont": "^6.1.1", - "native-promise-only": "^0.8.0-a", - "page": "^1.11.6", + "lodash-es": "4.17.21", + "marked": "4.0.8", + "material-design-icons-iconfont": "6.1.1", + "native-promise-only": "0.8.1", + "page": "1.11.6", "pdfjs-dist": "2.12.313", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "resize-observer-polyfill": "^1.5.1", - "screenfull": "^6.0.0", - "sortablejs": "^1.14.0", - "swiper": "^6.8.4", - "webcomponents.js": "^0.7.24", - "whatwg-fetch": "^3.6.2", - "workbox-core": "^6.2.4", - "workbox-precaching": "^6.2.4" + "react": "17.0.2", + "react-dom": "17.0.2", + "resize-observer-polyfill": "1.5.1", + "screenfull": "6.0.0", + "sortablejs": "1.14.0", + "swiper": "6.8.4", + "webcomponents.js": "0.7.24", + "whatwg-fetch": "3.6.2", + "workbox-core": "6.2.4", + "workbox-precaching": "6.2.4" }, "browserslist": [ "last 2 Firefox versions", From 9a85431a4d87648f95a7529a6d5d17283bce85cc Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 8 Feb 2022 16:42:37 +0000 Subject: [PATCH 099/389] Pin dependencies --- package-lock.json | 76 +++++++++++++-------------------- package.json | 104 +++++++++++++++++++++++----------------------- 2 files changed, 80 insertions(+), 100 deletions(-) diff --git a/package-lock.json b/package-lock.json index 68ec39c748..09826e7297 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3082,8 +3082,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", - "dev": true, - "requires": {} + "dev": true }, "@webpack-cli/info": { "version": "1.4.0", @@ -3098,8 +3097,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", - "dev": true, - "requires": {} + "dev": true }, "@xmldom/xmldom": { "version": "0.7.5", @@ -3144,15 +3142,13 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} + "dev": true }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "aggregate-error": { "version": "3.1.0", @@ -3209,8 +3205,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -4653,8 +4648,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true, - "requires": {} + "dev": true }, "csso": { "version": "4.2.0", @@ -5807,8 +5801,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", - "dev": true, - "requires": {} + "dev": true }, "eslint-rule-composer": { "version": "0.3.0", @@ -6032,8 +6025,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-3.1.0.tgz", "integrity": "sha512-2RExSo0yJiqP+xiUue13jQa2IHE8kLDzTI7b6kn+vUlBVvlzNSiLDzo4e5Pp5J039usvTUnxZ8sUOhv0Kg15NA==", - "dev": true, - "requires": {} + "dev": true }, "express": { "version": "4.17.2", @@ -7038,8 +7030,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "idb": { "version": "6.1.2", @@ -9067,29 +9058,25 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-duplicates": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-empty": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-overridden": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true, - "requires": {} + "dev": true }, "postcss-double-position-gradients": { "version": "3.0.4", @@ -9705,8 +9692,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -9762,8 +9748,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-normalize-display-values": { "version": "5.0.1", @@ -10165,8 +10150,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.2.tgz", "integrity": "sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-selector-not": { "version": "5.0.0", @@ -10241,8 +10225,7 @@ "version": "0.36.2", "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true, - "requires": {} + "dev": true }, "postcss-unique-selectors": { "version": "5.0.2", @@ -11512,14 +11495,6 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -11567,6 +11542,14 @@ "define-properties": "^1.1.3" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, "stringify-entities": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", @@ -11650,8 +11633,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", - "dev": true, - "requires": {} + "dev": true }, "style-search": { "version": "0.1.0", @@ -11863,8 +11845,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "requires": {} + "dev": true }, "postcss-selector-parser": { "version": "6.0.8", @@ -13682,8 +13663,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-7.0.1.tgz", "integrity": "sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==", - "dev": true, - "requires": {} + "dev": true } } }, diff --git a/package.json b/package.json index 3af8dd3b85..5baad46801 100644 --- a/package.json +++ b/package.json @@ -5,58 +5,58 @@ "repository": "https://github.com/jellyfin/jellyfin-web", "license": "GPL-2.0-or-later", "devDependencies": { - "@babel/core": "^7.16.7", - "@babel/eslint-parser": "^7.16.5", - "@babel/eslint-plugin": "^7.16.5", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/preset-env": "^7.16.7", - "@babel/preset-react": "^7.16.7", - "@babel/preset-typescript": "^7.16.7", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", - "@uupaa/dynamic-import-polyfill": "^1.0.2", - "autoprefixer": "^10.4.1", - "babel-loader": "^8.2.3", - "babel-plugin-dynamic-import-polyfill": "^1.0.0", - "clean-webpack-plugin": "^4.0.0", - "confusing-browser-globals": "^1.0.11", - "copy-webpack-plugin": "^10.2.0", - "css-loader": "^6.5.1", - "cssnano": "^5.0.14", - "eslint": "^7.32.0", - "eslint-plugin-compat": "^4.0.0", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.3.0", - "expose-loader": "^3.1.0", - "html-loader": "^3.0.1", - "html-webpack-plugin": "^5.5.0", - "postcss": "^8.4.5", - "postcss-loader": "^6.2.1", - "postcss-preset-env": "^7.2.0", - "postcss-scss": "^4.0.2", - "sass": "^1.45.2", - "sass-loader": "^12.4.0", - "source-map-loader": "^3.0.1", - "style-loader": "^3.3.1", - "stylelint": "^14.2.0", - "stylelint-config-rational-order": "^0.1.2", - "stylelint-no-browser-hacks": "^1.2.1", - "stylelint-order": "^5.0.0", - "stylelint-scss": "^4.1.0", - "ts-loader": "^9.2.6", - "typescript": "^4.5.4", - "webpack": "^5.65.0", - "webpack-cli": "^4.9.1", - "webpack-dev-server": "^4.7.2", - "webpack-merge": "^5.8.0", - "workbox-webpack-plugin": "^6.2.4", - "worker-loader": "^3.0.8" + "@babel/core": "7.16.7", + "@babel/eslint-parser": "7.16.5", + "@babel/eslint-plugin": "7.16.5", + "@babel/plugin-proposal-class-properties": "7.16.7", + "@babel/plugin-proposal-private-methods": "7.16.7", + "@babel/plugin-transform-modules-umd": "7.16.7", + "@babel/preset-env": "7.16.7", + "@babel/preset-react": "7.16.7", + "@babel/preset-typescript": "7.16.7", + "@typescript-eslint/eslint-plugin": "4.33.0", + "@typescript-eslint/parser": "4.33.0", + "@uupaa/dynamic-import-polyfill": "1.0.2", + "autoprefixer": "10.4.1", + "babel-loader": "8.2.3", + "babel-plugin-dynamic-import-polyfill": "1.0.0", + "clean-webpack-plugin": "4.0.0", + "confusing-browser-globals": "1.0.11", + "copy-webpack-plugin": "10.2.0", + "css-loader": "6.5.1", + "cssnano": "5.0.14", + "eslint": "7.32.0", + "eslint-plugin-compat": "4.0.0", + "eslint-plugin-eslint-comments": "3.2.0", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-jsx-a11y": "6.5.1", + "eslint-plugin-promise": "6.0.0", + "eslint-plugin-react": "7.28.0", + "eslint-plugin-react-hooks": "4.3.0", + "expose-loader": "3.1.0", + "html-loader": "3.0.1", + "html-webpack-plugin": "5.5.0", + "postcss": "8.4.5", + "postcss-loader": "6.2.1", + "postcss-preset-env": "7.2.0", + "postcss-scss": "4.0.2", + "sass": "1.45.2", + "sass-loader": "12.4.0", + "source-map-loader": "3.0.1", + "style-loader": "3.3.1", + "stylelint": "14.2.0", + "stylelint-config-rational-order": "0.1.2", + "stylelint-no-browser-hacks": "1.2.1", + "stylelint-order": "5.0.0", + "stylelint-scss": "4.1.0", + "ts-loader": "9.2.6", + "typescript": "4.5.4", + "webpack": "5.65.0", + "webpack-cli": "4.9.1", + "webpack-dev-server": "4.7.2", + "webpack-merge": "5.8.0", + "workbox-webpack-plugin": "6.2.4", + "worker-loader": "3.0.8" }, "dependencies": { "@fontsource/noto-sans": "^4.5.1", From 4b5bb525280f61f6567c64be911eacab9d1a22b0 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 8 Feb 2022 16:42:46 +0000 Subject: [PATCH 100/389] Update actions/checkout action to v2.4.0 --- .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 bf9081443a..04c5d2bdd5 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@v2.3.4 + uses: actions/checkout@v2.4.0 with: token: ${{ secrets.JF_BOT_TOKEN }} fetch-depth: 0 From 76e02a2688d9d057d739262e8793c6844521a11c Mon Sep 17 00:00:00 2001 From: Oskari Lavinto Date: Tue, 8 Feb 2022 15:06:16 +0000 Subject: [PATCH 101/389] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 519 ++++++++++++++++++++++++-------------------- 1 file changed, 280 insertions(+), 239 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 17d145c1d3..f629c6af59 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -11,18 +11,18 @@ "FileNotFound": "Tiedostoa ei löydy.", "FileReadCancelled": "Tiedoston luku on peruutettu.", "FileReadError": "Virhe tiedostoa luettaessa.", - "LabelAudioLanguagePreference": "Äänen ensisijainen kieli:", + "LabelAudioLanguagePreference": "Ensisijainen äänen kieli:", "LabelCountry": "Maa:", "LabelCurrentPassword": "Nykyinen salasana:", "LabelFinish": "Valmis", "LabelLanguage": "Kieli:", - "LabelMaxParentalRating": "Suurin sallittu ikäraja:", + "LabelMaxParentalRating": "Suurin sallittu ikäluokitus:", "LabelNewPassword": "Uusi salasana:", "LabelNewPasswordConfirm": "Vahvista salasana:", - "LabelSaveLocalMetadata": "Tallenna kuvamateriaali mediakansioihin", - "LabelSaveLocalMetadataHelp": "Kuvamateriaalin ja metadatan tallentaminen suoraan kansioihin missä niitä on helppo muuttaa.", + "LabelSaveLocalMetadata": "Tallenna kuvat mediakansioihin", + "LabelSaveLocalMetadataHelp": "Kuvat tallennetaan mediatiedostojen kansioihin, jolloin niitä on helppo käsitellä.", "LabelYoureDone": "Valmista!", - "LibraryAccessHelp": "Valitse kirjastot, jotka haluat jakaa tämän käyttäjän kanssa. Järjestelmänvalvoja pystyy muokkaamaan kaikkia kansioita käyttäen metadatan hallintatyökalua.", + "LibraryAccessHelp": "Valitse tälle käyttäjälle jaettavat kirjastot. Järjestelmänvalvojat voivat metatietojen hallintatyökalulla muokata kaikkia kansioita.", "MaxParentalRatingHelp": "Suuremman luokituksen sisältö piilotetaan käyttäjältä.", "MoreUsersCanBeAddedLater": "Käyttäjiä voidaan lisätä myöhemmin lisää hallintapaneelista.", "ParentalRating": "Ikäraja", @@ -54,13 +54,13 @@ "AllEpisodes": "Kaikki jaksot", "AllLanguages": "Kaikki kielet", "AllLibraries": "Kaikki kirjastot", - "AllowOnTheFlySubtitleExtraction": "Salli tekstitysten purkaminen lennossa", + "AllowOnTheFlySubtitleExtraction": "Salli tekstitysten purku lennossa", "AccessRestrictedTryAgainLater": "Pääsy on toistaiseksi estetty. Yritä myöhemmin uudelleen.", "Aired": "Esityspäivä", - "AllowHWTranscodingHelp": "Salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää videomuunnoksen tarvetta palvelimella.", + "AllowHWTranscodingHelp": "Salli virittimen transkoodata bittivirrat lennossa. Tämä voi vähentää transkoodaustarvetta palvelimella.", "AllowMediaConversion": "Salli median muunto", - "AllowMediaConversionHelp": "Salli tai kiellä pääsy median muunnostoimintoon.", - "AllowOnTheFlySubtitleExtractionHelp": "Sisäiset tekstitykset voidaan lähettää päätelaitteille ilmitekstinä, jotta videota ei tarvitsisi uudelleenkoodata. Joissain järjestelmissä tämä voi viedä paljon aikaa ja aiheuttaa toiston pysähtymisen purun ajaksi. Poista tämä käytöstä polttaaksesi tekstiykset suoraan videoon, mikäli päätelaite ei tue tekstityksiä.", + "AllowMediaConversionHelp": "Myönnä tai estä median muunnostoiminnon käyttöoikeus.", + "AllowOnTheFlySubtitleExtractionHelp": "Sisäiset tekstitykset voidaan lähettää päätelaitteille pelkkänä tekstinä transkoodauksen välttämiseksi. Joissakin järjestelmissä tämä voi kestää kauan ja aiheuttaa toiston pysähtymisen purun aikana. Poista asetus käytöstä polttaaksesi tekstitykset suoraan videoon, mikäli päätelaite ei tue tekstityksiä natiivisti.", "AllowRemoteAccess": "Salli etäyhteydet tähän palvelimeen", "AllowRemoteAccessHelp": "Jos merkki puuttuu, kaikki ulkopuoliset yhteydet estetään.", "AllowedRemoteAddressesHelp": "Pilkuilla eroteltu lista IP-osoitteista tai IP/verkonpeite merkinnöistä verkoille, joille sallitaan etäyhteys palvelimeen. Tyhjäksi jätetty lista tarkoittaa, että kaikki osoitteet sallitaan.", @@ -69,7 +69,7 @@ "AnyLanguage": "Mikä tahansa", "Anytime": "Milloin tahansa", "AroundTime": "Noin {0}", - "Art": "Läpinäkyvä taide", + "Art": "Taide", "Artists": "Esittäjät", "AsManyAsPossible": "Niin monta kuin mahdollista", "Ascending": "Nousevassa järjestyksessä", @@ -79,15 +79,15 @@ "Auto": "Auto", "Backdrop": "Tausta", "Backdrops": "Taustat", - "Banner": "Lippu", + "Banner": "Banneri", "BirthDateValue": "Syntynyt: {0}", "BirthLocation": "Syntymäpaikka", "BirthPlaceValue": "Syntymäpaikka: {0}", "Blacklist": "Kieltolista", "BookLibraryHelp": "Ääni- ja tekstimuotoiset kirjat on tuettuja. Katso {0}kirjojen nimeämisopas{1}.", "Books": "Kirjat", - "Box": "Laatikko", - "BoxRear": "Laatikko (takaa)", + "Box": "Kotelo", + "BoxRear": "Kotelo (takaa)", "Browse": "Selaa", "ButtonAddMediaLibrary": "Lisää mediakirjasto", "ButtonAddScheduledTaskTrigger": "Lisää liipaisin", @@ -109,7 +109,7 @@ "ButtonNextTrack": "Seuraava raita", "ButtonOk": "Ok", "ButtonOpen": "Avaa", - "BurnSubtitlesHelp": "Määrittää mikäli palvelimen pitäisi polttaa tekstitykset suoraan videoon muunnoksen aikana riippuen tekstitysten formaatista. Tekstitysten polttamisen välttäminen parantaa palvelimen suorituskykyä. Valitse Automaattinen polttaaksesi sekä kuva- (esim. VobSub, PGS, SUB/IDX, jne.) että tekstipohjaiset (ASS/SSA) formaatit.", + "BurnSubtitlesHelp": "Määritä polttaako palvelin tekstitykset transkoodauksen aikana suoraan videoon. Tämä kasvattaa palvelimen kuormitusta merkittävästi. 'Automaattinen' polttaa kuva- (mm. VobSub, PGS ja SUB/IDX) ja tietyt tekstipohjaiset (ASS/SSA) tekstitykset.", "ButtonParentalControl": "Lapsilukko", "ButtonPause": "Tauko", "ButtonPreviousTrack": "Edellinen raita", @@ -134,7 +134,7 @@ "ButtonWebsite": "Nettisivusto", "CancelRecording": "Peruuta tallennus", "Categories": "Kategoriat", - "ChangingMetadataImageSettingsNewContent": "Muutokset metadatan tai kuvituksien lataamisasetuksiin vaikuttaa ainoastaan tulevaan kirjaston sisältöön. Päivittääksesi myös vanhan sisällön sinun täytyy päivittää metadata manuaalisesti.", + "ChangingMetadataImageSettingsNewContent": "Metatietojen ja kuvien latausasetusten muutokset vaikuttavat ainoastaan kirjastoon lisättävään sisältöön. Päivittääksesi olemassa olevat tiedot, on niiden metatiedot päivitettävä manuaalisesti.", "ChannelAccessHelp": "Valitse kanavat jotka jaetaan tämän käyttäjän kanssa. Järjestelmänvalvojat pystyvät muuttamaan kaikkia kanavia käyttämällä metadatan hallintatyökalua.", "ChannelNameOnly": "Vain kanava {0}", "Channels": "Kanavat", @@ -150,7 +150,7 @@ "ConfirmDeleteItem": "Tämän kohteen poistaminen poistaa sen sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", "ConfirmDeleteItems": "Näiden kohteiden poistaminen poistaa ne sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", "ConfirmDeletion": "Vahvista poistaminen", - "ConfirmEndPlayerSession": "Haluaisitko katkaista etätoiston kohteessa {0}?", + "ConfirmEndPlayerSession": "Haluatko katkaista etätoiston kohteessa {0}?", "Connect": "Yhdistä", "ContinueWatching": "Jatka katselua", "Continuing": "Jatketaan", @@ -158,8 +158,8 @@ "DateAdded": "Lisäyspäivämäärä", "DatePlayed": "Toistopäivämäärä", "Default": "Oletus", - "ErrorDefault": "Pyynnön käsittelyssä tapahtui virhe. Yritä myöhemmin uudelleen.", - "DefaultMetadataLangaugeDescription": "Nämä ovat sinun oletusasetuksesi ja niitä voidaan muokata kirjastokohtaisesti.", + "ErrorDefault": "Käsiteltäessä pyyntöä tapahtui virhe. Yritä myöhemmin uudelleen.", + "DefaultMetadataLangaugeDescription": "Nämä ovat oletusasetukset, joista voidaan poiketa muokkaamalla kirjastokohtaisia asetuksia.", "DefaultSubtitlesHelp": "Tekstitykset ladataan pakotettu- ja oletusmäärityksien upotetun metadatan mukaan. Kieliasetukset otetaan huomioon, kun on enemmän kuin yksi tekstitys josta valita.", "DeleteDeviceConfirmation": "Oletko varma, että haluat poistaa tämän laitteen? Se ilmaantuu uudelleen seuraavan kerran, kun jokin käyttäjä kirjautuu sillä.", "DeleteMedia": "Poista media", @@ -167,7 +167,7 @@ "Desktop": "Työpöytä", "DetectingDevices": "Tunnistetaan laitteita", "DeviceAccessHelp": "Tämä pätee ainoastaan laitteisiin, jotka voidaan tunnistaa uniikkina ja ei estä selainpääsyä. Uusien laitteiden suodattaminen estää niiden käyttämisen ennen hyväksyntää täältä.", - "DirectPlaying": "Suoraan toistaminen", + "DirectPlaying": "Toistetaan ilman muuntoa", "DirectStreamHelp1": "Suoratoistovideo on yhteensopiva laitteen kanssa, mutta sillä on yhteensopimaton äänimuoto (DTS, Dolby TrueHD jne.) tai äänikanavien määrä. Tämä video uudelleenpakataan häviöttömästi lennossa ennen laitteeseen lähetystä. Vain äänivirta koodataan uudelleen.", "DirectStreamHelp2": "Suoratoiston virrankulutus riippuu yleensä ääniprofiilista. Vain videon suoratoisto on häviötöntä.", "DirectStreaming": "Suoratoisto", @@ -176,7 +176,7 @@ "Disc": "Levy", "Disconnect": "Katkaise yhteys", "DisplayInMyMedia": "Näytä aloitusnäytöllä", - "DisplayInOtherHomeScreenSections": "Näytä aloitusnäytöllä osastoja kuten \"viimeisin media\" ja \"jatka katselua\"", + "DisplayInOtherHomeScreenSections": "Näytä aloitusnäytön osiot, kuten 'Uusi media' ja 'Jatka katselua'", "DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa", "DisplayMissingEpisodesWithinSeasonsHelp": "Tämä pitää aktivoida TV-kirjastoille myös palvelimen asetuksissa.", "DisplayModeHelp": "Valitse ulkonäkö, jonka haluat käyttöliittymälle.", @@ -211,7 +211,7 @@ "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", "DeathDateValue": "Kuoli: {}", "CustomDlnaProfilesHelp": "Luo uusi profiili kohdistaaksesi uuteen laitteeseen tai ohittaaksesi järjestelmäprofiilin.", - "ErrorAddingMediaPathToVirtualFolder": "Media-polkua lisätessä ilmeni ongelma. Varmista, että polku on kirjoitettu oikein ja Jellyfinillä on pääsy tähän sijaintiin.", + "ErrorAddingMediaPathToVirtualFolder": "Lisättäessä mediasijaintia tapahtui virhe. Varmista, että se on oikein ja Jellyfinillä on sen käyttöoikeus.", "Episodes": "Jaksot", "EndsAtValue": "Päättyy {0}", "Ended": "Päättynyt", @@ -220,12 +220,12 @@ "EnablePhotosHelp": "Kuvat tunnistetaan ja näytetään muiden mediatiedostojen ohessa.", "EnablePhotos": "Näytä valokuvat", "EnableNextVideoInfoOverlay": "Näytä seuraavan videon tiedot toiston aikana", - "EnableHardwareEncoding": "Salli videomuunnoksen laitteistokiihdytys", + "EnableHardwareEncoding": "Käytä laitteistokiihdytystä", "EnableExternalVideoPlayers": "Ulkoiset videosoittimet", "EnableDisplayMirroring": "Näytön peilaus", "EnableColorCodedBackgrounds": "Värikoodatut taustat", "EnableCinemaMode": "Teatteritila", - "EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa.", + "EnableBackdropsHelp": "Näytä taustoja joillakin sivuilla kirjastoa selatessasi.", "EnableExternalVideoPlayersHelp": "Videota soitettaessa näytetään erillinen valikko.", "Depressed": "Painettu", "ButtonSplit": "Jaa", @@ -233,29 +233,29 @@ "EnableStreamLooping": "Uudelleentoista suoralähetykset automaattisesti", "EnableNextVideoInfoOverlayHelp": "Näytä videon lopussa tietoja seuraavasta videosta soittolistalla.", "ClientSettings": "Pääteasetukset", - "AllowFfmpegThrottlingHelp": "Kun uudelleenkoodaus tai remux ehtii tarpeeksi toiston edelle, keskeytä laskenta jotta laskentaresursseja kuluu vähemmän. Tämä on hyödyllistä jos katselet hyppimättä eri kohtiin. Älä käytä jos toiston kanssa ilmenee ongelmia.", - "AllowFfmpegThrottling": "Rajoita uudelleenkoodaus", - "ErrorDeletingItem": "Tiedostoa palvelimelta poistaessa ilmeni virhe. Varmista, että Jellyfinillä on kirjoitusoikeudet mediakansioon ja kokeile uudestaan.", - "ErrorAddingXmlTvFile": "XMLTV-tiedostoa käyttäessä tapahtui virhe. Varmista, että tiedosto on olemassa ja kokeile uudestaan.", - "ErrorAddingTunerDevice": "Viritintä lisätessä ilmeni ongelma. Varmista, että se on kytketty oikein ja kokeile uudestaan.", + "AllowFfmpegThrottlingHelp": "Kun transkoodaus tai remuxaus ehtii riittävästi toiston edelle, keskeytä käsittely resurssien säästämiseksi. Tämä on hyödyllistä lähinnä katseltaessa ilman toistokohdan jatkuvia vaihteluita. Poista asetus käytöstä, mikäli toistossa ilmenee ongelmia.", + "AllowFfmpegThrottling": "Rauhoita transkoodausta", + "ErrorDeletingItem": "Poistettaessa tiedostoa palvelimelta tapahtui virhe. Varmista, että Jellyfinillä on kirjoitusoikeus mediakansioon ja yritä uudelleen.", + "ErrorAddingXmlTvFile": "Käytettäessä XMLTV-tiedostoa tapahtui virhe. Varmista, että tiedosto on olemassa ja yritä uudelleen.", + "ErrorAddingTunerDevice": "Lisättäessä viritintä tapahtui virhe. Varmista, että se on kytketty oikein ja yritä uudelleen.", "EnableThemeVideosHelp": "Soita tunnusvideoita taustalla selatessasi kirjastoa.", - "AlbumArtist": "Albumin artisti", + "AlbumArtist": "Albumin esittäjä", "Album": "Albumi", "Played": "Toistetut", "PlayFromBeginning": "Toista alusta", "PlayNext": "Toista seuraava", "Play": "Toista", - "PinCodeResetConfirmation": "Haluatko varmasti nollata PIN-koodin?", + "PinCodeResetConfirmation": "Haluatko varmasti poistaa PIN-koodin?", "People": "Ihmiset", "OriginalAirDateValue": "Alkuperäinen esityspäivä: {0}", "OptionWeekly": "Viikottainen", "OptionWeekends": "Viikonloput", "OptionWeekdays": "Arkipäivät", - "OptionTvdbRating": "TVDB luokitus", + "OptionTvdbRating": "TheTVDB-luokitus", "OptionTrackName": "Raidan nimi", "OptionSubstring": "Substring", "OptionSpecialEpisode": "Erikoisjaksot", - "OptionSaveMetadataAsHidden": "Tallenna metadata ja kuvat piilotettuina tiedostoina", + "OptionSaveMetadataAsHidden": "Tallenna metateidot ja kuvat piilotiedostoina", "OptionResumable": "Jatkettavissa oleva", "OptionResElement": "res-elementti", "OptionReleaseDate": "Julkaisupäivä", @@ -267,7 +267,7 @@ "OptionPlayCount": "Toistokerrat", "OptionNew": "Uusi…", "OptionMissingEpisode": "Puuttuvat jaksot", - "OptionMax": "Maksimi", + "OptionMax": "Enimmäis", "OptionLikes": "Tykkäykset", "OptionIsSD": "SD", "OptionIsHD": "HD", @@ -275,12 +275,12 @@ "OptionHideUser": "Piilota tämä käyttäjä kirjautumisnäkymästä", "OptionHasThemeVideo": "Tunnusvideo", "OptionHasThemeSong": "Tunnuskappale", - "OptionExtractChapterImage": "Ota käyttöön kappalekuvien luonti", + "OptionExtractChapterImage": "Pura kappalekuvat", "OptionExternallyDownloaded": "Ulkoinen lataus", - "OptionEveryday": "Joka päivä", - "OptionEnableM2tsMode": "Ota käyttöön M2ts tila", + "OptionEveryday": "Päivittäin", + "OptionEnableM2tsMode": "Käytä M2TS-tilaa", "OptionEnableForAllTuners": "Ota käyttöön kaikille viritinlaitteille", - "OptionEnableAccessToAllLibraries": "Salli pääsy kaikkiin kirjastoihin", + "OptionEnableAccessToAllLibraries": "Myönnä kaikkien kirjastojen käyttöoikeus", "OptionEnableAccessToAllChannels": "Salli pääsy kaikille kanaville", "OptionEnableAccessFromAllDevices": "Salli pääsy kaikista laitteista", "OptionDvd": "DVD", @@ -290,16 +290,16 @@ "OptionCriticRating": "Kriitikoiden luokitus", "OptionCommunityRating": "Yhteisön luokitus", "OnlyForcedSubtitlesHelp": "Vain pakotetuiksi merkityt tekstitykset ladataan.", - "OnlyImageFormats": "Vain kuvaformaatit (VOBSUB, PGS, SUB)", + "OnlyImageFormats": "Vain kuvamuodot (VOBSUB, PGS, SUB)", "OnlyForcedSubtitles": "Vain pakotetut", "NoSubtitlesHelp": "Tekstityksiä ei ladata oletuksena. Ne voidaan silti kytkeä päälle manuaalisesti toiston aikana.", "News": "Uutiset", "Never": "Ei koskaan", "MessageReenableUser": "Ottaaksesi uudelleen käyttöön, katso alempaa", - "MessagePluginConfigurationRequiresLocalAccess": "Kirjaudu suoraan paikalliselle palvelimellesi muokataksesi tätä liitännäistä.", + "MessagePluginConfigurationRequiresLocalAccess": "Määrittääksesi liitännäisen, kirjaudu suoraan paikalliselle palvelimellesi.", "MessagePleaseEnsureInternetMetadata": "Varmista, että metadatan lataus on käytössä.", "MessageNoServersAvailable": "Automaattisen palvelintunnistuksen avulla ei löydy palvelimia.", - "MessageInvalidForgotPasswordPin": "Koodi on väärä tai se on vanhentunut. Yritä uudelleen.", + "MessageInvalidForgotPasswordPin": "Virheellinen tai vanhentunut PIN-koodi. Yritä uudelleen.", "MessageImageTypeNotSelected": "Valitse kuvatyyppi pudotusvalikosta.", "MessageImageFileTypeAllowed": "Vain JPEG ja PNG tiedostomuotoja tuetaan.", "MessageContactAdminToResetPassword": "Ota yhteyttä järjestelmänvalvojaan nollataksesi salasanasi.", @@ -323,8 +323,8 @@ "LabelOriginalAspectRatio": "Alkuperäinen kuvasuhde:", "LabelEnableAutomaticPortMapHelp": "Ohjaa reitittimesi julkiset portit automaattisesti palvelimesi paikallisiin portteihin UPnP:n avulla. Tämä ei välttämättä toimi kaikkien reitittimien tai verkkoasetusten kanssa. Muutokset tulevat voimaan vasta palvelimen uudelleenkäynnistyksen yhteydessä.", "LabelEnableAutomaticPortMap": "Salli reitittimen porttien automaattinen avaaminen (UPnP)", - "LabelDownloadLanguages": "Latauskielet:", - "LabelDisplaySpecialsWithinSeasons": "Näytä erityiset jaksot kausien sisällä, jolloin ne ilmestyivät", + "LabelDownloadLanguages": "Ladattavat kielet:", + "LabelDisplaySpecialsWithinSeasons": "Sisällytä erikoisjaksot tuotantokausiin niiden esitysajan perusteella", "LabelDisplayOrder": "Näyttöjärjestys:", "LabelDisplayName": "Näyttönimi:", "LabelDisplayMode": "Näyttötila:", @@ -332,31 +332,31 @@ "LabelCustomRating": "Mukautettu luokitus:", "LabelCustomCss": "Mukautettu CSS:", "LabelCertificatePassword": "Varmenteen salasana:", - "LabelArtistsHelp": "Erota useita käyttämällä puolipistettä (;).", + "LabelArtistsHelp": "Erota useita puolipisteellä (;).", "LabelAppNameExample": "Esimerkiksi: Sickbeard, Sonarr", "LabelAppName": "Sovelluksen nimi", "LabelAllowedRemoteAddressesMode": "Etä-IP-osoitesuodattimen tila:", "LabelAllowedRemoteAddresses": "Etä-IP-osoitesuodatin:", "LabelAllowHWTranscoding": "Salli rautatranskoodaus", - "LabelAlbumArtMaxWidth": "Albumin kuvan maksimileveys:", - "LabelAlbumArtMaxHeight": "Albumin kuvan maksimikorkeus:", + "LabelAlbumArtMaxWidth": "Albumitaiteen enimmäisleveys:", + "LabelAlbumArtMaxHeight": "Albumitaiteen enimmäiskorkeus:", "LabelAbortedByServerShutdown": "(Keskeytetty palvelimen sammutuksen takia)", "Identify": "Tunnista", "Horizontal": "Horisontaalinen", - "HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö \"uusin media\"-luettelosta", + "HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö 'Uusi media' -osiosta", "HeaderUpcomingOnTV": "Tulossa televisiossa", - "HeaderTypeImageFetchers": "Kuvien hakijat ({0}):", + "HeaderTypeImageFetchers": "Kuvien lataajat ({0}):", "HeaderTranscodingProfile": "Transkoodausprofiili", "HeaderTracks": "Raidat", "HeaderThisUserIsCurrentlyDisabled": "Tämä käyttäjä on poistettu käytöstä", "HeaderSystemDlnaProfiles": "Järjestelmäprofiilit", - "HeaderSubtitleDownloads": "Tekstitysten lataukset", + "HeaderSubtitleDownloads": "Tekstitysten lataus", "HeaderSpecialEpisodeInfo": "Erikoisjakson tiedot", "HeaderSortOrder": "Lajittelujärjestys", "HeaderSetupLibrary": "Aseta mediakirjastosi", "HeaderSeriesStatus": "Sarjan status", "HeaderSeriesOptions": "Sarjan asetukset", - "HeaderSelectTranscodingPath": "Valitse transkoodauksen väliaikainen polku", + "HeaderSelectTranscodingPath": "Valitse transkoodauksen väliakaistiedostojen sijainti", "HeaderScenes": "Kohtaukset", "HeaderResponseProfile": "Vastausprofiili", "HeaderRemoveMediaLocation": "Poista mediasijainti", @@ -364,22 +364,22 @@ "HeaderRecentlyPlayed": "Äskettäin toistetut", "HeaderProfileServerSettingsHelp": "Nämä arvot mukauttavat sitä, kuinka palvelin esittää itsensä laitteelle.", "HeaderProfileInformation": "Profiili-informaatio", - "HeaderPreferredMetadataLanguage": "Ensisijainen metadatan kieli", + "HeaderPreferredMetadataLanguage": "Ensisijainen metatietojen kieli", "HeaderPinCodeReset": "Nollaa PIN-koodi", "HeaderPhotoAlbums": "Kuva-albumit", - "HeaderPaths": "Polut", + "HeaderPaths": "Tiedostosijainnit", "HeaderPasswordReset": "Salasanan nollaus", "HeaderNextVideoPlayingInValue": "Seuraava video alkaa {0}", "HeaderNextEpisodePlayingInValue": "Seuraava jakso alkaa {0}", "HeaderNewDevices": "Uudet laitteet", - "HeaderMyMediaSmall": "Minun mediani (pieni)", - "HeaderMyMedia": "Minun mediani", + "HeaderMyMediaSmall": "Oma media (pieni)", + "HeaderMyMedia": "Oma media", "HeaderMyDevice": "Minun laitteeni", "HeaderLoginFailure": "Kirjautumisvirhe", "HeaderIdentifyItemHelp": "Anna yksi tai useampi hakukriteeri. Poista kriteerejä lisätäksesi hakutuloksia.", "HeaderIdentificationCriteriaHelp": "Lisää ainakin yksi tunnistuskriteeri.", "HeaderExternalIds": "Ulkoiset IDt:", - "HeaderDirectPlayProfile": "Suoratoistoprofiili", + "HeaderDirectPlayProfile": "Muuntamattoman toiston profiili", "HeaderEasyPinCode": "Yksinkertainen PIN-koodi", "HeaderDownloadSync": "Lataus ja synkronointi", "HeaderDeveloperInfo": "Kehittäjäinfo", @@ -400,8 +400,8 @@ "HDPrograms": "HD-ohjelmat", "OptionDisableUser": "Poista tämä käyttäjä käytöstä", "OptionDatePlayed": "Toistopäivä", - "OptionDateAddedImportTime": "Käytä kirjastoon skannauspäivää", - "OptionDateAddedFileTime": "Käytä tiedoston luontipäivää", + "OptionDateAddedImportTime": "Kirjastoon lisäyspäivä", + "OptionDateAddedFileTime": "Tiedoston luontipäivä", "OptionDateAdded": "Lisäyspäivä", "OptionDaily": "Päivittäinen", "OptionBluray": "Blu-ray", @@ -411,15 +411,15 @@ "HeaderMediaFolders": "Mediakansiot", "HeaderMedia": "Media", "HeaderLibraryFolders": "Kirjaston kansiot", - "HeaderLatestMedia": "Uusin media", - "HeaderLatestRecordings": "Uusimmat tallenteet", - "HeaderLatestMusic": "Uusin musiikki", - "HeaderLatestMovies": "Uusimmat elokuvat", - "HeaderLatestEpisodes": "Uusimmat jaksot", + "HeaderLatestMedia": "Uusi media", + "HeaderLatestRecordings": "Uudet tallenteet", + "HeaderLatestMusic": "Uusi musiikki", + "HeaderLatestMovies": "Uudet elokuvat", + "HeaderLatestEpisodes": "Uudet jaksot", "HeaderInstall": "Asenna", "HeaderFrequentlyPlayed": "Usein toistetut", - "HeaderFetcherSettings": "Hakijan asetukset", - "HeaderFetchImages": "Hae kuvia:", + "HeaderFetcherSettings": "Lataajan asetukset", + "HeaderFetchImages": "Noudettavat kuvat:", "Filters": "Suodattimet", "FastForward": "Hyppää eteenpäin", "MessageInvalidUser": "Väärä käyttäjätunnus tai salasana. Yritä uudelleen.", @@ -436,7 +436,7 @@ "MediaInfoSize": "Koko", "MediaInfoProfile": "Profiili", "MediaInfoLevel": "Taso", - "MediaInfoPath": "Polku", + "MediaInfoPath": "Tiedostosijainti", "MediaInfoLanguage": "Kieli", "MediaInfoInterlaced": "Lomiteltu", "MediaInfoFramerate": "Ruudunpäivitysnopeus", @@ -447,8 +447,8 @@ "MediaInfoAspectRatio": "Kuvasuhde", "MarkUnplayed": "Merkitse toistamattomaksi", "MarkPlayed": "Merkitse toistetuksi", - "ManageRecording": "Hallitse tallennusta", - "ManageLibrary": "Hallitse kirjastoa", + "ManageRecording": "Hallinnoi tallennusta", + "ManageLibrary": "Hallinnoi kirjastoa", "Logo": "Logo", "LiveTV": "Live-TV", "LiveBroadcasts": "Suorat lähetykset", @@ -456,7 +456,7 @@ "List": "Lista", "LearnHowYouCanContribute": "Katso, miten voit auttaa.", "Large": "Suuri", - "LabelffmpegPath": "FFmpeg polku:", + "LabelffmpegPath": "FFmpeg-sijainti:", "LabelZipCode": "Postinumero:", "LabelYear": "Vuosi:", "LabelVideoResolution": "Videon resoluutio:", @@ -471,13 +471,13 @@ "LabelUser": "Käyttäjä:", "LabelUseNotificationServices": "Käytä seuraavia palveluita:", "LabelTypeText": "Teksti", - "LabelTypeMetadataDownloaders": "Metadatan lataajat ({0}):", + "LabelTypeMetadataDownloaders": "Metatietojen lataajat ({0}):", "LabelType": "Tyyppi:", "LabelTunerType": "Virittimen tyyppi:", "LabelTunerIpAddress": "Virittimen IP-osoite:", - "LabelTranscodingThreadCountHelp": "Valitse enimmäismäärä säikeitä, joita käytetään transkoodatessa. Säikeiden vähentäminen laskee prosessorin käyttöä, mutta myös lisää riskiä, että uudelleenkoodaus ei tapahdu riittävän nopeasti virheetöntä toistoa varten.", + "LabelTranscodingThreadCountHelp": "Valitse transkoodatessa käytettävien säikeiden enimmäismäärä. Pienempi säiemäärä laskee prosessorin kuormitusta, mutta se saattaa myös hidastaa uudelleenkoodausta ja estää virheettömän toistokokemuksen.", "LabelTranscodingThreadCount": "Transkoodaus säikeidein lukumäärä:", - "LabelTranscodePath": "Transkoodauksen polku:", + "LabelTranscodePath": "Transkoodauksen sijainti:", "LabelTimeLimitHours": "Aikaraja (tunteina):", "LabelTime": "Aika:", "LabelTheme": "Teema:", @@ -500,14 +500,14 @@ "LabelPublicHttpPort": "Julkinen HTTP-porttinumero:", "LabelProtocolInfo": "Protokollan info:", "LabelProtocol": "Protokolla:", - "LabelPreferredSubtitleLanguage": "Ensisijainen tekstityksen kieli:", + "LabelPreferredSubtitleLanguage": "Ensisijainen tekstityskieli:", "LabelPlayerDimensions": "Soittimen mitat:", "LabelPlayer": "Soitin:", "LabelPlaylist": "Soittolista:", "LabelPlaceOfBirth": "Synnyinpaikka:", "LabelPersonRoleHelp": "Esimerkki: Jäätelöauton ajaja", "LabelPersonRole": "Rooli:", - "LabelPath": "Polku:", + "LabelPath": "Tiedostosijainti:", "LabelPasswordRecoveryPinCode": "PIN-koodi:", "LabelPasswordConfirm": "Salasanan varmistus:", "LabelPassword": "Salasana:", @@ -517,26 +517,26 @@ "LabelNewName": "Uusi nimi:", "LabelName": "Nimi:", "LabelMovieCategories": "Elokuvakategoriat:", - "LabelMinScreenshotDownloadWidth": "Pienin kuvakaappauksen latauksen leveys:", + "LabelMinScreenshotDownloadWidth": "Ladattavien kuvakaappauksien vähimmäisleveys:", "LabelMinResumePercentageHelp": "Kohteita pidetään toistamattomina, jos toisto keskeytetään ennen tätä aikaa.", - "LabelMinResumeDuration": "Minimi jatkamisen kesto (sekuntia):", - "LabelMinResumePercentage": "Vähimmäisaika jatkoa varten (%):", + "LabelMinResumeDuration": "Vähimmäisaika jatkoa varten (sekunteina):", + "LabelMinResumePercentage": "Vähimmäisprosentti jatkoa varten:", "LabelMinResumeDurationHelp": "Kohteiden, joiden toistoaika on tätä lyhyempi, ei voi jatkaa.", "LabelMethod": "Metodi:", - "LabelMetadataSaversHelp": "Valitse tiedostomuodot, joita käytetään metatietojen tallennukseen.", - "LabelMetadataSavers": "Metadatan tallentajat:", + "LabelMetadataSaversHelp": "Valitse metatietojen tallennukseen käytettävät tiedostomuodot.", + "LabelMetadataSavers": "Metatietojen tallentajat:", "LabelMetadataDownloadLanguage": "Ensisijainen latauskieli:", "LabelMetadataReaders": "Metadatan lukijat:", - "LabelMetadataPath": "Metadatan polku:", + "LabelMetadataPath": "Metatietojen sijainti:", "LabelMetadata": "Metadata:", "LabelMessageTitle": "Viestin otsikko:", - "LabelCachePath": "Välimuistin polku:", + "LabelCachePath": "Välimuistin sijainti:", "LabelCache": "Välimuisti:", "LabelBurnSubtitles": "Polta tekstitykset:", - "LabelAutomaticallyRefreshInternetMetadataEvery": "Päivitä metadata automaattisesti:", + "LabelAutomaticallyRefreshInternetMetadataEvery": "Päivitä metatiedot Internetistä automaattisesti:", "LabelAuthProvider": "Todennuksen tarjoaja:", "ExtraLarge": "Suurin", - "EveryNDays": "Joka {0} päivä", + "EveryNDays": "{0} päivän välein", "Raised": "Korotettu", "Yesterday": "Eilen", "Yes": "Kyllä", @@ -545,7 +545,7 @@ "Tuesday": "Tiistai", "Transcoding": "Transkoodaus", "Trailers": "Trailerit", - "TitlePlayback": "Toistaminen", + "TitlePlayback": "Toisto", "Thursday": "Torstai", "TheseSettingsAffectSubtitlesOnThisDevice": "Nämä asetukset vaikuttavat tekstityksiin tällä laitteella", "ThemeVideos": "Tunnusvideot", @@ -562,8 +562,8 @@ "TabMyPlugins": "Omat liittännäiseni", "TabMusic": "Musiikki", "TabLogs": "Lokit", - "TabLatest": "Uusimmat", - "TabDirectPlay": "Suoratoisto", + "TabLatest": "Uudet", + "TabDirectPlay": "Muuntamaton toisto", "TabDashboard": "Hallintapaneeli", "TabCatalog": "Luettelo", "TabAdvanced": "Edistynyt", @@ -587,7 +587,7 @@ "Series": "Sarjat", "SendMessage": "Lähetä viesti", "SelectAdminUsername": "Valitse käyttäjätunnus järjestelmänvalvojan tilille.", - "SearchForCollectionInternetMetadata": "Etsi kuvamateriaalia ja metadataa internetistä", + "SearchForCollectionInternetMetadata": "Nouda kuvia ja metatietoja Internetistä", "SearchForMissingMetadata": "Etsi puuttuvaa metadataa", "Season": "Kausi", "SearchResults": "Tulokset", @@ -617,16 +617,16 @@ "RecordingCancelled": "Tallennus peruttu.", "RecordSeries": "Tallenna sarja", "Record": "Tallenna", - "OptionAllowVideoPlaybackTranscoding": "Salli transkoodausta vaativan videon toistaminen", - "OptionAllowVideoPlaybackRemuxing": "Salli videon toistaminen, joka vaatii muuntamista ilman koodausta", + "OptionAllowVideoPlaybackTranscoding": "Salli transkoodausta edellyttävän videon toisto", + "OptionAllowVideoPlaybackRemuxing": "Salli muunnosta edellyttävän videon toisto ilman uudelleenkoodausta", "OptionAllowMediaPlaybackTranscodingHelp": "Transkoodauksen esto voi aiheuttaa toistovirheitä asiakassovelluksissa, koska kaikkia mediaformaatteja ei tueta.", "OptionAllowLinkSharingHelp": "Vain mediatietoja sisältävät web-sivut jaetaan. Mediatiedostoja ei koskaan jaeta julkisesti. Jaot ovat määräaikaisia ja päättyvät {0} päivän kuluttua.", - "OptionAllowUserToManageServer": "Salli tämän käyttäjän hallita palvelinta", + "OptionAllowUserToManageServer": "Salli käyttäjän hallinnoida palvelinta", "OptionAllowSyncTranscoding": "Salli transkoodausta vaativan median lataaminen ja synkronointi", - "OptionAllowRemoteSharedDevicesHelp": "DLNA-laitteet katsotaan jaetuiksi kunnes käyttäjä alkaa ohjata niitä.", + "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 Live-TV tallenteiden hallinta", + "OptionAllowManageLiveTv": "Salli suoran televisiotallennuksen hallinnointi", "OptionAllowMediaPlayback": "Salli median toisto", "OptionAllowContentDownloading": "Salli median lataaminen ja synkronointi", "OptionAllowBrowsingLiveTv": "Salli Live-TV käyttöoikeus", @@ -635,7 +635,7 @@ "HeaderPlayback": "Median toisto:", "HeaderPlayOn": "Toista laitteella", "OptionAllowLinkSharing": "Salli jakaminen sosiaaliseen mediaan", - "OptionAllowAudioPlaybackTranscoding": "Salli äänen toistaminen joka vaatii uudelleenpakkausta", + "OptionAllowAudioPlaybackTranscoding": "Salli transkoodausta edellyttävän äänen toisto", "OptionAllUsers": "Kaikki käyttäjät", "OptionAdminUsers": "Järjestelmänvalvojat", "Option3D": "3D", @@ -643,9 +643,9 @@ "MoveRight": "Siirry oikealle", "MoveLeft": "Siirry vasemmalle", "Mobile": "Mobiili", - "EveryXHours": "Joka {0} tunti", - "EveryXMinutes": "Joka {0} minuutti", - "EveryHour": "Joka tunti", + "EveryXHours": "{0} tunnin välein", + "EveryXMinutes": "{0} minuutin välein", + "EveryHour": "Tunnin välein", "LastSeen": "Viimeksi nähty {0}", "Yadif": "YADIF", "Writer": "Kirjoittaja", @@ -672,24 +672,24 @@ "OnApplicationStartup": "Käynnistyksen yhteydessä", "NumLocationsValue": "{0} kansiota", "NoSubtitleSearchResultsFound": "Ei tuloksia.", - "MessageNoPluginConfiguration": "Tällä liitännäisellä ei ole asetuksia muokattavaksi.", + "MessageNoPluginConfiguration": "Liitännäisessä ei ole muokattavia asetuksia.", "NoCreatedLibraries": "Vaikuttaa siltä, ettet ole luonut vielä yhtään kirjastoa. {0} Haluaisitko luoda sellaisen nyt?{1}", "No": "Ei", - "NextUp": "Seuraavana", + "NextUp": "Seuraavaksi", "Next": "Seuraava", "NewEpisodesOnly": "Vain uudet jaksot", "NewEpisodes": "Uusia jaksoja", "NewCollectionNameExample": "Esimerkki: Star Wars Kokoelma", - "NewCollectionHelp": "Kokoelmat mahdollistavat elokuvien ja muun kirjastosisällön personalisoidun ryhmittämisen.", + "NewCollectionHelp": "Kokoelmien avulla voit luoda mukautettuja ryhmityksiä elokuvista ja muusta kirjastosisällöstä.", "NewCollection": "Uusi kokoelma", "Mute": "Vaimenna", "Name": "Nimi", "MySubtitles": "Minun tekstitykseni", - "MusicArtist": "Musiikkiartisti", + "MusicArtist": "Musiikin esittäjä", "MusicAlbum": "Musiikkialbumi", "Movie": "Elokuva", "Monday": "Maanantai", - "MetadataManager": "Metadatan hallintatyökalu", + "MetadataManager": "Metatietojen hallintatyökalu", "Metadata": "Metadata", "MessageYouHaveVersionInstalled": "Sinulla on versio {0} asennettuna.", "MessagePleaseWait": "Ole hyvä ja odota. Tämä voi kestää hetken.", @@ -709,26 +709,26 @@ "HeaderSubtitleProfile": "Tekstitysprofiili", "HeaderStartNow": "Aloita nyt", "HeaderSortBy": "Lajittele", - "HeaderSelectServerCachePath": "Valitse palvelimen välimuistin polku", - "HeaderSelectPath": "Valitse polku", - "HeaderSelectCertificatePath": "Valitse varmenteen polku", - "HeaderSelectMetadataPath": "Valitse metadatan polku", + "HeaderSelectServerCachePath": "Valitse palvelimen välimuistin sijainti", + "HeaderSelectPath": "Valitse sijainti", + "HeaderSelectCertificatePath": "Valitse varmenteen sijainti", + "HeaderSelectMetadataPath": "Valitse metatietojen sijainti", "HeaderSecondsValue": "{0} sekuntia", "HeaderRunningTasks": "Käynnissä olevat tehtävät", "HeaderRevisionHistory": "Versiohistoria", "HeaderRemoveMediaFolder": "Poista mediakansio", "HeaderRemoteControl": "Etäohjaus:", "HeaderPleaseSignIn": "Ole hyvä ja kirjaudu sisään", - "BoxSet": "Laatikkosarja", + "BoxSet": "Kokoelma", "LabelManufacturerUrl": "Valmistajan verkko-osoite:", "LabelManufacturer": "Valmistaja:", "LabelLogs": "Lokit:", "LabelLanNetworks": "Lähiverkot:", - "LabelKodiMetadataDateFormat": "Julkaisupäivämäärän muoto:", + "LabelKodiMetadataDateFormat": "Julkaisupäiväyksen esitystapa:", "LabelImageType": "Kuvan tyyppi:", "LabelIconMaxWidth": "Kuvakkeen enimmäisleveys:", "LabelIconMaxHeight": "Kuvakkeen enimmäiskorkeus:", - "LabelGroupMoviesIntoCollections": "Ryhmitä elokuvat kokoelmiin", + "LabelGroupMoviesIntoCollections": "Ryhmittele elokuvat kokoelmiin", "LabelFormat": "Muoto:", "LabelFont": "Kirjasinlaji:", "LabelFolder": "Kansio:", @@ -740,7 +740,7 @@ "LabelCollection": "Kokoelma:", "LabelBirthYear": "Syntymävuosi:", "LabelBirthDate": "Syntymäaika:", - "LabelArtists": "Artistit:", + "LabelArtists": "Esittäjät:", "LabelAlbum": "Albumi:", "LabelAirTime": "Lähetysaika:", "LabelAccessDay": "Viikonpäivä:", @@ -767,7 +767,7 @@ "HeaderIdentification": "Tunnistautuminen", "HeaderForKids": "Lapsille", "HeaderError": "Virhe", - "HeaderEditImages": "Muokkaa kuvia", + "HeaderEditImages": "Kuvien muokkaus", "HeaderDevices": "Laitteet", "HeaderDeleteItems": "Poista valitut", "HeaderDeleteItem": "Poista valittu", @@ -792,15 +792,15 @@ "Quality": "Laatu", "LabelMessageText": "Viestin sisältö:", "LabelMaxScreenshotsPerItem": "Kuvakaappausten enimmäismäärä per kohde:", - "LabelLoginDisclaimerHelp": "Viesti, joka näytetään kirjautumissivun alareunassa.", + "LabelLoginDisclaimerHelp": "Kirjautumissivun alareunassa näytettävä viesti.", "LabelLockItemToPreventChanges": "Lukitse tämä kohde estääksesi tulevat muutokset", "LabelLocalHttpServerPortNumberHelp": "HTTP-palvelimen TCP-portin numero.", "LabelLocalHttpServerPortNumber": "Paikallisen HTTP-portin numero:", - "LabelKodiMetadataSaveImagePaths": "Tallenna kuvien polut NFO-tiedostojen sisälle", + "LabelKodiMetadataSaveImagePaths": "Tallenna kuvien tiedostosijainnit NFO-tiedostoihin", "LabelKidsCategories": "Lasten kategoriat:", "LabelHttpsPortHelp": "HTTPS-palvelimen TCP-portin numero.", "LabelHttpsPort": "Paikallisen HTTPS-portin numero:", - "LabelHardwareAccelerationTypeHelp": "Laitteistokiihdytys vaatii ylimääräistä määritystä.", + "LabelHardwareAccelerationTypeHelp": "Laitteistokiihdytys vaatii lisämäärityksiä.", "LabelHardwareAccelerationType": "Laitteistokiihdytys:", "LabelEncoderPreset": "Koodauksen esiasetus:", "LabelH264Crf": "H.264-enkoodauksen CRF:", @@ -810,23 +810,23 @@ "LabelEnableDlnaClientDiscoveryIntervalHelp": "SSDP-protokollaa käyttävien hakujen välinen aika sekunteina.", "LabelEnableDlnaDebugLoggingHelp": "Luo suuria lokitiedostoja ja tulisi käyttää vain tarvittaessa vianmääritystä varten.", "LabelEnableDlnaServerHelp": "Salli verkon UPnP-laitteiden selata ja toistaa sisältöä tältä palvelimelta.", - "LabelEnableDlnaServer": "Ota DLNA-palvelin käyttöön", - "LabelEnableDlnaPlayTo": "Salli DLNA-toisto", - "LabelEnableDlnaDebugLogging": "Ota DLNA:n virheenjäljitys käyttöön", + "LabelEnableDlnaServer": "Käytä DLNA-palvelinta", + "LabelEnableDlnaPlayTo": "Käytä 'Toista kohteeseen' DLNA-ominaisuutta", + "LabelEnableDlnaDebugLogging": "Käytä DLNA-virheenkorjauslokia", "LabelEnableBlastAliveMessages": "Lähetä hereilläolo -viesti", "LabelEnableBlastAliveMessagesHelp": "Ota tämä käyttöön, jos muilla verkon UPnP-laitteilla on ongelmia palvelimen havaitsemisessa.", "LabelEnableDlnaClientDiscoveryInterval": "Päätelaitteen tunnistustiheys:", "LabelEasyPinCode": "Yksinkertainen PIN-koodi:", "LabelDynamicExternalId": "{0} Id:", - "LabelDisplayLanguageHelp": "Jellyfinin kääntäminen on käynnissä oleva projekti.", + "LabelDisplayLanguageHelp": "Jellyfin-käännös on jatkuva projekti.", "LabelDisplayLanguage": "Näytön kieli:", "LabelDiscNumber": "Levynumero:", "LabelDeviceDescription": "Laitteen kuvaus:", "LabelDefaultScreen": "Oletusnäyttö:", "LabelDefaultUser": "Oletuskäyttäjä:", "LabelDashboardTheme": "Palvelimen hallintapaneelin teema:", - "LabelCustomCertificatePathHelp": "Polku PKCS #12-tiedostoon joka sisältää varmenteen ja yksityisen avaimen jolla TLS-tuki otetaan käyttöön omalle verkkotunnukselle.", - "LabelCustomCertificatePath": "Mukautetun SSL-varmenteen polku:", + "LabelCustomCertificatePathHelp": "Varmenteen ja yksityisen avaimen sisältävän PKCS #12 -tiedoston sijainti oman verkkotunnuksen TLS-tuen käyttöönottamiseksi.", + "LabelCustomCertificatePath": "Oman SSL-varmenteen sijainti:", "LabelContentType": "Sisältötyyppi:", "LabelChannels": "Kanavat:", "LabelCertificatePasswordHelp": "Jos varmenteesi vaatii salasanaa, laita se tähän.", @@ -839,12 +839,12 @@ "ExitFullscreen": "Poistu kokonäyttötilasta", "Episode": "Jakso", "ButtonTogglePlaylist": "Soittolista", - "Artist": "Artisti", + "Artist": "Esittäjä", "RefreshQueued": "Päivitys odottamassa.", "SeriesCancelled": "Sarja peruttu.", "MediaInfoRefFrames": "Viitekehykset", - "LabelXDlnaDoc": "X-DLNA doc:", - "LabelXDlnaCap": "X-DLNA cap:", + "LabelXDlnaDoc": "Laitteen luokitustunnus:", + "LabelXDlnaCap": "Laitteen ominaisuustunnus:", "Guide": "Opas", "DailyAt": "Päivittäin klo {0}", "Uniform": "Yhtenäinen", @@ -869,15 +869,15 @@ "PlayAllFromHere": "Toista kaikki tästä lähtien", "PlayNextEpisodeAutomatically": "Toista seuraava jakso automaattisesti", "PlayCount": "Toistokerrat", - "PlaybackData": "Toistamisen tiedot", - "PinCodeResetComplete": "PIN-koodi on nollattu.", + "PlaybackData": "Toistotiedot", + "PinCodeResetComplete": "PIN-koodi on poistettu.", "Overview": "Yleiskatsaus", "OptionWakeFromSleep": "Herätä lepotilasta", "OptionUnairedEpisode": "Julkaisemattomat jaksot", "OptionParentalRating": "Ikäraja", "OptionIgnoreTranscodeByteRangeRequests": "Ohita transkoodauksen tavualuepyynnöt", "OptionHlsSegmentedSubtitles": "HLS segmentoidut tekstitykset", - "OptionEnableExternalContentInSuggestions": "Ota käyttöön ulkoinen sisältö ehdotuksissa", + "OptionEnableExternalContentInSuggestions": "Käytä ehdotuksissa ulkoista sisältöä", "OptionEmbedSubtitles": "Upota säiliöön", "OptionForceRemoteSourceTranscoding": "Pakota etäyhteyden välityksellä toistettavien medialähteiden kuten Live TV:n transkoodaus", "OneChannel": "Yksi kanava", @@ -887,9 +887,9 @@ "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Seuraavat mediasijainnit tullaan poistamaan kirjastostasi:", "MessageItemsAdded": "Kohteet lisätty.", "MessageItemSaved": "Kohde tallennettu.", - "MessageEnablingOptionLongerScans": "Tämän vaihtoehdon käyttöönottaminen voi johtaa huomattavasti pidempiin kirjastojen skannauksiin.", + "MessageEnablingOptionLongerScans": "Asetuksen käyttö saattaa pidentää kirjaston skannausaikaa merkittävästi.", "MessageDownloadQueued": "Lataus asetettu jonoon.", - "MessageConfirmRevokeApiKey": "Haluatko varmasti poistaa tämän API-avaimen? Sovelluksen yhteys palvelimeen katkaistaan välittömästi.", + "MessageConfirmRevokeApiKey": "Haluatko varmasti poistaa API-avaimen? Sovelluksen yhteys palvelimeen katkeaa välittömästi.", "MessageConfirmRemoveMediaLocation": "Haluatko varmasti poistaa tämän sijainnin?", "MessageConfirmRecordingCancellation": "Peruuta tallennus?", "MessageConfirmDeleteGuideProvider": "Haluatko varmasti poistaa tämän ohjelmaoppaan tarjoajan?", @@ -905,10 +905,10 @@ "LabelVideoCodec": "Videon codec:", "LabelSkipIfGraphicalSubsPresent": "Ohita, jos video sisältää upotetut tekstitykset", "LabelInternetQuality": "Verkkoyhteyden laatu:", - "LabelEmbedAlbumArtDidl": "Upota albumin kuvamateriaali DIDL:iin", - "LabelDeinterlaceMethod": "Lomituksen poistamismenetelmä:", + "LabelEmbedAlbumArtDidl": "Upota albumitaide DIDL:iin", + "LabelDeinterlaceMethod": "Lomituksen poistomenetelmä:", "LabelAudioBitDepth": "Äänen bittisyvyys:", - "LabelAlbumArtists": "Albumin artistit:", + "LabelAlbumArtists": "Albumin esittäjät:", "Items": "Kohteet", "ItemCount": "{0} kohdetta", "Home": "Koti", @@ -929,22 +929,22 @@ "PleaseSelectTwoItems": "Valitse ainakin kaksi kohdetta.", "PleaseRestartServerName": "Käynnistä uudelleen Jellyfin palvelimella \"{0}\".", "PleaseEnterNameOrId": "Anna nimi tai ulkoinen ID.", - "PreferEmbeddedTitlesOverFileNames": "Suosi upotettuja otsikoita tiedostonimien sijasta", + "PreferEmbeddedTitlesOverFileNames": "Suosi tiedostonimien sijaan tiedostoon upotettuja nimiä", "Premieres": "Ensiesitys", "Primary": "Ensisijainen", "Previous": "Edellinen", "RecommendationBecauseYouWatched": "Koska katsoit {0}", "RecommendationBecauseYouLike": "Koska pidät {0}", "RecentlyWatched": "Äskettäin katsotut", - "Programs": "Ohjelmat", + "Programs": "Sarjat", "LabelServerNameHelp": "Tätä nimeä käytetään palvelimen tunnistamiseen. Jätä tyhjäksi käyttääksesi palvelinkoneen nimeä.", "LabelEnableRealtimeMonitorHelp": "Tiedostomuutokset käsitellään tuetuissa tiedostojärjestelmissä välittömästi.", - "LabelEnableRealtimeMonitor": "Ota reaaliaikainen seuranta käyttöön", + "LabelEnableRealtimeMonitor": "Käytä reaaliaikaista seurantaa", "LabelDropImageHere": "Pudota kuva tähän, tai paina selataksesi.", "LabelDroppedFrames": "Pudotettuja kuvia:", "LabelDidlMode": "DIDL-tila:", "LabelCustomDeviceDisplayNameHelp": "Tätä nimeä käytetään laitteen tunnistamiseen. Jos tyhjä, käytetään laitteen nimeä.", - "LabelCustomCssHelp": "Käytä omia CSS-tyylimäärittelyjä web-käyttöliittymään.", + "LabelCustomCssHelp": "Käytä omia CSS-tyylimäärityksiä verkkokäyttöliittymälle.", "LabelCorruptedFrames": "Korruptoituneita kuvia:", "LabelCriticRating": "Kriitikoiden luokitus:", "LabelCommunityRating": "Yhteisön luokitus:", @@ -965,8 +965,8 @@ "LabelRemoteClientBitrateLimitHelp": "Valinnainen bittinopeusraja yksittäisille suoratoistaville laitteille lähiverkon ulkopuolella. Tämä on hyödyllistä estääkseen laitteita pyytämästä suurempia bittinopeuksia kuin Internet-yhteys voi käsitellä. Tämä voi johtaa palvelimen prosessorin kuormituksen lisääntymiseen, jotta videot voidaan transkoodata pienempiin bittinopeuksiin.", "LabelRemoteClientBitrateLimit": "Internetistä suoratoiston enimmäisnopeus (Mbps):", "LabelRefreshMode": "Päivitystila:", - "LabelRecordingPathHelp": "Määritä oletussijainti tallennuksille. Jätä tyhjäksi käyttääksesi palvelimen datakansiota.", - "LabelRecordingPath": "Oletustallennuspolku:", + "LabelRecordingPathHelp": "Määritä tallenteiden oletussijainti. Jätä tyhjäksi käyttääksesi palvelimen tietokansiota.", + "LabelRecordingPath": "Oletustallennussijainti:", "LabelProtocolInfoHelp": "Arvo, jota käytetään vastattaessa laitteen GetProtocolInfo-pyyntöihin.", "LabelProfileCodecsHelp": "Pilkulla erotettuna. Jätä tyhjäksi käyttääksesi kaikissa codeceissa.", "LabelProfileContainersHelp": "Pilkulla erotettuna. Jätä tyhjäksi käyttääksesi kaikissa säiliöissä.", @@ -981,23 +981,23 @@ "LabelOverview": "Yleiskatsaus:", "LabelPasswordResetProvider": "Salasanan nollauksen palveluntarjoaja:", "LabelParentalRating": "Ikäraja:", - "LabelOptionalNetworkPathHelp": "Jos tämä kansio on jaettu verkossasi, verkkosijainnin syöttö mahdollistaa muiden laitteiden sovelluksille suoran yhteyden mediatiedostoihin.", + "LabelOptionalNetworkPathHelp": "Jos kansio on jaettu verkossasi, mahdollistaa verkkosijainnin ilmoitus muiden laitteiden sovelluksille suoran yhteyden mediatiedostoihin. Esim. {0} tai {1}.", "LabelMovieRecordingPath": "Elokuvien tallennussijainti:", - "LabelMusicStreamingTranscodingBitrateHelp": "Määritä suurin sallittu musiikin suoratoiston bittinopeus.", + "LabelMusicStreamingTranscodingBitrateHelp": "Määritä musiikin suoratoiston enimmäisbittinopeus.", "LabelMusicStreamingTranscodingBitrate": "Musiikin transkoodauksen bitrate:", - "LabelMinBackdropDownloadWidth": "Taustan latauksen vähimmäisleveys:", + "LabelMinBackdropDownloadWidth": "Ladattavien taustojen vähimmäisleveys:", "LabelMetadataReadersHelp": "Järjestä ensisijaiset paikallisen metadatan lähteet prioriteettijärjestykseen. Ensimmäinen löydetty tiedosto luetaan.", - "LabelMetadataPathHelp": "Määrää mukautettu sijainti ladatulle kuvamateriaalille ja metadatalle.", - "LabelMetadataDownloadersHelp": "Ota käyttöön ja järjestä ensisijaiset metadatan lataajat prioriteettijärjestykseen. Alemman prioriteetin omaavia lataajia käytetään vain täyttämään puuttuvia tietoja.", + "LabelMetadataPathHelp": "Määritä oma sijainti ladatuille kuville ja metatiedoille.", + "LabelMetadataDownloadersHelp": "Käytä ja järjestä metatietojen lataajat haluamasi painotuksen perusteella. Alemman painotuksen lataajia käytetään vain puuttuvien tietojen täydennykseen.", "LabelMaxResumePercentageHelp": "Kohteita pidetään toistettuina, jos toisto pysäytetään tämän ajan kuluttua.", - "LabelMaxResumePercentage": "Enimmäisaika jatkoa varten (%):", + "LabelMaxResumePercentage": "Enimmäisprosentti jatkoa varten:", "LabelMaxChromecastBitrate": "Chromecastin suoratoiston laatu:", - "LabelMaxBackdropsPerItem": "Taustojen maksimimäärä per kohde:", + "LabelMaxBackdropsPerItem": "Taustojen enimmäismäärä per kohde:", "LabelLoginDisclaimer": "Sisäänkirjautumisen vastuuvapauslauseke:", "LabelLibraryPageSize": "Kirjastosivun kohteiden määrä:", "LabelLibraryPageSizeHelp": "Asettaa kirjastosivulla näytettävien kohteiden määrän. Arvo 0 poistaa sivutuksen käytöstä.", "Unrated": "Luokittelematon", - "ExtractChapterImagesHelp": "Kappalekuvien luominen mahdollistaa sovellusten näyttää graafisia kohtausvalikoita. Prosessi voi olla hidas, prosessoria kuormittava ja saattaa vaatia useita gigatavuja tilaa. Se suoritetaan, kun videoita havaitaan, sekä myös yöksi suunniteltuna tehtävänä. Aikataulu on muokattavissa ajoitetuissa tehtävissä. Tätä tehtävää ei ole suositeltavaa suorittaa korkean kuormituksen aikana.", + "ExtractChapterImagesHelp": "Kappalekuvien avulla sovellukset voivat näyttää graafisia kappalevalintoja. Tämä voi olla hidasta, laitteistoa kuormittavaa ja saattaa vaatia useita gigatavuja tallennustilaa. Tämä suoritetaan lisättäessä uusia videoita sekä yöllisenä ajoitettuna tehtävänä (ajoitusta voi muuttaa ajoitetuista tehtävistä). Tehtävää ei ole suositeltavaa suorittaa korkean käyttöasteen aikana.", "OnWakeFromSleep": "Lepotilasta poistuttaessa", "WeeklyAt": "{0}sin klo {1}", "Whitelist": "Sallitut", @@ -1011,33 +1011,33 @@ "ValueCodec": "Codec: {0}", "ValueAudioCodec": "Audio Codec: {0}", "SeriesYearToPresent": "{0} - Nykyhetki", - "DeinterlaceMethodHelp": "Valitse lomituksen poistomenetelmä, jota käytetään lomitetun sisällön transkoodaukseen. Mikäli omituksen poiston hallitsevaa laitteistokiihdytettyä purkua käytetään, ei tätä asetusta oteta huomioon.", + "DeinterlaceMethodHelp": "Valitse lomitetun sisällön transkoodauksessa käytettävä lomituksen poistomenetelmä. Käytettäessä lomituksen poistoa tukevaa laitteistokiihdytystä, ei tätä asetusta huomioida.", "FormatValue": "Muoto: {0}", - "General": "Yleinen", + "General": "Yleiset", "FetchingData": "Noudetaan lisätietoja", "Features": "Ominaisuudet", "ErrorStartHourGreaterThanEnd": "Loppumisajan on oltava myöhemmin kuin aloitusaika.", "MediaInfoAnamorphic": "Anamorfinen", - "ErrorGettingTvLineups": "Televisiokokoonpanojen latauksessa ilmeni ongelma. Varmista, että tiedot ovat oikein ja yritä uudelleen.", + "ErrorGettingTvLineups": "Ladattaessa TV-kokoonpanoja tapahtui virhe. Varmista, että tiedot ovat oikein ja yritä uudelleen.", "EnableDetailsBannerHelp": "Näyttää julistekuvan yksityiskohdat -sivun ylälaidassa.", "EnableDetailsBanner": "Yksityiskohtien julistekuva", "ButtonSyncPlay": "SyncPlay", "HeaderAccessSchedule": "Käyttöaikataulu", "HeaderAccessScheduleHelp": "Luo käyttötaulu rajoittaaksesi käyttöä tietylle aikavälille.", - "HardwareAccelerationWarning": "Laitteistokiihdytyksen käyttöönotto voi aiheuttaa epävakautta joissain ympäristöissä. Varmista että sekä käyttöjärjestelmäsi että videoajurisi ovat ajan tasalla. Mikäli huomaat ongelmia videotoistossa säädettyäsi tätä asetusta, sinun täytyy muuttaa asetus takaisin kohtaan \"Ei mitään\".", + "HardwareAccelerationWarning": "Laitteistokiihdytyksen käyttöönotto voi joissain ympäristöissä aiheuttaa epävakautta. Varmista, että käyttöjärjestelmän ja näytönohjaimen ajurit ovat ajan tasalla. Mikäli huomaat videotoistossa ongelmia käyttöönoton jälkeen, palauta \"Ei mitään\" -asetus.", "EncoderPresetHelp": "Valitse nopeampi arvo kohentaaksesi suorituskykyä tai hitaampi arvo parantaaksesi kuvanlaatua.", "H264CrfHelp": "Constant Rate Factor (CRF) on x264 -enkooderin kuvanlaadun vakioasetus. Voit valita arvon lukujen 0 ja 51 väliltä, jossa matalammat arvot tarkoittavat parempaa kuvanlaatua (suurempien tiedostokokojen hinnalla). Järkevät arvot ovat väliltä 18-28. Oletusarvo x264:lle on 23, joten voit käyttää sitä lähtökohtana.", "GuideProviderSelectListings": "Valitse luettelot", "GuideProviderLogin": "Kirjaudu", - "GuestStar": "Vieraileva tähti", + "GuestStar": "Vieraileva näyttelijä", "GroupVersions": "Ryhmitä versiot", - "FFmpegSavePathNotFound": "Emme löytäneet FFmpegiä syöttämästäsi tiedostopolusta. Huomioi, että myös FFprobe vaaditaan ja sen täytyy sijaita samassa kansiossa. Nämä komponentit jaetaan normaalisti samassa paketissa. Varmista, että syöttämäsi polku on oikein ja yritä uudestaan.", - "ErrorSavingTvProvider": "TV-palveluntarjoajaa lisättäessä tapahtui virhe. Varmista sen saatavuus ja yritä uudestaan.", - "ErrorPleaseSelectLineup": "Valitse kokoonpano ja yritä uudelleen. Jos kokoonpanoja ei ole saatavilla, tarkista, että käyttäjänimesi, salsanasi ja postinumerosi ovat oikein.", - "ErrorAddingListingsToSchedulesDirect": "Schedules Direct -tilin kokoonpanojen lisäyksen yhteydessä tapahtui virhe. Schedules Direct sallii vain rajallisen määrän kokoonpanoja tiliä kohden. Saattaa olla, että joudut kirjautumaan Schedules Direct -tilillesi ja poistamaan muita tietoja tililtäsi, ennen kuin jatkat.", - "EnableDecodingColorDepth10Vp9": "Salli 10-bittinen laitteistopurku (VP9)", - "EnableDecodingColorDepth10Hevc": "Salli 10-bittinen laitteistopurku (HEVC)", - "HeaderCastAndCrew": "Näyttelijät ja henkilökunta", + "FFmpegSavePathNotFound": "FFmpegiä ei löytynyt syötetystä tiedostosijainnista. Huomioi, että myös FFprobe vaaditaan ja sen täytyy sijaita samassa kansiossa. Nämä komponentit jaetaan normaalisti samassa paketissa. Varmista, että syöttämäsi sijainti on oikein ja yritä uudelleen.", + "ErrorSavingTvProvider": "Lisättäessä TV-palveluntarjoajaa tapahtui virhe. Varmista sen saatavuus ja yritä uudelleen.", + "ErrorPleaseSelectLineup": "Valitse kokoonpano ja yritä uudelleen. Jos kokoonpanoja ei ole saatavilla, tarkista, että käyttäjätunnuksesi, salasanasi ja postinumerosi ovat oikein.", + "ErrorAddingListingsToSchedulesDirect": "Lisättäessä kokoonpanoa Schedules Direct -tilillesi tapahtui virhe. Schedules Direct sallii rajallisesti kokoonpanoja tiliä kohden. Sinun on ehkä kirjauduttava Schedules Direct -tilillesi ja poistettava muita kokoonpanoja, ennen kuin jatkat.", + "EnableDecodingColorDepth10Vp9": "Käytä 10-bittistä laitteistopurkua (VP9)", + "EnableDecodingColorDepth10Hevc": "Käytä 10-bittistä laitteistopurkua (HEVC)", + "HeaderCastAndCrew": "Näyttelijät ja tuotantotiimi", "HeaderCancelSeries": "Peruuta sarja", "HeaderCancelRecording": "Peruuta tallennus", "HeaderBranding": "Brändäys", @@ -1053,14 +1053,14 @@ "LabelFriendlyName": "Käyttäjäystävällinen nimi:", "LabelFileOrUrl": "Tiedosto tai URL:", "LabelFailed": "Epäonnistui", - "LabelExtractChaptersDuringLibraryScan": "Tallenna kappalekuvat kirjastojen skannauksen yhteydessä", + "LabelExtractChaptersDuringLibraryScan": "Pura kappalekuvat kirjastojen skannauksen yhteydessä", "LabelBaseUrl": "Perus-URL:", "LabelEvent": "Tapahtuma:", "LabelEnableSingleImageInDidlLimit": "Rajoita yhteen upotettuun kuvaan", "LabelEnableHttps": "Ota HTTPS käyttöön", - "LabelEnableHardwareDecodingFor": "Ota rautapurku käyttöön:", + "LabelEnableHardwareDecodingFor": "Laitteistokiihdytyksen käyttö:", "LabelDownMixAudioScale": "Äänen tehostus alasmiksatessa:", - "LabelDateAddedBehavior": "Lisäyspäivämääräkäytös uudelle sisällölle:", + "LabelDateAddedBehavior": "Uudelle sisällölle käytettävä päiväys:", "LabelBlastMessageInterval": "Hereiläolo-viestin väli:", "LabelBindToLocalNetworkAddress": "Kiinnitä verkko-osoitteeseen:", "LabelAirsBeforeSeason": "Lähetetään ennen kautta:", @@ -1077,12 +1077,12 @@ "HeaderServerAddressSettings": "Palvelimen osoiteasetukset", "HeaderOnNow": "Nyt lähetyksessä", "HeaderLibraryOrder": "Kirjaston järjestys", - "HeaderLibraryAccess": "Kirjastopääsy", + "HeaderLibraryAccess": "Kirjastojen käyttöoikeudet", "HeaderKeepSeries": "Pidä sarja", "HeaderKeepRecording": "Jatka tallennusta", "HeaderInstantMix": "Välitön miksaus", "HeaderImageSettings": "Kuva-asetukset", - "HeaderImageOptions": "Kuvaoptiot", + "HeaderImageOptions": "Kuva-asetukset", "HeaderIdentificationHeader": "Tunnistusotsake", "HeaderHttpsSettings": "HTTPS-asetukset", "HeaderHttpHeaders": "HTTP-otsakkeet", @@ -1131,13 +1131,13 @@ "MessageSyncPlayGroupDoesNotExist": "Ryhmään liittyminen epäonnistui koska sitä ei ole olemassa.", "MessageSyncPlayPlaybackPermissionRequired": "Toistolupa tarvitaan.", "MessageSyncPlayNoGroupsAvailable": "Ei ryhmiä. Aloita ensin jokin toisto.", - "MessageSyncPlayGroupWait": "{0} puskuroi…", - "MessageSyncPlayUserLeft": "{0} poistui ryhmästä.", - "MessageSyncPlayUserJoined": "{0} liittyi ryhmään.", + "MessageSyncPlayGroupWait": "{0} puskuroi…", + "MessageSyncPlayUserLeft": "{0} poistui ryhmästä.", + "MessageSyncPlayUserJoined": "{0} liittyi ryhmään.", "MessageSyncPlayDisabled": "Ryhmäkatselu otettu pois käytöstä.", "MessageSyncPlayEnabled": "Ryhmäkatselu otettu käyttöön.", "MediaInfoBitDepth": "Bittisyvyys", - "LabelVaapiDevice": "VA API-laite:", + "LabelVaapiDevice": "VA-API-laite:", "LabelUserLoginAttemptsBeforeLockout": "Väärien kirjautumisyritysten määrä ennen tilin lukitsemista:", "LabelSyncPlayAccess": "Ryhmäkatselupääsy:", "LabelSyncPlayAccessNone": "Pois käytöstä tälle käyttäjälle", @@ -1154,7 +1154,7 @@ "LabelRequireHttps": "Vaadi HTTPS", "LabelRecord": "Tallenna:", "LabelPlayMethod": "Toistotapa:", - "LabelKodiMetadataEnablePathSubstitution": "Salli polkujen korvaaminen", + "LabelKodiMetadataEnablePathSubstitution": "Käytä tiedostosijaintien korvausta", "LabelKnownProxies": "Tunnetut välityspalvelimet:", "LabelKeepUpTo": "Pidä tallessa:", "HeaderRemoteAccessSettings": "Etäkäytön asetukset", @@ -1166,45 +1166,45 @@ "LabelModelName": "Mallinimi:", "LabelModelDescription": "Mallikuvaus:", "LabelModelNumber": "Mallinumero:", - "LabelInNetworkSignInWithEasyPassword": "Salli sisäverkkokirjautuminen PIN-koodilla", - "HeaderCodecProfileHelp": "Dekooderiprofiilit määrittävät laitteen rajoitukset, kun se toistaa erityyppisiä koodauksia. Jos rajoitus on voimassa, sisältö koodataan uudelleen, vaikka koodaustyypiksi on asetettu suora toisto.", + "LabelInNetworkSignInWithEasyPassword": "Salli kirjautuminen PIN-koodilla lähiverkossa", + "HeaderCodecProfileHelp": "Koodekkiprofiilit ilmaisevat laitteen rajoitukset toistettaessa tiettyjä koodekkeja. Jos rajoitusta sovelletaan, media transkoodataan, vaikka sen koodekki olisikin määritetty muuntamattomalle toistolle.", "Authorize": "Valtuuta", "EnableAutoCast": "Aseta oletukseksi", "ButtonActivate": "Aktivoi", - "HeaderSelectTranscodingPathHelp": "Selaa tai kirjoita polku, jota käytetään transkooditiedostoihin. Kansioon on oltava kirjoitusoikeus.", - "HeaderSelectServerCachePathHelp": "Selaa tai kirjoita palvelinten välimuistitiedostojen polku. Kansioon on oltava kirjoitusoikeus.", - "HeaderSelectMetadataPathHelp": "Selaa tai kirjoita metatiedoissa käytettävä tiedostopolku. Kansioon on oltava kirjoitusoikeus.", + "HeaderSelectTranscodingPathHelp": "Selaa tai syötä transkoodaustiedostoille käytettävä tiedostosijainti. Kansioon on oltava kirjoitusoikeus.", + "HeaderSelectServerCachePathHelp": "Selaa tai syötä palvelimen välimuistitiedostoille käytettävä tiedostosijainti. Kansioon on oltava kirjoitusoikeus.", + "HeaderSelectMetadataPathHelp": "Selaa tai syötä metatiedoille käytettävä tiedostosijainti. Kansioon on oltava kirjoitusoikeus.", "HeaderResponseProfileHelp": "Vasteprofiilit tarjoavat laitteeseen lähetettyjen tietojen mukauttamista tiettyjä medioita toistettaessa.", - "HeaderKodiMetadataHelp": "Ota NFO-metatiedot käyttöön tai poista se käytöstä muokkaamalla kirjastoa ja etsimällä metatietojen tallennusvaihtoehdot.", + "HeaderKodiMetadataHelp": "Ota NFO-metatiedot käyttöön tai poista ne käytöstä muokkaamalla kirjastokohtaisia metatietojen tallennusasetuksia.", "HeaderEnabledFieldsHelp": "Lukitse kenttä ja estä tietojen muuttuminen poistamalla valinta kentästä.", - "HeaderDirectPlayProfileHelp": "Lisää suoratoistoprofiileja osoittaaksesi, missä muodossa laite tukee suoratoistoa.", - "HeaderContainerProfileHelp": "Sisältöprofiilit ilmaisevat laitteen rajoitukset tiettyjä formaatteja toistettaessa. Jos rajoitusta sovelletaan, media koodataan uudelleen, vaikka muoto on määritetty suoratoistoa varten.", - "EnableQuickConnect": "Salli nopea yhteyden muodostaminen tälle palvelimelle", - "ButtonUseQuickConnect": "Käytä nopeaa yhdistämistä", + "HeaderDirectPlayProfileHelp": "Lisää muuntamattoman toiston profiileja osoittaaksesi, mitä muotoja laite voi toistaa suoraan.", + "HeaderContainerProfileHelp": "Sisältöprofiilit ilmaisevat laitteen rajoitukset toistettaessa tiettyjä muotoja. Jos rajoitusta sovelletaan, media transkoodataan, vaikka sen muoto olisikin määritetty muuntamattomalle toistolle.", + "EnableQuickConnect": "Salli Pikayhdistys tällä palvelimella", + "ButtonUseQuickConnect": "Käytä Pikayhdistystä", "ImportMissingEpisodesHelp": "Tiedot kadonneista jaksoista tuodaan tietokantaan ja näytetään kausina ja sarjoina. Tämä voi aiheuttaa huomattavasti pidempiä kirjastojen tarkistusajoja.", "ImportFavoriteChannelsHelp": "Ainoastaan kanavat, jotka on merkitty suosikkiksi viritinlaitteessa, tuodaan.", "HeaderTranscodingProfileHelp": "Lisää transkoodausprofiileja osoittamaan, mitä muotoja tulisi käyttää, kun transkoodaus on tarpeen.", - "LabelAlbumArtMaxResHelp": "Upnp: albumArtURI -ominaisuuden kautta näytetyn albumikuvan enimmäistarkkuus.", + "LabelAlbumArtMaxResHelp": "'upnp:albumArtURI'-tietueen välityksellä näytettävän albumitaiteen enimmäistarkkuus.", "KnownProxiesHelp": "Pilkulla eroteltu luettelo välityspalvelinten IP-osoitteista tai isäntänimistä, joita käytetään kun yhdistetään Jellyfin-palvelimeesi. Tämä vaaditaan X-Forwarded-For-otsikkojen oikeaan käyttöön. Tallennuksen jälkeen vaaditaan uudelleenkäynnistys.", "LabelInNetworkSignInWithEasyPasswordHelp": "Kirjaudu helppokäyttöisen PIN-koodin avulla sisään lähiverkon päätteisiin. Normaalia salasanaasi tarvitaan vain, kun kirjaudut sisään etäverkosta. Jos PIN-koodi jätetään tyhjäksi, et tarvitse salasanaa kotiverkossasi.", - "LabelDateAddedBehaviorHelp": "Jos metatietoarvo on olemassa, sitä käytetään aina näiden vaihtoehtojen sijaan.", + "LabelDateAddedBehaviorHelp": "Jos metatietoarvo löytyy, käytetään näiden valintojen sijaan sitä.", "LabelCurrentStatus": "Nykyinen tila:", - "LabelCachePathHelp": "Määritä välimuistitiedostojen, kuten kuvien, polku. Jätä tyhjäksi käyttääksesi palvelimen oletusarvoa.", - "LabelBlastMessageIntervalHelp": "Määrittää ajan sekunteina jokaisen \"Olen elossa\" -viestin välillä.", + "LabelCachePathHelp": "Määritä välimuistitiedostojen, kuten kuvien, tiedostosijainti. Jätä tyhjäksi käyttääksesi palvelimen oletusta.", + "LabelBlastMessageIntervalHelp": "Määritä hereilläpitoviestien välinen aika sekunteina.", "LabelBindToLocalNetworkAddressHelp": "Korvaa HTTP-palvelimen paikallinen IP-osoite. Jos se on tyhjä, palvelin linkitetään kaikkiin käytettävissä oleviin osoitteisiin. Tämän arvon muuttaminen edellyttää uudelleenkäynnistystä.", - "LabelDefaultUserHelp": "Määrittää käyttäjän kirjaston, joka näytetään liitetyissä laitteissa. Tätä asetusta voidaan muuttaa laitekohtaisesti laiteprofiilin avulla.", + "LabelDefaultUserHelp": "Määritä minkä käyttäjän kirjasto liitetyissä laitteissa näytetään. Asetus voidaan laiteprofiilien avulla ohittaa laitekohtaisesti.", "ClearQueue": "Tyhjennä jono", "ButtonPlayer": "Soitin", - "DeleteDevicesConfirmation": "Haluatko varmasti poistaa kaikki laitteet? Kaikki muut istunnot tullaan kirjaamaan ulos. Laitteet näytetään uudelleen kun käyttäjä kirjautuu seuraavan kerran sisään.", + "DeleteDevicesConfirmation": "Haluatko varmasti poistaa kaikki laitteet? Kaikki muut istunnot kirjataan ulos. Laitteet näytetään uudelleen kun käyttäjä kirjautuu seuraavan kerran sisään.", "DeleteAll": "Poista kaikki", "ButtonCast": "Näyttelijät", "LabelEnableIP6Help": "Ota IPv6-toiminnallisuus käyttöön.", "LabelEnableIP6": "Ota IPv6 käyttöön", "LabelEnableIP4Help": "Ota IPv4-toiminnallisuus käyttöön.", "LabelEnableIP4": "Ota IPv4 käyttöön", - "LabelEnableHttpsHelp": "Kuuntele määritettyä HTTPS-porttia. Kelvollinen sertifikaatti tulee määrittää toiminnon käyttämiseksi.", - "LabelEnableDlnaPlayToHelp": "Havaitse verkossasi olevat laitteet ja tarjoa mahdollisuutta etähallita niitä.", - "LabelEmbedAlbumArtDidlHelp": "Jotkin laitteet voivat käyttää tätä kansitaiteen hakemiseen. Toisilla laitteilla toisto ei välttämättä onnistu tätä valintaa käytettäessä.", + "LabelEnableHttpsHelp": "Kuuntele määritettyä HTTPS-porttia. Toiminto edellyttää myös kelvollisen varmenteen määritystä.", + "LabelEnableDlnaPlayToHelp": "Havaitse verkossasi olevat laitteet ja tarjoa niiden etähallintaa.", + "LabelEmbedAlbumArtDidlHelp": "Jotkin laitteet suosivat tätä menetelmää albumitaiteen noudossa. Joillakin muilla laitteilla toisto saattaa epäonnistua tätä valintaa käytettäessä.", "LabelDropSubtitleHere": "Pudota tekstitys tähän tai napsauta selataksesi.", "LabelCreateHttpPortMapHelp": "Salli automaattisen porttikartoituksen luoda sääntö HTTP-liikenteelle HTTPS-liikenteen lisäksi.", "LabelCreateHttpPortMap": "Ota automaattinen porttikartoitus käyttöön HTTP- ja HTTPS-liikenteelle.", @@ -1226,64 +1226,64 @@ "LabelAutomaticDiscovery": "Käytä automaattista tunnistusta:", "LabelAutoDiscoveryTracingHelp": "Kun käytössä, automaattisen tunnistuksen porttiin saapuvat paketit tallennetaan lokiin.", "LabelAutoDiscoveryTracing": "Käytä automaattisen tunnistuksen jäljitystä.", - "LabelAlbumArtPN": "Albumin kuvitus PN:", + "LabelAlbumArtPN": "Albumitaiteen PN:", "HeaderDebugging": "Virheenkorjaus ja jäljitys", "HeaderAutoDiscovery": "Verkon etsiminen", - "EnableTonemapping": "Ota sävykartoitus käyttöön", + "EnableTonemapping": "Käytä sävykartoitusta", "EnableBlurHashHelp": "Kuvat, joita ladataan vielä, näytetään yksilöllisellä paikkamerkillä.", "EnableBlurHash": "Ota sumennetut paikkamerkit käyttöön kuville", "AllowTonemappingHelp": "Sävykartoitus voi muuttaa videon dynaamisen alueen HDR: stä SDR: ksi säilyttäen samalla kuvan yksityiskohdat ja värit, jotka ovat erittäin tärkeitä tietoja alkuperäisen kohtauksen edustamiseksi. Toimii tällä hetkellä vain videoiden transkoodaamisessa upotetuilla HDR10- tai HLG-metatiedoilla. Jos toisto ei ole sujuvaa tai epäonnistuu, harkitse vastaavan laitteistodekooderin sammuttamista.", - "LabelffmpegPathHelp": "FFmpeg-sovellustiedoston tai FFmpeg-kansion polku.", - "LabelKodiMetadataEnablePathSubstitutionHelp": "Mahdollistaa kuvapolkujen korvaamisen palvelinpolun korvausasetuksilla.", + "LabelffmpegPathHelp": "FFmpeg-sovellustiedoston tai -kansion tiedostosijainti.", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Mahdollistaa kuvien tiedostosijaintien korvauksen palvelimen korvausasetuksien perusteella.", "ThumbCard": "Pienoiskortti", - "LabelKodiMetadataDateFormatHelp": "Kaikki NFO-tiedostojen päivämäärät jäsennetään tässä muodossa.", + "LabelKodiMetadataDateFormatHelp": "Kaikki NFO-tiedostojen päiväykset esitetään tässä muodossa.", "LabelIsForced": "Pakotettu", - "LabelImageFetchersHelp": "Ota käyttöön ja järjestä haluamasi lataukset tärkeysjärjestykseen.", + "LabelImageFetchersHelp": "Käytä ja järjestä kuvien lataajat haluamasi painotuksen perusteella. Alemman painotuksen lataajia käytetään vain puuttuvien tietojen täydennykseen.", "LabelIdentificationFieldHelp": "Regex-lauseke tai alaotsikko (kirjainten koolla ei välillä).", - "LabelIconMaxResHelp": "Suurin sallittu tarkkuus kuvakkeille, jotka näytetään upnp: icon-ominaisuuden kautta.", + "LabelIconMaxResHelp": "'upnp:icon'-tietueen välityksellä näytettävien kuvakkeiden enimmäistarkkuus.", "LabelTVHomeScreen": "TV-tilan aloitusnäyttö:", "LabelHomeScreenSectionValue": "Aloitusnäyttö-osio {0}:", "LabelHDHomerunPortRangeHelp": "Rajoittaa HD Homerunin UDP-porttialueen tähän arvoon. (Oletus on 1024 - 645535).", - "LabelExtractChaptersDuringLibraryScanHelp": "Luo kappalekuvia, kun videoita tuodaan kirjastoskannauksen aikana. Muussa tapauksessa ne puretaan luvun kuvien ajoitetun tehtävän aikana, jolloin kirjaston säännöllinen skannaus voidaan suorittaa nopeammin.", + "LabelExtractChaptersDuringLibraryScanHelp": "Pura kappalekuvat, kun videoita tuodaan kirjastojen kannauksen aikana. Muutoin ne puretaan kappalekuvien ajoitetun tehtävän aikana, jolloin kirjaston säännöllinen skannaus voidaan suorittaa nopeammin.", "LabelHDHomerunPortRange": "HDHomeRun -portin alue:", "LabelH265Crf": "H.265-koodauksen CRF:", - "LabelGroupMoviesIntoCollectionsHelp": "Kun näytetään elokuvaluetteloita, kokoelman elokuvat näytetään yhtenä ryhmiteltynä.", + "LabelGroupMoviesIntoCollectionsHelp": "Käytettäessä elokuvalistauksia, näytetään kokoelmat ryhmitellyt elokuvat sisältävinä kohteina.", "LabelEnableSSDPTracingHelp": "Ota käyttöön yksityiskohtainen SSDP-seurantaloki.
VAROITUS: Tämä aiheuttaa vakavaa suorituskyvyn heikkenemistä.", "LabelDownMixAudioScaleHelp": "Vahvista ääni sekoitettaessa. Arvo yksi säilyttää alkuperäisen äänenvoimakkuuden.", - "LabelAlbumArtHelp": "PN-merkintää käytetään albumikuvana upnp: albumArtURI -määritteessä dlna: profileID. Jotkin laitteet vaativat tietyn arvon kuvan koosta riippumatta.", + "LabelAlbumArtHelp": "PN-merkintää käytetään albumitaiteena 'upnp:albumArtURI'-määritteessä kohteessa 'dlna:profileID'. Jotkin laitteet vaativat tietyn arvon kuvan koosta riippumatta.", "Bwdif": "BWDIF", "LabelLineup": "Kokoonpano:", - "LabelKodiMetadataSaveImagePathsHelp": "Tämä on suositeltavaa, jos kuvatiedostojesi nimet eivät noudata Kodin ohjeistuksia.", - "LabelKodiMetadataEnableExtraThumbsHelp": "Ladattaessa mediakuvituksia, voidaan ne tallentaa sekä extrafanart, että extrathumbs -mediakuvituksina parasta Kodin ulkoasujen yhteensopivuutta varten.", - "LabelKodiMetadataEnableExtraThumbs": "Kopioi extrafanart-mediakuvitukset extrathumbs-mediakuvitusten kenttään", + "LabelKodiMetadataSaveImagePathsHelp": "Tämä on suositeltavaa, jos kuvatiedostojen nimet eivät noudata Kodin ohjeistuksia.", + "LabelKodiMetadataEnableExtraThumbsHelp": "Ladattaessa mediakuvituksia, voidaan ne tallentaa sekä extrafanart-, että extrathumbs-mediakuvituksina parasta Kodi-ulkoasujen yhteensopivuutta varten.", + "LabelKodiMetadataEnableExtraThumbs": "Kopioi extrafanart-mediakuvitukset extrathumbs-kenttään", "Framerate": "Virkistystaajuus", "DisablePlugin": "Poista käytöstä", "EnablePlugin": "Ota käyttöön", - "DirectPlayHelp": "Lähde on täysin yhteensopiva asiakassovelluksen kanssa ja istunto vastaanottaa tiedoston ilman muutoksia.", - "LabelMaxStreamingBitrateHelp": "Aseta maksimibittinopeus suoratoistolle.", + "DirectPlayHelp": "Lähdetiedosto on täysin yhteensopiva päätesovelluksen kanssa ja istunto vastaanottaa tiedoston ilman muuntoa.", + "LabelMaxStreamingBitrateHelp": "Määritä suoratoiston enimmäisbittinopeus.", "LabelMinAudiobookResumeHelp": "Kohteita pidetään toistamattomina, jos toisto keskeytetään ennen tätä aikaa.", - "LabelMaxStreamingBitrate": "Maksimi suoratoiston laatu:", + "LabelMaxStreamingBitrate": "Suoratoiston enimmäislaatu:", "MoreFromValue": "Lisää kohteesta {0}", - "LatestFromLibrary": "Viimeisimmät {0}", + "LatestFromLibrary": "Uudet '{0}'", "LabelVideoRange": "Videon alue:", "LabelVaapiDeviceHelp": "Tämä on renderöintinoodi, jota käytetään laitteistokiihdytykseen.", "LabelUserRemoteClientBitrateLimitHelp": "Ylikirjoita globaali arvo palvelimen toistoasetuksissa.", - "LabelUserMaxActiveSessions": "Yhtäaikaisten käyttäjäsessioden enimmäismäärä:", + "LabelUserMaxActiveSessions": "Yhtäaikaisten käyttäjäistuntojen enimmäismäärä:", "LabelUserLibraryHelp": "Valitse käyttäjäkirjasto joka näytetään laitteella. Jätä tyhjäksi käyttääksesi oletusasetusta.", "LabelUserAgent": "Käyttäjäagentti:", "LabelUDPPortRangeHelp": "Rajoita Jellyfin käyttämään tätä porttialuetta UDP yhteyksissä. (Oletus on 1024 - 645535)
Huomio: Jotkut toiminnot tarvitsevat tietyt portit jotka saattavat olla tämän alueen ulkopuolella.", "LabelUDPPortRange": "UDP-tiedonsiirron alue:", "LabelTriggerType": "Liipasintyyppi:", - "LabelTranscodingTempPathHelp": "Määritä omavalintainen polku transkoodatuille tiedostoille jotka toimitetaan asiakasohjelmille. Jätä tyhjäksi käyttääksesi palvelimen oletusta.", + "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.", "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.", "LabelTonemappingPeak": "Sävykartoituksen huippu:", "LabelTonemappingParamHelp": "Säädä sävykartoitusalgoritmia. Suositeltu ja oletusarvo on NaN. Tyypillisesti jätetään tyhjäksi.", - "LabelTonemappingParam": "Sävykartoitus parametri:", + "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.", - "LabelTonemappingDesat": "Sävykartoitus desaturaatio:", + "LabelTonemappingDesat": "Sävykartoituksen desaturaatio:", "LabelTonemappingAlgorithm": "Valitse käytettävä sävykartoitusalgoritmi:", "LabelSyncPlayTimeSyncOffset": "Ajan säätö:", "LabelSyncPlayTimeSyncDevice": "Synkronoi aika:", @@ -1304,16 +1304,16 @@ "LabelSonyAggregationFlags": "Sony aggregaatio tunnisteet:", "LabelSlowResponseTime": "Aika millisekunneissa (ms) jonka jälkeen vastaus katsotaan hitaaksi:", "LabelSlowResponseEnabled": "Tallenna varoitus logeihin jos palvelimen vastaus oli hidas", - "LabelSkipIfGraphicalSubsPresentHelp": "Tekstitysten tekstiversion säilyttäminen johtaa sujuvampaan mediatoistoon ja vähentää todennäköisyyttä transkoodauksen tarpeeseen.", - "SimultaneousConnectionLimitHelp": "Suurin sallittu määrä samanaikaisia suoratoistoja. Arvo 0 poistaa rajoituksen käytöstä.", + "LabelSkipIfGraphicalSubsPresentHelp": "Tekstitysten tekstiversion säilytys mahdollistaa sujuvamman mediatoiston ja vähentää transkoodauksen todennäköisyyttä.", + "SimultaneousConnectionLimitHelp": "Samanaikaisten suoratoistojen enimmäismäärä. Arvo 0 poistaa rajoituksen käytöstä.", "EnableGamepadHelp": "Kuuntele syötteitä kiinnitetyistä peliohjaimista.", "LabelEnableGamepad": "Ota käyttöön peliohjain", "Controls": "Ohjaimet", - "AllowVppTonemappingHelp": "Täysi laitteistokiihdytetty sävykartoitus käyttämättä OpenCL suodattimia. Tällä hetkellä toimii vain kun transkoodataan videoita, joissa on sisällytetty HDR10 metadata.", - "EnableVppTonemapping": "Ota käyttöön VPP sävykartoitus", - "LabelSkipIfAudioTrackPresentHelp": "Jätä tämä ruksaamatta varmistaaksesi, että kaikilla videoilla on tekstitykset, riippumatta äänen kielestä.", + "AllowVppTonemappingHelp": "Täysi Intel-ajuriin pohjautuva sävykartoitus. Toimii toistaiseksi vain teittyjen laitteiden ja HDR10-videoiden kanssa. Tämä on muihin OpenCL-toteutuksiin verrattuna ensisijainen.", + "EnableVppTonemapping": "Käytä VPP-sävykartoitusta", + "LabelSkipIfAudioTrackPresentHelp": "Poista tämä valinta varmistaaksesi, että kaikilla videoilla on äänen kielestä riippumatta tekstitykset.", "LabelSimultaneousConnectionLimit": "Yhtäaikaisten suoratoistojen raja:", - "LabelSeriesRecordingPath": "Sarjan tallennuspolku:", + "LabelSeriesRecordingPath": "Sarjojen tallennussijainti:", "LabelSelectFolderGroupsHelp": "Valitsemattomat kansiot näytetään sellaisenaan omassa näkymässään.", "LabelSelectFolderGroups": "Ryhmitä sisältö automaattisesti näistä kansioista näkymiin kuten Elokuvat, Musiikki ja TV:", "LabelRequireHttpsHelp": "Jos valittu, niin palvelin uudelleenohjaa kaikki HTTP-pyynnöt HTTPS:ään. Tällä ei ole vaikutusta, jos palvelin ei kuuntele HTTPS-pyyntöjä.", @@ -1324,8 +1324,8 @@ "LabelQuickConnectCode": "Pikayhdistyskoodi:", "LabelPublishedServerUriHelp": "Ohita Jellyfinin käyttämä URI perustuen käyttöliittymän tai asiakasohjelman IP-osoitteeseen.", "LabelPublishedServerUri": "Julkaistut palvelimen URIt:", - "LabelPostProcessorArgumentsHelp": "Käytä {path} osoittaessasi nauhoitustiedoston osoitepolkuun.", - "LabelOpenclDeviceHelp": "Tämä on OpenCL-laite jota käytetetään sävysovitukseen. Pisteen vasemmalla puolella on alustanumero ja oikealla alustan laitenumero. Oletusarvo on 0.0. Vaatii ffmpegin ohjelmatiedoston, jossa on OpenCL laitteistokiihdytys.", + "LabelPostProcessorArgumentsHelp": "Käytä sijaintia {path} tallenteen tiedostosijaintina.", + "LabelOpenclDeviceHelp": "Tämä on savykartoitukseen käytettävä OpenCL-laite. Pisteen vasemmalla puolella on alustanumero ja oikealla alustan laitenumero. Oletusarvo on 0.0. Vaatii OpenCL-laitteistokiihdytyksen sisältävän FFmpeg-ohjelmatiedoston.", "LabelOpenclDevice": "OpenCL-laite:", "LabelNumberOfGuideDaysHelp": "Useampien päivien ohjelmaoppaan lataaminen mahdollistaa ajastukset pitemmälle tulevaisuuteen ja useampien listausten katsomisen, mutta latauksen kesto pitenee. Automaattinen asetus valitsee kanavien lukumäärän perusteella.", "LabelNumberOfGuideDays": "Päivien lukumäärä jolta ohjelmaoppaan tiedot ladataan:", @@ -1333,32 +1333,32 @@ "LabelMoviePrefix": "Elokuvan etuliite:", "LabelMonitorUsers": "Monitoroi toimintaa:", "LabelMinAudiobookResume": "Äänikirjan toiston jatkamisen vähimmäismäärä minuutteina:", - "LabelMaxMuxingQueueSizeHelp": "Suurin määrä paketteja, jotka voidaan puskuroida odottaessa suoratoiston alustusta. Yritä nostaa tätä arvoa jos vielä kohtaat \"Too many packets buffered for output stream\" -virheen ffmpeg logeissa. Suositusarvo on 2048.", - "LabelMaxMuxingQueueSize": "Muxausjonon maksimipituus:", + "LabelMaxMuxingQueueSizeHelp": "Suoratoiston alustusta odotettaessa puskuroitavien pakettien enimmäismäärä. Kokeile arovon korotusta, jos havaitset \"Too many packets buffered for output stream\" -virheen FFmpeg-lokissa. Suositeltava arvo on 2048.", + "LabelMaxMuxingQueueSize": "Muxausjonon enimmäispituus:", "LabelMatchType": "Täsmäystyyppi:", - "LabelKodiMetadataUserHelp": "Tallenna käyttäjän katselutiedot NFO-tiedostoihin muita sovelluksia varten.", - "LabelKodiMetadataUser": "Tallenna käyttäjän katselutiedot NFO-tiedostoihin näille:", + "LabelKodiMetadataUserHelp": "Tallenna NFO-tiedostoihin katselutiedot, joita muut sovellukset voivat hyödyntää.", + "LabelKodiMetadataUser": "Käyttäjä, jonka katselutiedot tallennetaan NFO-tiedostoihin:", "HeaderContinueReading": "Jatka lukemista", - "OptionRequirePerfectSubtitleMatchHelp": "Täydellisen täsmäämisen vaatiminen suodattaa tulokset sisältämään vain ne tekstitykset, jotka on testattu ja todettu toimimaan täsmälleen samalla tiedostolla. Tämän poistaminen käytöstä lisää tekstityksen lataamisen todennäköisyyttä, mutta samalla lisää virheitä tekstityksissä ja niiden ajoituksessa.", - "OptionRequirePerfectSubtitleMatch": "Lataa tekstitykset vain, jos ne täsmäävät täydellisesti videotiedostoihin", + "OptionRequirePerfectSubtitleMatchHelp": "Täydellisen parin edellyttäminen suodattaa tulokset sisältämään vain ne tekstitykset, jotka on testattu ja vahvistettu juuri kyseiselle videotiedostolle. Tämän käytöstä poisto lisää tekstityksen löytymisen todennäköisyyttä, mutta kasvattaa myös virheellisesti ajoitettujen tai väärien tekstitysten todennäköisyyttä.", + "OptionRequirePerfectSubtitleMatch": "Lataa vain videotiedostoille täydellisesti sopivat tekstitykset", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Tämä tarvitaan joillekkin laitteille, jotka eivät hae aikajanalla kovin hyvin.", "OptionReportByteRangeSeekingWhenTranscoding": "Raportoi, että palvelin tukee tavuhakua transkoodatessa", "OptionPlainVideoItemsHelp": "Kaikki videot esitetään DIDL:ssä muodossa \"object.item.videoItem\" tarkemman muodon (kuten \"object.item.videoItem.movie\") sijaan.", "OptionPlainVideoItems": "Näytä kaikki videot tavallisina videokohteina", - "OptionPlainStorageFoldersHelp": "Kaikki kansiot esitetään DIDL:ssä muodossa \"object.container.storageFolder\" tarkemman muodon (\"object.container.person.musicArtist\") sijaan.", + "OptionPlainStorageFoldersHelp": "Kaikki kansiot esitetään DIDL:ssä muodossa 'object.container.storageFolder' tarkemman muodon ('object.container.person.musicArtist') sijaan.", "OptionPlainStorageFolders": "Näytä kaikki kansiot tavallisina tiedostokansioina", "OptionOnInterval": "Väliajoin", "OptionMaxActiveSessionsHelp": "Arvon 0 asettaminen poistaa ominaisuuden käytöstä.", - "OptionMaxActiveSessions": "Asettaa yhtäaikaisten käyttäjäsessioiden enimmäismäärän.", + "OptionMaxActiveSessions": "Määritä yhtäaikaisten käyttäjäistuntojen enimmäismäärä.", "OptionLoginAttemptsBeforeLockoutHelp": "Arvon 0 asettaminen tarkoittaa oletusarvon perimisen (kolme yritystä normaalikäyttäjille ja viisi ylläpitäjille). Arvon -1 asettaminen poistaa ominaisuuden käytöstä.", - "OptionLoginAttemptsBeforeLockout": "Määrittää kuinka monta virheellistä kirjautumisyritystä sallitaan, ennen kuin lukitseminen tapahtuu.", + "OptionLoginAttemptsBeforeLockout": "Määritä montako virheellistä kirjautumisyritystä sallitaan, ennen käyttäjän estoa.", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Nämä pyynnöt käsitellään mutta tavualuepyynnöt sivutetaan.", "OptionHideUserFromLoginHelp": "Hyödyllinen yksityisille ja piilotetuille ylläpitokäyttäjille. Käyttäjän pitää kirjautua käsin kirjoittamalla käyttäjänimensä ja salasanansa.", "OptionEstimateContentLength": "Arvioi sisällön pituus transkoodatessa", "OptionEquals": "Yhtä suuri kuin", - "OptionEnableM2tsModeHelp": "Ota käyttöön m2ts -tila kun enkoodataan muotoon mpegts.", - "OptionEnableExternalContentInSuggestionsHelp": "Salli internetistä haettujen trailerien ja suorien TV-ohjelmien näyttäminen sisältöehdotuksissa.", - "OptionDisplayFolderViewHelp": "Näytä kansiot muiden mediakirjastojesi ohessa. Tämä on hyödyllinen silloin kun haluat käyttää tavallista kansionäkymää.", + "OptionEnableM2tsModeHelp": "Ota M2TS-tila käyttöön enkoodattaessa MPEG-TS-muotoon.", + "OptionEnableExternalContentInSuggestionsHelp": "Salli sisältöehdotuksissa Internetistä noudetut trailerit ja suorat televisiolähetykset.", + "OptionDisplayFolderViewHelp": "Näyttää kansiot mediakirjastojen yhteydessä. Tämä on hyödyllistä, jos haluat käyttää puhdasta kansionäkymää.", "OptionDisplayFolderView": "Näytä kansionäkymä tavallisten mediakansioiden näyttämiseen", "OptionDisableUserHelp": "Palvelin ei tule sallimaan yhteyksiä tältä käyttäjältä. Olemassa olevat yhteydet pysäytetään.", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", @@ -1368,34 +1368,34 @@ "OptionAllowContentDownload": "Salli median lataaminen", "NoNewDevicesFound": "Uusia laitteita ei löytynyt. Lisätäksesi uuden virittimen, sulje tämä viesti ja lisää laitteen tiedot käsin.", "MillisecondsUnit": "ms", - "MetadataSettingChangeHelp": "Metadata-asetuksien muuttaminen vaikuttaa vain uuteen sisältöön. Päivittääksesi olemassa olevan sisällön, avaa tietonäkymä ja paina Päivitä-nappia. Vaihtoehtoisesti suorita massapäivitys Metadatan hallintatyökalulla.", - "MessageUnsetContentHelp": "Sisältö näytetään tavallisina kansioina. Parhaat tulokset saat kun käytät metadatan hallintatyökalua asettaaksesi alikansioille sisältötyypin.", + "MetadataSettingChangeHelp": "Metatietoasetusten muutokset vaikuttavat vain uuteen sisältöön. Päivittääksesi olemassa olevan sisällön, avaa tietonäkymä ja paina 'Päivitä' tai suorita massapäivitys Metatietojen hallintatyökalulla.", + "MessageUnsetContentHelp": "Sisältö näytetään tavallisina kansioina. Parhaan lopputuloksen saat määrittämällä alikansioiden sisältötyypin metatietojen hallintatyökalulla.", "MessageUnableToConnectToServer": "Valittuun palvelimeen yhdistäminen epäonnistui. Tarkista, että se on päällä ja yritä uudestaan.", "MessageSyncPlayIsDisabled": "Lupa vaadittu SyncPlayn käyttöön.", "MessageSent": "Viesti lähetetty.", - "MessagePluginInstallError": "Virhe asennettaessa laajennusta.", + "MessagePluginInstallError": "Laajennusta asennettaessa tapahtui virhe.", "MessagePluginInstalled": "Laajennus onnistuneesti asennettu. Palvelin on käynnistettävä uudestaan, jotta muutokset tulevat voimaan.", "MessagePluginInstallDisclaimer": "Yhteisön rakentamat laajennukset ovat mainio tapa parantaa kokemustasi lisäominaisuuksien kanssa. Ota huomioon, että ne voivat vaikuttaa palvelimeen lisäämällä taustaprosessoinnin tarvetta ja pidentämällä kirjastojen skannausta, sekä aiheuttaa järjestelmän epävakautta.", - "MessagePlayAccessRestricted": "Tämän sisällön toistaminen on rajoitettu. Lisätietoja palvelimen ylläpitäjältä.", + "MessagePlayAccessRestricted": "Tämän sisällön toistoa on rajoitettu. Lisätietoja saat palvelimen ylläpitäjältä.", "MessagePasswordResetForUsers": "Seuraavien käyttäjien salasana on nollattu. He voivat nyt kirjautua pin-koodeilla, joita käytettiin nollaukseen.", "MessageNoTrailersFound": "Asenna trailerit-kanava parantaaksesi elokuvakokemusta lisäämällä internet-trailereiden kirjasto.", "MessageNoRepositories": "Ei ohjelmavarastoja.", "MessageNoNextUpItems": "Ei tuloksia. Aloita sarjojesi katselu!", "MessageNoMovieSuggestionsAvailable": "Ei elokuvasuosituksia saatavilla. Kun olet katsonut ja jättänyt arvosteluja elokuville, niin tule takaisin nähdäksesi suosituksia.", "MessageNoGenresAvailable": "Ota käyttöön metadatan tarjoajia hakeaksesi lajityypit internetistä.", - "MessageNoCollectionsAvailable": "Kokoelmat antavat sinun ryhmitellä elokuvia, sarjoja tai albumeja. Klikkaa + nappia aloittaaksesi.", + "MessageNoCollectionsAvailable": "Kokoelmien avulla voit nauttia elokuvien, sarjojen ja albumien mukautetuista ryhmityksistä. Luo kokoelmia painamalla '+'-painiketta.", "MessageLeaveEmptyToInherit": "Jätä tyhjäksi periäksesi asetukset ylemmän tason kohteesta tai globaalista oletusarvosta.", - "MessageGetInstalledPluginsError": "Virhe haettaessa listaa asennetuista liitännäisistä.", + "MessageGetInstalledPluginsError": "Asennettujen liitännäisten listan noudossa tapahtui virhe.", "MessageForgotPasswordInNetworkRequired": "Ole hyvä ja yritä uudestaan kotiverkossasi aloittaaksesi salasanan palautuksen.", "MessageForgotPasswordFileCreated": "Seuraava tiedosto on luotu palvelimellesi, joka sisältää ohjeet jatkamiseen:", - "MessageFileReadError": "Virhe luettaessa tiedostoa. Ole hyvä ja kokeile uudestaan.", + "MessageFileReadError": "Luettaessa tiedostoa tapahtui virhe. Yritä uudelleen.", "MessageDirectoryPickerLinuxInstruction": "Linux-järjestelmille Arch linux, CentOS, Debian, Fedora, openSUSE tai Ubuntu, sinun on annettava palvelukäyttäjälle vähintään lukuoikeudet tallennustiloihisi.", - "MessageDirectoryPickerBSDInstruction": "BSD-järjestelmillä saatat tarvita konfigurointia FreeNAS Jailin tallennustilalle, että Jellyfin saa pääsyn mediaasi.", + "MessageDirectoryPickerBSDInstruction": "BSD-järjestelmillä saatat joutua määrittämään 'FreeNAS Jail' -tallennustilasi asetukset, jotta Jellyfin pääsee mediaasi.", "MessageDeleteTaskTrigger": "Oletko varma, että haluat poistaa tämän tehtäväliipasimen?", "MessageCreateAccountAt": "Luo tili kohteeseen {0}", - "MessageChangeRecordingPath": "Nauhoituskansion vaihtaminen ei siirrä olemassa olevia tallenteita vanhasta sijainnista uuteen. Halutessasi ne pitää siirtää käsin.", + "MessageChangeRecordingPath": "Tallennuskansion muutos ei siirrä olemassa olevia tallenteita vanhasta sijainnista uuteen. Jos haluat siirtää ne, on se tehtvävä itse.", "MessageAddRepository": "Jos tahdot lisätä ohjelmavaraston, klikkaa nappia otsikon vieressä ja täytä tarvittavat tiedot.", - "MediaIsBeingConverted": "Mediaa muunnetaan muotoon, joka on yhteensopiva mediaa toistavan laitteen kanssa.", + "MediaIsBeingConverted": "Mediaa muunnetaan toistavan laitteen kanssa yhteensopivaan muotoon.", "MediaInfoVideoRange": "Videoalue", "MediaInfoColorTransfer": "Värinsiirto", "MediaInfoColorSpace": "Väriavaruus", @@ -1411,11 +1411,11 @@ "Arranger": "Järjestäjä", "AgeValue": "({0} vuotta vanha)", "LabelOriginalName": "Alkuperäinen nimi:", - "LabelAutomaticallyAddToCollection": "Lisää automaattisesti kokoelmaan", + "LabelAutomaticallyAddToCollection": "Lisää kokoelmaan automaattisesti", "HeaderSyncPlayPlaybackSettings": "Toisto", "HeaderSyncPlaySettings": "SyncPlayn asetukset", "Engineer": "Ääniteknikko", - "LabelDisableCustomCss": "Poista käytöstä palvelimen tarjoama mukautettu CSS-teema.", + "LabelDisableCustomCss": "Poista palvelimen toimittamat mukautetut CSS-tyylimääritykset käytöstä.", "DisableCustomCss": "Poista käytöstä palvelimen mukautettu CSS-tyyli", "Console": "Konsoli", "Conductor": "Kapellimestari", @@ -1424,7 +1424,48 @@ "Cursive": "Kursivointi", "WizardCompleted": "Siinä kaikki tällä erää tarvittava. Jellyfin on aloittanut kirjastosi tietojen keräyksen. Tutustu sovelluksiimme ja paina lopuksi Valmis avataksesi hallintapaneelin.", "HeaderSyncPlayTimeSyncSettings": "Ajan synkronointi", - "LabelMaxDaysForNextUpHelp": "Määritä maksimimäärä päiviä jonka ohjelman tulisi pysyä \"Seuraavaksi\"-listassa katsomatta sitä.", - "LabelMaxDaysForNextUp": "Päivien maksimimäärä \"Seuraavaksi\"-listassa:", - "LabelHardwareEncoding": "Laitteistoenkoodaus:" + "LabelMaxDaysForNextUpHelp": "Määritä enimmäisaika päivinä, jonka katsomaton sarja pysyy 'Seuraavaksi'-osiossa.", + "LabelMaxDaysForNextUp": "'Seuraavaksi'-osion päivien enimmäismäärä:", + "LabelHardwareEncoding": "Laitteistoenkoodaus:", + "SaveSubtitlesIntoMediaFoldersHelp": "Tekstitykset tallennetaan videotiedostojen kansioihin, jolloin niitä on helppo käsitellä.", + "PerfectMatch": "Täydellinen pari", + "SubtitleDownloadersHelp": "Käytä ja järjestä tekstitysten lataajat haluamasi painotuksen perusteella. Alemman painotuksen lataajia käytetään vain puuttuvien tietojen täydennykseen.", + "PreferEmbeddedTitlesOverFileNamesHelp": "Määritä käytettävä näyttönimi, kun metatietoja ei ole saatavilla Internetistä tai paikallisesti.", + "ServerUpdateNeeded": "Palvelin on päivitettävää. Lataa uusin versio osoitteesta {0}", + "UseEpisodeImagesInNextUpHelp": "'Seuraavaksi ja 'Jatka katselua' -osioissa käytetään pienoiskuvina sarjojen ensisijaisten kuvien/julisteiden sijaan jaksojen kuvia.", + "UseEpisodeImagesInNextUp": "Käytä 'Seuraavaksi' ja 'Jatka katselua' -osioissa jaksojen kuvia", + "QuickConnectNotActive": "Pikayhdistys ei ole tällä palvelimella käytössä", + "QuickConnectNotAvailable": "Pyydä palvelimesi ylläpitoa ottamaan Pikayhdistys käyttöön", + "QuickConnectInvalidCode": "Virheellinen Pikayhdistyskoodi", + "QuickConnectDescription": "Kirjautuaksesi Pikayhdistyksellä, valitse 'Pikayhdistys'-painike laitteelta, josta yrität kirjautua ja syötä alla oleva koodi.", + "QuickConnectDeactivated": "Pikayhdistys katkaistiin ennen kirjautumispyynnön hyväksyntää", + "QuickConnectAuthorizeSuccess": "Pyyntö hyväksytty", + "QuickConnectAuthorizeFail": "Tuntematon Pikayhdistyskoodi", + "QuickConnectAuthorizeCode": "Kirjaudu syöttämällä koodi {0}", + "QuickConnectActivationSuccessful": "Käyttöönotto onnistui", + "QuickConnect": "Pikayhdistys", + "UseDoubleRateDeinterlacing": "Kaksinkertaista kuvanopeus lomituksen poiston yhteydessä", + "UseDoubleRateDeinterlacingHelp": "Asetus käyttää lomituksenpoistoon kenttätaajuutta, jota kutsutaan usein bob-lomituksenpoistoksi. Tämä kaksinkertaistaa videon kuvanopeuden tarjoten lomitetun videon televisiosta katselua vastaavan täyden liikkeen.", + "TypeOptionPluralBoxSet": "Kokoelmat", + "LabelAutomaticallyAddToCollectionHelp": "Kun ainakin kahdelle elokuvalle on ilmoitettu sama kokoelma, lisätään ne kokoelmaan automaattisesti.", + "OptionSaveMetadataAsHiddenHelp": "Tämän muutos vaikuttaa vain tuleviin metatietojen tallennuksiin. Olemassa olevat metatietotiedostot päivitetään, kun palvelin tallentaa ne seuraavan kerran.", + "SpecialFeatures": "Lisämateriaalit", + "LabelFallbackFontPathHelp": "Määritä ASS/SSA-tekstitysten varmistusfonttien tiedostosijainti. Suurin sallittu fontin kokonaiskoko on 20 Mt. Kevyet verkkoystävälliset fontit, kuten woff2, ovat suositeltuja.", + "HeaderSelectFallbackFontPathHelp": "Selaa tai syötä ASS/SSA-tekstitysten renderöintiin käytettävien varmistusfonttien tiedostosijainti.", + "PathNotFound": "Tiedostosijaintia ei löydy. Varmista, että se on oikein ja yritä uudelleen.", + "XmlTvPathHelp": "XMLTV-tiedoston sijainti. Jellyfin lukee tiedoston ajoittain muutosten varalta. Olet itse vastuussa tiedoston luonnista ja päivityksestä.", + "LabelFallbackFontPath": "Varmistusfonttien kansion sijainti:", + "HeaderSelectFallbackFontPath": "Valitse varmistusfonttien kansion sijainti", + "MessagePlaybackError": "Toistettaessa tiedostoa Google Cast -vastaanottimessasi tapahtui virhe.", + "DirectPlayError": "Aloitettaessa muuntamatonta toistoa tapahtui virhe", + "LabelAllowedAudioChannels": "Äänikanavien enimmäismäärä", + "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "Toiston vähimmäisviive (millisekunteina), jonka jälkeen SpeedToSync pyrkii korjaamaan toistokohdan.", + "LabelSyncPlaySettingsMinDelaySkipToSync": "SkipToSync-vähimmäisviive:", + "ViewAlbumArtist": "Näytä albumin esittäjä", + "TypeOptionPluralMusicArtist": "Musiikin esittäjä", + "OtherArtist": "Muu esittäjä", + "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "Toiston enimmäisviive (millisekunteina), jonka jälkeen käytetään SpeedToSyncin sijaan SkipToSyncia.", + "LabelSyncPlaySettingsMaxDelaySpeedToSync": "SpeedToSync-enimmäisviive:", + "LabelSyncPlaySettingsMinDelaySkipToSyncHelp": "Toiston vähimmäisviive (millisekunteina), jonka jälkeen SpeedToSync pyrkii korjaamaan toistokohdan.", + "LabelSyncPlaySettingsMinDelaySpeedToSync": "SkipToSync-vähimmäisviive:" } From 75f171e7ae679712f6e18350beeb10329d74197a Mon Sep 17 00:00:00 2001 From: Gabriel Jovan Date: Tue, 8 Feb 2022 15:43:39 +0000 Subject: [PATCH 102/389] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/id.json b/src/strings/id.json index 36be6c2643..a9370010b9 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -174,7 +174,7 @@ "EditMetadata": "Sunting metadata", "EditImages": "Edit Gambar", "Edit": "Sunting", - "EasyPasswordHelp": "Kode PIN mudah Anda digunakan untuk akses offline di klien yang didukung dan juga dapat digunakan untuk masuk ke jaringan dengan mudah.", + "EasyPasswordHelp": "Kode PIN Mudah Anda akan digunakan untuk akses offline di klien terdukung dan untuk masuk ke jaringan dengan mudah.", "DropShadow": "Drop Shadow", "DrmChannelsNotImported": "Saluran dengan DRM tidak akan diimpor.", "DownloadsValue": "{0} unduhan", @@ -1121,5 +1121,7 @@ "Conductor": "Konduktor", "Casual": "Kasual", "Arranger": "Penyusun", - "AgeValue": "({0} tahun)" + "AgeValue": "({0} tahun)", + "DisablePlugin": "Matikan", + "EnablePlugin": "Nyalakan" } From 6ba09c547950d9e70aece8a4a54ff44fa454b934 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 8 Feb 2022 18:01:02 +0000 Subject: [PATCH 103/389] Update dependency marked to 4.0.10 [SECURITY] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 09826e7297..1828acb5c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7976,9 +7976,9 @@ "dev": true }, "marked": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.8.tgz", - "integrity": "sha512-dkpJMIlJpc833hbjjg8jraw1t51e/eKDoG8TFOgc5O0Z77zaYKigYekTDop5AplRoKFGIaoazhYEhGkMtU3IeA==" + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", + "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==" }, "marks-pane": { "version": "1.0.9", diff --git a/package.json b/package.json index 19bbd668e9..c2fc529947 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "libarchive.js": "1.3.0", "libass-wasm": "git+https://github.com/jellyfin/JavascriptSubtitlesOctopus.git#4.0.0-jf-4", "lodash-es": "4.17.21", - "marked": "4.0.8", + "marked": "4.0.10", "material-design-icons-iconfont": "6.1.1", "native-promise-only": "0.8.1", "page": "1.11.6", From f068751f4b4345ca1168580a9d43bf77706fc2aa Mon Sep 17 00:00:00 2001 From: Ammer Ashraf Emon Date: Tue, 8 Feb 2022 17:33:49 +0000 Subject: [PATCH 104/389] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index 478d503cc4..ef40af1f8e 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -130,5 +130,6 @@ "Depressed": "অবনমিত", "DeleteUserConfirmation": "আপনি কি নিশ্চিত যে আপনি এই ব্যবহারকারীকে মুছতে চান?", "DeleteUser": "ব্যবহারকারী মুছুন", - "DeleteMedia": "মিডিয়া মুছুন" + "DeleteMedia": "মিডিয়া মুছুন", + "AllowedRemoteAddressesHelp": "নেটওয়ার্কের জন্য যেই আইপি এড্রেসগুলো অথবা আইপি/নেটমাস্ক গুলো কমা (,) দিয়ে আলাদা করা শুধু সেই এন্ট্রিগুলো রিমোটলি কানেক্ট হতে পারবে। যদি খালি রাখা হয় তাহলে সব আইপি থেকে কানেক্ট হতে পারবে।" } From 301fa55b5d09c1edad16f6ef10c90ce15f4c4fe1 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 8 Feb 2022 20:48:46 +0000 Subject: [PATCH 105/389] Update dependency browserslist to 4.16.5 [SECURITY] --- package-lock.json | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1828acb5c7..f73e567b08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3725,16 +3725,30 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.16.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.5.tgz", + "integrity": "sha512-C2HAjrM1AI/djrpAUU/tr4pml1DqLIzJKSLDBXBrNErl9ZCCTXdhwxdJjYc16953+mBWf7Lw+uUJgpgb8cN71A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001214", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.719", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^1.1.71" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30001309", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz", + "integrity": "sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.67", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.67.tgz", + "integrity": "sha512-A6a2jEPLueEDfb7kvh7/E94RKKnIb01qL+4I7RFxtajmo+G9F5Ei7HgY5PRbQ4RDrh6DGDW66P0hD5XI2nRAcg==", + "dev": true + } } }, "buffer-from": { From 64b3fc80dcbaa93c080b5ca7b10aac8c3a74ed35 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 9 Feb 2022 01:16:03 -0500 Subject: [PATCH 106/389] Fix pagination on live tv pages --- src/controllers/list.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/controllers/list.js b/src/controllers/list.js index b2be0bbd00..ceb12e7c34 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -15,12 +15,12 @@ import { appRouter } from '../components/appRouter'; /* eslint-disable indent */ - function getInitialLiveTvQuery(instance, params) { + function getInitialLiveTvQuery(instance, params, startIndex = 0, limit = 300) { const query = { UserId: ServerConnections.getApiClient(params.serverId).getCurrentUserId(), - StartIndex: 0, + StartIndex: startIndex, Fields: 'ChannelInfo,PrimaryImageAspectRatio', - Limit: 300 + Limit: limit }; if (params.type === 'Recordings') { @@ -244,15 +244,15 @@ import { appRouter } from '../components/appRouter'; instance.queryRecursive = false; if (params.type === 'Recordings') { - return apiClient.getLiveTvRecordings(getInitialLiveTvQuery(instance, params)); + return apiClient.getLiveTvRecordings(getInitialLiveTvQuery(instance, params, startIndex, limit)); } if (params.type === 'Programs') { if (params.IsAiring === 'true') { - return apiClient.getLiveTvRecommendedPrograms(getInitialLiveTvQuery(instance, params)); + return apiClient.getLiveTvRecommendedPrograms(getInitialLiveTvQuery(instance, params, startIndex, limit)); } - return apiClient.getLiveTvPrograms(getInitialLiveTvQuery(instance, params)); + return apiClient.getLiveTvPrograms(getInitialLiveTvQuery(instance, params, startIndex, limit)); } if (params.type === 'nextup') { From b1a45ffa4d2e3b988cef8ab216b984037e509ec2 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Wed, 9 Feb 2022 05:41:03 +0000 Subject: [PATCH 107/389] 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 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index bafe6eecec..406a251523 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1343,13 +1343,13 @@ "MessageNoRepositories": "暂无存储库。", "LabelSyncPlayAccess": "同步播放访问控制:", "MediaInfoVideoRange": "动态范围", - "MediaInfoColorSpace": "颜色空间", - "MediaInfoColorTransfer": "颜色转移", - "MediaInfoColorPrimaries": "颜色初选", + "MediaInfoColorSpace": "色彩空间", + "MediaInfoColorTransfer": "色彩转换", + "MediaInfoColorPrimaries": "色彩初选", "LabelVideoRange": "动态范围:", - "LabelColorSpace": "颜色空间:", - "LabelColorTransfer": "颜色转移:", - "LabelColorPrimaries": "颜色初选:", + "LabelColorSpace": "色彩空间:", + "LabelColorTransfer": "色彩转换:", + "LabelColorPrimaries": "色彩初选:", "LabelOpenclDevice": "OpenCL 设备:", "LabelOpenclDeviceHelp": "这是用于色调映射的 OpenCL 设备。 点左边是平台号,右边是平台上的设备号。 默认值为 0.0。 需要支持OpenCL 硬件加速的 FFmpeg 应用程序。", "EnableTonemapping": "启用色调映射", From e55042d652cb88018c653b9e3edd5d444c279691 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 22 Jan 2022 02:08:26 +0300 Subject: [PATCH 108/389] Show AlphaPicker in ListView if there is SortName --- src/controllers/list.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/controllers/list.js b/src/controllers/list.js index b2be0bbd00..d25634bf67 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -217,18 +217,14 @@ import { appRouter } from '../components/appRouter'; } } - function updateAlphaPickerState(instance, numItems) { + function updateAlphaPickerState(instance) { if (instance.alphaPicker) { const alphaPicker = instance.alphaPickerElement; if (alphaPicker) { const values = instance.getSortValues(); - if (numItems == null) { - numItems = 100; - } - - if (values.sortBy === 'SortName' && values.sortOrder === 'Ascending' && numItems > 40) { + if (values.sortBy.indexOf('SortName') !== -1) { alphaPicker.classList.remove('hide'); instance.itemsContainer.parentNode.classList.add('padded-right-withalphapicker'); } else { @@ -494,7 +490,7 @@ class ItemsView { self.totalItemCount = result.Items ? result.Items.length : result.length; } - updateAlphaPickerState(self, self.totalItemCount); + updateAlphaPickerState(self); updatePaging(result.StartIndex, result.TotalRecordCount, query.Limit); return result; }).finally(() => { From 9defa0f2899490454d8af66e115c36969a5e8bd5 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 22 Jan 2022 02:08:44 +0300 Subject: [PATCH 109/389] Show AlphaPicker if there is SortName --- src/components/alphaPicker/alphaPicker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/alphaPicker/alphaPicker.js b/src/components/alphaPicker/alphaPicker.js index 82fa55ff9b..96d72f96e7 100644 --- a/src/components/alphaPicker/alphaPicker.js +++ b/src/components/alphaPicker/alphaPicker.js @@ -287,7 +287,7 @@ import 'material-design-icons-iconfont'; this.value(query.NameStartsWith); } - this.visible(query.SortBy.indexOf('SortName') === 0); + this.visible(query.SortBy.indexOf('SortName') !== -1); } visible(visible) { From 916b72eb6521853287eb0a10ca7797f78684afcc Mon Sep 17 00:00:00 2001 From: SenorSmartyPants Date: Wed, 9 Feb 2022 00:44:15 -0600 Subject: [PATCH 110/389] Change to Title Case --- src/strings/en-us.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 3724a2f05e..6736b5a108 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1610,11 +1610,11 @@ "SelectAll": "Select All", "Clip": "Featurette", "Trailer": "Trailer", - "BehindTheScenes": "Behind the scenes", - "DeletedScene": "Deleted scene", + "BehindTheScenes": "Behind the Scenes", + "DeletedScene": "Deleted Scene", "Interview": "Interview", "Scene": "Scene", "Sample": "Sample", - "ThemeSong": "Theme song", - "ThemeVideo": "Theme video" + "ThemeSong": "Theme Song", + "ThemeVideo": "Theme Video" } From c7929e22117b5538664f493b2ff3bd41691212e4 Mon Sep 17 00:00:00 2001 From: Csaba Date: Wed, 9 Feb 2022 07:08:53 +0000 Subject: [PATCH 111/389] 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 0face2f784..993e850208 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1612,5 +1612,6 @@ "EnableIntelLowPowerH264HwEncoder": "Engedélyezze az Intel Low-Power H.264 hardveres kódolót", "PreferSystemNativeHwDecoder": "Előnyben részesítse az operációs rendszer natív DXVA vagy VA-API hardveres dekódereit", "ContainerBitrateExceedsLimit": "A videó bitrátája meghaladja a limitet", - "SelectAll": "Összes kiválasztása" + "SelectAll": "Összes kiválasztása", + "ButtonExitApp": "Kilépés az alkalmazásból" } From 719ae14d3f3efbb262ea7b6bb8904f88becf1c60 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Jan 2022 18:53:19 +0300 Subject: [PATCH 112/389] Add a second paging block on the Channels tab --- src/controllers/livetv.html | 3 +++ src/controllers/livetv/livetvchannels.js | 20 ++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/controllers/livetv.html b/src/controllers/livetv.html index b1f60f4efa..2a484c6db0 100644 --- a/src/controllers/livetv.html +++ b/src/controllers/livetv.html @@ -64,6 +64,9 @@
+
+
+
diff --git a/src/controllers/livetv/livetvchannels.js b/src/controllers/livetv/livetvchannels.js index cd7b50dd44..000cb5e3ec 100644 --- a/src/controllers/livetv/livetvchannels.js +++ b/src/controllers/livetv/livetvchannels.js @@ -65,14 +65,18 @@ export default function (view, params, tabContent) { } const query = getQuery(); - context.querySelector('.paging').innerHTML = libraryBrowser.getQueryPagingHtml({ - startIndex: query.StartIndex, - limit: query.Limit, - totalRecordCount: result.TotalRecordCount, - showLimit: false, - updatePageSizeSetting: false, - filterButton: false - }); + + for (const elem of context.querySelectorAll('.paging')) { + elem.innerHTML = libraryBrowser.getQueryPagingHtml({ + startIndex: query.StartIndex, + limit: query.Limit, + totalRecordCount: result.TotalRecordCount, + showLimit: false, + updatePageSizeSetting: false, + filterButton: false + }); + } + const html = getChannelsHtml(result.Items); const elem = context.querySelector('#items'); elem.innerHTML = html; From 82dbfce37426f667577eba60fdba8ba83c8777b2 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Jan 2022 18:54:51 +0300 Subject: [PATCH 113/389] Fix autofocus on Channels tab This limits the focus scope to the current tab, so that the channel card is selected the first time you open it. [for testing] The Channels tab should be the default for the LiveTV library. --- src/controllers/livetv/livetvchannels.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/livetv/livetvchannels.js b/src/controllers/livetv/livetvchannels.js index 000cb5e3ec..ce81e633cc 100644 --- a/src/controllers/livetv/livetvchannels.js +++ b/src/controllers/livetv/livetvchannels.js @@ -120,7 +120,7 @@ export default function (view, params, tabContent) { isLoading = false; import('../../components/autoFocuser').then(({default: autoFocuser}) => { - autoFocuser.autoFocus(view); + autoFocuser.autoFocus(context); }); }); } From df0da76312603d83bd2f4f767d2df7fb17632639 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Jan 2022 18:55:48 +0300 Subject: [PATCH 114/389] Add auto scroll top when using paging --- src/controllers/livetv/livetvchannels.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/controllers/livetv/livetvchannels.js b/src/controllers/livetv/livetvchannels.js index ce81e633cc..9a82a3d532 100644 --- a/src/controllers/livetv/livetvchannels.js +++ b/src/controllers/livetv/livetvchannels.js @@ -50,7 +50,9 @@ export default function (view, params, tabContent) { if (userSettings.libraryPageSize() > 0) { query.StartIndex += query.Limit; } - reloadItems(context); + reloadItems(context).then(() => { + window.scrollTo(0, 0); + }); } function onPreviousPageClick() { @@ -61,7 +63,9 @@ export default function (view, params, tabContent) { if (userSettings.libraryPageSize() > 0) { query.StartIndex = Math.max(0, query.StartIndex - query.Limit); } - reloadItems(context); + reloadItems(context).then(() => { + window.scrollTo(0, 0); + }); } const query = getQuery(); @@ -114,7 +118,7 @@ export default function (view, params, tabContent) { const query = getQuery(); const apiClient = ApiClient; query.UserId = apiClient.getCurrentUserId(); - apiClient.getLiveTvChannels(query).then(function (result) { + return apiClient.getLiveTvChannels(query).then(function (result) { renderChannels(context, result); loading.hide(); isLoading = false; From 480f57d6608a670c25e61fc1b3506bb8c57f6d71 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 9 Feb 2022 09:25:25 -0500 Subject: [PATCH 115/389] Do not pass null for start index --- src/controllers/list.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/list.js b/src/controllers/list.js index ceb12e7c34..766707bec3 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -736,7 +736,7 @@ class ItemsView { autoplay: true }); } else { - getItems(self, self.params, currentItem, null, null, 300).then(function (result) { + getItems(self, self.params, currentItem, null, 0, 300).then(function (result) { playbackManager.play({ items: result.Items, autoplay: true @@ -753,7 +753,7 @@ class ItemsView { items: [currentItem] }); } else { - getItems(self, self.params, currentItem, null, null, 300).then(function (result) { + getItems(self, self.params, currentItem, null, 0, 300).then(function (result) { playbackManager.queue({ items: result.Items }); @@ -767,7 +767,7 @@ class ItemsView { if (currentItem && !self.hasFilters) { playbackManager.shuffle(currentItem); } else { - getItems(self, self.params, currentItem, 'Random', null, 300).then(function (result) { + getItems(self, self.params, currentItem, 'Random', 0, 300).then(function (result) { playbackManager.play({ items: result.Items, autoplay: true From c45ef2dc10d3ee4f0682f8ecad39dcce3837baed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Wed, 9 Feb 2022 10:41:13 +0000 Subject: [PATCH 116/389] 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 465e3ada72..ffcde1f6f3 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1612,5 +1612,6 @@ "UnknownVideoStreamInfo": "Informace o video stopě jsou neznámé", "VideoBitrateNotSupported": "Bitový tok videa není podporovaný", "AudioIsExternal": "Zvuková stopa je externí", - "SelectAll": "Vybrat vše" + "SelectAll": "Vybrat vše", + "ButtonExitApp": "Ukončit aplikaci" } From e30168ccbbb99d071eabc0ddd2a47ac8e1a2e34b Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Wed, 9 Feb 2022 10:04:35 +0000 Subject: [PATCH 117/389] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/de.json b/src/strings/de.json index 0dbc4426b2..c34fa5f6a9 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -946,7 +946,7 @@ "Recordings": "Aufnahmen", "Refresh": "Aktualisieren", "RefreshDialogHelp": "Metadaten werden auf Basis der Einstellungen und Internet Services, die im Dashboard aktiviert sind, aktualisiert.", - "RefreshMetadata": "Aktualisiere Metadaten", + "RefreshMetadata": "Metadaten aktualisieren", "RefreshQueued": "Aktualisierung eingereiht.", "ReleaseDate": "Veröffentlichungsdatum", "RememberMe": "Angemeldet bleiben", @@ -1612,5 +1612,6 @@ "UnknownAudioStreamInfo": "Die Audio-Stream-Info ist unbekannt", "ContainerBitrateExceedsLimit": "Die Bitrate des Videos übersteigt das Limit", "PreferSystemNativeHwDecoder": "Präferiere Betriebssystem-native DXVA- oder VA-API-Hardware-Dekoder", - "SelectAll": "Alles auswählen" + "SelectAll": "Alles auswählen", + "ButtonExitApp": "Anwendung schließen" } From 1759fad57125993ab46ab4054c6f1892692ae586 Mon Sep 17 00:00:00 2001 From: blob03 Date: Wed, 9 Feb 2022 11:43:58 +0000 Subject: [PATCH 118/389] 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 0070275398..a692c14fc6 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1612,5 +1612,6 @@ "VideoBitrateNotSupported": "Le débit de la vidéo n'est pas pris en charge", "UnknownVideoStreamInfo": "Pas d'information sur le flux vidéo", "AudioIsExternal": "Le flux audio est externe", - "SelectAll": "Tout sélectionner" + "SelectAll": "Tout sélectionner", + "ButtonExitApp": "Quitter l'application" } From a799cbf0b0dfae6e099c91db17489d2e6610e5ef Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Wed, 9 Feb 2022 09:02:58 +0000 Subject: [PATCH 119/389] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 21ef1fc020..ed327a8fc3 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -137,8 +137,8 @@ "AllowRemoteAccessHelp": "Nếu bỏ chọn, tất cả các kết nối từ xa sẽ bị chặn.", "AllowRemoteAccess": "Cho phép kết nối từ xa với máy chủ này", "AllowOnTheFlySubtitleExtractionHelp": "Phụ đề nhúng có thể được trích xuất từ video và dùng như văn bản thuần túy để giúp ngăn chặn chuyển mã video. Trên một số hệ thống, việc này có thể mất nhiều thời gian và khiến quá trình phát video bị đình trệ trong quá trình trích xuất. Tắt tùy chọn này để ghi phụ đề nhúng bằng tính năng chuyển mã video khi chúng không được thiết bị khách hỗ trợ nguyên bản.", - "AllowOnTheFlySubtitleExtraction": "Cho phép trích xuất phụ đề một cách nhanh chóng", - "AllowMediaConversionHelp": "Cấp hoặc từ chối quyền truy cập vào tính năng chuyển đổi phương tiện.", + "AllowOnTheFlySubtitleExtraction": "Cho phép trích xuất phụ đề nhanh", + "AllowMediaConversionHelp": "Cấp phép hoặc từ chối truy cập tính năng chuyển đổi phương tiện.", "AllowMediaConversion": "Cho phép chuyển đổi phương tiện", "AllowHWTranscodingHelp": "Cho phép bộ dò chuyển mã phát trực tiếp. Nó có thể giúp giảm tải của máy chủ khi chuyển mã.", "AllLibraries": "Tất cả thư viện", @@ -1610,5 +1610,6 @@ "UnknownVideoStreamInfo": "Thông tin luồng video không xác định", "VideoBitrateNotSupported": "Tốc độ bit của video không được hỗ trợ", "AudioIsExternal": "Luồng âm thanh bên ngoài", - "SelectAll": "Chọn Tất Cả" + "SelectAll": "Chọn Tất Cả", + "ButtonExitApp": "Thoát Ứng Dụng" } From 3248a813c62550a80d5af54efd7bd078bd267614 Mon Sep 17 00:00:00 2001 From: SuperDumbTM Date: Wed, 9 Feb 2022 13:22:57 +0000 Subject: [PATCH 120/389] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index cda2ca9624..7374d1cb75 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -262,7 +262,7 @@ "Absolute": "絕對", "AuthProviderHelp": "選擇用於驗證該用戶密碼的身份驗證程式。", "AspectRatio": "長寬比", - "AskAdminToCreateLibrary": "要求管理員創建一個庫。", + "AskAdminToCreateLibrary": "要求管理員創建一個媒體庫。", "Ascending": "上升", "Artist": "藝人", "Art": "藝術", @@ -366,7 +366,7 @@ "Download": "下載", "DisplayInMyMedia": "在主頁顯示", "ButtonSyncPlay": "SyncPlay", - "BurnSubtitlesHelp": "確定若服務器對視頻進行轉碼時是否嵌入字幕。 關閉這功能將使用更少時間。 選擇'自動'可嵌入基於圖像的格式字幕(VOBSUB,PGS,SUB,IDX等)和某些ASS或SSA字幕。", + "BurnSubtitlesHelp": "根據已選擇字幕格式決定伺服器在影片轉檔時是否燒錄字幕。燒錄字幕將會增加伺服器負荷。選擇「自動」以燒錄圖片格式的字幕(如 VoBSuB、PGS 或 SUB/IDX 等)與複雜的 ASS/SSA 字幕。", "MessageBrowsePluginCatalog": "瀏覽我們的插件目錄以查看可用的插件。", "BoxRear": "盒裝(背面)", "BoxSet": "套裝", @@ -1069,5 +1069,6 @@ "LabelAutomaticallyAddToCollectionHelp": "當至少有 2 部電影具有相同的名稱時,它們將自動加入到合輯中。", "LabelAutomaticallyAddToCollection": "自動加入合輯", "LabelAirsBeforeEpisode": "預告:", - "HeaderSyncPlayTimeSyncSettings": "時間同步" + "HeaderSyncPlayTimeSyncSettings": "時間同步", + "ButtonExitApp": "離開應用程式" } From 58ef37950ebb855225eb9a4d99c685419d84c422 Mon Sep 17 00:00:00 2001 From: SuperDumbTM Date: Wed, 9 Feb 2022 12:45:37 +0000 Subject: [PATCH 121/389] 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 5439e39ced..59c87288f1 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -214,7 +214,7 @@ "AllChannels": "所有節目", "AllComplexFormats": "所有複雜字幕格式 (ASS、SSA、 VobSub、PGS 、 SUB、IDX 等)", "AllLanguages": "所有語言", - "AllLibraries": "所有媒體", + "AllLibraries": "所有媒體庫", "AllowMediaConversion": "允許媒體轉檔", "AllowMediaConversionHelp": "授予或拒絕存取媒體轉檔功能。", "AllowRemoteAccess": "允許遠端存取伺服器", From 43077bd25956daaf16ecb387a97c79a0c280dd82 Mon Sep 17 00:00:00 2001 From: Patrick Farwick <9168045+MinecraftPlaye@users.noreply.github.com> Date: Wed, 9 Feb 2022 15:18:41 +0000 Subject: [PATCH 122/389] Add all file extensions for jpeg images --- src/plugins/comicsPlayer/plugin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/comicsPlayer/plugin.js b/src/plugins/comicsPlayer/plugin.js index 139704f69f..d8abaa226f 100644 --- a/src/plugins/comicsPlayer/plugin.js +++ b/src/plugins/comicsPlayer/plugin.js @@ -242,7 +242,7 @@ export class ComicsPlayer { } // the comic book archive supports any kind of image format as it's just a zip archive -const supportedFormats = ['jpg', 'png', 'avif', 'gif', 'bmp', 'dib', 'tiff', 'tif']; +const supportedFormats = ['jpg', 'jpeg', 'jpe', 'jif', 'jfif', 'jfi', 'png', 'avif', 'gif', 'bmp', 'dib', 'tiff', 'tif']; class ArchiveSource { constructor(url) { From 8aa6088e24487f90c03bca647e4f350882c14dce Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 1 Feb 2022 01:25:53 +0300 Subject: [PATCH 123/389] Handle resolved play promise It seems that without processing the Promise resolution, there is no subscription to the error event. --- src/components/htmlMediaHelper.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/components/htmlMediaHelper.js b/src/components/htmlMediaHelper.js index 82d6d790bc..7f623ee2cc 100644 --- a/src/components/htmlMediaHelper.js +++ b/src/components/htmlMediaHelper.js @@ -200,17 +200,22 @@ import { Events } from 'jellyfin-apiclient'; const promise = elem.play(); if (promise && promise.then) { // Chrome now returns a promise - return promise.catch(function (e) { - const errorName = (e.name || '').toLowerCase(); - // safari uses aborterror - if (errorName === 'notallowederror' || - errorName === 'aborterror') { - // swallow this error because the user can still click the play button on the video element + return promise + .then(() => { onSuccessfulPlay(elem, onErrorFn); return Promise.resolve(); - } - return Promise.reject(); - }); + }) + .catch((e) => { + const errorName = (e.name || '').toLowerCase(); + // safari uses aborterror + if (errorName === 'notallowederror' || + errorName === 'aborterror') { + // swallow this error because the user can still click the play button on the video element + onSuccessfulPlay(elem, onErrorFn); + return Promise.resolve(); + } + return Promise.reject(); + }); } else { onSuccessfulPlay(elem, onErrorFn); return Promise.resolve(); From cd17f52b74bf4aea8a2157ad5e7bf1ce8128b970 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Mon, 17 Jan 2022 23:27:28 +0300 Subject: [PATCH 124/389] Stack toasts --- src/components/toast/toast.js | 16 ++++++++++++++-- src/components/toast/toast.scss | 33 ++++++++++++++++++++++++++++----- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/components/toast/toast.js b/src/components/toast/toast.js index ea3a8e57df..e29cb16bc6 100644 --- a/src/components/toast/toast.js +++ b/src/components/toast/toast.js @@ -1,5 +1,17 @@ import './toast.scss'; +let toastContainer; + +function getToastContainer() { + if (!toastContainer) { + toastContainer = document.createElement('div'); + toastContainer.classList.add('toastContainer'); + document.body.appendChild(toastContainer); + } + + return toastContainer; +} + function remove(elem) { setTimeout(function () { elem.parentNode.removeChild(elem); @@ -8,7 +20,7 @@ function remove(elem) { function animateRemove(elem) { setTimeout(function () { - elem.classList.remove('toastVisible'); + elem.classList.add('toastHide'); remove(elem); }, 3300); } @@ -24,7 +36,7 @@ export default function (options) { elem.classList.add('toast'); elem.textContent = options.text; - document.body.appendChild(elem); + getToastContainer().appendChild(elem); setTimeout(function () { elem.classList.add('toastVisible'); diff --git a/src/components/toast/toast.scss b/src/components/toast/toast.scss index 28d6cb52fc..cb16573f48 100644 --- a/src/components/toast/toast.scss +++ b/src/components/toast/toast.scss @@ -1,5 +1,15 @@ -.toast { +.toastContainer { position: fixed; + left: 0; + bottom: 0; + pointer-events: none; + z-index: 9999999; + padding: 1em; + display: flex; + flex-direction: column; +} + +.toast { min-width: 20em; box-sizing: border-box; box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); @@ -8,13 +18,26 @@ transition: transform 0.3s ease-out; min-height: initial; padding: 1em 1.5em; - bottom: 1em; - left: 1em; font-size: 110%; - z-index: 9999999; + margin: 0.25em 0; + margin-right: auto; + pointer-events: initial; +} + +.toast:first-child { + margin-top: 0; +} + +.toast:last-child { + margin-bottom: 0; transform: translateY(16em); } -.toastVisible { +.toast.toastVisible { transform: none; } + +.toast.toastHide { + opacity: 0; + transition: opacity 0.3s ease-out; +} From 04c4cfd58e0ecac7f020d82407047f543ee549b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Wed, 9 Feb 2022 16:24:11 +0000 Subject: [PATCH 125/389] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index ffcde1f6f3..6792c74f98 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -782,7 +782,7 @@ "OptionEveryday": "Každý den", "OptionExternallyDownloaded": "Externí stažení", "OptionExtractChapterImage": "Povolit extrakci obrázků z videa", - "OptionHasThemeSong": "Tematická hudba", + "OptionHasThemeSong": "Znělka", "OptionHasThemeVideo": "Tematické video", "OptionHideUser": "Skrýt tohoto uživatele z přihlašovacích obrazovek", "OptionHideUserFromLoginHelp": "Vhodné pro soukromé a administrátorské účty. Pro přihlášení musí uživatel manuálně zadat uživatelské jméno a heslo.", @@ -1186,7 +1186,7 @@ "TabDirectPlay": "Přímé přehrávání", "TabServer": "Server", "TagsValue": "Tagy: {0}", - "ThemeSongs": "Tematická hudba", + "ThemeSongs": "Znělky", "ThemeVideos": "Tematická videa", "Trailers": "Upoutávky", "TvLibraryHelp": "Podívejte se na {0}průvodce pojmenováním TV pořadů{1}.", @@ -1613,5 +1613,14 @@ "VideoBitrateNotSupported": "Bitový tok videa není podporovaný", "AudioIsExternal": "Zvuková stopa je externí", "SelectAll": "Vybrat vše", - "ButtonExitApp": "Ukončit aplikaci" + "ButtonExitApp": "Ukončit aplikaci", + "ThemeVideo": "Úvodní video", + "ThemeSong": "Znělka", + "Sample": "Ukázka", + "Scene": "Scéna", + "Interview": "Rozhovor", + "DeletedScene": "Vymazaná scéna", + "BehindTheScenes": "Z natáčení", + "Trailer": "Upoutávka", + "Clip": "Krátký film" } From ab8ceeee4f321e14078dcf15e783afcdd63aec86 Mon Sep 17 00:00:00 2001 From: blob03 Date: Wed, 9 Feb 2022 15:24:07 +0000 Subject: [PATCH 126/389] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index a692c14fc6..304b3a3557 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1613,5 +1613,14 @@ "UnknownVideoStreamInfo": "Pas d'information sur le flux vidéo", "AudioIsExternal": "Le flux audio est externe", "SelectAll": "Tout sélectionner", - "ButtonExitApp": "Quitter l'application" + "ButtonExitApp": "Quitter l'application", + "Clip": "Court-métrage", + "ThemeVideo": "Vidéo thématique", + "ThemeSong": "Chanson du thème", + "Sample": "Échantillon", + "Scene": "Scène", + "Interview": "Entrevue", + "DeletedScene": "Scène supprimée", + "BehindTheScenes": "Dans les coulisses", + "Trailer": "Bande-annonce" } From 95b633d0b6dd5b31da2fb9f1f0ba6b68dd952dcd Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Wed, 9 Feb 2022 16:11:34 +0000 Subject: [PATCH 127/389] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index ed327a8fc3..ee4d9e4061 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -42,7 +42,7 @@ "MessageNothingHere": "Không có gì ở đây.", "Monday": "Thứ Hai", "OptionAllowUserToManageServer": "Cho phép người dùng này quản lý máy chủ", - "OptionCommunityRating": "Đánh giá của cộng đồng", + "OptionCommunityRating": "Đánh Giá Cộng Đồng", "OptionDateAdded": "Ngày thêm", "OptionDatePlayed": "Ngày phát", "OptionDisableUser": "Vô hiệu hóa người dùng này", @@ -174,7 +174,7 @@ "Default": "Mặc Định", "DeathDateValue": "Đã chết: {0}", "DatePlayed": "Ngày phát", - "DateAdded": "Ngày thêm vào", + "DateAdded": "Ngày thêm", "CustomDlnaProfilesHelp": "Tạo một bộ thiết lập tuỳ chọn dành cho một thiết bị mới hoặc thay thế một thiết lập hệ thống.", "CriticRating": "Đánh giá chấm điểm", "CopyStreamURLSuccess": "URL đã được sao chép.", @@ -187,9 +187,9 @@ "ConfirmDeleteItems": "Xoá những mục này sẽ xoá chúng khỏi ổ cứng và thư viện của bạn. Bạn có chắc chắn muốn tiếp tục?", "ConfirmDeleteItem": "Xoá mục này sẽ xoá nó khỏi ổ cứng và thư viện của bạn. Bạn có chắc chắn muốn tiếp tục?", "ConfirmDeleteImage": "Bạn có chắc chắn xoá ảnh này?", - "ConfigureDateAdded": "Thiết lập cách xác định dữ liệu mô tả cho 'Ngày đã thêm' trong Trang tổng quan > Thư viện > Cài đặt NFO", + "ConfigureDateAdded": "Cài đặt cách xác định dữ liệu mô tả cho 'Ngày thêm' trong Trang tổng quan > Thư viện > Cài đặt NFO", "Composer": "Tác giả", - "CommunityRating": "Đánh giá của cộng đồng", + "CommunityRating": "Đánh giá cộng đồng", "ColorTransfer": "Chuyển đổi màu", "ColorSpace": "Bộ mã màu", "ColorPrimaries": "Những màu chủ đạo", @@ -362,7 +362,7 @@ "HeaderParentalRatings": "Đánh Giá Của Phụ Huynh", "HeaderOtherItems": "Những Mục Khác", "HeaderOnNow": "Ngay Bây Giờ", - "HeaderNextVideoPlayingInValue": "Video Tiếp Theo Sẽ Phát trong {0}", + "HeaderNextVideoPlayingInValue": "Phát Video Tiếp Theo sau {0}", "HeaderNextEpisodePlayingInValue": "Tập Tiếp Theo Sẽ Phát trong {0}", "HeaderNewDevices": "Thiết Bị Mới", "HeaderNewApiKey": "Khóa API Mới", @@ -401,9 +401,9 @@ "HeaderForKids": "Dành Cho Trẻ Em", "HeaderFetcherSettings": "Cài Đặt Chương Trình Tải Xuống", "HeaderFetchImages": "Tải Hình Ảnh:", - "HeaderExternalIds": "Mã Định Danh Từ Bên Ngoài:", + "HeaderExternalIds": "Mã ID bên ngoài:", "HeaderError": "Lỗi", - "HeaderEnabledFieldsHelp": "Bỏ chọn một mục để khoá lựa chọn đó và không để nó thay đổi.", + "HeaderEnabledFieldsHelp": "Bỏ chọn một mục để khóa nó và ngăn dữ liệu của nó bị thay đổi.", "HeaderEnabledFields": "Những Mục Được Kích Hoạt", "HeaderEditImages": "Chỉnh Sửa Hình Ảnh", "HeaderEasyPinCode": "Mã PIN Tiện Lợi", @@ -467,7 +467,7 @@ "LabelCriticRating": "Đánh giá của nhà phê bình:", "LabelCorruptedFrames": "Khung hình hỏng:", "LabelContentType": "Loại nội dung:", - "LabelCommunityRating": "Đánh giá của cộng đồng:", + "LabelCommunityRating": "Đánh giá cộng đồng:", "LabelCollection": "Bộ Sưu Tập:", "LabelChannels": "Kênh:", "LabelCertificatePasswordHelp": "Nếu chứng chỉ của bạn cần mật khẩu, hãy nhập nó ở đây.", @@ -574,7 +574,7 @@ "LabelDateTimeLocale": "Ngày giờ địa phương:", "LabelDateAddedBehaviorHelp": "Nếu có giá trị dữ liệu mô tả, nó sẽ luôn được sử dụng trước một trong các tùy chọn này.", "LabelDateAddedBehavior": "Hành động thêm ngày cho nội dung mới:", - "LabelDateAdded": "Ngày thêm vào:", + "LabelDateAdded": "Ngày thêm:", "LabelDashboardTheme": "Giao diện Bảng Điều Khiển máy chủ:", "LabelCustomRating": "Đánh giá tuỳ chọn:", "ApiKeysCaption": "Danh sách các Khóa API hiện được bật", @@ -688,7 +688,7 @@ "LabelMetadataPathHelp": "Chọn một vị trí tải xuống ảnh bìa minh họa và dữ liệu mô tả.", "LabelMetadataPath": "Đường dẫn dữ liệu mô tả:", "LabelMetadataDownloadersHelp": "Kích hoạt và sắp xếp thứ tự ưu tiên của các trình tải dữ liệu mô tả. Trình tải có thứ tự ưu tiên thấp sẽ chỉ sử dụng để tải những thông tin bị thiếu.", - "LabelMetadataDownloadLanguage": "Ngôn ngữ tải ưu tiên:", + "LabelMetadataDownloadLanguage": "Ưu tiên tải về ngôn ngữ:", "LabelMetadata": "Dữ Liệu Mô Tả:", "LabelMessageTitle": "Tiêu đề tin nhắn:", "LabelMessageText": "Nội dung tin nhắn:", @@ -1008,7 +1008,7 @@ "LabelTextSize": "Cỡ chữ:", "LabelTextColor": "Màu văn bản:", "LabelTextBackgroundColor": "Màu nền văn bản:", - "LabelTagline": "Dòng giới thiệu:", + "LabelTagline": "Giới thiệu:", "LabelTag": "Nhãn:", "LabelSyncPlayAccess": "Quyền truy cập SyncPlay:", "LabelSyncPlayAccessNone": "Đã tắt cho người dùng này", @@ -1611,5 +1611,8 @@ "VideoBitrateNotSupported": "Tốc độ bit của video không được hỗ trợ", "AudioIsExternal": "Luồng âm thanh bên ngoài", "SelectAll": "Chọn Tất Cả", - "ButtonExitApp": "Thoát Ứng Dụng" + "ButtonExitApp": "Thoát Ứng Dụng", + "Scene": "Bối cảnh", + "DeletedScene": "Cảnh Đã Xóa", + "BehindTheScenes": "Hậu Trường" } From ff3f3453bee42f207fda91d9a8bdb52b84ea7418 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Wed, 9 Feb 2022 15:57:44 +0000 Subject: [PATCH 128/389] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index ee504feaf8..b13850216a 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1627,5 +1627,15 @@ "EnableIntelLowPowerHevcHwEncoder": "Intel லோ-பவர் HEVC வன்பொருள் குறியாக்கியை இயக்கவும்", "EnableIntelLowPowerH264HwEncoder": "Intel லோ-பவர் H.264 வன்பொருள் குறியாக்கியை இயக்கவும்", "PreferSystemNativeHwDecoder": "OS நேட்டிவ் DXVA அல்லது VA-API ஹார்டுவேர் டிகோடர்களை விரும்பவும்", - "ContainerBitrateExceedsLimit": "வீடியோவின் பிட்ரேட் வரம்பை மீறுகிறது" + "ContainerBitrateExceedsLimit": "வீடியோவின் பிட்ரேட் வரம்பை மீறுகிறது", + "ThemeVideo": "தீம் வீடியோ", + "ThemeSong": "தீம் பாடல்", + "Sample": "மாதிரி", + "Scene": "காட்சி", + "Interview": "நேர்காணல்", + "DeletedScene": "நீக்கப்பட்ட காட்சி", + "BehindTheScenes": "காட்சிகளுக்கு பின்னால்", + "Trailer": "டிரெய்லர்", + "Clip": "அம்சம்", + "ButtonExitApp": "பயன்பாட்டிலிருந்து வெளியேறு" } From 80099f29e485a4f4c20fea97d21fe2202f10bea1 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 9 Feb 2022 22:05:17 +0300 Subject: [PATCH 129/389] Allow navigation to the parent show/season/album Partial revert https://github.com/jellyfin/jellyfin-web/commit/ece0b39d7085656d5aa8e8160fd98be6134bf60a Add 'focuscontainer-x' to the parent labels. --- src/controllers/itemDetails/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index d956e11ed6..2a98e208a8 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -459,7 +459,7 @@ function renderName(item, container, context) { }, { context: context }); - parentNameHtml.push('' + item.SeriesName + ''); + parentNameHtml.push('' + item.SeriesName + ''); } else if (item.IsSeries || item.EpisodeTitle) { parentNameHtml.push(item.Name); } @@ -474,7 +474,7 @@ function renderName(item, container, context) { }, { context: context }); - parentNameHtml.push('' + item.SeriesName + ''); + parentNameHtml.push('' + item.SeriesName + ''); } else if (item.ParentIndexNumber != null && item.Type === 'Episode') { parentRoute = appRouter.getRouteUrl({ Id: item.SeasonId, @@ -485,7 +485,7 @@ function renderName(item, container, context) { }, { context: context }); - parentNameHtml.push('' + item.SeasonName + ''); + parentNameHtml.push('' + item.SeasonName + ''); } else if (item.ParentIndexNumber != null && item.IsSeries) { parentNameHtml.push(item.SeasonName || 'S' + item.ParentIndexNumber); } else if (item.Album && item.AlbumId && (item.Type === 'MusicVideo' || item.Type === 'Audio')) { @@ -498,7 +498,7 @@ function renderName(item, container, context) { }, { context: context }); - parentNameHtml.push('' + item.Album + ''); + parentNameHtml.push('' + item.Album + ''); } else if (item.Album) { parentNameHtml.push(item.Album); } @@ -514,10 +514,10 @@ function renderName(item, container, context) { if (layoutManager.mobile) { html = '

' + parentNameHtml.join('
') + '

'; } else { - html = '

' + parentNameHtml.join(' - ') + '

'; + html = '

' + parentNameHtml.join(' - ') + '

'; } } else { - html = '

' + tvShowHtml + '

'; + html = '

' + tvShowHtml + '

'; } } @@ -527,7 +527,7 @@ function renderName(item, container, context) { if (html && !parentNameLast) { if (tvSeasonHtml) { - html += '

' + tvSeasonHtml + ' - ' + name + '

'; + html += '

' + tvSeasonHtml + ' - ' + name + '

'; } else { html += '

' + name + '

'; } From 27f530babdcb7a1ba6349d8129215073a1f5dd3f Mon Sep 17 00:00:00 2001 From: Piccar Date: Wed, 9 Feb 2022 21:01:49 +0100 Subject: [PATCH 130/389] Added a hovereffect on listItems for all themes --- src/themes/appletv/theme.css | 8 ++++++++ src/themes/blueradiance/theme.css | 8 ++++++++ src/themes/dark/theme.css | 8 ++++---- src/themes/light/theme.css | 8 ++++---- src/themes/purplehaze/theme.css | 8 ++++++++ src/themes/wmc/theme.css | 6 +++++- 6 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 849ef0b93c..a964e90d5c 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -271,6 +271,14 @@ html { background: rgba(0, 0, 0, 0.2); } +.listItem:hover { + background: rgba(0, 0, 0, 0.1); +} + +.actionSheetMenuItem:hover { + background-color: #ddd; +} + .progressring-spiner { border-color: #00a4dc; } diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index f27abfc112..f8fb237172 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -261,6 +261,14 @@ html { background: rgba(0, 0, 0, 0.3); } +.listItem:hover { + background: rgba(0, 0, 0, 0.15); +} + +.actionSheetMenuItem:hover { + background-color: rgba(0, 0, 0, 0.5); +} + .progressring-spiner { border-color: #00a4dc; } diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index f599ade05a..5de1414a9a 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -172,10 +172,6 @@ html { opacity: 0.5; } -.actionSheetMenuItem:hover { - background-color: #242424; -} - .toast { background: #303030; color: #fff; @@ -238,6 +234,10 @@ html { background: #333; } +.listItem:hover { + background: #242424; +} + .progressring-spiner { border-color: #00a4dc; } diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 24e40431c4..6f9bee3931 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -200,10 +200,6 @@ html { color: #fff; } -.actionSheetMenuItem:hover { - background-color: #ddd; -} - .toast { background: #303030; color: rgba(255, 255, 255, 0.87); @@ -266,6 +262,10 @@ html { } .listItem:focus { + background: #bbb; +} + +.listItem:hover { background: #ddd; } diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 1324187124..93e4c467c4 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -347,6 +347,14 @@ a[data-role=button] { background: rgba(0, 0, 0, 0.3); } +.listItem:hover { + background: #12122f; +} + +.actionSheetMenuItem:hover { + background-color: rgba(0, 0, 0, 0.5); +} + .progressring-spiner { border-color: #48c3c8; } diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 92175f309f..92d3b1cdd1 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -241,7 +241,11 @@ html { } .listItem:focus { - background: #333; + background: rgba(0, 0, 0, 0.2); +} + +.listItem:hover { + background: rgba(0, 0, 0, 0.4); } .progressring-spiner { From 861442fb49d9e1925f11502d0f9a11931f1f764f Mon Sep 17 00:00:00 2001 From: Mehyar Date: Wed, 9 Feb 2022 18:52:44 +0000 Subject: [PATCH 131/389] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 21a0080a00..32198fefa3 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -1610,5 +1610,15 @@ "UnknownAudioStreamInfo": "معلومات دفق الصوت غير معروفة", "UnknownVideoStreamInfo": "معلومات دفق الفيديو غير معروفة", "VideoBitrateNotSupported": "معدل بت الفيديو غير مدعوم", - "AudioIsExternal": "دفق الصوت خارجي" + "AudioIsExternal": "دفق الصوت خارجي", + "ThemeVideo": "فيديو الشارة", + "ThemeSong": "أغنية الشارة", + "Sample": "عيّنة", + "Scene": "المشاهد", + "Interview": "مقابلة", + "DeletedScene": "مشاهد محذوفة", + "BehindTheScenes": "وراء الكواليس", + "Trailer": "العرض الإعلاني", + "Clip": "ميزة", + "ButtonExitApp": "أغلق التطبيق" } From ec32c14f8159b74641c57b6394e10c3f50dda031 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Wed, 9 Feb 2022 18:56:34 +0000 Subject: [PATCH 132/389] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 116692d50f..4d011c50f3 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1613,5 +1613,14 @@ "UnknownVideoStreamInfo": "The video stream info is unknown", "VideoBitrateNotSupported": "The video's bitrate is not supported", "AudioIsExternal": "The audio stream is external", - "SelectAll": "Select All" + "SelectAll": "Select All", + "ThemeVideo": "Theme Video", + "ThemeSong": "Theme Song", + "Sample": "Sample", + "Scene": "Scene", + "Interview": "Interview", + "DeletedScene": "Deleted Scene", + "BehindTheScenes": "Behind the Scenes", + "Trailer": "Trailer", + "Clip": "Featurette" } From 43e2075342107f49d7b0ab73a283f4a93b3bd80b Mon Sep 17 00:00:00 2001 From: WWWesten Date: Wed, 9 Feb 2022 18:34:46 +0000 Subject: [PATCH 133/389] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index bbe6040a45..6e9fb534a7 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -1613,5 +1613,15 @@ "UnknownAudioStreamInfo": "Dybys ağyny turaly aqparat belgısız", "UnknownVideoStreamInfo": "Beine ağyny turaly aqparat belgısız", "VideoBitrateNotSupported": "Beinenıñ qarqyna qoldau körsetılmeidı", - "SelectAll": "Bärin bölekteu" + "SelectAll": "Bärin bölekteu", + "ThemeVideo": "Taqyryptyq beine", + "ThemeSong": "Taqyryptyq äuen", + "Sample": "Irıkteme", + "Scene": "Sahna", + "Interview": "Sūhbat", + "DeletedScene": "Joiylğan sahna", + "BehindTheScenes": "Sahna artynda", + "Trailer": "Treiler", + "Clip": "Üzındı", + "ButtonExitApp": "Qoldabadan şyğu" } From 4fb47d4651ab1b11003e2f0fee4f28e656bc748c Mon Sep 17 00:00:00 2001 From: WWWesten Date: Wed, 9 Feb 2022 18:37:37 +0000 Subject: [PATCH 134/389] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index fb8f74d345..ff5f9fa693 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1612,5 +1612,15 @@ "UnknownVideoStreamInfo": "Информация о видео потоке неизвестна", "VideoBitrateNotSupported": "Потоковая скорость видео не поддерживается", "AudioIsExternal": "Аудио поток является внешним", - "SelectAll": "Выбрать все" + "SelectAll": "Выбрать все", + "ThemeVideo": "Тематическое видео", + "ThemeSong": "Тематическая композиция", + "Sample": "Пример", + "Scene": "Сцена", + "Interview": "Интервью", + "DeletedScene": "Удалённая сцена", + "BehindTheScenes": "За кулисами", + "Trailer": "Трейлер", + "Clip": "Отрывок", + "ButtonExitApp": "Выход из приложения" } From 6ae47415d0c6483ea26328196e28dd3254d94687 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Wed, 9 Feb 2022 18:58:33 +0000 Subject: [PATCH 135/389] Translated using Weblate (Esperanto) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/eo/ --- src/strings/eo.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/eo.json b/src/strings/eo.json index 1074b1ab9e..b47b400e10 100644 --- a/src/strings/eo.json +++ b/src/strings/eo.json @@ -1608,5 +1608,15 @@ "UnknownVideoStreamInfo": "La informo pri videa fluo nekonatas", "VideoBitrateNotSupported": "La bitrapido de la video ne subtenatas", "AudioIsExternal": "La aŭdia fluo estas ekstera", - "SelectAll": "Elekti Ĉiujn" + "SelectAll": "Elekti Ĉiujn", + "BehindTheScenes": "Malantaŭ la Kulisoj", + "ThemeVideo": "Tema Video", + "ThemeSong": "Tema Kanto", + "Sample": "Ekzemplo", + "Scene": "Sceno", + "Interview": "Intervjuo", + "DeletedScene": "Forigita Sceno", + "Trailer": "Filmanonco", + "Clip": "Rimedeto", + "ButtonExitApp": "Eliri Aplikon" } From 99fb0e4b72bdbc8f9bcc64e95ff228ce6bdc16d1 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 9 Feb 2022 22:55:56 +0300 Subject: [PATCH 136/389] Fix clipped focused button The button in the subtitle (Season) is clipped when focused because its parent container has 'overflow: hidden' to allow ellipsis. --- src/assets/css/librarybrowser.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index 2fb4d3759c..691e50bf84 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -627,10 +627,15 @@ .subtitle { margin: 0.15em 0 0.2em; + + // Leave room for a focused button + margin-left: -1em; + padding-left: 1em; } .layout-mobile .subtitle { margin: 0.2em 0 0.2em; + padding-left: 0; // Reset padding for focused button since 'margin-left' is 0 } .detailPagePrimaryContainer { From e11109e2f88b3c0958e0c6a3423d6aebbb761ee9 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 10 Feb 2022 00:20:47 +0300 Subject: [PATCH 137/389] Reduce the size of the icon in the listview --- src/components/listview/listview.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/listview/listview.scss b/src/components/listview/listview.scss index 063eb74de5..a6d1fc7efa 100644 --- a/src/components/listview/listview.scss +++ b/src/components/listview/listview.scss @@ -164,6 +164,10 @@ padding: 0.2em; } +.listItemImage .cardImageIcon { + font-size: 3em; +} + @media all and (max-width: 64em) { .listItemImage-large { width: 22vw; From c4125313c1a08ec11c00d4323164b1637e037c07 Mon Sep 17 00:00:00 2001 From: Oskari Lavinto Date: Thu, 10 Feb 2022 08:33:31 +0000 Subject: [PATCH 138/389] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index f629c6af59..73ea026ec6 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -117,7 +117,7 @@ "ButtonRefreshGuideData": "Päivitä oppaan tiedot", "ButtonRemove": "Poista", "ButtonRename": "Nimeä uudelleen", - "ButtonResetEasyPassword": "Nollaa PIN-koodi", + "ButtonResetEasyPassword": "Poista Helppo PIN -koodi", "ButtonResume": "Jatka", "ButtonRevoke": "Peruuta", "ButtonScanAllLibraries": "Skannaa kaikki kirjastot", @@ -145,7 +145,7 @@ "ColorTransfer": "Värien siirto", "CommunityRating": "Yhteisön arvosana", "Composer": "Säveltäjä", - "ConfigureDateAdded": "Lisäyspäivämäärän määritykset löytyvät palvelimen hallintapaneelin kirjastoasetuksista", + "ConfigureDateAdded": "Määritä miten 'Lisäyspäivä' tunnistetaan kohdasta Hallintapaneeli > Kirjastot > NFO-asetukset", "ConfirmDeleteImage": "Poista kuva?", "ConfirmDeleteItem": "Tämän kohteen poistaminen poistaa sen sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", "ConfirmDeleteItems": "Näiden kohteiden poistaminen poistaa ne sekä tiedostojärjestelmästä että mediakirjastosta. Haluatko varmasti jatkaa?", @@ -186,7 +186,7 @@ "DownloadsValue": "{0} latausta", "DrmChannelsNotImported": "Kanavia joissa on tekijänoikeusesto-ohjelmia, ei ladata.", "DropShadow": "Varjostus", - "EasyPasswordHelp": "Yksinkertaista PIN-koodiasi käytetään offline-käyttöön tuetuilla päätteillä. Sitä voidaan käyttää myös helppoon sisäänkirjautumiseen paikallisverkosta.", + "EasyPasswordHelp": "Helppo PIN -koodiasi käytetään yhteydettömään käyttöön tuetuilla päätelaitteilla sekä lähiverkon sisäänkirjautumiseen.", "Edit": "Muokkaa", "EditImages": "Muokkaa kuvia", "EditMetadata": "Muokkaa metadataa", @@ -245,7 +245,7 @@ "PlayFromBeginning": "Toista alusta", "PlayNext": "Toista seuraava", "Play": "Toista", - "PinCodeResetConfirmation": "Haluatko varmasti poistaa PIN-koodin?", + "PinCodeResetConfirmation": "Haluatko varmasti poistaa Helppo PIN -koodin?", "People": "Ihmiset", "OriginalAirDateValue": "Alkuperäinen esityspäivä: {0}", "OptionWeekly": "Viikottainen", @@ -365,7 +365,7 @@ "HeaderProfileServerSettingsHelp": "Nämä arvot mukauttavat sitä, kuinka palvelin esittää itsensä laitteelle.", "HeaderProfileInformation": "Profiili-informaatio", "HeaderPreferredMetadataLanguage": "Ensisijainen metatietojen kieli", - "HeaderPinCodeReset": "Nollaa PIN-koodi", + "HeaderPinCodeReset": "Poista Helppo PIN -koodi", "HeaderPhotoAlbums": "Kuva-albumit", "HeaderPaths": "Tiedostosijainnit", "HeaderPasswordReset": "Salasanan nollaus", @@ -380,7 +380,7 @@ "HeaderIdentificationCriteriaHelp": "Lisää ainakin yksi tunnistuskriteeri.", "HeaderExternalIds": "Ulkoiset IDt:", "HeaderDirectPlayProfile": "Muuntamattoman toiston profiili", - "HeaderEasyPinCode": "Yksinkertainen PIN-koodi", + "HeaderEasyPinCode": "Helppo PIN -koodi", "HeaderDownloadSync": "Lataus ja synkronointi", "HeaderDeveloperInfo": "Kehittäjäinfo", "HeaderDetectMyDevices": "Havaitse laitteitani", @@ -816,7 +816,7 @@ "LabelEnableBlastAliveMessages": "Lähetä hereilläolo -viesti", "LabelEnableBlastAliveMessagesHelp": "Ota tämä käyttöön, jos muilla verkon UPnP-laitteilla on ongelmia palvelimen havaitsemisessa.", "LabelEnableDlnaClientDiscoveryInterval": "Päätelaitteen tunnistustiheys:", - "LabelEasyPinCode": "Yksinkertainen PIN-koodi:", + "LabelEasyPinCode": "Helppo PIN -koodi:", "LabelDynamicExternalId": "{0} Id:", "LabelDisplayLanguageHelp": "Jellyfin-käännös on jatkuva projekti.", "LabelDisplayLanguage": "Näytön kieli:", @@ -870,7 +870,7 @@ "PlayNextEpisodeAutomatically": "Toista seuraava jakso automaattisesti", "PlayCount": "Toistokerrat", "PlaybackData": "Toistotiedot", - "PinCodeResetComplete": "PIN-koodi on poistettu.", + "PinCodeResetComplete": "Helppo PIN -koodi on poistettu.", "Overview": "Yleiskatsaus", "OptionWakeFromSleep": "Herätä lepotilasta", "OptionUnairedEpisode": "Julkaisemattomat jaksot", @@ -1166,7 +1166,7 @@ "LabelModelName": "Mallinimi:", "LabelModelDescription": "Mallikuvaus:", "LabelModelNumber": "Mallinumero:", - "LabelInNetworkSignInWithEasyPassword": "Salli kirjautuminen PIN-koodilla lähiverkossa", + "LabelInNetworkSignInWithEasyPassword": "Mahdollista sisäänkirjautuminen lähiverkossa Helppo PIN -koodilla", "HeaderCodecProfileHelp": "Koodekkiprofiilit ilmaisevat laitteen rajoitukset toistettaessa tiettyjä koodekkeja. Jos rajoitusta sovelletaan, media transkoodataan, vaikka sen koodekki olisikin määritetty muuntamattomalle toistolle.", "Authorize": "Valtuuta", "EnableAutoCast": "Aseta oletukseksi", @@ -1186,7 +1186,7 @@ "HeaderTranscodingProfileHelp": "Lisää transkoodausprofiileja osoittamaan, mitä muotoja tulisi käyttää, kun transkoodaus on tarpeen.", "LabelAlbumArtMaxResHelp": "'upnp:albumArtURI'-tietueen välityksellä näytettävän albumitaiteen enimmäistarkkuus.", "KnownProxiesHelp": "Pilkulla eroteltu luettelo välityspalvelinten IP-osoitteista tai isäntänimistä, joita käytetään kun yhdistetään Jellyfin-palvelimeesi. Tämä vaaditaan X-Forwarded-For-otsikkojen oikeaan käyttöön. Tallennuksen jälkeen vaaditaan uudelleenkäynnistys.", - "LabelInNetworkSignInWithEasyPasswordHelp": "Kirjaudu helppokäyttöisen PIN-koodin avulla sisään lähiverkon päätteisiin. Normaalia salasanaasi tarvitaan vain, kun kirjaudut sisään etäverkosta. Jos PIN-koodi jätetään tyhjäksi, et tarvitse salasanaa kotiverkossasi.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Kirjaudu lähiverkon päätelaitteisiin Helppo PIN -koodilla. Tavallista salasanaa tarvitaan vain kirjauduttaessa etäverkoista. Jos PIN-koodia ei määritetä, ei lähiverkon kirjautumiseen tarvita salasanaa.", "LabelDateAddedBehaviorHelp": "Jos metatietoarvo löytyy, käytetään näiden valintojen sijaan sitä.", "LabelCurrentStatus": "Nykyinen tila:", "LabelCachePathHelp": "Määritä välimuistitiedostojen, kuten kuvien, tiedostosijainti. Jätä tyhjäksi käyttääksesi palvelimen oletusta.", @@ -1232,7 +1232,7 @@ "EnableTonemapping": "Käytä sävykartoitusta", "EnableBlurHashHelp": "Kuvat, joita ladataan vielä, näytetään yksilöllisellä paikkamerkillä.", "EnableBlurHash": "Ota sumennetut paikkamerkit käyttöön kuville", - "AllowTonemappingHelp": "Sävykartoitus voi muuttaa videon dynaamisen alueen HDR: stä SDR: ksi säilyttäen samalla kuvan yksityiskohdat ja värit, jotka ovat erittäin tärkeitä tietoja alkuperäisen kohtauksen edustamiseksi. Toimii tällä hetkellä vain videoiden transkoodaamisessa upotetuilla HDR10- tai HLG-metatiedoilla. Jos toisto ei ole sujuvaa tai epäonnistuu, harkitse vastaavan laitteistodekooderin sammuttamista.", + "AllowTonemappingHelp": "Sävykartoitus voi muuttaa videon dynaamisen alueen HDR:stä SDR:ksi säilyttäen samalla kuvan yksityiskohdat ja värit, jotka ovat kohtauksen alkuperäisen ilmeen kannalta erittäin tärkeitä. Toimii tällä hetkellä vain HDR10- ja HLG-videoiden kanssa ja edellyttää soveltuvaa OpenCL- tai CUDA-suoritusalustaa.", "LabelffmpegPathHelp": "FFmpeg-sovellustiedoston tai -kansion tiedostosijainti.", "LabelKodiMetadataEnablePathSubstitutionHelp": "Mahdollistaa kuvien tiedostosijaintien korvauksen palvelimen korvausasetuksien perusteella.", "ThumbCard": "Pienoiskortti", @@ -1377,7 +1377,7 @@ "MessagePluginInstalled": "Laajennus onnistuneesti asennettu. Palvelin on käynnistettävä uudestaan, jotta muutokset tulevat voimaan.", "MessagePluginInstallDisclaimer": "Yhteisön rakentamat laajennukset ovat mainio tapa parantaa kokemustasi lisäominaisuuksien kanssa. Ota huomioon, että ne voivat vaikuttaa palvelimeen lisäämällä taustaprosessoinnin tarvetta ja pidentämällä kirjastojen skannausta, sekä aiheuttaa järjestelmän epävakautta.", "MessagePlayAccessRestricted": "Tämän sisällön toistoa on rajoitettu. Lisätietoja saat palvelimen ylläpitäjältä.", - "MessagePasswordResetForUsers": "Seuraavien käyttäjien salasana on nollattu. He voivat nyt kirjautua pin-koodeilla, joita käytettiin nollaukseen.", + "MessagePasswordResetForUsers": "Seuraavien käyttäjien salasanat on tyhjennetty ja he voivat nyt kirjautua käyttäen tyhjennykseen käytettäjä Helppo PIN -koodeja.", "MessageNoTrailersFound": "Asenna trailerit-kanava parantaaksesi elokuvakokemusta lisäämällä internet-trailereiden kirjasto.", "MessageNoRepositories": "Ei ohjelmavarastoja.", "MessageNoNextUpItems": "Ei tuloksia. Aloita sarjojesi katselu!", @@ -1416,7 +1416,7 @@ "HeaderSyncPlaySettings": "SyncPlayn asetukset", "Engineer": "Ääniteknikko", "LabelDisableCustomCss": "Poista palvelimen toimittamat mukautetut CSS-tyylimääritykset käytöstä.", - "DisableCustomCss": "Poista käytöstä palvelimen mukautettu CSS-tyyli", + "DisableCustomCss": "Älä käytä palvelimella määritettyä, mukautettua CSS-tyyliä", "Console": "Konsoli", "Conductor": "Kapellimestari", "Casual": "Rento", @@ -1467,5 +1467,6 @@ "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "Toiston enimmäisviive (millisekunteina), jonka jälkeen käytetään SpeedToSyncin sijaan SkipToSyncia.", "LabelSyncPlaySettingsMaxDelaySpeedToSync": "SpeedToSync-enimmäisviive:", "LabelSyncPlaySettingsMinDelaySkipToSyncHelp": "Toiston vähimmäisviive (millisekunteina), jonka jälkeen SpeedToSync pyrkii korjaamaan toistokohdan.", - "LabelSyncPlaySettingsMinDelaySpeedToSync": "SkipToSync-vähimmäisviive:" + "LabelSyncPlaySettingsMinDelaySpeedToSync": "SkipToSync-vähimmäisviive:", + "ButtonExitApp": "Sulje sovellus" } From 5f6ae285c825e0c481b99bc378b1197bb7c9c429 Mon Sep 17 00:00:00 2001 From: Csaba Date: Thu, 10 Feb 2022 07:09:48 +0000 Subject: [PATCH 139/389] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 993e850208..4ecc8bc9ff 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1613,5 +1613,14 @@ "PreferSystemNativeHwDecoder": "Előnyben részesítse az operációs rendszer natív DXVA vagy VA-API hardveres dekódereit", "ContainerBitrateExceedsLimit": "A videó bitrátája meghaladja a limitet", "SelectAll": "Összes kiválasztása", - "ButtonExitApp": "Kilépés az alkalmazásból" + "ButtonExitApp": "Kilépés az alkalmazásból", + "Clip": "Rövidfilm", + "ThemeVideo": "Téma Videó", + "ThemeSong": "Főcímdal", + "Sample": "Minta", + "Scene": "Jelenet", + "Interview": "Interjú", + "DeletedScene": "Törölt jelenet", + "BehindTheScenes": "A színfalak mögött", + "Trailer": "Filmelőzetes" } From d954f7774c37897dda72237970774ebccb8adec4 Mon Sep 17 00:00:00 2001 From: millallo Date: Thu, 10 Feb 2022 07:12:17 +0000 Subject: [PATCH 140/389] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index 4fd2e7d50a..4058d09f0a 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1612,5 +1612,13 @@ "UnknownVideoStreamInfo": "Le informazioni della traccia video non sono disponibili", "VideoBitrateNotSupported": "Il bitrate video non è supportato", "AudioIsExternal": "Il flusso audio è esterno", - "SelectAll": "Seleziona Tutto" + "SelectAll": "Seleziona Tutto", + "ThemeVideo": "Video tematico", + "ThemeSong": "Colonna sonora", + "Scene": "Scena", + "Interview": "Intervista", + "DeletedScene": "Scena rimossa", + "BehindTheScenes": "Dietro le quinte", + "Clip": "Corto metraggio", + "ButtonExitApp": "Esci dall'Applicazione" } From 1ed16d6ac19026814a50c638d1891c8a24ce1f70 Mon Sep 17 00:00:00 2001 From: Piccar Date: Thu, 10 Feb 2022 12:46:27 +0100 Subject: [PATCH 141/389] Removed Duplicates --- src/themes/appletv/theme.css | 4 ---- src/themes/blueradiance/theme.css | 4 ---- src/themes/purplehaze/theme.css | 4 ---- 3 files changed, 12 deletions(-) diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index a964e90d5c..7fe029aeb6 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -189,10 +189,6 @@ html { color: #fff; } -.actionSheetMenuItem:hover { - background-color: #ddd; -} - .toast { background: #303030; color: rgba(255, 255, 255, 0.87); diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index f8fb237172..a75674b194 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -184,10 +184,6 @@ html { opacity: 0.5; } -.actionSheetMenuItem:hover { - background-color: rgba(0, 0, 0, 0.5); -} - .toast { background: #303030; color: #fff; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 93e4c467c4..1541fda33a 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -277,10 +277,6 @@ a[data-role=button] { opacity: 0.5; } -.actionSheetMenuItem:hover { - background-color: rgba(0, 0, 0, 0.5); -} - .toast { background: #303030; color: #f8f8fe; From e1b77229074eb51599052a30e2332f60e26bbbb9 Mon Sep 17 00:00:00 2001 From: hulkhaugen Date: Thu, 10 Feb 2022 12:12:20 +0000 Subject: [PATCH 142/389] =?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 | 93 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 76 insertions(+), 17 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index f7b9f32145..cdb3903e35 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -59,7 +59,7 @@ "ButtonRefreshGuideData": "Oppdater TV-guidedata", "ButtonRemove": "Fjern", "ButtonRename": "Endre navn", - "ButtonResetEasyPassword": "Tilbakestill PIN-kode", + "ButtonResetEasyPassword": "Tilbakestill Enkel PIN-kode", "ButtonResume": "Fortsett", "ButtonRevoke": "Kall tilbake", "ButtonScanAllLibraries": "Søk gjennom alle biblioteker", @@ -84,7 +84,7 @@ "ColorSpace": "Fargeutvalg", "ColorTransfer": "Overføring av farger", "Composer": "Komponist", - "ConfigureDateAdded": "Konfigurer hvordan \"Dato lagt til\" bestemmes på dashbordet under innstillingene for bibliotek", + "ConfigureDateAdded": "Konfigurer hvordan metadata for \"Dato lagt til\" bestemmes på Dashbord > Bibliotek > NFO Innstillinger", "ConfirmDeleteImage": "Slett bilde?", "ConfirmDeleteItem": "Sletting av elementet vil slette det fra både filsystemet og biblioteket. Er du sikker på at du vil fortsette?", "ConfirmDeleteItems": "Sletting av disse elementene vil slette dem fra både filsystemet og mediebiblioteket. Er du sikker på at du vil fortsette?", @@ -757,7 +757,7 @@ "OptionSpecialEpisode": "Spesialepisoder", "OptionSubstring": "Deltekst", "OptionTrackName": "Låtnavn", - "OptionTvdbRating": "TVDB-vurdering", + "OptionTvdbRating": "TheTVDB-vurdering", "OptionUnairedEpisode": "Kommende episoder", "OptionWakeFromSleep": "Våkne fra dvale", "OptionWeekdays": "Ukedager", @@ -775,8 +775,8 @@ "PasswordSaved": "Passord lagret.", "People": "Mennesker", "PictureInPicture": "Bilde i bilde", - "PinCodeResetComplete": "PIN-koden har blitt tilbakestilt.", - "PinCodeResetConfirmation": "Er du sikker på at du vil tilbakestille PIN-koden?", + "PinCodeResetComplete": "Enkel PIN-kode har blitt tilbakestilt.", + "PinCodeResetConfirmation": "Er du sikker på at du vil tilbakestille din Enkle PIN-kode?", "PlaceFavoriteChannelsAtBeginning": "Plasser favorittkanaler i starten", "Play": "Spill av", "PlayAllFromHere": "Spill av alt herfra", @@ -784,7 +784,7 @@ "PlayNext": "Spill av neste", "PlayNextEpisodeAutomatically": "Spill av neste episode automatisk", "Played": "Avspilt", - "PleaseAddAtLeastOneFolder": "Vennligst legg til minst en mappe til dette biblioteket ved å trykke på Legg til-knappen.", + "PleaseAddAtLeastOneFolder": "Vennligst legg til minst en mappe til dette biblioteket ved å trykke på \"+\" knappen i \"Mapper\" seksjonen.", "PleaseConfirmPluginInstallation": "Klikk på OK for å bekrefte at du har lest ovenfor og ønsker å fortsette med installasjon av programtillegget.", "PleaseEnterNameOrId": "Vennligst skriv et navn eller en ekstern ID.", "PleaseRestartServerName": "Vennligst start Jellyfin på nytt på {0}.", @@ -971,13 +971,13 @@ "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 teksting når videoer konverteres, basert på tekstformatet. Ytelsen på serveren vil forbedres dersom tekstingen ikke brennes inn. Velg Automatisk for å brenne inn bildebaserte formater (VOBSUB, PGS, SUB, IDX, ...) og enkelte ASS eller SSA-undertekster.", + "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.", "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.", "DirectStreamHelp2": "Strømforbruk ved direktestrømming avhenger vanligvis av lydprofilen. Bare videostrømmen er fri for kvalitetstap.", "DisplayInMyMedia": "Vis på hjemskjermen", - "DisplayInOtherHomeScreenSections": "Vis i seksjoner på hjemskjermen, som f.eks. siste spilte media og fortsett å se", + "DisplayInOtherHomeScreenSections": "Vis på hjemskjermen, som f.eks. 'Siste spilte media' og 'Fortsett å se'", "EnableThemeSongsHelp": "Spill av temamusikk i bakgrunnen mens du blar i biblioteket.", "EnableThemeVideosHelp": "Spill av temavideoer i bakgrunnen mens du blar i biblioteket.", "HeaderAdmin": "Administrasjon", @@ -1020,7 +1020,7 @@ "LabelDateTimeLocale": "Datoformat:", "LabelType": "Type:", "Large": "Stor", - "DirectStreamHelp1": "Videostrømmen er kompatibel med enheten, men har et inkompatibelt lydformat (DTS, TRUEHD, osv.) eller antall lydkanaler. Videostrømmen ompakkes fortløpende uten kvalitetstap når den sendes til enheten. Bare lydstrømmen blir omkodet.", + "DirectStreamHelp1": "Videostrømmen er kompatibel med enheten, men har et inkompatibelt lydformat (DTS, Dolby TrueHD, osv.) eller antall lydkanaler. Videostrømmen ompakkes fortløpende uten kvalitetstap når den sendes til enheten. Bare lydstrømmen blir omkodet.", "MusicVideo": "Musikkvideo", "Mute": "Demp lyd", "CopyStreamURL": "Kopier strømnettadresse", @@ -1185,9 +1185,9 @@ "OptionLoginAttemptsBeforeLockout": "Bestemmer hvor mange mislykkede innloggingsførsøk som kan finne sted før brukeren blir utestengt.", "OptionProtocolHls": "HTTP-direktestrømming (HLS)", "OptionProtocolHttp": "HTTP", - "PasswordResetProviderHelp": "Velg hvilken metode for tilbakestilling av passord som skal benyttes når denne brukeren ber om å tilbakestille passordet.", + "PasswordResetProviderHelp": "Velg en metode for tilbakestilling av passord som skal benyttes når denne brukeren ber om å tilbakestille passordet.", "PerfectMatch": "Perfekt match", - "PlaybackData": "Avspillingsdata", + "PlaybackData": "Avspillingsinfo", "PlayCount": "Antall avspillinger", "Playlists": "Spillelister", "Previous": "Forrige", @@ -1335,7 +1335,7 @@ "EnableDecodingColorDepth10Vp9": "Aktiver maskinvaredekoding for 10-biters VP9", "EnableDecodingColorDepth10Hevc": "Aktiver maskinvaredekoding for 10-biters HEVC", "ButtonPlayer": "Spiller", - "ButtonCast": "Cast", + "ButtonCast": "Rollebesetning", "Writers": "Forfattere", "TabRepositories": "Kilder", "MessageNoGenresAvailable": "Aktiver noen metadata-kilder for å hente sjangre fra internett.", @@ -1414,11 +1414,11 @@ "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:", - "TonemappingRangeHelp": "Velg utskriftsfargeområdet. Auto er det samme som inngangsområdet.", + "TonemappingRangeHelp": "Velg ut-fargeområdet. Auto er det samme som inn-området.", "LabelTonemappingRange": "Tonemapping-område:", - "TonemappingAlgorithmHelp": "Tonekartlegging kan finjusteres. Hvis du ikke er kjent med disse alternativene er det bare å beholde standardinnstillingen. Den anbefalte verdien er Hable.", + "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 når du omkoder videoer med innebygd HDR10- eller HLG-metadata. Hvis avspillingen ikke er jevn eller mislykkes, bør du vurdere å slå av den tilsvarende maskinvaredekoderen.", + "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.", "OptionMaxActiveSessionsHelp": "En verdi på 0 skrur av denne funksjonen.", "OptionMaxActiveSessions": "Setter maksimalt antall tilgjengelige brukerøkter.", "LabelUserMaxActiveSessions": "Maksimalt antall samtidige brukerøkter:", @@ -1502,7 +1502,7 @@ "LabelSelectMono": "Mono", "LabelSelectAudioChannels": "Kanaler", "LabelAllowedAudioChannels": "Maksimalt antall lydkanaler tillatt", - "AllowVppTonemappingHelp": "Full maskinvarebasert tonekartlegging uten bruk av OpenCL-filter. Fungerer for øyeblikket bare når du omkoder videoer med innebygd HDR10-metadata.", + "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.", "EnableVppTonemapping": "Aktiver VPP-tonekartlegging", "EnableEnhancedNvdecDecoder": "Aktiver forbedret NVDEC-dekoder", "Framerate": "Bildefrekvens", @@ -1513,5 +1513,64 @@ "TextSent": "Tekst sendt.", "MessageSent": "Melding sendt.", "LabelSlowResponseTime": "Tid i millisekunder før responsen regnes som treg:", - "HeaderContinueReading": "Fortsett å lese" + "HeaderContinueReading": "Fortsett å lese", + "DisableCustomCss": "Deaktiver server levert CSS kode", + "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.", + "LabelEnableGamepad": "Aktiver spillkontroller", + "AudioBitDepthNotSupported": "Lydens bit dybde er ikke støttet", + "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.", + "TypeOptionPluralVideo": "Videoer", + "TypeOptionPluralMusicAlbum": "Musikk album", + "TypeOptionPluralMusicArtist": "Musikk artister", + "TypeOptionPluralMusicVideo": "Musikkvideoer", + "TypeOptionPluralSeason": "Sesonger", + "TypeOptionPluralBoxSet": "Samlinger", + "TypeOptionPluralMovie": "Filmer", + "TypeOptionPluralBook": "Bøker", + "TypeOptionPluralSeries": "TV Serier", + "TypeOptionPluralEpisode": "Episoder", + "Track": "Spor", + "BehindTheScenes": "Bak kulissene", + "VideoBitrateNotSupported": "Videoens bitrate er ikke støttet", + "AudioIsExternal": "Lydstrømmen er ekstern", + "Scene": "Scene", + "Interview": "Intervju", + "Sample": "Prøve", + "LabelHardwareEncodingOptions": "Maskinvarekoding alternativer:", + "SelectAll": "Merk alle", + "OtherArtist": "Annen artist", + "ContainerBitrateExceedsLimit": "Videoens bitrate overgår begrensningen", + "Cursive": "Kursiv", + "Console": "Konsoll", + "Conductor": "Dirigent", + "AudioCodecNotSupported": "Lyd kodek er ikke støttet", + "AgeValue": "({0} år gammel)" } From 795d18a0add0edacb635d297e2a076d920729c98 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Thu, 10 Feb 2022 21:24:21 +0000 Subject: [PATCH 143/389] Translated using Weblate (English) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en/ --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index dd15fb8d54..860f67c798 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -75,7 +75,7 @@ "ButtonAudioTracks": "Audio Tracks", "ButtonBack": "Back", "ButtonCancel": "Cancel", - "ButtonCast": "Cast", + "ButtonCast": "Cast the media", "ButtonChangeServer": "Change Server", "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", "ButtonForgotPassword": "Forgot Password", From 222e54dd98587b0ba16f577be9fda95175cc9fee Mon Sep 17 00:00:00 2001 From: WWWesten Date: Thu, 10 Feb 2022 21:25:46 +0000 Subject: [PATCH 144/389] Translated using Weblate (English (United Kingdom)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/en_GB/ --- src/strings/en-gb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 4d011c50f3..43ddf5101f 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1285,7 +1285,7 @@ "ButtonTogglePlaylist": "Playlist", "HeaderDVR": "Digital Recorder", "ApiKeysCaption": "List of the currently enabled API keys", - "ButtonCast": "Cast", + "ButtonCast": "Cast the media", "ButtonSyncPlay": "SyncPlay", "EnableBlurHashHelp": "Images that are still being loaded will be displayed with a blurred placeholder.", "EnableBlurHash": "Enable blurred placeholders for images", From 55568e3bd0c184cdd1a4d6440fdabfc2e21bab87 Mon Sep 17 00:00:00 2001 From: hulkhaugen Date: Thu, 10 Feb 2022 20:18:38 +0000 Subject: [PATCH 145/389] =?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 | 157 +++++++++++++++++++++++++++++--------------- 1 file changed, 103 insertions(+), 54 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index cdb3903e35..8d33f8b913 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -20,7 +20,7 @@ "AllowRemoteAccess": "Tillat eksterne tilkoblinger til denne serveren", "AllowRemoteAccessHelp": "Alle tilkoblinger via nettverk vil blokkeres dersom du ikke aktiverer denne innstillingen.", "Anytime": "Når som helst", - "AroundTime": "Rundt", + "AroundTime": "Omkring {0}", "Artists": "Artister", "AsManyAsPossible": "Så mange som mulig", "AspectRatio": "Størrelsesforhold", @@ -91,7 +91,7 @@ "ConfirmDeletion": "Bekreft sletting", "ConfirmEndPlayerSession": "Vil du avslutte Jellyfin på {0}?", "Connect": "Koble til", - "ContinueWatching": "Fortsett å se på", + "ContinueWatching": "Fortsett å se", "Continuing": "Fortsetter", "CustomDlnaProfilesHelp": "Lag en tilpasset profil til en ny enhet eller for å overstyre en system-profil.", "DeathDateValue": "Døde: {0}", @@ -112,7 +112,7 @@ "Down": "Ned", "Download": "Last ned", "DrmChannelsNotImported": "Kanaler med kopisperre vil ikke bli importert.", - "EasyPasswordHelp": "Din enkle pin-kode brukes for frakoblet tilgang på støttede klienter. Den kan også brukes til enkel pålogging fra lokalt nettverk.", + "EasyPasswordHelp": "Enkel PIN-kode brukes for frakoblet tilgang på støttede klienter. Den kan også brukes til enkel pålogging fra lokalt nettverk.", "Edit": "Rediger", "EditImages": "Endre bilder", "EditSubtitles": "Endre undertekster", @@ -120,10 +120,10 @@ "EnableColorCodedBackgrounds": "Fargekodede bakgrunner", "EnableDisplayMirroring": "Skjermspeiling", "EnableHardwareEncoding": "Aktiver maskinvare-omkoding", - "EnablePhotos": "Vis bilder", + "EnablePhotos": "Vis bildene", "EnablePhotosHelp": "Bilder vil bli oppdaget og vist sammen med andre mediefiler.", - "EnableStreamLooping": "Automatisk looping av livestrømmer", - "EnableStreamLoopingHelp": "Aktiver dette hvis livestrømmer bare inneholder noen få sekunder med data og må forespørres kontinuerlig. Dette kan skape problemer dersom det er aktivert uten at det er behov for det.", + "EnableStreamLooping": "Automatisk loop direktestrømmer", + "EnableStreamLoopingHelp": "Aktiver dette hvis direktestrømmer bare inneholder noen få sekunder med data og må forespørres kontinuerlig. Dette kan skape problemer dersom det er aktivert uten at det er behov for det.", "Ended": "Avsluttet", "EndsAtValue": "Slutter klokken {0}", "Episodes": "Episoder", @@ -150,8 +150,8 @@ "Genres": "Sjangre", "GuestStar": "Gjesteskuespiller", "GuideProviderSelectListings": "Velg oppføringer", - "H264CrfHelp": "Constant Rate Factor (CRF) er standard kvalitetsinnstilling for x264 og x265-koderne. Du kan stille inn verdier mellom 0 og 51, hvor lavere verdier vil resultere i bedre kvalitet (på bekostning av høyere fil-størrelse). Fornuftige verdier ligger mellom 18 og 28. Standard for x264 er 23 og standard for x265 er 28, så du kan bruke det som et utgangspunkt.", - "EncoderPresetHelp": "Velg en raskere verdi for å forbedre ytelsen, eller en lavere verdi for å forbedre kvaliteten.", + "H264CrfHelp": "Constant Rate Factor (CRF) er standard kvalitetsinnstilling for x264 og x265-koderne. Du kan justere verdier mellom 0 og 51, hvor lavere verdier vil resultere i bedre kvalitet (på bekostning av større fil-størrelser). Fornuftige verdier ligger mellom 18 og 28. Standard for x264 er 23 og standard for x265 er 28, så du kan bruke det som et utgangspunkt.", + "EncoderPresetHelp": "Velg en raskere verdi for å forbedre ytelsen, eller en tregere verdi for å forbedre kvaliteten.", "HDPrograms": "HD-programmer", "HardwareAccelerationWarning": "Aktivering av maskinvareakselerasjon kan føre til ustabilitet i enkelte miljøer. Sørg for at operativsystemet og skjermdriverne dine er fullt oppdatert. Hvis du har problemer med å spille videoer etter å ha aktivert dette, må du deaktivere innstillingen igjen.", "HeaderAccessSchedule": "Tidsplan for tilgang", @@ -176,15 +176,15 @@ "HeaderCastAndCrew": "Skuespillere & mannskap", "HeaderChannelAccess": "Kanal-tilgang", "HeaderCodecProfile": "Kodekprofil", - "HeaderCodecProfileHelp": "Kodekprofiler indikerer begrensningene til en enhet ved avspilling av bestemte kodeker. Hvis en begrensning gjelder, vil media bli omkodet, selv om kodeken er konfigurert for direkteavspilling.", + "HeaderCodecProfileHelp": "Kodekprofiler indikerer begrensningene til en enhet ved avspilling av bestemte kodeker. Hvis en begrensning gjelder vil mediet bli omkodet, selv om kodeken er konfigurert for direkteavspilling.", "HeaderConfirmPluginInstallation": "Bekreft installasjon av tillegg", "HeaderConfirmProfileDeletion": "Bekreft sletting av profil", "HeaderConfirmRevokeApiKey": "Tilbakekall API-nøkkel", "HeaderConnectToServer": "Koble til server", "HeaderConnectionFailure": "Tilkobling feilet", "HeaderContainerProfile": "Kontainerprofil", - "HeaderContainerProfileHelp": "Kontainerprofiler 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 å høre på", + "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.", + "HeaderContinueListening": "Forsett å lytte", "HeaderContinueWatching": "Fortsett å se", "HeaderCustomDlnaProfiles": "Tilpassede profiler", "HeaderDateIssued": "Dato utstedt", @@ -248,7 +248,7 @@ "HeaderPassword": "Passord", "HeaderPasswordReset": "Tilbakestill passord", "HeaderPaths": "Filbaner", - "HeaderPinCodeReset": "Tilbakestill PIN-kode", + "HeaderPinCodeReset": "Tilbakestill Enkel PIN-kode", "HeaderPlayAll": "Spill alle", "HeaderPlayOn": "Forsett avspilling", "HeaderPlayback": "Medieavspilling:", @@ -309,7 +309,7 @@ "HeaderXmlSettings": "XML-innstillinger", "HeaderYears": "År", "Help": "Hjelp", - "HideWatchedContentFromLatestMedia": "Skjul sett innhold fra nyeste media", + "HideWatchedContentFromLatestMedia": "Skjul sett innhold fra \"Site medier\"", "Identify": "Identifiser", "Images": "Bilder", "ImportFavoriteChannelsHelp": "Kun kanaler som er markert som favoritt på tuneren bli importert.", @@ -342,7 +342,7 @@ "LabelBirthDate": "Fødselsdato:", "LabelBirthYear": "Fødselsår:", "LabelBlastMessageInterval": "Intervall mellom keepalive-meldinger:", - "LabelBlastMessageIntervalHelp": "Bestemmer intervallet i sekunder mellom keepalive-meldinger.", + "LabelBlastMessageIntervalHelp": "Velg varighet i sekunder mellom keepalive-meldinger.", "LabelCachePath": "Filbane for mellomlagring:", "LabelCachePathHelp": "Angi en egendefinert plassering for mellomlagrede filer, som f.eks. bilder. La feltet stå tomt for å bruke standardverdi.", "LabelCancelled": "Avbrutt", @@ -356,14 +356,14 @@ "LabelCriticRating": "Kritikervurdering:", "LabelCurrentPassword": "Nåværende passord:", "LabelCustomCertificatePath": "Egendefinert filbane for SSL-sertifikat:", - "LabelCustomCss": "Tilpasset CSS:", - "LabelCustomCssHelp": "Bruk tilpassede stiler på web-grensesnittet.", + "LabelCustomCss": "Tilpasset CSS-kode:", + "LabelCustomCssHelp": "Bruk din tilpassede CSS-kode for tema/merkevare på web-grensesnittet.", "LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det være tomt for å bruke navnet som enheten rapporterer.", "LabelCustomRating": "Egen aldersgrense:", "LabelDateAdded": "Dato lagt til:", "LabelDateAddedBehavior": "Hvordan bestemme \"Dato lagt til\" for nytt innhold:", "LabelDateAddedBehaviorHelp": "Hvis en metadataverdi finnes, vil den alltid bli brukt fremfor noen av disse valgene.", - "LabelDay": "Dag:", + "LabelDay": "Ukedag:", "LabelDeathDate": "Dødsdato:", "LabelDefaultUser": "Standardbruker:", "LabelDefaultUserHelp": "Avgjør hvilket bibliotek som skal vises på tilkoblede enheter. Dette kan endres for hver enkelt enhet gjennom profiler.", @@ -379,19 +379,19 @@ "LabelDownloadLanguages": "Last ned språk:", "LabelEasyPinCode": "Enkel PIN-kode:", "LabelEmbedAlbumArtDidl": "Bygg inn albumbilder i DIDL", - "LabelEmbedAlbumArtDidlHelp": "Noen enheter foretrekker denne metoden for å motta albumomslag. Andre vil kunne få problemer med avspilling hvis dette alternativet er aktivert.", + "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.", "LabelEnableBlastAliveMessages": "Kringkast keepalive-meldinger", "LabelEnableBlastAliveMessagesHelp": "Aktiver hvis serveren ikke blir konsekvent oppdaget av andre UPnP-enheter på nettverket ditt.", "LabelEnableDlnaClientDiscoveryInterval": "Oppdateringsintervall for klient:", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bestemmer intervallet i sekunder mellom SSDP-søk.", + "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 DLNA Play To", + "LabelEnableDlnaPlayTo": "Aktiver \"Avspill med\" DLNA-funksjon", "LabelEnableDlnaPlayToHelp": "Jellyfin kan oppdage enheter i nettverket ditt og tilby muligheten å fjernstyre dem.", "LabelEnableDlnaServer": "Aktiver DLNA-server", - "LabelEnableDlnaServerHelp": "Tillater at UPnP-enheter på nettverket ditt kan bla gjennom og spille av innhold.", + "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.", "LabelEnableSingleImageInDidlLimit": "Begrens til ett integrert bilde", @@ -409,7 +409,7 @@ "LabelFriendlyName": "Egendefinert navn:", "LabelServerNameHelp": "Dette navnet vil bli brukt for å identifisere serveren. Standardverdien er serverens vertsnavn.", "LabelGroupMoviesIntoCollections": "Gruppér filmer i samlinger", - "LabelGroupMoviesIntoCollectionsHelp": "Ved visning av filmlister, vil filmer i en samling bli vist som ett gruppert element.", + "LabelGroupMoviesIntoCollectionsHelp": "Ved valg av filmlistevisning, vil samlinger bli vist som ett element med grupperte filmer.", "LabelH264Crf": "CRF-verdi for H.264-koding:", "LabelEncoderPreset": "Forhåndsinnstilling for koding:", "LabelHardwareAccelerationType": "Maskinvareakselerasjon:", @@ -423,8 +423,8 @@ "LabelImageFetchersHelp": "Aktiver og ranger dine foretrukne kilder for omslagsbilder i prioritert rekkefølge.", "LabelImageType": "Bildetype:", "LabelImportOnlyFavoriteChannels": "Begrens til kanaler som er merket som favoritt", - "LabelInNetworkSignInWithEasyPassword": "Tillat innlogging med PIN-kode på det lokale nettverket", - "LabelInNetworkSignInWithEasyPasswordHelp": "Bruk den enkle PIN-koden for å logge inn på klienter som befinner seg i hjemmenettverket. Det vanlige passordet ditt vil kun være nødvendig ved pålogging fra eksternt nettverk. Hvis PIN-koden er tom, trenger du ikke passord i hjemmenettverket.", + "LabelInNetworkSignInWithEasyPassword": "Tillat innlogging med Enkel PIN-kode på det lokale nettverket", + "LabelInNetworkSignInWithEasyPasswordHelp": "Bruk Enkel PIN-koden for å logge inn på klienter som befinner seg i hjemmenettverket. Det vanlige passordet ditt vil kun være nødvendig ved pålogging fra eksternt nettverk. Hvis PIN-koden er tom, trenger du ikke passord i hjemmenettverket.", "LabelKeepUpTo": "Bevar opptil:", "LabelKidsCategories": "Barnekategorier:", "LabelKodiMetadataDateFormat": "Utgivelsesdatoformat:", @@ -581,7 +581,7 @@ "LabelYoureDone": "Du er ferdig!", "LabelZipCode": "Postnummer:", "LabelffmpegPath": "Filbane til FFmpeg:", - "LabelffmpegPathHelp": "Filbanen til applikasjonsfilen for FFmpeg eller mappen som inneholder FFmpeg.", + "LabelffmpegPathHelp": "Filbanen til FFmpeg applikasjonen eller mappe som inneholder FFmpeg.", "LatestFromLibrary": "Siste {0}", "LibraryAccessHelp": "Velg bibliotekene som skal deles med denne brukren. Administratorer vil ha mulighet til å gjøre endringer i alle mapper ved å bruke metadatabehandleren.", "Live": "Direkte", @@ -641,7 +641,7 @@ "MessageNoPluginsInstalled": "Du har ingen programtillegg installert.", "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 PIN-kodene som ble brukt til å utføre tilbakestillingen.", + "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.", "MessagePleaseEnsureInternetMetadata": "Vennligst sørg for at nedlasting av metadata fra internett er slått på.", "MessagePleaseWait": "Vennligst vent. Dette kan ta noe tid.", @@ -888,7 +888,7 @@ "TabResponses": "Svar", "TabScheduledTasks": "Planlagte oppgaver", "TabUpcoming": "Kommende", - "Tags": "Emneknagger", + "Tags": "Tagger", "TellUsAboutYourself": "Fortell oss litt om deg selv", "ThisWizardWillGuideYou": "Denne veiviseren vil hjelpe deg gjennom installasjonsprosessen. Velg ønsket språk for å komme i gang.", "Thursday": "Torsdag", @@ -977,13 +977,13 @@ "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.", "DirectStreamHelp2": "Strømforbruk ved direktestrømming avhenger vanligvis av lydprofilen. Bare videostrømmen er fri for kvalitetstap.", "DisplayInMyMedia": "Vis på hjemskjermen", - "DisplayInOtherHomeScreenSections": "Vis på hjemskjermen, som f.eks. 'Siste spilte media' og 'Fortsett å se'", - "EnableThemeSongsHelp": "Spill av temamusikk i bakgrunnen mens du blar i biblioteket.", + "DisplayInOtherHomeScreenSections": "Vis på hjemskjermen, som f.eks. \"Siste media\" og \"Fortsett å se\"", + "EnableThemeSongsHelp": "Spill av temamusikken i bakgrunnen mens du blar i biblioteket.", "EnableThemeVideosHelp": "Spill av temavideoer i bakgrunnen mens du blar i biblioteket.", "HeaderAdmin": "Administrasjon", "LabelEnableHardwareDecodingFor": "Aktiver maskinvaredekoding for:", "LabelMetadata": "Metadata:", - "LabelAlbumArtHelp": "PN brukt som albumomslag innen dlna:profileID-attributten på upnp:albumArtURI. Noen enheter krever en spesifikk verdi, uavhengig av størrelsen på bildet.", + "LabelAlbumArtHelp": "PN brukt som albumomslag innen \"dlna:profileID\"-attributten på \"upnp:albumArtURI\". Noen enheter krever en spesifikk verdi, uavhengig av størrelsen på bildet.", "LabelPlayMethod": "Avspillingsmetode:", "LabelTranscodes": "Omkodede filer:", "MediaInfoLayout": "Oppsett", @@ -1013,10 +1013,10 @@ "HeaderFetcherSettings": "Henteinnstillinger", "TabServer": "Server", "TabStreaming": "Strømming", - "TagsValue": "Emneknagger: {0}", + "TagsValue": "Tagger: {0}", "ThemeSongs": "Temamusikk", "ThemeVideos": "Temavideoer", - "LabelBlockContentWithTags": "Blokker elementer med følgende emneknagger:", + "LabelBlockContentWithTags": "Blokker elementer med følgende tag:", "LabelDateTimeLocale": "Datoformat:", "LabelType": "Type:", "Large": "Stor", @@ -1031,7 +1031,7 @@ "LabelHomeNetworkQuality": "Strømmekvalitet for hjemmenettverk:", "LabelKodiMetadataUser": "Lagre visningsdata til NFO-filer for:", "LabelLanNetworks": "Lokale nettverk:", - "MediaInfoCodecTag": "Kodektagg", + "MediaInfoCodecTag": "Kodek tag", "Metadata": "Metadata", "MessageNoPluginConfiguration": "Dette programtillegget har ingen innstillinger å konfigurere.", "Unmute": "Skru på lyd", @@ -1042,7 +1042,7 @@ "EnableNextVideoInfoOverlayHelp": "Vis informasjon om den neste videoen i spillelisten ved slutten av en video.", "ExtractChapterImagesHelp": "Uthenting av kapittelbilder vil gjøre det mulig for klienter å vise bilder i menyer for å velge kapitel. Denne prosessen kan være treg, ressurskrevende, og kan kreve flere gigabyte med lagringsplass. Prosessen kjører når videoer oppdages, samt som en daglig planlagt hendelse. Tidsplanen kan endres i innstillinger for planlagte hendelser. Det anbefales ikke at denne prosessen kjøres når det er mange aktive brukere innlogget.", "Extras": "Ekstramateriale", - "HeaderKodiMetadataHelp": "For å aktivere eller deaktivere NFO-metadata, endre biblioteket og finn valgene for lagring av metadata.", + "HeaderKodiMetadataHelp": "For å aktivere eller deaktivere NFO metadata, rediger et bibliotek og finn valgene for lagring av metadata.", "HeaderPhotoAlbums": "Fotoalbum", "HeaderSecondsValue": "{0} sekunder", "LabelAllowedRemoteAddresses": "Filter for eksterne IP-adresser:", @@ -1079,7 +1079,7 @@ "DisplayMissingEpisodesWithinSeasons": "Vis manglende episoder i sesonger", "DisplayMissingEpisodesWithinSeasonsHelp": "Dette må også aktiveres for TV-bibliotek i serverinnstillingene.", "EditMetadata": "Endre metadata", - "EnableBackdropsHelp": "Vis bakgrunnsbilder i bakgrunnen på enkelte sider i biblioteket.", + "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", @@ -1097,7 +1097,7 @@ "HeaderAppearsOn": "Deltaker på", "HeaderBlockItemsWithNoRating": "Blokker elementer med manglende eller ukjent aldersgrense:", "HeaderChapterImages": "Kapittelbilder", - "HeaderConfigureRemoteAccess": "Konfigurer fjerntilgang", + "HeaderConfigureRemoteAccess": "Sett opp ekstern tilgang", "HeaderNextEpisodePlayingInValue": "Neste episode starter om {0}", "HeaderNextVideoPlayingInValue": "Neste video starter om {0}", "HeaderSeriesStatus": "Seriestatus", @@ -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 serveroversikt:", + "LabelDashboardTheme": "Tema for Server-dashbord:", "LabelDefaultScreen": "Standardskjerm:", "LabelDropShadow": "Underskygge:", "LabelDynamicExternalId": "{0} ID:", @@ -1138,7 +1138,7 @@ "LabelStatus": "Status:", "LabelSubtitleDownloaders": "Kilder for undertekst:", "LabelTVHomeScreen": "Hjemskjerm for TV-modus:", - "LabelTag": "Tagg:", + "LabelTag": "Tag:", "LabelTextBackgroundColor": "Tekstbagrunnsfarge:", "LabelTextColor": "Tekstfarge:", "LabelTextSize": "Tekststørrelse:", @@ -1166,7 +1166,7 @@ "Menu": "Meny", "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.", + "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.", "MoreMediaInfo": "Medieinformasjon", "MusicAlbum": "Musikkalbum", @@ -1183,7 +1183,7 @@ "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.", - "OptionProtocolHls": "HTTP-direktestrømming (HLS)", + "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.", "PerfectMatch": "Perfekt match", @@ -1320,7 +1320,7 @@ "HeaderServerAddressSettings": "Innstillinger for serveradresse", "HeaderRemoteAccessSettings": "Innstillinger for fjerntilgang", "HeaderHttpsSettings": "HTTPS-innstillinger", - "HeaderDVR": "Opptak", + "HeaderDVR": "Digital opptaker", "ApiKeysCaption": "Liste over aktive API-nøkler", "EnableDetailsBannerHelp": "Viser et bildebanner øverst på detaljsiden.", "EnableDetailsBanner": "Detaljebanner", @@ -1332,8 +1332,8 @@ "MessageNoRepositories": "Ingen kilder.", "EnableFasterAnimationsHelp": "Bruk raskere animasjoner og overganger.", "EnableFasterAnimations": "Raskere animasjoner", - "EnableDecodingColorDepth10Vp9": "Aktiver maskinvaredekoding for 10-biters VP9", - "EnableDecodingColorDepth10Hevc": "Aktiver maskinvaredekoding for 10-biters HEVC", + "EnableDecodingColorDepth10Vp9": "Aktiver 10-biters maskinvaredekoding for VP9", + "EnableDecodingColorDepth10Hevc": "Aktiver 10-biters maskinvaredekoding for HEVC", "ButtonPlayer": "Spiller", "ButtonCast": "Rollebesetning", "Writers": "Forfattere", @@ -1369,12 +1369,12 @@ "Other": "Annet", "VideoAudio": "Film lyd", "Photo": "Bilde", - "LabelAlbumArtMaxResHelp": "Høyeste tillatte oppløsning for album cover som er tilgjengelig via upnp:albumArtURI.", + "LabelAlbumArtMaxResHelp": "Høyeste tillatte oppløsning for albumomslag som er tilgjengelig via \"upnp:albumArtURI\".", "LabelKnownProxies": "Kjente proxyer:", - "LabelIconMaxResHelp": "Maksimal oppløsning av ikoner som vises via upnp:icon egenskapet.", + "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-hoder. Krever omstart etter endring.", - "EnableQuickConnect": "Tillat hurtigtilkobling til denne serveren", + "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", "ButtonUseQuickConnect": "Bruk rask tilkobling", "ButtonActivate": "Aktiver", "Authorize": "Autoriser", @@ -1391,7 +1391,7 @@ "QuickConnect": "Hurtigtilkobling", "LabelQuickConnectCode": "Hurtigtilkoblings-kode:", "EnableTonemapping": "Aktiver tonekartlegging", - "LabelOpenclDeviceHelp": "Dette er OpenCL-enheten som brukes til tonemapping. Venstre side av prikken er plattformnummeret, og høyre side er enhetsnummeret på plattformen. Standardverdien er 0.0. Ffmpeg-applikasjonsfilen som inneholder OpenCL-maskinvareakselerasjonsmetoden kreves.", + "LabelOpenclDeviceHelp": "Dette er OpenCL-enheten som brukes til tonemapping. Venstre side av punktumet er plattformnummeret, og høyre side er enhetsnummeret på plattformen. Standardverdien er 0.0. FFmpeg-applikasjonsfilen som inneholder OpenCL-maskinvareakselerasjonsmetoden kreves.", "LabelOpenclDevice": "OpenCL-enhet:", "MediaInfoColorPrimaries": "Primærfarger", "LabelColorPrimaries": "Primærfarger:", @@ -1467,14 +1467,14 @@ "LabelMaxAudiobookResumeHelp": "Titler antas å være ferdig avspilt hvis de stoppes når gjenværende varighet er mindre en denne verdien.", "LabelMaxAudiobookResume": "Gjenstående antall minutter for å fortsette avspilling av lydbøker:", "LabelIsForced": "Tvunget", - "LabelHDHomerunPortRangeHelp": "Begrenser UDP-portområdet for HD Homerun til denne verdien. (Standard er 1024 - 645535).", - "LabelHDHomerunPortRange": "HD Homerun port-område:", + "LabelHDHomerunPortRangeHelp": "Begrenser UDP-portområdet for HDHomeRun til denne verdien. (Standard er 1024 - 645535).", + "LabelHDHomerunPortRange": "HDHomeRun port-område:", "LabelH265Crf": "CRF-verdi for H.265-koding:", "LabelEnableSSDPTracingHelp": "Aktiver detaljert logging av SSDP-sporing.
ADVARSEL: Dette vil føre til alvorlig degradering av ytelse.", "LabelEnableSSDPTracing": "Aktiver SSDP-sporing:", - "LabelEnableIP6Help": "Aktiverer IPv6-funksjonalitet.", + "LabelEnableIP6Help": "Aktiver IPv6-funksjonalitet.", "LabelEnableIP6": "Aktiver IPv6", - "LabelEnableIP4Help": "Aktiverer IPv4-funksjonalitet.", + "LabelEnableIP4Help": "Aktiver IPv4-funksjonalitet.", "LabelEnableIP4": "Aktiver IPv4", "LabelDropSubtitleHere": "Slipp undertekst her, eller klikk for å bla gjennom.", "LabelCreateHttpPortMapHelp": "Tillat at automatisk portkartlegging oppretter en regel for HTTP-trafikk, i tillegg til HTTPS-trafikk.", @@ -1514,7 +1514,7 @@ "MessageSent": "Melding sendt.", "LabelSlowResponseTime": "Tid i millisekunder før responsen regnes som treg:", "HeaderContinueReading": "Fortsett å lese", - "DisableCustomCss": "Deaktiver server levert CSS kode", + "DisableCustomCss": "Deaktiver tilpasset CSS-kode fra server", "ButtonExitApp": "Avslutt applikasjon", "Arranger": "Arrangør", "DeletedScene": "Slettet scene", @@ -1572,5 +1572,54 @@ "Console": "Konsoll", "Conductor": "Dirigent", "AudioCodecNotSupported": "Lyd kodek er ikke støttet", - "AgeValue": "({0} år gammel)" + "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.", + "LabelMaxDaysForNextUp": "Maks dager i \"Neste\":", + "UseEpisodeImagesInNextUp": "Bruk episodebilder i \"Neste\" og \"Fortsett å se\"", + "Typewriter": "Skrivemaskin", + "TypeOptionPluralAudio": "Lyder", + "SetUsingLastTracksHelp": "Prøv å sett undertekst/lydspor til den som er nærmest den siste videoen.", + "SetUsingLastTracks": "Angi undertekst/lydspor med forrige element", + "Remixer": "Remikser", + "ReleaseGroup": "Utgivelsesgruppe", + "Print": "Skriv ut", + "PreviousChapter": "Forrige kapittel", + "PlaybackErrorPlaceHolder": "Dette er en plassholder for fysiske medier som Jellyfin ikke kan spille av. Vennligst sett inn platen for å spille.", + "NextChapter": "Neste kapittel", + "Mixer": "Mikser", + "MediaInfoTitle": "Tittel", + "Lyricist": "Tekstforfatter", + "Larger": "Stor", + "LabelSyncPlaySettingsSkipToSyncHelp": "Synkroniseringskorrigeringsmetode som består i å søke til den estimerte posisjonen. Synkroniseringskorrigering må være aktivert.", + "LabelSyncPlaySettingsSkipToSync": "Aktiver SkipToSync", + "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.", + "LabelSyncPlaySettingsMinDelaySkipToSync": "SkipToSync minimum forsinkelse:", + "LabelSyncPlaySettingsSpeedToSyncDurationHelp": "Antall millisekunder brukt av SpeedToSync for å korrigere avspillingsposisjonen.", + "LabelSyncPlaySettingsSpeedToSyncDuration": "SpeedToSync varighet:", + "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "Maksimum avspillingsforsinkelse (i millisekunder) hvor SkipToSync brukes istedenfor SpeedToSync.", + "LabelSyncPlaySettingsMaxDelaySpeedToSync": "SpeedToSync maksimal forsinkelse:", + "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "Minimum avspillingsforsinkelse (i millisekunder) hvor SpeedToSync prøver å korrigere avspillingsposisjonen.", + "LabelSyncPlaySettingsMinDelaySpeedToSync": "SpeedToSync minimum forsinkelse:", + "LabelSyncPlaySettingsSyncCorrectionHelp": "Aktiver aktiv synkronisering av avspilling ved enten å øke hastigheten på mediet eller ved å søke til den estimerte posisjonen. Deaktiver dette ved kraftig hakking.", + "LabelSyncPlaySettingsSyncCorrection": "Synkronisering korreksjon", + "LabelSyncPlaySettingsExtraTimeOffsetHelp": "Juster tidsforskyvning manuelt (i millisekunder) med valgt enhet for tidssynkronisering. Juster med forsiktighet.", + "LabelSyncPlaySettingsExtraTimeOffset": "Ekstra tidsforskyvning:", + "LabelSyncPlaySettingsDescription": "Endre SyncPlay innstillinger", + "LabelSortName": "Sorteringsnavn:", + "LabelSlowResponseEnabled": "Logg et advarsel hvis serveren var 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.", + "LabelHardwareEncoding": "Maskinvare koding:", + "LabelAutomaticallyAddToCollection": "Legg til i samling automatisk", + "LabelAutomaticallyAddToCollectionHelp": "Når minst 2 filmer har samme samlingsnavn, legges de automatisk til i samlingen.", + "HeaderSyncPlayTimeSyncSettings": "Synkronisering av tid", + "HeaderSyncPlayPlaybackSettings": "Avspilling", + "HeaderSyncPlaySettings": "SyncPlay Instillinger", + "Casual": "Uformell", + "ErrorPlayerNotFound": "Ingen avspiller funnet for det forespurte mediet.", + "Engineer": "Lydtekniker" } From 447ec931c76faddecbaa99a8748c672b2342fb45 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Thu, 10 Feb 2022 21:25:31 +0000 Subject: [PATCH 146/389] 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 ff5f9fa693..5a65bb6643 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1325,7 +1325,7 @@ "EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с уникальным заполнением.", "EnableBlurHash": "Включить размытые заполнители для изображений", "ButtonSyncPlay": "SyncPlay", - "ButtonCast": "Транслировать", + "ButtonCast": "Трансляция", "TabRepositories": "Репозитории", "MessageNoGenresAvailable": "Включаются какие-либо поставщики метаданных для получения жанров из интернета.", "MessageAddRepository": "Если вы хотите добавить репозиторий, нажмите кнопку рядом с заголовком и заполните необходимую информацию.", From 7dc30aa1f6d98ea9df1c60249e544e52be5c9bb2 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Thu, 10 Feb 2022 21:27:03 +0000 Subject: [PATCH 147/389] 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 6f29c8543b..d2a571729e 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -874,7 +874,7 @@ "MediaInfoAspectRatio": "En/Boy oranı", "RefreshMetadata": "Metaveriyi yenile", "ButtonPlayer": "Oyuncu", - "ButtonCast": "Oyuncular", + "ButtonCast": "Medyayı yayınla", "Option3D": "3D", "EnableFasterAnimationsHelp": "Daha hızlı animasyonlar ve geçişler kullan.", "EnableFasterAnimations": "Daha hızlı animasyonlar", From dc2dc823a87d27cb541300c24cf80fcd2c1fa254 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 11 Feb 2022 00:40:42 +0300 Subject: [PATCH 148/389] Display physical dimensions of player When using browser or system-wide scaling, the player size changes, misleading the user. --- src/plugins/htmlVideoPlayer/plugin.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 783a49e6b6..2b49f99d6a 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1869,9 +1869,10 @@ function tryRemoveElement(elem) { }; categories.push(videoCategory); + const devicePixelRatio = window.devicePixelRatio || 1; const rect = mediaElement.getBoundingClientRect ? mediaElement.getBoundingClientRect() : {}; - let height = parseInt(rect.height); - let width = parseInt(rect.width); + let height = Math.round(rect.height * devicePixelRatio); + let width = Math.round(rect.width * devicePixelRatio); // Don't show player dimensions on smart TVs because the app UI could be lower resolution than the video and this causes users to think there is a problem if (width && height && !browser.tv) { From f870fdccaf4ea7829ec9c52778db7297b50634bd Mon Sep 17 00:00:00 2001 From: Csaba Date: Fri, 11 Feb 2022 05:18:12 +0000 Subject: [PATCH 149/389] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 4ecc8bc9ff..d2bb3c43b7 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1324,7 +1324,7 @@ "EnableBlurHash": "Elmosódott helyettesítőképek engedélyezése", "ShowMore": "Továbbiak megtekintése", "ShowLess": "Kevesebb mutatása", - "ButtonCast": "Vetítés", + "ButtonCast": "Média vetítése", "ButtonSyncPlay": "SyncPlay", "MessageNoGenresAvailable": "Engedélyezz néhány metaadat szolgáltatót, hogy műfaj adatokat tölthess le az internetről.", "EnableFasterAnimationsHelp": "Gyorsabb animációk és áttűnések használata.", From cf7c5ca835dadba397175d8cccba8c967cd0643d Mon Sep 17 00:00:00 2001 From: wolong gl Date: Fri, 11 Feb 2022 05:48:00 +0000 Subject: [PATCH 150/389] 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 | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 406a251523..750af9fea6 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1313,7 +1313,7 @@ "EnableDetailsBannerHelp": "在项目详细信息页面的顶部显示横幅图片。", "LabelSyncPlayLeaveGroupDescription": "关闭同步播放", "EnableDetailsBanner": "详细信息页面的横幅", - "ButtonCast": "投射", + "ButtonCast": "投屏", "ButtonSyncPlay": "同步播放", "EnableBlurHashHelp": "仍在加载的图片将以独特的的占位符显示。", "EnableBlurHash": "为图片启用模糊的占位符", @@ -1612,5 +1612,15 @@ "UnknownVideoStreamInfo": "视频流信息未知", "VideoBitrateNotSupported": "视频的比特率不受支持", "AudioIsExternal": "外部音频流", - "SelectAll": "全选" + "SelectAll": "全选", + "ThemeVideo": "主题视频", + "ThemeSong": "主题曲", + "Sample": "样本", + "Scene": "场景", + "Interview": "面试", + "DeletedScene": "删减场景", + "BehindTheScenes": "幕后花絮", + "Trailer": "预告片", + "Clip": "花絮", + "ButtonExitApp": "退出应用" } From 5378f99c06f36ea5ab5608d2a4163f1c44304662 Mon Sep 17 00:00:00 2001 From: dottokuya Date: Fri, 11 Feb 2022 07:22:03 +0000 Subject: [PATCH 151/389] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index ee4d9e4061..a41407b1c6 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -147,7 +147,7 @@ "AllComplexFormats": "Tất Cả Định Dạng Phức Tạp (ASS, SSA, VobSub, PGS, SUB, IDX, …)", "AllChannels": "Tất cả các kênh", "Alerts": "Cảnh Báo", - "Albums": "", + "Albums": "Album", "Aired": "Đã phát sóng", "AirDate": "Ngày phát sóng", "AdditionalNotificationServices": "Duyệt qua danh mục plugin để cài đặt dịch vụ thông báo bổ sung.", From b9726b7ec881d862f0adba34860071d81f124738 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Fri, 11 Feb 2022 08:25:10 +0000 Subject: [PATCH 152/389] 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 750af9fea6..cfced98b48 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1617,7 +1617,7 @@ "ThemeSong": "主题曲", "Sample": "样本", "Scene": "场景", - "Interview": "面试", + "Interview": "采访", "DeletedScene": "删减场景", "BehindTheScenes": "幕后花絮", "Trailer": "预告片", From d60694b355db46091324edc6e89c88d1d2b54274 Mon Sep 17 00:00:00 2001 From: SenorSmartyPants Date: Fri, 11 Feb 2022 13:23:13 -0600 Subject: [PATCH 153/389] Update src/controllers/itemDetails/index.js Suggested change. Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- 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 6fbed7f444..d88b15b3ca 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -921,7 +921,7 @@ function setInitialCollapsibleState(page, item, apiClient, context, user) { renderScenes(page, item); - if (item.SpecialFeatureCount && item.SpecialFeatureCount != 0) { + if (item.SpecialFeatureCount > 0) { page.querySelector('#specialsCollapsible').classList.remove('hide'); renderSpecials(page, item, user); } else { From 8a362c917c535ef5efcec23d766bab3e21ba1dbd Mon Sep 17 00:00:00 2001 From: JPVenson Date: Fri, 11 Feb 2022 19:17:25 +0000 Subject: [PATCH 154/389] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index c34fa5f6a9..8a57b12124 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1613,5 +1613,13 @@ "ContainerBitrateExceedsLimit": "Die Bitrate des Videos übersteigt das Limit", "PreferSystemNativeHwDecoder": "Präferiere Betriebssystem-native DXVA- oder VA-API-Hardware-Dekoder", "SelectAll": "Alles auswählen", - "ButtonExitApp": "Anwendung schließen" + "ButtonExitApp": "Anwendung schließen", + "ThemeSong": "Titellied", + "Sample": "Ausschnitt", + "Scene": "Szene", + "Interview": "Interview", + "DeletedScene": "Gelöschte Scene", + "BehindTheScenes": "Hinder den Kulissen", + "Trailer": "Vorschau", + "Clip": "Hinder den Kulissen" } From 61c995a305cb0d29386ac904451bf1bedb12108c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 11 Feb 2022 23:04:51 +0000 Subject: [PATCH 155/389] Update dependency follow-redirects to 1.14.7 [SECURITY] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f73e567b08..ecbf473570 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6396,9 +6396,9 @@ } }, "follow-redirects": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", - "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==", + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "dev": true }, "for-in": { From 9bebfdf009bfdcdc88b515fd746a1eed12a2767e Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 11 Feb 2022 23:08:13 +0000 Subject: [PATCH 156/389] Update dependency nanoid to 3.1.31 [SECURITY] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f73e567b08..2fca6b529d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8259,9 +8259,9 @@ "dev": true }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.1.31", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.31.tgz", + "integrity": "sha512-ZivnJm0o9bb13p2Ot5CpgC2rQdzB9Uxm/mFZweqm5eMViqOJe3PV6LU2E30SiLgheesmcPrjquqraoolONSA0A==", "dev": true }, "nanomatch": { From e326e33e6ec789752e367e1207504a5361346204 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 11 Feb 2022 23:10:29 +0000 Subject: [PATCH 157/389] Update dependency postcss [SECURITY] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f73e567b08..6cad397da9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13221,9 +13221,9 @@ "dev": true }, "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -13548,9 +13548,9 @@ } }, "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, "requires": { "chalk": "^2.4.2", From 042de3d42f418916f65c467276398ec73d680771 Mon Sep 17 00:00:00 2001 From: Or Agami Date: Fri, 11 Feb 2022 23:10:48 +0000 Subject: [PATCH 158/389] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/strings/he.json b/src/strings/he.json index 4cdf789cd3..16abe7cf7d 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -2,7 +2,7 @@ "Actor": "שחקן", "Add": "הוסף", "AddToCollection": "הוסף לאוסף", - "AddToPlayQueue": "הוסף לרשימת ניגון", + "AddToPlayQueue": "הוסף לתור ברשימת ניגון", "AddToPlaylist": "הוסף לרשימת ניגון", "AdditionalNotificationServices": "עיין ברשימת התוספים להתקנת שירותי התראות נוספים.", "All": "הכל", @@ -33,7 +33,7 @@ "ChannelNameOnly": "ערוץ {0} בלבד", "ChannelNumber": "מספר ערוץ", "Composer": "מלחין", - "ConfigureDateAdded": "‫הגדר כיצד תאריך ההוספה נקבע בלוח המחוונים תחת הגדרות הספרייה", + "ConfigureDateAdded": "‫הגדר כיצד תאריך ההוספה נקבע בלוח המחוונים ב- Dashboard > Libraries > NFO Settings", "ConfirmDeleteImage": "למחוק את התמונה?", "ConfirmDeleteItem": "מחיקת פריט זה תמחק אותו הן ממערכת הקבצים והן מספריית המדיה שלך. האם אתה בטוח שברצונך להמשיך?", "ConfirmDeleteItems": "מחיקת פריטים אלה תמחק אותם הן ממערכת הקבצים והן מספריית המדיה שלך. האם אתה בטוח שברצונך להמשיך?", @@ -443,7 +443,7 @@ "HeaderContinueWatching": "המשך לצפות", "AllowOnTheFlySubtitleExtraction": "אפשר חילוץ כתוביות בזמן אמת", "AllowHWTranscodingHelp": "אפשר למקלט לקודד הזרמות בזמן אמת. זה עשוי לעזור בהפחתת הקידוד שנעשה ע\"י השרת.", - "AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VOBSUB, PGS, SUB/IDX, …)", + "AllComplexFormats": "כל הפורמטים המורכבים (ASS, SSA, VobSub, PGS, SUB, IDX, …)", "Songs": "שירים", "Shows": "סדרות", "DownloadsValue": "{0} הורדות", @@ -596,7 +596,7 @@ "ChannelAccessHelp": "בחר את הערוצים לשיתוף עם משתמש זה. מנהלים יוכלו לערוך את כל הערוצים בעזרת מנהל המטא-דאטה.", "ButtonResetEasyPassword": "אתחל קוד פין פשוט", "ButtonLibraryAccess": "הרשאות גישה לספרייה", - "BurnSubtitlesHelp": "מחליט אם על השרת לצרוב כתוביות בזמן קידוד וידאו. הימנעות מכך תשפר מאוד את הביצועים. בחר \"אוטומטי\" לצריבת כתוביות על בסיס פורמט תמונה (VOBSUB, PGS, SUB, IDX, …) וכתוביות ASS או SSA מסויימות.", + "BurnSubtitlesHelp": "מחליט אם על השרת לצרוב כתוביות בזמן קידוד וידאו. הימנעות מכך תשפר מאוד את הביצועים. בחר \"אוטומטי\" לצריבת כתוביות על בסיס פורמט תמונה (VobSub, PGS, SUB, IDX, וכו..) וכתוביות ASS או SSA מסוימות.", "Artist": "אמן", "AllowedRemoteAddressesHelp": "רשימת IP \\ מיסוך רשת המופרדת בפסיקים עבור רשתות שיורשו להתחבר מרחוק. במידה ותישאר ריקה, כל הכתובות יורשו להתחבר.", "Album": "אלבום", @@ -788,7 +788,7 @@ "HeaderDateIssued": "תאריך שהונפק", "HeaderConnectionFailure": "כשל בחיבור", "HeaderConfirmProfileDeletion": "אשר את מחיקת הפרופיל", - "HeaderConfigureRemoteAccess": "הגדר את הגישה מרחוק", + "HeaderConfigureRemoteAccess": "הגדר גישה מרחוק", "HeaderCodecProfile": "פרופיל קודק", "HeaderChapterImages": "תמונות פרק", "HeaderChannelAccess": "גישה לערוץ", @@ -835,7 +835,7 @@ "EnableAutoCast": "הגדר כברירת מחדל", "EasyPasswordHelp": "הקוד הסודי הפשוט שלך משמש לגישה לא מקוונת במכשירים נתמכים ויכול לשמש לחיבור פשוט בתוך הרשת.", "DirectStreamHelp2": "צריכת החשמל של ניגון ישיר בד\"כ תלויה בפרופיל השמע. רק זרם הוידאו הוא lossless.", - "DirectStreamHelp1": "זרם הווידיאו תואם את המכשיר, אך יש לו פורמט שמע לא תואם (DTS, TRUEHD וכו ') או מספר ערוצי שמע. זרם הווידאו ייארז מחדש ללא הפסד תוך כדי תנועה לפני שישלח למכשיר. רק זרם השמע יקודד.", + "DirectStreamHelp1": "זרם הווידאו תואם את המכשיר, אך יש לו פורמט שמע לא תואם (DTS, Dolby TrueHD, וכו'...) או מספר ערוצי שמע. זרם הווידאו ייארז מחדש ללא הפסד תוך כדי תנועה לפני שישלח למכשיר. רק זרם השמע יקודד.", "ButtonUseQuickConnect": "השתמש בQuick Connect", "HeaderDeleteDevices": "מחק את כל המכשירים", "HeaderApiKeysHelp": "תוכנות חיצוניות נדרשות להשתמש במפתח API חיצוני על מנת לתקשר עם השרת. מפתחות מונפקים ע\"י התחברות עם משתמש רגיל, או באמצעות הנפקה ידנית של מפתח לתוכנה.", @@ -852,8 +852,8 @@ "EnableBlurHash": "הפעל מצייני מיקום מטושטשים לתמונות", "EnableBlurHashHelp": "תמונות שעדיין נטענות יוצגו עם מציין מיקום ייחודי.", "Bwdif": "BWDIF", - "ButtonCast": "צוות שחקנים", - "AllowTonemappingHelp": "מיפוי-טונים מאפשר המרה של וידאו מ-HDR ל-SDR תוך שמירה על פרטי וצבעי תמונה, החשובים לשימור מידע מהסצינה המקורית. כרגע עובד רק בקידוד קבצים המכילים מטא-דאטה של HDR10 או HLG. אם הוידאו פועל בצורה חלקה או אינו עובד, אנא שקול לכבות את מפענח החומרה התואם.", + "ButtonCast": "שדר את המדיה", + "AllowTonemappingHelp": "מיפוי-טונים מאפשר המרה של וידאו מ-HDR ל-SDR תוך שמירה על פרטי וצבעי תמונה, החשובים לשימור מידע מהסצנה המקורית. כרגע עובד רק בקידוד קבצים של HDR10 או HLG. תכונה זו מצריכה הרצה של OpenCL או CUDA בהתאם.", "Subtitle": "כתובית", "StopRecording": "הפסק הקלטה", "SortByValue": "מיין לפי {0}", @@ -941,7 +941,7 @@ "Framerate": "קצב תמונות", "ErrorPlayerNotFound": "לא נמצא נגן עבור המדיה המבוקשת.", "ErrorAddingListingsToSchedulesDirect": "אירעה שגיאה בהוספת המערך לחשבונך Direct Schedules .אתר Schedules Direct מאפשר רק מספר מצומצם של מערכים לכל חשבון. ייתכן שיהיה עליך להיכנס לאתר Schedules Direct ולהסיר רישומים אחרים מחשבונך לפני שתמשיך.", - "Engineer": "מהנדס", + "Engineer": "מהנדס סאונד", "MusicVideos": "קליפים", "DisablePlugin": "השבת", "DisableCustomCss": "השבת CSS מותאם אישית המסופק על ידי השרת", @@ -962,5 +962,10 @@ "MediaInfoLayout": "פריסה", "MediaInfoLanguage": "שפה", "MediaInfoInterlaced": "שזור", - "MediaInfoFramerate": "קצב תמונות" + "MediaInfoFramerate": "קצב תמונות", + "Console": "קונסול", + "ButtonExitApp": "צא מהאפליקציה", + "ThemeVideo": "סרט נושא", + "Clip": "", + "AllowVppTonemappingHelp": "מנהל התקן Intel למיפוי-טונים. כרכע עובד רק עם רכיבי חומרה מסוימים עם קבצי HDR10, לתכונה זו יש עדיפות גבוהה יותר בהשוואה ל- OpenCL." } From 72d25e23847dce1f98044be667800d8338e3c41e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=80=A0xu=5Fzh?= Date: Sat, 12 Feb 2022 04:07:28 +0000 Subject: [PATCH 159/389] 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index cfced98b48..18d77fb9b7 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -106,7 +106,7 @@ "ConfirmDeletion": "确认删除", "Connect": "连接", "ContinueWatching": "继续观看", - "Continuing": "继续", + "Continuing": "连载中", "CriticRating": "影评评分", "CustomDlnaProfilesHelp": "为新的设备创建自定义配置文件或覆盖原有系统配置文件。", "DateAdded": "加入日期", @@ -163,7 +163,7 @@ "EnableStreamLoopingHelp": "如果直播流仅包含了几秒钟的数据并且需要被不断的请求,请启用此项。如果在没有相关问题的情况下启动此项,可能会导致一些问题。", "EnableThemeSongsHelp": "当浏览媒体库时主题曲将作为背景音乐播放。", "EnableThemeVideosHelp": "当浏览媒体库时主题视频将作为背景视频播放。", - "Ended": "结束", + "Ended": "完结", "EndsAtValue": "结束于 {0}", "Episodes": "剧集", "ErrorAddingListingsToSchedulesDirect": "我们将阵容添加到您的Schedules Direct帐户时出错。 Schedules Direct只允许有限的账号排序。 您可能需要在继续前直接登入Schedules Direct 网站并删除其他列表。", From ccb511a1f006c249965246ebdd71a940e1f1e377 Mon Sep 17 00:00:00 2001 From: Joaquin Olivero Date: Sat, 12 Feb 2022 04:49:36 +0000 Subject: [PATCH 160/389] 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 8f5e566927..ced3eff314 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1400,7 +1400,7 @@ "LabelTonemappingDesat": "Desaturación del mapa de tonos:", "TonemappingRangeHelp": "Seleccione la gama de colores de salida. Auto es el mismo que el rango de entrada.", "TonemappingAlgorithmHelp": "El mapeo de tonos se puede ajustar con precisión. Si no está familiarizado con estas opciones, mantenga las predeterminadas. El valor recomendado es Hable.", - "AllowTonemappingHelp": "El mapeo de tonos puede transformar el rango dinámico de un video de HDR a SDR mientras mantiene los detalles y colores de la imagen, que son información muy importante para representar la escena original. Actualmente solo funciona cuando se transcodifican videos con metadatos HDR10 o HLG integrados. Si la reproducción no es fluida o falla, considere apagar el decodificador de hardware correspondiente.", + "AllowTonemappingHelp": "El mapeo de tonos puede transformar el rango dinámico de un video de HDR a SDR mientras mantiene los detalles y colores de la imagen, que son información muy importante para representar la escena original. Actualmente solo funciona con videos HDR10 o HLG. Esto requiere el OpenCL o CUDA runtime correspondiente.", "QuickConnectNotActive": "La conexión rápida no está activa en este servidor", "QuickConnectNotAvailable": "Pida al administrador del servidor que habilite la conexión rápida", "QuickConnectInvalidCode": "Código de conexión rápida no válido", From 530e3bfb57f9ee13460cce3e43448aa058b2fe38 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sat, 12 Feb 2022 10:09:14 +0000 Subject: [PATCH 161/389] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index a41407b1c6..eab8190b03 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1,7 +1,7 @@ { "Add": "Thêm", "All": "Tất cả", - "MessageBrowsePluginCatalog": "Duyệt qua danh mục plugin của chúng tôi để xem các plugin có sẵn.", + "MessageBrowsePluginCatalog": "Duyệt danh mục plugin của chúng tôi để xem các plugin có sẵn.", "ButtonAddUser": "Thêm Người Dùng", "ButtonCancel": "Hủy bỏ", "ButtonRemove": "Gỡ bỏ", @@ -12,7 +12,7 @@ "DeleteImageConfirmation": "Bạn có chắc muốn xóa hình ảnh này?", "DeleteUser": "Xóa Người Dùng", "FileNotFound": "Không tìm thấy tệp tin.", - "FileReadCancelled": "Tập tin đọc đã bị hủy.", + "FileReadCancelled": "Tệp đọc đã bị hủy.", "FileReadError": "Có một lỗi xảy ra khi đọc tệp tin này.", "HeaderCustomDlnaProfiles": "Hồ sơ khách hàng", "HeaderFeatureAccess": "Truy cập tính năng:", @@ -225,7 +225,7 @@ "DirectStreamHelp2": "Mức độ tổn hao khi phát trực tiếp thường phụ thuộc vào cấu hình âm thanh. Chỉ có luồng video là không mất dữ liệu.", "DirectStreamHelp1": "Luồng video tương thích với thiết bị, nhưng có định dạng âm thanh (DTS, Dolby TrueHD, v.v.) hoặc số kênh âm thanh không tương thích. Luồng video sẽ được đóng gói lại không mất dữ liệu trước khi gửi đến thiết bị. Chỉ luồng âm thanh mới được chuyển mã.", "DirectPlaying": "Phát trực tiếp", - "DeviceAccessHelp": "Thiết lập này chỉ áp dụng cho những thiết bị có thể định danh và sẽ không chặn được truy cập từ trình duyệt. Chọn lọc thiết bị người dùng sẽ chặn người dùng này truy cập từ những thiết bị mới cho đến khi được duyệt.", + "DeviceAccessHelp": "Điều này chỉ áp dụng cho các thiết bị có thể được nhận dạng duy nhất và sẽ không chặn trình duyệt truy cập. Lọc thiết bị người dùng truy cập sẽ chặn họ sử dụng thiết bị mới cho đến khi chúng được phê duyệt tại đây.", "DetectingDevices": "Đang tìm kiếm thiết bị", "Desktop": "Máy tính", "Descending": "Giảm dần", @@ -294,7 +294,7 @@ "HeaderAccessSchedule": "Thời Gian Truy Cập", "HDPrograms": "Chương trình chất lượng cao (HD)", "EncoderPresetHelp": "Chọn một giá trị nhanh hơn để tăng hiệu suất hoặc chậm hơn để tăng chất lượng.", - "H264CrfHelp": "Hệ Số Tỉ Lệ Cố Định (CRF) là cài đặt chất lượng mặc định cho mã hóa x264 và x265. Bạn có thể chỉnh giá trị từ 0 đến 51, giá trị càng nhỏ thì chất lượng càng tốt (dung lượng tệp sẽ lớn hơn). Giá trị vừa phải từ 18 đến 28. Giá trị mặc định cho x264 là 23 và x265 là 28, vì vậy bạn có thể bắt đầu với những giá trị tham khảo này.", + "H264CrfHelp": "'Hệ Số Tỉ Lệ Cố Định' (CRF) là cài đặt chất lượng mặc định cho mã hóa x264 và x265. Bạn có thể chỉnh giá trị từ 0 đến 51, giá trị càng nhỏ thì chất lượng càng tốt (dung lượng tệp sẽ lớn hơn). Giá trị vừa phải từ 18 đến 28. Giá trị mặc định cho x264 là 23 và x265 là 28, vì vậy bạn có thể bắt đầu với những giá trị tham khảo này.", "GuideProviderSelectListings": "Chọn Danh Sách", "GuideProviderLogin": "Đăng nhập", "Guide": "Lịch phát sóng", @@ -309,7 +309,7 @@ "FormatValue": "Định dạng: {0}", "Folders": "Thư Mục", "Filters": "Bộ lọc", - "File": "Tập tin", + "File": "Tệp", "FetchingData": "Đang tải thêm thông tin", "Features": "Mục đặc trưng", "Favorites": "Yêu Thích", @@ -426,12 +426,12 @@ "HeaderSeriesStatus": "Trạng Thái Series", "HeaderSeriesOptions": "Tuỳ Chọn Series", "HeaderSendMessage": "Gửi Tin Nhắn", - "HeaderSelectTranscodingPathHelp": "Duyệt qua hoặc nhập đường dẫn để sử dụng cho các tệp chuyển mã. Thư mục phải được cấp quyền ghi.", + "HeaderSelectTranscodingPathHelp": "Duyệt hoặc nhập đường dẫn dùng cho các tệp chuyển mã. Thư mục phải ghi được.", "HeaderSelectTranscodingPath": "Chọn Đường Dẫn Chuyển Mã", - "HeaderSelectServerCachePathHelp": "Duyệt tìm hoặc nhập vào đường dẫn dùng lưu bộ nhớ tạm máy chủ. Thư mục này phải được cấp quyền ghi.", + "HeaderSelectServerCachePathHelp": "Duyệt hoặc nhập đường dẫn dùng cho các tệp bộ nhớ tạm của máy chủ. Thư mục này phải ghi được.", "HeaderSelectServerCachePath": "Chọn Đường Dẫn Bộ Nhớ Tạm Máy Chủ", "HeaderSelectPath": "Chọn Đường Dẫn", - "HeaderSelectMetadataPathHelp": "Duyệt hoặc nhập đường dẫn sử dụng cho mô tả dữ liệu. Thư mục này phải ghi được.", + "HeaderSelectMetadataPathHelp": "Duyệt hoặc nhập đường dẫn sử dụng cho dữ liệu mô tả . Thư mục này phải ghi được.", "HeaderSelectMetadataPath": "Chọn Đường Dẫn Thông Tin Bổ Trợ", "HeaderSelectCertificatePath": "Chọn Đường Dẫn Đến Chứng Chỉ", "HeaderSecondsValue": "{0} Giây", @@ -462,7 +462,7 @@ "LabelCustomDeviceDisplayNameHelp": "Cung cấp một tên hiển thị riêng hoặc bỏ trống để sử dụng tên có sẵn của thiết bị.", "LabelCustomCssHelp": "Áp dụng mã CSS tùy chỉnh của bạn cho chủ đề/nhãn hiệu trên giao diện web.", "LabelCustomCss": "Mã CSS tùy chỉnh:", - "LabelCustomCertificatePathHelp": "Đường dẫn đến tập tin PKCS #12 chứa chứng chỉ (certificate) và khoá riêng (private key) để bật tính năng TLS trên một tên miền tuỳ chọn.", + "LabelCustomCertificatePathHelp": "Đường dẫn tệp PKCS #12 chứa chứng chỉ và khoá riêng để bật hỗ trợ TLS trên một tên miền tuỳ chọn.", "LabelCustomCertificatePath": "Đường dẫn đến chứng chỉ SSL:", "LabelCriticRating": "Đánh giá của nhà phê bình:", "LabelCorruptedFrames": "Khung hình hỏng:", @@ -592,7 +592,7 @@ "LabelEnableDlnaServerHelp": "Cho phép các thiết bị UPnP trong mạng của bạn duyệt và phát nội dung.", "LabelEnableDlnaServer": "Bật tính năng máy chủ DLNA", "LabelEnableDlnaPlayToHelp": "Phát hiện các thiết bị trong mạng của bạn và cung cấp khả năng điều khiển chúng từ xa.", - "LabelEnableDlnaDebugLoggingHelp": "Tạo những tập tin gỡ lỗi lớn và chỉ nên được sử dụng khi cần thiết để xử lý sự cố.", + "LabelEnableDlnaDebugLoggingHelp": "Tạo tệp nhật ký lớn và chỉ nên dùng khi cần thiết để xử lý sự cố.", "LabelEnableDlnaDebugLogging": "Bật tính năng gỡ lỗi DLNA", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Xác định thời lượng tính bằng giây giữa hai lần tìm kiếm SSDP.", "LabelEnableDlnaClientDiscoveryInterval": "Thời gian dò tìm máy khách:", @@ -616,9 +616,9 @@ "LabelLibraryPageSize": "Kích cỡ trang thư viện:", "LabelLanNetworks": "Mạng Cục Bộ:", "LabelKodiMetadataUserHelp": "Lưu dữ liệu xem vào tệp NFO cho các ứng dụng khác sử dụng.", - "LabelKodiMetadataUser": "Lưu thông tin người xem vào tập tin NFO dành cho:", + "LabelKodiMetadataUser": "Lưu dữ liệu xem người dùng vào tệp NFO cho:", "LabelKodiMetadataSaveImagePathsHelp": "Cài đặt này được khuyến cáo nếu bạn có những hình ảnh đặt tên không đúng với hướng dẫn của Kodi.", - "LabelKodiMetadataSaveImagePaths": "Lưu đường dẫn hình ảnh trong tập tin NFO", + "LabelKodiMetadataSaveImagePaths": "Lưu đường dẫn ảnh trong tệp NFO", "LabelKodiMetadataEnablePathSubstitutionHelp": "Bật thay thế đường dẫn của đường dẫn hình ảnh bằng cách sử dụng cài đặt thay thế đường dẫn của máy chủ.", "LabelKodiMetadataEnablePathSubstitution": "Kích hoạt thay thế đường dẫn", "LabelKodiMetadataEnableExtraThumbsHelp": "Khi tải hình ảnh, chúng có thể được lưu vào cả extrafanart và extrathumbs để tối ưu hoá khả năng tương thích với giao diện Kodi.", @@ -683,7 +683,7 @@ "LabelMethod": "Phương pháp:", "LabelMetadataSaversHelp": "Chọn định dạng tệp dùng để lưu dữ liệu mô tả của bạn.", "LabelMetadataSavers": "Lưu Dữ liệu Mô Tả Dưới Dạng:", - "LabelMetadataReadersHelp": "Sắp xếp thứ tự ưu tiên những dữ liệu mô tả cục bộ. Tập tin đầu tiên được tìm thấy sẽ được đọc.", + "LabelMetadataReadersHelp": "Xếp hạng các nguồn dữ liệu mô tả cục bộ ưa thích của bạn theo thứ tự ưu tiên. Tệp đầu tiên tìm thấy sẽ được đọc.", "LabelMetadataReaders": "Trình đọc dữ liệu mô tả:", "LabelMetadataPathHelp": "Chọn một vị trí tải xuống ảnh bìa minh họa và dữ liệu mô tả.", "LabelMetadataPath": "Đường dẫn dữ liệu mô tả:", @@ -890,7 +890,7 @@ "MessageNoPluginsInstalled": "Bạn chưa cài đặt plugin nào.", "MessageNoMovieSuggestionsAvailable": "Hiện không có đề xuất phim nào. Hãy bắt đầu xem và xếp hạng phim của bạn, sau đó quay lại để xem các đề xuất của bạn.", "MessageNoGenresAvailable": "Kích hoạt cho phép một số bên cung cấp dữ liệu mô tả lấy các thể loại từ internet.", - "MessageNoCollectionsAvailable": "Bộ sưu tập giúp bạn tận hưởng các nhóm Phim, Loạt Phim và Tuyển Tập được cá nhân hóa. Bấm vào nút '+' để bắt đầu tạo bộ sưu tập.", + "MessageNoCollectionsAvailable": "Bộ sưu tập giúp bạn tận hưởng các nhóm Phim, Loạt Phim và Albums được cá nhân hóa. Bấm vào nút '+' để bắt đầu tạo bộ sưu tập.", "MessageAddRepository": "Nếu bạn muốn thêm kho lưu trữ, hãy nhấp vào nút bên cạnh tiêu đề và điền thông tin được yêu cầu.", "LabelRepositoryNameHelp": "Tên tùy chỉnh để phân biệt giữa các kho lưu trữ đã thêm vào máy chủ của bạn.", "LabelRepositoryName": "Tên kho lưu trữ", @@ -1345,7 +1345,7 @@ "MediaInfoColorTransfer": "Chuyển màu", "MediaInfoColorSpace": "Không gian màu", "MediaInfoVideoRange": "Dải động video", - "ButtonCast": "Truyền Trực Tiếp", + "ButtonCast": "Truyền phương tiện", "EnableBlurHash": "Bật làm mờ trình giữ chỗ cho hình ảnh", "OnApplicationStartup": "Khi khởi động ứng dụng", "EveryXHours": "{0} giờ một lần", @@ -1431,7 +1431,7 @@ "EnableFallbackFont": "Bật phông chữ dự phòng", "LabelFallbackFontPathHelp": "Chỉ định đường dẫn chứa phông chữ dự phòng để hiển thị phụ đề ASS / SSA. Tổng kích thước phông chữ tối đa được phép là 20 MB. Các định dạng phông chữ nhẹ và thân thiện với web như woff2 được khuyến khích.", "LabelFallbackFontPath": "Đường dẫn thư mục phông chữ dự phòng:", - "HeaderSelectFallbackFontPathHelp": "Duyệt qua hoặc nhập đường dẫn của thư mục phông chữ dự phòng để sử dụng cho việc hiển thị phụ đề ASS / SSA.", + "HeaderSelectFallbackFontPathHelp": "Duyệt hoặc nhập đường dẫn của thư mục phông chữ dự phòng dùng để hiển thị phụ đề ASS/SSA.", "HeaderSelectFallbackFontPath": "Chọn Đường dẫn Thư mục Phông chữ Dự phòng", "LabelSelectStereo": "Âm Thanh Nổi", "LabelSelectMono": "Âm Thanh Đơn Kênh", @@ -1512,7 +1512,7 @@ "HeaderContinueReading": "Tiếp Tục Đọc", "EnableGamepadHelp": "Nghe đầu vào từ bất kỳ bộ điều khiển được kết nối nào.", "LabelEnableGamepad": "Bật Gamepad", - "Controls": "Kiểm soát", + "Controls": "Điều khiển", "TextSent": "Đã gửi văn bản.", "MessageSent": "Đã gửi tin nhắn.", "LabelSlowResponseTime": "Thời gian tính bằng mili giây sau đó phản hồi được coi là chậm:", From 4dbdd84140b1b6c18825752d6d1ac70e85580b46 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Sat, 12 Feb 2022 20:10:12 +0000 Subject: [PATCH 162/389] Fix eslint errors --- src/components/libraryoptionseditor/libraryoptionseditor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 308e2eb6b7..b8950ebed0 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -416,7 +416,7 @@ import template from './libraryoptionseditor.template.html'; } else { parent.querySelector('.fldAllowEmbeddedSubtitlesContainer').classList.add('hide'); } - + parent.querySelector('.chkAutomaticallyAddToCollectionContainer').classList.toggle('hide', contentType !== 'movies' && contentType !== 'mixed'); return populateMetadataSettings(parent, contentType); @@ -568,7 +568,7 @@ import template from './libraryoptionseditor.template.html'; parent.querySelector('.chkAutomaticallyGroupSeries').checked = options.EnableAutomaticSeriesGrouping; parent.querySelector('#chkEnableEmbeddedTitles').checked = options.EnableEmbeddedTitles; parent.querySelector('#chkEnableEmbeddedEpisodeInfos').value = options.EnableEmbeddedEpisodeInfos; - parent.querySelector("#selectAllowEmbeddedSubtitles").value = options.AllowEmbeddedSubtitles; + parent.querySelector('#selectAllowEmbeddedSubtitles').value = options.AllowEmbeddedSubtitles; parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent; parent.querySelector('#chkSaveSubtitlesLocally').checked = options.SaveSubtitlesWithMedia; parent.querySelector('#chkSkipIfAudioTrackPresent').checked = options.SkipSubtitlesIfAudioTrackMatches; From 623dc0a015c68fa458f67a7f95d42bb8402d1a41 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:24:38 +0000 Subject: [PATCH 163/389] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_MX/ --- src/strings/es-mx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index c2ee5c4b8c..ac61899143 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -1322,7 +1322,7 @@ "EnableDetailsBanner": "Banner de detalles", "ButtonSyncPlay": "SyncPlay", "ButtonPlayer": "Reproductor", - "ButtonCast": "Elenco", + "ButtonCast": "Reproducir contenido en un dispositivo", "EnableBlurHashHelp": "Imágenes que aún están siendo cargadas serán mostradas difuminadas.", "EnableBlurHash": "Habilitar imágenes de fondo difuminadas", "TabRepositories": "Repositorios", From 71edfcfb5862ddfb3773270f83b5cfd3df03646f Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:23:57 +0000 Subject: [PATCH 164/389] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index 22f9ba6840..b7ca52e30a 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1328,7 +1328,7 @@ "ShowMore": "Ver más", "ShowLess": "Ver menos", "ButtonSyncPlay": "SyncPlay", - "ButtonCast": "Enviar", + "ButtonCast": "Transmitir contenido en un dispositivo", "MessageNoGenresAvailable": "Permitir a algunos proveedores de metadatos extraer géneros de Internet.", "EnableDecodingColorDepth10Vp9": "Habilitar la decodificación por hardware de 10 bits para VP9", "EnableDecodingColorDepth10Hevc": "Habilitar la decodificación por hardware de 10 bits para HEVC", From 1b84b0a1f63e55dd5fe1f5a6fce49a72cbca40c0 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:26:34 +0000 Subject: [PATCH 165/389] Translated using Weblate (Persian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fa/ --- src/strings/fa.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fa.json b/src/strings/fa.json index 69d46cd69d..e00e073d12 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -1331,7 +1331,7 @@ "Data": "داده", "ClearQueue": "پاکسازی صف", "ButtonPlayer": "پخش‌کننده", - "ButtonCast": "بازیگران", + "ButtonCast": "نمایش رسانه در دستگاه", "AllowTonemappingHelp": "نگاشت صدا می تواند ضمن حفظ جزئیات و رنگ تصویر ، محدوده دینامیکی فیلم را از HDR به SDR تبدیل کند ، که اطلاعات بسیار مهمی برای نمایش صحنه اصلی است. در حال حاضر فقط هنگام رمزگذاری فیلم ها با فراداده(متادیتا) HDR10 یا HLG تعبیه شده کار می کند. اگر پخش روان نیست یا خراب است ، لطفاً رمزگشای سخت افزار مربوطه را خاموش کنید.", "AllowVppTonemappingHelp": "نگاشت لحنی مبتنی بر سخت افزار کامل بدون استفاده از فیلتر OpenCL. در حال حاضر فقط هنگام رمزگذاری فیلم ها با فراداده HDR10 تعبیه شده کار می کند.", "EnableVppTonemapping": "VPP Tone mapping را فعال کنید", From b326a6acf2dba26a8ab97595f832826f2a352454 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:21:58 +0000 Subject: [PATCH 166/389] Translated using Weblate (Icelandic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/is/ --- src/strings/is-is.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 730de06e55..db91473957 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -446,5 +446,6 @@ "Never": "Aldrei", "Mute": "Þagga", "MusicArtist": "Tónlistarmaður", - "MusicAlbum": "Tónlistaralbúm" + "MusicAlbum": "Tónlistaralbúm", + "ButtonCast": "Senda efni út í tæki" } From 9d597a99bf48a1d73c45376f6dcb8cb9982a0160 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:29:50 +0000 Subject: [PATCH 167/389] =?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 8d33f8b913..c3e73e43ed 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1335,7 +1335,7 @@ "EnableDecodingColorDepth10Vp9": "Aktiver 10-biters maskinvaredekoding for VP9", "EnableDecodingColorDepth10Hevc": "Aktiver 10-biters maskinvaredekoding for HEVC", "ButtonPlayer": "Spiller", - "ButtonCast": "Rollebesetning", + "ButtonCast": "Strøm mediet til enhet", "Writers": "Forfattere", "TabRepositories": "Kilder", "MessageNoGenresAvailable": "Aktiver noen metadata-kilder for å hente sjangre fra internett.", From 82c4c46e094363102e99102eea15cbfa06c88acf Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:31:07 +0000 Subject: [PATCH 168/389] 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 23507ee859..0b1b934363 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1325,7 +1325,7 @@ "ShowMore": "Mostrar mais", "ShowLess": "Mostrar menos", "ButtonSyncPlay": "SyncPlay", - "ButtonCast": "Transmitir", + "ButtonCast": "Converter mídia em dispositivo", "MessageNoGenresAvailable": "Habilitar alguns provedores de metadados a baixar gêneros da internet.", "EnableFasterAnimationsHelp": "Usar animações e transições mais rápidas.", "EnableFasterAnimations": "Animações mais rápidas", From 48ed7d462c1136b1d6720a81946abe6f29b0286e Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:28:40 +0000 Subject: [PATCH 169/389] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_PT/ --- src/strings/pt-pt.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index ce018c9261..a1487e47df 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -1302,7 +1302,7 @@ "MediaInfoColorSpace": "Espaço de cor", "MediaInfoVideoRange": "Intervalo do vídeo", "ButtonPlayer": "Reprodutor", - "ButtonCast": "Elenco", + "ButtonCast": "Transmitir suporte de dados para o dispositivo", "EnableBlurHashHelp": "Imagens que ainda estão a ser descarregadas serão apresentadas num espaço reservado.", "EnableBlurHash": "Ativar espaço desfocado para imagens", "UnsupportedPlayback": "O Jellyfin não consegue descodificar conteúdo protegido por DRM, mas tentará de qualquer forma, incluindo títulos protegidos. Alguns ficheiros reproduziram um ecrã preto devido à encriptação ou a outras funcionalidades não suportadas, como títulos interativos.", From 55e89a64b2518afd1ed4261c9a79036bd2cf295f Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:32:10 +0000 Subject: [PATCH 170/389] 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 c77e02fc29..7613344657 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1317,7 +1317,7 @@ "ClearQueue": "Töm kön", "StopPlayback": "Stoppa uppspelning", "ButtonPlayer": "Spelare", - "ButtonCast": "Roller", + "ButtonCast": "Sänd media till enhet", "EnableBlurHashHelp": "Bilder som fortfarande laddas kommer visas med en unik platshållare.", "EnableBlurHash": "Aktivera suddiga platshållare för bilder", "Writers": "Skribenter", From 23d2847a69951fab7fb92ec40a1c1222847cb9ff Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:19:39 +0000 Subject: [PATCH 171/389] Translated using Weblate (Afrikaans) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/af/ --- src/strings/af.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/af.json b/src/strings/af.json index b0ac48b36e..42dea3a6bc 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -511,7 +511,7 @@ "ColorPrimaries": "Kleur primêre", "ClearQueue": "Maak waglys skoon", "ButtonPlayer": "Speler", - "ButtonCast": "Rolverdeling", + "ButtonCast": "Plaas media", "HeaderSubtitleProfilesHelp": "Ondertitelprofiel beskryf die ondertitel formaat.", "HeaderSubtitleProfiles": "Ondertitelprofiel", "HeaderSubtitleProfile": "Ondertitelprofiel", From 77a430398e19da35fd623421127bde8eb3c5b120 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:25:35 +0000 Subject: [PATCH 172/389] Translated using Weblate (Galician) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/gl/ --- src/strings/gl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/gl.json b/src/strings/gl.json index 72412f3d8c..60e4700330 100644 --- a/src/strings/gl.json +++ b/src/strings/gl.json @@ -64,5 +64,6 @@ "AllowOnTheFlySubtitleExtraction": "Permitir extracción de subtítulos sobre a marcha", "ValueSpecialEpisodeName": "Especial - {0}", "MusicVideos": "Vídeos Musicais", - "OptionBluray": "BD" + "OptionBluray": "BD", + "ButtonCast": "Transmitir contido multimedia a un dispositivo" } From 80970b653b3ad63421172849b49882286d544ee8 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:12:53 +0000 Subject: [PATCH 173/389] Translated using Weblate (Esperanto) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/eo/ --- src/strings/eo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/eo.json b/src/strings/eo.json index b47b400e10..99824f8ef1 100644 --- a/src/strings/eo.json +++ b/src/strings/eo.json @@ -1143,7 +1143,7 @@ "ButtonOk": "Ek", "ButtonMore": "Pli", "ButtonFullscreen": "Plenekranen", - "ButtonCast": "Elsendfluu", + "ButtonCast": "Elsendfluo", "ButtonBack": "Reen", "ButtonArrowRight": "Dekstren", "ButtonArrowLeft": "Maldekstren", From 24525884882936e540ea3601b7e034ccdeaf44e8 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:20:38 +0000 Subject: [PATCH 174/389] Translated using Weblate (Estonian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/et/ --- src/strings/et.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/et.json b/src/strings/et.json index d75914b55c..25cdc52878 100644 --- a/src/strings/et.json +++ b/src/strings/et.json @@ -1585,5 +1585,6 @@ "LabelAutomaticallyAddToCollectionHelp": "Kui vähemalt kahel filmil on sama kogumiku nimi, lisatakse need automaatselt kogumikku.", "LabelAutomaticallyAddToCollection": "Lisa automaatselt kogumikku", "H264CrfHelp": "'Constant Rate Factor' (CRF) on x264 ja x265 kodeerija vaikekvaliteediseade. Võimalikud on väärtused vahemikus 0 kuni 51, kus madalamad väärtused tooksid kaasa parema kvaliteedi (suurema failimahu arvelt). Mõistlikud väärtused on vahemikus 18 kuni 28. Vaikeväärtus x264 jaoks on 23 ja x265 jaoks 28, nii et seda saab kasutada lähtepunktina.", - "Cursive": "Kursiiv" + "Cursive": "Kursiiv", + "ButtonCast": "Esita meediumiüksused seadmes" } From 06fb3a803bad765498839df27485ab5069d1cc6c Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:17:24 +0000 Subject: [PATCH 175/389] Translated using Weblate (Zulu) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zu/ --- src/strings/zu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zu.json b/src/strings/zu.json index 35513c7fa9..23e286b8fc 100644 --- a/src/strings/zu.json +++ b/src/strings/zu.json @@ -86,7 +86,7 @@ "ButtonMore": "Okwengeziwe", "ButtonInfo": "Ulwazi", "ButtonFullscreen": "Isikrini esigcwele", - "ButtonCast": "Thumela", + "ButtonCast": "Thumela imidiya", "ButtonCancel": "Khansela", "ButtonBack": "Emuva", "ButtonArrowRight": "Okwesokudla", From 12f8b246e32e91714676f551793b921856e02c1c Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:30:21 +0000 Subject: [PATCH 176/389] Translated using Weblate (Norwegian Nynorsk) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nn/ --- src/strings/nn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/nn.json b/src/strings/nn.json index dda77d4d5f..78d8329bfe 100644 --- a/src/strings/nn.json +++ b/src/strings/nn.json @@ -749,7 +749,7 @@ "CinemaModeConfigurationHelp": "Kino-modus bringar kinoopplevinga direkte til stova di med moglegheita til å spela trailerar og tilpassa introer før filmen byrjar.", "ChannelAccessHelp": "Vel kanalar som skal delast med denne brukaren. Administratorar kan redigera alle kanalar som nyttar metadatabehandlaren.", "ChangingMetadataImageSettingsNewContent": "Endringar gjort i innstillingar for metadata eller omslagsbilde vil berre gjelda nytt innhald i biblioteket ditt. For å endra eksisterande innhald, må du oppdatera dets metadata manuelt.", - "ButtonCast": "Cast", + "ButtonCast": "Strøym medium til eining", "BurnSubtitlesHelp": "Angir om tenaren skal brenna inn teksting når videoar blir konvertert, basert på tekstformatet. Ytinga på tenaren vil forbetrast dersom tekstinga ikkje blir brunnen inn. Vel Automatisk for å brenna inn bildebaserte format (VOBSUB, PGS, SUB, IDX, ...) og enkelte ASS eller SSA-undertekster.", "BoxSet": "Samleboks", "AllowTonemappingHelp": "Tonekartlegging kan forvandla det dynamiske området til ein video frå HDR til SDR samtidig som bildedetaljar og fargar blir tatt vare på, noko som er veldig viktig informasjon for å representera den originale scena. Fungerer for augneblinken berre når du omkodar videoar med innebygd HDR10- eller HLG-metadata. Viss avspelinga ikkje er jamn eller mislykkast, bør du vurdera å slå av den tilsvarande maskinvaredekodaren.", From 894cee385130ba3bf7f8778fd2697daa22deab61 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:18:31 +0000 Subject: [PATCH 177/389] Translated using Weblate (Welsh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cy/ --- src/strings/cy.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/cy.json b/src/strings/cy.json index 389d24e0b0..4c21c1f091 100644 --- a/src/strings/cy.json +++ b/src/strings/cy.json @@ -84,7 +84,7 @@ "ButtonMore": "Mwy", "ButtonInfo": "Gwybodaeth", "ButtonFullscreen": "Sgrin lawn", - "ButtonCast": "Darlledu", + "ButtonCast": "Darlledu'r cyfrwng", "ButtonCancel": "Canslo", "ButtonBack": "Yn ôl", "ButtonArrowRight": "Dde", From 35594691a3d92423b9fe6db7f22b6fb732ef106d Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sat, 12 Feb 2022 18:27:26 +0000 Subject: [PATCH 178/389] Translated using Weblate (Uyghur) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ug/ --- src/strings/ug.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ug.json b/src/strings/ug.json index 5b897f03f6..570386bed2 100644 --- a/src/strings/ug.json +++ b/src/strings/ug.json @@ -1,5 +1,6 @@ { "Album": "البم", "Actor": "اداڪار", - "Absolute": "مطلق" + "Absolute": "مطلق", + "ButtonCast": "ميڊيا کي ڊوائس ۾ ڪاسٽ ڪريو" } From 8636bf149b9c07a1a7473271ab62f4333d0d25c6 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Sat, 12 Feb 2022 21:25:47 +0000 Subject: [PATCH 179/389] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 1bef9975d1..52459e7636 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1324,7 +1324,7 @@ "EnableBlurHash": "Povoliť obrázok s rozmazaným pozadím pre chýbajúce obrázky", "ShowMore": "Zobraziť viac", "ShowLess": "Zobraziť menej", - "ButtonCast": "Prenášať", + "ButtonCast": "Prenášať médiá", "ButtonSyncPlay": "SyncPlay", "MessageNoGenresAvailable": "Povoliť vybraným metadáta poskytovateľom stiahnuť žánre z internetu.", "EnableFasterAnimationsHelp": "Použiť rýchlejšiu animáciu a prechody.", @@ -1612,5 +1612,15 @@ "EnableIntelLowPowerHevcHwEncoder": "Povoliť nízkoenergetický hardvérový kóder Intel HEVC", "EnableIntelLowPowerH264HwEncoder": "Povoliť nízkoenergetický hardvérový kóder Intel H.264", "PreferSystemNativeHwDecoder": "Preferovať hardvérové dekódery DXVA alebo VA-API pre daný OS", - "ContainerBitrateExceedsLimit": "Dátový tok videa prekračuje limit" + "ContainerBitrateExceedsLimit": "Dátový tok videa prekračuje limit", + "ThemeVideo": "Tématické video", + "ThemeSong": "Tématická zvučka", + "Sample": "Ukážka", + "Scene": "Scéna", + "Interview": "Rozhovor", + "DeletedScene": "Vystrihnutá scéna", + "BehindTheScenes": "Zo zákulisia", + "Trailer": "Trailer", + "Clip": "Krátky film", + "ButtonExitApp": "Ukončiť aplikáciu" } From ac06a46709a0d9e03cc5cb0dbb72b87d00da8b33 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 13 Feb 2022 00:32:52 +0000 Subject: [PATCH 180/389] Update dependency follow-redirects to 1.14.8 [SECURITY] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index bc5950e6d6..e0093023d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6396,9 +6396,9 @@ } }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "version": "1.14.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", + "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true }, "for-in": { From c83b199bbb31631c8ecfeeb9d022cc8827a6b43c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Serta=C3=A7=20=C4=B0pek?= Date: Sun, 13 Feb 2022 03:08:48 +0000 Subject: [PATCH 181/389] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index d2a571729e..dd0610234f 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -354,7 +354,7 @@ "HeaderConfirmRevokeApiKey": "API Anahtarını İptal Et", "HeaderConfirmProfileDeletion": "Profilin Silinmesini Onayla", "HeaderConfirmPluginInstallation": "Eklenti Yüklemesini Onayla", - "HeaderConfigureRemoteAccess": "Uzaktan Erişimi Yapılandır", + "HeaderConfigureRemoteAccess": "Uzaktan Erişimi Kur", "HeaderCodecProfileHelp": "Kodek profilleri, belirli kodlayıcıları oynatırken cihazın sınırlamalarını gösterir. Eğer bir sınırlama uygulanırsa, kodeğin doğrudan oynatma için yapılandırılmış olsa bile, medya dönüştürülür.", "HeaderChapterImages": "Bölüm Resimleri", "HeaderChannelAccess": "Kanal Erişimi", @@ -545,7 +545,7 @@ "HeaderProfileServerSettingsHelp": "Bu değerler sunucunun kendisini istemcilere nasıl sunacağını kontrol eder.", "HeaderPlayOn": "Çalmaya Devam Et", "HeaderPaths": "Yollar", - "HeaderKodiMetadataHelp": "NFO metaverisi etkinleştirmek veya devre dışı bırakmak için bir kitaplığı düzenleyin ve metaveri kaydedicileri bölümünü bulun.", + "HeaderKodiMetadataHelp": "NFO Metaverisi etkinleştirmek veya devre dışı bırakmak için bir kitaplığı düzenleyin ve Metaveri kaydedicileri bölümünü bulun.", "HeaderInstantMix": "Ani mix", "ButtonSplit": "Ayır", "Items": "Nesneler", @@ -570,7 +570,7 @@ "OnApplicationStartup": "Uygulama başladığında", "HttpsRequiresCert": "Güvenli bağlantı kurulabilmesi için, Let's Encrypt gibi güvenilir bir sertifika sağlayıcısından edinilmiş sertifikayı tanıtmanız gerekmektedir. Lütfen bir sertifika tanımlayın ya da güvenli bağlantı seçeneğini devre dışı bırakın.", "Home": "Anasayfa", - "HideWatchedContentFromLatestMedia": "En son medyadan izlenen içeriği gizle", + "HideWatchedContentFromLatestMedia": "En Son medyadan izlenen içeriği gizle", "HeaderTypeImageFetchers": "Resim Sağlayıcıları ({0}):", "HeaderTracks": "Parçalar", "HeaderSeriesStatus": "Dizi Durumu", @@ -676,7 +676,7 @@ "LabelDateAddedBehavior": "Yeni içerik için tarih eklendi davranışı:", "LabelCustomRating": "Özel değerlendirme:", "LabelCustomDeviceDisplayNameHelp": "Cihaz tarafından bildirilen adı kullanmak için özel bir görünen ad girin veya boş bırakın.", - "LabelCustomCssHelp": "Web arayüzünde kendi özel stillerinizi uygulayın.", + "LabelCustomCssHelp": "Web arayüzünde kendi özel CSS kodunuzu uygulayın.", "LabelCustomCertificatePathHelp": "Özel bir etki alanında TLS desteğini etkinleştirmek için bir sertifika ve özel anahtar içeren bir PKCS #12 dosyasının yolu.", "LabelCustomCertificatePath": "Özel SSL sertifika yolu:", "LabelCurrentStatus": "Şu anki durum:", From a28c85958ba45e24151ba04326dd616a0da0204d Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 13 Feb 2022 06:15:26 +0000 Subject: [PATCH 182/389] Update development dependencies --- package-lock.json | 624 ++++++++++++++++++++++++---------------------- package.json | 6 +- 2 files changed, 323 insertions(+), 307 deletions(-) diff --git a/package-lock.json b/package-lock.json index e0093023d1..38a2d63e48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2252,26 +2252,41 @@ "dev": true }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz", + "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==", "dev": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", + "debug": "^4.3.2", + "espree": "^9.3.1", "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "globals": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", - "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -2293,6 +2308,15 @@ "resolve-from": "^4.0.0" } }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2327,20 +2351,20 @@ "integrity": "sha512-q9a61ND72RZdb4S1SG3w0c8POLS7s7QtfMMbfFG/jlsKxidsBnUS66jAE+h+OhaQCl8FeQrY8yMnHOff/4paFw==" }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", + "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", "minimatch": "^3.0.4" } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@mdn/browser-compat-data": { @@ -2719,21 +2743,31 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.11.0.tgz", + "integrity": "sha512-HJh33bgzXe6jGRocOj4FmefD7hRY4itgjzOrSs3JPrTNXsX7j5+nQPciAUj/1nZtwo2kAc3C75jZO+T23gzSGw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", + "@typescript-eslint/scope-manager": "5.11.0", + "@typescript-eslint/type-utils": "5.11.0", + "@typescript-eslint/utils": "5.11.0", + "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", - "regexpp": "^3.1.0", + "regexpp": "^3.2.0", "semver": "^7.3.5", "tsutils": "^3.21.0" }, "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -2745,142 +2779,78 @@ } } }, - "@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - } - } - }, "@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.11.0.tgz", + "integrity": "sha512-x0DCjetHZYBRovJdr3U0zG9OOdNXUaFLJ82ehr1AlkArljJuwEsgnud+Q7umlGDFLFrs8tU8ybQDFocp/eX8mQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" + "@typescript-eslint/scope-manager": "5.11.0", + "@typescript-eslint/types": "5.11.0", + "@typescript-eslint/typescript-estree": "5.11.0", + "debug": "^4.3.2" }, "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - } - }, - "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" + "ms": "2.1.2" } } } }, "@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.11.0.tgz", + "integrity": "sha512-z+K4LlahDFVMww20t/0zcA7gq/NgOawaLuxgqGRVKS0PiZlCTIUtX0EJbC0BK1JtR4CelmkPK67zuCgpdlF4EA==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "@typescript-eslint/types": "5.11.0", + "@typescript-eslint/visitor-keys": "5.11.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.11.0.tgz", + "integrity": "sha512-wDqdsYO6ofLaD4DsGZ0jGwxp4HrzD2YKulpEZXmgN3xo4BHJwf7kq49JTRpV0Gx6bxkSUmc9s0EIK1xPbFFpIA==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.11.0", + "debug": "^4.3.2", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } } }, "@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.11.0.tgz", + "integrity": "sha512-cxgBFGSRCoBEhvSVLkKw39+kMzUKHlJGVwwMbPcTZX3qEhuXhrjwaZXWMxVfxDgyMm+b5Q5b29Llo2yow8Y7xQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.11.0.tgz", + "integrity": "sha512-yVH9hKIv3ZN3lw8m/Jy5I4oXO4ZBMqijcXCdA4mY8ull6TPTAoQnKKrcZ0HDXg7Bsl0Unwwx7jcXMuNZc0m4lg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", + "@typescript-eslint/types": "5.11.0", + "@typescript-eslint/visitor-keys": "5.11.0", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", "semver": "^7.3.5", "tsutils": "^3.21.0" }, @@ -2891,20 +2861,73 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" } }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -2916,14 +2939,44 @@ } } }, - "@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", + "@typescript-eslint/utils": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.11.0.tgz", + "integrity": "sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.11.0", + "@typescript-eslint/types": "5.11.0", + "@typescript-eslint/typescript-estree": "5.11.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.11.0.tgz", + "integrity": "sha512-E8w/vJReMGuloGxJDkpPlGwhxocxOpSVgSvjiLO5IxZPmxZF30weOeJYyPSEACwM+X4NziYS9q+WkN/2DHYQwA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.11.0", + "eslint-visitor-keys": "^3.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + } } }, "@uupaa/dynamic-import-polyfill": { @@ -3133,9 +3186,9 @@ } }, "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", "dev": true }, "acorn-import-assertions": { @@ -3213,12 +3266,6 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -3226,9 +3273,9 @@ "dev": true }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -4756,9 +4803,9 @@ } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "deepmerge": { @@ -5046,15 +5093,6 @@ "tapable": "^2.2.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", @@ -5223,62 +5261,48 @@ "dev": true }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz", + "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==", "dev": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", + "@eslint/eslintrc": "^1.1.0", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", + "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -5288,6 +5312,12 @@ "color-convert": "^2.0.1" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5313,16 +5343,67 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + }, + "dependencies": { + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + } + } + }, "globals": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", - "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -5335,9 +5416,9 @@ "dev": true }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "import-fresh": { @@ -5350,21 +5431,21 @@ "resolve-from": "^4.0.0" } }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5834,20 +5915,12 @@ } }, "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "eslint-visitor-keys": "^2.0.0" } }, "eslint-visitor-keys": { @@ -5857,20 +5930,20 @@ "dev": true }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", + "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", "dev": true, "requires": { - "acorn": "^7.4.0", + "acorn": "^8.7.0", "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "eslint-visitor-keys": "^3.3.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true } } @@ -5891,9 +5964,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -7854,12 +7927,6 @@ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -10296,12 +10363,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -10577,9 +10638,9 @@ } }, "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { @@ -11509,17 +11570,6 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, "string.prototype.matchall": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", @@ -11602,12 +11652,12 @@ } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { @@ -13790,40 +13840,6 @@ "ssr-window": "^3.0.0" } }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, "tapable": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", diff --git a/package.json b/package.json index c2fc529947..6c11c935c9 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,8 @@ "@babel/preset-env": "7.16.7", "@babel/preset-react": "7.16.7", "@babel/preset-typescript": "7.16.7", - "@typescript-eslint/eslint-plugin": "4.33.0", - "@typescript-eslint/parser": "4.33.0", + "@typescript-eslint/eslint-plugin": "5.11.0", + "@typescript-eslint/parser": "5.11.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.1", "babel-loader": "8.2.3", @@ -25,7 +25,7 @@ "copy-webpack-plugin": "10.2.0", "css-loader": "6.5.1", "cssnano": "5.0.14", - "eslint": "7.32.0", + "eslint": "8.9.0", "eslint-plugin-compat": "4.0.0", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-import": "2.25.4", From b647095a5e630cf716c34c5c2d30e9d7891a39c5 Mon Sep 17 00:00:00 2001 From: Jin Date: Sun, 13 Feb 2022 10:24:28 +0000 Subject: [PATCH 183/389] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index d092fdb5fc..b0bdbd6b05 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -1212,8 +1212,8 @@ "PerfectMatch": "정확히 일치", "ButtonSyncPlay": "SyncPlay", "HeaderDVR": "DVR", - "EnableDecodingColorDepth10Vp9": "10비트 VP9하드웨어 디코딩 사용합니다", - "EnableDecodingColorDepth10Hevc": "10비트 HEVC하드웨어 디코딩 사용합니다", + "EnableDecodingColorDepth10Vp9": "10비트 VP9하드웨어 디코딩 활성화", + "EnableDecodingColorDepth10Hevc": "10비트 HEVC하드웨어 디코딩 활성화", "QuickConnectNotAvailable": "퀵커넥트를 활성화하려면 서버 관리자에게 문의하십시오", "QuickConnectInvalidCode": "잘못된 퀵커넥트 코드", "QuickConnectDescription": "퀵커넥트로 로그인하려면 로그인중인 장치에서 퀵커넥트 버튼을 선택하고 아래 표시된 코드를 입력하십시오.", @@ -1315,7 +1315,7 @@ "Other": "기타", "EnableDetailsBannerHelp": "항목 디테일 페이지 상단에 배너 이미지를 표시합니다.", "EnableDetailsBanner": "디테일 배너", - "EnableQuickConnect": "이 서버에 퀵커넥트 사용", + "EnableQuickConnect": "서버에서 퀵커넥트 활성화", "Data": "데이터", "ButtonUseQuickConnect": "퀵커넥트 사용", "ButtonActivate": "활성화", @@ -1558,5 +1558,7 @@ "ErrorPlayerNotFound": "요청된 미디어에 대한 재생기를 찾을 수 없음.", "Engineer": "엔지니어", "Arranger": "각색가", - "AgeValue": "({0} 세)" + "AgeValue": "({0} 세)", + "Console": "콘솔", + "ButtonExitApp": "어플리케이션 종료" } From 66316f8b2f3a7b69f8dcf4a903a92e9bf7490ba5 Mon Sep 17 00:00:00 2001 From: CHI CHIA YU Date: Sun, 13 Feb 2022 13:09:28 +0000 Subject: [PATCH 184/389] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 59c87288f1..a2d3315664 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1578,5 +1578,6 @@ "AgeValue": "({0} 歲)", "LabelSortName": "排列名稱:", "LabelOriginalName": "原始名稱:", - "Console": "控制台" + "Console": "控制台", + "ButtonExitApp": "離開應用程式" } From 18572da45da25a458e81f09a5b5e6484f6aad682 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20=C3=87erri?= Date: Sun, 13 Feb 2022 11:30:54 +0000 Subject: [PATCH 185/389] Translated using Weblate (Albanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sq/ --- src/strings/sq.json | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/strings/sq.json b/src/strings/sq.json index 49bbd97166..a05bd9cb9b 100644 --- a/src/strings/sq.json +++ b/src/strings/sq.json @@ -121,7 +121,7 @@ "ButtonForgotPassword": "Harrova Fjalëkalimin", "ButtonEditOtherUserPreferences": "Ndrysho profilin e këtij përdoruesi, imazhin dhe preferencat personale.", "ButtonChangeServer": "Ndrysho Serverin", - "ButtonCast": "Hedh", + "ButtonCast": "Hidhe median", "ButtonCancel": "Anulo", "ButtonBack": "Mbrapa", "ButtonAudioTracks": "Pjesët të audios", @@ -163,5 +163,19 @@ "AllowFfmpegThrottling": "Limito Transkodimin", "AgeValue": "({0} vjeç)", "MusicVideos": "Video Muzikore", - "OptionBluray": "BD" + "OptionBluray": "BD", + "ChannelAccessHelp": "Zgjidh kanalet që do të shpërndash me përdoruesin. Administratorët kanë mundësi të modifikojnë të gjithë kanalet duke përdorur menaxherin e të dhënave.", + "ChangingMetadataImageSettingsNewContent": "Ndryshime tek të dhenat ose cilësimet e shkarkimit të artit do të aplikohen vetëm për përmbajtjet e reja në librari. Për të aplikuar ndryshimet në titujt ekzistues, ju duhet t'i bëni refresh të dhënave manualisht.", + "Casual": "E thjeshtë", + "Bwdif": "BWDIF", + "ButtonTrailer": "Trailer", + "ButtonTogglePlaylist": "Lista e luajtjes", + "ButtonSyncPlay": "Luajtje e Sinkronizuar", + "ButtonExitApp": "Dil nga Aplikacioni", + "BurnSubtitlesHelp": "Përcaktoni nëse serveri duhet të djegë titra gjatë transkodimit të videove. Shmangia e kësaj do të përmirësojë shumë performancën. Zgjidhni Auto për të djegur formatet e bazuara në imazh (VobSub, PGS, SUB, IDX, etj.) dhe titrat e caktuar ASS ose SSA.", + "BoxSet": "Kuti Koleksioni", + "BookLibraryHelp": "Audio dhe librat shkollorë janë të mbështetur. Rishiko udhëzuesin {0} e emërtimit të librit {1}.", + "AuthProviderHelp": "Zgjidhni një ofrues vërtetimi që do të përdoret për të vërtetuar fjalëkalimin e këtij përdoruesi.", + "AllowTonemappingHelp": "Tone-mapping mund të transformojë gamën dinamike të një videoje nga HDR në SDR duke ruajtur detajet dhe ngjyrat e imazhit, të cilat janë informacione shumë të rëndësishme për përfaqësimin e skenës origjinale. Aktualisht funksionon vetëm me video HDR10 ose HLG. Kjo kërkon kohën përkatëse të ekzekutimit OpenCL ose CUDA.", + "AllowOnTheFlySubtitleExtractionHelp": "Titrat e integruara mund të nxirren nga videot dhe t'u dorëzohen klientëve në tekst të thjeshtë, në mënyrë që të ndihmojnë në parandalimin e transkodimit të videos. Në disa sisteme kjo mund të zgjasë shumë dhe të bëjë që riprodhimi i videos të ndalet gjatë procesit të nxjerrjes. Çaktivizo këtë për të pasur titrat e integruara të djegura me transkodimin e videos kur ato nuk mbështeten në mënyrë origjinale nga pajisja e klientit." } From a770a64f82f97ad08fa66266aff0fb8e5678dbb9 Mon Sep 17 00:00:00 2001 From: Kichirou Hoshino Date: Sun, 13 Feb 2022 12:28:17 +0000 Subject: [PATCH 186/389] Translated using Weblate (Filipino) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fil/ --- src/strings/fil.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/strings/fil.json b/src/strings/fil.json index 246850a3f8..495de68008 100644 --- a/src/strings/fil.json +++ b/src/strings/fil.json @@ -1555,7 +1555,7 @@ "ButtonForgotPassword": "Nakalimutan ang password", "ButtonEditOtherUserPreferences": "I-edit ang profile, larawan at personal na kagustuhan ng user na ito.", "ButtonChangeServer": "Baguhin ang Server", - "ButtonCast": "I-cast", + "ButtonCast": "I-cast ang media", "ButtonCancel": "Kanselahin", "ButtonBack": "Bumalik", "ButtonAudioTracks": "Mga Audio Track", @@ -1608,5 +1608,15 @@ "UnknownVideoStreamInfo": "Hindi alam ang impormasyon ng video stream", "VideoBitrateNotSupported": "Hindi suportado ang bitrate ng video", "AudioIsExternal": "Ang audio stream ay external", - "SelectAll": "Piliin lahat" + "SelectAll": "Piliin lahat", + "ThemeVideo": "Theme Video", + "ThemeSong": "Theme Song", + "Sample": "Sample", + "Scene": "Eksena", + "Interview": "Panayam", + "DeletedScene": "Tinanggal na Eksena", + "BehindTheScenes": "Sa likod ng kamera", + "Trailer": "Trailer", + "Clip": "Featurette", + "ButtonExitApp": "Lumabas sa Application" } From aedc285ca3ce863a2e5c80771d7fa3e918f42ae5 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sun, 13 Feb 2022 19:36:39 +0000 Subject: [PATCH 187/389] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 32198fefa3..39725be6bd 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -1054,7 +1054,7 @@ "ClearQueue": "مسح القائمة المؤقتة", "Bwdif": "BWDIF", "ButtonPlayer": "المشغل", - "ButtonCast": "عرض", + "ButtonCast": "إرسال وسائط إلى جهاز", "HeaderSyncPlayTimeSyncSettings": "تزامن الوقت", "HeaderSyncPlaySettings": "إعدادات SyncPlay", "HeaderContinueReading": "مواصلة القراءة", From e809d6c1b15d60f6e7ac4ebf6412eb24c88f12d0 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sun, 13 Feb 2022 19:43:26 +0000 Subject: [PATCH 188/389] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index f6b3d46e9c..70a2613cd9 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -27,5 +27,6 @@ "Absolute": "Абсалютны", "Small": "Маленькі", "Normal": "Нармальны", - "Large": "Вялікі" + "Large": "Вялікі", + "ButtonCast": "Вяшчаць медыязмесціва на прыладу" } From af861067a088c78129d3322bb8c37df112e9cfdf Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sun, 13 Feb 2022 19:37:53 +0000 Subject: [PATCH 189/389] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hr/ --- src/strings/hr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/hr.json b/src/strings/hr.json index bd9421f931..05a4850a95 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -859,7 +859,7 @@ "HeaderAlbumArtists": "Izvođači albuma", "Folders": "Mape", "Favorites": "Favoriti", - "ButtonCast": "Uloge", + "ButtonCast": "Pošalji medijski sadržaj na uređaj", "EveryXHours": "Svakih {0} sati", "EveryHour": "Svaki sat", "OnApplicationStartup": "Prilikom pokretanja aplikacije", From 10eca50bc085db6f0f9e596e037c73e074746e4b Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sun, 13 Feb 2022 19:44:44 +0000 Subject: [PATCH 190/389] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/id.json b/src/strings/id.json index a9370010b9..f12c51fbf1 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -1038,7 +1038,7 @@ "EnableBlurHash": "Aktifkan tempat untuk gambar buram", "ClearQueue": "Hapus antrian", "Bwdif": "BWDIF", - "ButtonCast": "Siarkan", + "ButtonCast": "Putar media ke perangkat", "AllowTonemappingHelp": "Pemetaan corak dapat mengubah rentang dinamis sebuah video dari HDR menjadi SDR sembari mempertahankan detail dan warna gambar, yang merupakan informasi yang sangat penting untuk merepresentasikan adegan orisinal. Saat ini hanya bekerja dengan video HDR10 atau HLG. Hal ini memerlukan waktu proses OpenCL atau CUDA yang sesuai.", "HeaderPortRanges": "Pengaturan Proxy dan Firewall", "HeaderUninstallPlugin": "Copot Plugin", From 9a177e63444cc32eb57f7b35d1d58ed4d4a39f3c Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sun, 13 Feb 2022 19:45:35 +0000 Subject: [PATCH 191/389] Translated using Weblate (Malay) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ms/ --- src/strings/ms.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ms.json b/src/strings/ms.json index fb40c766ad..f0f5c3e99f 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -95,7 +95,7 @@ "ButtonNetwork": "Rangkaian", "ButtonMore": "Lagi", "ButtonManualLogin": "Log Masuk Secara Manual", - "ButtonCast": "Pelakon", + "ButtonCast": "Siarkan media ke peranti", "ButtonActivate": "Aktifkan", "BoxSet": "Set kotak", "Authorize": "Memberi kebenaran", From dea1b9d5015c2f62eb6748e24ef8e829ca68b115 Mon Sep 17 00:00:00 2001 From: Anana5 Date: Sun, 13 Feb 2022 20:42:40 +0000 Subject: [PATCH 192/389] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index 7a3705c16c..b6bdcc2974 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -931,7 +931,7 @@ "OptionReportByteRangeSeekingWhenTranscodingHelp": "Wymagane tylko dla urządzeń, które niezbyt dobrze wspierają przewijanie.", "OptionRequirePerfectSubtitleMatch": "Pobieraj tylko napisy, które pasują idealnie do plików wideo", "OptionRequirePerfectSubtitleMatchHelp": "Wymaganie perfekcyjnego dopasowania ograniczy listę napisów tylko do tych, które zostały przetestowane i zweryfikowane jako dokładnie pasujące. Odznaczenie tej opcji zwiększy szansę pobrania napisów, ale zwiększy także szansę na pobranie napisów błędnych lub o błędnej sygnaturze czasowej.", - "OptionResElement": "'res' element", + "OptionResElement": "Element 'res'", "OptionResumable": "Do wznowienia", "OptionSaveMetadataAsHidden": "Zapisuj metadane i obrazy jako pliki ukryte", "OptionSaveMetadataAsHiddenHelp": "Zmiana ta będzie miała zastosowanie do nowych metadanych zapisanych w przyszłości. Istniejące pliki metadanych zostaną zaktualizowane przy następnym zapisie przez serwer.", @@ -1181,8 +1181,8 @@ "DashboardOperatingSystem": "System Operacyjny: {0}", "DashboardArchitecture": "Architektura: {0}", "LabelWeb": "Sieć:", - "LabelXDlnaCap": "Device Capability ID:", - "LabelXDlnaDoc": "Device Class ID:", + "LabelXDlnaCap": "Identyfikator możliwości urządzenia:", + "LabelXDlnaDoc": "Identyfikator klasy urządzenia:", "LeaveBlankToNotSetAPassword": "Pozostaw puste, aby nie ustawiać hasła.", "Logo": "Logo", "Menu": "Menu", @@ -1256,11 +1256,11 @@ "DeinterlaceMethodHelp": "Wybierz metodę usuwania przeplotu używaną podczas transkodowania. Gdy przyśpieszenie sprzętowe wspierające usuwanie przeplotu jest włączone sprzętowe usuwanie przeplotu zostanie użyte zamiast tego ustawienia.", "ClientSettings": "Ustawienia klienta", "ButtonTogglePlaylist": "Playlista", - "ButtonSyncPlay": "SyncPlay", + "ButtonSyncPlay": "Odtwarzanie zsynchronizowane", "ClearQueue": "Wyczyść kolejkę", "StopPlayback": "Zatrzymaj odtwarzanie", "ButtonPlayer": "Odtwarzacz", - "ButtonCast": "Strumieniuj", + "ButtonCast": "Odtwarzaj na urządzeniu", "EnableBlurHashHelp": "Obrazy które wciąż się ładują zostaną zastąpione rozmazanym symbolem.", "EnableBlurHash": "Włącz rozmazane zamienniki dla obrazów", "UnsupportedPlayback": "Jellyfin nie może odszyfrować zawartości zabezpieczonej przy pomocy DRM, ale spróbuje pomimo tego. Niektóre pliki mogą pojawiać się jako zupełnie czarne z powodu szyfrowania lub innych niewspieranych funkcji jak np. interaktywne tytuły.", @@ -1612,5 +1612,15 @@ "UnknownVideoStreamInfo": "Informacje o strumieniu wideo są nieznane", "VideoBitrateNotSupported": "Szybkość transmisji wideo nie jest obsługiwana", "AudioIsExternal": "Strumień audio jest zewnętrzny", - "SelectAll": "Wybierz wszystkie" + "SelectAll": "Wybierz wszystkie", + "ThemeVideo": "Wideo wprowadzające", + "ThemeSong": "Czołówka", + "Sample": "Przykład", + "Scene": "Scena", + "Interview": "Wywiad", + "DeletedScene": "Usunięte sceny", + "BehindTheScenes": "Za kulisami", + "Trailer": "Zwiastun", + "Clip": "Film średniometrażowy", + "ButtonExitApp": "Wyjdź z aplikacji" } From cc94e0d3f6cf1dee477677d96089d3cecf305413 Mon Sep 17 00:00:00 2001 From: DragoPrime Date: Sun, 13 Feb 2022 21:11:31 +0000 Subject: [PATCH 193/389] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index d8ad700620..eed8d71f86 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1536,5 +1536,6 @@ "Cursive": "Cursiv", "Console": "Consolă", "Casual": "Cazual", - "Conductor": "Conductor" + "Conductor": "Conductor", + "OtherArtist": "Alt Artist" } From 21d91259f764c1377ebd882e86c22c8fc13504e5 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sun, 13 Feb 2022 19:39:12 +0000 Subject: [PATCH 194/389] Translated using Weblate (Serbian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sr/ --- src/strings/sr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sr.json b/src/strings/sr.json index 0585a4d984..d2099a2d0f 100644 --- a/src/strings/sr.json +++ b/src/strings/sr.json @@ -188,7 +188,7 @@ "ClearQueue": "Испразните ред", "Bwdif": "BWDIF", "ButtonPlayer": "Плејер", - "ButtonCast": "Улоге", + "ButtonCast": "Пребаци медије на уређај", "ApiKeysCaption": "Списак тренутно омогућених АПИ кључева", "AllowTonemappingHelp": "Мапирање-тонова може трансформисати динамички опсег видео записа из HDR у SDR, задржавајући детаље и боје слике, што су врло важне информације за представљање оригиналне сцене. Тренутно ради само са HDR10 или HLG видео снимцима. Ово Захтева одговарајуће OpenCL или CUDA процесе.", "YoutubeNotFound": "Видео запис није нађен.", From 1666818ec5930b0b10ac8f0c1f858fa35f47034d Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sun, 13 Feb 2022 19:49:10 +0000 Subject: [PATCH 195/389] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index b13850216a..cf80221584 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1350,7 +1350,7 @@ "ClearQueue": "வரிசையை அழிக்கவும்", "StopPlayback": "பிளேபேக்கை நிறுத்துங்கள்", "ButtonPlayer": "பிளேயர்", - "ButtonCast": "நடிகர்கள்", + "ButtonCast": "மீடியாவை சாதனத்திற்கு அனுப்பு", "ButtonSyncPlay": "ஒத்திசைவு", "EnableBlurHashHelp": "இன்னும் ஏற்றப்படும் படங்கள் தனித்துவமான ஒதுக்கிடத்துடன் காண்பிக்கப்படும்.", "EnableBlurHash": "படங்களுக்கு மங்கலான ஒதுக்கிடங்களை இயக்கவும்", From 1b65975ca51db28df7d70a80733ae6b04f5b7185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Mon, 14 Feb 2022 05:14:03 +0000 Subject: [PATCH 196/389] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 6792c74f98..154d51e42d 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -540,7 +540,7 @@ "LabelPostProcessorArgumentsHelp": "Použij {path} jako cestu k nahrávanému souboru.", "LabelPreferredDisplayLanguage": "Preferovaný jazyk zobrazení:", "LabelPreferredSubtitleLanguage": "Preferovaný jazyk titulků:", - "LabelProfileAudioCodecs": "Audio kodeky:", + "LabelProfileAudioCodecs": "Zvukové kodeky:", "LabelProfileCodecs": "Kodeky:", "LabelProfileCodecsHelp": "Odděl čárkou. Pokud ponecháte prázdné, aplikují se všechny kodeky.", "LabelProfileContainer": "Kontejner:", @@ -956,7 +956,7 @@ "TellUsAboutYourself": "Řekněte nám něco o sobě", "TheseSettingsAffectSubtitlesOnThisDevice": "Tato nastavení ovlivní titulky na tomto zařízení", "ThisWizardWillGuideYou": "Tento průvodce Vám pomůže projít procesem nastavení. Pro začátek vyberte jazyk.", - "Thumb": "Miniatura", + "Thumb": "Náhled", "Thursday": "Čtvrtek", "TitleHardwareAcceleration": "Hardwarová akcelerace", "TitleHostingSettings": "Nastavení hostingu", @@ -1081,7 +1081,7 @@ "LabelAlbum": "Album:", "LabelAllowedRemoteAddresses": "Filtr vzdálené IP adresy:", "LabelAllowedRemoteAddressesMode": "Režim filtru vzdálené IP adresy:", - "LabelAudioCodec": "Audio kodek:", + "LabelAudioCodec": "Zvukový kodek:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Automaticky aktualizovat metadata z internetu:", "LabelBlockContentWithTags": "Blokovat položky s tagy:", "LabelBurnSubtitles": "Vypálit titulky:", From 61fa253abaa5d956a167e7432d4f17a768b6d49c Mon Sep 17 00:00:00 2001 From: WWWesten Date: Mon, 14 Feb 2022 07:51:50 +0000 Subject: [PATCH 197/389] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index dd0610234f..6f2c1e1dc7 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -1247,5 +1247,7 @@ "OptionNew": "Yeni…", "OptionProtocolHttp": "HTTP", "OptionSaveMetadataAsHidden": "Metadataları ve görüntüleri gizli dosyalar olarak kaydedin", - "OptionWeekends": "Haftasonları" + "OptionWeekends": "Haftasonları", + "Normal": "Normal", + "Small": "Küçük" } From 5159655c77ab1f75d7685f6b20cc1772e433f8e7 Mon Sep 17 00:00:00 2001 From: lendunistus Date: Mon, 14 Feb 2022 14:35:54 +0000 Subject: [PATCH 198/389] Translated using Weblate (Estonian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/et/ --- src/strings/et.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/strings/et.json b/src/strings/et.json index 25cdc52878..0533a08638 100644 --- a/src/strings/et.json +++ b/src/strings/et.json @@ -89,7 +89,7 @@ "LabelDashboardTheme": "Serveri juhtpaneeli teema:", "LabelCustomRating": "Kohandatud hinne:", "LabelCustomDeviceDisplayNameHelp": "Sisesta kohandatud kuvatav nimi või jäta tühjaks, et kasutada seadme teatatud nime.", - "LabelCustomCssHelp": "Kasuta veebiliideses oma kohandatud stiile.", + "LabelCustomCssHelp": "Kasuta veebiliideses oma CSS koodi selleks, et välimust muuta.", "LabelCustomCss": "Kohandatud CSS kood:", "LabelCustomCertificatePathHelp": "Rada PKCS # 12 failini, mis sisaldab sertifikaati ja privaatvõtit kohandatud domeenile TLS toe lubamiseks.", "LabelCustomCertificatePath": "Kohandatud SSL sertifikaadi rada:", @@ -285,7 +285,7 @@ "CustomDlnaProfilesHelp": "Loo kohandatud profiil uue seadme jaoks või tühista süsteemi profiil.", "ConfigureDateAdded": "Seadista, kuidas lisamise kuupäev kuvatakse juhtpaneeli meediakogu seadetes", "Banner": "Bänner", - "AllowTonemappingHelp": "Värvikaardistus võib muuta video dünaamilise ulatuse HDR -st SDR -ks, säilitades samal ajal pildi üksikasjad ja värvid, mis on algse stseeni kujutamisel väga oluline teave. Praegu töötab ainult HDR10 või HLG metaandmetega videote transkoodimisel. Kui taasesitus ei ole sujuv või ebaõnnestub, kaalu vastava riistvaralise dekoodri väljalülitamist.", + "AllowTonemappingHelp": "Värvikaardistus võib muuta video dünaamilise ulatuse HDR -st SDR -ks, säilitades samal ajal pildi üksikasjad ja värvid, mis on algse stseeni kujutamisel väga oluline teave. Praegu töötab ainult HDR10 või HLG videotega. See vajab vastavat OpenGL või CUDA käitusaega.", "HeaderDirectPlayProfile": "Otse-esituse profiil", "HeaderContainerProfileHelp": "Konteineri profiilid näitavad seadme piiranguid teatud vormingute esitamisel. Kui kehtib piirang, meedium transkooditakse, isegi kui vorming on seadistatud otse-esituseks.", "HeaderCodecProfileHelp": "Koodeki profiilid näitavad seadme piiranguid konkreetsete koodekite esitamisel. Kui kehtivad piirangud, transkooditakse meedia, isegi kui koodek on seadistatud otse-esituseks.", @@ -1586,5 +1586,7 @@ "LabelAutomaticallyAddToCollection": "Lisa automaatselt kogumikku", "H264CrfHelp": "'Constant Rate Factor' (CRF) on x264 ja x265 kodeerija vaikekvaliteediseade. Võimalikud on väärtused vahemikus 0 kuni 51, kus madalamad väärtused tooksid kaasa parema kvaliteedi (suurema failimahu arvelt). Mõistlikud väärtused on vahemikus 18 kuni 28. Vaikeväärtus x264 jaoks on 23 ja x265 jaoks 28, nii et seda saab kasutada lähtepunktina.", "Cursive": "Kursiiv", - "ButtonCast": "Esita meediumiüksused seadmes" + "ButtonCast": "Esita meediumiüksused seadmes", + "ButtonExitApp": "Lahku rakendusest", + "Arranger": "Korraldaja" } From 3ccb4fabb464af40a69fa2f06af3493d972dd87c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sun, 13 Feb 2022 01:24:49 -0500 Subject: [PATCH 199/389] Fix indentation of directorybrowser --- .../directorybrowser/directorybrowser.js | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/src/components/directorybrowser/directorybrowser.js b/src/components/directorybrowser/directorybrowser.js index 4ca5ce806c..2577c9fc92 100644 --- a/src/components/directorybrowser/directorybrowser.js +++ b/src/components/directorybrowser/directorybrowser.js @@ -235,66 +235,66 @@ function getDefaultPath(options) { let systemInfo; class DirectoryBrowser { - currentDialog; + currentDialog; - show = options => { - options = options || {}; - const fileOptions = { - includeDirectories: true - }; - if (options.includeDirectories != null) { - fileOptions.includeDirectories = options.includeDirectories; - } - if (options.includeFiles != null) { - fileOptions.includeFiles = options.includeFiles; - } - Promise.all([getSystemInfo(), getDefaultPath(options)]).then( - responses => { - const systemInfo = responses[0]; - const initialPath = responses[1]; - const dlg = dialogHelper.createDialog({ - size: 'small', - removeOnClose: true, - scrollY: false - }); - dlg.classList.add('ui-body-a'); - dlg.classList.add('background-theme-a'); - dlg.classList.add('directoryPicker'); - dlg.classList.add('formDialog'); + show = options => { + options = options || {}; + const fileOptions = { + includeDirectories: true + }; + if (options.includeDirectories != null) { + fileOptions.includeDirectories = options.includeDirectories; + } + if (options.includeFiles != null) { + fileOptions.includeFiles = options.includeFiles; + } + Promise.all([getSystemInfo(), getDefaultPath(options)]).then( + responses => { + const systemInfo = responses[0]; + const initialPath = responses[1]; + const dlg = dialogHelper.createDialog({ + size: 'small', + removeOnClose: true, + scrollY: false + }); + dlg.classList.add('ui-body-a'); + dlg.classList.add('background-theme-a'); + dlg.classList.add('directoryPicker'); + dlg.classList.add('formDialog'); - let html = ''; - html += '
'; - html += ''; - html += '

'; - html += options.header || globalize.translate('HeaderSelectPath'); - html += '

'; - html += '
'; - html += getEditorHtml(options, systemInfo); - dlg.innerHTML = html; - initEditor(dlg, options, fileOptions); - dlg.addEventListener('close', onDialogClosed); - dialogHelper.open(dlg); - dlg.querySelector('.btnCloseDialog').addEventListener('click', () => { - dialogHelper.close(dlg); - }); - this.currentDialog = dlg; - dlg.querySelector('#txtDirectoryPickerPath').value = initialPath; - const txtNetworkPath = dlg.querySelector('#txtNetworkPath'); - if (txtNetworkPath) { - txtNetworkPath.value = options.networkSharePath || ''; - } - if (!options.pathReadOnly) { - refreshDirectoryBrowser(dlg, initialPath, fileOptions, true); - } + let html = ''; + html += '
'; + html += ''; + html += '

'; + html += options.header || globalize.translate('HeaderSelectPath'); + html += '

'; + html += '
'; + html += getEditorHtml(options, systemInfo); + dlg.innerHTML = html; + initEditor(dlg, options, fileOptions); + dlg.addEventListener('close', onDialogClosed); + dialogHelper.open(dlg); + dlg.querySelector('.btnCloseDialog').addEventListener('click', () => { + dialogHelper.close(dlg); + }); + this.currentDialog = dlg; + dlg.querySelector('#txtDirectoryPickerPath').value = initialPath; + const txtNetworkPath = dlg.querySelector('#txtNetworkPath'); + if (txtNetworkPath) { + txtNetworkPath.value = options.networkSharePath || ''; + } + if (!options.pathReadOnly) { + refreshDirectoryBrowser(dlg, initialPath, fileOptions, true); } - ); - }; - - close = () => { - if (this.currentDialog) { - dialogHelper.close(this.currentDialog); } - }; + ); + }; + + close = () => { + if (this.currentDialog) { + dialogHelper.close(this.currentDialog); + } + }; } export default DirectoryBrowser; From 481784622afae722f78610dc9da76d8657d0a746 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Sun, 13 Feb 2022 01:27:10 -0500 Subject: [PATCH 200/389] Fix precision issue in cardBuilder --- src/components/cardbuilder/cardBuilder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 96f325b3e7..5b87326028 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -145,7 +145,7 @@ import ServerConnections from '../ServerConnections'; return 100 / 14.2857142857; } if (screenWidth >= 1200) { - return 100 / 16.666666666666666666; + return 100 / 16.66666667; } if (screenWidth >= 1000) { return 5; From d00d084a8c205b397a7f3f910023b0a97c54e865 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 13 Feb 2022 12:11:53 +0300 Subject: [PATCH 201/389] Reload backdrop on restore Backdrop doesn't belong to the itemDetails view and must be reloaded explicitly. --- src/controllers/itemDetails/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index fdb2427148..0cbc638417 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -2096,6 +2096,7 @@ export default function (view, params) { if (currentItem) { appRouter.setTitle(''); renderTrackSelections(page, self, currentItem, true); + renderBackdrop(currentItem); } } else { reload(self, page, params); From 7127acb0213825873c92fa6aee8544cd4a3104af Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Tue, 15 Feb 2022 01:05:33 +0000 Subject: [PATCH 202/389] 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 eab8190b03..a2cf3a5777 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1614,5 +1614,6 @@ "ButtonExitApp": "Thoát Ứng Dụng", "Scene": "Bối cảnh", "DeletedScene": "Cảnh Đã Xóa", - "BehindTheScenes": "Hậu Trường" + "BehindTheScenes": "Hậu Trường", + "AllowEmbeddedSubtitles": "Tắt các loại phụ đề nhúng khác nhau" } From d239fa392efb6425d10b6e58a0fb23c976d00812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Tue, 15 Feb 2022 04:52:47 +0000 Subject: [PATCH 203/389] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 154d51e42d..a16f396659 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1622,5 +1622,11 @@ "DeletedScene": "Vymazaná scéna", "BehindTheScenes": "Z natáčení", "Trailer": "Upoutávka", - "Clip": "Krátký film" + "Clip": "Krátký film", + "AllowEmbeddedSubtitlesHelp": "Zakázat titulky, které jsou vložené v kontejneru média. Vyžaduje kompletní obnovení knihovny.", + "AllowEmbeddedSubtitlesAllowTextOption": "Povolit textové titulky", + "AllowEmbeddedSubtitlesAllowImageOption": "Povolit grafické titulky", + "AllowEmbeddedSubtitlesAllowAllOption": "Povolit všechny", + "AllowEmbeddedSubtitlesAllowNoneOption": "Zakázat všechny", + "AllowEmbeddedSubtitles": "Zakázat určité typy vložených titulků" } From 42b43f42095256754f1fc308c4122fdd825b0ab6 Mon Sep 17 00:00:00 2001 From: Csaba Date: Tue, 15 Feb 2022 05:20:56 +0000 Subject: [PATCH 204/389] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index d2bb3c43b7..3a5a2d7e78 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1622,5 +1622,11 @@ "Interview": "Interjú", "DeletedScene": "Törölt jelenet", "BehindTheScenes": "A színfalak mögött", - "Trailer": "Filmelőzetes" + "Trailer": "Filmelőzetes", + "AllowEmbeddedSubtitlesAllowTextOption": "Szöveg engedélyezése", + "AllowEmbeddedSubtitlesAllowImageOption": "Kép engedélyezése", + "AllowEmbeddedSubtitlesAllowNoneOption": "Összes tiltása", + "AllowEmbeddedSubtitlesAllowAllOption": "Összes engedélyezése", + "AllowEmbeddedSubtitlesHelp": "Tiltsa le a médiatárolókba csomagolt feliratokat. Teljes könyvtárfrissítést igényel.", + "AllowEmbeddedSubtitles": "Különféle típusú beágyazott feliratok letiltása" } From 55062d315d0c2db39338a260a968693dafbad4c8 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Tue, 15 Feb 2022 06:51:27 +0000 Subject: [PATCH 205/389] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index 6e9fb534a7..bfc854ee27 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -1623,5 +1623,11 @@ "BehindTheScenes": "Sahna artynda", "Trailer": "Treiler", "Clip": "Üzındı", - "ButtonExitApp": "Qoldabadan şyğu" + "ButtonExitApp": "Qoldabadan şyğu", + "AllowEmbeddedSubtitlesAllowTextOption": "Mätınge rūqsat", + "AllowEmbeddedSubtitlesAllowImageOption": "Suretke rūqsat", + "AllowEmbeddedSubtitlesAllowNoneOption": "Eşteñege rūqsat joq", + "AllowEmbeddedSubtitlesAllowAllOption": "Bärıne rūqsat", + "AllowEmbeddedSubtitlesHelp": "Tasyğyşderek konteinerlerınde qaptalğan subtitrlerdı öşıredı. Tolyq tasyğyşderekhanany jañartudy qajet etedı.", + "AllowEmbeddedSubtitles": "Endırılgen subtitrlerdıñ ärtürlı türlerın öşıru" } From a5fdbcf34526a36c9cdf2d65d6f96a539d45a96c Mon Sep 17 00:00:00 2001 From: WWWesten Date: Tue, 15 Feb 2022 06:55:12 +0000 Subject: [PATCH 206/389] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 5a65bb6643..a744dc00d2 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1622,5 +1622,11 @@ "BehindTheScenes": "За кулисами", "Trailer": "Трейлер", "Clip": "Отрывок", - "ButtonExitApp": "Выход из приложения" + "ButtonExitApp": "Выход из приложения", + "AllowEmbeddedSubtitlesAllowTextOption": "Разрешить текст", + "AllowEmbeddedSubtitlesAllowImageOption": "Разрешить рисунок", + "AllowEmbeddedSubtitlesAllowNoneOption": "Ничего не разрешать", + "AllowEmbeddedSubtitlesAllowAllOption": "Разрешить все", + "AllowEmbeddedSubtitles": "Отключает различные типы встроенных субтитров", + "AllowEmbeddedSubtitlesHelp": "Отключает субтитры, упакованные в медиаконтейнеры. Требуется полное обновление медиатеки." } From 3b16d229605178999cf19779e0d3f17fcd00665f Mon Sep 17 00:00:00 2001 From: WWWesten Date: Tue, 15 Feb 2022 06:59:04 +0000 Subject: [PATCH 207/389] Translated using Weblate (Esperanto) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/eo/ --- src/strings/eo.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/eo.json b/src/strings/eo.json index 99824f8ef1..3ba282f9c7 100644 --- a/src/strings/eo.json +++ b/src/strings/eo.json @@ -1618,5 +1618,11 @@ "DeletedScene": "Forigita Sceno", "Trailer": "Filmanonco", "Clip": "Rimedeto", - "ButtonExitApp": "Eliri Aplikon" + "ButtonExitApp": "Eliri Aplikon", + "AllowEmbeddedSubtitlesAllowTextOption": "Permesi Tekston", + "AllowEmbeddedSubtitlesAllowImageOption": "Permesi Bildon", + "AllowEmbeddedSubtitlesAllowNoneOption": "Permesi Nenion", + "AllowEmbeddedSubtitlesAllowAllOption": "Permesi Ĉion", + "AllowEmbeddedSubtitlesHelp": "Malebligi subtekstojn, kiuj estas pakitaj en plurmediaj ujoj. Postulas plenan plurmediatekan refreŝigon.", + "AllowEmbeddedSubtitles": "Malebligi malsamajn specojn de enigitaj subtekstoj" } From 57721b8ea946ab4976a40272db0d3c22c3e1f46d Mon Sep 17 00:00:00 2001 From: blob03 Date: Tue, 15 Feb 2022 11:12:03 +0000 Subject: [PATCH 208/389] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 304b3a3557..881043bc8e 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1622,5 +1622,11 @@ "Interview": "Entrevue", "DeletedScene": "Scène supprimée", "BehindTheScenes": "Dans les coulisses", - "Trailer": "Bande-annonce" + "Trailer": "Bande-annonce", + "AllowEmbeddedSubtitlesAllowTextOption": "Permettre le type Texte", + "AllowEmbeddedSubtitlesAllowImageOption": "Permettre les types Image", + "AllowEmbeddedSubtitlesAllowNoneOption": "Ne rien accepter", + "AllowEmbeddedSubtitlesAllowAllOption": "Tout accepter", + "AllowEmbeddedSubtitlesHelp": "Désactiver les sous-titres intégrés aux fichiers média. Nécessite un rafraichissement complet de la librairie.", + "AllowEmbeddedSubtitles": "Désactiver les sous-titres intégrés" } From ed6de5232a941115dc31fba2518336109b171567 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Tue, 15 Feb 2022 11:07:03 +0000 Subject: [PATCH 209/389] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index a2cf3a5777..f690ecde18 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1615,5 +1615,7 @@ "Scene": "Bối cảnh", "DeletedScene": "Cảnh Đã Xóa", "BehindTheScenes": "Hậu Trường", - "AllowEmbeddedSubtitles": "Tắt các loại phụ đề nhúng khác nhau" + "AllowEmbeddedSubtitles": "Tắt các loại phụ đề nhúng khác nhau", + "ThemeSong": "Nhạc Chủ Đề", + "ThemeVideo": "Video Chủ Đề" } From 6c6171251433b60713e6377a04b950987ee2232d Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 10 Feb 2022 11:57:04 +0300 Subject: [PATCH 210/389] Fix focus on hometab Remove the 'returnPromise' option, i.e. always return Promise so that the focus is executed after the sections are loaded. --- src/components/homesections/homesections.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 94f0e2d3aa..6cda229af5 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -73,8 +73,7 @@ import ServerConnections from '../ServerConnections'; return Promise.all(promises).then(function () { return resume(elem, { - refresh: true, - returnPromise: false + refresh: true }); }); } else { @@ -127,10 +126,7 @@ import ServerConnections from '../ServerConnections'; promises.push(elems[i].resume(options)); } - const promise = Promise.all(promises); - if (!options || options.returnPromise !== false) { - return promise; - } + return Promise.all(promises); } function loadSection(page, apiClient, user, userSettings, userViews, allSections, index) { From 69d039d35d815aa55847f5d71a66b59267f80228 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 22 Jan 2022 01:17:51 +0300 Subject: [PATCH 211/389] Cleanup unused styles --- src/controllers/list.html | 4 ++-- src/controllers/music/music.html | 4 ++-- src/controllers/session/selectServer/index.html | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/controllers/list.html b/src/controllers/list.html index e5292522a1..ba37840c94 100644 --- a/src/controllers/list.html +++ b/src/controllers/list.html @@ -1,7 +1,7 @@ -
+
-
+
@@ -27,7 +27,7 @@
-
+
diff --git a/src/controllers/session/selectServer/index.html b/src/controllers/session/selectServer/index.html index 09c930aba4..15e2d725c8 100644 --- a/src/controllers/session/selectServer/index.html +++ b/src/controllers/session/selectServer/index.html @@ -1,4 +1,4 @@ -
+
From 4e6cb506e2313a53afba4a090003277766d9f8c0 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 22 Jan 2022 01:19:52 +0300 Subject: [PATCH 212/389] Fix layout of ListView Using 'display: flex' breaks scrolling (bottom padding is not applied correctly) on webOS 1.2 --- src/controllers/list.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/list.html b/src/controllers/list.html index ba37840c94..1fb1d70e30 100644 --- a/src/controllers/list.html +++ b/src/controllers/list.html @@ -1,7 +1,7 @@ -
+
-
+
-
- - diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 0feed31d1e..33a3af79ee 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -343,7 +343,7 @@ function reloadPlayButtons(page, item) { hideAll(page, 'btnPlay'); } - hideAll(page, 'btnResume'); + hideAll(page, 'btnReplay'); hideAll(page, 'btnInstantMix'); hideAll(page, 'btnShuffle'); } else if (playbackManager.canPlay(item)) { @@ -355,32 +355,22 @@ function reloadPlayButtons(page, item) { canPlay = true; const isResumable = item.UserData && item.UserData.PlaybackPositionTicks > 0; - hideAll(page, 'btnResume', isResumable); - - for (const elem of page.querySelectorAll('.btnPlay')) { - const btnPlay = elem.querySelector('.detailButton-icon'); + hideAll(page, 'btnReplay', isResumable); + for (const btnPlay of page.querySelectorAll('.btnPlay')) { if (isResumable) { - btnPlay.classList.replace('play_arrow', 'replay'); + btnPlay.title = globalize.translate('ButtonResume'); } else { - btnPlay.classList.replace('replay', 'play_arrow'); + btnPlay.title = globalize.translate('Play'); } } } else { hideAll(page, 'btnPlay'); - hideAll(page, 'btnResume'); + hideAll(page, 'btnReplay'); hideAll(page, 'btnInstantMix'); hideAll(page, 'btnShuffle'); } - if (layoutManager.tv) { - const btnResume = page.querySelector('.mainDetailButtons .btnResume'); - const btnPlay = page.querySelector('.mainDetailButtons .btnPlay'); - const resumeHidden = btnResume.classList.contains('hide'); - btnResume.classList.toggle('raised', !resumeHidden); - btnPlay.classList.toggle('raised', resumeHidden); - } - return canPlay; } @@ -2056,7 +2046,7 @@ export default function (view, params) { view.querySelectorAll('.btnPlay'); bindAll(view, '.btnPlay', 'click', onPlayClick); - bindAll(view, '.btnResume', 'click', onPlayClick); + bindAll(view, '.btnReplay', 'click', onPlayClick); bindAll(view, '.btnInstantMix', 'click', onInstantMixClick); bindAll(view, '.btnShuffle', 'click', onShuffleClick); bindAll(view, '.btnPlayTrailer', 'click', onPlayTrailerClick); From 04c82ab7c4787080c052be09200e8d9314823c8e Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 20 Feb 2022 22:42:00 +0300 Subject: [PATCH 248/389] Cleanup --- src/controllers/itemDetails/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 33a3af79ee..df576f87f4 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -2044,7 +2044,6 @@ export default function (view, params) { function init() { const apiClient = getApiClient(); - view.querySelectorAll('.btnPlay'); bindAll(view, '.btnPlay', 'click', onPlayClick); bindAll(view, '.btnReplay', 'click', onPlayClick); bindAll(view, '.btnInstantMix', 'click', onInstantMixClick); From 821036bf71bd404be814f456005c0cdd9d923bf9 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Mon, 21 Feb 2022 00:06:05 +0300 Subject: [PATCH 249/389] Fix nowplayingbar not displaying when restoring the view 'init' message was skipped in https://github.com/jellyfin/jellyfin-web/commit/2d5e7f745f54da7917ad6768d3e9b58fcadf3e69 Use 'refresh' type message to allow show/hide. --- src/components/nowPlayingBar/nowPlayingBar.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/nowPlayingBar/nowPlayingBar.js b/src/components/nowPlayingBar/nowPlayingBar.js index 9b2d55c2f9..3de6b6ec37 100644 --- a/src/components/nowPlayingBar/nowPlayingBar.js +++ b/src/components/nowPlayingBar/nowPlayingBar.js @@ -733,10 +733,10 @@ import { appRouter } from '../appRouter'; updatePlayerVolumeState(player.isMuted(), player.getVolume()); } - function refreshFromPlayer(player) { + function refreshFromPlayer(player, type) { const state = playbackManager.getPlayerState(player); - onStateChanged.call(player, { type: 'init' }, state); + onStateChanged.call(player, { type }, state); } function bindToPlayer(player) { @@ -752,7 +752,7 @@ import { appRouter } from '../appRouter'; return; } - refreshFromPlayer(player); + refreshFromPlayer(player, 'init'); Events.on(player, 'playbackstart', onPlaybackStart); Events.on(player, 'statechange', onPlaybackStart); @@ -780,7 +780,7 @@ import { appRouter } from '../appRouter'; } else if (!isVisibilityAllowed) { isVisibilityAllowed = true; if (currentPlayer) { - refreshFromPlayer(currentPlayer); + refreshFromPlayer(currentPlayer, 'refresh'); } else { hideNowPlayingBar(); } From 7b0f4ed859ae3a19795137e07b30a185d527ec21 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 20 Feb 2022 23:34:21 +0300 Subject: [PATCH 250/389] Fix playing theme song when using parent links Navigation by plain links breaks the theme song player because there is no BaseItemDto in 'state'. --- src/controllers/itemDetails/index.js | 48 ++++------------------------ 1 file changed, 7 insertions(+), 41 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 6308ab1d9c..bd16a267d6 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -439,7 +439,6 @@ function getArtistLinksHtml(artists, serverId, context) { * @param {Object} context - Application context. */ function renderName(item, container, context) { - let parentRoute; const parentNameHtml = []; let parentNameLast = false; @@ -450,55 +449,19 @@ function renderName(item, container, context) { parentNameHtml.push(getArtistLinksHtml(item.ArtistItems, item.ServerId, context)); parentNameLast = true; } else if (item.SeriesName && item.Type === 'Episode') { - parentRoute = appRouter.getRouteUrl({ - Id: item.SeriesId, - Name: item.SeriesName, - Type: 'Series', - IsFolder: true, - ServerId: item.ServerId - }, { - context: context - }); - parentNameHtml.push('' + item.SeriesName + ''); + parentNameHtml.push(`${item.SeriesName}`); } else if (item.IsSeries || item.EpisodeTitle) { parentNameHtml.push(item.Name); } if (item.SeriesName && item.Type === 'Season') { - parentRoute = appRouter.getRouteUrl({ - Id: item.SeriesId, - Name: item.SeriesName, - Type: 'Series', - IsFolder: true, - ServerId: item.ServerId - }, { - context: context - }); - parentNameHtml.push('' + item.SeriesName + ''); + parentNameHtml.push(`${item.SeriesName}`); } else if (item.ParentIndexNumber != null && item.Type === 'Episode') { - parentRoute = appRouter.getRouteUrl({ - Id: item.SeasonId, - Name: item.SeasonName, - Type: 'Season', - IsFolder: true, - ServerId: item.ServerId - }, { - context: context - }); - parentNameHtml.push('' + item.SeasonName + ''); + parentNameHtml.push(`${item.SeasonName}`); } else if (item.ParentIndexNumber != null && item.IsSeries) { parentNameHtml.push(item.SeasonName || 'S' + item.ParentIndexNumber); } else if (item.Album && item.AlbumId && (item.Type === 'MusicVideo' || item.Type === 'Audio')) { - parentRoute = appRouter.getRouteUrl({ - Id: item.AlbumId, - Name: item.Album, - Type: 'MusicAlbum', - IsFolder: true, - ServerId: item.ServerId - }, { - context: context - }); - parentNameHtml.push('' + item.Album + ''); + parentNameHtml.push(`${item.Album}`); } else if (item.Album) { parentNameHtml.push(item.Album); } @@ -2105,8 +2068,11 @@ export default function (view, params) { Events.on(apiClient, 'message', onWebSocketMessage); Events.on(playbackManager, 'playerchange', onPlayerChange); + + itemShortcuts.on(view.querySelector('.nameContainer')); }); view.addEventListener('viewbeforehide', function () { + itemShortcuts.off(view.querySelector('.nameContainer')); Events.off(apiClient, 'message', onWebSocketMessage); Events.off(playbackManager, 'playerchange', onPlayerChange); libraryMenu.setTransparentMenu(false); From eba8cf18d4f1b0d8d4411e2469be4442580ea217 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 21 Jan 2022 02:18:19 +0300 Subject: [PATCH 251/389] Add Markdown to Login Disclaimer --- src/controllers/dashboard/general.html | 2 +- src/controllers/session/login/index.html | 4 +++- src/controllers/session/login/index.js | 18 +++++++++++++++- src/controllers/session/login/login.scss | 26 ++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 src/controllers/session/login/login.scss diff --git a/src/controllers/dashboard/general.html b/src/controllers/dashboard/general.html index 67e9bfb7ae..21c81eddd7 100644 --- a/src/controllers/dashboard/general.html +++ b/src/controllers/dashboard/general.html @@ -65,7 +65,7 @@

${HeaderBranding}

- +
${LabelLoginDisclaimerHelp}
diff --git a/src/controllers/session/login/index.html b/src/controllers/session/login/index.html index 339d4131ee..55550a194c 100644 --- a/src/controllers/session/login/index.html +++ b/src/controllers/session/login/index.html @@ -50,7 +50,9 @@ ${ButtonChangeServer} -

+
+
+
diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index 238d6f6ffd..9aecc0f545 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -1,3 +1,5 @@ +import DOMPurify from 'dompurify'; +import { marked } from 'marked'; import { appHost } from '../../../components/apphost'; import appSettings from '../../../scripts/settings/appSettings'; import dom from '../../../scripts/dom'; @@ -14,6 +16,7 @@ import toast from '../../../components/toast/toast'; import dialogHelper from '../../../components/dialogHelper/dialogHelper'; import baseAlert from '../../../components/alert'; import cardBuilder from '../../../components/cardbuilder/cardBuilder'; +import './login.scss'; /* eslint-disable indent */ @@ -281,7 +284,20 @@ import cardBuilder from '../../../components/cardbuilder/cardBuilder'; loading.hide(); }); apiClient.getJSON(apiClient.getUrl('Branding/Configuration')).then(function (options) { - view.querySelector('.disclaimer').textContent = options.LoginDisclaimer || ''; + const disclaimer = view.querySelector('.disclaimer'); + + disclaimer.innerHTML = DOMPurify.sanitize(marked(options.LoginDisclaimer || '')); + + for (const elem of disclaimer.querySelectorAll('a')) { + elem.target = '_blank'; + elem.classList.add('button-link'); + elem.setAttribute('is', 'emby-linkbutton'); + + if (layoutManager.tv) { + // Disable links navigation on TV + elem.tabIndex = -1; + } + } }); }); view.addEventListener('viewhide', function () { diff --git a/src/controllers/session/login/login.scss b/src/controllers/session/login/login.scss new file mode 100644 index 0000000000..d84d0088d1 --- /dev/null +++ b/src/controllers/session/login/login.scss @@ -0,0 +1,26 @@ +.disclaimerContainer { + display: flex; + margin-top: 2em; +} + +.disclaimer { + margin: 0 auto; + + h1, + h2, + h3, + h4, + h5, + h6, + p { + text-align: center; + } + + ol, + ul { + max-width: 40em; + margin-left: auto; + margin-right: auto; + width: fit-content; + } +} From ca63d2b151171eaa5430135919002f097601af9a Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 22 Jan 2022 22:53:05 +0300 Subject: [PATCH 252/389] Fix DOMPurify on webOS 1.2 DOMParser.createHTMLDocument on webOS 1.2 (WebKit) doesn't support 'text/html' - polyfill it. --- src/legacy/domParserTextHtml.js | 36 +++++++++++++++++++++++++++++++++ src/scripts/site.js | 1 + 2 files changed, 37 insertions(+) create mode 100644 src/legacy/domParserTextHtml.js diff --git a/src/legacy/domParserTextHtml.js b/src/legacy/domParserTextHtml.js new file mode 100644 index 0000000000..f5a03ae442 --- /dev/null +++ b/src/legacy/domParserTextHtml.js @@ -0,0 +1,36 @@ +/* + * DOMParser HTML extension + * 2019-11-13 + * + * By Eli Grey, http://eligrey.com + * Public domain. + * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + */ + +/*! @source https://gist.github.com/1129031 */ + +(function (DOMParser) { + 'use strict'; + + const DOMParser_proto = DOMParser.prototype; + const real_parseFromString = DOMParser_proto.parseFromString; + + // Firefox/Opera/IE throw errors on unsupported types + try { + // WebKit returns null on unsupported types + if ((new DOMParser).parseFromString('', 'text/html')) { + // text/html parsing is natively supported + return; + } + } catch (ex) { /* noop */ } + + DOMParser_proto.parseFromString = function (markup, type) { + if (/^\s*text\/html\s*(?:;|$)/i.test(type)) { + const doc = document.implementation.createHTMLDocument(''); + doc.documentElement.innerHTML = markup; + return doc; + } else { + return real_parseFromString.apply(this, arguments); + } + }; +}(DOMParser)); diff --git a/src/scripts/site.js b/src/scripts/site.js index ccfbe9d308..9a167ff5d2 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -29,6 +29,7 @@ import { pageClassOn, serverAddress } from './clientUtils'; import '../libraries/screensavermanager'; import './serverNotifications'; import '../components/playback/playerSelectionMenu'; +import '../legacy/domParserTextHtml'; import '../legacy/focusPreventScroll'; import '../legacy/vendorStyles'; import SyncPlay from '../components/syncPlay/core'; From b9e57cd85f7592a0a8f3f7838479df4b1b2e8443 Mon Sep 17 00:00:00 2001 From: blob03 Date: Mon, 21 Feb 2022 19:42:07 +0000 Subject: [PATCH 253/389] 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 4dfaffdac9..8a402fda6c 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1629,5 +1629,6 @@ "AllowEmbeddedSubtitlesAllowAllOption": "Tout accepter", "AllowEmbeddedSubtitlesHelp": "Désactiver les sous-titres intégrés aux fichiers média. Nécessite un rafraichissement complet de la librairie.", "AllowEmbeddedSubtitles": "Désactiver les sous-titres intégrés", - "ShowParentImages": "Afficher les images de la série" + "ShowParentImages": "Afficher les images de la série", + "NextUpRewatching": "Revoir" } From 034a86119fc74f866f854f3467998248af79b014 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 12 Feb 2022 23:44:50 +0300 Subject: [PATCH 254/389] Add card padder icon for items with an image --- src/components/cardbuilder/card.scss | 12 ++++++++++++ src/components/cardbuilder/cardBuilder.js | 8 +++++++- src/themes/appletv/theme.css | 4 ++++ src/themes/blueradiance/theme.css | 4 ++++ src/themes/light/theme.css | 4 ++++ src/themes/purplehaze/theme.css | 4 ++++ src/themes/wmc/theme.css | 4 ++++ 7 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/components/cardbuilder/card.scss b/src/components/cardbuilder/card.scss index 7de53d67a7..9d1946695c 100644 --- a/src/components/cardbuilder/card.scss +++ b/src/components/cardbuilder/card.scss @@ -227,6 +227,10 @@ button::-moz-focus-inner { background-color: transparent; } +.cardPadder { + position: relative; // For centering the cardImageIcon +} + .cardBox:not(.visualCardBox) .cardPadder { border-radius: 0.2em; background-color: #242424; @@ -377,6 +381,14 @@ button::-moz-focus-inner { color: inherit; } +.cardPadder .cardImageIcon { + color: #111; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + .cardIndicators { right: 0.225em; top: 0.225em; diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 5b87326028..25374b5446 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1344,7 +1344,13 @@ import ServerConnections from '../ServerConnections'; const cardScalableClass = 'cardScalable'; - cardImageContainerOpen = '
' + cardImageContainerOpen; + let cardPadderIcon = ''; + + if (imgUrl) { + cardPadderIcon = getDefaultText(item, options); + } + + cardImageContainerOpen = `
${cardPadderIcon}
${cardImageContainerOpen}`; cardBoxClose = '
'; cardScalableClose = '
'; diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index d14e7c1854..b2e104237e 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -481,6 +481,10 @@ a[data-role=button] { color: #00a4dc !important; } +.cardPadder .cardImageIcon { + color: rgba(0, 0, 0, 0.1); +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-radius: 0.5rem; diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 3e7a521665..5c41ec66fe 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -475,6 +475,10 @@ a[data-role=button] { background-color: rgba(0, 0, 0, 0.5); } +.cardPadder .cardImageIcon { + color: rgba(0, 0, 0, 0.5); +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-color: #00a4dc !important; diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 0e74c25960..4b2d0866f0 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -466,6 +466,10 @@ a[data-role=button] { background-color: #fff; } +.cardPadder .cardImageIcon { + color: #ddd; +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-color: #00a4dc !important; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 1541fda33a..cedfcf23d1 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -577,6 +577,10 @@ a[data-role=button] { border-radius: 0.8em; } +.cardPadder .cardImageIcon { + color: rgba(0, 0, 0, 0.5); +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-color: #ff77f1 !important; diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index ea583b72df..25fa6daf43 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -456,6 +456,10 @@ a[data-role=button] { background-color: #0f3562; } +.cardPadder .cardImageIcon { + color: rgba(0, 0, 0, 0.4); +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-color: #fff !important; From 9a4652f6389588c119ddf1027589c9cfd3446a72 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Mon, 21 Feb 2022 23:49:07 +0300 Subject: [PATCH 255/389] Add default text (icon) to Episode Same as for Series. --- src/components/cardbuilder/cardBuilder.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 25374b5446..17bc60818d 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1503,6 +1503,7 @@ import ServerConnections from '../ServerConnections'; return ''; case 'Movie': return ''; + case 'Episode': case 'Series': return ''; case 'Book': From 4c9f39e07ec32a15d561893fcf3b016e09611a0f Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 22 Feb 2022 00:48:37 +0300 Subject: [PATCH 256/389] Don't hide EnableNextVideoOverlay option on TV --- src/components/playbackSettings/playbackSettings.js | 6 ------ .../playbackSettings/playbackSettings.template.html | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/components/playbackSettings/playbackSettings.js b/src/components/playbackSettings/playbackSettings.js index f16537ac09..0de42c6c18 100644 --- a/src/components/playbackSettings/playbackSettings.js +++ b/src/components/playbackSettings/playbackSettings.js @@ -176,12 +176,6 @@ import template from './playbackSettings.template.html'; context.querySelector('.fldChromecastQuality').classList.add('hide'); } - if (browser.tizen || browser.web0s) { - context.querySelector('.fldEnableNextVideoOverlay').classList.add('hide'); - } else { - context.querySelector('.fldEnableNextVideoOverlay').classList.remove('hide'); - } - context.querySelector('.chkPlayDefaultAudioTrack').checked = user.Configuration.PlayDefaultAudioTrack || false; context.querySelector('.chkPreferFmp4HlsContainer').checked = userSettings.preferFmp4HlsContainer(); context.querySelector('.chkEnableCinemaMode').checked = userSettings.enableCinemaMode(); diff --git a/src/components/playbackSettings/playbackSettings.template.html b/src/components/playbackSettings/playbackSettings.template.html index 8792cd77b9..19782334e1 100644 --- a/src/components/playbackSettings/playbackSettings.template.html +++ b/src/components/playbackSettings/playbackSettings.template.html @@ -90,7 +90,7 @@
${SetUsingLastTracksHelp}
-
+
-
+
-
+
-
+
'; } @@ -237,9 +237,9 @@ import template from './libraryoptionseditor.template.html'; html += ''; html += '
'; if (i > 0) { - html += ''; + html += ''; } else if (plugins.length > 1) { - html += ''; + html += ''; } html += '
'; } diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 037d75de90..e6a6767e8a 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -166,7 +166,7 @@ import ServerConnections from '../ServerConnections'; for (let i = 0, length = options.rightButtons.length; i < length; i++) { const button = options.rightButtons[i]; - html += ``; + html += ``; } return html; @@ -257,7 +257,7 @@ import ServerConnections from '../ServerConnections'; } if (!clickEntireItem && options.dragHandle) { - html += ''; + html += ''; } if (options.image !== false) { @@ -295,7 +295,7 @@ import ServerConnections from '../ServerConnections'; } if (playOnImageClick) { - html += ''; + html += ''; } const progressHtml = indicators.getProgressBarHtml(item, { @@ -455,11 +455,11 @@ import ServerConnections from '../ServerConnections'; if (!clickEntireItem) { if (options.addToListButton) { - html += ''; + html += ''; } if (options.infoButton) { - html += ''; + html += ''; } if (options.rightButtons) { @@ -471,16 +471,16 @@ import ServerConnections from '../ServerConnections'; const likes = userData.Likes == null ? '' : userData.Likes; if (itemHelper.canMarkPlayed(item) && options.enablePlayedButton !== false) { - html += ''; + html += ''; } if (itemHelper.canRate(item) && options.enableRatingButton !== false) { - html += ''; + html += ''; } } if (options.moreButton !== false) { - html += ''; + html += ''; } } html += '
'; diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.js b/src/components/mediaLibraryCreator/mediaLibraryCreator.js index 86369b853e..889804bc9d 100644 --- a/src/components/mediaLibraryCreator/mediaLibraryCreator.js +++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.js @@ -127,7 +127,7 @@ import template from './mediaLibraryCreator.template.html'; } html += '
'; - html += ``; + html += ``; html += '
'; return html; } diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.template.html b/src/components/mediaLibraryCreator/mediaLibraryCreator.template.html index c5571b54d2..27567590c9 100644 --- a/src/components/mediaLibraryCreator/mediaLibraryCreator.template.html +++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.template.html @@ -1,5 +1,5 @@
- +

${ButtonAddMediaLibrary}

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

${Folders}

diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js index dcb418f806..aaf0c1e550 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js @@ -119,7 +119,7 @@ import template from './mediaLibraryEditor.template.html'; } html += '
'; - html += ``; + html += ``; html += '
'; return html; } diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.template.html b/src/components/mediaLibraryEditor/mediaLibraryEditor.template.html index 732851d4af..22267e1c9c 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.template.html +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.template.html @@ -1,5 +1,5 @@
- +

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

${Folders}

diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index 72255530b2..737d8a4624 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -13,7 +13,7 @@ import '../../elements/emby-button/emby-button'; let status; if (item.Type === 'SeriesTimer') { - return ''; + return ''; } else if (item.TimerId || item.SeriesTimerId) { status = item.Status || 'Cancelled'; } else if (item.Type === 'Timer') { @@ -24,13 +24,13 @@ import '../../elements/emby-button/emby-button'; if (item.SeriesTimerId) { if (status !== 'Cancelled') { - return ''; + return ''; } - return ''; + return ''; } - return ''; + return ''; } function getProgramInfoHtml(item, options) { @@ -358,7 +358,7 @@ import '../../elements/emby-button/emby-button'; if (item.CommunityRating) { html += '
'; - html += ''; + html += ''; html += item.CommunityRating.toFixed(1); html += '
'; } diff --git a/src/components/metadataEditor/metadataEditor.js b/src/components/metadataEditor/metadataEditor.js index 10f2ae6cd2..ce2f27faad 100644 --- a/src/components/metadataEditor/metadataEditor.js +++ b/src/components/metadataEditor/metadataEditor.js @@ -460,7 +460,7 @@ import template from './metadataEditor.template.html'; html += '
'; if (formatString) { - html += ''; + html += ''; } html += '
'; @@ -888,7 +888,7 @@ import template from './metadataEditor.template.html'; for (let i = 0; i < items.length; i++) { html += '
'; - html += ''; + html += ''; html += '
'; @@ -898,7 +898,7 @@ import template from './metadataEditor.template.html'; html += '
'; - html += ''; + html += ''; html += '
'; } @@ -935,7 +935,7 @@ import template from './metadataEditor.template.html'; html += ''; html += '
'; - html += ''; + html += ''; html += '
'; } diff --git a/src/components/metadataEditor/metadataEditor.template.html b/src/components/metadataEditor/metadataEditor.template.html index 0f9c4516f7..a4a2413a07 100644 --- a/src/components/metadataEditor/metadataEditor.template.html +++ b/src/components/metadataEditor/metadataEditor.template.html @@ -1,18 +1,18 @@
- +

${Edit}

@@ -195,7 +195,7 @@ ${Genres}
@@ -204,7 +204,7 @@ ${People}
@@ -214,7 +214,7 @@ ${Studios}
@@ -223,7 +223,7 @@ ${Tags}
diff --git a/src/components/metadataEditor/personEditor.template.html b/src/components/metadataEditor/personEditor.template.html index 394473ed27..2e84a00fc8 100644 --- a/src/components/metadataEditor/personEditor.template.html +++ b/src/components/metadataEditor/personEditor.template.html @@ -1,5 +1,5 @@
- +

${Edit}

diff --git a/src/components/multiSelect/multiSelect.js b/src/components/multiSelect/multiSelect.js index e199fa7968..fe82788f6d 100644 --- a/src/components/multiSelect/multiSelect.js +++ b/src/components/multiSelect/multiSelect.js @@ -125,11 +125,11 @@ import itemHelper from '../itemHelper'; let html = ''; - html += ''; + html += ''; html += '

'; const moreIcon = 'more_vert'; - html += ``; + html += ``; selectionCommandsPanel.innerHTML = html; diff --git a/src/components/nowPlayingBar/nowPlayingBar.js b/src/components/nowPlayingBar/nowPlayingBar.js index 3de6b6ec37..4277100168 100644 --- a/src/components/nowPlayingBar/nowPlayingBar.js +++ b/src/components/nowPlayingBar/nowPlayingBar.js @@ -59,13 +59,13 @@ import { appRouter } from '../appRouter'; // The onclicks are needed due to the return false above html += '
'; - html += ''; + html += ''; - html += ''; + html += ''; - html += ''; + html += ''; if (!layoutManager.mobile) { - html += ''; + html += ''; } html += '
'; @@ -73,23 +73,23 @@ import { appRouter } from '../appRouter'; html += '
'; - html += ''; + html += ''; html += '
'; html += ''; html += '
'; - html += ''; - html += ''; + html += ''; + html += ''; html += '
'; html += '
'; - html += ''; + html += ''; if (layoutManager.mobile) { - html += ''; + html += ''; } else { - html += ''; + html += ''; } html += '
'; @@ -569,7 +569,7 @@ import { appRouter } from '../appRouter'; }); }); } - nowPlayingUserData.innerHTML = ''; + nowPlayingUserData.innerHTML = ''; }); } } else { diff --git a/src/components/playback/brightnessosd.js b/src/components/playback/brightnessosd.js index a23fdc0b18..d3678ac3f4 100644 --- a/src/components/playback/brightnessosd.js +++ b/src/components/playback/brightnessosd.js @@ -15,7 +15,7 @@ let enableAnimation; function getOsdElementHtml() { let html = ''; - html += ''; + html += ''; html += '
'; diff --git a/src/components/playback/volumeosd.js b/src/components/playback/volumeosd.js index 6412a6e9a5..1c958a4225 100644 --- a/src/components/playback/volumeosd.js +++ b/src/components/playback/volumeosd.js @@ -16,7 +16,7 @@ let enableAnimation; function getOsdElementHtml() { let html = ''; - html += ''; + html += ''; html += '
'; diff --git a/src/components/playerstats/playerstats.js b/src/components/playerstats/playerstats.js index 6e36c38315..acd7d63b25 100644 --- a/src/components/playerstats/playerstats.js +++ b/src/components/playerstats/playerstats.js @@ -26,7 +26,7 @@ import ServerConnections from '../ServerConnections'; if (layoutManager.tv) { button = ''; } else { - button = ''; + button = ''; } const contentClass = layoutManager.tv ? 'playerStats-content playerStats-content-tv' : 'playerStats-content'; diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index 02891b1ce1..d579d2fc15 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -242,7 +242,7 @@ import ServerConnections from '../ServerConnections'; const title = globalize.translate('HeaderAddToPlaylist'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/prompt/prompt.template.html b/src/components/prompt/prompt.template.html index a07629ae7e..80b76b48aa 100644 --- a/src/components/prompt/prompt.template.html +++ b/src/components/prompt/prompt.template.html @@ -1,6 +1,6 @@

diff --git a/src/components/recordingcreator/recordingcreator.template.html b/src/components/recordingcreator/recordingcreator.template.html index 8d7d75c8f6..0708287a98 100644 --- a/src/components/recordingcreator/recordingcreator.template.html +++ b/src/components/recordingcreator/recordingcreator.template.html @@ -1,5 +1,5 @@
- +

diff --git a/src/components/recordingcreator/recordingeditor.template.html b/src/components/recordingcreator/recordingeditor.template.html index f7a9f98ee6..c0f3d6991d 100644 --- a/src/components/recordingcreator/recordingeditor.template.html +++ b/src/components/recordingcreator/recordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderRecordingOptions}

diff --git a/src/components/recordingcreator/recordingfields.template.html b/src/components/recordingcreator/recordingfields.template.html index 25a0c3c30d..9104907951 100644 --- a/src/components/recordingcreator/recordingfields.template.html +++ b/src/components/recordingcreator/recordingfields.template.html @@ -2,7 +2,7 @@
@@ -14,7 +14,7 @@
diff --git a/src/components/recordingcreator/seriesrecordingeditor.template.html b/src/components/recordingcreator/seriesrecordingeditor.template.html index 582c1a633c..86620a77d0 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.template.html +++ b/src/components/recordingcreator/seriesrecordingeditor.template.html @@ -1,5 +1,5 @@
- +

${HeaderSeriesOptions}

diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 44dbb0603e..890a89f36e 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -120,7 +120,7 @@ class RefreshDialog { const title = globalize.translate('RefreshMetadata'); html += '
'; - html += ''; + html += ''; html += '

'; html += title; html += '

'; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 38eb27a2ba..eb789dfd6c 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -233,8 +233,8 @@ function updateNowPlayingInfo(context, state, serverId) { apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) { const userData = fullItem.UserData || {}; const likes = userData.Likes == null ? '' : userData.Likes; - context.querySelector('.nowPlayingPageUserDataButtonsTitle').innerHTML = ''; - context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = ''; + context.querySelector('.nowPlayingPageUserDataButtonsTitle').innerHTML = ''; + context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = ''; }); } else { backdrop.clearBackdrop(); @@ -256,7 +256,7 @@ function setImageUrl(context, state, url) { context.querySelector('.nowPlayingPageImage').classList.remove('nowPlayingPageImageAudio'); } } else { - imgContainer.innerHTML = '
'; + imgContainer.innerHTML = '
'; } } @@ -385,14 +385,14 @@ export default function () { const context = dlg; const toggleRepeatButtons = context.querySelectorAll('.repeatToggleButton'); const cssClass = 'buttonActive'; - let innHtml = ''; + let innHtml = ''; let repeatOn = true; switch (repeatMode) { case 'RepeatAll': break; case 'RepeatOne': - innHtml = ''; + innHtml = ''; break; case 'RepeatNone': default: @@ -889,7 +889,7 @@ export default function () { function init(ownerView, context) { let volumecontrolHtml = '
'; - volumecontrolHtml += ``; + volumecontrolHtml += ``; volumecontrolHtml += '
'; volumecontrolHtml += '
'; const optionsSection = context.querySelector('.playlistSectionButton'); diff --git a/src/components/search/SearchFields.tsx b/src/components/search/SearchFields.tsx index 52209dd550..41d714c5d2 100644 --- a/src/components/search/SearchFields.tsx +++ b/src/components/search/SearchFields.tsx @@ -73,7 +73,7 @@ const SearchFields: FunctionComponent = ({ onSearch = () => { ref={element} >
- +
@@ -84,7 +84,7 @@
- +
diff --git a/src/controllers/livetvstatus.html b/src/controllers/livetvstatus.html index 1a894bff94..a5cc476863 100644 --- a/src/controllers/livetvstatus.html +++ b/src/controllers/livetvstatus.html @@ -8,7 +8,7 @@ ${HeaderTunerDevices} ${Help}
@@ -21,7 +21,7 @@

${HeaderGuideProviders}

diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 7de9d3dca1..6e3a686c2f 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -38,11 +38,11 @@ function getDeviceHtml(device) { html += '
'; html += '
'; html += '
'; - html += `
`; + html += `
`; html += '
'; html += '
'; html += '
'; - html += ''; + html += ''; html += '
' + (device.FriendlyName || getTunerName(device.Type)) + '
'; html += '
'; html += device.Url || ' '; @@ -110,7 +110,7 @@ function renderProviders(page, providers) { for (let i = 0, length = providers.length; i < length; i++) { const provider = providers[i]; html += ''; - html += ''; + html += ''; html += '
'; } diff --git a/src/controllers/livetvtuner.html b/src/controllers/livetvtuner.html index eab958c1c0..29940a9141 100644 --- a/src/controllers/livetvtuner.html +++ b/src/controllers/livetvtuner.html @@ -24,7 +24,7 @@
- +
diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 524acfa01b..0bda9f3af4 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -152,7 +152,7 @@ import '../../elements/emby-button/emby-button'; html += '

'; html += item.Name; html += '

'; - html += ''; + html += ''; html += ''; html += '
'; if (enableScrollX()) { diff --git a/src/controllers/movies/movies.html b/src/controllers/movies/movies.html index 87e9752679..def6bbeb94 100644 --- a/src/controllers/movies/movies.html +++ b/src/controllers/movies/movies.html @@ -3,9 +3,9 @@
- - - + + +
@@ -46,8 +46,8 @@
- - + +
@@ -62,7 +62,7 @@
- +
@@ -74,9 +74,9 @@
- - - + + +
diff --git a/src/controllers/music/music.html b/src/controllers/music/music.html index 141d940745..7096ce96fa 100644 --- a/src/controllers/music/music.html +++ b/src/controllers/music/music.html @@ -11,11 +11,11 @@
- - - - - + + + + +
@@ -56,8 +56,8 @@
- - + +
@@ -72,8 +72,8 @@
- - + +
@@ -92,8 +92,8 @@
- - + +
diff --git a/src/controllers/playback/queue/index.html b/src/controllers/playback/queue/index.html index d946af4329..b5f5bf2cf6 100644 --- a/src/controllers/playback/queue/index.html +++ b/src/controllers/playback/queue/index.html @@ -32,35 +32,35 @@
@@ -68,26 +68,26 @@
@@ -100,43 +100,43 @@



@@ -178,13 +178,13 @@
diff --git a/src/controllers/playback/video/index.html b/src/controllers/playback/video/index.html index 55b6271cc7..54f8f87118 100644 --- a/src/controllers/playback/video/index.html +++ b/src/controllers/playback/video/index.html @@ -1,8 +1,8 @@
- - + +
@@ -11,7 +11,7 @@

- + ${FetchingData}
@@ -28,35 +28,35 @@
-
@@ -64,30 +64,30 @@
diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index 9aecc0f545..b863a5f550 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -169,7 +169,7 @@ import './login.scss'; html += '
"; } else { html += `
`; - html += ''; + html += ''; html += '
'; } diff --git a/src/controllers/session/selectServer/index.js b/src/controllers/session/selectServer/index.js index 9ee0000b84..632267558c 100644 --- a/src/controllers/session/selectServer/index.js +++ b/src/controllers/session/selectServer/index.js @@ -38,7 +38,7 @@ import cardBuilder from '../../../components/cardbuilder/cardBuilder'; let cardImageContainer; if (item.showIcon) { - cardImageContainer = ''; + cardImageContainer = ''; } else { cardImageContainer = '
'; } diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index b35686f289..a14d25344a 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -150,7 +150,7 @@ import '../../elements/emby-button/emby-button'; html += '

'; html += item.Name; html += '

'; - html += ''; + html += ''; html += ''; html += '
'; if (enableScrollX()) { diff --git a/src/controllers/shows/tvrecommended.html b/src/controllers/shows/tvrecommended.html index 1a7628a6c4..a46d72ae9c 100644 --- a/src/controllers/shows/tvrecommended.html +++ b/src/controllers/shows/tvrecommended.html @@ -3,9 +3,9 @@
- - - + + +
@@ -57,9 +57,9 @@
- - - + + +
diff --git a/src/controllers/user/menu/index.html b/src/controllers/user/menu/index.html index 53f0d6df78..9b3b588e76 100644 --- a/src/controllers/user/menu/index.html +++ b/src/controllers/user/menu/index.html @@ -5,7 +5,7 @@

- +
${Profile}
@@ -14,7 +14,7 @@
- +
${QuickConnect}
@@ -23,7 +23,7 @@
- +
${Display}
@@ -32,7 +32,7 @@
- +
${Home}
@@ -41,7 +41,7 @@
- +
${TitlePlayback}
@@ -50,7 +50,7 @@
- +
${Subtitles}
@@ -59,7 +59,7 @@
- +
${ClientSettings}
@@ -68,7 +68,7 @@
- +
${Controls}
@@ -79,7 +79,7 @@

${HeaderAdmin}

- +
${TabDashboard}
@@ -87,7 +87,7 @@
- +
${Metadata}
@@ -98,7 +98,7 @@

${HeaderUser}

- +
${SelectServer}
@@ -106,7 +106,7 @@
- +
${ButtonSignOut}
@@ -115,7 +115,7 @@
- +
${ButtonExitApp}
diff --git a/src/controllers/wizard/finish/index.html b/src/controllers/wizard/finish/index.html index 3447ced02f..66ee9a109c 100644 --- a/src/controllers/wizard/finish/index.html +++ b/src/controllers/wizard/finish/index.html @@ -5,11 +5,11 @@

${WizardCompleted}

diff --git a/src/controllers/wizard/library.html b/src/controllers/wizard/library.html index f43cb534eb..79c551c32f 100644 --- a/src/controllers/wizard/library.html +++ b/src/controllers/wizard/library.html @@ -3,7 +3,7 @@

@@ -11,12 +11,12 @@
diff --git a/src/controllers/wizard/remote/index.html b/src/controllers/wizard/remote/index.html index 0334f584c5..05070e13c8 100644 --- a/src/controllers/wizard/remote/index.html +++ b/src/controllers/wizard/remote/index.html @@ -21,12 +21,12 @@
diff --git a/src/controllers/wizard/settings/index.html b/src/controllers/wizard/settings/index.html index d1f557d8f1..52b44376eb 100644 --- a/src/controllers/wizard/settings/index.html +++ b/src/controllers/wizard/settings/index.html @@ -16,12 +16,12 @@
diff --git a/src/controllers/wizard/start/index.html b/src/controllers/wizard/start/index.html index 5306d2ca73..5a8cb90c9c 100644 --- a/src/controllers/wizard/start/index.html +++ b/src/controllers/wizard/start/index.html @@ -20,7 +20,7 @@
diff --git a/src/controllers/wizard/user/index.html b/src/controllers/wizard/user/index.html index 24429d043a..785c9d8945 100644 --- a/src/controllers/wizard/user/index.html +++ b/src/controllers/wizard/user/index.html @@ -22,12 +22,12 @@
diff --git a/src/elements/emby-checkbox/emby-checkbox.js b/src/elements/emby-checkbox/emby-checkbox.js index ef21ff8136..1923ef4e5c 100644 --- a/src/elements/emby-checkbox/emby-checkbox.js +++ b/src/elements/emby-checkbox/emby-checkbox.js @@ -61,8 +61,8 @@ import 'webcomponents.js/webcomponents-lite'; const checkedIcon = this.getAttribute('data-checkedicon') || 'check'; const uncheckedIcon = this.getAttribute('data-uncheckedicon') || ''; - const checkHtml = ''; - const uncheckedHtml = ''; + const checkHtml = ''; + const uncheckedHtml = ''; labelElement.insertAdjacentHTML('beforeend', '' + checkHtml + uncheckedHtml + ''); labelTextElement.classList.add('checkboxLabel'); diff --git a/src/elements/emby-collapse/emby-collapse.js b/src/elements/emby-collapse/emby-collapse.js index c4dfeeb5af..bd9743c55b 100644 --- a/src/elements/emby-collapse/emby-collapse.js +++ b/src/elements/emby-collapse/emby-collapse.js @@ -81,7 +81,7 @@ import '../emby-button/emby-button'; const title = this.getAttribute('title'); - const html = ''; + const html = ''; this.insertAdjacentHTML('afterbegin', html); diff --git a/src/elements/emby-scrollbuttons/emby-scrollbuttons.js b/src/elements/emby-scrollbuttons/emby-scrollbuttons.js index d1cb4705bc..b484733aea 100644 --- a/src/elements/emby-scrollbuttons/emby-scrollbuttons.js +++ b/src/elements/emby-scrollbuttons/emby-scrollbuttons.js @@ -13,7 +13,7 @@ const EmbyScrollButtonsPrototype = Object.create(HTMLDivElement.prototype); const icon = direction === 'left' ? 'chevron_left' : 'chevron_right'; html += ''; return html; diff --git a/src/elements/emby-select/emby-select.js b/src/elements/emby-select/emby-select.js index d73277a89d..d1057a86ed 100644 --- a/src/elements/emby-select/emby-select.js +++ b/src/elements/emby-select/emby-select.js @@ -141,7 +141,7 @@ import 'webcomponents.js/webcomponents-lite'; this.parentNode?.insertBefore(label, this); if (this.classList.contains('emby-select-withcolor')) { - this.parentNode?.insertAdjacentHTML('beforeend', '
0
'); + this.parentNode?.insertAdjacentHTML('beforeend', '
0
'); } }; diff --git a/src/plugins/bookPlayer/tableOfContents.js b/src/plugins/bookPlayer/tableOfContents.js index db498c10fd..7736891e02 100644 --- a/src/plugins/bookPlayer/tableOfContents.js +++ b/src/plugins/bookPlayer/tableOfContents.js @@ -63,7 +63,7 @@ export default class TableOfContents { elem.id = 'dialogToc'; let tocHtml = '
'; - tocHtml += ''; + tocHtml += ''; tocHtml += '
'; tocHtml += '
    '; rendition.book.navigation.forEach((chapter) => { diff --git a/src/plugins/bookPlayer/template.html b/src/plugins/bookPlayer/template.html index 73089db44f..bf71834f02 100644 --- a/src/plugins/bookPlayer/template.html +++ b/src/plugins/bookPlayer/template.html @@ -1,18 +1,18 @@
    diff --git a/src/plugins/comicsPlayer/plugin.js b/src/plugins/comicsPlayer/plugin.js index c1383fbe9d..8a02926a42 100644 --- a/src/plugins/comicsPlayer/plugin.js +++ b/src/plugins/comicsPlayer/plugin.js @@ -144,7 +144,7 @@ export class ComicsPlayer { elem.innerHTML = `
    - +
    `; dialogHelper.open(elem); diff --git a/src/plugins/pdfPlayer/plugin.js b/src/plugins/pdfPlayer/plugin.js index d568e42efc..7532b5f062 100644 --- a/src/plugins/pdfPlayer/plugin.js +++ b/src/plugins/pdfPlayer/plugin.js @@ -171,7 +171,7 @@ export class PdfPlayer { let html = ''; html += ''; html += '
    '; - html += ''; + html += ''; html += '
    '; elem.id = 'pdfPlayer'; diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 1ac9df9f7c..2fba0fcfd4 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -47,20 +47,20 @@ import Dashboard from './clientUtils'; } let htmlName = "
    "; if (item.IsFolder) { - htmlName += ''; + htmlName += ''; } else if (item.MediaType === 'Video') { - htmlName += ''; + htmlName += ''; } else if (item.MediaType === 'Audio') { - htmlName += ''; + htmlName += ''; } else if (item.Type === 'TvChannel') { - htmlName += ''; + htmlName += ''; } else if (item.MediaType === 'Photo') { - htmlName += ''; + htmlName += ''; } else if (item.MediaType === 'Book') { - htmlName += ''; + htmlName += ''; } if (item.LockData) { - htmlName += ''; + htmlName += ''; } htmlName += name; htmlName += '
    '; diff --git a/src/scripts/libraryBrowser.js b/src/scripts/libraryBrowser.js index a928902cb4..7f9480ddae 100644 --- a/src/scripts/libraryBrowser.js +++ b/src/scripts/libraryBrowser.js @@ -96,20 +96,20 @@ export function getQueryPagingHtml (options) { html += '
    '; if (showControls) { - html += ''; - html += ''; + html += ''; + html += ''; } if (options.addLayoutButton) { - html += ''; + html += ''; } if (options.sortButton) { - html += ''; + html += ''; } if (options.filterButton) { - html += ''; + html += ''; } html += '
    '; diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index ea74637839..f1146e4e5d 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -25,18 +25,18 @@ import Headroom from 'headroom.js'; let html = ''; html += '
    '; html += '
    '; - html += ''; - html += ''; - html += ''; + html += ''; + html += ''; + html += ''; html += '

    '; html += '
    '; html += '
    '; - html += ''; + html += ''; html += ''; - html += ''; - html += ''; - html += ''; - html += ''; + html += ''; + html += ''; + html += ''; + html += ''; html += '
    '; html += '
    '; html += '
    '; @@ -156,7 +156,7 @@ import Headroom from 'headroom.js'; headerUserButton.innerHTML = '
    "; } else { headerUserButton.classList.remove('headerUserButtonRound'); - headerUserButton.innerHTML = ''; + headerUserButton.innerHTML = ''; } } @@ -272,7 +272,7 @@ import Headroom from 'headroom.js'; function refreshLibraryInfoInDrawer(user) { let html = ''; html += '
    '; - html += '' + globalize.translate('Home') + ''; + html += `${globalize.translate('Home')}`; // placeholder for custom menu links html += '
    '; @@ -285,8 +285,8 @@ import Headroom from 'headroom.js'; html += '

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

    '; - html += '' + globalize.translate('TabDashboard') + ''; - html += '' + globalize.translate('Metadata') + ''; + html += `${globalize.translate('TabDashboard')}`; + html += `${globalize.translate('Metadata')}`; html += '
    '; } @@ -297,14 +297,14 @@ import Headroom from 'headroom.js'; html += ''; if (appHost.supports('multiserver')) { - html += '' + globalize.translate('SelectServer') + ''; + html += `${globalize.translate('SelectServer')}`; } - html += '' + globalize.translate('Settings') + ''; - html += '' + globalize.translate('ButtonSignOut') + ''; + html += `${globalize.translate('Settings')}`; + html += `${globalize.translate('ButtonSignOut')}`; if (appHost.supports('exitmenu')) { - html += '' + globalize.translate('ButtonExitApp') + ''; + html += `${globalize.translate('ButtonExitApp')}`; } html += '
'; @@ -538,7 +538,7 @@ import Headroom from 'headroom.js'; menuHtml += ''; if (item.icon) { - menuHtml += ''; + menuHtml += ''; } menuHtml += ''; @@ -659,6 +659,7 @@ import Headroom from 'headroom.js'; const icon = document.createElement('span'); icon.className = `material-icons navMenuOptionIcon ${link.icon || 'link'}`; + icon.setAttribute('aria-hidden', 'true'); option.appendChild(icon); const label = document.createElement('span'); @@ -682,7 +683,7 @@ import Headroom from 'headroom.js'; const itemId = i.Id; return ` - + ${i.Name} `; }).join(''); From 68f7002ca82b7064c857c4631261d06b79551535 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Fri, 25 Feb 2022 01:40:54 -0500 Subject: [PATCH 288/389] Fix remote control movie poster size --- src/components/remotecontrol/remotecontrol.scss | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/components/remotecontrol/remotecontrol.scss b/src/components/remotecontrol/remotecontrol.scss index 3248e7b310..42cd6a8f16 100644 --- a/src/components/remotecontrol/remotecontrol.scss +++ b/src/components/remotecontrol/remotecontrol.scss @@ -325,13 +325,15 @@ } .nowPlayingPageImageContainer { + display: flex; + flex-direction: column; flex-grow: 1; flex-shrink: 1; + align-items: center; + justify-content: center; width: 100%; min-height: 0; margin: 0 auto 0.5em; - display: flex; - align-items: center; } .nowPlayingPageImageContainerNoAlbum .cardImageContainer .cardImageIcon { @@ -403,17 +405,13 @@ margin: 0 auto; } - .nowPlayingPageImage.nowPlayingPageImageAudio { + .nowPlayingPageImage.nowPlayingPageImageAudio, + .nowPlayingPageImageContainer.nowPlayingPageImagePoster { width: auto; max-width: 100%; max-height: 100%; } - .nowPlayingPageImageContainer.nowPlayingPageImagePoster { - height: 50%; - overflow: hidden; - } - .nowPlayingPageImageContainer.nowPlayingPageImagePoster img { height: 100%; width: auto; From 3d5531d16a02f85a31da93688d9335740f318708 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Fri, 25 Feb 2022 01:57:10 -0500 Subject: [PATCH 289/389] Fix remote control translation --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 821f24e1f9..ee831e690c 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -423,7 +423,7 @@ "HeaderRecordingOptions": "Recording Options", "HeaderRecordingPostProcessing": "Recording Post Processing", "HeaderRemoteAccessSettings": "Remote Access Settings", - "HeaderRemoteControl": "Remote control:", + "HeaderRemoteControl": "Remote Control", "HeaderRemoveMediaFolder": "Remove Media Folder", "HeaderRemoveMediaLocation": "Remove Media Location", "HeaderResponseProfile": "Response Profile", From df0adbae3de20105fe7765bf4d7a0cbf93597ff5 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 18 Feb 2022 14:27:39 +0300 Subject: [PATCH 290/389] Disable implicit any --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index ee45276637..82a831f89c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, - "noImplicitAny": false, + "noImplicitAny": true, "allowSyntheticDefaultImports": true, "strict": true, "module": "ESNext", From 6e1845ef0c92b27b8408e9f7f33987be8b040962 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 15 Feb 2022 23:17:31 +0300 Subject: [PATCH 291/389] Add dependencies --- package-lock.json | 53 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +++ 2 files changed, 56 insertions(+) diff --git a/package-lock.json b/package-lock.json index 68d5a3804d..6697a4d95c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2651,6 +2651,21 @@ "localforage": "*" } }, + "@types/lodash": { + "version": "4.14.178", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", + "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", + "dev": true + }, + "@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "dev": true, + "requires": { + "@types/lodash": "*" + } + }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -2687,6 +2702,12 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/prop-types": { + "version": "15.7.4", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", + "dev": true + }, "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -2699,6 +2720,26 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, + "@types/react": { + "version": "17.0.39", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.39.tgz", + "integrity": "sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "17.0.11", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", + "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -2714,6 +2755,12 @@ "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", "dev": true }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true + }, "@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -4686,6 +4733,12 @@ "css-tree": "^1.1.2" } }, + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", + "dev": true + }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", diff --git a/package.json b/package.json index b37e61f0df..39268a9568 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,9 @@ "@babel/preset-env": "7.16.11", "@babel/preset-react": "7.16.7", "@babel/preset-typescript": "7.16.7", + "@types/lodash-es": "4.17.6", + "@types/react": "17.0.39", + "@types/react-dom": "17.0.11", "@typescript-eslint/eslint-plugin": "5.12.0", "@typescript-eslint/parser": "5.12.0", "@uupaa/dynamic-import-polyfill": "1.0.2", From 7ed78e0daa7b9189cd05a912a783c981526b7807 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 15 Feb 2022 23:42:46 +0300 Subject: [PATCH 292/389] Add jellyfin-apiclient declarations --- package-lock.json | 26 ++++ package.json | 1 + src/apiclient.d.ts | 350 +++++++++++++++++++++++++++++++++++++++++++++ src/global.d.ts | 5 +- 4 files changed, 381 insertions(+), 1 deletion(-) create mode 100644 src/apiclient.d.ts diff --git a/package-lock.json b/package-lock.json index 6697a4d95c..bf88087474 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2513,6 +2513,17 @@ "string.prototype.matchall": "^4.0.6" } }, + "@thornbill/jellyfin-sdk": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@thornbill/jellyfin-sdk/-/jellyfin-sdk-0.4.1.tgz", + "integrity": "sha512-DuUeSiIvk1qcEYp9oxnKc/e4T0zj3LujXhITQ6L6TqGOo8miNiBgU8OjmidAUwPc2ibCLAK2rM5BcNVAEwaFmw==", + "dev": true, + "requires": { + "axios": "^0.26.0", + "compare-versions": "^4.0.0", + "normalize-url": "^6.1.0" + } + }, "@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -3587,6 +3598,15 @@ "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", "dev": true }, + "axios": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.8" + } + }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -4199,6 +4219,12 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "compare-versions": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.3.tgz", + "integrity": "sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg==", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", diff --git a/package.json b/package.json index 39268a9568..d27e43887d 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@babel/preset-env": "7.16.11", "@babel/preset-react": "7.16.7", "@babel/preset-typescript": "7.16.7", + "@thornbill/jellyfin-sdk": "0.4.1", "@types/lodash-es": "4.17.6", "@types/react": "17.0.39", "@types/react-dom": "17.0.11", diff --git a/src/apiclient.d.ts b/src/apiclient.d.ts new file mode 100644 index 0000000000..565ac35a83 --- /dev/null +++ b/src/apiclient.d.ts @@ -0,0 +1,350 @@ +// TODO: Move to jellyfin-apiclient +declare module 'jellyfin-apiclient' { + import { + AllThemeMediaResult, + AuthenticationResult, + BaseItemDto, + BaseItemDtoQueryResult, + BufferRequestDto, + ClientCapabilities, + CountryInfo, + CultureDto, + DeviceOptions, + DisplayPreferencesDto, + EndPointInfo, + FileSystemEntryInfo, + GeneralCommand, + GroupInfoDto, + GuideInfo, + IgnoreWaitRequestDto, + ImageInfo, + ImageProviderInfo, + ImageType, + ItemCounts, + LiveTvInfo, + MovePlaylistItemRequestDto, + NewGroupRequestDto, + NextItemRequestDto, + NotificationResultDto, + NotificationsSummaryDto, + ParentalRating, + PingRequestDto, + PlaybackInfoResponse, + PlaybackProgressInfo, + PlaybackStartInfo, + PlaybackStopInfo, + PlayCommand, + PlaystateCommand, + PluginInfo, + PluginSecurityInfo, + PreviousItemRequestDto, + QueryFiltersLegacy, + QueueRequestDto, + QuickConnectResult, + QuickConnectState, + ReadyRequestDto, + RecommendationDto, + RemoteImageResult, + RemoveFromPlaylistRequestDto, + SearchHintResult, + SeekRequestDto, + SeriesTimerInfoDto, + SeriesTimerInfoDtoQueryResult, + ServerConfiguration, + SessionInfo, + SetPlaylistItemRequestDto, + SetRepeatModeRequestDto, + SetShuffleModeRequestDto, + SystemInfo, + TaskInfo, + TaskTriggerInfo, + TimerInfoDto, + TimerInfoDtoQueryResult, + UserConfiguration, + UserDto, + UserItemDataDto, + UserPolicy, + UtcTimeResponse, + VirtualFolderInfo + } from '@thornbill/jellyfin-sdk/dist/generated-client'; + + class ApiClient { + constructor(serverAddress: string, appName: string, appVersion: string, deviceName: string, deviceId: string); + + accessToken(): string; + addMediaPath(virtualFolderName: string, mediaPath: string, networkSharePath: string, refreshLibrary?: boolean): Promise; + addVirtualFolder(name: string, type?: string, refreshLibrary?: boolean, libraryOptions?: any): Promise; + appName(): string; + appVersion(): string; + authenticateUserByName(name: string, password: string): Promise; + cancelLiveTvSeriesTimer(id: string): Promise; + cancelLiveTvTimer(id: string): Promise; + cancelSyncItems(itemIds: string[], targetId?: string): Promise; + clearAuthenticationInfo(): void; + clearUserItemRating(userId: string, itemId: string): Promise; + closeWebSocket(): void; + createLiveTvSeriesTimer(item: string): Promise; + createLiveTvTimer(item: string): Promise; + createPackageReview(review: any): Promise; + createSyncPlayGroup(options?: NewGroupRequestDto): Promise; + createUser(user: UserDto): Promise; + deleteDevice(deviceId: string): Promise; + deleteItemImage(itemId: string, imageType: ImageType, imageIndex?: number): Promise; + deleteItem(itemId: string): Promise; + deleteLiveTvRecording(id: string): Promise; + deleteUserImage(userId: string, imageType: ImageType, imageIndex?: number): Promise; + deleteUser(userId: string): Promise; + detectBitrate(force: boolean): Promise; + deviceId(): string; + deviceName(): string; + disablePlugin(id: string, version: string): Promise; + downloadRemoteImage(options: any): Promise; + enablePlugin(id: string, version: string): Promise; + encodeName(name: string): string; + ensureWebSocket(): void; + fetch(request: any, includeAuthorization?: boolean): Promise; + fetchWithFailover(request: any, enableReconnection?: boolean): Promise; + getAdditionalVideoParts(userId?: string, itemId: string): Promise; + getAlbumArtists(userId: string, options?: any): Promise; + getAncestorItems(itemId: string, userId?: string): Promise; + getArtist(name: string, userId?: string): Promise; + getArtists(userId: string, options?: any): Promise; + getAvailablePlugins(options?: any): Promise; + getAvailableRemoteImages(options: any): Promise; + getContentUploadHistory(): Promise; + getCountries(): Promise; + getCriticReviews(itemId: string, options?: any): Promise; + getCultures(): Promise; + getCurrentUserId(): string; + getDateParamValue(date: Date): string; + getDefaultImageQuality(imageType: ImageType): number; + getDevicesOptions(): Promise; + getDirectoryContents(path: string, options?: any): Promise; + getDisplayPreferences(id: string, userId: string, app: string): Promise; + getDownloadSpeed(byteSize: number): Promise; + getDrives(): Promise; + getEndpointInfo(): Promise; + getEpisodes(itemId: string, options?: any): Promise; + getFilters(options?: any): Promise; + getGenre(name: string, userId?: string): Promise; + getGenres(userId: string, options?: any): Promise; + getImageUrl(itemId: string, options?: any): string; + getInstalledPlugins(): Promise; + getInstantMixFromItem(itemId: string, options?: any): Promise; + getIntros(itemId: string): Promise; + getItemCounts(userId?: string): Promise; + getItemDownloadUrl(itemId: string): string; + getItemImageInfos(itemId: string): Promise; + getItems(userId: string, options?: any): Promise; + getItem(userId: string, itemId: string): Promise; + getJSON(url: string, includeAuthorization?: boolean): Promise; + getLatestItems(options?: any): Promise; + getLiveStreamMediaInfo(liveStreamId: string): Promise; + getLiveTvChannel(id: string, userId?: string): Promise; + getLiveTvChannels(options?: any): Promise; + getLiveTvGuideInfo(userId: string): Promise; + getLiveTvInfo(userId: string): Promise; + getLiveTvProgram(id: string, userId?: string): Promise; + getLiveTvPrograms(options?: any): Promise; + getLiveTvRecommendedPrograms(options?: any): Promise; + getLiveTvRecordingGroup(id: string): Promise; + getLiveTvRecordingGroups(options?: any): Promise; + getLiveTvRecording(id: string, userId?: string): Promise; + getLiveTvRecordingSeries(options?: any): Promise; + getLiveTvRecordings(options?: any): Promise; + getLiveTvSeriesTimer(id: string): Promise; + getLiveTvSeriesTimers(options?: any): Promise; + getLiveTvTimer(id: string): Promise; + getLiveTvTimers(options?: any): Promise; + getLocalTrailers(userId: string, itemId: string): Promise; + getMovieRecommendations(options?: any): Promise; + getMusicGenre(name: string, userId?: string): Promise; + getMusicGenres(userId: string, options?: any): Promise; + getNamedConfiguration(name: string): Promise; + getNetworkDevices(): Promise; + getNetworkShares(path: string): Promise; + getNewLiveTvTimerDefaults(options?: any): Promise; + getNextUpEpisodes(options?: any): Promise; + getNotificationSummary(userId: string): Promise; + getNotifications(userId: string, options?: any): Promise; + getPackageInfo(name: string, guid: string): Promise; + getPackageReviews(packageId: string, minRating?: string, maxRating?: string, limit?: string): Promise; + getParentalRatings(): Promise; + getParentPath(path: string): Promise; + getPeople(userId: string, options?: any): Promise; + getPerson(name: string, userId?: string): Promise; + getPhysicalPaths(): Promise; + getPlaybackInfo(itemId: string, options: any, deviceProfile: any): Promise; + getPluginConfiguration(id: string): Promise; + getPublicSystemInfo(): Promise; + getPublicUsers(): Promise; + getQuickConnect(verb: string): Promise; + getReadySyncItems(deviceId: string): Promise; + getRecordingFolders(userId: string): Promise; + getRegistrationInfo(feature: string): Promise; + getRemoteImageProviders(options: any): Promise; + getResumableItems(userId: string, options?: any): Promise; + getRootFolder(userId: string): Promise; + getSavedEndpointInfo(): EndPointInfo; + getScaledImageUrl(itemId: string, options?: any): string; + getScheduledTask(id: string): Promise; + getScheduledTasks(options?: any): Promise; + getSearchHints(options?: any): Promise; + getSeasons(itemId: string, options?: any): Promise; + getServerConfiguration(): Promise; + getServerTime(): Promise; + getSessions(options?: any): Promise; + getSimilarItems(itemId: string, options?: any): Promise; + getSpecialFeatures(userId: string, itemId: string): Promise; + getStudio(name: string, userId?: string): Promise; + getStudios(userId: string, options?: any): Promise; + getSyncPlayGroups(): Promise; + getSyncStatus(itemId: string): Promise; + getSystemInfo(): Promise; + getThemeMedia(userId?: string, itemId: string, inherit?: boolean): Promise; + getThumbImageUrl(item: BaseItemDto, options?: any): string; + getUpcomingEpisodes(options?: any): Promise; + getUrl(name: string, params?: any, serverAddress?: string): string; + get(url: string): Promise; + getUserImageUrl(userId: string, options?: any): string; + getUsers(options?: any): Promise; + getUser(userId: string): Promise; + getUserViews(options?: any, userId: string): Promise; + getVirtualFolders(): Promise; + handleMessageReceived(msg: any): void; + installPlugin(name: string, guid: string, version?: string): Promise; + isLoggedIn(): boolean; + isMessageChannelOpen(): boolean; + isMinServerVersion(version: string): boolean; + isWebSocketOpen(): boolean; + isWebSocketOpenOrConnecting(): boolean; + isWebSocketSupported(): boolean; + joinSyncPlayGroup(options?: any): Promise; + leaveSyncPlayGroup(): Promise; + logout(): Promise; + markNotificationsRead(userId: string, idList: string[], isRead: boolean): Promise; + markPlayed(userId: string, itemId: string, date: Date): Promise; + markUnplayed(userId: string, itemId: string, date: Date): Promise; + openWebSocket(): void; + quickConnect(secret: string): Promise; + refreshItem(itemId: string, options?: any): Promise; + removeMediaPath(virtualFolderName: string, mediaPath: string, refreshLibrary?: boolean): Promise; + removeVirtualFolder(name: string, refreshLibrary?: boolean): Promise; + renameVirtualFolder(name: string, newName: string, refreshLibrary?: boolean): Promise; + reportCapabilities(capabilities: ClientCapabilities): Promise; + reportOfflineActions(actions: any): Promise; + reportPlaybackProgress(options: PlaybackProgressInfo): Promise; + reportPlaybackStart(options: PlaybackStartInfo): Promise; + reportPlaybackStopped(options: PlaybackStopInfo): Promise; + reportSyncJobItemTransferred(syncJobItemId: string): Promise; + requestSyncPlayBuffering(options?: BufferRequestDto): Promise; + requestSyncPlayMovePlaylistItem(options?: MovePlaylistItemRequestDto): Promise; + requestSyncPlayNextItem(options?: NextItemRequestDto): Promise; + requestSyncPlayPause(): Promise; + requestSyncPlayPreviousItem(options?: PreviousItemRequestDto): Promise; + requestSyncPlayQueue(options?: QueueRequestDto): Promise; + requestSyncPlayReady(options?: ReadyRequestDto): Promise; + requestSyncPlayRemoveFromPlaylist(options?: RemoveFromPlaylistRequestDto): Promise; + requestSyncPlaySeek(options?: SeekRequestDto): Promise; + requestSyncPlaySetIgnoreWait(options?: IgnoreWaitRequestDto): Promise; + requestSyncPlaySetNewQueue(options?: NewGroupRequestDto): Promise; + requestSyncPlaySetPlaylistItem(options?: SetPlaylistItemRequestDto): Promise; + requestSyncPlaySetRepeatMode(options?: SetRepeatModeRequestDto): Promise; + requestSyncPlaySetShuffleMode(options?: SetShuffleModeRequestDto): Promise; + requestSyncPlayUnpause(): Promise; + resetEasyPassword(userId: string): Promise; + resetLiveTvTuner(id: string): Promise; + resetUserPassword(userId: string): Promise; + restartServer(): Promise; + sendCommand(sessionId: string, command: any): Promise; + sendMessageCommand(sessionId: string, options: GeneralCommand): Promise; + sendMessage(name: string, data: any): void; + sendPlayCommand(sessionId: string, options: PlayCommand): Promise; + sendPlayStateCommand(sessionId: string, command: PlaystateCommand, options?: any): Promise; + sendSyncPlayPing(options?: PingRequestDto): Promise; + sendWebSocketMessage(name: string, data: any): void; + serverAddress(val?: string): string; + serverId(): string; + serverVersion(): string + setAuthenticationInfo(accessKey?: string, userId?: string): void; + setRequestHeaders(headers: any): void; + setSystemInfo(info: SystemInfo): void; + shutdownServer(): Promise; + startScheduledTask(id: string): Promise; + stopActiveEncodings(playSessionId: string): Promise; + stopScheduledTask(id: string): Promise; + syncData(data: any): Promise; + uninstallPluginByVersion(id: string, version: string): Promise; + uninstallPlugin(id: string): Promise; + updateDisplayPreferences(id: string, obj: DisplayPreferencesDto, userId: string, app: string): Promise; + updateEasyPassword(userId: string, newPassword: string): Promise; + updateFavoriteStatus(userId: string, itemId: string, isFavorite: boolean): Promise; + updateItemImageIndex(itemId: string, imageType: ImageType, imageIndex: number, newIndex: number): Promise; + updateItem(item: BaseItemDto): Promise; + updateLiveTvSeriesTimer(item: SeriesTimerInfoDto): Promise; + updateLiveTvTimer(item: TimerInfoDto): Promise; + updateMediaPath(virtualFolderName: string, pathInfo: any): Promise; + updateNamedConfiguration(name: string, configuration: any): Promise; + updatePluginConfiguration(id: string, configuration: any): Promise; + updatePluginSecurityInfo(info: PluginSecurityInfo): Promise; + updateScheduledTaskTriggers(id: string, triggers: TaskTriggerInfo[]): Promise; + updateServerConfiguration(configuration: ServerConfiguration): Promise; + updateServerInfo(server: any, serverUrl: string): void; + updateUserConfiguration(userId: string, configuration: UserConfiguration): Promise; + updateUserItemRating(userId: string, itemId: string, likes: boolean): Promise; + updateUserPassword(userId: string, currentPassword: string, newPassword: string): Promise; + updateUserPolicy(userId: string, policy: UserPolicy): Promise; + updateUser(user: UserDto): Promise; + updateVirtualFolderOptions(id: string, libraryOptions?: any): Promise; + uploadItemImage(itemId: string, imageType: ImageType, file: File): Promise; + uploadItemSubtitle(itemId: string, language: string, isForced: boolean, file: File): Promise; + uploadUserImage(userId: string, imageType: ImageType, file: File): Promise; + } + + class AppStore { + constructor(); + + getItem(name: string): string|null; + removeItem(name: string): void; + setItem(name: string, value: string): void; + } + + class ConnectionManager { + constructor(credentialProvider: Credentials, appName: string, appVersion: string, deviceName: string, deviceId: string, capabilities: ClientCapabilities); + + addApiClient(apiClient: ApiClient): void; + clearData(): void; + connect(options?: any): Promise; + connectToAddress(address: string, options?: any): Promise; + connectToServer(server: any, options?: any): Promise; + connectToServers(servers: any[], options?: any): Promise; + deleteServer(serverId: string): Promise; + getApiClient(item: BaseItemDto|string): ApiClient; + getApiClients(): ApiClient[]; + getAvailableServers(): any[]; + getOrCreateApiClient(serverId: string): ApiClient; + getSavedServers(): any[]; + handleMessageReceived(msg: any): void; + logout(): Promise; + minServerVersion(val?: string): string; + user(apiClient: ApiClient): Promise; + } + + class Credentials { + constructor(key?: string); + + addOrUpdateServer(list: any[], server: any): any; + clear(): void; + credentials(data?: any): any; + } + + interface Event { + type: string; + } + + const Events: { + off(obj: any, eventName: string, fn: (e: Event, ...args: any[]) => void): void; + on(obj: any, eventName: string, fn: (e: Event, ...args: any[]) => void): void; + trigger(obj: any, eventName: string, ...args: any[]): void; + }; +} diff --git a/src/global.d.ts b/src/global.d.ts index e3243f505f..942f37b0cb 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,5 +1,8 @@ export declare global { + import { ApiClient, Events } from 'jellyfin-apiclient'; + interface Window { - ApiClient: any; + ApiClient: ApiClient; + Events: Events; } } From 85e9aff281b9eeced79fcc1407fd1804cdf21d29 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 19 Feb 2022 12:43:11 +0300 Subject: [PATCH 293/389] docs: fix documentation for TypeScript --- src/components/cardbuilder/cardBuilder.js | 18 +++++++++++++----- src/scripts/dom.js | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 17bc60818d..781eb36843 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -481,12 +481,20 @@ import ServerConnections from '../ServerConnections'; return null; } + /** + * @typedef {Object} CardImageUrl + * @property {string} imgUrl - Image URL. + * @property {string} blurhash - Image blurhash. + * @property {boolean} forceName - Force name. + * @property {boolean} coverImage - Use cover style. + */ + /** Get the URL of the card's image. * @param {Object} item - Item for which to generate a card. * @param {Object} apiClient - API client object. * @param {Object} options - Options of the card. * @param {string} shape - Shape of the desired image. - * @returns {Object} Object representing the URL of the card's image. + * @returns {CardImageUrl} Object representing the URL of the card's image. */ function getCardImageUrl(item, apiClient, options, shape) { item = item.ProgramInfo || item; @@ -639,7 +647,7 @@ import ServerConnections from '../ServerConnections'; /** * Generates an index used to select the default color of a card based on a string. - * @param {string} str - String to use for generating the index. + * @param {?string} [str] - String to use for generating the index. * @returns {number} Index of the color. */ function getDefaultColorIndex(str) { @@ -726,8 +734,8 @@ import ServerConnections from '../ServerConnections'; /** * Returns the air time text for the item based on the given times. * @param {object} item - Item used to generate the air time text. - * @param {string} showAirDateTime - ISO8601 date for the start of the show. - * @param {string} showAirEndTime - ISO8601 date for the end of the show. + * @param {boolean} showAirDateTime - ISO8601 date for the start of the show. + * @param {boolean} showAirEndTime - ISO8601 date for the end of the show. * @returns {string} The air time text for the item based on the given dates. */ function getAirTimeText(item, showAirDateTime, showAirEndTime) { @@ -1129,7 +1137,7 @@ import ServerConnections from '../ServerConnections'; /** * Returns the default background class for a card based on a string. - * @param {string} str - Text used to generate the background class. + * @param {?string} [str] - Text used to generate the background class. * @returns {string} CSS classes for default card backgrounds. */ export function getDefaultBackgroundClass(str) { diff --git a/src/scripts/dom.js b/src/scripts/dom.js index 63935edbbf..c08230f06a 100644 --- a/src/scripts/dom.js +++ b/src/scripts/dom.js @@ -9,7 +9,7 @@ * Returns parent of element with specified attribute value. * @param {HTMLElement} elem - Element whose parent need to find. * @param {string} name - Attribute name. - * @param {mixed} value - Attribute value. + * @param {mixed} [value] - Attribute value. * @returns {HTMLElement} Parent with specified attribute value. */ export function parentWithAttribute(elem, name, value) { From c14daafffb418f49c2850b840975af47161c536f Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 18 Feb 2022 13:14:26 +0300 Subject: [PATCH 294/389] Remove type casting --- src/components/search/LiveTVSearchResults.tsx | 3 +-- src/components/search/SearchResults.tsx | 3 +-- src/components/search/SearchSuggestions.tsx | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/components/search/LiveTVSearchResults.tsx b/src/components/search/LiveTVSearchResults.tsx index f449a59fad..9f9874db26 100644 --- a/src/components/search/LiveTVSearchResults.tsx +++ b/src/components/search/LiveTVSearchResults.tsx @@ -72,8 +72,7 @@ const LiveTVSearchResults: FunctionComponent = ({ serv setChannels([]); if (query && collectionType === 'livetv') { - // TODO: Remove type casting once we're using a properly typed API client - const apiClient = (ServerConnections as any).getApiClient(serverId); + const apiClient = ServerConnections.getApiClient(serverId); // Movies row fetchItems(apiClient, { diff --git a/src/components/search/SearchResults.tsx b/src/components/search/SearchResults.tsx index 0b3d8213f7..e814eba7fa 100644 --- a/src/components/search/SearchResults.tsx +++ b/src/components/search/SearchResults.tsx @@ -99,8 +99,7 @@ const SearchResults: FunctionComponent = ({ serverId, parent setPeople([]); if (query) { - // TODO: Remove type casting once we're using a properly typed API client - const apiClient = (ServerConnections as any).getApiClient(serverId); + const apiClient = ServerConnections.getApiClient(serverId); // Movie libraries if (!collectionType || isMovies()) { diff --git a/src/components/search/SearchSuggestions.tsx b/src/components/search/SearchSuggestions.tsx index a09016e412..c13659c60d 100644 --- a/src/components/search/SearchSuggestions.tsx +++ b/src/components/search/SearchSuggestions.tsx @@ -27,8 +27,7 @@ const SearchSuggestions: FunctionComponent = ({ serverId const [ suggestions, setSuggestions ] = useState([]); useEffect(() => { - // TODO: Remove type casting once we're using a properly typed API client - const apiClient = (ServerConnections as any).getApiClient(serverId); + const apiClient = ServerConnections.getApiClient(serverId); apiClient.getItems(apiClient.getCurrentUserId(), { SortBy: 'IsFavoriteOrLiked,Random', From 8338bb550a2439ed57b635371b7f64f708b43cd8 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sat, 19 Feb 2022 00:22:13 +0300 Subject: [PATCH 295/389] Use type from API --- src/components/search/SearchResultsRow.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/search/SearchResultsRow.tsx b/src/components/search/SearchResultsRow.tsx index bdbce785ae..10bdd1d9a1 100644 --- a/src/components/search/SearchResultsRow.tsx +++ b/src/components/search/SearchResultsRow.tsx @@ -1,3 +1,4 @@ +import { BaseItemDto } from '@thornbill/jellyfin-sdk/dist/generated-client'; import React, { FunctionComponent, useEffect, useRef } from 'react'; import cardBuilder from '../cardbuilder/cardBuilder'; @@ -17,7 +18,7 @@ const createScroller = ({ title = '' }) => ({ type SearchResultsRowProps = { title?: string; - items?: Array; // TODO: Should be Array once we have a typed API client + items?: BaseItemDto[]; cardOptions?: Record; } From e30a252c8aa30b9688a51a96e1b67bf711b121d7 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 18 Feb 2022 23:19:39 +0300 Subject: [PATCH 296/389] Fix type mismatch TypeScript error --- src/components/search/LiveTVSearchResults.tsx | 2 +- src/components/search/SearchResults.tsx | 2 +- src/components/search/SearchSuggestions.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/search/LiveTVSearchResults.tsx b/src/components/search/LiveTVSearchResults.tsx index 9f9874db26..6d43e59ef6 100644 --- a/src/components/search/LiveTVSearchResults.tsx +++ b/src/components/search/LiveTVSearchResults.tsx @@ -27,7 +27,7 @@ type LiveTVSearchResultsProps = { /* * React component to display search result rows for live tv library search */ -const LiveTVSearchResults: FunctionComponent = ({ serverId, parentId, collectionType, query }: LiveTVSearchResultsProps) => { +const LiveTVSearchResults: FunctionComponent = ({ serverId = window.ApiClient.serverId(), parentId, collectionType, query }: LiveTVSearchResultsProps) => { const [ movies, setMovies ] = useState([]); const [ episodes, setEpisodes ] = useState([]); const [ sports, setSports ] = useState([]); diff --git a/src/components/search/SearchResults.tsx b/src/components/search/SearchResults.tsx index e814eba7fa..67ff69501e 100644 --- a/src/components/search/SearchResults.tsx +++ b/src/components/search/SearchResults.tsx @@ -15,7 +15,7 @@ type SearchResultsProps = { /* * React component to display search result rows for global search and non-live tv library search */ -const SearchResults: FunctionComponent = ({ serverId, parentId, collectionType, query }: SearchResultsProps) => { +const SearchResults: FunctionComponent = ({ serverId = window.ApiClient.serverId(), parentId, collectionType, query }: SearchResultsProps) => { const [ movies, setMovies ] = useState([]); const [ shows, setShows ] = useState([]); const [ episodes, setEpisodes ] = useState([]); diff --git a/src/components/search/SearchSuggestions.tsx b/src/components/search/SearchSuggestions.tsx index c13659c60d..6f76d792ef 100644 --- a/src/components/search/SearchSuggestions.tsx +++ b/src/components/search/SearchSuggestions.tsx @@ -23,7 +23,7 @@ type SearchSuggestionsProps = { parentId?: string; } -const SearchSuggestions: FunctionComponent = ({ serverId, parentId }: SearchSuggestionsProps) => { +const SearchSuggestions: FunctionComponent = ({ serverId = window.ApiClient.serverId(), parentId }: SearchSuggestionsProps) => { const [ suggestions, setSuggestions ] = useState([]); useEffect(() => { From 57895e724ca69b546bad826c33b0ff8ffbea9f45 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Fri, 18 Feb 2022 14:27:39 +0300 Subject: [PATCH 297/389] Fix implicit any TypeScript error --- .../dashboard/users/AccessScheduleList.tsx | 8 +++----- .../dashboard/users/BlockedTagList.tsx | 6 ++---- .../dashboard/users/ButtonElement.tsx | 2 +- .../dashboard/users/CheckBoxElement.tsx | 2 +- .../dashboard/users/CheckBoxListItem.tsx | 2 +- .../dashboard/users/InputElement.tsx | 2 +- .../users/LinkEditUserPreferences.tsx | 2 +- .../dashboard/users/SectionTabs.tsx | 6 ++---- .../users/SectionTitleButtonElement.tsx | 2 +- .../users/SectionTitleLinkElement.tsx | 2 +- .../dashboard/users/SelectElement.tsx | 2 +- .../users/SelectMaxParentalRating.tsx | 2 +- .../users/SelectSyncPlayAccessElement.tsx | 2 +- .../dashboard/users/UserCardBox.tsx | 5 +++-- src/components/pages/NewUserPage.tsx | 2 +- src/components/pages/UserEditPage.tsx | 15 ++++++++++++--- .../pages/UserLibraryAccessPage.tsx | 15 ++++++++++++--- src/components/pages/UserParentalControl.tsx | 19 ++++++++++++++----- src/components/pages/UserProfilesPage.tsx | 6 +++--- src/components/search/LiveTVSearchResults.tsx | 3 ++- src/components/search/SearchFields.tsx | 4 ++-- src/components/search/SearchResults.tsx | 7 ++++--- src/components/search/SearchSuggestions.tsx | 4 ++-- 23 files changed, 72 insertions(+), 48 deletions(-) diff --git a/src/components/dashboard/users/AccessScheduleList.tsx b/src/components/dashboard/users/AccessScheduleList.tsx index b46c6beeb0..ef092c5500 100644 --- a/src/components/dashboard/users/AccessScheduleList.tsx +++ b/src/components/dashboard/users/AccessScheduleList.tsx @@ -2,7 +2,7 @@ import React, { FunctionComponent } from 'react'; import datetime from '../../../scripts/datetime'; import globalize from '../../../scripts/globalize'; -const createButtonElement = ({index}) => ({ +const createButtonElement = (index: number) => ({ __html: `
); diff --git a/src/components/dashboard/users/BlockedTagList.tsx b/src/components/dashboard/users/BlockedTagList.tsx index b5cf44d0a8..fd56536d1c 100644 --- a/src/components/dashboard/users/BlockedTagList.tsx +++ b/src/components/dashboard/users/BlockedTagList.tsx @@ -1,6 +1,6 @@ import React, { FunctionComponent } from 'react'; -const createButtonElement = ({tag}) => ({ +const createButtonElement = (tag?: string) => ({ __html: `
diff --git a/src/components/dashboard/users/ButtonElement.tsx b/src/components/dashboard/users/ButtonElement.tsx index dfde8c7399..c63a1feeb8 100644 --- a/src/components/dashboard/users/ButtonElement.tsx +++ b/src/components/dashboard/users/ButtonElement.tsx @@ -1,7 +1,7 @@ import React, { FunctionComponent } from 'react'; import globalize from '../../../scripts/globalize'; -const createButtonElement = ({ type, className, title }) => ({ +const createButtonElement = ({ type, className, title }: { type?: string, className?: string, title?: string }) => ({ __html: `