From d58758a20398cceae6c36b09e8929e735356811d Mon Sep 17 00:00:00 2001 From: SenorSmartyPants Date: Sat, 19 Nov 2022 15:23:31 -0600 Subject: [PATCH 001/222] DVR: Add options to disable NFO and image saving Depends on jellyfin/jellyfin#8775 --- src/controllers/livetvsettings.html | 19 +++++++++++++++++++ src/controllers/livetvsettings.js | 4 ++++ src/strings/en-us.json | 5 +++++ 3 files changed, 28 insertions(+) diff --git a/src/controllers/livetvsettings.html b/src/controllers/livetvsettings.html index 3845b9d126..4e455f34a1 100644 --- a/src/controllers/livetvsettings.html +++ b/src/controllers/livetvsettings.html @@ -92,6 +92,25 @@
${LabelPostProcessorArgumentsHelp}
+
+

${HeaderRecordingMetadataSaving}

+ +
+ +
${SaveRecordingNFOHelp}
+
+ +
+ +
${SaveRecordingImagesHelp}
+
+

diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index b9d032178c..7559b827c2 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -16,6 +16,8 @@ function loadPage(page, config) { page.querySelector('#txtSeriesRecordingPath').value = config.SeriesRecordingPath || ''; page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || ''; page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || ''; + page.querySelector('#chkSaveRecordingNFO').checked = config.SaveRecordingNFO; + page.querySelector('#chkSaveRecordingImages').checked = config.SaveRecordingImages; loading.hide(); } @@ -36,6 +38,8 @@ function onSubmit() { config.PostPaddingSeconds = 60 * $('#txtPostPaddingMinutes', form).val(); config.RecordingPostProcessor = $('#txtPostProcessor', form).val(); config.RecordingPostProcessorArguments = $('#txtPostProcessorArguments', form).val(); + config.SaveRecordingNFO = form.querySelector('#chkSaveRecordingNFO').checked; + config.SaveRecordingImages = form.querySelector('#chkSaveRecordingImages').checked; ApiClient.updateNamedConfiguration('livetv', config).then(function () { Dashboard.processServerConfigurationUpdateResult(); showSaveMessage(recordingPathChanged); diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 906a76f1f5..aee96bb42c 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -432,6 +432,7 @@ "HeaderProfileInformation": "Profile Information", "HeaderProfileServerSettingsHelp": "These values control how the server will present itself to clients.", "HeaderRecentlyPlayed": "Recently Played", + "HeaderRecordingMetadataSaving": "Recording Metadata", "HeaderRecordingOptions": "Recording Options", "HeaderRecordingPostProcessing": "Recording Post Processing", "HeaderRemoteAccessSettings": "Remote Access Settings", @@ -1384,6 +1385,10 @@ "Saturday": "Saturday", "Save": "Save", "SaveChanges": "Save changes", + "SaveRecordingNFO": "Save recording EPG metadata in NFO", + "SaveRecordingNFOHelp": "Save metadata from EPG listings provider along side media.", + "SaveRecordingImages": "Save recording EPG images", + "SaveRecordingImagesHelp": "Save images from EPG listings provider along side media.", "SaveSubtitlesIntoMediaFolders": "Save subtitles into media folders", "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "ScanForNewAndUpdatedFiles": "Scan for new and updated files", From 65543e77a46313ef025636f90729870f297d4189 Mon Sep 17 00:00:00 2001 From: SenorSmartyPants Date: Mon, 21 Nov 2022 17:45:56 -0600 Subject: [PATCH 002/222] Display whole channel icon and new/repeat/live/premiere flags - Make timer list visually identical when displayed on Series Timer page, or Series page. - Display full channel icon (background-size: contain) - Display New/Repeat/etc in timer list. Respects user guide settings for which flags to display - Add margin before timerIndicator if mediainfo is present - Add option to display officialRating display in mediainfo - Use ids instead of CSS class for seriesTimerSchedule* --- src/components/indicators/indicators.scss | 10 +++++ src/components/listview/listview.js | 5 +++ src/components/listview/listview.scss | 4 ++ src/components/mediainfo/mediainfo.js | 40 +++++++++++--------- src/controllers/itemDetails/index.html | 4 +- src/controllers/itemDetails/index.js | 45 ++++++++--------------- 6 files changed, 60 insertions(+), 48 deletions(-) diff --git a/src/components/indicators/indicators.scss b/src/components/indicators/indicators.scss index 3130150d31..ec875b53dc 100644 --- a/src/components/indicators/indicators.scss +++ b/src/components/indicators/indicators.scss @@ -38,6 +38,16 @@ color: #888; } +.listItemMediaInfo + .timerIndicator { + [dir="ltr"] & { + margin-left: 0.25em; + } + + [dir="rtl"] & { + margin-right: 0.25em; + } +} + .indicator + .indicator { [dir="ltr"] & { margin-left: 0.25em; diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index eaa526dbd4..b9f156e9a2 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -261,6 +261,10 @@ import ServerConnections from '../ServerConnections'; const imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth); let imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage'; + if (options.imageSource === 'channel') { + imageClass += ' listItemImage-channel'; + } + if (isLargeStyle && layoutManager.tv) { imageClass += ' listItemImage-large-tv'; } @@ -428,6 +432,7 @@ import ServerConnections from '../ServerConnections'; container: false, episodeTitle: false, criticRating: false, + officialRating: false, endsAt: false }); diff --git a/src/components/listview/listview.scss b/src/components/listview/listview.scss index 025ce596b3..fb6d3a565f 100644 --- a/src/components/listview/listview.scss +++ b/src/components/listview/listview.scss @@ -153,6 +153,10 @@ margin-right: 0.75em; } +.listItemImage-channel { + background-size: contain; +} + .listItemImageButton { align-self: center; justify-self: center; diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js index b0201162f1..6b64059041 100644 --- a/src/components/mediainfo/mediainfo.js +++ b/src/components/mediainfo/mediainfo.js @@ -8,6 +8,7 @@ import 'material-design-icons-iconfont'; import './mediainfo.scss'; import '../guide/programs.scss'; import '../../elements/emby-button/emby-button'; +import * as userSettings from '../../scripts/settings/userSettings'; /* eslint-disable indent */ function getTimerIndicator(item) { @@ -158,7 +159,7 @@ import '../../elements/emby-button/emby-button'; } } - if (item.StartDate && item.Type !== 'Program' && item.Type !== 'SeriesTimer') { + if (item.StartDate && item.Type !== 'Program' && item.Type !== 'SeriesTimer' && item.Type !== 'Timer') { try { date = datetime.parseISO8601Date(item.StartDate); @@ -196,47 +197,52 @@ import '../../elements/emby-button/emby-button'; } } - if (item.Type === 'Program') { + if (item.Type === 'Program' || item.Type === 'Timer') { + let program = item; + if (item.Type === 'Timer') { + program = item.ProgramInfo; + } + if (options.programIndicator !== false) { - if (item.IsLive) { + if (program.IsLive && userSettings.get('guide-indicator-live') === 'true') { miscInfo.push({ html: `
${globalize.translate('Live')}
` }); - } else if (item.IsPremiere) { + } else if (program.IsPremiere && userSettings.get('guide-indicator-premiere') === 'true') { miscInfo.push({ html: `
${globalize.translate('Premiere')}
` }); - } else if (item.IsSeries && !item.IsRepeat) { + } else if (program.IsSeries && !program.IsRepeat && userSettings.get('guide-indicator-new') === 'true') { miscInfo.push({ html: `
${globalize.translate('New')}
` }); - } else if (item.IsSeries && item.IsRepeat) { + } else if (program.IsSeries && program.IsRepeat && userSettings.get('guide-indicator-repeat') === 'true') { miscInfo.push({ html: `
${globalize.translate('Repeat')}
` }); } } - if ((item.IsSeries || item.EpisodeTitle) && options.episodeTitle !== false) { - text = itemHelper.getDisplayName(item, { + if ((program.IsSeries || program.EpisodeTitle) && options.episodeTitle !== false) { + text = itemHelper.getDisplayName(program, { includeIndexNumber: options.episodeTitleIndexNumber }); if (text) { miscInfo.push(escapeHtml(text)); } - } else if (item.IsMovie && item.ProductionYear && options.originalAirDate !== false) { - miscInfo.push(item.ProductionYear); - } else if (item.PremiereDate && options.originalAirDate !== false) { + } else if (program.IsMovie && program.ProductionYear && options.originalAirDate !== false) { + miscInfo.push(program.ProductionYear); + } else if (program.PremiereDate && options.originalAirDate !== false) { try { - date = datetime.parseISO8601Date(item.PremiereDate); + date = datetime.parseISO8601Date(program.PremiereDate); text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date)); miscInfo.push(text); } catch (e) { - console.error('error parsing date:', item.PremiereDate); + console.error('error parsing date:', program.PremiereDate); } - } else if (item.ProductionYear) { - miscInfo.push(item.ProductionYear); + } else if (program.ProductionYear && options.year !== false ) { + miscInfo.push(program.ProductionYear); } } @@ -255,7 +261,7 @@ import '../../elements/emby-button/emby-button'; } } - if (item.RunTimeTicks && item.Type !== 'Series' && item.Type !== 'Program' && item.Type !== 'Book' && !showFolderRuntime && options.runtime !== false) { + if (item.RunTimeTicks && item.Type !== 'Series' && item.Type !== 'Program' && item.Type !== 'Timer' && item.Type !== 'Book' && !showFolderRuntime && options.runtime !== false) { if (item.Type === 'Audio') { miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks)); } else { @@ -263,7 +269,7 @@ import '../../elements/emby-button/emby-button'; } } - if (item.OfficialRating && item.Type !== 'Season' && item.Type !== 'Episode') { + if (options.officialRating !== false && item.OfficialRating && item.Type !== 'Season' && item.Type !== 'Episode') { miscInfo.push({ text: item.OfficialRating, cssClass: 'mediaInfoOfficialRating' diff --git a/src/controllers/itemDetails/index.html b/src/controllers/itemDetails/index.html index accc5b705d..4be8648e11 100644 --- a/src/controllers/itemDetails/index.html +++ b/src/controllers/itemDetails/index.html @@ -147,9 +147,9 @@
-
+

${Schedule}

-
+
diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index a1bcebd3aa..e45a66060c 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -96,33 +96,26 @@ function getContextMenuOptions(item, user, button) { }; } -function getProgramScheduleHtml(items) { - let html = ''; - - html += '
'; - html += listView.getListViewHtml({ +function getProgramScheduleHtml(items, action) { + return listView.getListViewHtml({ items: items, enableUserDataButtons: false, image: true, imageSource: 'channel', showProgramDateTime: true, showChannel: false, - mediaInfo: false, - action: 'none', + mediaInfo: true, + runtime: false, + action: action, moreButton: false, recordButton: false }); - - html += '
'; - - return html; } function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) { apiClient.getLiveTvTimers({ UserId: apiClient.getCurrentUserId(), ImageTypeLimit: 1, - EnableImageTypes: 'Primary,Backdrop,Thumb', SortBy: 'StartDate', EnableTotalRecordCount: false, EnableUserData: false, @@ -133,8 +126,8 @@ function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) { result.Items = []; } - const html = getProgramScheduleHtml(result.Items); - const scheduleTab = page.querySelector('.seriesTimerSchedule'); + const html = getProgramScheduleHtml(result.Items, 'none'); + const scheduleTab = page.querySelector('#seriesTimerSchedule'); scheduleTab.innerHTML = html; imageLoader.lazyChildren(scheduleTab); }); @@ -162,13 +155,13 @@ function renderSeriesTimerEditor(page, item, apiClient, user) { }); }); - page.querySelector('.seriesTimerScheduleSection').classList.remove('hide'); + page.querySelector('#seriesTimerScheduleSection').classList.remove('hide'); hideAll(page, 'btnCancelSeriesTimer', true); renderSeriesTimerSchedule(page, apiClient, item.Id); return; } - page.querySelector('.seriesTimerScheduleSection').classList.add('hide'); + page.querySelector('#seriesTimerScheduleSection').classList.add('hide'); hideAll(page, 'btnCancelSeriesTimer'); } @@ -1599,13 +1592,13 @@ function renderSeriesSchedule(page, item) { const apiClient = ServerConnections.getApiClient(item.ServerId); apiClient.getLiveTvPrograms({ UserId: apiClient.getCurrentUserId(), + ImageTypeLimit: 1, HasAired: false, SortBy: 'StartDate', EnableTotalRecordCount: false, - EnableImages: false, - ImageTypeLimit: 0, Limit: 50, EnableUserData: false, + Fields: 'ChannelInfo,ChannelImage', LibrarySeriesId: item.Id }).then(function (result) { if (result.Items.length) { @@ -1614,17 +1607,11 @@ function renderSeriesSchedule(page, item) { page.querySelector('#seriesScheduleSection').classList.add('hide'); } - page.querySelector('#seriesScheduleList').innerHTML = listView.getListViewHtml({ - items: result.Items, - enableUserDataButtons: false, - showParentTitle: false, - image: false, - showProgramDateTime: true, - mediaInfo: false, - showTitle: true, - moreButton: false, - action: 'programdialog' - }); + const html = getProgramScheduleHtml(result.Items, 'programdialog'); + const scheduleTab = page.querySelector('#seriesScheduleList'); + scheduleTab.innerHTML = html; + imageLoader.lazyChildren(scheduleTab); + loading.hide(); }); } From 5db134a85975504ad4c555db1166a78596523017 Mon Sep 17 00:00:00 2001 From: Marks Date: Thu, 8 Dec 2022 20:10:14 -0800 Subject: [PATCH 003/222] Show production studio --- src/controllers/itemDetails/index.html | 5 +++++ src/controllers/itemDetails/index.js | 28 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/controllers/itemDetails/index.html b/src/controllers/itemDetails/index.html index accc5b705d..483b38e5c4 100644 --- a/src/controllers/itemDetails/index.html +++ b/src/controllers/itemDetails/index.html @@ -143,6 +143,11 @@
+ +
+
+
+
diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index a1bcebd3aa..e4bd85c1bc 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1031,6 +1031,33 @@ function renderDirector(page, item, context) { } } +function renderStudio(page, item, context) { + const studios = item.Studios || []; + + const html = studios.map(function (studio) { + return '' + escapeHtml(studio.Name) + ''; + }).join(', '); + + const studiosLabel = page.querySelector('.studiosLabel'); + studiosLabel.innerHTML = globalize.translate(studios.length > 1 ? 'Studios' : 'Studio'); + const studiosValue = page.querySelector('.studios'); + studiosValue.innerHTML = html; + + const studiosGroup = page.querySelector('.studiosGroup'); + if (studios.length) { + studiosGroup.classList.remove('hide'); + } else { + studiosGroup.classList.add('hide'); + } +} + function renderMiscInfo(page, item) { const primaryItemMiscInfo = page.querySelectorAll('.itemMiscInfo-primary'); @@ -1079,6 +1106,7 @@ function renderDetails(page, item, apiClient, context, isStatic) { renderMoreFromSeason(page, item, apiClient); renderMoreFromArtist(page, item, apiClient); renderDirector(page, item, context); + renderStudio(page, item, context); renderWriter(page, item, context); renderGenres(page, item, context); renderChannelGuide(page, apiClient, item); From 6ffa0782aca0f857fb3ea59d07e1e8429d6db792 Mon Sep 17 00:00:00 2001 From: mark5231 <91494227+mark5231@users.noreply.github.com> Date: Thu, 5 Jan 2023 09:28:57 -0800 Subject: [PATCH 004/222] Apply suggestions from code review Co-authored-by: Bill Thornton --- src/controllers/itemDetails/index.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index e4bd85c1bc..ae946816de 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1051,11 +1051,7 @@ function renderStudio(page, item, context) { studiosValue.innerHTML = html; const studiosGroup = page.querySelector('.studiosGroup'); - if (studios.length) { - studiosGroup.classList.remove('hide'); - } else { - studiosGroup.classList.add('hide'); - } + studiosGroup.classList.toggle('hide', !studios.length); } function renderMiscInfo(page, item) { From 50433087dbc1dd82ba26a6707878daa6c5358c65 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 21 Jan 2023 06:51:45 +0000 Subject: [PATCH 005/222] Update dependency marked to v4.2.12 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index a7a32a73f4..79628fc45c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,7 +37,7 @@ "jstree": "3.3.12", "libarchive.js": "1.3.0", "lodash-es": "4.17.21", - "marked": "4.2.5", + "marked": "4.2.12", "material-design-icons-iconfont": "6.7.0", "native-promise-only": "0.8.1", "pdfjs-dist": "2.16.105", @@ -9953,9 +9953,9 @@ "dev": true }, "node_modules/marked": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.5.tgz", - "integrity": "sha512-jPueVhumq7idETHkb203WDD4fMA3yV9emQ5vLwop58lu8bTclMghBWcYAavlDqIEMaisADinV1TooIFCfqOsYQ==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", + "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", "bin": { "marked": "bin/marked.js" }, @@ -26288,9 +26288,9 @@ "dev": true }, "marked": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.5.tgz", - "integrity": "sha512-jPueVhumq7idETHkb203WDD4fMA3yV9emQ5vLwop58lu8bTclMghBWcYAavlDqIEMaisADinV1TooIFCfqOsYQ==" + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", + "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==" }, "marks-pane": { "version": "1.0.9", diff --git a/package.json b/package.json index ce60d761de..5d9c7a21eb 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "jstree": "3.3.12", "libarchive.js": "1.3.0", "lodash-es": "4.17.21", - "marked": "4.2.5", + "marked": "4.2.12", "material-design-icons-iconfont": "6.7.0", "native-promise-only": "0.8.1", "pdfjs-dist": "2.16.105", From 89f0e87e32eccb84b8c15c94a2de70724bebce0b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Jan 2023 19:49:00 +0000 Subject: [PATCH 006/222] Update dependency core-js to v3.27.2 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 488414d13f..65ddbba408 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "blurhash": "2.0.4", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.3.2", - "core-js": "3.27.1", + "core-js": "3.27.2", "date-fns": "2.29.3", "dompurify": "2.4.3", "epubjs": "0.4.2", @@ -4964,9 +4964,9 @@ } }, "node_modules/core-js": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", - "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz", + "integrity": "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -22546,9 +22546,9 @@ } }, "core-js": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", - "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==" + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz", + "integrity": "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==" }, "core-js-compat": { "version": "3.25.3", diff --git a/package.json b/package.json index 37e57414df..4af463b7f0 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "blurhash": "2.0.4", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.3.2", - "core-js": "3.27.1", + "core-js": "3.27.2", "date-fns": "2.29.3", "dompurify": "2.4.3", "epubjs": "0.4.2", From 5800102f9ff24ae3eab4bf64a8fd4f664714fc99 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 26 Jan 2023 00:06:16 +0300 Subject: [PATCH 007/222] Fix language change when refreshing --- src/index.jsx | 9 --------- src/scripts/globalize.js | 2 ++ 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/index.jsx b/src/index.jsx index ef3feeb7e9..2d121b2620 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -227,15 +227,8 @@ async function onAppReady() { } }; - const handleLanguageChange = () => { - const locale = globalize.getCurrentLocale(); - - document.documentElement.setAttribute('lang', locale); - }; - const handleUserChange = () => { handleStyleChange(); - handleLanguageChange(); }; Events.on(ServerConnections, 'localusersignedin', handleUserChange); @@ -243,8 +236,6 @@ async function onAppReady() { Events.on(currentSettings, 'change', (e, prop) => { if (prop == 'disableCustomCss' || prop == 'customCss') { handleStyleChange(); - } else if (prop == 'language') { - handleLanguageChange(); } }); diff --git a/src/scripts/globalize.js b/src/scripts/globalize.js index d95da559c6..b0edd538c2 100644 --- a/src/scripts/globalize.js +++ b/src/scripts/globalize.js @@ -89,6 +89,8 @@ const Direction = { currentCulture = normalizeLocaleName(culture); + document.documentElement.setAttribute('lang', currentCulture); + let dateTimeCulture; try { dateTimeCulture = userSettings.dateTimeLocale(); From e0d388a38571ef1128612d9063b39eb2e59dae3b Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 26 Jan 2023 00:08:41 +0300 Subject: [PATCH 008/222] Update language when logging out --- src/index.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.jsx b/src/index.jsx index 2d121b2620..b9a4d9603e 100644 --- a/src/index.jsx +++ b/src/index.jsx @@ -74,6 +74,7 @@ function init() { autoFocuser.enable(); Events.on(ServerConnections, 'localusersignedin', globalize.updateCurrentCulture); + Events.on(ServerConnections, 'localusersignedout', globalize.updateCurrentCulture); }); } From 70af5d72f299fa4da51363e5192796eed4d6db01 Mon Sep 17 00:00:00 2001 From: KingIzzymon <94716517+KingIzzymon@users.noreply.github.com> Date: Mon, 23 Jan 2023 12:17:27 -0500 Subject: [PATCH 009/222] Update docs - gamepad requirement Update en-us.json & en-gb.json to include "gamepad enable" setting requires TV display mode. --- src/strings/en-gb.json | 2 +- src/strings/en-us.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 38d6d1617d..529fc0ff28 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1518,7 +1518,7 @@ "MessageChromecastConnectionError": "Your Google Cast receiver is unable to contact the Jellyfin server. Please check the connection and try again.", "Framerate": "Framerate", "DirectPlayHelp": "The source file is entirely compatible with this client, and the session is receiving the file without modifications.", - "EnableGamepadHelp": "Listen for input from any connected controllers.", + "EnableGamepadHelp": "Listen for input from any connected controllers. (Requires: 'TV' Display Mode)", "LabelEnableGamepad": "Enable Gamepad", "Controls": "Controls", "TextSent": "Text sent.", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 7a2bd21686..dc2f9e466c 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1616,7 +1616,7 @@ "AllowVppTonemappingHelp": "Full Intel driver based tone-mapping. Currently works only on certain hardware with HDR10 videos. This has a higher priority compared to another OpenCL implementation.", "Controls": "Controls", "LabelEnableGamepad": "Enable Gamepad", - "EnableGamepadHelp": "Listen for input from any connected controllers.", + "EnableGamepadHelp": "Listen for input from any connected controllers. (Requires: 'TV' Display Mode)", "AudioCodecNotSupported": "The audio codec is not supported", "ContainerNotSupported": "The container is not supported", "SubtitleCodecNotSupported": "The subtitle codec is not supported", From 363e37319821aafa6bade7c8f75846f39994c800 Mon Sep 17 00:00:00 2001 From: millallo Date: Thu, 26 Jan 2023 20:59:55 +0000 Subject: [PATCH 010/222] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index d23c1a8e7a..8e23e16735 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -488,7 +488,7 @@ "LabelEpisodeNumber": "Numero espisodio:", "LabelEvent": "Evento:", "LabelEveryXMinutes": "Tutti:", - "LabelExtractChaptersDuringLibraryScan": "Estrarre immagini capitolo durante la scansione della libreria", + "LabelExtractChaptersDuringLibraryScan": "Estrae le immagini dei capitoli durante la scansione della libreria", "LabelExtractChaptersDuringLibraryScanHelp": "Genera le immagini capitolo quando i video vengono importati durante la scansione della libreria. Alternativamente, verranno estratti durante l'operazione pianificata di estrazione delle immagini capitolo, permettendo la scansione della libreria più velocemente.", "LabelFailed": "Fallito", "LabelFileOrUrl": "File o URL:", @@ -510,7 +510,7 @@ "LabelIconMaxHeight": "Altezza icona massima:", "LabelIconMaxWidth": "Larghezza massima icona:", "LabelIdentificationFieldHelp": "Una stringa o espressione regex sensibile a maiuscole e minuscole.", - "LabelImageFetchersHelp": "Abilitare e classificare i tuoi Fetchers immagini preferite in ordine di priorità.", + "LabelImageFetchersHelp": "Abilita e classifica i tuoi generatori preferiti di immagini in ordine di priorità.", "LabelImageType": "Tipo immagine:", "LabelImportOnlyFavoriteChannels": "Limitare ai canali segnato come", "LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice PIN Semplificato", @@ -551,7 +551,7 @@ "LabelMessageTitle": "Titolo messaggio:", "LabelMetadata": "Metadati:", "LabelMetadataDownloadLanguage": "Lingua preferita per lo scaricamento:", - "LabelMetadataDownloadersHelp": "Abilitare e classificare i tuoi downloader metadati preferite in ordine di priorità. Downloader di priorità inferiori saranno utilizzati solo per riempire le informazioni mancanti.", + "LabelMetadataDownloadersHelp": "Abilita e classifica i tuoi downloader di metadati preferiti in ordine di priorità. Quelli con priorità inferiori saranno utilizzati solo per riempire le informazioni mancanti.", "LabelMetadataPath": "Percorso per i metadati:", "LabelMetadataPathHelp": "Specificare un percorso personalizzato per le immagini e i metadati scaricati.", "LabelMetadataReaders": "Lettori Metadati:", From 34111f56e355bac3255f1d217e82fe88c5127fd4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Jan 2023 11:25:36 +0000 Subject: [PATCH 011/222] Update github/codeql-action action to v2.2.1 --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 478bed3917..46f45745f1 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -21,11 +21,11 @@ jobs: - name: Checkout repository uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 - name: Initialize CodeQL - uses: github/codeql-action/init@a34ca99b4610d924e04c68db79e503e1f79f9f02 # v2.1.39 + uses: github/codeql-action/init@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # v2.2.1 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@a34ca99b4610d924e04c68db79e503e1f79f9f02 # v2.1.39 + uses: github/codeql-action/autobuild@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # v2.2.1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@a34ca99b4610d924e04c68db79e503e1f79f9f02 # v2.1.39 + uses: github/codeql-action/analyze@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # v2.2.1 From c0ed5479cc7f969166e5ccf123c0e2bc9a7e20ca Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Fri, 27 Jan 2023 16:03:33 +0100 Subject: [PATCH 012/222] Remove OS and Arch from dashboard --- src/controllers/dashboard/dashboard.html | 2 -- src/controllers/dashboard/dashboard.js | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/controllers/dashboard/dashboard.html b/src/controllers/dashboard/dashboard.html index 92794fb4ba..7fd60f7695 100644 --- a/src/controllers/dashboard/dashboard.html +++ b/src/controllers/dashboard/dashboard.html @@ -11,8 +11,6 @@

-

-

diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index a08f460daf..87704d406f 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -203,8 +203,6 @@ import confirm from '../../components/confirm/confirm'; apiClient.getSystemInfo().then(function (systemInfo) { view.querySelector('#serverName').innerText = globalize.translate('DashboardServerName', systemInfo.ServerName); view.querySelector('#versionNumber').innerText = globalize.translate('DashboardVersionNumber', systemInfo.Version); - view.querySelector('#operatingSystem').innerText = globalize.translate('DashboardOperatingSystem', systemInfo.OperatingSystem); - view.querySelector('#architecture').innerText = globalize.translate('DashboardArchitecture', systemInfo.SystemArchitecture); if (systemInfo.CanSelfRestart) { view.querySelector('#btnRestartServer').classList.remove('hide'); From d43d7c43091c930b47fbc93e916ece8c78cfeae2 Mon Sep 17 00:00:00 2001 From: rom4nik Date: Fri, 27 Jan 2023 22:34:16 +0000 Subject: [PATCH 013/222] 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 f7702d8e43..c5da8d1ded 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -297,7 +297,7 @@ "HeaderImageOptions": "Opcje obrazu", "HeaderImageSettings": "Ustawienia obrazów", "HeaderInstall": "Instalacja", - "HeaderInstantMix": "Szybki remiks", + "HeaderInstantMix": "Szybki miks", "HeaderKeepRecording": "Zachowaj nagranie", "HeaderKeepSeries": "Zachowaj nagranie serialu", "HeaderKodiMetadataHelp": "By aktywować lub dezaktywować metadane NFO, edytuj ustawienia biblioteki w sekcji 'dostawcy metadanych'.", @@ -411,7 +411,7 @@ "Images": "Obrazy", "ImportFavoriteChannelsHelp": "Jeśli aktywne, tylko kanały oznaczone jako ulubione na tunerze, będą importowane.", "InstallingPackage": "Instalowanie {0} (wersja {1})", - "InstantMix": "Szybki remiks", + "InstantMix": "Szybki miks", "ItemCount": "{0} pozycje", "Items": "Pozycje", "Kids": "Dla dzieci", From 1c236bb253269eea85f5eed2971aabdc090e83a0 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Sat, 28 Jan 2023 02:38:44 +0000 Subject: [PATCH 014/222] 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 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 5861c5b8a9..64f4d939fd 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1684,5 +1684,8 @@ "MessageNoItemsAvailable": "No hay artículos disponibles actualmente.", "MessageNoFavoritesAvailable": "No hay favoritos disponibles actualmente.", "MessageRenameMediaFolder": "Cambiar el nombre de una biblioteca de medios hará que se pierdan todos los metadatos, proceda con precaución.", - "DownloadAll": "Descargar todo" + "DownloadAll": "Descargar todo", + "Experimental": "Experimental", + "LabelStereoDownmixAlgorithm": "Algoritmo de mezcla estéreo", + "StereoDownmixAlgorithmHelp": "Algoritmo utilizado para mezclar audio multicanal a estéreo." } From 44c6b22f3851d127870a2e39fe73e6b38d73a3ab Mon Sep 17 00:00:00 2001 From: Bas Date: Sat, 28 Jan 2023 01:34:30 +0000 Subject: [PATCH 015/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index e8e78fd6f5..4ba5877963 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -941,7 +941,7 @@ "Refresh": "Vernieuwen", "RefreshDialogHelp": "Metadata wordt vernieuwd op basis van instellingen en internetservices die zijn ingeschakeld in het Dashboard.", "RefreshMetadata": "Metadata vernieuwen", - "RefreshQueued": "Verversen wachtrij.", + "RefreshQueued": "Verversing in wachtrij.", "ReleaseDate": "Uitgavedatum", "RememberMe": "Onthoud mij", "RemoveFromCollection": "Verwijderen uit collectie", From 9b248f41f39beee160c51afe3aae92484de14947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD?= Date: Sat, 28 Jan 2023 11:27:02 +0000 Subject: [PATCH 016/222] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 0f8277e797..85ce44be02 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1096,7 +1096,7 @@ "TabContainers": "Контейнеры", "TabDashboard": "Панель", "TabDirectPlay": "Прямое воспроизведение", - "TabLatest": "Новые", + "TabLatest": "Последние", "TabLogs": "Журналы", "TabMusic": "Музыка", "TabMyPlugins": "Мои плагины", @@ -1685,5 +1685,8 @@ "Unreleased": "Ещё не выпущен", "OptionDateEpisodeAdded": "Дата добавления эпизода", "OptionDateShowAdded": "Дата добавления сериала", - "DownloadAll": "Скачать все" + "DownloadAll": "Скачать все", + "StereoDownmixAlgorithmHelp": "Алгоритм используемый для смешивания многоканального аудио в стерео.", + "LabelStereoDownmixAlgorithm": "Алгоритм смешивания стерео", + "Experimental": "Экспериментальные" } From 343fe7deeb6a189ca44f8d22b3b513afa047f4c4 Mon Sep 17 00:00:00 2001 From: Bas Date: Sat, 28 Jan 2023 18:10:58 +0000 Subject: [PATCH 017/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 56 +++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 4ba5877963..4dd8b4ceb7 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -79,7 +79,7 @@ "ButtonRevoke": "Herroepen", "ButtonScanAllLibraries": "Alle bibliotheken scannen", "ButtonSelectDirectory": "Selecteer map", - "ButtonSelectView": "Selecteer weergave", + "ButtonSelectView": "Weergave selecteren", "ButtonSend": "Stuur", "ButtonShutdown": "Afsluiten", "ButtonSignIn": "Aanmelden", @@ -141,7 +141,7 @@ "DisplayInMyMedia": "Op het startscherm weergeven", "DisplayInOtherHomeScreenSections": "In secties van het startscherm weergeven, zoals \"Recente media\" en \"Verder kijken\"", "DisplayMissingEpisodesWithinSeasons": "Toon ontbrekende afleveringen binnen een seizoen", - "DisplayMissingEpisodesWithinSeasonsHelp": "Dit moet ook worden ingeschakeld voor TV bibliotheken in de server configuratie.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Dit moet ook worden ingeschakeld voor tv-bibliotheken in de serverconfiguratie.", "DisplayModeHelp": "Selecteer het schermtype waar Jellyfin op draait.", "DoNotRecord": "Niet opnemen", "Down": "Omlaag", @@ -160,8 +160,8 @@ "EnableExternalVideoPlayers": "Externe videospelers", "EnableExternalVideoPlayersHelp": "Een menu voor externe spelers wordt getoond bij het afspelen van video's.", "EnableHardwareEncoding": "Activeer hardwaredecodering", - "EnableNextVideoInfoOverlay": "Laat volgende video zien tijdens het afspelen", - "EnableNextVideoInfoOverlayHelp": "Toon informatie over de volgende video in de afspeellijst aan het einde van de video.", + "EnableNextVideoInfoOverlay": "Volgende video tonen tijdens afspelen", + "EnableNextVideoInfoOverlayHelp": "Toon aan het einde van de video informatie over de volgende video in de afspeellijst.", "EnablePhotos": "Foto's weergeven", "EnablePhotosHelp": "Afbeeldingen worden herkend en weergegeven naast andere mediabestanden.", "EnableStreamLooping": "Livestreams automatisch herhalen", @@ -273,7 +273,7 @@ "HeaderFetcherSettings": "Fetcher-instellingen", "HeaderForKids": "Voor Kinderen", "HeaderFrequentlyPlayed": "Vaak afgespeeld", - "HeaderGuideProviders": "TV Gids data aanbieders", + "HeaderGuideProviders": "Data-aanbieders tv-gids", "HeaderIdentification": "Identificatie", "HeaderIdentificationCriteriaHelp": "Voer tenminste één identificatiecriterium in.", "HeaderIdentificationHeader": "Identificatie Header", @@ -306,7 +306,7 @@ "HeaderNewApiKey": "Nieuwe API-sleutel", "HeaderNewDevices": "Nieuwe Apparaten", "HeaderNextEpisodePlayingInValue": "Volgende aflevering over {0}", - "HeaderNextVideoPlayingInValue": "Volgende Afgespeeld over {0}", + "HeaderNextVideoPlayingInValue": "Volgende video afspelen over {0}", "HeaderOnNow": "Aan het spelen", "HeaderOtherItems": "Overige Items", "HeaderParentalRatings": "Kijkwijzer", @@ -368,7 +368,7 @@ "HeaderTunerDevices": "Tuner apparaten", "HeaderTypeImageFetchers": "Afbeelding downloaders ({0}):", "HeaderTypeText": "Voer tekst in", - "HeaderUpcomingOnTV": "Binnenkort op TV", + "HeaderUpcomingOnTV": "Binnenkort op tv", "HeaderUploadImage": "Afbeelding Uploaden", "HeaderUser": "Gebruiker", "HeaderUsers": "Gebruikers", @@ -750,7 +750,7 @@ "MessageItemsAdded": "Items toegevoegd.", "MessageLeaveEmptyToInherit": "Leeg laten om instellingen van bovenliggend item of de algemene waarde over te nemen.", "MessageNoAvailablePlugins": "Geen beschikbare plug-ins.", - "MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen film suggesties beschikbaar. Begin met het bekijken en waardeer uw films, kom daarna terug om uw aanbevelingen te bekijken.", + "MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen filmsuggesties beschikbaar. Begin met het bekijken en beoordelen van uw films; kom daarna terug om uw aanbevelingen te bekijken.", "MessageNoPluginsInstalled": "U heeft geen plug-ins geïnstalleerd.", "MessageNoTrailersFound": "Installeer het Trailers kanaal om uw film ervaring te verbeteren door middel van het toevoegen van een bibliotheek met internet trailers.", "MessageNothingHere": "Lijst is leeg.", @@ -821,7 +821,7 @@ "OptionAutomaticallyGroupSeries": "Automatisch series samenvoegen die over meerdere mappen zijn verspreid", "OptionAutomaticallyGroupSeriesHelp": "Series die verspreid zijn over meerdere mappen binnen deze bibliotheek worden automatisch samengevoegd tot één serie.", "OptionBluray": "BD", - "OptionCommunityRating": "Algemene Waardering", + "OptionCommunityRating": "Beoordeling gemeenschap", "OptionCriticRating": "Beoordeling door critici", "OptionCustomUsers": "Aangepast", "OptionDaily": "Dagelijks", @@ -841,7 +841,7 @@ "OptionEnableAccessToAllChannels": "Toegang tot alle kanalen inschakelen", "OptionEnableAccessToAllLibraries": "Toegang tot alle bibliotheken inschakelen", "OptionEnableExternalContentInSuggestions": "Externe inhoud in suggesties inschakelen", - "OptionEnableExternalContentInSuggestionsHelp": "Laat internet trailers en live-tv-programma's op te nemen binnen de voorgestelde inhoud.", + "OptionEnableExternalContentInSuggestionsHelp": "Laat internettrailers en live-tv-programma's zien binnen de voorgestelde inhoud.", "OptionEnableForAllTuners": "Inschakelen voor alle tuners", "OptionEnableM2tsMode": "M2TS-modus inschakelen", "OptionEnableM2tsModeHelp": "M2TS-modus bij het encoderen naar MPEG-TS inschakelen.", @@ -857,7 +857,7 @@ "OptionHlsSegmentedSubtitles": "HLS gesegmenteerde ondertiteling", "OptionIgnoreTranscodeByteRangeRequests": "Transcodeer byte range-aanvragen negeren", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegeerd.", - "OptionImdbRating": "IMDb Waardering", + "OptionImdbRating": "Beoordeling IMDb", "OptionLikes": "Leuk", "OptionMissingEpisode": "Ontbrekende Afleveringen", "OptionNew": "Nieuw…", @@ -879,7 +879,7 @@ "OptionSaveMetadataAsHiddenHelp": "Als u dit wijzigt, is dit van toepassing op nieuwe metagegevens die in de toekomst worden opgeslagen. Bestaande metadatabestanden worden bijgewerkt de volgende keer dat ze door de server worden opgeslagen.", "OptionSubstring": "Subtekenreeks", "OptionTrackName": "Naam van Nummer", - "OptionTvdbRating": "TheTVDB Waardering", + "OptionTvdbRating": "Beoordeling TheTVDB", "OptionUnairedEpisode": "Toekomstige Afleveringen", "OptionWakeFromSleep": "Uit slaapstand halen", "OptionWeekdays": "Week dagen", @@ -1021,7 +1021,7 @@ "TabLogs": "Logboeken", "TabMusic": "Muziek", "TabMyPlugins": "Mijn plug-ins", - "TabNetworks": "TV-Zenders", + "TabNetworks": "Tv-zenders", "TabNfoSettings": "NFO Instellingen", "TabNotifications": "Meldingen", "TabOther": "Overig", @@ -1029,7 +1029,7 @@ "TabProfiles": "Profielen", "TabResponses": "Reacties", "TabScheduledTasks": "Geplande taken", - "TabUpcoming": "Binnenkort op TV", + "TabUpcoming": "Binnenkort", "Tags": "Labels", "TagsValue": "Labels: {0}", "TellUsAboutYourself": "Vertel ons over uzelf", @@ -1045,7 +1045,7 @@ "TrackCount": "{0} nummers", "Transcoding": "Transcoderen", "Tuesday": "Dinsdag", - "TvLibraryHelp": "Bekijk de {0}TV naamgeving gids {1}.", + "TvLibraryHelp": "Bekijk de {0}Tv-naamgevingsgids{1}.", "UninstallPluginConfirmation": "Weet u zeker dat u {0} wilt deïnstalleren?", "HeaderUninstallPlugin": "Plug-in deïnstalleren", "Unmute": "Dempen opheffen", @@ -1079,11 +1079,11 @@ "WizardCompleted": "Dat is alles wat we nu nodig hebben. Jellyfin is begonnen met het verzamelen van informatie over uw media bibliotheek. Probeer sommige van onze apps en klik dan Finish om het Dashboard te bekijken.", "Writer": "Scenario", "XmlDocumentAttributeListHelp": "Deze kenmerken worden toegepast op het hoofd-element van elk XML-antwoord.", - "XmlTvKidsCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als programma's voor kinderen. Scheid meerdere met '|'.", - "XmlTvMovieCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als films. Scheid meerdere met '|'.", - "XmlTvNewsCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als nieuwsprogramma's. Scheid meerdere met '|'.", - "XmlTvPathHelp": "Een pad naar een XML-TV-bestand. Jellyfin zal dit bestand regelmatig lezen en controleren voor updates. U bent verantwoordelijk voor het maken en bijwerken van dit bestand.", - "XmlTvSportsCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als sportprogramma's. Scheid meerdere met '|'.", + "XmlTvKidsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als programma's voor kinderen. Scheid meerdere met '|'.", + "XmlTvMovieCategoriesHelp": "Programma's met deze categorieën worden weergegeven als films. Scheid meerdere met '|'.", + "XmlTvNewsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als nieuwsprogramma's. Scheid meerdere met '|'.", + "XmlTvPathHelp": "Een pad naar een XMLTV-bestand. Jellyfin zal dit bestand regelmatig lezen en controleren op updates. U bent verantwoordelijk voor het maken en bijwerken van dit bestand.", + "XmlTvSportsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als sportprogramma's. Scheid meerdere met '|'.", "Yes": "Ja", "Yesterday": "Gisteren", "Albums": "Albums", @@ -1155,7 +1155,7 @@ "Live": "Live", "OptionDvd": "DVD", "OptionResElement": "'res' element", - "TV": "TV", + "TV": "Tv", "LabelTypeMetadataDownloaders": "Metadata-downloaders ({0}):", "OptionLoginAttemptsBeforeLockout": "Bepaal hoeveel foutieve inlogpogingen kunnen plaatsvinden voordat de gebruiker buitengesloten wordt.", "Premiere": "Première", @@ -1310,7 +1310,7 @@ "LabelSyncPlayTimeOffset": "Tijd offset met de server:", "LabelRequireHttps": "HTTPS verplichten", "LabelStable": "Stabiel", - "LabelChromecastVersion": "Google Cast Versie", + "LabelChromecastVersion": "Google Cast-versie", "LabelEnableHttpsHelp": "Luisteren op de geconfigureerde HTTPS-poort. Om dit te laten werken moet ook een geldig certificaat worden ingesteld.", "LabelEnableHttps": "HTTPS inschakelen", "HeaderSyncPlayEnabled": "SyncPlay ingeschakeld", @@ -1508,7 +1508,7 @@ "Framerate": "Beeldsnelheid", "DisablePlugin": "Uitschakelen", "EnablePlugin": "Inschakelen", - "DirectPlayHelp": "Het bronbestand is volledig compatibel met deze client, en de sessie ontvangt het bestand zonder wijzigingen.", + "DirectPlayHelp": "Het bronbestand is volledig compatibel met deze client en de sessie ontvangt het bestand zonder wijzigingen.", "HeaderContinueReading": "Verder lezen", "LabelSyncPlaySettingsExtraTimeOffset": "Extra tijd offset:", "LabelSyncPlaySettingsDescription": "Wijzig SyncPlay instellingen", @@ -1583,7 +1583,7 @@ "Console": "Console", "LabelAutomaticallyAddToCollection": "Automatisch toevoegen aan collectie", "TypeOptionPluralVideo": "Video's", - "TypeOptionPluralSeries": "TV-series", + "TypeOptionPluralSeries": "Tv-series", "TypeOptionPluralSeason": "Seizoenen", "TypeOptionPluralMusicVideo": "Music Video's", "TypeOptionPluralMusicArtist": "Muziek Artiesten", @@ -1660,8 +1660,8 @@ "MediaInfoVideoRangeType": "Type videobereik", "LabelVideoRangeType": "Type videobereik:", "VideoRangeTypeNotSupported": "Het bereiktype van de video wordt niet ondersteund", - "LabelVppTonemappingContrastHelp": "Pas contrastversterking toe in VPP tonemapping. De aanbevolen en standaardwaarden zijn 1.2 en 1.", - "LabelVppTonemappingContrast": "VPP Tone mapping contrastversterking:", + "LabelVppTonemappingContrastHelp": "Pas contrastversterking toe in VPP-tonemapping. De aanbevolen en standaardwaarden zijn 1.2 en 1.", + "LabelVppTonemappingContrast": "Contrastversterking VPP-tonemapping:", "LabelVppTonemappingBrightnessHelp": "Pas helderheidsversterking toe in VPP-tonemapping Zowel de aanbevolen als de standaardwaarden zijn 0.", "LabelVppTonemappingBrightness": "VPP Tone mapping helderheidsversterking:", "EnableSplashScreen": "Opstartscherm inschakelen", @@ -1685,5 +1685,7 @@ "MessageRenameMediaFolder": "Wanneer u een mediabibliotheek hernoemt, zal alle metadata verloren gaan. Ga voorzichtig te werk.", "Unreleased": "Nog niet uitgebracht", "DownloadAll": "Alles downloaden", - "Experimental": "Experimenteel" + "Experimental": "Experimenteel", + "StereoDownmixAlgorithmHelp": "Algoritme dat gebruikt wordt om multikanaals geluid naar stereo te downmixen.", + "LabelStereoDownmixAlgorithm": "Stereo-downmix-algoritme" } From e1a1b151d365b38a120dbe980efe48c808316679 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Mon, 30 Jan 2023 09:19:16 +0000 Subject: [PATCH 018/222] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 569e33b0cd..0581de9fe9 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1684,5 +1684,9 @@ "EnableCardLayout": "Zobraziť vizuálny CardBox", "MessageNoItemsAvailable": "Momentálne nie sú k dispozícii žiadne položky.", "MessageNoFavoritesAvailable": "Momentálne nie sú k dispozícii žiadne obľúbené položky.", - "MessageRenameMediaFolder": "Premenovanie knižnice medií zapríčiní stratu všetkých metadát, postupujte s opatrnosťou." + "MessageRenameMediaFolder": "Premenovanie knižnice medií zapríčiní stratu všetkých metadát, postupujte s opatrnosťou.", + "StereoDownmixAlgorithmHelp": "Algoritmus používaný na prevod viackanálového zvuku na stereo.", + "Experimental": "Experimentálne", + "DownloadAll": "Stiahnuť všetko", + "LabelStereoDownmixAlgorithm": "Algoritmus prevodu na stereo" } From 95208fc91bd53dc957f240c1bc9dcd57f4e65dde Mon Sep 17 00:00:00 2001 From: NorwayFun Date: Mon, 30 Jan 2023 14:31:20 +0000 Subject: [PATCH 019/222] Translated using Weblate (Georgian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ka/ --- src/strings/ka.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/strings/ka.json b/src/strings/ka.json index 4174e40f5b..113b28212d 100644 --- a/src/strings/ka.json +++ b/src/strings/ka.json @@ -6,5 +6,23 @@ "Add": "დამატება", "Aired": "გამოვიდა", "Albums": "ალბომები", - "All": "ყველა" + "All": "ყველა", + "Collections": "კოლექციები", + "Default": "ნაგულისხმები", + "Genres": "ჟანრები", + "Artists": "შემსრულებლები", + "Books": "წიგნები", + "Channels": "არხები", + "HeaderAlbumArtists": "ალბომის შემსრულებლები", + "MusicVideos": "მუსიკის ვიდეოები", + "Playlists": "დასაკრავი სიები", + "Sync": "სინქრონიზაცია", + "ValueSpecialEpisodeName": "სპეციალური - {0}", + "HeaderContinueWatching": "ყურების გაგრძელება", + "Movies": "ფილმები", + "Shows": "სერიალები", + "Songs": "სიმღერები", + "Photos": "ფოტოები", + "Favorites": "რჩეულები", + "Folders": "საქაღალდეები" } From 9e7cc7d312bdd5407d9d5fa281886f0bf785d87f Mon Sep 17 00:00:00 2001 From: SeanPai Date: Mon, 30 Jan 2023 18:48:42 +0000 Subject: [PATCH 020/222] 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 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index c74fe5c700..39bd4a125f 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1683,5 +1683,9 @@ "MediaInfoRpuPresentFlag": "杜比視界 rpu 存在標記", "MediaInfoElPresentFlag": "杜比視界 el 存在標記", "MediaInfoBlPresentFlag": "杜比視界 bl 存在標記", - "MediaInfoDvBlSignalCompatibilityId": "杜比視界 bl 訊號相容性 id" + "MediaInfoDvBlSignalCompatibilityId": "杜比視界 bl 訊號相容性 id", + "LabelStereoDownmixAlgorithm": "立體聲混縮算法 (Stereo Downmix Algorithm)", + "StereoDownmixAlgorithmHelp": "會將多聲道的音訊混縮為雙聲道的演算法。", + "DownloadAll": "下載全部", + "Experimental": "實驗性" } From 05651d782956d5ed1118705c5c7910d12db92976 Mon Sep 17 00:00:00 2001 From: Jakob Kernbichler Date: Mon, 30 Jan 2023 20:29:10 +0000 Subject: [PATCH 021/222] 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, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index fa50f73ac3..921846e87c 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1685,5 +1685,8 @@ "MessageNoFavoritesAvailable": "Es sind aktuell keine Favoriten verfügbar.", "Unreleased": "Noch nicht veröffentlicht", "EnableCardLayout": "Visuelle CardBox anzeigen", - "DownloadAll": "Alle Herunterladen" + "DownloadAll": "Alle Herunterladen", + "LabelStereoDownmixAlgorithm": "Stereo Downmix Algorithmus", + "StereoDownmixAlgorithmHelp": "Algorithmus um Mehrkanal-Audio zu Stereo-Audio umzuwandeln.", + "Experimental": "Experimentell" } From ad62bee71dfca48dde81a680bb6146a87f5a472a Mon Sep 17 00:00:00 2001 From: marty Date: Mon, 30 Jan 2023 20:09:36 +0000 Subject: [PATCH 022/222] Translated using Weblate (Lithuanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lt/ --- src/strings/lt-lt.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 0a5efebb29..de12a12894 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -568,7 +568,7 @@ "DefaultSubtitlesHelp": "Subtitrai įkeliami atsižvelgiant į numatytuosius ir priverstinius žymenis įterptuose metaduomenyse. Kalbos nustatymai įvertinami, kai yra keletas variantų.", "HeaderDeleteProvider": "Ištrinti paslaugos teikėją", "HeaderDeleteTaskTrigger": "Ištrinti užduoties trigerį", - "Absolute": "Visiškas", + "Absolute": "Absoliutus", "HeaderCastAndCrew": "Aktoriai", "Shows": "Laidos", "HeaderDeveloperInfo": "Kūrėjo informacija", From ac9430d10cff30d90cea0bdaafbe8bba7df019d2 Mon Sep 17 00:00:00 2001 From: TestNintendo Date: Mon, 30 Jan 2023 20:11:08 +0000 Subject: [PATCH 023/222] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index c5da8d1ded..6f1cf9486a 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1686,5 +1686,6 @@ "MessageNoFavoritesAvailable": "Ulubione nie są obecnie dostępne.", "OptionDateShowAdded": "Data dodania serialu", "DownloadAll": "Pobierz wszystko", - "Experimental": "Eksperymentalne" + "Experimental": "Eksperymentalne", + "LabelStereoDownmixAlgorithm": "Algorytm Stereo Downmix" } From 3727a2c33b672b9cb679e57b54e3715add6fe899 Mon Sep 17 00:00:00 2001 From: Andrii Shelestov Date: Mon, 30 Jan 2023 20:44:22 +0000 Subject: [PATCH 024/222] Translated using Weblate (Ukrainian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uk/ --- src/strings/uk.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/uk.json b/src/strings/uk.json index 60c90fc0ad..a529cdbb78 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -1329,7 +1329,7 @@ "OptionEnableM2tsMode": "Увімкнути режим M2TS", "OptionEnableForAllTuners": "Увімкнути для всіх пристроїв тюнера", "OptionEnableExternalContentInSuggestionsHelp": "Дозволити включати інтернет-трейлери та телепрограми в прямому ефірі до запропонованого вмісту.", - "OptionCaptionInfoExSamsung": "Caption InfoEx (Samsung)", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionEnableExternalContentInSuggestions": "Увімкнути зовнішній вміст у пропозиціях", "OptionEnableAccessToAllLibraries": "Увімкнути доступ до всіх медіатек", "OptionEnableAccessToAllChannels": "Увімкнути доступ до всіх каналів", @@ -1682,5 +1682,8 @@ "MessageRenameMediaFolder": "Перейменування медіа-бібліотеки призведе до втрати всіх метаданих, будьте обережні.", "EnableCardLayout": "Відобразити візуальний CardBox", "MessageNoItemsAvailable": "Немає доступних елементив.", - "MessageNoFavoritesAvailable": "Зараз немає доступних улюблених." + "MessageNoFavoritesAvailable": "Зараз немає доступних улюблених.", + "Experimental": "Експериментальний", + "LabelStereoDownmixAlgorithm": "Stereo Downmix алгоритм", + "StereoDownmixAlgorithmHelp": "Алгоритм мікшування багатоканального аудіо у стерео." } From ea80463c8ff1ca8d35a4cff0b45c267058604f12 Mon Sep 17 00:00:00 2001 From: fusengum Date: Tue, 31 Jan 2023 02:32:58 +0000 Subject: [PATCH 025/222] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 68 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 78defb0e45..06337cb602 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -4,28 +4,28 @@ "Actor": "俳優", "Add": "追加", "AddToCollection": "コレクションに追加", - "AddToPlayQueue": "再生リストに追加", + "AddToPlayQueue": "再生キューに追加", "AddToPlaylist": "プレイリストに追加", "AddedOnValue": "{0}を追加しました", "AdditionalNotificationServices": "プラグインカタログから通知サービスを追加してください。", "AirDate": "放送日", "Aired": "放映された", "Albums": "アルバム", - "Alerts": "アーティスト", + "Alerts": "アラート", "All": "すべて", "AllChannels": "すべてのチャンネル", "AllComplexFormats": "すべての複雑なフォーマット (ASS, SSA, VobSub, PGS, SUB, IDX など)", "AllEpisodes": "すべてのエピソード", "AllLanguages": "すべての言語", "AllLibraries": "すべてのライブラリ", - "AllowHWTranscodingHelp": "チューナーによるストリームトランスコードを有効にする。 場合によってサーバーへのトランスコーディング負担を減らすことができます。", + "AllowHWTranscodingHelp": "チューナーでのストリームトランスコードを有効にします。 有効にすることで、サーバーへのトランスコード要求を減少させられる場合があります。", "AllowMediaConversion": "メディアの変換を許可する", "AllowMediaConversionHelp": "メディア変換機能へのアクセスを許可もしくは、拒否します。", "AllowOnTheFlySubtitleExtraction": "字幕の抽出の許可/拒否", "AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコードを防ぐために、ビデオから抽出してプレーンテキストでクライアントに配信できます。 システムによっては、これに時間がかかり、抽出中にビデオの再生が止まることがあります。 これを無効にし、埋め込み字幕がクライアントデバイスでネイティブにサポートされていない場合、ビデオのトランスコードが強制されます。", "AllowRemoteAccess": "サーバへのリモート接続の許可", "AllowRemoteAccessHelp": "チェックが入っていない場合すべてのリモート接続をブロックします。", - "AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/マスク長 空白のままにすると、すべてのリモートアドレスが許可されます。", + "AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/ネットマスクをコンマ区切りのリストで指定できます。空白のままにすると、すべてのリモートアドレスが許可されます。", "AlwaysPlaySubtitles": "常に有効", "AlwaysPlaySubtitlesHelp": "言語に合った字幕が音声言語に関係なく読み込まれます。", "AnyLanguage": "任意の言語", @@ -942,7 +942,7 @@ "LabelEnableBlastAliveMessages": "アライブメッセージを配信する", "LabelDateAddedBehaviorHelp": "メタデータがある場合、これらのオプションの前に優先します。", "AskAdminToCreateLibrary": "管理者にライブラリを作成する依頼をしてください。", - "AllowFfmpegThrottling": "トランスコードをスロットルする", + "AllowFfmpegThrottling": "トランスコードを制限", "Episode": "エピソード", "ClientSettings": "クライアント設定", "Artist": "アーティスト", @@ -1492,7 +1492,7 @@ "LabelDisableCustomCss": "サーバーから提供されるテーマ/ブランディングのためのカスタムCSSコードを無効にする。", "DisableCustomCss": "サーバーが提供するカスタムCSSコードの無効化", "ErrorPlayerNotFound": "再生しようとしたメディア用のプレイヤーがありません。", - "AgeValue": "({0}年前)", + "AgeValue": "({0}歳)", "OtherArtist": "その他のアーチスト", "NextChapter": "次のチャプター", "Mixer": "ミキサー", @@ -1630,5 +1630,59 @@ "LabelSelectAudioChannels": "チャンネル", "MessageChromecastConnectionError": "Google CastレシーバーがJellyfinサーバーに接続できません。接続を確認し、もう一度試してください。", "MessagePlaybackError": "Google Cast レシーバーでこのファイルを再生する際にエラーが発生しました。", - "EnableVppTonemapping": "VPPトーンマッピングの有効化" + "EnableVppTonemapping": "VPPトーンマッピングの有効化", + "DownloadAll": "全てダウンロード", + "StereoDownmixAlgorithmHelp": "アルゴリズムは、多チャンネル音声をステレオにダウンミックスする際に使用されます。", + "AnamorphicVideoNotSupported": "アナモルフィック動画はサポートされていません", + "VideoProfileNotSupported": "動画コーデックのプロファイルがサポートされていません", + "LabelVppTonemappingBrightnessHelp": "VPP トーンマッピングでの輝度ゲインを適用します。推奨・デフォルト値はどちらも0です。", + "MediaInfoDvVersionMinor": "DV バージョンマイナー", + "MediaInfoDvBlSignalCompatibilityId": "DV bl signal compatibility id", + "InterlacedVideoNotSupported": "インターレース動画はサポートされていません", + "AllowVppTonemappingHelp": "完全なIntelドライバーがベースとなったトーンマッピングです。現在のところ、HDR10の動画と特定のハードウェアでのみ動作します。これは、他のOpenCL実装と比較して優先度がより高くなります。", + "VideoLevelNotSupported": "動画コーデックのレベルはサポートされていません", + "LabelHardwareEncodingOptions": "ハードウェアエンコードオプション:", + "AudioIsExternal": "音声ストリームが外部です", + "MediaInfoDoViTitle": "DV タイトル", + "Controls": "コントロール", + "ContainerNotSupported": "サポートされていないコンテナです", + "AudioBitrateNotSupported": "サポートされていない音声ビットレートです", + "AudioChannelsNotSupported": "サポートされていない音声チャンネル数です", + "PreferSystemNativeHwDecoder": "OSネイティブのDXVAまたはVA-APIハードウェアデコーダーを優先する", + "ContainerBitrateExceedsLimit": "動画のビットレートが制限を超えています", + "IntelLowPowerEncHelp": "省電力エンコードは、不要なCPUとGPUの同期を維持することができます。Linux環境では、i915 HuCファームウェアが設定されていない場合、これらを無効にする必要があります。", + "VideoBitrateNotSupported": "動画のビットレートはサポートされていません", + "UnknownVideoStreamInfo": "動画ストリーム情報が不明です", + "UnknownAudioStreamInfo": "音声ストリーム情報が不明です", + "Sample": "サンプル", + "ThemeSong": "主題歌", + "ThemeVideo": "テーマビデオ", + "LabelVppTonemappingBrightness": "VPPトーンマッピング輝度ゲイン:", + "LabelVppTonemappingContrast": "VPP トーンマッピングコントラストゲイン:", + "MediaInfoRpuPresentFlag": "DV rpu preset flag", + "EnableSplashScreen": "スプラッシュ画面を有効にする", + "LabelStereoDownmixAlgorithm": "ステレオダウンミックスのアルゴリズム", + "LabelEnableGamepad": "ゲームパッドを有効にする", + "EnableGamepadHelp": "接続済みのゲームパッドからの入力を受け付けます。", + "SecondaryAudioNotSupported": "第2音声トラックはサポートされていません", + "RefFramesNotSupported": "リファレンスフレームはサポートされていません", + "VideoBitDepthNotSupported": "動画のbit深度はサポートされていません", + "AudioBitDepthNotSupported": "音声のbit深度はサポートされていません", + "Trailer": "予告編", + "BehindTheScenes": "舞台裏", + "Interview": "インタビュー", + "Scene": "シーン", + "Clip": "短編映画", + "LabelVppTonemappingContrastHelp": "VPP トーンマッピングでのコントラストゲインを適用します。推奨値は1.2、デフォルト値は1です。", + "VideoRangeTypeNotSupported": "動画のレンジタイプはサポートされていません", + "LabelVideoRangeType": "動画のレンジタイプ:", + "MediaInfoVideoRangeType": "動画のレンジタイプ", + "MediaInfoDvVersionMajor": "DV バージョンメジャー", + "MediaInfoDvProfile": "DV プロファイル", + "MediaInfoDvLevel": "DV レベル", + "MediaInfoElPresentFlag": "DV el preset flag", + "MediaInfoBlPresentFlag": "DV bl preset flag", + "Unreleased": "まだ公開されていません", + "DeletedScene": "未公開シーン", + "Experimental": "試験的" } From fb0bd4cf67d9f205490f1370fb2494f901bd6579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20=C3=87etin?= Date: Tue, 31 Jan 2023 05:00:13 +0000 Subject: [PATCH 026/222] Translated using Weblate (Turkish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/tr/ --- src/strings/tr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/tr.json b/src/strings/tr.json index 7b1262c88e..3cde9d9759 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -1673,5 +1673,6 @@ "RememberSubtitleSelections": "Altyazı dilini önceki öğeye göre ayarla", "TabContainers": "Barındırıcılar", "OptionDateShowAdded": "Dizi Eklenme Tarihi", - "OptionDateEpisodeAdded": "Bölüm Eklenme Tarihi" + "OptionDateEpisodeAdded": "Bölüm Eklenme Tarihi", + "DownloadAll": "Hepsini indir" } From cc43f3d46a2fb9c57e8fadac46cda6c92a071a6a Mon Sep 17 00:00:00 2001 From: Robert Englund Date: Tue, 31 Jan 2023 07:58:57 +0000 Subject: [PATCH 027/222] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 7926531f04..85f9b9d64e 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1684,5 +1684,8 @@ "EnableCardLayout": "Visa visuell CardBox", "MessageNoFavoritesAvailable": "Inga favoriter är för närvarande tillgängliga.", "MessageRenameMediaFolder": "Vid namnbyte av bibliotek kommer all metadata förloras, fortsätt med försiktighet.", - "DownloadAll": "Ladda ned alla" + "DownloadAll": "Ladda ned alla", + "StereoDownmixAlgorithmHelp": "Algoritm använd för att nedmixa multi-kanalig ljud till stereo.", + "Experimental": "Experimentell", + "LabelStereoDownmixAlgorithm": "Stereo-nedmixalgoritm" } From 4e07335d27d841ff02478f79edb0fc1260320c52 Mon Sep 17 00:00:00 2001 From: kid1412621 Date: Tue, 31 Jan 2023 15:11:25 +0000 Subject: [PATCH 028/222] 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, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index b45b2b7e2f..a86f7e5f6f 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1686,5 +1686,7 @@ "MessageNoItemsAvailable": "没有可用的项。", "Unreleased": "暂未发布", "DownloadAll": "全部下载", - "Experimental": "实验功能" + "Experimental": "实验功能", + "LabelStereoDownmixAlgorithm": "立体声降混算法", + "StereoDownmixAlgorithmHelp": "用于将多声道下降混合为立体声的算法。" } From a73186d7aa7c338eb7734d847d482d2a28be2c70 Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Fri, 23 Dec 2022 13:06:24 -0500 Subject: [PATCH 029/222] Fixed scss problems --- src/assets/css/librarybrowser.scss | 58 +++++++++++++++--------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index 0d7cbf6f67..68103114de 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -597,11 +597,6 @@ display: flex; flex-direction: column; - .layout-mobile & { - padding-left: 5%; - padding-right: 5%; - } - .layout-desktop &, .layout-tv & { .emby-scroller { @@ -626,6 +621,11 @@ } } +.layout-mobile .detailPageContent { + padding-left: 5%; + padding-right: 5%; +} + .detailSectionContent a { color: inherit; } @@ -744,12 +744,16 @@ .layout-mobile .mainDetailButtons { align-items: center; justify-content: center; - text-align: center; + text-align: center !important; } .layout-mobile .mainDetailButtons { margin-top: 1em; margin-bottom: 0.5em; +} + +.layout-mobile [dir="ltr"] .mainDetailButtons { + margin-left: 0; @include header-poster-padding; @@ -758,20 +762,16 @@ margin-bottom: 0; padding-left: 0; } +} - [dir="ltr"] & { - margin-left: 0; - } +.layout-mobile [dir="rtl"] .mainDetailButtons { + margin-right: 0; - [dir="rtl"] & { - margin-right: 0; - padding-left: unset !important; + @include header-poster-padding-rtl; - @include header-poster-padding-rtl; - - @media all and (max-width: 32em) { - padding-right: 0 !important; - } + @media all and (max-width: 32em) { + margin-bottom: 0; + padding-right: 0; } } @@ -839,22 +839,22 @@ min-width: 0; max-width: 100%; flex: 1 0 0; +} - .layout-mobile & { - [dir="ltr"] { - @include header-poster-padding; - } - - [dir="rtl"] & { - @include header-poster-padding-rtl; - } - - @media all and (max-width: 32em) { - position: relative; - } +.layout-mobile .infoWrapper { + @media all and (max-width: 32em) { + position: relative; } } +.layout-mobile [dir="ltr"] .infoWrapper { + @include header-poster-padding; +} + +.layout-mobile [dir="rtl"] .infoWrapper { + @include header-poster-padding-rtl; +} + .infoText { min-width: 0; max-width: 100%; From 7e286ceaf0edeb888a24aa0d91a8235c279c90f3 Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Fri, 23 Dec 2022 16:24:53 -0500 Subject: [PATCH 030/222] Some css reorganization --- src/assets/css/librarybrowser.scss | 94 ++++++++++++++---------------- 1 file changed, 45 insertions(+), 49 deletions(-) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index 68103114de..1fc4aeb48a 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -619,11 +619,11 @@ padding-right: 32.45vw; padding-left: 2%; } -} -.layout-mobile .detailPageContent { - padding-left: 5%; - padding-right: 5%; + .layout-mobile & { + padding-left: 5%; + padding-right: 5%; + } } .detailSectionContent a { @@ -747,31 +747,33 @@ text-align: center !important; } -.layout-mobile .mainDetailButtons { - margin-top: 1em; - margin-bottom: 0.5em; -} +.mainDetailButtons { + .layout-mobile [dir="ltr"] & { + margin-left: 0; -.layout-mobile [dir="ltr"] .mainDetailButtons { - margin-left: 0; + @include header-poster-padding; - @include header-poster-padding; - - // The buttons row is full width on small screens - @media all and (max-width: 32em) { - margin-bottom: 0; - padding-left: 0; + // The buttons row is full width on small screens + @media all and (max-width: 32em) { + margin-bottom: 0; + padding-left: 0; + } } -} -.layout-mobile [dir="rtl"] .mainDetailButtons { - margin-right: 0; + .layout-mobile [dir="rtl"] & { + margin-right: 0; - @include header-poster-padding-rtl; + @include header-poster-padding-rtl; - @media all and (max-width: 32em) { - margin-bottom: 0; - padding-right: 0; + @media all and (max-width: 32em) { + margin-bottom: 0; + padding-right: 0; + } + } + + .layout-mobile & { + margin-top: 1em; + margin-bottom: 0.5em; } } @@ -794,6 +796,16 @@ align-content: center; z-index: 2; + .layout-desktop [dir="rtl"] &, + .layout-tv [dir="rtl"] & { + padding-right: 32.45vw; + } + + .layout-desktop [dir="ltr"] &, + .layout-tv [dir="ltr"] & { + padding-left: 32.45vw; + } + .layout-mobile & { display: block; position: relative; @@ -809,22 +821,6 @@ } } -.layout-desktop [dir="rtl"] .detailPagePrimaryContainer { - padding-right: 32.45vw; -} - -.layout-desktop [dir="ltr"] .detailPagePrimaryContainer { - padding-left: 32.45vw; -} - -.layout-tv [dir="rtl"] .detailPagePrimaryContainer { - padding-right: 32.45vw; -} - -.layout-tv [dir="ltr"] .detailPagePrimaryContainer { - padding-left: 32.45vw; -} - .layout-desktop .detailRibbon { margin-top: -7.2em; height: 7.2em; @@ -839,20 +835,20 @@ min-width: 0; max-width: 100%; flex: 1 0 0; -} -.layout-mobile .infoWrapper { - @media all and (max-width: 32em) { - position: relative; + .layout-mobile [dir="ltr"] & { + @include header-poster-padding; } -} -.layout-mobile [dir="ltr"] .infoWrapper { - @include header-poster-padding; -} + .layout-mobile [dir="rtl"] & { + @include header-poster-padding-rtl; + } -.layout-mobile [dir="rtl"] .infoWrapper { - @include header-poster-padding-rtl; + .layout-mobile & { + @media all and (max-width: 32em) { + position: relative; + } + } } .infoText { From a0c65a6eef4efaa2f7fdec34af792f13660fcd28 Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Fri, 23 Dec 2022 16:29:24 -0500 Subject: [PATCH 031/222] Revert "Some css reorganization" This reverts commit 6b54c59321b60fd8d31a737c121dadbd3bdc662d. --- src/assets/css/librarybrowser.scss | 94 ++++++++++++++++-------------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index 1fc4aeb48a..68103114de 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -619,11 +619,11 @@ padding-right: 32.45vw; padding-left: 2%; } +} - .layout-mobile & { - padding-left: 5%; - padding-right: 5%; - } +.layout-mobile .detailPageContent { + padding-left: 5%; + padding-right: 5%; } .detailSectionContent a { @@ -747,33 +747,31 @@ text-align: center !important; } -.mainDetailButtons { - .layout-mobile [dir="ltr"] & { - margin-left: 0; +.layout-mobile .mainDetailButtons { + margin-top: 1em; + margin-bottom: 0.5em; +} - @include header-poster-padding; +.layout-mobile [dir="ltr"] .mainDetailButtons { + margin-left: 0; - // The buttons row is full width on small screens - @media all and (max-width: 32em) { - margin-bottom: 0; - padding-left: 0; - } + @include header-poster-padding; + + // The buttons row is full width on small screens + @media all and (max-width: 32em) { + margin-bottom: 0; + padding-left: 0; } +} - .layout-mobile [dir="rtl"] & { - margin-right: 0; +.layout-mobile [dir="rtl"] .mainDetailButtons { + margin-right: 0; - @include header-poster-padding-rtl; + @include header-poster-padding-rtl; - @media all and (max-width: 32em) { - margin-bottom: 0; - padding-right: 0; - } - } - - .layout-mobile & { - margin-top: 1em; - margin-bottom: 0.5em; + @media all and (max-width: 32em) { + margin-bottom: 0; + padding-right: 0; } } @@ -796,16 +794,6 @@ align-content: center; z-index: 2; - .layout-desktop [dir="rtl"] &, - .layout-tv [dir="rtl"] & { - padding-right: 32.45vw; - } - - .layout-desktop [dir="ltr"] &, - .layout-tv [dir="ltr"] & { - padding-left: 32.45vw; - } - .layout-mobile & { display: block; position: relative; @@ -821,6 +809,22 @@ } } +.layout-desktop [dir="rtl"] .detailPagePrimaryContainer { + padding-right: 32.45vw; +} + +.layout-desktop [dir="ltr"] .detailPagePrimaryContainer { + padding-left: 32.45vw; +} + +.layout-tv [dir="rtl"] .detailPagePrimaryContainer { + padding-right: 32.45vw; +} + +.layout-tv [dir="ltr"] .detailPagePrimaryContainer { + padding-left: 32.45vw; +} + .layout-desktop .detailRibbon { margin-top: -7.2em; height: 7.2em; @@ -835,20 +839,20 @@ min-width: 0; max-width: 100%; flex: 1 0 0; +} - .layout-mobile [dir="ltr"] & { - @include header-poster-padding; +.layout-mobile .infoWrapper { + @media all and (max-width: 32em) { + position: relative; } +} - .layout-mobile [dir="rtl"] & { - @include header-poster-padding-rtl; - } +.layout-mobile [dir="ltr"] .infoWrapper { + @include header-poster-padding; +} - .layout-mobile & { - @media all and (max-width: 32em) { - position: relative; - } - } +.layout-mobile [dir="rtl"] .infoWrapper { + @include header-poster-padding-rtl; } .infoText { From a01b4285876036bff1d3260ebccfdf5ac06175ad Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Fri, 23 Dec 2022 16:36:48 -0500 Subject: [PATCH 032/222] Some scss reorganizing --- src/assets/css/librarybrowser.scss | 42 +++++++++++++----------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index 68103114de..181df7c92b 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -807,22 +807,16 @@ .layout-tv & { display: block; } -} -.layout-desktop [dir="rtl"] .detailPagePrimaryContainer { - padding-right: 32.45vw; -} + .layout-desktop [dir="rtl"] &, + .layout-tv [dir="rtl"] & { + padding-right: 32.45vw; + } -.layout-desktop [dir="ltr"] .detailPagePrimaryContainer { - padding-left: 32.45vw; -} - -.layout-tv [dir="rtl"] .detailPagePrimaryContainer { - padding-right: 32.45vw; -} - -.layout-tv [dir="ltr"] .detailPagePrimaryContainer { - padding-left: 32.45vw; + .layout-desktop [dir="ltr"] &, + .layout-tv [dir="ltr"] & { + padding-left: 32.45vw; + } } .layout-desktop .detailRibbon { @@ -839,20 +833,20 @@ min-width: 0; max-width: 100%; flex: 1 0 0; -} -.layout-mobile .infoWrapper { - @media all and (max-width: 32em) { - position: relative; + .layout-mobile & { + @media all and (max-width: 32em) { + position: relative; + } } -} -.layout-mobile [dir="ltr"] .infoWrapper { - @include header-poster-padding; -} + .layout-mobile [dir="ltr"] & { + @include header-poster-padding; + } -.layout-mobile [dir="rtl"] .infoWrapper { - @include header-poster-padding-rtl; + .layout-mobile [dir="rtl"] & { + @include header-poster-padding-rtl; + } } .infoText { From 1421daa99f5ace4bb3d4469f878bfcce754cdc2d Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Sat, 21 Jan 2023 16:53:24 -0500 Subject: [PATCH 033/222] Some fixes --- src/assets/css/librarybrowser.scss | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index 181df7c92b..d0796ceb88 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -610,6 +610,11 @@ } } + .layout-mobile & { + padding-left: 5% !important; + padding-right: 5% !important; + } + [dir="ltr"] & { padding-left: 32.45vw; padding-right: 2%; @@ -621,11 +626,6 @@ } } -.layout-mobile .detailPageContent { - padding-left: 5%; - padding-right: 5%; -} - .detailSectionContent a { color: inherit; } @@ -738,6 +738,18 @@ } } +[dir=ltr] .mainDetailButtons { + @media all and (max-width: 62.5em) { + margin-left: -0.5em; + } +} + +[dir=rtl] .mainDetailButtons { + @media all and (max-width: 62.5em) { + margin-right: -0.5em; + } +} + .layout-mobile .parentName, .layout-mobile .itemName, .layout-mobile .itemMiscInfo, @@ -1135,10 +1147,6 @@ div.itemDetailGalleryLink.defaultCardBackground { } @media all and (max-width: 62.5em) { - .mainDetailButtons { - margin-left: -0.5em; - } - .detailButtonHideonMobile { display: none !important; } From 7285f12f134343876fdc174c3628322b5006648f Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Sat, 21 Jan 2023 16:54:02 -0500 Subject: [PATCH 034/222] cleanup --- src/assets/css/librarybrowser.scss | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index d0796ceb88..4f510926e3 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -669,11 +669,6 @@ margin: 1em 0; } -.detailButton, -.mainDetailButtons { - display: flex; -} - .itemName { margin: 0.5em 0; font-weight: 600; From 0579c43122b105fb5866c1c4163d6c06fcfd8a90 Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Sat, 21 Jan 2023 18:46:14 -0500 Subject: [PATCH 035/222] Fixed scss ordering --- src/assets/css/librarybrowser.scss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index 4f510926e3..a05a7a2ff1 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -610,11 +610,6 @@ } } - .layout-mobile & { - padding-left: 5% !important; - padding-right: 5% !important; - } - [dir="ltr"] & { padding-left: 32.45vw; padding-right: 2%; @@ -624,6 +619,11 @@ padding-right: 32.45vw; padding-left: 2%; } + + .layout-mobile & { + padding-left: 5%; + padding-right: 5%; + } } .detailSectionContent a { From 4e3635bbe3723ed22dbe30b25a5c73e4463c2030 Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Mon, 30 Jan 2023 20:12:23 -0500 Subject: [PATCH 036/222] Removed useless margins --- src/assets/css/librarybrowser.scss | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index a05a7a2ff1..0a996f6441 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -733,18 +733,6 @@ } } -[dir=ltr] .mainDetailButtons { - @media all and (max-width: 62.5em) { - margin-left: -0.5em; - } -} - -[dir=rtl] .mainDetailButtons { - @media all and (max-width: 62.5em) { - margin-right: -0.5em; - } -} - .layout-mobile .parentName, .layout-mobile .itemName, .layout-mobile .itemMiscInfo, From 7bfc452272be9952d592ed60cebc592bd2a796ae Mon Sep 17 00:00:00 2001 From: Hadi Charara Date: Mon, 30 Jan 2023 20:23:32 -0500 Subject: [PATCH 037/222] Fixed text-align. --- src/assets/css/librarybrowser.scss | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/assets/css/librarybrowser.scss b/src/assets/css/librarybrowser.scss index 0a996f6441..66e9aad7d8 100644 --- a/src/assets/css/librarybrowser.scss +++ b/src/assets/css/librarybrowser.scss @@ -739,7 +739,7 @@ .layout-mobile .mainDetailButtons { align-items: center; justify-content: center; - text-align: center !important; + text-align: center; } .layout-mobile .mainDetailButtons { @@ -847,14 +847,6 @@ .infoText { min-width: 0; max-width: 100%; - - [dir="ltr"] & { - text-align: left; - } - - [dir="rtl"] & { - text-align: right; - } } .detailPageSecondaryContainer { From 59e7249c32f436c25cd380ba8978eb13e941492f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Tue, 31 Jan 2023 18:40:08 +0000 Subject: [PATCH 038/222] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index be1a49e244..83a6e1b3aa 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1510,7 +1510,7 @@ "EnablePlugin": "Povolit", "DirectPlayHelp": "Zdrojový soubor je s klientem plně kompatibilní a relaci je tak soubor posílán bez úprav.", "HeaderContinueReading": "Pokračovat ve čtení", - "EnableGamepadHelp": "Naslouchat vstupu z připojených herních ovladačů.", + "EnableGamepadHelp": "Naslouchat vstupu z připojených herních ovladačů. (Vyžaduje 'Režim zobrazení' nastavený na 'TV')", "LabelEnableGamepad": "Povolit herní ovladač", "Controls": "Ovládání", "TextSent": "Text odeslán.", From a624a7fb3493ac403970a069e5357544f14199fc Mon Sep 17 00:00:00 2001 From: blob03 Date: Tue, 31 Jan 2023 19:33:33 +0000 Subject: [PATCH 039/222] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index c29b82debb..f20e3f5642 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1511,7 +1511,7 @@ "DirectPlayHelp": "Le fichier source est entièrement compatible avec le client et la session reçoit le fichier sans modifications.", "HeaderContinueReading": "Reprendre la lecture", "TextSent": "Message envoyé.", - "EnableGamepadHelp": "Détecter le signal d'entrée de toute manette connectée.", + "EnableGamepadHelp": "Détecter le signal d'entrée de toute manette connectée. (Nécessite le mode d’affichage 'TV'.)", "LabelEnableGamepad": "Activer la manette de jeu", "Controls": "Contrôles", "MessageSent": "Message envoyé.", From 892bbf00d20da02fa882b45de9870e036a0b32f7 Mon Sep 17 00:00:00 2001 From: Patrick Oliveira Date: Tue, 31 Jan 2023 20:06:13 +0000 Subject: [PATCH 040/222] 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 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index f82d8a4b57..42b4eae532 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1536,7 +1536,7 @@ "SubtitleCodecNotSupported": "O codec de legenda não é suportado", "ContainerNotSupported": "O container não é suportado", "AudioCodecNotSupported": "O codec de áudio não é suportado", - "EnableGamepadHelp": "Receber comandos de entrada de qualquer controle conectado.", + "EnableGamepadHelp": "Receber comandos de entrada de qualquer controle conectado. (Requer: Modo de Exibição de 'TV')", "LabelEnableGamepad": "Habilitar Controle", "Controls": "Controles", "UseEpisodeImagesInNextUpHelp": "As seções 'Veja a Seguir' e 'Continue Assistindo' utilizarão imagens de episódios como miniaturas ao invés da miniatura principal do vídeo.", @@ -1683,5 +1683,9 @@ "MessageNoItemsAvailable": "Nenhum item está disponível no momento.", "MessageNoFavoritesAvailable": "Nenhum favorito está disponível no momento.", "MessageRenameMediaFolder": "Renomear uma biblioteca de mídia fará com que todos metadados se perda, prossiga com cautela.", - "EnableCardLayout": "Exibir cartão visual" + "EnableCardLayout": "Exibir cartão visual", + "StereoDownmixAlgorithmHelp": "Algoritmo usado para fazer o downmix de áudio multicanal para estéreo.", + "LabelStereoDownmixAlgorithm": "Algoritmo Downmix Estéreo", + "Experimental": "Experimental", + "DownloadAll": "Baixar Tudo" } From f347a93207a93ffec96733b4499c1ca99316c3fe Mon Sep 17 00:00:00 2001 From: Peyman M Date: Wed, 1 Feb 2023 00:09:31 +0000 Subject: [PATCH 041/222] Translated using Weblate (Persian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fa/ --- src/strings/fa.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/fa.json b/src/strings/fa.json index f5855e35c4..d1d9593cdc 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -1586,5 +1586,9 @@ "SelectAll": "انتخاب همه", "ThemeSong": "آهنگ قالب", "Sample": "نمونه", - "ThemeVideo": "ویدئوی قالب" + "ThemeVideo": "ویدئوی قالب", + "IgnoreDts": "نادیده‌گرفتن DTS (decoding timestamp)", + "HomeVideosPhotos": "ویدیو ها و تصاویر خانگی", + "Experimental": "آزمایشی", + "DownloadAll": "دانلود همه" } From 8cb47a316e7e09ce82f272724e8d6dd444265994 Mon Sep 17 00:00:00 2001 From: rondadon Date: Tue, 31 Jan 2023 22:59:35 +0000 Subject: [PATCH 042/222] 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 1fb69d435f..8e608ec472 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -849,7 +849,7 @@ "Playlists": "Popisi za reprodukciju", "AllowMediaConversionHelp": "Dopusti ili odbij pristup mogućnosti konverzije medija.", "AllLibraries": "Sve biblioteke", - "Aired": "Emitirano", + "Aired": "Prenošeno", "AirDate": "Datum prikazivanja", "AddedOnValue": "Dodano {0}", "Songs": "Pjesme", From 8b704ad0c595d080925fbf5f3fd2f6486e1ede92 Mon Sep 17 00:00:00 2001 From: kompalkipal <2022temptv@gmail.com> Date: Tue, 31 Jan 2023 23:00:53 +0000 Subject: [PATCH 043/222] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hr/ --- src/strings/hr.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/hr.json b/src/strings/hr.json index 8e608ec472..1f4089f749 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -872,7 +872,7 @@ "AlwaysPlaySubtitles": "Uvijek pokreni titlove", "AllowRemoteAccessHelp": "Ako je odznačeno, svi udaljeni pristupi će biti blokirani.", "AllowRemoteAccess": "Dopusti udaljene pristupe na ovaj server", - "AllowOnTheFlySubtitleExtraction": "Dopusti izdvajanje titla tokom reprodukcije", + "AllowOnTheFlySubtitleExtraction": "Dopusti izdvajanje titla tijekom reprodukcije", "AllowMediaConversion": "Dopusti konverziju medija", "AllLanguages": "Svi jezici", "Alerts": "Upozorenja", @@ -1189,7 +1189,7 @@ "AgeValue": "(staro {0} godina)", "MusicVideos": "Glazbeni spotovi", "Subtitle": "Titl", - "AddToFavorites": "Dodaj u favorite", + "AddToFavorites": "Dodaj u omiljene", "Unreleased": "Još nije objavljeno", "ButtonExitApp": "Izlaz iz aplikacije", "Casual": "Ležerno", From ec175a39f1028e7fcb758f17507c6c92d3d87bb3 Mon Sep 17 00:00:00 2001 From: wolong gl Date: Wed, 1 Feb 2023 04:17:15 +0000 Subject: [PATCH 044/222] 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 a86f7e5f6f..85bb1f4a30 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1512,7 +1512,7 @@ "DirectPlayHelp": "源文件与此客户端完全兼容,会话正在接收文件而未做任何修改。", "Framerate": "帧率", "HeaderContinueReading": "继续阅读", - "EnableGamepadHelp": "监听来自任何连接的控制器输入。", + "EnableGamepadHelp": "监听来自任何连接的控制器的输入。(需开启“电视”模式)", "LabelEnableGamepad": "启用游戏手柄", "Controls": "操控", "TextSent": "文本已发送。", From 3fe948cae15802ccba80d4f9cf6360b546aa7f92 Mon Sep 17 00:00:00 2001 From: Oskari Lavinto Date: Wed, 1 Feb 2023 07:43:50 +0000 Subject: [PATCH 045/222] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index e5b6b189fe..7a5f872df7 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1306,7 +1306,7 @@ "LabelSlowResponseEnabled": "Kirjaa lokimerkintä, jos palvelin vastasi liian hitaasti", "LabelSkipIfGraphicalSubsPresentHelp": "Tekstitysten säilytys tekstimuodossa 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.", + "EnableGamepadHelp": "Seuraa kytkettyjen ohjainten syötteitä (edellytys: TV-näyttötila).", "LabelEnableGamepad": "Ota käyttöön peliohjain", "Controls": "Ohjaimet", "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.", From a809be5d9b5cfecc16106e30f60b483736991ee9 Mon Sep 17 00:00:00 2001 From: Imesh Balasuriya Date: Wed, 1 Feb 2023 08:44:05 -0500 Subject: [PATCH 046/222] Added translation using Weblate (Sinhala) --- src/strings/si.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/si.json diff --git a/src/strings/si.json b/src/strings/si.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/si.json @@ -0,0 +1 @@ +{} From 3911cb176cdc9df66ca90993ceebb07359efd79c Mon Sep 17 00:00:00 2001 From: Imesh Balasuriya Date: Wed, 1 Feb 2023 13:51:41 +0000 Subject: [PATCH 047/222] Translated using Weblate (Sinhala) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/si/ --- src/strings/si.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/si.json b/src/strings/si.json index 0967ef424b..1af52c59d2 100644 --- a/src/strings/si.json +++ b/src/strings/si.json @@ -1 +1,4 @@ -{} +{ + "Add": "එක් කරන්න", + "AllLanguages": "සියලු භාෂා" +} From 7ddaf8dd3d26631c1e43a949afd83920cbcf1a16 Mon Sep 17 00:00:00 2001 From: HanHwanHo Date: Wed, 1 Feb 2023 21:38:57 +0000 Subject: [PATCH 048/222] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 0e797e1596..67d5f98b07 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -307,7 +307,7 @@ "LabelMetadataPath": "메타데이터 경로:", "LabelMetadataPathHelp": "다운로드한 아트워크와 메타데이터를 저장할 위치를 지정합니다.", "LabelMetadataSavers": "메타데이터 저장기:", - "LabelMetadataSaversHelp": "메타 데이터를 저장할 때 사용할 파일 형식을 선택하십시오.", + "LabelMetadataSaversHelp": "메타데이터를 저장할 때 사용할 파일 형식을 선택하십시오.", "LabelMethod": "방법:", "LabelMinBackdropDownloadWidth": "다운로드할 배경 이미지 최소 넓이:", "LabelMinScreenshotDownloadWidth": "다운로드할 스크린샷의 최소 너비:", @@ -326,7 +326,7 @@ "LabelNotificationEnabled": "이 알림 활성화", "LabelNumber": "번호:", "LabelNumberOfGuideDays": "일별 편성표 데이터 다운로드:", - "LabelNumberOfGuideDaysHelp": "더 많은 기간의 편성표 데이터를 다운로드하는 것은 목록 및 예약 녹화의 범위가 늘어 나지만 다운로드하는 데 시간이 오래 걸릴 수 있습니다.", + "LabelNumberOfGuideDaysHelp": "더 많은 기간의 편성표 데이터를 다운로드하면 더 많은 방송 일정 예약을 할 수 있고 볼 수 있는 목록이 늘어 나지만 다운로드하는 데 더 많은 시간이 소요됩니다. 자동은 채널 수에 따라 선택됩니다.", "LabelOriginalAspectRatio": "원 화면비율:", "LabelOverview": "줄거리:", "LabelParentalRating": "등급:", @@ -1294,7 +1294,7 @@ "EnableFasterAnimations": "더 빠른 애니메이션", "LabelRequireHttpsHelp": "선택하면 서버가 HTTP를 통한 모든 요청을 HTTPS로 자동 리디렉션합니다. 서버가 HTTPS에서 수신하지 않는 경우에는 효과가 없습니다.", "LabelRequireHttps": "HTTPS가 필요합니다", - "LabelQuickConnectCode": "퀵커넥트 코드:", + "LabelQuickConnectCode": "퀵 커넥트 코드:", "LabelUnstable": "불안정", "LabelStable": "안정", "LabelChromecastVersion": "구글 캐스트 버전", @@ -1322,7 +1322,7 @@ "Authorize": "승인", "QuickConnectNotActive": "이 서버에서 퀵커넥트가 활성화되지 않았습니다", "Raised": "양각", - "LabelMaxMuxingQueueSizeHelp": "모든 스트림이 초기화 될 때까지 기다리는 동안 버퍼링 할 수있는 최대 패킷 수입니다. ffmpeg 로그에서 \"출력 스트림에 대해 버퍼링 된 패킷이 너무 많음\"오류가 계속 발생하면이를 늘리십시오. 권장 값은 2048입니다.", + "LabelMaxMuxingQueueSizeHelp": "모든 스트림이 초기화되기를 기다리는 동안 버퍼링할 수 있는 최대 패킷 수입니다. ffmpeg 로그에서 \"출력 스트림을 위해 버퍼링된 패킷이 너무 많습니다\" 오류가 계속 발생하면 값을 늘리십시오. 권장 값은 2048입니다.", "LabelMaxMuxingQueueSize": "최대 muxing 대기열 크기 :", "Preview": "미리보기", "SubtitleVerticalPositionHelp": "텍스트가 나타나는 줄 번호입니다. 양수는 하향식을 나타냅니다. 음수는 상향식을 나타냅니다.", @@ -1351,7 +1351,7 @@ "Premieres": "첫날", "AllowTonemappingHelp": "톤 매핑은 원본 장면을 표현하는 데 매우 중요한 정보 인 이미지 세부 정보와 색상을 유지하면서 HDR에서 SDR로 비디오의 동적 범위를 변환 할 수 있습니다. 현재는 HDR10 또는 HLG 메타 데이터가 포함 된 비디오에만 작동합니다.", "EnableTonemapping": "톤 매핑 활성화", - "LabelOpenclDeviceHelp": "이것은 톤 매핑에 사용되는 OpenCL 장치입니다. 점의 왼쪽은 플랫폼 번호이고 오른쪽은 플랫폼의 장치 번호입니다. 기본값은 0.0입니다. OpenCL 하드웨어 가속 방법이 포함 된 ffmpeg 응용 프로그램 파일이 필요합니다.", + "LabelOpenclDeviceHelp": "이것은 톤 매핑에 사용되는 OpenCL 장치입니다. 점의 왼쪽은 플랫폼 번호이고 오른쪽은 플랫폼의 장치 번호입니다. 기본값은 0.0입니다. OpenCL 하드웨어 가속 방법이 포함 된 ffmpeg 응용프로그램 파일이 필요합니다.", "LabelOpenclDevice": "OpenCL 장치:", "LabelColorPrimaries": "원색:", "LabelColorTransfer": "색상 이동:", @@ -1495,7 +1495,7 @@ "SubtitleCodecNotSupported": "자막 코덱이 지원되지 않습니다", "ContainerNotSupported": "컨테이너가 지원되지 않습니다", "AudioCodecNotSupported": "오디오 코덱이 지원되지 않습니다", - "EnableGamepadHelp": "연결된 컨트롤러에서 입력을 수신합니다.", + "EnableGamepadHelp": "연결된 컨트롤러에서 입력을 수신합니다. ('TV' 디스플레이 모드가 필요합니다)", "LabelEnableGamepad": "게임패드 활성화", "Controls": "컨트롤", "EnableVppTonemapping": "VPP Tone 매핑 활성화", @@ -1589,5 +1589,8 @@ "IgnoreDtsHelp": "이 옵션을 비활성화하면 일부 문제가 해결될 수 있습니다. 예를 들어 별도의 오디오 및 비디오 스트림이 있는 채널에서 없는 오디오를 불러올 수 있습니다 .", "LabelMaxVideoResolution": "허용되는 최대 비디오 코덱 변경 해상도", "HomeVideosPhotos": "홈 비디오 및 사진", - "EnableCardLayout": "CardBox 보이기" + "EnableCardLayout": "CardBox 보이기", + "LabelStereoDownmixAlgorithm": "스테레오 다운믹스 알고리즘", + "Experimental": "실험실", + "DownloadAll": "전부 다운로드" } From 8f1c91e0b0a9aaa3f974d38f04ee03a8e4965b29 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 03:03:36 +0000 Subject: [PATCH 049/222] Update dependency es-check to v7.1.0 --- package-lock.json | 56 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 488414d13f..f67f462cfc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -80,7 +80,7 @@ "cross-env": "7.0.3", "css-loader": "6.7.3", "cssnano": "5.1.14", - "es-check": "7.0.1", + "es-check": "7.1.0", "eslint": "8.32.0", "eslint-plugin-compat": "4.0.2", "eslint-plugin-eslint-comments": "3.2.0", @@ -3496,9 +3496,9 @@ } }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "devOptional": true, "bin": { "acorn": "bin/acorn" @@ -6036,16 +6036,16 @@ } }, "node_modules/es-check": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/es-check/-/es-check-7.0.1.tgz", - "integrity": "sha512-I2+Wov4dEikUjn4xnJwW6YmbhPXzgtqT9kXfron2P7YzHBuzwVQPQn446VIBUgtiNujagtPfMts3/whNydgx/g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/es-check/-/es-check-7.1.0.tgz", + "integrity": "sha512-t099vm9tNqNHF28Q/mRcqYxmkbkoo/Qu2ZI5/D+eFeqNUjI3jwkIyHyexXiAtstbZ1FQELi0QCuUaYCtiffi4Q==", "dev": true, "dependencies": { - "acorn": "^8.7.0", - "commander": "^9.4.0", - "fast-glob": "^3.2.11", + "acorn": "8.8.2", + "commander": "10.0.0", + "fast-glob": "^3.2.12", "supports-color": "^8.1.1", - "winston": "^3.2.1" + "winston": "^3.8.2" }, "bin": { "es-check": "index.js" @@ -6055,12 +6055,12 @@ } }, "node_modules/es-check/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=14" } }, "node_modules/es-check/node_modules/has-flag": { @@ -21441,9 +21441,9 @@ } }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "devOptional": true }, "acorn-import-assertions": { @@ -23341,22 +23341,22 @@ } }, "es-check": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/es-check/-/es-check-7.0.1.tgz", - "integrity": "sha512-I2+Wov4dEikUjn4xnJwW6YmbhPXzgtqT9kXfron2P7YzHBuzwVQPQn446VIBUgtiNujagtPfMts3/whNydgx/g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/es-check/-/es-check-7.1.0.tgz", + "integrity": "sha512-t099vm9tNqNHF28Q/mRcqYxmkbkoo/Qu2ZI5/D+eFeqNUjI3jwkIyHyexXiAtstbZ1FQELi0QCuUaYCtiffi4Q==", "dev": true, "requires": { - "acorn": "^8.7.0", - "commander": "^9.4.0", - "fast-glob": "^3.2.11", + "acorn": "8.8.2", + "commander": "10.0.0", + "fast-glob": "^3.2.12", "supports-color": "^8.1.1", - "winston": "^3.2.1" + "winston": "^3.8.2" }, "dependencies": { "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", "dev": true }, "has-flag": { diff --git a/package.json b/package.json index 37e57414df..e08e6a9b10 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "cross-env": "7.0.3", "css-loader": "6.7.3", "cssnano": "5.1.14", - "es-check": "7.0.1", + "es-check": "7.1.0", "eslint": "8.32.0", "eslint-plugin-compat": "4.0.2", "eslint-plugin-eslint-comments": "3.2.0", From 75dee9197ce13cb4742543d8edf66733bbd41871 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 03:22:16 +0000 Subject: [PATCH 050/222] Bump jszip from 3.7.1 to 3.10.1 Bumps [jszip](https://github.com/Stuk/jszip) from 3.7.1 to 3.10.1. - [Release notes](https://github.com/Stuk/jszip/releases) - [Changelog](https://github.com/Stuk/jszip/blob/main/CHANGES.md) - [Commits](https://github.com/Stuk/jszip/compare/v3.7.1...v3.10.1) --- updated-dependencies: - dependency-name: jszip dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index f67f462cfc..3f4cf60611 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9625,14 +9625,14 @@ } }, "node_modules/jszip": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", - "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "setimmediate": "^1.0.5" } }, "node_modules/jszip/node_modules/lie": { @@ -13741,14 +13741,6 @@ "node": ">= 0.8.0" } }, - "node_modules/set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -13776,6 +13768,11 @@ "node": ">=0.10.0" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -26017,14 +26014,14 @@ } }, "jszip": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz", - "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "requires": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "setimmediate": "^1.0.5" }, "dependencies": { "lie": { @@ -28985,11 +28982,6 @@ "send": "0.18.0" } }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -29013,6 +29005,11 @@ } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", From 66132494b1d0d69c32b932f4b297f8644081cfdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Thu, 2 Feb 2023 13:07:26 +0000 Subject: [PATCH 051/222] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 83a6e1b3aa..7a88afbf7c 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -57,7 +57,7 @@ "ButtonPause": "Pozastavit", "ButtonPreviousTrack": "Předchozí stopa", "ButtonQuickStartGuide": "Rychlý průvodce", - "ButtonRefreshGuideData": "Obnovit data programového průvodce", + "ButtonRefreshGuideData": "Aktualizovat data programového průvodce", "ButtonRemove": "Odstranit", "ButtonRename": "Přejmenovat", "ButtonResetEasyPassword": "Obnovit Easy PIN kód", @@ -556,7 +556,7 @@ "LabelRecord": "Záznam:", "LabelRecordingPath": "Standardní složka pro nahrávání:", "LabelRecordingPathHelp": "Určete výchozí umístění pro uložení nahrávky. Pokud je ponecháno prázdné, budou použity složky programu na serveru (data).", - "LabelRefreshMode": "Mód obnovy:", + "LabelRefreshMode": "Typ aktualizace:", "LabelReleaseDate": "Datum vydání:", "LabelRemoteClientBitrateLimit": "Datový tok streamování do Internetu (Mbps):", "LabelRuntimeMinutes": "Délka:", @@ -840,7 +840,7 @@ "PlayAllFromHere": "Přehrát vše odsud", "PlayCount": "Počet přehrání", "PlayFromBeginning": "Přehrát od začátku", - "PlayNext": "Přehrát po aktuální", + "PlayNext": "Přehrát jako další", "PlayNextEpisodeAutomatically": "Automaticky přehrávat další epizodu", "PlaybackErrorNoCompatibleStream": "Tento klient není kompatibilní s médiem a server neodesílá kompatibilní formát médií.", "Played": "Přehráno", @@ -869,10 +869,10 @@ "MessageChangeRecordingPath": "Změna záznamové složky automaticky nepřesune stávající záznamy ze starého umístění do nového. Budete muset přesunout ručně, pokud je to žádoucí.", "RecordingScheduled": "Plán nahrávání.", "Recordings": "Nahrávky", - "Refresh": "Obnovit", + "Refresh": "Aktualizovat", "RefreshDialogHelp": "Metadata se aktualizují na základě nastavení a internetových služeb, které jsou povoleny na nástěnce.", - "RefreshMetadata": "Obnovit metadata", - "RefreshQueued": "Obnovení zařazeno.", + "RefreshMetadata": "Aktualizovat metadata", + "RefreshQueued": "Aktualizace zařazena do fronty.", "ReleaseDate": "Datum vydání", "RememberMe": "Zapamatuj si mě", "RemoveFromCollection": "Odebrat z kolekce", @@ -895,7 +895,7 @@ "Screenshots": "Snímky obrazovky", "Search": "Vyhledávání", "SearchForCollectionInternetMetadata": "Vyhledat metadata a obrázky na Internetu", - "SearchForMissingMetadata": "Hledat chybějící metadata", + "SearchForMissingMetadata": "Vyhledat chybějící metadata", "SearchForSubtitles": "Vyhledat titulky", "SearchResults": "Výsledky vyhledávání", "SendMessage": "Poslat zprávu", @@ -1623,7 +1623,7 @@ "BehindTheScenes": "Z natáčení", "Trailer": "Upoutávka", "Clip": "Krátký film", - "AllowEmbeddedSubtitlesHelp": "Zakázat titulky, které jsou vložené v kontejneru média. Vyžaduje kompletní obnovení knihovny.", + "AllowEmbeddedSubtitlesHelp": "Zakázat titulky, které jsou vložené v kontejneru média. Vyžaduje kompletní přeskenování knihovny.", "AllowEmbeddedSubtitlesAllowTextOption": "Povolit textové titulky", "AllowEmbeddedSubtitlesAllowImageOption": "Povolit grafické titulky", "AllowEmbeddedSubtitlesAllowAllOption": "Povolit všechny", From e07b6a6e2abf2b9f73427ad74c977d47dec8b106 Mon Sep 17 00:00:00 2001 From: Wiki Date: Thu, 2 Feb 2023 11:53:17 +0000 Subject: [PATCH 052/222] Translated using Weblate (Pirate (pr)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pr/ --- src/strings/pr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/pr.json b/src/strings/pr.json index 1bc17f1730..4976738728 100644 --- a/src/strings/pr.json +++ b/src/strings/pr.json @@ -91,5 +91,7 @@ "Default": "Normal-like", "ButtonBackspace": "Mistake Erasing Button", "ButtonClose": "Shut", - "Favorites": "Finest Loot" + "Favorites": "Finest Loot", + "Genres": "types o' booty", + "HeaderAlbumArtists": "Buccaneers o' the musical arts" } From 9477ea7e42269da03f0d193f58f10b016508baeb Mon Sep 17 00:00:00 2001 From: Bas Date: Thu, 2 Feb 2023 15:02:47 +0000 Subject: [PATCH 053/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 4dd8b4ceb7..324b3781ec 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -455,7 +455,7 @@ "LabelDiscNumber": "Disk nummer:", "LabelDisplayLanguage": "Schermtaal:", "LabelDisplayLanguageHelp": "Vertaling van Jellyfin is een voortdurend project.", - "LabelDisplayMode": "Weergave mode:", + "LabelDisplayMode": "Weergavemodus:", "LabelDisplayName": "Weergave naam:", "LabelDisplayOrder": "Weergave volgorde:", "LabelDisplaySpecialsWithinSeasons": "Voeg specials toe aan het seizoen waarin ze uitgezonden zijn", @@ -1561,7 +1561,7 @@ "PreviousChapter": "Vorig hoofdstuk", "Remixer": "Remixer", "UseEpisodeImagesInNextUp": "Gebruik afleveringscovers in de secties 'Hierna' en 'Verder kijken'", - "EnableGamepadHelp": "Luister naar input van alle aangesloten controllers.", + "EnableGamepadHelp": "Luister naar input van alle aangesloten controllers. (Vereist weergavemodus 'Tv')", "VideoCodecNotSupported": "De videocodec wordt niet ondersteund", "AudioBitrateNotSupported": "De bitrate van de audio wordt niet ondersteund", "AudioChannelsNotSupported": "Het aantal geluidskanalen wordt niet ondersteund", From eb9a5782443494cf13e533d84dd2d0bb88005a53 Mon Sep 17 00:00:00 2001 From: Drewnja Date: Thu, 2 Feb 2023 14:58:35 +0000 Subject: [PATCH 054/222] 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 85ce44be02..4c7ac53d0d 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1513,7 +1513,7 @@ "Framerate": "Ч-та кадров", "DirectPlayHelp": "Исходный файл полностью совместим с этим клиентом, а сеанс получает файл без изменений.", "HeaderContinueReading": "Продолжение чтения", - "EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров.", + "EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров. (Необходим режим отображения \"TV\")", "LabelEnableGamepad": "Включить Gamepad", "Controls": "Управление", "TextSent": "Текст отправлен.", From 217868f72ce6d4b5f65fdb002bdc82a32d01544c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 20:18:34 +0000 Subject: [PATCH 055/222] Update React --- package-lock.json | 64 +++++++++++++++++++++++------------------------ package.json | 4 +-- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index f67f462cfc..c62341e6c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ "pdfjs-dist": "2.16.105", "react": "17.0.2", "react-dom": "17.0.2", - "react-router-dom": "6.6.2", + "react-router-dom": "6.8.0", "resize-observer-polyfill": "1.5.1", "screenfull": "6.0.2", "sortablejs": "1.15.0", @@ -66,7 +66,7 @@ "@types/escape-html": "1.0.2", "@types/loadable__component": "5.13.4", "@types/lodash-es": "4.17.6", - "@types/react": "17.0.52", + "@types/react": "17.0.53", "@types/react-dom": "17.0.18", "@typescript-eslint/eslint-plugin": "5.48.1", "@typescript-eslint/parser": "5.48.1", @@ -2566,9 +2566,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.2.1.tgz", - "integrity": "sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.1.tgz", + "integrity": "sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==", "engines": { "node": ">=14" } @@ -2882,9 +2882,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "17.0.52", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", - "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", + "version": "17.0.53", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz", + "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -12899,11 +12899,11 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-router": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.6.2.tgz", - "integrity": "sha512-uJPG55Pek3orClbURDvfljhqFvMgJRo59Pktywkk8hUUkTY2aRfza8Yhl/vZQXs+TNQyr6tu+uqz/fLxPICOGQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.0.tgz", + "integrity": "sha512-760bk7y3QwabduExtudhWbd88IBbuD1YfwzpuDUAlJUJ7laIIcqhMvdhSVh1Fur1PE8cGl84L0dxhR3/gvHF7A==", "dependencies": { - "@remix-run/router": "1.2.1" + "@remix-run/router": "1.3.1" }, "engines": { "node": ">=14" @@ -12913,12 +12913,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.6.2.tgz", - "integrity": "sha512-6SCDXxRQqW5af8ImOqKza7icmQ47/EMbz572uFjzvcArg3lZ+04PxSPp8qGs+p2Y+q+b+S/AjXv8m8dyLndIIA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.0.tgz", + "integrity": "sha512-hQouduSTywGJndE86CXJ2h7YEy4HYC6C/uh19etM+79FfQ6cFFFHnHyDlzO4Pq0eBUI96E4qVE5yUjA00yJZGQ==", "dependencies": { - "@remix-run/router": "1.2.1", - "react-router": "6.6.2" + "@remix-run/router": "1.3.1", + "react-router": "6.8.0" }, "engines": { "node": ">=14" @@ -20681,9 +20681,9 @@ } }, "@remix-run/router": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.2.1.tgz", - "integrity": "sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.1.tgz", + "integrity": "sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==" }, "@rollup/plugin-babel": { "version": "5.3.1", @@ -20965,9 +20965,9 @@ "dev": true }, "@types/react": { - "version": "17.0.52", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", - "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", + "version": "17.0.53", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz", + "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==", "dev": true, "requires": { "@types/prop-types": "*", @@ -28347,20 +28347,20 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-router": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.6.2.tgz", - "integrity": "sha512-uJPG55Pek3orClbURDvfljhqFvMgJRo59Pktywkk8hUUkTY2aRfza8Yhl/vZQXs+TNQyr6tu+uqz/fLxPICOGQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.0.tgz", + "integrity": "sha512-760bk7y3QwabduExtudhWbd88IBbuD1YfwzpuDUAlJUJ7laIIcqhMvdhSVh1Fur1PE8cGl84L0dxhR3/gvHF7A==", "requires": { - "@remix-run/router": "1.2.1" + "@remix-run/router": "1.3.1" } }, "react-router-dom": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.6.2.tgz", - "integrity": "sha512-6SCDXxRQqW5af8ImOqKza7icmQ47/EMbz572uFjzvcArg3lZ+04PxSPp8qGs+p2Y+q+b+S/AjXv8m8dyLndIIA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.0.tgz", + "integrity": "sha512-hQouduSTywGJndE86CXJ2h7YEy4HYC6C/uh19etM+79FfQ6cFFFHnHyDlzO4Pq0eBUI96E4qVE5yUjA00yJZGQ==", "requires": { - "@remix-run/router": "1.2.1", - "react-router": "6.6.2" + "@remix-run/router": "1.3.1", + "react-router": "6.8.0" } }, "read-file-stdin": { diff --git a/package.json b/package.json index e08e6a9b10..84c42cffdd 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "@types/escape-html": "1.0.2", "@types/loadable__component": "5.13.4", "@types/lodash-es": "4.17.6", - "@types/react": "17.0.52", + "@types/react": "17.0.53", "@types/react-dom": "17.0.18", "@typescript-eslint/eslint-plugin": "5.48.1", "@typescript-eslint/parser": "5.48.1", @@ -102,7 +102,7 @@ "pdfjs-dist": "2.16.105", "react": "17.0.2", "react-dom": "17.0.2", - "react-router-dom": "6.6.2", + "react-router-dom": "6.8.0", "resize-observer-polyfill": "1.5.1", "screenfull": "6.0.2", "sortablejs": "1.15.0", From e0f10797de47e2e0dffbea2415fe5aeddba4a3af Mon Sep 17 00:00:00 2001 From: Odjob16 Date: Thu, 2 Feb 2023 19:07:16 +0000 Subject: [PATCH 056/222] 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 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 024c67f376..26e2fe3a71 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -590,7 +590,7 @@ "HeaderContainerProfileHelp": "Les profiles de conteneur indique les formats supporté par un appareille. Si un format n'est pas supporté, le média sera transcodé, même si ce format est configuré pour la lecture directe.", "HeaderConfirmRevokeApiKey": "Révoquer la clef d'API", "HeaderCodecProfileHelp": "Les profils de codec indiquent les codecs supportés par un appareil. Si un codec n'est pas supporté, le média sera transcodé, même si ce codec est configuré pour la lecture directe.", - "HeaderCastAndCrew": "Distribution & équipe", + "HeaderCastAndCrew": "Distribution et équipe", "HeaderBranding": "Slogan", "LabelAudioSampleRate": "Taux d’échantillonnage audio :", "LabelAudioLanguagePreference": "Langue audio préférée :", @@ -1017,5 +1017,8 @@ "LabelLoginDisclaimerHelp": "Un message qui sera affiché au bas de la page de connexion.", "LabelManufacturerUrl": "URL du fabricant :", "LabelMaxChromecastBitrate": "Qualité du streaming pour Google Cast :", - "LabelMaxParentalRating": "Classification parentale maximale :" + "LabelMaxParentalRating": "Classification parentale maximale :", + "SpecialFeatures": "Bonus", + "Sort": "Trier", + "SortByValue": "Trier par" } From 8cc8ae7ed7d1b9623fdc006e5ec68a98364aaf0b Mon Sep 17 00:00:00 2001 From: cmmmota Date: Thu, 2 Feb 2023 21:01:35 +0000 Subject: [PATCH 057/222] 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 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 606971a835..6935db9d7a 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -1558,7 +1558,7 @@ "SubtitleCodecNotSupported": "Este formato de legendas não é suportado", "ContainerNotSupported": "Este contentor não é suportado", "AudioCodecNotSupported": "Este codec de áudio não é suportado", - "EnableGamepadHelp": "Responder a quaisquer comandos de jogos ligados.", + "EnableGamepadHelp": "Responder a quaisquer comandos de jogos ligados. (Requer: Modo de visualização 'TV')", "LabelEnableGamepad": "Ativar comandos de jogos", "Controls": "Controlos", "AllowVppTonemappingHelp": "Tone mapping completo dos drivers da Intel. Vídeos em HDR10 funcionam apenas em certas configurações de hardware. Tem maior prioridade quando comparado a outras implementações OpenCL.", @@ -1675,5 +1675,7 @@ "Interview": "Entrevista", "DeletedScene": "Cenas removidas", "BehindTheScenes": "Nos bastidores", - "DownloadAll": "Transferir Todas" + "DownloadAll": "Transferir Todas", + "MessageNoItemsAvailable": "Nenhum item disponível atualmente.", + "MessageNoFavoritesAvailable": "Nenhum favorito disponível atualmente." } From fabfce2b5a922716e1730f1d5e944a394fd9aad6 Mon Sep 17 00:00:00 2001 From: Rui Catarino Date: Thu, 2 Feb 2023 20:01:17 +0000 Subject: [PATCH 058/222] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt/ --- src/strings/pt.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pt.json b/src/strings/pt.json index ed7298ea29..14dc79e260 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -1353,5 +1353,6 @@ "ButtonSpace": "Espaço", "ButtonExitApp": "Sair da Aplicação", "ButtonClose": "Fechar", - "AddToFavorites": "adicionar aos favoritos" + "AddToFavorites": "adicionar aos favoritos", + "DownloadAll": "Descarregar tudo" } From 985eecf5f663371eaae207c1362e354d17fb8402 Mon Sep 17 00:00:00 2001 From: Plntote Date: Fri, 3 Feb 2023 00:34:38 +0000 Subject: [PATCH 059/222] 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 4ba708da56..707713eeea 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -1463,7 +1463,7 @@ "LabelEnableSSDPTracing": "Habilitar seguimiento SSDP:", "LabelEnableIP6Help": "Habilita la funcionalidad IPv6.", "LabelEnableIP6": "Habilitar IPv6", - "LabelEnableIP4Help": "Habilita la funcionalidad IPv4.", + "LabelEnableIP4Help": "Habilitar la funcionalidad IPv4.", "LabelEnableIP4": "Habilitar IPv4", "LabelDropSubtitleHere": "Suelta el subtitulo aqui, o haz clic para buscar.", "LabelCreateHttpPortMapHelp": "Permite la asignación automática de puertos para crear una regla para el tráfico HTTP además del tráfico HTTPS.", From 49b6e1ef68522b41d37fce04d16bb90c65476bb6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Feb 2023 05:39:45 +0000 Subject: [PATCH 060/222] Update peter-evans/create-or-update-comment action to v2.1.1 --- .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 dbf0b781fe..4f78affa21 100644 --- a/.github/workflows/commands.yml +++ b/.github/workflows/commands.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Notify as seen - uses: peter-evans/create-or-update-comment@5adcb0bb0f9fb3f95ef05400558bdb3f329ee808 # tag=v2.1.0 + uses: peter-evans/create-or-update-comment@67dcc547d311b736a8e6c5c236542148a47adc3d # v2.1.1 with: token: ${{ secrets.JF_BOT_TOKEN }} comment-id: ${{ github.event.comment.id }} From ec93fdc10eabd0b5d3931cee2eb3d3db018d675d Mon Sep 17 00:00:00 2001 From: Alessandro Losi Date: Fri, 3 Feb 2023 10:41:47 +0000 Subject: [PATCH 061/222] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index 8e23e16735..2b722b95b6 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -698,7 +698,7 @@ "LabelffmpegPathHelp": "Il percorso dell'applicazione FFmpeg o della cartella che la contiene.", "LanNetworksHelp": "Elenco separato da virgola di indirizzi IP o voci IP / maschera di rete per reti che saranno considerate sulla rete locale quando si applicano restrizioni di larghezza di banda. Se impostato, tutti gli altri indirizzi IP verranno considerati nella rete esterna e saranno soggetti alle limitazioni della larghezza di banda esterna. Se lasciato vuoto, solo la sottorete del server viene considerata nella rete locale.", "Large": "Grande", - "LatestFromLibrary": "Ultime {0}", + "LatestFromLibrary": "{0} Recenti", "LearnHowYouCanContribute": "Scopri come puoi contribuire.", "LibraryAccessHelp": "Seleziona le librerie da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.", "List": "Lista", @@ -1513,7 +1513,7 @@ "MessageSent": "Messaggio inviato.", "LabelEnableGamepad": "Abilita il Gamepad", "TextSent": "Messaggio inviato.", - "EnableGamepadHelp": "Ascolta per ingresso da ogni controller collegato.", + "EnableGamepadHelp": "Attendi input da qualsiasi controller connesso. (Richiede: Modalità visualizzazione 'TV')", "Controls": "Controlli", "UseEpisodeImagesInNextUpHelp": "Le sezioni 'Prossimo' e 'Continua a Guardare' useranno le immagini dell'episodio come miniature al posto della miniatura principale dello spettacolo.", "UseEpisodeImagesInNextUp": "Usa le immagini dell'episodio nelle sezioni 'Prossimo' e 'Continua a guardare'", From c0950be82612db1ecf28775c51e414fd7053b42d Mon Sep 17 00:00:00 2001 From: Bas Date: Fri, 3 Feb 2023 18:26:20 +0000 Subject: [PATCH 062/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 324b3781ec..2dee33ba64 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1062,23 +1062,23 @@ "ValueMusicVideoCount": "{0} muziek video's", "ValueOneEpisode": "1 aflevering", "ValueOneMovie": "1 film", - "ValueOneMusicVideo": "1 muziek video", + "ValueOneMusicVideo": "1 muziekvideo", "ValueOneSeries": "1 serie", "ValueOneSong": "1 titel", "ValueSeconds": "{0} seconden", "ValueSongCount": "{0} titels", "ValueSpecialEpisodeName": "Speciaal - {0}", - "ValueTimeLimitMultiHour": "Tijdslimiet: {0} uren", + "ValueTimeLimitMultiHour": "Tijdslimiet: {0} uur", "ValueTimeLimitSingleHour": "Tijdslimiet: 1 uur", "Vertical": "Verticaal", - "ViewAlbum": "Bekijk album", - "ViewPlaybackInfo": "Bekijk afspelen info", - "Watched": "Bekeken", + "ViewAlbum": "Album bekijken", + "ViewPlaybackInfo": "Afspeelinfo bekijken", + "Watched": "Gekeken", "Wednesday": "Woensdag", "WelcomeToProject": "Welkom bij Jellyfin!", "WizardCompleted": "Dat is alles wat we nu nodig hebben. Jellyfin is begonnen met het verzamelen van informatie over uw media bibliotheek. Probeer sommige van onze apps en klik dan Finish om het Dashboard te bekijken.", "Writer": "Scenario", - "XmlDocumentAttributeListHelp": "Deze kenmerken worden toegepast op het hoofd-element van elk XML-antwoord.", + "XmlDocumentAttributeListHelp": "Deze kenmerken worden toegepast op het hoofdelement van elk XML-antwoord.", "XmlTvKidsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als programma's voor kinderen. Scheid meerdere met '|'.", "XmlTvMovieCategoriesHelp": "Programma's met deze categorieën worden weergegeven als films. Scheid meerdere met '|'.", "XmlTvNewsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als nieuwsprogramma's. Scheid meerdere met '|'.", @@ -1334,7 +1334,7 @@ "EnableBlurHashHelp": "Afbeeldingen die nog worden geladen, worden weergegeven met een unieke tijdelijke aanduiding.", "EnableBlurHash": "Schakel wazige placeholders voor plaatjes in", "Writers": "Scenario", - "ViewAlbumArtist": "Bekijk album artiest", + "ViewAlbumArtist": "Albumartiest bekijken", "MessageAddRepository": "Om een repository toe te voegen klik je op de knop naast de kop, en vul je benodigde informatie in.", "LabelRepositoryNameHelp": "Een zelf te configureren naam om deze repository te kunnen onderscheiden van andere repositories.", "LabelRepositoryName": "Repository naam", @@ -1421,8 +1421,8 @@ "Authorize": "Geef toestemming", "EnableFallbackFontHelp": "Aangepaste alternatieve lettertypen inschakelen. Dit kan foutief renderen van ondertiteling voorkomen.", "LabelFallbackFontPathHelp": "Geef een pad op waar de fallback lettertypen staan voor het renderen van ASS/SSA ondertitels. De maximum toegestane lettertype omvang is 20MB. Lichtgewicht en web-vriendelijke lettertypen zoals woff2 zijn aanbevolen.", - "EnableFallbackFont": "Fallback lettertypen inschakelen", - "LabelFallbackFontPath": "Fallback map pad:", + "EnableFallbackFont": "Terugvallettertypen inschakelen", + "LabelFallbackFontPath": "Terugvalpad lettertypemap:", "HeaderSelectFallbackFontPathHelp": "Blader of typ het pad naar de fallback lettertype map die gebruikt moet worden om ASS/SSA ondertitels te renderen.", "HeaderSelectFallbackFontPath": "Kies fallback lettertype pad", "OptionMaxActiveSessions": "Stel het maximum aantal gelijktijdige gebruikers sessies in.", @@ -1443,14 +1443,14 @@ "PreferFmp4HlsContainer": "Geef de voorkeur aan fMP4-HLS-mediacontainers", "LabelSyncPlayInfo": "SyncPlay-informatie", "LabelOriginalMediaInfo": "Informatie oorspronkelijke media", - "LabelRemuxingInfo": "Remuxing Informatie", - "LabelDirectStreamingInfo": "Direct Streaming Informatie", - "LabelTranscodingInfo": "Transcoderings informatie", + "LabelRemuxingInfo": "Remux-informatie", + "LabelDirectStreamingInfo": "Informatie direct streamen", + "LabelTranscodingInfo": "Transcoderingsinformatie", "LabelVideoInfo": "Video-informatie", "LabelAudioInfo": "Audio-informatie", "LabelPlaybackInfo": "Afspeelinformatie", "RemuxHelp2": "Remux gebruikt zeer weinig verwerkingskracht met een volledig verliesvrije mediakwaliteit.", - "RemuxHelp1": "De media bevindt zich in een niet-ondersteunde bestandscontainer (MKV, AVI, WMV, enz.), maar zowel de videostream als de audiostream zijn compatibel met het apparaat. De media zal direct zonder kwaliteitsverlies verpakt worden voordat ze naar het apparaat wordt gestuurd.", + "RemuxHelp1": "De media bevindt zich in een niet-ondersteunde bestandscontainer (MKV, AVI, WMV, etc.), maar zowel de videostream als de audiostream zijn compatibel met het apparaat. De media zal direct zonder kwaliteitsverlies verpakt worden voordat deze naar het apparaat wordt gestuurd.", "Remuxing": "Remuxing", "AspectRatioFill": "Vullen", "AspectRatioCover": "Hoes", @@ -1484,7 +1484,7 @@ "YoutubeDenied": "Video mag niet worden afgespeeld in een ingevoegde videospeler.", "YoutubeNotFound": "Video niet gevonden.", "YoutubePlaybackError": "De aangevraagde video kan niet worden afgespeeld.", - "YoutubeBadRequest": "Foute aanvraag.", + "YoutubeBadRequest": "Foutieve aanvraag.", "LabelH265Crf": "H.265 encodering CRF:", "LabelCreateHttpPortMapHelp": "Sta automatische port mapping toe om regels te maken voor HTTP verkeer naast HTTPS verkeer.", "LabelAutoDiscoveryTracingHelp": "Als dit aan staat, worden alle packets die op de auto discovery port binnenkomen gelogged.", From de4a2f3e61dcd003f48a8c60b7ce3c6c58321b48 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Fri, 3 Feb 2023 19:48:45 +0000 Subject: [PATCH 063/222] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 0581de9fe9..a214173f7b 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1542,7 +1542,7 @@ "SubtitleCodecNotSupported": "Titulkový kodek nie je podporovaný", "ContainerNotSupported": "Kontajner nie je podporovaný", "AudioCodecNotSupported": "Zvukový kodek nie je podporovaný", - "EnableGamepadHelp": "Počúvať na vstupe z pripojených herných ovládačov.", + "EnableGamepadHelp": "Počúvať na vstupe z akýchkoľvek pripojených ovládačov. (Vyžaduje: režim zobrazenia „TV“)", "LabelEnableGamepad": "Povoliť Gamepad", "Controls": "Ovládanie", "UseEpisodeImagesInNextUpHelp": "Sekcie 'Nasleduje' a 'Pokračovať v pozeraní' použijú obrázky epizód ako thumbnaily namiesto primárneho thumbnailu seriálu.", From 874929954718b20579aa6822cecb29a3bb5f0883 Mon Sep 17 00:00:00 2001 From: Bas Date: Sat, 4 Feb 2023 00:21:36 +0000 Subject: [PATCH 064/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 2dee33ba64..2fdce82585 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -859,7 +859,7 @@ "OptionIgnoreTranscodeByteRangeRequestsHelp": "Deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegeerd.", "OptionImdbRating": "Beoordeling IMDb", "OptionLikes": "Leuk", - "OptionMissingEpisode": "Ontbrekende Afleveringen", + "OptionMissingEpisode": "Ontbrekende afleveringen", "OptionNew": "Nieuw…", "OptionOnInterval": "Op interval", "OptionParentalRating": "Kijkwijzerclassificatie", From 129d54635e1e9d3db2871b281a0f1001c478d315 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 4 Feb 2023 08:19:37 +0000 Subject: [PATCH 065/222] Update dependency postcss-preset-env to v8 --- package-lock.json | 1174 ++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 731 insertions(+), 445 deletions(-) diff --git a/package-lock.json b/package-lock.json index f67f462cfc..af41ab125f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -96,7 +96,7 @@ "mini-css-extract-plugin": "2.7.2", "postcss": "8.4.21", "postcss-loader": "7.0.2", - "postcss-preset-env": "7.8.3", + "postcss-preset-env": "8.0.1", "postcss-scss": "4.0.6", "sass": "1.57.1", "sass-loader": "13.2.0", @@ -1937,268 +1937,444 @@ "node": ">=0.1.90" } }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.1.tgz", + "integrity": "sha512-SAAi5DpgJJWkfTvWSaqkgyIsTawa83hMwKrktkj6ra2h+q6ZN57vOGZ6ySHq6RSo+CbP64fA3aPChPBRDDUgtw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-1.0.0.tgz", + "integrity": "sha512-tgqtiV8sU/VaWYjOB3O7PWs7HR/MmOLl2kTYRW2qSsTSEniJq7xmyAYFB1LPpXvvQcE5u2ih2dK9fyc8BnrAGQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.0.1.tgz", + "integrity": "sha512-B9/8PmOtU6nBiibJg0glnNktQDZ3rZnGn/7UmDfrm2vMtrdlXO3p7ErE95N0up80IRk9YEtB5jyj/TmQ1WH3dw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.0.0" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.0.1.tgz", + "integrity": "sha512-sYD3H7ReR88S/4+V5VbKiBEUJF4FqvG+8aNJkxqoPAnbhFziDG22IDZc4+h+xA63SfgM+h15lq5OnLeCxQ9nPA==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz", + "integrity": "sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0" + } + }, "node_modules/@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-3.0.1.tgz", + "integrity": "sha512-dD8W98dOYNOH/yX4V4HXOhfCOnvVAg8TtsL+qCGNoKXuq5z2C/d026wGWgySgC8cajXXo/wNezS31Glj5GcqrA==", "dev": true, "dependencies": { "@csstools/selector-specificity": "^2.0.2", "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-2.0.1.tgz", + "integrity": "sha512-d7379loVBgIiKTQMOUduUctq3CWMeqNpGkLhzuejvuGyA+bWYT1p7n2GzmIwgXwP0CF8DIFtDgvrsvHn3i+tWw==", "dev": true, "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-2.0.1.tgz", + "integrity": "sha512-NRwT5g/L+lDkridDiHfjNGyHvdSHJOdcXPPZXZOpSfr/AwRxTJ+wsbKAzyBb1stalkr9KjICDr+ofpkk96r0Wg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-2.1.0.tgz", + "integrity": "sha512-B4uBMznejB5VM7rMB2C3KQdM3JwPAy3CxbI9DIMziCZzlaB1a59uV7NimuINndumgtzpVt++CdpY0XffURZ+eA==", "dev": true, "dependencies": { + "@csstools/color-helpers": "^1.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-2.0.1.tgz", + "integrity": "sha512-718aUIKZJDkbQrINOv6B0I70EZpTB9LzPykGVE/U3gnlXc4tjgvr6/r/G3Hopyn1D5R4BJYcMPI06tVzAgLSMQ==", "dev": true, "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-3.1.0.tgz", + "integrity": "sha512-MSt4kjWvIuv7GWGEV2WNkcOTLXdYpBRbW/2YF9MAmrKKYui65P/LpsLfSwCWq4vdwWH1HSxFi4Qp6bGCEAZ8ag==", "dev": true, "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-1.0.1.tgz", + "integrity": "sha512-eO9z2sMLddvlfFEW5Fxbjyd03zaO7cJafDurK4rCqyRt9P7aaWwha0LcSzoROlcZrw1NBV2JAp2vMKfPMQO1xw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-1.0.1.tgz", + "integrity": "sha512-x1ge74eCSvpBkDDWppl+7FuD2dL68WP+wwP2qvdUcKY17vJksz+XoE1ZRV38uJgS6FNUwC0AxrPW5gy3MxsDHQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-1.0.2.tgz", + "integrity": "sha512-nnKFywBqRMYjv5jyjSplD/nbAnboUEGFfdxKw1o34Y1nvycgqjQavhKkmxbORxroBBIDwC5y6SfgENcPPUcOxQ==", + "dev": true, + "dependencies": { + "@csstools/css-tokenizer": "^2.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-1.0.1.tgz", + "integrity": "sha512-V9yQqXdje6OfqDf6EL5iGOpi6N0OEczwYK83rql9UapQwFEryXlAehR5AqH8QqLYb6+y31wUXK6vMxCp0920Zg==", + "dev": true, + "dependencies": { + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0", + "@csstools/media-query-list-parser": "^2.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-2.0.1.tgz", + "integrity": "sha512-6C5yoF99zFb/C2Sa9Y5V0Y/2dnrjK5xe+h59L0LfdVhfanmJPrttwmfTua9etFRA1TGV46aoVMLEZ1NoHjWikg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-2.0.1.tgz", + "integrity": "sha512-TQT5g3JQ5gPXC239YuRK8jFceXF9d25ZvBkyjzBGGoW5st5sPXFVQS8OjYb9IJ/K3CdfK4528y483cgS2DJR/w==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-2.0.1.tgz", + "integrity": "sha512-MTj3w6G1TYW0k43sXjw25fY/S+LHXpFIym5NW0oO/hjHFzuz5Uwz93aUvdo/UrrFmxSQeQAYCxmq6NlH3Pf1Hw==", "dev": true, "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-2.1.0.tgz", + "integrity": "sha512-tRX1rinsXajZlc4WiU7s9Y6O9EdSHScT997zDsvDUjQ1oZL2nvnL6Bt0s9KyQZZTdC3lrG2PIdBqdOIWXSEPlQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.3" + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-2.0.1.tgz", + "integrity": "sha512-wf2dcsqSQlBHc4HMMqdXdxDx4uYuqH+L08kKj+pmT+743C06STcUEu7ORFFEnqGWlOJ1kmA5BJ3pQU0EdMuA+w==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-2.0.1.tgz", + "integrity": "sha512-VimD+M69GsZF/XssivjUwo6jXLgi86ar/gRSH7bautnCULSLxCr/HuY32N4rLRUr7qWF8oF/JTv06ceb66Q1jA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-2.2.0.tgz", + "integrity": "sha512-++RtufygqFaeheLH1g8Y2Oi/l+xSt61+c0lQGjrpLUW4hhFo77V4Zsshm0oof7lqnpVXPaizlU0SnXf+f4GA7A==", "dev": true, "dependencies": { + "@csstools/color-helpers": "^1.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-2.0.1.tgz", + "integrity": "sha512-uGmmVWGHozyWe6+I4w321fKUC034OB1OYW0ZP4ySHA23n+r9y93K+1yrmW+hThpSfApKhaWySoD4I71LLlFUYQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-2.0.1.tgz", + "integrity": "sha512-oJ9Xl29/yU8U7/pnMJRqAZd4YXNCfGEdcP4ywREuqm/xMqcgDNDppYRoCGDt40aaZQIEKBS79LytUDN/DHf0Ew==", "dev": true, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/@csstools/selector-specificity": { @@ -5048,18 +5224,19 @@ } }, "node_modules/css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-5.0.1.tgz", + "integrity": "sha512-uEWT+613bR0lxUAz7BDdk4yZJ1BfzIJ9rmyOFj+p53ZP8rm0BC3nA2YsyswyxjFZsrfRDxe2WERDfKiEZNSXag==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" + "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { "postcss": "^8.4" @@ -5087,18 +5264,21 @@ } }, "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-5.0.1.tgz", + "integrity": "sha512-zhsGCKVkBohliMlcsZsv5WF/i4FQ3pkVMtl4yYa7Qpv/PVQebTjh7cjMoT5grW+DBZzunmgHe6skdWawgCYuPQ==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" + "@csstools/selector-specificity": "^2.0.1", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { "postcss": "^8.4" @@ -5146,15 +5326,16 @@ } }, "node_modules/css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-8.0.1.tgz", + "integrity": "sha512-RPRyqJsk5KIjP2+WGhcGCaAJB8ojLbX1mVE8fG9127jQmnp1FNMfNMkERk/w6c4smgC/i5KxcY+Rtaa6/bMdKQ==", "dev": true, - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" - }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { "postcss": "^8.4" @@ -5251,9 +5432,9 @@ } }, "node_modules/cssdb": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.2.0.tgz", - "integrity": "sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.4.1.tgz", + "integrity": "sha512-0Q8NOMpXJ3iTDDbUv9grcmQAfdDx4qz+fN/+Md2FGbevT+6+bJNQ2LjB2YIUlLbpBTM32idU1Sb+tb/uGt6/XQ==", "dev": true, "funding": { "type": "opencollective", @@ -11102,22 +11283,22 @@ } }, "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.1.tgz", + "integrity": "sha512-XNVoIdu/Pskb5OhkM+iHicEVuASeqAjOTCaW8Wcbrd1UVwRukOJr5+zWzFjYxJj55Z/67ViVm9n/1hwF7MGByQ==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-calc": { @@ -11149,34 +11330,34 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-5.0.1.tgz", + "integrity": "sha512-Q9YDNQddKrl6YBs3229v+ckQINLyAaPfjJqG3jp5NUlP0UMm9+JeuLO1IMpeZy0l+rIE64y4OjUq0o+xhrnnrA==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.1.tgz", + "integrity": "sha512-1ZTJvmOZXTCsedKeY+Puqwx6AgoyB1KnzSD/CGDIl1NWvDfxi1jYky4R9konw2SAYw0SOeU33EU27ihE59Fp8Q==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", @@ -11187,22 +11368,22 @@ } }, "node_modules/postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-8.0.1.tgz", + "integrity": "sha512-bzZYxBDx/uUGW9HeldOA7J69GdymOZJNz3pG8av27YSgJt9dobl4l+hI/3KAosoRJml/iWceT97pJQj3O/dQDw==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-colormin": { @@ -11240,79 +11421,88 @@ } }, "node_modules/postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.1.tgz", + "integrity": "sha512-veQwzQkHgBkizxYCV/EBsiK8sFIJA0oQMQL9mpQ3gqFGc2dWlNWURHk4J44i9Q0dFeFCK81vV/Xpj7fyfNQKSA==", "dev": true, "dependencies": { - "postcss-value-parser": "^4.2.0" + "@csstools/cascade-layer-name-parser": "^1.0.0", + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0", + "@csstools/media-query-list-parser": "^2.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.3" + "postcss": "^8.4" } }, "node_modules/postcss-custom-properties": { - "version": "12.1.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", - "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.1.1.tgz", + "integrity": "sha512-FK4dBiHdzWOosLu3kEAHaYpfcrnMfVV4nP6PT6EFIfWXrtHH9LY8idfTYnEDpq/vgE33mr8ykhs7BjlgcT9agg==", "dev": true, "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.0", + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.1.tgz", + "integrity": "sha512-CPs3BSdQfKqdrJ3d+3In9ppBPA8GpRy4Bd50jU+BDD6WEZOx8TTIB9i67BfRc2AVEAbRZwDMesreF95598dwhw==", "dev": true, "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.0", + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0", "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.3" + "postcss": "^8.4" } }, "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-7.0.1.tgz", + "integrity": "sha512-VjiqVOTz1op7bsiw7qd5CjZ0txA5yJY/oo1wb3f37qdleRTZQ9hzhAtLDqXimn0ZKh9XbtYawc4pmVBnV+LyMA==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-discard-comments": { @@ -11364,65 +11554,58 @@ } }, "node_modules/postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-4.0.1.tgz", + "integrity": "sha512-XE+eKvX96E9cmldwKeRmK8AMxfQfuuHN9Yjerymau5i+fgC/vEY+B+Ke2vnEv4E8EXu8MKdLxi4DzmodusW19Q==", "dev": true, "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-8.0.1.tgz", + "integrity": "sha512-azd1NMrLBe5bfKyomui9AMcgIR2zzlqXCTnKjshNDSClmmSO5MauTyflJUqmIwjIhD16+FbPyGV8Nxsly87BjA==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { "postcss": "^8.4" } }, "node_modules/postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-7.0.1.tgz", + "integrity": "sha512-iSpk018Yqn0xwltFR7NHjagyt+e/6u8w50uEnGOcFOddLay5zQFjpJBg6euEZu7wY5WDq83DPpdO99eL+8Er8g==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { "postcss": "^8.4" @@ -11438,19 +11621,19 @@ } }, "node_modules/postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-4.0.1.tgz", + "integrity": "sha512-V5OuQGw4lBumPlwHWk/PRfMKjaq/LTGR4WDTemIMCaMevArVfCCA9wBJiL1VjDAd+rzuCIlkRoRvDsSiAaZ4Fg==", "dev": true, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-html": { @@ -11510,22 +11693,22 @@ } }, "node_modules/postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-5.0.1.tgz", + "integrity": "sha512-JnmN9Wo7WjlvM7fg00wzC4d/1kOqau+6v6hteLLqEyBjCuzoFZUU0Te3JphDyxc65RtPNsCujDwYbbs6+vYxCQ==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-initial": { @@ -11551,23 +11734,23 @@ } }, "node_modules/postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-5.0.1.tgz", + "integrity": "sha512-TuvrxsRIA3oWjjjI9T1ZEAolrtrLzYwYDw14GFivy0BkRqUTi4IithbM1aZkZGbAxV4lLwD6rL7MHhfDslUEzg==", "dev": true, "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-less": { @@ -11718,12 +11901,19 @@ } }, "node_modules/postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-6.0.1.tgz", + "integrity": "sha512-0LIzRgbT42n0q8txcM9SrLkYLjr1LTbRTy80bnKiYXY8tnYGdjkBymwb5XE87o4csW1z8dhKD1VRI6cHBQBQtw==", "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, "peerDependencies": { "postcss": "^8.4" @@ -12051,23 +12241,23 @@ } }, "node_modules/postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-11.1.0.tgz", + "integrity": "sha512-TVBCeKlUmMyX3sNeSg10yATb2XmAoosp0E1zdlpjrD+L2FrQPmrRTxlRFQh/R0Y4WlQ0butfDwRhzlYuj7y/TA==", "dev": true, "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-normalize-charset": { @@ -12205,9 +12395,9 @@ } }, "node_modules/postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", "dev": true, "funding": [ { @@ -12221,6 +12411,9 @@ ], "engines": { "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.2" } }, "node_modules/postcss-ordered-values": { @@ -12240,22 +12433,22 @@ } }, "node_modules/postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-4.0.1.tgz", + "integrity": "sha512-HQZ0qi/9iSYHW4w3ogNqVNr2J49DHJAl7r8O2p0Meip38jsdnRPgiDW7r/LlLrrMBMe3KHkvNtAV2UmRVxzLIg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-page-break": { @@ -12268,108 +12461,112 @@ } }, "node_modules/postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-8.0.1.tgz", + "integrity": "sha512-Ow2LedN8sL4pq8ubukO77phSVt4QyCm35ZGCYXKvRFayAwcpgB0sjNJglDoTuRdUL32q/ZC1VkPBo0AOEr4Uiw==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-preset-env": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", - "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-8.0.1.tgz", + "integrity": "sha512-IUbymw0JlUbyVG+I85963PNWgPp3KhnFa1sxU7M/2dGthxV8e297P0VV5W9XcyypoH4hirH2fp1c6fmqh6YnSg==", "dev": true, "dependencies": { - "@csstools/postcss-cascade-layers": "^1.1.1", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", + "@csstools/postcss-cascade-layers": "^3.0.0", + "@csstools/postcss-color-function": "^2.0.0", + "@csstools/postcss-font-format-keywords": "^2.0.0", + "@csstools/postcss-hwb-function": "^2.0.0", + "@csstools/postcss-ic-unit": "^2.0.0", + "@csstools/postcss-is-pseudo-class": "^3.0.0", + "@csstools/postcss-logical-float-and-clear": "^1.0.0", + "@csstools/postcss-logical-resize": "^1.0.0", + "@csstools/postcss-logical-viewport-units": "^1.0.0", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^1.0.0", + "@csstools/postcss-nested-calc": "^2.0.0", + "@csstools/postcss-normalize-display-values": "^2.0.0", + "@csstools/postcss-oklab-function": "^2.0.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", + "@csstools/postcss-scope-pseudo-class": "^2.0.0", + "@csstools/postcss-stepped-value-functions": "^2.0.0", + "@csstools/postcss-text-decoration-shorthand": "^2.0.0", + "@csstools/postcss-trigonometric-functions": "^2.0.0", + "@csstools/postcss-unset-value": "^2.0.0", "autoprefixer": "^10.4.13", "browserslist": "^4.21.4", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.1.0", - "postcss-attribute-case-insensitive": "^5.0.2", + "css-blank-pseudo": "^5.0.0", + "css-has-pseudo": "^5.0.0", + "css-prefers-color-scheme": "^8.0.0", + "cssdb": "^7.4.0", + "postcss-attribute-case-insensitive": "^6.0.0", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.10", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", + "postcss-color-functional-notation": "^5.0.0", + "postcss-color-hex-alpha": "^9.0.0", + "postcss-color-rebeccapurple": "^8.0.0", + "postcss-custom-media": "^9.1.0", + "postcss-custom-properties": "^13.1.0", + "postcss-custom-selectors": "^7.1.0", + "postcss-dir-pseudo-class": "^7.0.0", + "postcss-double-position-gradients": "^4.0.0", + "postcss-focus-visible": "^8.0.0", + "postcss-focus-within": "^7.0.0", "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", + "postcss-gap-properties": "^4.0.0", + "postcss-image-set-function": "^5.0.0", "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", + "postcss-lab-function": "^5.0.0", + "postcss-logical": "^6.0.0", "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.2.0", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", + "postcss-nesting": "^11.0.0", + "postcss-opacity-percentage": "^1.1.3", + "postcss-overflow-shorthand": "^4.0.0", "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-place": "^8.0.0", + "postcss-pseudo-class-any-link": "^8.0.0", "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", + "postcss-selector-not": "^7.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-8.0.1.tgz", + "integrity": "sha512-CYcLGofbGDhx6BmNFQGFH0cqW+qlXVk9PR4LZ8Y7g24m6TopYKt6FSwhMGAIyme6lQxgB32XMhpYRwZAcPnMXA==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-reduce-initial": { @@ -12558,22 +12755,22 @@ } }, "node_modules/postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-7.0.1.tgz", + "integrity": "sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^14 || ^16 || >=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4" } }, "node_modules/postcss-selector-parser": { @@ -20267,10 +20464,43 @@ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true }, + "@csstools/cascade-layer-name-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.1.tgz", + "integrity": "sha512-SAAi5DpgJJWkfTvWSaqkgyIsTawa83hMwKrktkj6ra2h+q6ZN57vOGZ6ySHq6RSo+CbP64fA3aPChPBRDDUgtw==", + "dev": true, + "requires": {} + }, + "@csstools/color-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-1.0.0.tgz", + "integrity": "sha512-tgqtiV8sU/VaWYjOB3O7PWs7HR/MmOLl2kTYRW2qSsTSEniJq7xmyAYFB1LPpXvvQcE5u2ih2dK9fyc8BnrAGQ==", + "dev": true + }, + "@csstools/css-parser-algorithms": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.0.1.tgz", + "integrity": "sha512-B9/8PmOtU6nBiibJg0glnNktQDZ3rZnGn/7UmDfrm2vMtrdlXO3p7ErE95N0up80IRk9YEtB5jyj/TmQ1WH3dw==", + "dev": true, + "requires": {} + }, + "@csstools/css-tokenizer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.0.1.tgz", + "integrity": "sha512-sYD3H7ReR88S/4+V5VbKiBEUJF4FqvG+8aNJkxqoPAnbhFziDG22IDZc4+h+xA63SfgM+h15lq5OnLeCxQ9nPA==", + "dev": true + }, + "@csstools/media-query-list-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz", + "integrity": "sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA==", + "dev": true, + "requires": {} + }, "@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-3.0.1.tgz", + "integrity": "sha512-dD8W98dOYNOH/yX4V4HXOhfCOnvVAg8TtsL+qCGNoKXuq5z2C/d026wGWgySgC8cajXXo/wNezS31Glj5GcqrA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.2", @@ -20278,121 +20508,168 @@ } }, "@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-2.0.1.tgz", + "integrity": "sha512-d7379loVBgIiKTQMOUduUctq3CWMeqNpGkLhzuejvuGyA+bWYT1p7n2GzmIwgXwP0CF8DIFtDgvrsvHn3i+tWw==", "dev": true, "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-2.0.1.tgz", + "integrity": "sha512-NRwT5g/L+lDkridDiHfjNGyHvdSHJOdcXPPZXZOpSfr/AwRxTJ+wsbKAzyBb1stalkr9KjICDr+ofpkk96r0Wg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-2.1.0.tgz", + "integrity": "sha512-B4uBMznejB5VM7rMB2C3KQdM3JwPAy3CxbI9DIMziCZzlaB1a59uV7NimuINndumgtzpVt++CdpY0XffURZ+eA==", "dev": true, "requires": { + "@csstools/color-helpers": "^1.0.0", "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-2.0.1.tgz", + "integrity": "sha512-718aUIKZJDkbQrINOv6B0I70EZpTB9LzPykGVE/U3gnlXc4tjgvr6/r/G3Hopyn1D5R4BJYcMPI06tVzAgLSMQ==", "dev": true, "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-3.1.0.tgz", + "integrity": "sha512-MSt4kjWvIuv7GWGEV2WNkcOTLXdYpBRbW/2YF9MAmrKKYui65P/LpsLfSwCWq4vdwWH1HSxFi4Qp6bGCEAZ8ag==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" } }, + "@csstools/postcss-logical-float-and-clear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-1.0.1.tgz", + "integrity": "sha512-eO9z2sMLddvlfFEW5Fxbjyd03zaO7cJafDurK4rCqyRt9P7aaWwha0LcSzoROlcZrw1NBV2JAp2vMKfPMQO1xw==", + "dev": true, + "requires": {} + }, + "@csstools/postcss-logical-resize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-1.0.1.tgz", + "integrity": "sha512-x1ge74eCSvpBkDDWppl+7FuD2dL68WP+wwP2qvdUcKY17vJksz+XoE1ZRV38uJgS6FNUwC0AxrPW5gy3MxsDHQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-logical-viewport-units": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-1.0.2.tgz", + "integrity": "sha512-nnKFywBqRMYjv5jyjSplD/nbAnboUEGFfdxKw1o34Y1nvycgqjQavhKkmxbORxroBBIDwC5y6SfgENcPPUcOxQ==", + "dev": true, + "requires": { + "@csstools/css-tokenizer": "^2.0.0" + } + }, + "@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-1.0.1.tgz", + "integrity": "sha512-V9yQqXdje6OfqDf6EL5iGOpi6N0OEczwYK83rql9UapQwFEryXlAehR5AqH8QqLYb6+y31wUXK6vMxCp0920Zg==", + "dev": true, + "requires": { + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0", + "@csstools/media-query-list-parser": "^2.0.0" + } + }, "@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-2.0.1.tgz", + "integrity": "sha512-6C5yoF99zFb/C2Sa9Y5V0Y/2dnrjK5xe+h59L0LfdVhfanmJPrttwmfTua9etFRA1TGV46aoVMLEZ1NoHjWikg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-2.0.1.tgz", + "integrity": "sha512-TQT5g3JQ5gPXC239YuRK8jFceXF9d25ZvBkyjzBGGoW5st5sPXFVQS8OjYb9IJ/K3CdfK4528y483cgS2DJR/w==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-2.0.1.tgz", + "integrity": "sha512-MTj3w6G1TYW0k43sXjw25fY/S+LHXpFIym5NW0oO/hjHFzuz5Uwz93aUvdo/UrrFmxSQeQAYCxmq6NlH3Pf1Hw==", "dev": true, "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-2.1.0.tgz", + "integrity": "sha512-tRX1rinsXajZlc4WiU7s9Y6O9EdSHScT997zDsvDUjQ1oZL2nvnL6Bt0s9KyQZZTdC3lrG2PIdBqdOIWXSEPlQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, + "@csstools/postcss-scope-pseudo-class": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-2.0.1.tgz", + "integrity": "sha512-wf2dcsqSQlBHc4HMMqdXdxDx4uYuqH+L08kKj+pmT+743C06STcUEu7ORFFEnqGWlOJ1kmA5BJ3pQU0EdMuA+w==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, "@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-2.0.1.tgz", + "integrity": "sha512-VimD+M69GsZF/XssivjUwo6jXLgi86ar/gRSH7bautnCULSLxCr/HuY32N4rLRUr7qWF8oF/JTv06ceb66Q1jA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-2.2.0.tgz", + "integrity": "sha512-++RtufygqFaeheLH1g8Y2Oi/l+xSt61+c0lQGjrpLUW4hhFo77V4Zsshm0oof7lqnpVXPaizlU0SnXf+f4GA7A==", "dev": true, "requires": { + "@csstools/color-helpers": "^1.0.0", "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-2.0.1.tgz", + "integrity": "sha512-uGmmVWGHozyWe6+I4w321fKUC034OB1OYW0ZP4ySHA23n+r9y93K+1yrmW+hThpSfApKhaWySoD4I71LLlFUYQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-2.0.1.tgz", + "integrity": "sha512-oJ9Xl29/yU8U7/pnMJRqAZd4YXNCfGEdcP4ywREuqm/xMqcgDNDppYRoCGDt40aaZQIEKBS79LytUDN/DHf0Ew==", "dev": true, "requires": {} }, @@ -22603,12 +22880,12 @@ "dev": true }, "css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-5.0.1.tgz", + "integrity": "sha512-uEWT+613bR0lxUAz7BDdk4yZJ1BfzIJ9rmyOFj+p53ZP8rm0BC3nA2YsyswyxjFZsrfRDxe2WERDfKiEZNSXag==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" } }, "css-declaration-sorter": { @@ -22625,12 +22902,14 @@ "dev": true }, "css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-5.0.1.tgz", + "integrity": "sha512-zhsGCKVkBohliMlcsZsv5WF/i4FQ3pkVMtl4yYa7Qpv/PVQebTjh7cjMoT5grW+DBZzunmgHe6skdWawgCYuPQ==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.9" + "@csstools/selector-specificity": "^2.0.1", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0" } }, "css-loader": { @@ -22661,9 +22940,9 @@ } }, "css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-8.0.1.tgz", + "integrity": "sha512-RPRyqJsk5KIjP2+WGhcGCaAJB8ojLbX1mVE8fG9127jQmnp1FNMfNMkERk/w6c4smgC/i5KxcY+Rtaa6/bMdKQ==", "dev": true, "requires": {} }, @@ -22735,9 +23014,9 @@ "dev": true }, "cssdb": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.2.0.tgz", - "integrity": "sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.4.1.tgz", + "integrity": "sha512-0Q8NOMpXJ3iTDDbUv9grcmQAfdDx4qz+fN/+Md2FGbevT+6+bJNQ2LjB2YIUlLbpBTM32idU1Sb+tb/uGt6/XQ==", "dev": true }, "cssesc": { @@ -27143,9 +27422,9 @@ } }, "postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.1.tgz", + "integrity": "sha512-XNVoIdu/Pskb5OhkM+iHicEVuASeqAjOTCaW8Wcbrd1UVwRukOJr5+zWzFjYxJj55Z/67ViVm9n/1hwF7MGByQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -27171,27 +27450,27 @@ } }, "postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-5.0.1.tgz", + "integrity": "sha512-Q9YDNQddKrl6YBs3229v+ckQINLyAaPfjJqG3jp5NUlP0UMm9+JeuLO1IMpeZy0l+rIE64y4OjUq0o+xhrnnrA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.1.tgz", + "integrity": "sha512-1ZTJvmOZXTCsedKeY+Puqwx6AgoyB1KnzSD/CGDIl1NWvDfxi1jYky4R9konw2SAYw0SOeU33EU27ihE59Fp8Q==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-8.0.1.tgz", + "integrity": "sha512-bzZYxBDx/uUGW9HeldOA7J69GdymOZJNz3pG8av27YSgJt9dobl4l+hI/3KAosoRJml/iWceT97pJQj3O/dQDw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -27220,36 +27499,45 @@ } }, "postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.1.tgz", + "integrity": "sha512-veQwzQkHgBkizxYCV/EBsiK8sFIJA0oQMQL9mpQ3gqFGc2dWlNWURHk4J44i9Q0dFeFCK81vV/Xpj7fyfNQKSA==", "dev": true, "requires": { - "postcss-value-parser": "^4.2.0" + "@csstools/cascade-layer-name-parser": "^1.0.0", + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0", + "@csstools/media-query-list-parser": "^2.0.0" } }, "postcss-custom-properties": { - "version": "12.1.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", - "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.1.1.tgz", + "integrity": "sha512-FK4dBiHdzWOosLu3kEAHaYpfcrnMfVV4nP6PT6EFIfWXrtHH9LY8idfTYnEDpq/vgE33mr8ykhs7BjlgcT9agg==", "dev": true, "requires": { + "@csstools/cascade-layer-name-parser": "^1.0.0", + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0", "postcss-value-parser": "^4.2.0" } }, "postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.1.tgz", + "integrity": "sha512-CPs3BSdQfKqdrJ3d+3In9ppBPA8GpRy4Bd50jU+BDD6WEZOx8TTIB9i67BfRc2AVEAbRZwDMesreF95598dwhw==", "dev": true, "requires": { + "@csstools/cascade-layer-name-parser": "^1.0.0", + "@csstools/css-parser-algorithms": "^2.0.0", + "@csstools/css-tokenizer": "^2.0.0", "postcss-selector-parser": "^6.0.4" } }, "postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-7.0.1.tgz", + "integrity": "sha512-VjiqVOTz1op7bsiw7qd5CjZ0txA5yJY/oo1wb3f37qdleRTZQ9hzhAtLDqXimn0ZKh9XbtYawc4pmVBnV+LyMA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -27284,40 +27572,31 @@ "requires": {} }, "postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-4.0.1.tgz", + "integrity": "sha512-XE+eKvX96E9cmldwKeRmK8AMxfQfuuHN9Yjerymau5i+fgC/vEY+B+Ke2vnEv4E8EXu8MKdLxi4DzmodusW19Q==", "dev": true, "requires": { + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" } }, "postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-8.0.1.tgz", + "integrity": "sha512-azd1NMrLBe5bfKyomui9AMcgIR2zzlqXCTnKjshNDSClmmSO5MauTyflJUqmIwjIhD16+FbPyGV8Nxsly87BjA==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" } }, "postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-7.0.1.tgz", + "integrity": "sha512-iSpk018Yqn0xwltFR7NHjagyt+e/6u8w50uEnGOcFOddLay5zQFjpJBg6euEZu7wY5WDq83DPpdO99eL+8Er8g==", "dev": true, "requires": { - "postcss-selector-parser": "^6.0.9" + "postcss-selector-parser": "^6.0.10" } }, "postcss-font-variant": { @@ -27328,9 +27607,9 @@ "requires": {} }, "postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-4.0.1.tgz", + "integrity": "sha512-V5OuQGw4lBumPlwHWk/PRfMKjaq/LTGR4WDTemIMCaMevArVfCCA9wBJiL1VjDAd+rzuCIlkRoRvDsSiAaZ4Fg==", "dev": true, "requires": {} }, @@ -27386,9 +27665,9 @@ } }, "postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-5.0.1.tgz", + "integrity": "sha512-JnmN9Wo7WjlvM7fg00wzC4d/1kOqau+6v6hteLLqEyBjCuzoFZUU0Te3JphDyxc65RtPNsCujDwYbbs6+vYxCQ==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -27411,12 +27690,12 @@ } }, "postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-5.0.1.tgz", + "integrity": "sha512-TuvrxsRIA3oWjjjI9T1ZEAolrtrLzYwYDw14GFivy0BkRqUTi4IithbM1aZkZGbAxV4lLwD6rL7MHhfDslUEzg==", "dev": true, "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", "postcss-value-parser": "^4.2.0" } }, @@ -27521,11 +27800,13 @@ } }, "postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-6.0.1.tgz", + "integrity": "sha512-0LIzRgbT42n0q8txcM9SrLkYLjr1LTbRTy80bnKiYXY8tnYGdjkBymwb5XE87o4csW1z8dhKD1VRI6cHBQBQtw==", "dev": true, - "requires": {} + "requires": { + "postcss-value-parser": "^4.2.0" + } }, "postcss-markdown": { "version": "0.36.0", @@ -27779,9 +28060,9 @@ } }, "postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-11.1.0.tgz", + "integrity": "sha512-TVBCeKlUmMyX3sNeSg10yATb2XmAoosp0E1zdlpjrD+L2FrQPmrRTxlRFQh/R0Y4WlQ0butfDwRhzlYuj7y/TA==", "dev": true, "requires": { "@csstools/selector-specificity": "^2.0.0", @@ -27870,10 +28151,11 @@ } }, "postcss-opacity-percentage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", - "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", + "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "dev": true, + "requires": {} }, "postcss-ordered-values": { "version": "5.1.3", @@ -27886,9 +28168,9 @@ } }, "postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-4.0.1.tgz", + "integrity": "sha512-HQZ0qi/9iSYHW4w3ogNqVNr2J49DHJAl7r8O2p0Meip38jsdnRPgiDW7r/LlLrrMBMe3KHkvNtAV2UmRVxzLIg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -27902,75 +28184,79 @@ "requires": {} }, "postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-8.0.1.tgz", + "integrity": "sha512-Ow2LedN8sL4pq8ubukO77phSVt4QyCm35ZGCYXKvRFayAwcpgB0sjNJglDoTuRdUL32q/ZC1VkPBo0AOEr4Uiw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-preset-env": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", - "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-8.0.1.tgz", + "integrity": "sha512-IUbymw0JlUbyVG+I85963PNWgPp3KhnFa1sxU7M/2dGthxV8e297P0VV5W9XcyypoH4hirH2fp1c6fmqh6YnSg==", "dev": true, "requires": { - "@csstools/postcss-cascade-layers": "^1.1.1", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", + "@csstools/postcss-cascade-layers": "^3.0.0", + "@csstools/postcss-color-function": "^2.0.0", + "@csstools/postcss-font-format-keywords": "^2.0.0", + "@csstools/postcss-hwb-function": "^2.0.0", + "@csstools/postcss-ic-unit": "^2.0.0", + "@csstools/postcss-is-pseudo-class": "^3.0.0", + "@csstools/postcss-logical-float-and-clear": "^1.0.0", + "@csstools/postcss-logical-resize": "^1.0.0", + "@csstools/postcss-logical-viewport-units": "^1.0.0", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^1.0.0", + "@csstools/postcss-nested-calc": "^2.0.0", + "@csstools/postcss-normalize-display-values": "^2.0.0", + "@csstools/postcss-oklab-function": "^2.0.0", + "@csstools/postcss-progressive-custom-properties": "^2.0.0", + "@csstools/postcss-scope-pseudo-class": "^2.0.0", + "@csstools/postcss-stepped-value-functions": "^2.0.0", + "@csstools/postcss-text-decoration-shorthand": "^2.0.0", + "@csstools/postcss-trigonometric-functions": "^2.0.0", + "@csstools/postcss-unset-value": "^2.0.0", "autoprefixer": "^10.4.13", "browserslist": "^4.21.4", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.1.0", - "postcss-attribute-case-insensitive": "^5.0.2", + "css-blank-pseudo": "^5.0.0", + "css-has-pseudo": "^5.0.0", + "css-prefers-color-scheme": "^8.0.0", + "cssdb": "^7.4.0", + "postcss-attribute-case-insensitive": "^6.0.0", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.10", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", + "postcss-color-functional-notation": "^5.0.0", + "postcss-color-hex-alpha": "^9.0.0", + "postcss-color-rebeccapurple": "^8.0.0", + "postcss-custom-media": "^9.1.0", + "postcss-custom-properties": "^13.1.0", + "postcss-custom-selectors": "^7.1.0", + "postcss-dir-pseudo-class": "^7.0.0", + "postcss-double-position-gradients": "^4.0.0", + "postcss-focus-visible": "^8.0.0", + "postcss-focus-within": "^7.0.0", "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", + "postcss-gap-properties": "^4.0.0", + "postcss-image-set-function": "^5.0.0", "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", + "postcss-lab-function": "^5.0.0", + "postcss-logical": "^6.0.0", "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.2.0", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", + "postcss-nesting": "^11.0.0", + "postcss-opacity-percentage": "^1.1.3", + "postcss-overflow-shorthand": "^4.0.0", "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-place": "^8.0.0", + "postcss-pseudo-class-any-link": "^8.0.0", "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", + "postcss-selector-not": "^7.0.0", "postcss-value-parser": "^4.2.0" } }, "postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-8.0.1.tgz", + "integrity": "sha512-CYcLGofbGDhx6BmNFQGFH0cqW+qlXVk9PR4LZ8Y7g24m6TopYKt6FSwhMGAIyme6lQxgB32XMhpYRwZAcPnMXA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" @@ -28102,9 +28388,9 @@ "requires": {} }, "postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-7.0.1.tgz", + "integrity": "sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.10" diff --git a/package.json b/package.json index e08e6a9b10..33c60f1173 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "mini-css-extract-plugin": "2.7.2", "postcss": "8.4.21", "postcss-loader": "7.0.2", - "postcss-preset-env": "7.8.3", + "postcss-preset-env": "8.0.1", "postcss-scss": "4.0.6", "sass": "1.57.1", "sass-loader": "13.2.0", From 6e66e224a90aed87eea43a83c9eeed779c12e29d Mon Sep 17 00:00:00 2001 From: Elias Frehner Date: Sat, 4 Feb 2023 13:45:52 +0000 Subject: [PATCH 066/222] Translated using Weblate (Alemannic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/gsw/ --- src/strings/gsw.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/gsw.json b/src/strings/gsw.json index 1284e1bb6d..57c9f50279 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -85,7 +85,7 @@ "Collections": "Sammlungen", "Favorites": "Favoriten", "Folders": "Ordner", - "Genres": "Genres", + "Genres": "Genre", "HeaderAlbumArtists": "Album-Künstler", "HeaderContinueWatching": "weiter schauen", "Movies": "Film", From c33dc8cd7a3f426917d963fea830000b18a93155 Mon Sep 17 00:00:00 2001 From: dvdandroid Date: Thu, 5 Jan 2023 11:08:02 +0100 Subject: [PATCH 067/222] Added toggle to show/hide remaining video time in video player Toggle applied to the remaining time label of the video player and added `-` as a prefix of the remaining time, both behaviours like in VLC. Toggle preference as user setting. --- src/controllers/playback/video/index.js | 31 +++++++++++++++++++++---- src/scripts/settings/userSettings.js | 14 +++++++++++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 866fcfe809..0890df8c8b 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -787,12 +787,18 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components nowPlayingPositionText.classList.add('hide'); } - const leftTicks = runtimeTicks - positionTicks; - if (leftTicks >= 0) { - updateTimeText(nowPlayingDurationText, leftTicks); - nowPlayingDurationText.classList.remove('hide'); + if (userSettings.enableVideoRemainingTime()) { + const leftTicks = runtimeTicks - positionTicks; + if (leftTicks >= 0) { + updateTimeText(nowPlayingDurationText, leftTicks); + nowPlayingDurationText.innerHTML = '-' + nowPlayingDurationText.innerHTML; + nowPlayingDurationText.classList.remove('hide'); + } else { + nowPlayingPositionText.classList.add('hide'); + } } else { - nowPlayingPositionText.classList.add('hide'); + updateTimeText(nowPlayingDurationText, runtimeTicks); + nowPlayingDurationText.classList.remove('hide'); } } } @@ -871,6 +877,19 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components elem.innerHTML = html; } + function nowPlayingDurationTextClick() { + if (userSettings.enableVideoRemainingTime()) { + userSettings.enableVideoRemainingTime(false); + } else { + userSettings.enableVideoRemainingTime(true); + } + // immediately update the text, without waiting for the next tick update or if the player is paused + const state = playbackManager.getPlayerState(currentPlayer); + const playState = state.PlayState; + const nowPlayingItem = state.NowPlayingItem; + updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playState.PlaybackStartTimeTicks, playState.PlaybackRate, playState.BufferedRanges || []); + } + function onSettingsButtonClick() { const btn = this; @@ -1330,6 +1349,8 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components nowPlayingPositionSlider.classList.add('focusable'); } + nowPlayingDurationText.addEventListener('click', nowPlayingDurationTextClick); + view.addEventListener('viewbeforeshow', function () { headerElement.classList.add('osdHeader'); setBackdropTransparency(TRANSPARENCY_LEVEL.Full); diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index d670bb0102..658236414f 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -169,6 +169,19 @@ export class UserSettings { return toBoolean(this.get('enableNextVideoInfoOverlay', false), true); } + /** + * Get or set 'Video Remaining/Total Time' state. + * @param {boolean|undefined} val - Flag to enable 'Video Remaining/Total Time' or undefined. + * @return {boolean} 'Video Remaining/Total Time' state. + */ + enableVideoRemainingTime(val) { + if (val !== undefined) { + return this.set('enableVideoRemainingTime', val.toString()); + } + + return toBoolean(this.get('enableVideoRemainingTime', false), true); + } + /** * Get or set 'Theme Songs' state. * @param {boolean|undefined} val - Flag to enable 'Theme Songs' or undefined. @@ -580,6 +593,7 @@ export const allowedAudioChannels = currentSettings.allowedAudioChannels.bind(cu export const preferFmp4HlsContainer = currentSettings.preferFmp4HlsContainer.bind(currentSettings); export const enableCinemaMode = currentSettings.enableCinemaMode.bind(currentSettings); export const enableNextVideoInfoOverlay = currentSettings.enableNextVideoInfoOverlay.bind(currentSettings); +export const enableVideoRemainingTime = currentSettings.enableVideoRemainingTime.bind(currentSettings); export const enableThemeSongs = currentSettings.enableThemeSongs.bind(currentSettings); export const enableThemeVideos = currentSettings.enableThemeVideos.bind(currentSettings); export const enableFastFadein = currentSettings.enableFastFadein.bind(currentSettings); From b1080b68c73f673498b5a2a686818bfb1f3e8510 Mon Sep 17 00:00:00 2001 From: Troja Date: Sat, 4 Feb 2023 21:18:31 +0000 Subject: [PATCH 068/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 70a2613cd9..77cd7523e6 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -16,7 +16,7 @@ "WizardCompleted": "Гэта ўсё, што нам трэба зараз. Jellyfin пачынае збіраць звесткі аб вашай медыятэцы. Азнаёмцеся пакуль з некаторымі нашымі праграмамі, а затым націсніце Гатова, каб праглядзець Инфопанель.", "ButtonSyncPlay": "SyncPlay", "Sync": "Сінхранізацыя", - "Playlists": "Плэйліст", + "Playlists": "Плэйлісты", "OptionBluray": "BD", "AddToCollection": "Дадаць у калекцыю", "AdditionalNotificationServices": "Праглядзіце каталог убудоў, каб усталяваць дадатковыя службы апавяшчэнняў.", @@ -28,5 +28,18 @@ "Small": "Маленькі", "Normal": "Нармальны", "Large": "Вялікі", - "ButtonCast": "Вяшчаць медыязмесціва на прыладу" + "ButtonCast": "Вяшчаць медыязмесціва на прыладу", + "Movies": "Фільмы", + "Genres": "Жанры", + "Folders": "Папкі", + "Photos": "Фатаграфіі", + "Songs": "Песні", + "Channels": "Каналы", + "Collections": "Калекцыя", + "Default": "Па змаўчанні", + "Favorites": "Любімыя", + "HeaderContinueWatching": "Працягнуць прагляд", + "Albums": "Альбомы", + "MusicVideos": "Музычныя кліпы", + "HeaderAlbumArtists": "Выканаўцы альбома" } From 5a55345ca9c7290afbfa0b3473b5d9ce92b6398a Mon Sep 17 00:00:00 2001 From: blob03 Date: Sat, 4 Feb 2023 19:20:27 +0000 Subject: [PATCH 069/222] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index f20e3f5642..ee100bb477 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1628,7 +1628,7 @@ "AllowEmbeddedSubtitlesAllowNoneOption": "Ne rien accepter", "AllowEmbeddedSubtitlesAllowAllOption": "Tout accepter", "AllowEmbeddedSubtitlesHelp": "Désactiver les sous-titres intégrés aux fichiers médias. Nécessite un rafraichissement complet de la librairie.", - "AllowEmbeddedSubtitles": "Désactiver les sous-titres intégrés", + "AllowEmbeddedSubtitles": "Désactiver les sous-titres intégrés :", "ShowParentImages": "Afficher les images de la série", "NextUpRewatching": "Revoir", "MixedMoviesShows": "Films et séries mélangés", From e775272ec06e8b5da42de4852302fefd8d12ba58 Mon Sep 17 00:00:00 2001 From: Pretendexxx Date: Sat, 4 Feb 2023 22:39:43 +0000 Subject: [PATCH 070/222] Translated using Weblate (Lithuanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lt/ --- src/strings/lt-lt.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index de12a12894..e4219a2f37 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -992,5 +992,17 @@ "EnableAutoCast": "Nustatyti kaip numatytąjį", "EnableBlurHash": "Įgalinti neryškias vaizdų rezervuotas vietas", "ButtonUseQuickConnect": "Naudoti Quick Connect", - "Casual": "Įprastas" + "Casual": "Įprastas", + "LabelSelectVersionToInstall": "Pasirinkite versiją, kurią norite įdiegti:", + "Season": "Sezonas", + "ShowAdvancedSettings": "Rodyti išplėstinius nustatymus", + "ButtonBackspace": "Atgalinis", + "Conductor": "Dirigentas", + "LabelSortBy": "Rūšiuoti pagal:", + "LabelServerHostHelp": "192.168.1.100:8096 arba https://manoserveris.lt", + "LabelServerName": "Serverio pavadinimas:", + "LabelSpecialSeasonsDisplayName": "Specialaus sezono rodomas pavadinimas:", + "ScanLibrary": "Skenuoti biblioteką", + "SaveChanges": "Išsaugoti pakeitimus", + "Series": "Serijos" } From eeb87f6d51558f735cb8fccbf45aae7eeca01d93 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sun, 5 Feb 2023 03:47:01 +0000 Subject: [PATCH 071/222] 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 14b2a9ca66..3410d0be96 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -255,7 +255,7 @@ "HeaderContinueWatching": "Xem Tiếp", "HeaderContinueListening": "Tiếp Tục Nghe", "HeaderCodecProfileHelp": "Hồ sơ mã hóa chỉ ra những kiểu mã hoá nhất định mà một thiết bị có thể phát. Nếu một nội dung không thể phát, nó sẽ được chuyển mã, thậm chí nếu kiểu mã hoá đó được cấu hình để phát lại trực tiếp.", - "HeaderContainerProfileHelp": "Hồ sơ định dạng chỉ ra những định dạng nhất định mà một thiết bị có thể phát. Nếu nội dung có định dạng không thể phát, nội dung sẽ được chuyển đổi định dạng, kể cả khi định dạng đó được cấu hình để phát lại trực tiếp.", + "HeaderContainerProfileHelp": "Cấu hình vùng chứa cho biết các giới hạn của thiết bị khi phát các định dạng cụ thể. Nếu giới hạn được áp dụng thì phương tiện sẽ được chuyển mã, ngay cả khi định dạng được định cấu hình để phát lại trực tiếp.", "HeaderContainerProfile": "Hồ Sơ Định Dạng", "HeaderConnectionFailure": "Kế Nối Thất Bại", "HeaderConnectToServer": "Kết Nối Đến Máy Chủ", From 82969f054df0d2f2a69d8b24e6888b10718d7e49 Mon Sep 17 00:00:00 2001 From: rushmash Date: Sun, 5 Feb 2023 08:09:31 +0000 Subject: [PATCH 072/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 77cd7523e6..2fb164191a 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -35,11 +35,13 @@ "Photos": "Фатаграфіі", "Songs": "Песні", "Channels": "Каналы", - "Collections": "Калекцыя", + "Collections": "Калекцыі", "Default": "Па змаўчанні", "Favorites": "Любімыя", "HeaderContinueWatching": "Працягнуць прагляд", "Albums": "Альбомы", "MusicVideos": "Музычныя кліпы", - "HeaderAlbumArtists": "Выканаўцы альбома" + "HeaderAlbumArtists": "Выканаўцы альбома", + "Books": "Кнігі", + "Artists": "Артысты" } From 69ad37888919a38bbf37ae343840d595faeeb007 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Feb 2023 10:07:33 +0000 Subject: [PATCH 073/222] Update Linters --- package-lock.json | 222 +++++++++++++++++++++++----------------------- package.json | 10 +-- 2 files changed, 116 insertions(+), 116 deletions(-) diff --git a/package-lock.json b/package-lock.json index f67f462cfc..2b6f98504d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,8 +68,8 @@ "@types/lodash-es": "4.17.6", "@types/react": "17.0.52", "@types/react-dom": "17.0.18", - "@typescript-eslint/eslint-plugin": "5.48.1", - "@typescript-eslint/parser": "5.48.1", + "@typescript-eslint/eslint-plugin": "5.49.0", + "@typescript-eslint/parser": "5.49.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -81,13 +81,13 @@ "css-loader": "6.7.3", "cssnano": "5.1.14", "es-check": "7.1.0", - "eslint": "8.32.0", + "eslint": "8.33.0", "eslint-plugin-compat": "4.0.2", "eslint-plugin-eslint-comments": "3.2.0", - "eslint-plugin-import": "2.27.4", + "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-promise": "6.1.1", - "eslint-plugin-react": "7.32.0", + "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-sonarjs": "0.18.0", "expose-loader": "4.0.0", @@ -2999,14 +2999,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz", - "integrity": "sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.49.0.tgz", + "integrity": "sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/type-utils": "5.48.1", - "@typescript-eslint/utils": "5.48.1", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/type-utils": "5.49.0", + "@typescript-eslint/utils": "5.49.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -3047,14 +3047,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.1.tgz", - "integrity": "sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.49.0.tgz", + "integrity": "sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/typescript-estree": "5.48.1", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/typescript-estree": "5.49.0", "debug": "^4.3.4" }, "engines": { @@ -3074,13 +3074,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz", - "integrity": "sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.49.0.tgz", + "integrity": "sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/visitor-keys": "5.48.1" + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/visitor-keys": "5.49.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3091,13 +3091,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz", - "integrity": "sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.49.0.tgz", + "integrity": "sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.48.1", - "@typescript-eslint/utils": "5.48.1", + "@typescript-eslint/typescript-estree": "5.49.0", + "@typescript-eslint/utils": "5.49.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3118,9 +3118,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz", - "integrity": "sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.49.0.tgz", + "integrity": "sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3131,13 +3131,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz", - "integrity": "sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.49.0.tgz", + "integrity": "sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/visitor-keys": "5.48.1", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/visitor-keys": "5.49.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3202,16 +3202,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz", - "integrity": "sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.49.0.tgz", + "integrity": "sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/typescript-estree": "5.48.1", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/typescript-estree": "5.49.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -3243,12 +3243,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz", - "integrity": "sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.49.0.tgz", + "integrity": "sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.48.1", + "@typescript-eslint/types": "5.49.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -6203,9 +6203,9 @@ } }, "node_modules/eslint": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", - "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.4.1", @@ -6439,14 +6439,14 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.27.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.4.tgz", - "integrity": "sha512-Z1jVt1EGKia1X9CnBCkpAOhWy8FgQ7OmJ/IblEkT82yrFU/xJaxwujaTzLWqigewwynRQ9mmHfX9MtAfhxm0sA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.0", + "array.prototype.flatmap": "^1.3.1", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.7", @@ -6554,9 +6554,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.0.tgz", - "integrity": "sha512-vSBi1+SrPiLZCGvxpiZIa28fMEUaMjXtCplrvxcIxGzmFiYdsXQDwInEjuv5/i/2CTTxbkS87tE8lsQ0Qxinbw==", + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dev": true, "dependencies": { "array-includes": "^3.1.6", @@ -6836,9 +6836,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -21081,14 +21081,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz", - "integrity": "sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.49.0.tgz", + "integrity": "sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/type-utils": "5.48.1", - "@typescript-eslint/utils": "5.48.1", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/type-utils": "5.49.0", + "@typescript-eslint/utils": "5.49.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -21109,53 +21109,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.1.tgz", - "integrity": "sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.49.0.tgz", + "integrity": "sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/typescript-estree": "5.48.1", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/typescript-estree": "5.49.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz", - "integrity": "sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.49.0.tgz", + "integrity": "sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/visitor-keys": "5.48.1" + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/visitor-keys": "5.49.0" } }, "@typescript-eslint/type-utils": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz", - "integrity": "sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.49.0.tgz", + "integrity": "sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.48.1", - "@typescript-eslint/utils": "5.48.1", + "@typescript-eslint/typescript-estree": "5.49.0", + "@typescript-eslint/utils": "5.49.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz", - "integrity": "sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.49.0.tgz", + "integrity": "sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz", - "integrity": "sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.49.0.tgz", + "integrity": "sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/visitor-keys": "5.48.1", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/visitor-keys": "5.49.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -21195,16 +21195,16 @@ } }, "@typescript-eslint/utils": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz", - "integrity": "sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.49.0.tgz", + "integrity": "sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.48.1", - "@typescript-eslint/types": "5.48.1", - "@typescript-eslint/typescript-estree": "5.48.1", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/typescript-estree": "5.49.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -21222,12 +21222,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz", - "integrity": "sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.49.0.tgz", + "integrity": "sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.48.1", + "@typescript-eslint/types": "5.49.0", "eslint-visitor-keys": "^3.3.0" }, "dependencies": { @@ -23479,9 +23479,9 @@ "dev": true }, "eslint": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", - "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "requires": { "@eslint/eslintrc": "^1.4.1", @@ -23625,9 +23625,9 @@ } }, "globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -23842,14 +23842,14 @@ } }, "eslint-plugin-import": { - "version": "2.27.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.4.tgz", - "integrity": "sha512-Z1jVt1EGKia1X9CnBCkpAOhWy8FgQ7OmJ/IblEkT82yrFU/xJaxwujaTzLWqigewwynRQ9mmHfX9MtAfhxm0sA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "requires": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.0", + "array.prototype.flatmap": "^1.3.1", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.7", @@ -23935,9 +23935,9 @@ "requires": {} }, "eslint-plugin-react": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.0.tgz", - "integrity": "sha512-vSBi1+SrPiLZCGvxpiZIa28fMEUaMjXtCplrvxcIxGzmFiYdsXQDwInEjuv5/i/2CTTxbkS87tE8lsQ0Qxinbw==", + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dev": true, "requires": { "array-includes": "^3.1.6", diff --git a/package.json b/package.json index e08e6a9b10..7d1b846a0f 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "@types/lodash-es": "4.17.6", "@types/react": "17.0.52", "@types/react-dom": "17.0.18", - "@typescript-eslint/eslint-plugin": "5.48.1", - "@typescript-eslint/parser": "5.48.1", + "@typescript-eslint/eslint-plugin": "5.49.0", + "@typescript-eslint/parser": "5.49.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -32,13 +32,13 @@ "css-loader": "6.7.3", "cssnano": "5.1.14", "es-check": "7.1.0", - "eslint": "8.32.0", + "eslint": "8.33.0", "eslint-plugin-compat": "4.0.2", "eslint-plugin-eslint-comments": "3.2.0", - "eslint-plugin-import": "2.27.4", + "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", "eslint-plugin-promise": "6.1.1", - "eslint-plugin-react": "7.32.0", + "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-sonarjs": "0.18.0", "expose-loader": "4.0.0", From bd8bb853d98a546103bc997ea7242dcbd164fa24 Mon Sep 17 00:00:00 2001 From: Troja Date: Sun, 5 Feb 2023 14:49:23 +0000 Subject: [PATCH 074/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 2fb164191a..dfabda8e97 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -43,5 +43,25 @@ "MusicVideos": "Музычныя кліпы", "HeaderAlbumArtists": "Выканаўцы альбома", "Books": "Кнігі", - "Artists": "Артысты" + "Artists": "Артысты", + "ThemeSong": "Тэматычная песня", + "Interview": "Інтэрв'ю", + "Blacklist": "Чорны спіс", + "Scene": "Сцэна", + "LabelZipCode": "Паштовы індэкс:", + "LabelUser": "Карыстальнік:", + "Trailer": "Трэйлер", + "BehindTheScenes": "За кулісамі", + "EnableEnhancedNvdecDecoderHelp": "Эксперыментальная рэалізацыя NVDEC, не ўключайце гэту опцыю, калі вы не сутыкнуліся з памылкамі дэкадавання.", + "LabelYear": "Год:", + "LatestFromLibrary": "Апошнія {0}", + "Lyricist": "Аўтар тэкстаў", + "ManageRecording": "Кіраванне запісам", + "Logo": "Лагатып", + "MapChannels": "Карта каналаў", + "DeletedScene": "Выдаленая сцэна", + "ThemeVideo": "Тэматычная песня", + "LabelVideoCodec": "Відэакодэк:", + "ManageLibrary": "Кіраваць бібліятэкай", + "EnableSplashScreen": "Уключыць застаўку" } From 41df90073ab63acdf2ae4f3be182b6a8c65e88d0 Mon Sep 17 00:00:00 2001 From: rushmash Date: Sun, 5 Feb 2023 13:40:36 +0000 Subject: [PATCH 075/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 44 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index dfabda8e97..56328d3d2f 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -15,7 +15,7 @@ "WelcomeToProject": "Пачатак працы ў Jellyfin!", "WizardCompleted": "Гэта ўсё, што нам трэба зараз. Jellyfin пачынае збіраць звесткі аб вашай медыятэцы. Азнаёмцеся пакуль з некаторымі нашымі праграмамі, а затым націсніце Гатова, каб праглядзець Инфопанель.", "ButtonSyncPlay": "SyncPlay", - "Sync": "Сінхранізацыя", + "Sync": "Сінхранізаваць", "Playlists": "Плэйлісты", "OptionBluray": "BD", "AddToCollection": "Дадаць у калекцыю", @@ -37,13 +37,13 @@ "Channels": "Каналы", "Collections": "Калекцыі", "Default": "Па змаўчанні", - "Favorites": "Любімыя", + "Favorites": "Абранае", "HeaderContinueWatching": "Працягнуць прагляд", "Albums": "Альбомы", "MusicVideos": "Музычныя кліпы", "HeaderAlbumArtists": "Выканаўцы альбома", "Books": "Кнігі", - "Artists": "Артысты", + "Artists": "Выканаўцы", "ThemeSong": "Тэматычная песня", "Interview": "Інтэрв'ю", "Blacklist": "Чорны спіс", @@ -63,5 +63,41 @@ "ThemeVideo": "Тэматычная песня", "LabelVideoCodec": "Відэакодэк:", "ManageLibrary": "Кіраваць бібліятэкай", - "EnableSplashScreen": "Уключыць застаўку" + "EnableSplashScreen": "Уключыць застаўку", + "AllowOnTheFlySubtitleExtraction": "Дазволіць выманне субтытраў на ляту", + "All": "Усе", + "AgeValue": "({0} гадоў)", + "AddToPlayQueue": "Дадаць у чаргу прайгравання", + "AllowHWTranscodingHelp": "Дазвольце цюнэру перакадаваць патокі на ляту. Гэта можа дапамагчы паменшыць перакадзіраванне, неабходнае серверу.", + "AllowFfmpegThrottlingHelp": "Калі перакадыроўка або рэмукс будзе дастаткова далёка ад бягучай пазіцыі прайгравання, прыпыніце працэс, каб ён спажываў менш рэсурсаў. Гэта найбольш карысна пры праглядзе без частага пошуку. Выключыце гэта, калі ўзнікнуць праблемы з прайграваннем.", + "AllowOnTheFlySubtitleExtractionHelp": "Убудаваныя субтытры можна атрымаць з відэа і даставіць кліентам у выглядзе звычайнага тэксту, каб прадухіліць перакадзіраванне відэа. У некаторых сістэмах гэта можа заняць шмат часу і прывесці да спынення прайгравання відэа падчас працэсу здабывання. Адключыце гэта, каб убудаваныя субтытры запісваліся пры перакадзіраванні відэа, калі яны не падтрымліваюцца кліенцкай прыладай.", + "AllowRemoteAccessHelp": "Калі не пазначыць, усе аддаленыя злучэнні будуць заблакіраваны.", + "AllowTonemappingHelp": "Адлюстраванне тонаў можа пераўтварыць дынамічны дыяпазон відэа з HDR у SDR, захоўваючы дэталі выявы і колеры, якія з'яўляюцца вельмі важнай інфармацыяй для прадстаўлення арыгінальнай сцэны. У цяперашні час працуе толькі з відэа HDR10 або HLG. Для гэтага патрабуецца адпаведнае асяроддзе выканання OpenCL або CUDA.", + "AlwaysPlaySubtitles": "Заўсёды граць", + "ApiKeysCaption": "Спіс уключаных на дадзены момант ключоў API", + "AroundTime": "Каля {0}", + "AllLibraries": "Усе бібліятэкі", + "AllLanguages": "Усе мовы", + "Shows": "Шоу", + "ValueSpecialEpisodeName": "Спецэпізод - {0}", + "AllEpisodes": "Усе эпізоды", + "AllChannels": "Усе каналы", + "AddToFavorites": "Дадаць у абранае", + "AllowedRemoteAddressesHelp": "Спіс IP-адрасоў або запісаў IP/сеткавай маскі, для сетак, якім будзе дазволена падключацца аддалена. Калі пакінуць пустым, будуць дазволены ўсе аддаленыя адрасы.", + "AllowRemoteAccess": "Дазволіць аддаленыя падключэнні да гэтага сервера", + "Arranger": "Аранжыроўшчык", + "AllComplexFormats": "Усе складаныя фарматы (ASS, SSA, VobSub, PGS, SUB, IDX, ...)", + "AlbumArtist": "Выканаўца альбома", + "Alerts": "Абвесткі", + "AirDate": "Дата эфіру", + "Aired": "Эфір", + "AnyLanguage": "Любая мова", + "Artist": "Выканаўца", + "AllowMediaConversionHelp": "Дайце або забараніце доступ да функцыі перакадзіравання мультымедыя.", + "AlwaysPlaySubtitlesHelp": "Субтытры, якія адпавядаюць параметрам мовы, будуць загружаны незалежна ад мовы гуку.", + "AllowMediaConversion": "Дазволіць перакадзіраванне мультымедыя", + "AllowFfmpegThrottling": "Абмежаваць перакадыроўкі", + "AddToPlaylist": "Дадаць у плэйліст", + "Album": "Альбом", + "Anytime": "У любы час" } From c9049aeefe05e84185109a83ef9e152fd57e8ce4 Mon Sep 17 00:00:00 2001 From: Clafter Date: Sun, 5 Feb 2023 10:29:10 +0000 Subject: [PATCH 076/222] 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 921846e87c..e874f5d420 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1510,7 +1510,7 @@ "Framerate": "Bildrate", "DirectPlayHelp": "Die Quelldatei ist vollständig mit diesem Client kompatibel, und die Sitzung empfängt die Datei ohne Änderungen.", "HeaderContinueReading": "Weiterlesen", - "EnableGamepadHelp": "Auf Eingaben aller verbundenen Controller hören.", + "EnableGamepadHelp": "Auf Eingaben aller verbundenen Controller hören. (Erfordert: 'TV'-Anzeigemodus)", "LabelEnableGamepad": "Gamepad aktivieren", "Controls": "Steuerung", "TextSent": "Text gesendet.", From d85e13dbaebbe0e9bcad7675e92ded1ccc7c6b1b Mon Sep 17 00:00:00 2001 From: Pretendexxx Date: Sun, 5 Feb 2023 10:43:18 +0000 Subject: [PATCH 077/222] Translated using Weblate (Lithuanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lt/ --- src/strings/lt-lt.json | 43 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index e4219a2f37..bc946ef9e4 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -440,7 +440,7 @@ "AnyLanguage": "Bet Kokia Kalba", "Artists": "Atlikėjai", "Audio": "Garsas", - "Auto": "Auto", + "Auto": "Automatinis", "Backdrop": "Fonas", "BirthDateValue": "Gimė: {0}", "BirthPlaceValue": "Gimimo vieta: {0}", @@ -564,7 +564,7 @@ "CopyStreamURLSuccess": "Srauto nuoroda nukopijuota.", "DefaultMetadataLangaugeDescription": "Tai yra numatytieji nustatymai. Jie gali būti keičiami kiekvienai bibliotekai atskirai.", "AllowOnTheFlySubtitleExtractionHelp": "Įterptus subtitrus iš vaizdo įrašo galima išgauti ir klientams pateikti paprastu tekstu, kad būtų išvengta vaizdo įrašų perkodavimo. Kai kuriose sistemose tai gali užtrukti ilgą laiką ir gali sustabdyti vaizdo atkūrimą subtitrų išgavimo metu. Išjunkite tai, kad subtitrus būtu įrašomi į vaizdo įrašą naudojant perkodavimą, jei jie yra nepalaikomi kliento įrenginio.", - "BurnSubtitlesHelp": "Nustato, ar perkoduojant vaizdo įrašą serveris turėtų įrašyti subtitrus, atsižvelgiant į subtitrų formatą. Išvengiant subtitrų įrašymo gali pagerinti serverio našumą. Pasirinkite „Auto“, jei norite įrašyti atvaizdais paremtus formatus (VOBSUB, PGS, SUB, IDX, ...) Ir tam tikrus ASS arba SSA subtitrus.", + "BurnSubtitlesHelp": "Nustato, ar perkoduojant vaizdo įrašą serveris turėtų įrašyti subtitrus, atsižvelgiant į subtitrų formatą. Išvengiant subtitrų įrašymo gali pagerinti serverio našumą. Pasirinkite „Automatinis“, jei norite įrašyti atvaizdais paremtus formatus (VOBSUB, PGS, SUB, IDX, ...) Ir tam tikrus ASS arba SSA subtitrus.", "DefaultSubtitlesHelp": "Subtitrai įkeliami atsižvelgiant į numatytuosius ir priverstinius žymenis įterptuose metaduomenyse. Kalbos nustatymai įvertinami, kai yra keletas variantų.", "HeaderDeleteProvider": "Ištrinti paslaugos teikėją", "HeaderDeleteTaskTrigger": "Ištrinti užduoties trigerį", @@ -687,7 +687,7 @@ "HeaderNextVideoPlayingInValue": "Kitas vaizdo įrašas rodomas už {0}", "HeaderPassword": "Slaptažodis", "HeaderPasswordReset": "Slaptažodžio nustatymas iš naujo", - "LabelProfileCodecs": "Kodekas:", + "LabelProfileCodecs": "Kodekai:", "HeaderProfileServerSettingsHelp": "Šios reikšmės kontroliuoja kaip serveris bus pateikiamas prie klientų.", "LabelMetadataSavers": "Metaduomenų saugotojai:", "LabelMetadataSaversHelp": "Išrinkite failo formatą metaduomenų saugojimui.", @@ -740,7 +740,7 @@ "LabelReasonForTranscoding": "Perkodavimo priežastis:", "LabelPreferredSubtitleLanguage": "Pageidautina titrų kalba:", "HeaderChannelAccess": "Prieiga prie kanalų", - "LabelProfileAudioCodecs": "Garso takelio kodekas:", + "LabelProfileAudioCodecs": "Garso takelio kodekai:", "HeaderLiveTvTunerSetup": "Imtuvo nustatymai", "FetchingData": "Gaunami papildomi duomenys", "FileReadError": "Nuskaitant failą įvyko klaida.", @@ -1004,5 +1004,38 @@ "LabelSpecialSeasonsDisplayName": "Specialaus sezono rodomas pavadinimas:", "ScanLibrary": "Skenuoti biblioteką", "SaveChanges": "Išsaugoti pakeitimus", - "Series": "Serijos" + "Series": "Serijos", + "SeriesDisplayOrderHelp": "Rūšiuokite epizodus pagal transliavimo datą, DVD tvarką arba absoliučią numeraciją.", + "TV": "TV", + "ValueSeconds": "{0} sekundės", + "MessagePasswordResetForUsers": "Iš naujo nustatyti šių naudotojų slaptažodžiai. Dabar jie gali prisijungti naudodami \"Easy PIN\" kodus, kurie buvo naudojami iš naujo nustatant slaptažodžius.", + "PasswordResetProviderHelp": "Pasirinkite slaptažodžio nustatymo iš naujo teikėją, kuris bus naudojamas, kai šis vartotojas paprašys iš naujo nustatyti slaptažodį.", + "LabelInNetworkSignInWithEasyPassword": "Įgalinti prisijungimą tinkle naudojant mano \"Easy PIN\" kodą", + "LabelInNetworkSignInWithEasyPasswordHelp": "Naudokite \"Easy PIN\" kodą, norėdami prisijungti iš vietiniame tinkle esančių klientų. Jūsų įprasto slaptažodžio reikės tik būnant ne namuose. Jei PIN kodas paliekamas tuščias, jums nereikės slaptažodžio namų tinkle.", + "LabelPleaseRestart": "Pakeitimai įsigalios rankiniu būdu perkrovus žiniatinklio klientą.", + "ValueTimeLimitMultiHour": "Laiko limitas: {0} valandų", + "TypeOptionPluralBook": "Knygos", + "LabelTheme": "Tema:", + "TypeOptionPluralMovie": "Filmai", + "MessageForgotPasswordInNetworkRequired": "Norėdami pradėti slaptažodžio atstatymo procesą, pabandykite dar kartą prisijungti prie savo namų tinklo.", + "ValueConditions": "Sąlygos: {0}", + "Controls": "Valdikliai", + "PasswordResetComplete": "Slaptažodis buvo iš naujo nustatytas.", + "MessageContactAdminToResetPassword": "Norėdami iš naujo nustatyti slaptažodį, kreipkitės į sistemos administratorių.", + "TypeOptionPluralEpisode": "Epizodai", + "TypeOptionPluralSeries": "TV laidos", + "Localization": "Lokalizacija", + "VideoAudio": "Vaizdo garso įrašas", + "Watched": "Žiūrėta", + "Whitelist": "Leidimų sąrašas", + "ErrorPlayerNotFound": "Nerastas grotuvas, skirtas prašomai medijai.", + "LabelInternetQuality": "Interneto kokybė:", + "LabelProfileVideoCodecs": "Vaizdo įrašo kodekai:", + "PasswordResetConfirmation": "Ar tikrai norite iš naujo nustatyti slaptažodį?", + "TypeOptionPluralMusicVideo": "Muzikos vaizdo įrašai", + "TypeOptionPluralSeason": "Sezonai", + "Unmute": "Išjungti nutildymą", + "ValueTimeLimitSingleHour": "Laiko limitas: 1 valanda", + "Logo": "Logotipas", + "LearnHowYouCanContribute": "Sužinokite, kaip galite prisidėti." } From ca32dbbe866075070effda8da6960299bc298d19 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 5 Feb 2023 14:28:34 +0000 Subject: [PATCH 078/222] 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 4c7ac53d0d..8e4ab190bd 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1327,7 +1327,7 @@ "ShowLess": "Показать меньше", "EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с уникальным заполнением.", "EnableBlurHash": "Включить размытые заполнители для изображений", - "ButtonSyncPlay": "SyncPlay", + "ButtonSyncPlay": "Совместный просмотр", "ButtonCast": "Трансляция на устройство", "TabRepositories": "Репозитории", "MessageNoGenresAvailable": "Включаются какие-либо поставщики метаданных для получения жанров из интернета.", From 7d45bd61f8ad8920a022f56cfa9de2c572f201f3 Mon Sep 17 00:00:00 2001 From: rushmash Date: Sun, 5 Feb 2023 19:43:32 +0000 Subject: [PATCH 079/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 96 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 86 insertions(+), 10 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 56328d3d2f..f6b91f4a64 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1,8 +1,8 @@ { "ButtonCancel": "Адмяніць", "ButtonOk": "ОК", - "ButtonQuickStartGuide": "Кіраўніцтва па запуску", - "ButtonSignOut": "Sign out", + "ButtonQuickStartGuide": "Даведнік па пачатку працы", + "ButtonSignOut": "Выйсці", "HeaderEasyPinCode": "Просты PIN-код", "HeaderPaths": "Шляхі", "HeaderTaskTriggers": "Трыгеры задачы", @@ -14,21 +14,21 @@ "UserProfilesIntro": "У Jellyfin існуе ўбудаваная падтрымка для карыстальніцкіх профіляў, дазваляючы кожнаму карыстальніку валодаць сваімі ўласнымі параметрамі адлюстравання, станам прайгравання і кіраваннем ўтрымання.", "WelcomeToProject": "Пачатак працы ў Jellyfin!", "WizardCompleted": "Гэта ўсё, што нам трэба зараз. Jellyfin пачынае збіраць звесткі аб вашай медыятэцы. Азнаёмцеся пакуль з некаторымі нашымі праграмамі, а затым націсніце Гатова, каб праглядзець Инфопанель.", - "ButtonSyncPlay": "SyncPlay", + "ButtonSyncPlay": "Функцыя SyncPlay", "Sync": "Сінхранізаваць", "Playlists": "Плэйлісты", "OptionBluray": "BD", "AddToCollection": "Дадаць у калекцыю", - "AdditionalNotificationServices": "Праглядзіце каталог убудоў, каб усталяваць дадатковыя службы апавяшчэнняў.", + "AdditionalNotificationServices": "Праглядзіце каталог плагінаў, каб усталяваць дадатковыя службы апавяшчэнняў.", "AddedOnValue": "Дададзены {0}", "Add": "Дадаць", "Actor": "Акцёр", - "AccessRestrictedTryAgainLater": "У цяперашні час доступ абмежаваны. Калі ласка паспрабуйце зноў пазней.", + "AccessRestrictedTryAgainLater": "На дадзены момант доступ абмежаваны. Калі ласка паспрабуйце зноў пазней.", "Absolute": "Абсалютны", "Small": "Маленькі", "Normal": "Нармальны", "Large": "Вялікі", - "ButtonCast": "Вяшчаць медыязмесціва на прыладу", + "ButtonCast": "Вяшчаць на прыладу", "Movies": "Фільмы", "Genres": "Жанры", "Folders": "Папкі", @@ -68,8 +68,8 @@ "All": "Усе", "AgeValue": "({0} гадоў)", "AddToPlayQueue": "Дадаць у чаргу прайгравання", - "AllowHWTranscodingHelp": "Дазвольце цюнэру перакадаваць патокі на ляту. Гэта можа дапамагчы паменшыць перакадзіраванне, неабходнае серверу.", - "AllowFfmpegThrottlingHelp": "Калі перакадыроўка або рэмукс будзе дастаткова далёка ад бягучай пазіцыі прайгравання, прыпыніце працэс, каб ён спажываў менш рэсурсаў. Гэта найбольш карысна пры праглядзе без частага пошуку. Выключыце гэта, калі ўзнікнуць праблемы з прайграваннем.", + "AllowHWTranscodingHelp": "Дазвольце цюнэру перакадзіраваць патокі на ляту. Гэта можа дапамагчы паменшыць перакадзіраванне, неабходнае серверу.", + "AllowFfmpegThrottlingHelp": "Калі перакадзіраванне або рэмукс будзе дастаткова далёка ад бягучай пазіцыі прайгравання, прыпыніце працэс, каб ён спажываў менш рэсурсаў. Гэта найбольш карысна пры праглядзе без частага пошуку. Выключыце гэта, калі ўзнікнуць праблемы з прайграваннем.", "AllowOnTheFlySubtitleExtractionHelp": "Убудаваныя субтытры можна атрымаць з відэа і даставіць кліентам у выглядзе звычайнага тэксту, каб прадухіліць перакадзіраванне відэа. У некаторых сістэмах гэта можа заняць шмат часу і прывесці да спынення прайгравання відэа падчас працэсу здабывання. Адключыце гэта, каб убудаваныя субтытры запісваліся пры перакадзіраванні відэа, калі яны не падтрымліваюцца кліенцкай прыладай.", "AllowRemoteAccessHelp": "Калі не пазначыць, усе аддаленыя злучэнні будуць заблакіраваны.", "AllowTonemappingHelp": "Адлюстраванне тонаў можа пераўтварыць дынамічны дыяпазон відэа з HDR у SDR, захоўваючы дэталі выявы і колеры, якія з'яўляюцца вельмі важнай інфармацыяй для прадстаўлення арыгінальнай сцэны. У цяперашні час працуе толькі з відэа HDR10 або HLG. Для гэтага патрабуецца адпаведнае асяроддзе выканання OpenCL або CUDA.", @@ -96,8 +96,84 @@ "AllowMediaConversionHelp": "Дайце або забараніце доступ да функцыі перакадзіравання мультымедыя.", "AlwaysPlaySubtitlesHelp": "Субтытры, якія адпавядаюць параметрам мовы, будуць загружаны незалежна ад мовы гуку.", "AllowMediaConversion": "Дазволіць перакадзіраванне мультымедыя", - "AllowFfmpegThrottling": "Абмежаваць перакадыроўкі", + "AllowFfmpegThrottling": "Абмежаваць перакадзіраванне", "AddToPlaylist": "Дадаць у плэйліст", "Album": "Альбом", - "Anytime": "У любы час" + "Anytime": "У любы час", + "ButtonBackspace": "Сьцерці", + "ButtonClose": "Зачыніць", + "ButtonSpace": "Прабел", + "AsManyAsPossible": "Як мага больш", + "ButtonPause": "Паўза", + "ButtonNextTrack": "Наступны трэк", + "Audio": "Аўдыё", + "ButtonGotIt": "Зразумела", + "ButtonSignIn": "Увайсці", + "ButtonArrowLeft": "Злева", + "ButtonResetEasyPassword": "Скінуць Easy PIN-код", + "Browse": "Праглядзіце", + "Auto": "Аўтаматычны", + "Ascending": "Нарастаючы", + "Banner": "Банэр", + "BirthDateValue": "Нарадзіўся: {0}", + "BirthPlaceValue": "Месца нараджэння: {0}", + "BookLibraryHelp": "Падтрымліваюцца аўдыё і падручнікі. Праглядзіце {0} даведнік па назвах кніг {1}.", + "BurnSubtitlesHelp": "Вызначце, ці павінен сервер запісваць субтытры непасрэдна на відеа кадры падчас перакадзіравання відэа. Пазбяганне гэтага значна палепшыць выкананне. Выберыце «Аўтаматычны», каб запісваць фарматы на аснове выяў (VobSub, PGS, SUB, IDX і г.д.) і пэўныя субтытры ASS або SSA.", + "ButtonArrowRight": "Справа", + "ButtonRename": "Перайменаваць", + "ButtonResume": "Працягнуць", + "ButtonScanAllLibraries": "Сканаваць усе бібліятэкі", + "ChangingMetadataImageSettingsNewContent": "Змены ў метаданых або наладах спампоўкі ілюстрацый будуць прымяняцца толькі да новага кантэнту, дададзенага ў вашу бібліятэку. Каб прымяніць змены да існуючых назваў, вам трэба будзе абнавіць іх метаданыя ўручную.", + "ButtonMore": "Больш", + "BoxRear": "Скрынка (задняя)", + "ButtonManualLogin": "Уваход уручную", + "AskAdminToCreateLibrary": "Папрасіце адміністратара стварыць бібліятэку.", + "Backdrops": "Заднікі", + "ButtonUseQuickConnect": "Выкарыстоўваць Quick Connect", + "Casual": "Паўсядзённы", + "ButtonChangeServer": "Змяніць сервер", + "AspectRatio": "Суадносіны бакоў", + "Box": "Скрынка", + "ButtonAddServer": "Дадаць сервер", + "ButtonBack": "Назад", + "ButtonOpen": "Адчыніць", + "ButtonRevoke": "Адклікаць", + "ButtonPreviousTrack": "Папярэдні трэк", + "ButtonSend": "Адправіць", + "ButtonPlayer": "Прайгравальнік", + "ButtonParentalControl": "Бацькоўскі кантроль", + "ButtonShutdown": "Адключыць", + "Backdrop": "Заднік", + "ButtonAddMediaLibrary": "Дадаць медыятэку", + "ButtonEditOtherUserPreferences": "Рэдагаваць профіль, выяву і асабістыя налады гэтага карыстальніка.", + "ButtonRefreshGuideData": "Абнавіць даныя даведніка", + "Authorize": "Аўтарызаваць", + "ButtonInfo": "Інфармацыя", + "ButtonAddScheduledTaskTrigger": "Дадаць трыгер", + "BirthLocation": "Месца нараджэння", + "ButtonAudioTracks": "Аўдыёдарожкі", + "AuthProviderHelp": "Выберыце пастаўшчыка аўтэнтыфікацыі, які будзе выкарыстоўвацца для аўтэнтыфікацыі пароля гэтага карыстальніка.", + "ButtonForgotPassword": "Забыліся на пароль", + "ButtonAddImage": "Дадаць выяву", + "ButtonSelectView": "Выберыце выгляд", + "ButtonRemove": "Выдаліць", + "ButtonLibraryAccess": "Доступ да бібліятэкі", + "ButtonFullscreen": "Поуны экран", + "ButtonActivate": "Актываваць", + "BoxSet": "Скрынкавы набор", + "ButtonAddUser": "Дадаць карыстальніка", + "ButtonSelectDirectory": "Выберыце дырэкторыю", + "ButtonExitApp": "Выйсці з прыкладання", + "ButtonSplit": "Расшчапіць", + "ButtonStart": "Пачаць", + "ButtonStop": "Спыніць", + "ButtonSubmit": "Падаць", + "ButtonTogglePlaylist": "Плэйліст", + "ButtonTrailer": "Трэйлер", + "ButtonUninstall": "Выдаліць", + "ButtonWebsite": "Вэб-сайт", + "Bwdif": "BWDIF", + "CancelRecording": "Адмяніць запіс", + "CancelSeries": "Адмяніць серыял", + "Categories": "Катэгорыі" } From 6d205a8f7d02f17d4479fc4bbbcb5ff561af9060 Mon Sep 17 00:00:00 2001 From: rushmash Date: Sun, 5 Feb 2023 21:25:15 +0000 Subject: [PATCH 080/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 1501 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 1500 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index f6b91f4a64..affd8f6aa1 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -175,5 +175,1504 @@ "Bwdif": "BWDIF", "CancelRecording": "Адмяніць запіс", "CancelSeries": "Адмяніць серыял", - "Categories": "Катэгорыі" + "Categories": "Катэгорыі", + "Sunday": "Нядзеля", + "LabelDefaultUser": "Карыстальнік па змаўчанні:", + "LabelDynamicExternalId": "{0} Ідэнтыфікатар:", + "LabelEnableHttps": "Уключыць HTTPS", + "LabelRepositoryUrl": "URL рэпазітара", + "HeaderChapterImages": "Выявы раздзела", + "LabelSyncPlaySettingsSkipToSync": "Уключыць SkipToSync", + "OptionExternallyDownloaded": "Знешняя загрузка", + "Unreleased": "Яшчэ не выпушчаны", + "Copied": "Скапіравана", + "LabelTagline": "Слоган:", + "Experimental": "Эксперыментальны", + "Filter": "Фільтраваць", + "HeaderActiveDevices": "Актыўныя прылады", + "HeaderActiveRecordings": "Актыўныя запісы", + "HeaderActivity": "актыўнасць", + "HeaderAddUser": "Дадаць карыстальніка", + "HeaderPinCodeReset": "Скінуць просты PIN-код", + "HeaderPortRanges": "Налады брандмаўэра і проксі", + "HeaderPreferredMetadataLanguage": "Пераважная мова метаданых", + "HeaderProfileInformation": "Інфармацыя аб профілі", + "HeaderRecordingOptions": "Параметры запісу", + "HeaderSelectPath": "Выберыце Шлях", + "HeaderSortOrder": "Парадак сартавання", + "HeaderSpecialEpisodeInfo": "Спецыяльная інфармацыя аб эпізодзе", + "HeaderStartNow": "Пачаць зараз", + "HeaderStopRecording": "Спыніць запіс", + "HeaderSyncPlaySettings": "Налады SyncPlay", + "HeaderThisUserIsCurrentlyDisabled": "Гэты карыстальнік зараз адключаны", + "Identify": "Ідэнтыфікаваць", + "IgnoreDts": "Ігнараваць DTS (метка часу дэкадавання)", + "InstantMix": "Імгненная сумесь", + "Items": "Прадметы", + "LabelAudioBitrate": "Бітрэйт аўдыя:", + "LabelAutomaticallyAddToCollectionHelp": "Калі хаця б 2 фільмы маюць аднолькавую назву калекцыі, яны будуць аўтаматычна дададзены ў калекцыю.", + "LabelBirthDate": "Дата нараджэння:", + "LabelBitrate": "Бітрэйт:", + "LabelCollection": "Калекцыя:", + "LabelCurrentPassword": "Актуальны пароль:", + "LabelCustomCertificatePath": "Шлях карыстальніцкага сертыфіката SSL:", + "LabelCustomCss": "Карыстальніцкі код CSS:", + "LabelCustomCssHelp": "Прымяніце свой карыстальніцкі код CSS для тэматызавання/брэндынгу на вэб-інтэрфейсе.", + "LabelDateAdded": "Дата дадання:", + "LabelDay": "Дзень тыдня:", + "LabelDeathDate": "Дата смерці:", + "LabelSize": "Памер:", + "LabelSkipBackLength": "Даўжыня спіны:", + "LabelSyncPlayPlaybackDiff": "Розніца ў часе прайгравання:", + "LabelTrackNumber": "Нумар трэка:", + "LabelTranscodes": "Перакадзіруе:", + "LabelTriggerType": "Тып трыгера:", + "LabelMetadataPath": "Шлях метаданых:", + "LabelVersionInstalled": "{0} усталяваны", + "LabelWeb": "Інтэрнэт:", + "Localization": "Лакалізацыя", + "MediaInfoBitDepth": "Разрадная глыбіня", + "MediaInfoCodecTag": "Тэг кодэка", + "MediaInfoFramerate": "Частата кадраў", + "MediaInfoProfile": "Профіль", + "MessageAlreadyInstalled": "Гэтая версія ўжо ўстаноўлена.", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Вы ўпэўнены, што жадаеце выдаліць гэту медыяпапку?", + "LabelModelUrl": "URL мадэлі:", + "MoveLeft": "Рух налева", + "Mute": "Адключыць гук", + "OptionCustomUsers": "Прыстасаваныя", + "OptionDateAdded": "Дата дадання", + "OptionMissingEpisode": "Адсутныя эпізоды", + "OptionPremiereDate": "Дата прэм'еры", + "OptionResElement": "элемент «res».", + "OptionWeekdays": "будні", + "PasswordResetComplete": "Пароль быў скінуты.", + "PictureInPicture": "Карцінка ў карцінцы", + "PinCodeResetConfirmation": "Вы ўпэўнены, што жадаеце скінуць Easy PIN-код?", + "PosterCard": "Плакатная картка", + "Preview": "Папярэдні прагляд", + "PreviousChapter": "Папярэдняя глава", + "Primary": "Першасны", + "QuickConnectAuthorizeFail": "Невядомы код хуткага злучэння", + "Recordings": "Запісы", + "Ended": "Скончылася", + "RememberSubtitleSelections": "Усталюйце дарожку субтытраў на аснове папярэдняга элемента", + "RemoveFromPlaylist": "Выдаліць з плэйліста", + "ChannelNameOnly": "Толькі канал {0}", + "Composer": "Кампазітар", + "CopyFailed": "Не атрымалася скапіяваць", + "EnableFasterAnimations": "Больш хуткія анімацыі", + "EnableEnhancedNvdecDecoder": "Уключыць пашыраны дэкодэр NVDEC", + "LabelPersonRole": "роля:", + "LabelPlaceOfBirth": "Месца нараджэння:", + "LabelPlayer": "Гулец:", + "LabelProfileAudioCodecs": "Аўдыякодэкі:", + "LabelProfileCodecsHelp": "Аддзяляюцца коскамі. Гэта можна пакінуць пустым, каб прымяніць да ўсіх кодэкаў.", + "Down": "Уніз", + "AudioBitrateNotSupported": "Бітрэйт аўдыя не падтрымліваецца", + "LabelTextColor": "Колер тэксту:", + "Bold": "Тлусты", + "Played": "Гуляў", + "SearchForSubtitles": "Пошук субтытраў", + "TabDirectPlay": "Прамое прайграванне", + "TitleHardwareAcceleration": "Апаратнае паскарэнне", + "ValueCodec": "Кодэк: {0}", + "ValueMinutes": "{0} хв", + "ValueOneSeries": "1 серыя", + "ValueSeriesCount": "{0} серыя", + "Writer": "Пісьменнік", + "HeaderSelectFallbackFontPath": "Выберыце шлях да папкі рэзервовага шрыфта", + "LabelFallbackFontPath": "Шлях да папкі рэзервовага шрыфта:", + "AspectRatioFill": "Запоўніць", + "LabelRemuxingInfo": "Інфармацыя аб рэмуксаванні", + "EnableGamepadHelp": "Праслухоўванне ўводу ад любых падлучаных кантролераў. (Патрабуецца: Рэжым адлюстравання \"ТБ\")", + "Digital": "Лічбавы", + "Director": "дырэктар", + "Directors": "Рэжысёры", + "Disconnect": "Адключыцца", + "Display": "Дысплей", + "EnableBlurHashHelp": "Выявы, якія яшчэ загружаюцца, будуць адлюстроўвацца з унікальным запаўняльнікам.", + "EnableFasterAnimationsHelp": "Выкарыстоўвайце больш хуткія анімацыі і пераходы.", + "ErrorDefault": "Адбылася памылка апрацоўкі запыту. Калі ласка паспрабуйце зноў пазней.", + "EveryXHours": "Кожныя {0} гадз", + "HeaderAppearsOn": "З'яўляецца на", + "Extras": "Дадаткова", + "FastForward": "Перамотка наперад", + "Favorite": "Любімая", + "Framerate": "Частата кадраў", + "HeaderCustomDlnaProfiles": "Карыстальніцкія профілі", + "HeaderDeleteItems": "Выдаліць элементы", + "HeaderSendMessage": "Адправіць паведамленне", + "HeaderStatus": "Статус", + "LabelCorruptedFrames": "Пашкоджаныя кадры:", + "LabelRequireHttps": "Патрабаваць HTTPS", + "LabelVaapiDevice": "Прылада VA-API:", + "ExtraLarge": "Вельмі вялікі", + "HeaderYears": "гады", + "LabelValue": "значэнне:", + "Image": "Малюнак", + "LastSeen": "Апошні раз бачылі {0}", + "List": "Спіс", + "Live": "жыць", + "MediaInfoAnamorphic": "Анаморфны", + "LabelAudioChannels": "Аўдыёканалы:", + "MediaInfoLayout": "Макет", + "MediaInfoSampleRate": "Частата выбаркі", + "MediaInfoSize": "Памер", + "MediaInfoTitle": "Назва", + "Art": "Clearart", + "InstallingPackage": "Усталяванне {0} (версія {1})", + "MessageConfirmRecordingCancellation": "Адмяніць запіс?", + "LabelStereoDownmixAlgorithm": "Алгарытм стэрэа мікшавання", + "LabelEnableAutomaticPortMap": "Уключыць аўтаматычнае адлюстраванне партоў", + "LabelEnableBlastAliveMessages": "Выбух жывых паведамленняў", + "LabelEnableDlnaClientDiscoveryInterval": "Інтэрвал выяўлення кліента:", + "LabelffmpegPath": "Шлях FFmpeg:", + "LabelIdentificationFieldHelp": "Падрадок або рэгулярны выраз без уліку рэгістра.", + "LabelMaxMuxingQueueSize": "Максімальны памер чаргі мультыплікацыі:", + "LabelMaxResumePercentage": "Максімальны працэнт рэзюмэ:", + "LabelMaxResumePercentageHelp": "Лічыцца, што загалоўкі прайграныя цалкам, калі яны былі спынены пасля гэтага часу.", + "LabelMessageTitle": "Назва паведамлення:", + "LabelMetadata": "Метададзеныя:", + "LabelMetadataPathHelp": "Укажыце карыстацкае месцазнаходжанне для спампаваных ілюстрацый і метададзеных.", + "LabelMetadataReaders": "Счытвальнікі метададзеных:", + "LabelMetadataSavers": "Захавальнікі метаданых:", + "LabelOptionalNetworkPath": "Агульная сеткавая папка:", + "LabelParentNumber": "Бацькоўскі нумар:", + "LabelPasswordConfirm": "Пароль (пацвердзіць):", + "LabelPlaylist": "Плэйліст:", + "LabelPlayMethod": "Спосаб гульні:", + "LabelProfileVideoCodecs": "Відэа кодэкі:", + "LabelPublicHttpsPort": "Нумар публічнага порта HTTPS:", + "Controls": "Элементы кіравання", + "LabelRefreshMode": "Рэжым абнаўлення:", + "LabelSendNotificationToUsers": "Адправіць апавяшчэнне на:", + "LabelSkipIfAudioTrackPresent": "Прапусціць, калі гукавая дарожка па змаўчанні адпавядае мове спампоўкі", + "LabelSkipIfGraphicalSubsPresent": "Прапусціць, калі відэа ўжо змяшчае ўбудаваныя субтытры", + "LabelSkipIfGraphicalSubsPresentHelp": "Захаванне тэкставых версій субтытраў прывядзе да больш эфектыўнай дастаўкі і знізіць верагоднасць перакадзіравання відэа.", + "LabelSortBy": "Сартаваць па:", + "LabelSortName": "Назва сартавання:", + "LabelSortTitle": "Назва сартавання:", + "LabelSource": "Крыніца:", + "ClearQueue": "Ачысціць чаргу", + "Conductor": "Дырыжор", + "ConfigureDateAdded": "Наладзьце спосаб вызначэння метаданых для «Дата дадання» ў «Панэль кіравання > Бібліятэкі > Налады NFO».", + "ConfirmDeleteImage": "Выдаліць выяву?", + "ConfirmDeleteItem": "Пры выдаленні гэтага элемента ён будзе выдалены як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", + "ConfirmDeleteItems": "Выдаленне гэтых элементаў прывядзе да іх выдалення як з файлавай сістэмы, так і з медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", + "ConfirmEndPlayerSession": "Вы хочаце адключыць Jellyfin на {0}?", + "Console": "Кансоль", + "Copy": "Копія", + "Cursive": "Скорапіс", + "CustomDlnaProfilesHelp": "Стварыце карыстальніцкі профіль для новай прылады або перавызначце сістэмны профіль.", + "DefaultMetadataLangaugeDescription": "Гэта вашы значэнні па змаўчанні, і іх можна наладзіць для кожнай бібліятэкі.", + "DefaultSubtitlesHelp": "Субтытры загружаюцца на аснове стандартных і прымусовых сцягоў ва ўбудаваных метададзеных. Моўныя перавагі ўлічваюцца, калі даступна некалькі варыянтаў.", + "LabelSyncPlayNewGroup": "Новая група", + "LabelSyncPlayNewGroupDescription": "Стварыце новую групу", + "LabelSyncPlayResumePlayback": "Узнавіць лакальнае прайграванне", + "LabelSyncPlayTimeSyncOffset": "Зрушэнне часу:", + "LabelSyncPlaySettingsDescription": "Змяніць налады SyncPlay", + "LabelSyncPlaySettingsExtraTimeOffset": "Дадатковы час:", + "LabelSyncPlaySettingsSyncCorrectionHelp": "Уключыце актыўную сінхранізацыю прайгравання шляхам паскарэння мультымедыя або перамяшчэння да меркаванай пазіцыі. Адключыце гэта ў выпадку моцнага заікання.", + "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "Мінімальная затрымка прайгравання (у мс), пасля якой SpeedToSync спрабуе выправіць пазіцыю прайгравання.", + "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "Максімальная затрымка прайгравання (у мс), пасля якой SkipToSync выкарыстоўваецца замест SpeedToSync.", + "DeinterlaceMethodHelp": "Выберыце метад дэінтэрлейсінгу для выкарыстання пры праграмным перакадзіраванні празрадковага змесціва. Калі ўключана апаратнае паскарэнне, якое падтрымлівае апаратнае дэінтэрлейсінг, замест гэтай налады будзе выкарыстоўвацца апаратны дэінтэрлейс.", + "DeviceAccessHelp": "Гэта адносіцца толькі да прылад, якія могуць быць адназначна ідэнтыфікаваныя і не перашкаджаюць доступу ў браўзеры. Фільтраванне доступу карыстальнікаў да прылад не дазволіць ім выкарыстоўваць новыя прылады, пакуль яны не будуць зацверджаны тут.", + "DirectPlaying": "Прамая гульня", + "DirectPlayHelp": "Зыходны файл цалкам сумяшчальны з гэтым кліентам, і сеанс атрымлівае файл без мадыфікацый.", + "LabelTag": "Тэг:", + "LabelTextBackgroundColor": "Колер фону тэксту:", + "LabelTextWeight": "Вага тэксту:", + "LabelTime": "Час:", + "DirectStreamHelp1": "Відэапаток сумяшчальны з прыладай, але мае несумяшчальны аўдыяфармат (DTS, Dolby TrueHD і г.д.) або колькасць аўдыяканалаў. Відэапаток будзе перапакоўвацца без страт на хаду перад адпраўкай на прыладу. Будзе перакадзіраваны толькі аўдыяплынь.", + "Disc": "Дыск", + "DisplayInMyMedia": "Паказаць на галоўным экране", + "DisplayMissingEpisodesWithinSeasonsHelp": "Гэта таксама павінна быць уключана для ТБ-бібліятэк у канфігурацыі сервера.", + "DisplayModeHelp": "Выберыце патрэбны стыль раскладкі інтэрфейсу.", + "DoNotRecord": "Не запісваць", + "Download": "Спампаваць", + "DownloadsValue": "Спамповак: {0}", + "EasyPasswordHelp": "Ваш просты PIN-код выкарыстоўваецца для пазасеткавага доступу на падтрымоўваных кліентах, а таксама можа выкарыстоўвацца для лёгкага ўваходу ў сетку.", + "Edit": "Рэдагаваць", + "EnableCinemaMode": "Рэжым кіно", + "EnableColorCodedBackgrounds": "Каляровыя фоны", + "EnableDecodingColorDepth10Hevc": "Уключыць 10-бітнае апаратнае дэкадаванне для HEVC", + "EnableDecodingColorDepth10Vp9": "Уключыць 10-бітнае апаратнае дэкадаванне для VP9", + "EnableExternalVideoPlayers": "Знешнія відэаплэеры", + "EnableExternalVideoPlayersHelp": "Меню вонкавага прайгравальніка будзе паказана пры запуску прайгравання відэа.", + "EnablePhotosHelp": "Выявы будуць выяўляцца і адлюстроўвацца разам з іншымі медыяфайламі.", + "EnableRewatchingNextUp": "Уключыць паўторны прагляд у наступным", + "EnableRewatchingNextUpHelp": "Уключыць паказ ужо прагледжаных серый у раздзелах \"Далей\".", + "EnableStreamLoopingHelp": "Уключыце гэта, калі жывыя трансляцыі ўтрымліваюць толькі некалькі секунд даных і іх трэба пастаянна запытваць. Уключэнне гэтага, калі гэта не патрэбна, можа выклікаць праблемы.", + "EnableThemeSongsHelp": "Прайгравайце тэматычныя песні ў фонавым рэжыме падчас прагляду бібліятэкі.", + "EnableThemeVideosHelp": "Прайграванне тэматычных відэа ў фонавым рэжыме падчас прагляду бібліятэкі.", + "Engineer": "Гукарэжысёр", + "Episode": "эпізод", + "Episodes": "Эпізоды", + "ErrorAddingListingsToSchedulesDirect": "Пры даданні раскладу ў ваш уліковы запіс Schedules Direct адбылася памылка. Schedules Direct дазваляе толькі абмежаваную колькасць складаў на ўліковы запіс. Магчыма, вам спатрэбіцца ўвайсці на вэб-сайт Schedules Direct і выдаліць іншыя спісы са свайго ўліковага запісу, перш чым працягнуць.", + "ErrorAddingMediaPathToVirtualFolder": "Пры даданні шляху носьбіта адбылася памылка. Упэўніцеся, што шлях сапраўдны і Jellyfin мае доступ да гэтага месца.", + "ErrorAddingXmlTvFile": "Адбылася памылка доступу да файла XMLTV. Пераканайцеся, што файл існуе, і паўтарыце спробу.", + "ErrorPleaseSelectLineup": "Выберыце склад і паўтарыце спробу. Калі няма даступных лінейак, праверце правільнасць вашага імя карыстальніка, пароля і паштовага індэкса.", + "LabelTypeText": "Тэкст", + "ErrorStartHourGreaterThanEnd": "Час заканчэння павінен быць большым за час пачатку.", + "EveryXMinutes": "Кожныя {0} хв", + "ExitFullscreen": "Выйсці з поўнаэкраннага рэжыму", + "LabelUserRemoteClientBitrateLimitHelp": "Перавызначыць глабальнае значэнне па змаўчанні, усталяванае ў наладах сервера, гл. Панэль кіравання > Прайграванне > Паток.", + "LabelVaapiDeviceHelp": "Гэта вузел візуалізацыі, які выкарыстоўваецца для апаратнага паскарэння.", + "LabelVideoRange": "Дыяпазон відэа:", + "LabelXDlnaDoc": "Ідэнтыфікатар класа прылады:", + "Larger": "Буйней", + "LibraryAccessHelp": "Выберыце бібліятэкі для сумеснага выкарыстання з гэтым карыстальнікам. Адміністратары змогуць рэдагаваць усе тэчкі з дапамогай дыспетчара метададзеных.", + "CinemaModeConfigurationHelp": "Рэжым \"Кіно\" пераносіць уражанні ад кінатэатра прама ў вашу гасціную з магчымасцю прайгравання трэйлераў і нестандартных застаў перад галоўным фільмам.", + "MarkUnplayed": "Пазначыць негуляным", + "MediaInfoCodec": "Кодэк", + "MediaInfoColorPrimaries": "Праймерыз колеру", + "MediaInfoColorSpace": "Каляровая прастора", + "MediaInfoContainer": "Кантэйнер", + "MediaInfoDefault": "Па змаўчанні", + "MediaInfoPath": "шлях", + "MediaInfoPixelFormat": "Піксельны фармат", + "MediaInfoResolution": "дазвол", + "MediaInfoTimestamp": "Метка часу", + "MediaInfoVideoRange": "Відэа дыяпазон", + "MessageConfirmDeleteTunerDevice": "Вы ўпэўнены, што хочаце выдаліць гэту прыладу?", + "MessageConfirmShutdown": "Вы ўпэўнены, што хочаце спыніць працу сервера?", + "MessageContactAdminToResetPassword": "Каб скінуць пароль, звярніцеся да сістэмнага адміністратара.", + "MessageDeleteTaskTrigger": "Вы ўпэўнены, што хочаце выдаліць гэты трыгер задачы?", + "MessageDirectoryPickerBSDInstruction": "Для BSD вам можа спатрэбіцца наладзіць сховішча ў вашай «Турме FreeNAS», каб Jellyfin мог атрымаць доступ да вашых носьбітаў.", + "MessageDirectoryPickerLinuxInstruction": "Для Linux на Arch Linux, CentOS, Debian, Fedora, openSUSE або Ubuntu вы павінны даць карыстальніку сэрвісу як мінімум доступ для чытання вашых месцаў захоўвання.", + "MessageFileReadError": "Пры чытанні файла адбылася памылка. Калі ласка, паспрабуйце яшчэ раз.", + "MessageImageFileTypeAllowed": "Падтрымліваюцца толькі файлы JPEG і PNG.", + "MessagePleaseWait": "Калі ласка пачакай. Гэта можа заняць хвіліну.", + "MessageReenableUser": "Глядзіце ніжэй, каб паўторна ўключыць", + "MessageSyncPlayErrorMedia": "Не ўдалося ўключыць SyncPlay! Медыя-памылка.", + "MessageSyncPlayErrorMissingSession": "Не ўдалося ўключыць SyncPlay! Адсутнічае сеанс.", + "MessageSyncPlayIsDisabled": "Для выкарыстання SyncPlay патрабуецца дазвол.", + "MessageUnauthorizedUser": "Вы не маеце доступу да сервера ў гэты час. Калі ласка, звярніцеся да адміністратара вашага сервера для атрымання дадатковай інфармацыі.", + "MySubtitles": "Мае субтытры", + "NewCollection": "Новая калекцыя", + "NoSubtitleSearchResultsFound": "Нічога не знойдзена.", + "LearnHowYouCanContribute": "Даведайцеся, як вы можаце ўнесці свой уклад.", + "NoSubtitlesHelp": "Субтытры не загружаюцца па змаўчанні. Іх усё яшчэ можна ўключыць уручную падчас прайгравання.", + "OnApplicationStartup": "Пры запуску прыкладання", + "OptionAllowBrowsingLiveTv": "Дазволіць доступ да ТБ у прамым эфіры", + "OptionAllowContentDownload": "Дазволіць загрузку мультымедыя", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionCommunityRating": "Рэйтынг супольнасці", + "OptionCriticRating": "Рэйтынг крытыкаў", + "OptionDatePlayed": "Дата гульні", + "ExtractChapterImagesHelp": "Выманне малюнкаў раздзелаў дазволіць кліентам адлюстроўваць графічнае меню выбару сцэны. Працэс можа быць павольным, рэсурсаёмістым і можа запатрабаваць некалькі гігабайт прасторы. Ён запускаецца пры выяўленні відэа, а таксама ў якасці начнога запланаванага задання. Расклад можна наладзіць у вобласці запланаваных задач. Не рэкамендуецца запускаць гэтую задачу ў гадзіны пікавага выкарыстання.", + "OptionDvd": "DVD", + "OptionHasThemeSong": "Тэматычная песня", + "OptionHideUserFromLoginHelp": "Карысна для прыватных або схаваных уліковых запісаў адміністратара. Карыстальнік павінен будзе ўвайсці ўручную, увёўшы сваё імя карыстальніка і пароль.", + "FFmpegSavePathNotFound": "Мы не можам знайсці FFmpeg па шляху, які вы ўвялі. FFprobe таксама патрабуецца і павінен знаходзіцца ў той жа папцы. Гэтыя кампаненты звычайна злучаны разам у адной загрузцы. Праверце шлях і паўтарыце спробу.", + "Filters": "Фільтры", + "Genre": "Жанр", + "GoogleCastUnsupported": "Google Cast не падтрымліваецца", + "GuideProviderLogin": "Увайсці", + "GuideProviderSelectListings": "Выберыце спісы", + "OptionPlainVideoItemsHelp": "Усе відэа прадстаўлены ў DIDL як \"object.item.videoItem\" замест больш канкрэтнага тыпу, напрыклад \"object.item.videoItem.movie\".", + "OptionSaveMetadataAsHidden": "Захоўвайце метададзеныя і выявы як схаваныя файлы", + "OptionSubstring": "Падрадок", + "Other": "Іншае", + "OtherArtist": "Іншы выканаўца", + "Overview": "Агляд", + "PackageInstallCancelled": "Усталяванне {0} (версія {1}) адменена.", + "PackageInstallFailed": "Памылка ўстаноўкі {0} (версія {1}).", + "PasswordMatchError": "Пароль і пацвярджэнне пароля павінны супадаць.", + "PasswordResetConfirmation": "Вы ўпэўнены, што хочаце скінуць пароль?", + "PasswordResetProviderHelp": "Выберыце пастаўшчыка скіду пароля, які будзе выкарыстоўвацца, калі гэты карыстальнік запытвае скід пароля.", + "People": "Людзі", + "PersonRole": "як {0}", + "PinCodeResetComplete": "Код Easy PIN быў скінуты.", + "PlayAllFromHere": "Гуляць усё адсюль", + "PlayFromBeginning": "Гуляць з пачатку", + "PleaseAddAtLeastOneFolder": "Калі ласка, дадайце хаця б адну папку ў гэту бібліятэку, націснуўшы кнопку «+» у раздзеле «Папкі».", + "PleaseSelectTwoItems": "Калі ласка, абярыце як мінімум два пункты.", + "Poster": "Плакат", + "PreferEmbeddedTitlesOverFileNames": "Аддавайце перавагу ўбудаваным назвам перад назвамі файлаў", + "Programs": "Праграмы", + "QuickConnect": "Хуткае падключэнне", + "QuickConnectDeactivated": "Хуткае падключэнне было дэактывавана да таго, як запыт на ўваход мог быць ухвалены", + "Raised": "Падняў", + "RecentlyWatched": "Нядаўна глядзеў", + "DeleteUser": "Выдаліць карыстальніка", + "RecommendationBecauseYouLike": "Таму што вам падабаецца {0}", + "Record": "Запіс", + "RecordingCancelled": "Запіс адменены.", + "ReleaseDate": "Дата выпуску", + "ReleaseGroup": "Група вызвалення", + "RemoveFromCollection": "Выдаліць з калекцыі", + "Repeat": "Паўтарыць", + "RepeatEpisodes": "Паўтор эпізодаў", + "RepeatMode": "Рэжым паўтору", + "ReplaceExistingImages": "Замяніць існуючыя выявы", + "Runtime": "Час выканання", + "Saturday": "субота", + "Search": "Пошук", + "SearchForCollectionInternetMetadata": "Шукайце ў інтэрнэце твор мастацтва і метададзеныя", + "SearchForMissingMetadata": "Пошук адсутных метаданых", + "Season": "Сезон", + "SelectAdminUsername": "Выберыце імя карыстальніка для ўліковага запісу адміністратара.", + "SeriesCancelled": "Серыял адменены.", + "SeriesDisplayOrderHelp": "Упарадкуйце эпізоды па даце эфіру, парадку DVD або абсалютнай нумарацыі.", + "SeriesRecordingScheduled": "Запланаваны запіс серыі.", + "SeriesSettings": "Налады серыі", + "ServerNameIsRestarting": "Сервер у {0} перазапускаецца.", + "ServerNameIsShuttingDown": "Сервер у {0} адключаецца.", + "Share": "падзяліцца", + "ShowIndicatorsFor": "Паказаць індыкатары для:", + "ShowLess": "Паказваць менш", + "ShowMore": "Паказаць больш", + "Shuffle": "Ператасаваць", + "Sort": "Сартаваць", + "SortByValue": "Сартаваць па {0}", + "StereoDownmixAlgorithmHelp": "Алгарытм, які выкарыстоўваецца для звядзення шматканальнага гуку ў стэрэа.", + "SubtitleDownloadersHelp": "Уключыце і ранжыруйце вашы любімыя загрузнікі субтытраў у парадку прыярытэту.", + "Subtitles": "субтытры", + "SyncPlayGroupDefaultTitle": "Група {0}", + "TabAccess": "Доступ", + "TabAdvanced": "Пашыраны", + "TabScheduledTasks": "Запланаваныя заданні", + "TabStreaming": "Паток", + "TextSent": "Тэкст адпраўлены.", + "ThemeSongs": "Тэматычныя песні", + "ThumbCard": "Картка вялікага пальца", + "Thursday": "чацвер", + "TonemappingRangeHelp": "Выберыце выхадны каляровы дыяпазон. Аўто - гэта тое ж самае, што і дыяпазон уводу.", + "TrackCount": "{0} трэкаў", + "Trailers": "Трэйлеры", + "Transcoding": "Перакадзіроўка", + "TV": "тэлевізар", + "TvLibraryHelp": "Праглядзіце {0}Кіраўніцтва па назвах тэлевізараў{1}.", + "TypeOptionPluralAudio": "Аўдыё", + "TypeOptionPluralBoxSet": "Скрынкі", + "TypeOptionPluralEpisode": "Эпізоды", + "TypeOptionPluralMovie": "фільмы", + "TypeOptionPluralMusicAlbum": "Музычныя альбомы", + "TypeOptionPluralMusicArtist": "Музычныя выканаўцы", + "TypeOptionPluralMusicVideo": "Музычныя кліпы", + "TypeOptionPluralSeries": "Тэлеперадачы", + "TypeOptionPluralVideo": "Відэа", + "Typewriter": "Пішучая машынка", + "Uniform": "Уніформа", + "Unmute": "Уключыць гук", + "Up": "Уверх", + "UseEpisodeImagesInNextUp": "Выкарыстоўвайце выявы эпізодаў у раздзелах \"Далей\" і \"Працягнуць прагляд\".", + "UseEpisodeImagesInNextUpHelp": "У раздзелах \"Далей\" і \"Працягнуць прагляд\" у якасці эскізаў будуць выкарыстоўвацца выявы эпізодаў замест асноўнай мініяцюры шоу.", + "UserAgentHelp": "Увядзіце ўласны HTTP-загаловак «User-Agent».", + "ValueDiscNumber": "Дыск {0}", + "ValueEpisodeCount": "{0} эпізодаў", + "ValueMusicVideoCount": "{0} музычных відэа", + "ValueOneMovie": "1 фільм", + "ValueOneMusicVideo": "1 музычны кліп", + "ValueVideoCodec": "Відэакодэк: {0}", + "Video": "Відэа", + "Whitelist": "Белы спіс", + "EnableFallbackFont": "Уключыць рэзервовыя шрыфты", + "EnableFallbackFontHelp": "Уключыць карыстальніцкія альтэрнатыўныя шрыфты. Гэта можа пазбегнуць праблемы няправільнага адлюстравання субтытраў.", + "AspectRatioCover": "Вокладка", + "RemuxHelp2": "Remux выкарыстоўвае вельмі мала вылічальнай магутнасці з абсалютнай якасцю мультымедыя без страт.", + "LabelPlaybackInfo": "Інфармацыя аб прайграванні", + "LabelVideoInfo": "Інфармацыя пра відэа", + "PreferFmp4HlsContainer": "Аддайце перавагу медыякантэйнеру fMP4-HLS", + "PreferFmp4HlsContainerHelp": "Аддавайце перавагу выкарыстоўванню fMP4 у якасці кантэйнера па змаўчанні для HLS, што дазваляе накіроўваць струменевае змесціва HEVC на прылады, якія падтрымліваюцца.", + "AllowHevcEncoding": "Дазволіць кадзіраванне ў фармаце HEVC", + "LabelSelectAudioChannels": "Каналы", + "YoutubePlaybackError": "Запытанае відэа немагчыма прайграць.", + "YoutubeNotFound": "Відэа не знойдзена.", + "YoutubeDenied": "Запытанае відэа не дазваляецца прайграваць ва ўбудаваных плэерах.", + "MessagePlaybackError": "Пры прайграванні гэтага файла на вашым прыёмніку Google Cast адбылася памылка.", + "EnableVppTonemapping": "Уключыць VPP Tone mapping", + "LabelEnableGamepad": "Уключыць геймпад", + "VideoCodecNotSupported": "Відэакодэк не падтрымліваецца", + "H264CrfHelp": "\"Каэфіцыент пастаяннай хуткасці\" (CRF) - гэта налада якасці па змаўчанні для кадавальніка x264 і x265. Вы можаце ўсталяваць значэнні ад 0 да 51, дзе больш нізкія значэнні прывядуць да лепшай якасці (за кошт большага памеру файла). Разумныя значэнні знаходзяцца паміж 18 і 28. Значэнне па змаўчанні для x264 роўна 23, а для x265 - 28, так што вы можаце выкарыстоўваць гэта як адпраўную кропку.", + "HDPrograms": "HD праграмы", + "AnamorphicVideoNotSupported": "Анаморфнае відэа не падтрымліваецца", + "SecondaryAudioNotSupported": "Другасныя гукавыя дарожкі не падтрымліваюцца", + "RefFramesNotSupported": "Апорныя кадры не падтрымліваюцца", + "VideoBitDepthNotSupported": "Разраднасць відэа не падтрымліваецца", + "HardwareAccelerationWarning": "Уключэнне апаратнага паскарэння можа выклікаць нестабільнасць у некаторых асяроддзях. Пераканайцеся, што ваша аперацыйная сістэма і відэадрайверы цалкам абноўлены. Калі ў вас узніклі цяжкасці з прайграваннем відэа пасля ўключэння, вам трэба будзе змяніць наладу назад на \"Няма\".", + "HeaderAdditionalParts": "Дадатковыя часткі", + "HeaderAddToCollection": "Дадаць у калекцыю", + "HeaderConfirmProfileDeletion": "Пацвердзіце выдаленне профілю", + "HeaderConnectToServer": "Падлучыцца да сервера", + "HeaderDateIssued": "Дата выдачы", + "HeaderDetectMyDevices": "Вызначыць мае прылады", + "HeaderDeveloperInfo": "Інфармацыя пра распрацоўшчыка", + "HeaderDirectPlayProfile": "Профіль прамога прайгравання", + "HeaderDirectPlayProfileHelp": "Дадайце профілі прамога прайгравання, каб паказаць, якія фарматы можа апрацоўваць прылада.", + "HeaderDownloadSync": "Спампоўка і сінхранізацыя", + "HeaderDVR": "Відэарэгістратар", + "HeaderEditImages": "Рэдагаваць выявы", + "HeaderFrequentlyPlayed": "Часта гуляюць", + "HeaderGuideProviders": "Пастаўшчыкі дадзеных тэлегіда", + "HeaderHttpsSettings": "Налады HTTPS", + "HeaderIdentification": "Ідэнтыфікацыя", + "HeaderIdentificationCriteriaHelp": "Увядзіце хаця б адзін крытэрый ідэнтыфікацыі.", + "HeaderIdentifyItemHelp": "Увядзіце адзін або некалькі крытэрыяў пошуку. Выдаліце крытэрыі, каб павялічыць вынікі пошуку.", + "HeaderKodiMetadataHelp": "Каб уключыць або выключыць метададзеныя NFO, адрэдагуйце бібліятэку і знайдзіце раздзел «Захоўвальнікі метададзеных».", + "HeaderLatestEpisodes": "Апошнія серыі", + "HeaderLiveTvTunerSetup": "Налада ТБ-цюнэра ў прамым эфіры", + "HeaderLoginFailure": "Памылка ўваходу", + "HeaderMedia": "СМІ", + "HeaderNewApiKey": "Новы ключ API", + "HeaderNewDevices": "Новыя прылады", + "HeaderNewRepository": "Новы рэпазітар", + "HeaderNextEpisodePlayingInValue": "Наступны эпізод пачнецца праз {0}", + "HeaderNextVideoPlayingInValue": "Наступнае відэа будзе прайгравацца праз {0}", + "HeaderParentalRatings": "Бацькоўскі рэйтынг", + "HeaderPhotoAlbums": "Фотаальбомы", + "HeaderPlayAll": "Гуляць усе", + "HeaderPlayback": "Прайграванне мультымедыя:", + "HeaderPlayOn": "Гуляць далей", + "HeaderPleaseSignIn": "Калі ласка, увайдзіце", + "HeaderPluginInstallation": "Ўстаноўка плагіна", + "HeaderProfileServerSettingsHelp": "Гэтыя значэнні кантралююць, як сервер будзе прадстаўляць сябе кліентам.", + "HeaderRecordingPostProcessing": "Пост-апрацоўка запісу", + "HeaderRemoteControl": "Пульт дыстанцыйнага кіравання", + "HeaderRemoveMediaLocation": "Выдаліць месцазнаходжанне мультымедыя", + "HeaderResponseProfile": "Профіль адказу", + "HeaderResponseProfileHelp": "Профілі адказу дазваляюць наладзіць інфармацыю, якая адпраўляецца на прыладу падчас прайгравання пэўных відаў мультымедыя.", + "HeaderRevisionHistory": "Гісторыя версій", + "HeaderRunningTasks": "Запуск задач", + "HeaderScenes": "Сцэны", + "HeaderSeasons": "Поры года", + "HeaderSelectCertificatePath": "Выберыце Шлях сертыфіката", + "HeaderSelectMetadataPath": "Выберыце Шлях метаданых", + "HeaderSelectMetadataPathHelp": "Праглядзіце або ўвядзіце шлях, які вы хочаце выкарыстоўваць для метададзеных. Тэчка павінна быць даступнай для запісу.", + "HeaderSelectServerCachePath": "Выберыце шлях да кэша сервера", + "HeaderSelectServerCachePathHelp": "Праглядзіце або ўвядзіце шлях для выкарыстання файлаў кэша сервера. Тэчка павінна быць даступнай для запісу.", + "HeaderSelectTranscodingPath": "Выберыце Часовы шлях перакадавання", + "HeaderSelectTranscodingPathHelp": "Праглядзіце або ўвядзіце шлях для перакадзіравання файлаў. Тэчка павінна быць даступнай для запісу.", + "HeaderSeriesOptions": "Параметры серыі", + "HeaderSeriesStatus": "Статус серыі", + "HeaderServerAddressSettings": "Налады адраса сервера", + "HeaderServerSettings": "Налады сервера", + "HeaderSetupLibrary": "Наладзьце медыятэкі", + "HeaderSubtitleAppearance": "Знешні выгляд субтытраў", + "HeaderSubtitleDownloads": "Спампоўка субтытраў", + "HeaderSubtitleProfile": "Профіль субтытраў", + "HeaderSubtitleProfiles": "Профілі субтытраў", + "HeaderSubtitleProfilesHelp": "Профілі субтытраў апісваюць фарматы субтытраў, якія падтрымліваюцца прыладай.", + "HeaderSyncPlayEnabled": "SyncPlay уключаны", + "HeaderSyncPlaySelectGroup": "Далучайцеся да групы", + "HeaderSyncPlayPlaybackSettings": "Прайграванне", + "HeaderSyncPlayTimeSyncSettings": "Сінхранізацыя часу", + "HeaderSystemDlnaProfiles": "Профілі сістэмы", + "HeaderTracks": "Трэкі", + "HeaderTranscodingProfile": "Профіль транскадавання", + "HeaderTranscodingProfileHelp": "Дадайце профілі перакадзіравання, каб паказаць, якія фарматы трэба выкарыстоўваць, калі патрабуецца перакадзіраванне.", + "HeaderUser": "Карыстальнік", + "HeaderUsers": "Карыстальнікі", + "HeaderVideoQuality": "Якасць відэа", + "HeaderVideoTypes": "Віды відэа", + "Hide": "Схаваць", + "Home": "дадому", + "HomeVideosPhotos": "Хатнія відэа і фота", + "Horizontal": "Гарызантальны", + "HttpsRequiresCert": "Каб уключыць бяспечныя злучэнні, вам трэба будзе прадаставіць надзейны сертыфікат SSL, напрыклад Let's Encrypt. Калі ласка, падайце сертыфікат або адключыце бяспечныя злучэнні.", + "IgnoreDtsHelp": "Адключэнне гэтай опцыі можа вырашыць некаторыя праблемы, напрыклад. адсутнічае гук на каналах з асобнымі аўдыя- і відэаплынямі.", + "ItemCount": "{0} элементаў", + "ItemDetails": "Дэталі прадмета", + "Label3DFormat": "фармат 3D:", + "LabelAirDays": "Эфірныя дні:", + "LabelAirsAfterSeason": "Эфір пасля сезона:", + "LabelAirTime": "Эфірны час:", + "LabelAlbum": "альбом:", + "LabelAlbumArtHelp": "PN, які выкарыстоўваецца для вокладкі альбома, у атрыбуте «dlna:profileID» на «upnp:albumArtURI». Некаторыя прылады патрабуюць пэўнага значэння, незалежна ад памеру выявы.", + "LabelAlbumArtists": "Выканаўцы альбома:", + "LabelAlbumArtMaxWidth": "Максімальная шырыня вокладкі альбома:", + "LabelAllowedRemoteAddressesMode": "Рэжым фільтра аддаленага IP-адраса:", + "LabelAppNameExample": "Прыклад: Sickbeard, Sonarr", + "LabelArtists": "Мастакі:", + "LabelArtistsHelp": "Раздзяляйце некалькіх выканаўцаў кропкай з коскай.", + "LabelAudioBitDepth": "Глыбіня гуку ў бітах:", + "LabelAutomaticallyRefreshInternetMetadataEvery": "Аўтаматычна абнаўляць метаданыя з Інтэрнэту:", + "LabelAutomaticDiscoveryHelp": "Дазволіць праграмам аўтаматычна выяўляць Jellyfin з дапамогай UDP-порта 7359.", + "LabelBaseUrl": "Базавы URL:", + "LabelBaseUrlHelp": "Дадайце карыстальніцкі падкаталог да URL-адраса сервера. Напрыклад: http://example.com/", + "LabelBindToLocalNetworkAddressHelp": "Перавызначыць лакальны IP-адрас для сервера HTTP. Калі пакінуць пустым, сервер будзе прывязвацца да ўсіх даступных адрасоў. Змена гэтага значэння патрабуе перазапуску.", + "LabelBlastMessageIntervalHelp": "Вызначце працягласць у секундах паміж паведамленнямі blast alive.", + "LabelBlockContentWithTags": "Блакіраваць элементы з тэгамі:", + "LabelBurnSubtitles": "Запісаць субтытры:", + "LabelCache": "Кэш:", + "LabelCachePathHelp": "Укажыце карыстацкае размяшчэнне для файлаў кэша сервера, такіх як выявы. Пакіньце пустым, каб выкарыстоўваць сервер па змаўчанні.", + "LabelCertificatePasswordHelp": "Калі ваш сертыфікат патрабуе пароль, увядзіце яго тут.", + "LabelColorPrimaries": "Асноўны колер:", + "LabelColorSpace": "Каляровая прастора:", + "LabelColorTransfer": "Перадача колеру:", + "LabelCommunityRating": "Рэйтынг супольнасці:", + "LabelContentType": "Тып кантэнту:", + "LabelCountry": "краіна:", + "LabelCreateHttpPortMap": "Уключыць аўтаматычнае адлюстраванне партоў для трафіку HTTP, а таксама HTTPS.", + "LabelCreateHttpPortMapHelp": "Дазволіць аўтаматычнае супастаўленне партоў для стварэння правіла для трафіку HTTP у дадатак да трафіку HTTPS.", + "LabelCriticRating": "Ацэнка крытыкаў:", + "LabelCurrentStatus": "Бягучы стан:", + "LabelCustomCertificatePathHelp": "Шлях да файла PKCS #12, які змяшчае сертыфікат і прыватны ключ для ўключэння падтрымкі TLS на карыстальніцкім дамене.", + "LabelDashboardTheme": "Тэма прыборнай панэлі сервера:", + "LabelDateAddedBehavior": "Дата дадання паводзін для новага кантэнту:", + "LabelDateTimeLocale": "Рэгіянальная налада даты і часу:", + "LabelDefaultScreen": "Экран па змаўчанні:", + "LabelDeinterlaceMethod": "Метад дэінтэрлейсінгу:", + "LabelDisplayLanguageHelp": "Праект па перакладзе Jellyfin працягваецца.", + "LabelDisplayMode": "Рэжым адлюстравання:", + "LabelDisplayName": "Адлюстраванае імя:", + "LabelDisplaySpecialsWithinSeasons": "Паказаць спецыяльныя прапановы сезонаў, у якіх яны трансліраваліся", + "LabelDownMixAudioScale": "Узмацненне гуку пры паніжальным мікшаванні:", + "LabelDownMixAudioScaleHelp": "Узмацненне гуку пры паніжальным мікшаванні. Значэнне адзінка захавае зыходны аб'ём.", + "LabelDropImageHere": "Перацягніце выяву сюды або націсніце, каб прагледзець.", + "LabelDropShadow": "Цень:", + "LabelDropSubtitleHere": "Перанясіце субтытры сюды або націсніце, каб праглядзець.", + "LabelEasyPinCode": "Просты PIN-код:", + "LabelEmbedAlbumArtDidl": "Убудаваць вокладку альбома ў DIDL", + "LabelEmbedAlbumArtDidlHelp": "Некаторыя прылады аддаюць перавагу гэтаму спосабу атрымання вокладкі альбома. Іншыя могуць не гуляць з уключанай опцыяй.", + "LabelEnableAutomaticPortMapHelp": "Аўтаматычная перанакіраванне агульнадаступных партоў маршрутызатара на лакальныя парты сервера праз UPnP. Гэта можа не працаваць з некаторымі мадэлямі маршрутызатараў або канфігурацыямі сеткі. Змены не будуць прыменены да перазапуску сервера.", + "LabelEnableBlastAliveMessagesHelp": "Уключыце гэта, калі сервер не вызначаецца надзейна іншымі прыладамі UPnP у вашай сетцы.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Вызначце працягласць у секундах паміж двума пошукамі SSDP.", + "LabelEnableDlnaDebugLogging": "Уключыць вядзенне журнала адладкі DLNA", + "LabelEnableIP4Help": "Уключыць функцыянальнасць IPv4.", + "LabelEnableIP6": "Уключыць IPv6", + "LabelEnableIP6Help": "Уключыць функцыянальнасць IPv6.", + "LabelEnableRealtimeMonitor": "Уключыць маніторынг у рэальным часе", + "LabelEnableRealtimeMonitorHelp": "Змены ў файлах будуць неадкладна апрацаваны ў файлавых сістэмах, якія падтрымліваюцца.", + "LabelEnableSingleImageInDidlLimit": "Абмежаванне да адной убудаванай выявы", + "LabelEnableSingleImageInDidlLimitHelp": "Некаторыя прылады не будуць адлюстроўвацца належным чынам, калі ў DIDL убудавана некалькі малюнкаў.", + "LabelEnableSSDPTracing": "Уключыць трасіроўку SSDP:", + "LabelEnableSSDPTracingHelp": "Уключыце рэгістрацыю падрабязнай трасіроўкі сеткі SSDP.
УВАГА: гэта прывядзе да сур'ёзнага зніжэння прадукцыйнасці.", + "LabelEndDate": "Дата заканчэння:", + "LabelEpisodeNumber": "Нумар эпізоду:", + "LabelEvent": "падзея:", + "LabelEveryXMinutes": "Кожны:", + "LabelH265Crf": "CRF кадавання H.265:", + "LabelHDHomerunPortRange": "Дыяпазон партоў HDHomeRun:", + "LabelHDHomerunPortRangeHelp": "Абмяжоўвае дыяпазон партоў HDHomeRun UDP гэтым значэннем. (Па змаўчанні 1024 - 645535).", + "LabelHomeNetworkQuality": "Якасць хатняй сеткі:", + "LabelHomeScreenSectionValue": "Раздзел галоўнага экрана {0}:", + "LabelMaxDaysForNextUp": "Максімальная колькасць дзён у «Далей»:", + "LabelMaxMuxingQueueSizeHelp": "Максімальная колькасць пакетаў, якія можна буферызаваць падчас чакання ініцыялізацыі ўсіх патокаў. Паспрабуйце павялічыць яго, калі ў журналах FFmpeg вы па-ранейшаму сустракаеце памылку \"Занадта шмат пакетаў у буферы для выхаднога патоку\". Рэкамендаванае значэнне - 2048.", + "LabelMaxStreamingBitrateHelp": "Укажыце максімальны бітрэйт пры трансляцыі.", + "LabelMessageText": "Тэкст паведамлення:", + "LabelMetadataDownloadersHelp": "Уключыце і расстаўце вашыя пераважныя загрузнікі метададзеных у парадку прыярытэту. Загрузнікі з меншым прыярытэтам будуць выкарыстоўвацца толькі для запаўнення адсутнай інфармацыі.", + "LabelName": "Імя:", + "LabelNewName": "Новая назва:", + "LabelNewPassword": "Новы пароль:", + "LabelNewPasswordConfirm": "Пацвердзіце новы пароль:", + "LabelNewsCategories": "Катэгорыі навін:", + "LabelNotificationEnabled": "Уключыць гэта апавяшчэнне", + "LabelOpenclDeviceHelp": "Гэта прылада OpenCL, якая выкарыстоўваецца для танальнага адлюстравання. Левы бок кропкі - гэта нумар платформы, а правы - нумар прылады на платформе. Значэнне па змаўчанні - 0,0. Патрабуецца файл прыкладання FFmpeg, які змяшчае метад апаратнага паскарэння OpenCL.", + "LabelOptionalNetworkPathHelp": "Калі гэтая папка агульнадаступная ў вашай сетцы, прадастаўленне шляху сеткавага абагульвання можа дазволіць кліентам на іншых прыладах атрымаць непасрэдны доступ да медыяфайлаў. Напрыклад, {0} або {1}.", + "LabelOriginalAspectRatio": "Зыходныя суадносіны бакоў:", + "LabelOriginalTitle": "Арыгінальная назва:", + "LabelParentalRating": "Бацькоўскі рэйтынг:", + "LabelPassword": "Пароль:", + "LabelPasswordRecoveryPinCode": "PIN-код:", + "LabelPasswordResetProvider": "Пастаўшчык скіду пароля:", + "LabelPersonRoleHelp": "Прыклад: кіроўца грузавіка з марожаным", + "LabelPlayDefaultAudioTrack": "Прайграванне гукавой дарожкі па змаўчанні незалежна ад мовы", + "LabelPlayerDimensions": "Памеры плэера:", + "LabelPleaseRestart": "Змены ўступяць у сілу пасля ручной перазагрузкі вэб-кліента.", + "LabelPostProcessor": "Прыкладанне для пост-апрацоўкі:", + "LabelPostProcessorArguments": "Аргументы каманднага радка постпрацэсара:", + "LabelPostProcessorArgumentsHelp": "Выкарыстоўвайце {path} як шлях да файла запісу.", + "LabelPreferredDisplayLanguage": "Пажаданая мова адлюстравання:", + "LabelProfileCodecs": "кодэкі:", + "LabelProfileContainer": "Кантэйнер:", + "LabelProfileContainersHelp": "Аддзяляюцца коскамі. Гэта можна пакінуць пустым, каб прымяніць да ўсіх кантэйнераў.", + "LabelProtocol": "Пратакол:", + "LabelProtocolInfoHelp": "Значэнне, якое будзе выкарыстоўвацца пры адказе на запыты GetProtocolInfo ад прылады.", + "LabelPublicHttpPort": "Нумар публічнага порта HTTP:", + "LabelPublicHttpPortHelp": "Нумар публічнага порта, які трэба супаставіць з лакальным портам HTTP.", + "LabelPublicHttpsPortHelp": "Нумар публічнага порта, які трэба супаставіць з лакальным портам HTTPS.", + "LabelPublishedServerUri": "Апублікаваныя URI сервера:", + "LabelPublishedServerUriHelp": "Перавызначыць URI, які выкарыстоўваецца Jellyfin, на аснове інтэрфейсу або IP-адраса кліента.", + "LabelQuickConnectCode": "Код хуткага злучэння:", + "LabelReasonForTranscoding": "Прычына перакадавання:", + "LabelRecordingPath": "Шлях запісу па змаўчанні:", + "LabelRecordingPathHelp": "Укажыце месца па змаўчанні для захавання запісаў. Калі пакінуць пустым, будзе выкарыстоўвацца папка дадзеных праграмы сервера.", + "LabelReleaseDate": "Дата выпуску:", + "LabelRemoteClientBitrateLimit": "Ліміт бітрэйту струменевай перадачы Інтэрнэту (Мбіт/с):", + "LabelRemoteClientBitrateLimitHelp": "Дадатковы ліміт бітрэйту для кожнага патоку для ўсіх сеткавых прылад. Гэта карысна, каб прылады не запытвалі больш высокі бітрэйт, чым можа вытрымаць ваша інтэрнэт-злучэнне. Гэта можа прывесці да павелічэння нагрузкі на працэсар вашага сервера для перакадзіравання відэа на хаду да больш нізкага бітрэйту.", + "LabelRepositoryName": "Назва сховішча", + "LabelRepositoryNameHelp": "Карыстальніцкая назва, каб адрозніць гэтае сховішча ад іншых, дададзеных на ваш сервер.", + "LabelSaveLocalMetadata": "Захоўвайце ілюстрацыі ў папках мультымедыя", + "LabelSaveLocalMetadataHelp": "Захаванне ілюстрацыі ў папках мультымедыя змесціць іх у месца, дзе іх можна будзе лёгка рэдагаваць.", + "LabelScheduledTaskLastRan": "Апошні запуск {0}, заняў {1}.", + "LabelSeasonNumber": "Нумар сезона:", + "LabelSelectFolderGroups": "Аўтаматычна групаваць змесціва з наступных папак у віды, такія як «Фільмы», «Музыка» і «ТБ»:", + "LabelSelectFolderGroupsHelp": "Папкі, якія не адзначаны, будуць паказвацца самастойна ў іх уласным праглядзе.", + "LabelSelectUsers": "Выберыце карыстальнікаў:", + "LabelSelectVersionToInstall": "Выберыце версію для ўстаноўкі:", + "LabelSerialNumber": "Серыйны нумар:", + "LabelSeriesRecordingPath": "Шлях запісу серыі:", + "LabelServerHost": "Вядучы:", + "LabelSimultaneousConnectionLimit": "Ліміт адначасовай трансляцыі:", + "LabelSkipForwardLength": "Прапусціць даўжыню наперад:", + "LabelSkipIfAudioTrackPresentHelp": "Зніміце гэты сцяжок, каб пераканацца, што ўсе відэа маюць субтытры, незалежна ад мовы гуку.", + "LabelSlowResponseEnabled": "Рэгіструйце папярэджанне, калі сервер адказваў павольна", + "LabelSlowResponseTime": "Час у мс, пасля якога адказ лічыцца павольным:", + "LabelSonyAggregationFlagsHelp": "Вызначце змесціва элемента 'aggregationFlags' у прасторы імёнаў 'urn:schemas-sonycom:av'.", + "LabelSpecialSeasonsDisplayName": "Назва спецыяльнага сезона:", + "LabelSSDPTracingFilter": "Фільтр SSDP:", + "LabelStable": "Стабільны", + "LabelStopping": "Прыпынак", + "LabelStopWhenPossible": "Пры магчымасці спыніцеся:", + "LabelStreamType": "Тып плыні:", + "LabelSubtitleDownloaders": "Праграмы для загрузкі субтытраў:", + "LabelSubtitleFormatHelp": "Прыклад: srt", + "LabelSubtitleVerticalPosition": "Вертыкальнае становішча:", + "LabelSupportedMediaTypes": "Падтрымліваюцца тыпы носьбітаў:", + "LabelSyncPlayAccess": "Доступ SyncPlay:", + "LabelSyncPlayAccessCreateAndJoinGroups": "Дазволіць карыстальнікам ствараць групы і далучацца да іх", + "LabelSyncPlayAccessJoinGroups": "Дазволіць карыстальнікам далучацца да груп", + "LabelSyncPlayHaltPlayback": "Спыніць лакальнае прайграванне", + "LabelSyncPlayLeaveGroup": "Пакінуць групу", + "LabelSyncPlayLeaveGroupDescription": "Адключыць SyncPlay", + "LabelSyncPlayResumePlaybackDescription": "Далучайцеся да прайгравання групы", + "LabelSyncPlaySyncMethod": "Метад сінхранізацыі:", + "LabelSyncPlayTimeSyncDevice": "Сінхранізацыя часу з:", + "LabelSyncPlaySettingsExtraTimeOffsetHelp": "Уручную наладзьце зрушэнне часу (у мс) з абранай прыладай для сінхранізацыі часу. Твік з асцярожнасцю.", + "LabelSyncPlaySettingsSyncCorrection": "Выпраўленне сінхранізацыі", + "LabelSyncPlaySettingsMinDelaySpeedToSync": "Мінімальная затрымка SpeedToSync:", + "LabelSyncPlaySettingsMaxDelaySpeedToSync": "Максімальная затрымка SpeedToSync:", + "LabelSyncPlaySettingsSpeedToSyncDuration": "Працягласць SpeedToSync:", + "LabelSyncPlaySettingsSpeedToSyncDurationHelp": "Колькасць мілісекунд, якія SpeedToSync выкарыстоўвае для выпраўлення пазіцыі прайгравання.", + "LabelSyncPlaySettingsMinDelaySkipToSync": "Мінімальная затрымка SkipToSync:", + "LabelSyncPlaySettingsMinDelaySkipToSyncHelp": "Мінімальная затрымка прайгравання (у мс), пасля якой SkipToSync спрабуе выправіць пазіцыю прайгравання.", + "LabelSyncPlaySettingsSpeedToSync": "Уключыць SpeedToSync", + "LabelSyncPlaySettingsSpeedToSyncHelp": "Метад карэкцыі сінхранізацыі, які заключаецца ў паскарэнні прайгравання. Карэкцыя сінхранізацыі павінна быць уключана.", + "LabelSyncPlaySettingsSkipToSyncHelp": "Метад карэкцыі сінхранізацыі, які складаецца ў пошуку да разліковай пазіцыі. Карэкцыя сінхранізацыі павінна быць уключана.", + "LabelTextSize": "Памер тэксту:", + "LabelTheme": "Тэма:", + "LabelTimeLimitHours": "Ліміт часу (гадзіны):", + "LabelTitle": "Назва:", + "LabelTonemappingAlgorithm": "Выберыце алгарытм танальнага адлюстравання для выкарыстання:", + "LabelTonemappingDesat": "Тонавае адлюстраванне desat:", + "ChannelAccessHelp": "Выберыце каналы, каб абагуліць з гэтым карыстальнікам. Адміністратары змогуць рэдагаваць усе каналы з дапамогай дыспетчара метададзеных.", + "ChannelNumber": "Нумар канала", + "ClientSettings": "Налады кліента", + "ColorPrimaries": "Праймерыз колеру", + "ColorSpace": "Каляровая прастора", + "ColorTransfer": "Перадача колеру", + "CommunityRating": "Рэйтынг супольнасці", + "Connect": "Злучыцца", + "ContinueWatching": "Працягвайце глядзець", + "Continuing": "Працягваецца", + "CopyStreamURL": "Скапіраваць URL патоку", + "CopyStreamURLSuccess": "URL паспяхова скапіраваны.", + "CriticRating": "Рэйтынг крытыкаў", + "DailyAt": "Штодня ў {0}", + "DashboardArchitecture": "Архітэктура: {0}", + "DashboardOperatingSystem": "Аперацыйная сістэма: {0}", + "DashboardServerName": "Сервер: {0}", + "DashboardVersionNumber": "Версія: {0}", + "Data": "даныя", + "DateAdded": "Дата дабаўлення", + "DatePlayed": "Дата прайгравання", + "DeathDateValue": "Памёр: {0}", + "Delete": "Выдаліць", + "DeleteAll": "Выдаліць усе", + "DeleteDeviceConfirmation": "Вы ўпэўнены, што хочаце выдаліць гэту прыладу? Ён зноў з'явіцца ў наступны раз, калі карыстальнік увойдзе з яго дапамогай.", + "DeleteDevicesConfirmation": "Вы ўпэўнены, што хочаце выдаліць усе прылады? Усе астатнія сеансы будуць выключаны. Прылады зноў з'явяцца пры наступным уваходзе карыстальніка.", + "DeleteImage": "Выдаліць выяву", + "DeleteImageConfirmation": "Вы ўпэўнены, што хочаце выдаліць гэты відарыс?", + "DeleteMedia": "Выдаліць носьбіт", + "DeleteUserConfirmation": "Вы ўпэўнены, што хочаце выдаліць гэтага карыстальніка?", + "Depressed": "Прыгнечаны", + "Descending": "Па сыходзе", + "Desktop": "Працоўны стол", + "DetectingDevices": "Прылады выяўлення", + "DirectStreamHelp2": "Магутнасць, спажываная прамой плынню, звычайна залежыць ад аўдыяпрофілю. Толькі відэаплынь без страт.", + "DirectStreaming": "Прамая трансляцыя", + "EnablePlugin": "Уключыць", + "DisableCustomCss": "Адключыць карыстальніцкі код CSS, прадастаўлены серверам", + "DisablePlugin": "Адключыць", + "DisplayInOtherHomeScreenSections": "Адлюстраванне ў раздзелах галоўнага экрана, такіх як «Апошнія медыя» і «Працягнуць прагляд»", + "DisplayMissingEpisodesWithinSeasons": "Паказаць адсутныя серыі ў межах сезонаў", + "DrmChannelsNotImported": "Каналы з DRM не будуць імпартаваны.", + "DropShadow": "Цень", + "EditMetadata": "Рэдагаваць метаданыя", + "EditSubtitles": "Рэдагаваць субтытры", + "EnableAutoCast": "Ўсталяваць па змаўчанні", + "EnableBackdropsHelp": "Паказваць фоны на фоне некаторых старонак падчас прагляду бібліятэкі.", + "EnableBlurHash": "Уключыць размытыя запаўняльнікі для малюнкаў", + "EnableHardwareEncoding": "Уключыць апаратнае кадзіраванне", + "EnableNextVideoInfoOverlay": "Паказаць інфармацыю пра наступнае відэа падчас прайгравання", + "EnableNextVideoInfoOverlayHelp": "У канцы відэа паказаць інфармацыю аб наступным відэа ў бягучым спісе прайгравання.", + "EnablePhotos": "Пакажыце фатаграфіі", + "EnableStreamLooping": "Аўтаматычнае прайграванне жывых трансляцый", + "EnableTonemapping": "Уключыць адлюстраванне тонаў", + "EncoderPresetHelp": "Выберыце больш хуткае значэнне, каб палепшыць прадукцыйнасць, або больш павольнае значэнне, каб палепшыць якасць.", + "EndsAtValue": "Заканчваецца ў {0}", + "Features": "Асаблівасці", + "GroupVersions": "Групавыя версіі", + "HeaderAccessSchedule": "Расклад доступу", + "HeaderAddToPlaylist": "Дадаць у спіс прайгравання", + "HeaderAddUpdateImage": "Дадаць/абнавіць відарыс", + "HeaderAddUpdateSubtitle": "Дадаць/абнавіць субтытры", + "HeaderApp": "дадатак", + "HeaderAudioBooks": "Аўдыё кнігі", + "HeaderAutoDiscovery": "Выяўленне сеткі", + "HeaderBlockItemsWithNoRating": "Блакіраваць элементы без або нераспазнанай інфармацыі аб рэйтынгу:", + "HeaderCastAndCrew": "Акцёры і здымачная група", + "HeaderChannelAccess": "Доступ да канала", + "HeaderConfirmRevokeApiKey": "Адклікаць ключ API", + "HeaderContinueListening": "Працягвайце слухаць", + "HeaderDeleteItem": "Выдаліць элемент", + "HeaderDeleteProvider": "Выдаліць пастаўшчыка", + "HeaderDeleteTaskTrigger": "Выдаліць трыгер задачы", + "HeaderDeviceAccess": "Доступ да прылады", + "HeaderDevices": "прылады", + "HeaderEnabledFields": "Уключаныя палі", + "HeaderError": "Памылка", + "HeaderMyMedia": "Мае СМІ", + "HeaderOnNow": "Зараз", + "HeaderPassword": "Пароль", + "HeaderRemoteAccessSettings": "Налады аддаленага доступу", + "HeaderRemoveMediaFolder": "Выдаліць тэчку мультымедыя", + "Help": "Даведка", + "LabelTonemappingDesatHelp": "Ужывайце дэсатурацыю для блікаў, якія перавышаюць гэты ўзровень яркасці. Чым вышэй параметр, тым больш інфармацыі аб колеры будзе захавана. Гэта налада дапамагае прадухіліць ненатуральна цьмяныя колеры для суперблікаў, замест гэтага (плаўна) ператвараючыся ў белыя. Гэта робіць выявы больш натуральнымі, за кошт памяншэння інфармацыі аб колерах, якія не ўваходзяць у дыяпазон. Рэкамендуемыя значэнні і значэнні па змаўчанні - 0 і 0,5.", + "LabelTonemappingParamHelp": "Наладзьце алгарытм танальнага адлюстравання. Рэкамендаваныя значэнні і значэнні па змаўчанні - NaN. Як правіла, пакіньце яго пустым.", + "LabelTonemappingPeak": "Пік танальнага адлюстравання:", + "LabelTonemappingPeakHelp": "Перавызначыць сігнал/намінальны/эталонны пік гэтым значэннем. Карысна, калі ўбудаваная пікавая інфармацыя ў метададзеных дысплея ненадзейная або калі танальнае адлюстраванне з ніжняга дыяпазону на больш высокі. Рэкамендуемыя значэнні і значэнні па змаўчанні - 100 і 0.", + "LabelTonemappingRange": "Дыяпазон танальнага адлюстравання:", + "LabelTonemappingThresholdHelp": "Параметры алгарытму адлюстравання тонаў наладжваюцца для кожнай сцэны. І парог выкарыстоўваецца, каб вызначыць, змянілася сцэна ці не. Калі адлегласць паміж бягучай сярэдняй яркасцю кадра і бягучай сярэдняй яркасцю перавышае парогавае значэнне, мы пералічым сярэднюю і пікавую яркасць сцэны. Рэкамендуемыя значэнні і значэнні па змаўчанні - 0,8 і 0,2.", + "LabelTranscodingProgress": "Ход перакадзіравання:", + "LabelTranscodingTempPathHelp": "Укажыце карыстальніцкі шлях для перакадаваных файлаў, якія абслугоўваюцца кліентамі. Пакіньце пустым, каб выкарыстоўваць сервер па змаўчанні.", + "LabelTranscodingThreadCountHelp": "Выберыце максімальную колькасць патокаў для выкарыстання пры перакадзіраванні. Памяншэнне колькасці патокаў знізіць загрузку працэсара, але можа быць недастаткова хутка пераўтворана для гладкага прайгравання.", + "LabelTunerIpAddress": "IP-адрас цюнэра:", + "LabelTunerType": "Тып цюнэра:", + "LabelTypeMetadataDownloaders": "Сродкі загрузкі метаданых ({0}):", + "LabelUDPPortRange": "Дыяпазон сувязі UDP:", + "LabelUDPPortRangeHelp": "Забараніць Jellyfin выкарыстоўваць гэты дыяпазон партоў пры падключэнні UDP. (Па змаўчанні 1024 - 645535).
Заўвага: некаторыя функцыі патрабуюць фіксаваных партоў, якія могуць знаходзіцца па-за межамі гэтага дыяпазону.", + "LabelUnstable": "Няўстойлівы", + "LabelUseNotificationServices": "Скарыстайцеся наступнымі сэрвісамі:", + "LabelUserAgent": "Агент карыстальніка:", + "LabelUserLibrary": "Карыстальніцкая бібліятэка:", + "LabelUserLibraryHelp": "Выберыце, якую бібліятэку карыстальніка паказаць на прыладзе. Пакіньце пустым, каб атрымаць налады па змаўчанні.", + "LabelUserLoginAttemptsBeforeLockout": "Няўдалыя спробы ўваходу перад тым, як карыстальнік будзе заблакіраваны:", + "LabelUserMaxActiveSessions": "Максімальная колькасць адначасовых карыстальніцкіх сеансаў:", + "LabelVersion": "Версія:", + "LabelVideoResolution": "Разрозненне відэа:", + "LabelXDlnaCap": "Ідэнтыфікатар магчымасці прылады:", + "LabelXDlnaDocHelp": "Вызначце змесціва элемента «X_DLNADOC» у прасторы імёнаў «urn:schemas-dlna-org:device-1-0».", + "LanNetworksHelp": "Раздзелены коскамі спіс IP-адрасоў або запісаў IP/сеткавай маскі для сетак, якія будуць разглядацца ў лакальнай сетцы пры выкананні абмежаванняў паласы прапускання. Калі гэта ўстаноўлена, усе астатнія IP-адрасы будуць разглядацца як якія знаходзяцца ў знешняй сетцы і на іх будуць распаўсюджвацца абмежаванні знешняй прапускной здольнасці. Калі поле пакінуць пустым, у лакальнай сетцы лічыцца толькі падсетка сервера.", + "LeaveBlankToNotSetAPassword": "Вы можаце пакінуць гэта поле пустым, каб не ўсталёўваць пароль.", + "LabelAccessEnd": "Час заканчэння:", + "ListPaging": "{0}-{1} з {2}", + "LiveBroadcasts": "Прамыя трансляцыі", + "LiveTV": "Жывое тэлебачанне", + "MaxParentalRatingHelp": "Кантэнт з больш высокім рэйтынгам будзе схаваны ад гэтага карыстальніка.", + "MediaInfoBitrate": "Бітрэйт", + "MediaInfoChannels": "Каналы", + "MediaInfoColorTransfer": "Перадача колеру", + "MediaInfoLanguage": "мова", + "LabelAllowHWTranscoding": "Дазволіць апаратнае перакадзіраванне", + "MediaInfoLevel": "Узровень", + "MediaInfoRefFrames": "Рэферальныя кадры", + "MediaIsBeingConverted": "Носьбіт пераўтворыцца ў фармат, сумяшчальны з прыладай, якая прайгравае мультымедыя.", + "MessageAddRepository": "Калі вы хочаце дадаць рэпазітар, націсніце кнопку побач з загалоўкам і запоўніце запытаную інфармацыю.", + "LabelAutomaticDiscovery": "Уключыць аўтаматычнае выяўленне:", + "MessageAreYouSureDeleteSubtitles": "Вы ўпэўнены, што хочаце выдаліць гэты файл субтытраў?", + "MessageBrowsePluginCatalog": "Праглядзіце наш каталог убудоў, каб убачыць даступныя ўбудовы.", + "MessageChangeRecordingPath": "Змена папкі запісу не прывядзе да пераносу існуючых запісаў са старога месца ў новае. Пры жаданні вам трэба будзе перамясціць іх уручную.", + "MessageConfirmDeleteGuideProvider": "Вы ўпэўнены, што хочаце выдаліць гэтага пастаўшчыка даведніка?", + "MessageConfirmProfileDeletion": "Вы ўпэўнены, што хочаце выдаліць гэты профіль?", + "MessageConfirmRevokeApiKey": "Вы ўпэўнены, што хочаце адклікаць гэты ключ API? Злучэнне прыкладання з гэтым серверам будзе раптоўна спынена.", + "MessageDownloadQueued": "Спампоўка ў чарзе.", + "MessageEnablingOptionLongerScans": "Уключэнне гэтай опцыі можа прывесці да значна больш доўгага сканавання бібліятэкі.", + "LabelDisplayLanguage": "Мова адлюстравання:", + "MessageForgotPasswordFileCreated": "Наступны файл быў створаны на вашым серверы і змяшчае інструкцыі аб тым, як дзейнічаць далей:", + "MessageForgotPasswordInNetworkRequired": "Паўтарыце спробу ў вашай хатняй сетцы, каб пачаць працэс скіду пароля.", + "MessageGetInstalledPluginsError": "Адбылася памылка пры атрыманні спісу ўсталяваных у цяперашні час плагінаў.", + "LabelEnableDlnaPlayTo": "Уключыце функцыю DLNA «Прайграць у».", + "MessageNoPluginsInstalled": "У вас не ўстаноўлены плагіны.", + "MessageNoRepositories": "Няма сховішчаў.", + "MessageNoServersAvailable": "З дапамогай аўтаматычнага выяўлення сервераў не знойдзены серверы.", + "MessageNothingHere": "Нічога тут.", + "MessageNoTrailersFound": "Усталюйце канал трэйлераў, каб палепшыць свае ўражанні ад фільмаў, дадаўшы бібліятэку інтэрнэт-трэйлераў.", + "LabelHttpsPort": "Нумар лакальнага порта HTTPS:", + "LabelImageType": "Тып выявы:", + "MessagePasswordResetForUsers": "У наступных карыстальнікаў былі скінуты паролі. Цяпер яны могуць увайсці з дапамогай простых PIN-кодаў, якія выкарыстоўваліся для скіду.", + "MessagePlayAccessRestricted": "Прайграванне гэтага кантэнту зараз абмежавана. Калі ласка, звярніцеся да адміністратара вашага сервера для атрымання дадатковай інфармацыі.", + "MessagePleaseEnsureInternetMetadata": "Пераканайцеся, што спампоўка інтэрнэт-метададзеных уключана.", + "LabelKodiMetadataUserHelp": "Захоўвайце даныя гадзінніка ў файлы NFO для выкарыстання іншымі праграмамі.", + "LabelLineup": "Склад:", + "MessagePluginConfigurationRequiresLocalAccess": "Каб наладзіць гэты плагін, увайдзіце непасрэдна на лакальны сервер.", + "LabelPath": "Шлях:", + "LabelRecord": "запіс:", + "LabelTonemappingParam": "Параметр танальнага адлюстравання:", + "LabelTranscodingThreadCount": "Колькасць патокаў перакадзіравання:", + "LabelTVHomeScreen": "Галоўны экран у рэжыме ТБ:", + "LabelRuntimeMinutes": "час выканання:", + "LabelUsername": "імя карыстальніка:", + "LabelVideoBitrate": "Бітрэйт відэа:", + "LabelSubtitlePlaybackMode": "Рэжым субтытраў:", + "LabelType": "Тып:", + "MediaInfoForced": "Вымушана", + "MediaInfoInterlaced": "Перапляценне", + "MessageConfirmRestart": "Вы ўпэўнены, што хочаце перазапусціць Jellyfin?", + "EnableCardLayout": "Паказаць візуальны CardBox", + "EnableQuickConnect": "Уключыце Quick Connect на гэтым серверы", + "EveryHour": "Кожную гадзіну", + "FileNotFound": "Файл не знойдзены.", + "FileReadCancelled": "Прачытанне файла было адменена.", + "Fullscreen": "Поуны экран", + "Guide": "Кіраўніцтва", + "HeaderApiKey": "Ключ API", + "HeaderAudioSettings": "Налады гуку", + "HeaderBranding": "Брэндынг", + "HeaderCodecProfile": "Профіль кодэка", + "HeaderConfigureRemoteAccess": "Наладзьце аддалены доступ", + "HeaderContinueReading": "Працягнуць чытанне", + "HeaderHttpHeaders": "Загалоўкі HTTP", + "HeaderKeepRecording": "Працягвайце запіс", + "HeaderLibrarySettings": "Налады бібліятэкі", + "HeaderMyDevice": "Мая прылада", + "HeaderOtherItems": "Іншыя прадметы", + "HeaderPlaybackError": "Памылка прайгравання", + "MessagePluginInstallDisclaimer": "Убудовы, створаныя членамі супольнасці, - выдатны спосаб палепшыць ваш вопыт з дапамогай дадатковых функцый і пераваг. Перад усталяваннем, калі ласка, звярніце ўвагу на наступствы, якія яны могуць аказаць на ваш сервер, такія як больш працяглае сканаванне бібліятэк, дадатковая фонавая апрацоўка і зніжэнне стабільнасці сістэмы.", + "MessagePluginInstalled": "Плагін быў паспяхова ўсталяваны. Сервер трэба будзе перазапусціць, каб змены ўступілі ў сілу.", + "MessageSent": "Паведамленне адпраўлена.", + "MessageSyncPlayCreateGroupDenied": "Для стварэння групы патрабуецца дазвол.", + "MessageSyncPlayDisabled": "SyncPlay адключаны.", + "HeaderSortBy": "Сартаваць па", + "MessageSyncPlayEnabled": "SyncPlay уключаны.", + "MessageSyncPlayErrorAccessingGroups": "Падчас доступу да спісу груп адбылася памылка.", + "MessageSyncPlayErrorNoActivePlayer": "Актыўны гулец не знойдзены. SyncPlay быў адключаны.", + "HeaderVideos": "Відэа", + "HeaderVideoType": "Тып відэа", + "MessageSyncPlayGroupDoesNotExist": "Не ўдалося далучыцца да групы, таму што яна не існуе.", + "MessageSyncPlayGroupWait": "{0} буферызуе…", + "ImportFavoriteChannelsHelp": "Будуць імпартаваны толькі каналы, пазначаныя як абраныя на цюнэры.", + "MessageSyncPlayJoinGroupDenied": "Не магу далучыцца да групы.", + "MessageSyncPlayLibraryAccessDenied": "Доступ да гэтага кантэнту абмежаваны.", + "MessageSyncPlayNoGroupsAvailable": "Няма даступных груп. Спачатку пачніце што-небудзь гуляць.", + "LabelAirsBeforeSeason": "Эфір перад сезонам:", + "LabelAlbumArtMaxHeight": "Максімальная вышыня вокладкі альбома:", + "LabelAlbumArtMaxResHelp": "Максімальная раздзяляльнасць вокладкі альбома, якая паказваецца праз уласцівасць 'upnp:albumArtURI'.", + "LabelAlbumArtPN": "Вокладка альбома ПН:", + "LabelAllowedRemoteAddresses": "Фільтр аддаленага IP-адраса:", + "MessageSyncPlayPlaybackPermissionRequired": "Патрабуецца дазвол на прайграванне.", + "MessageSyncPlayUserJoined": "{0} далучыўся да групы.", + "MessageSyncPlayUserLeft": "{0} пакінуў групу.", + "LabelAuthProvider": "Пастаўшчык аўтэнтыфікацыі:", + "LabelAutoDiscoveryTracingHelp": "Калі ўключана, пакеты, атрыманыя на порт аўтаматычнага выяўлення, будуць рэгістравацца.", + "LabelBindToLocalNetworkAddress": "Прывязка да адрасу лакальнай сеткі:", + "MessageUnableToConnectToServer": "Мы не можам зараз падключыцца да выбранага сервера. Упэўніцеся, што ён запушчаны, і паўтарыце спробу.", + "LabelBlastMessageInterval": "Інтэрвал жывых паведамленняў:", + "LabelCachePath": "Шлях кэша:", + "LabelCancelled": "Адменена", + "LabelCertificatePassword": "Пароль сертыфіката:", + "LabelChannels": "Каналы:", + "LabelChromecastVersion": "Версія Google Cast", + "MessageUnsetContentHelp": "Змесціва будзе адлюстроўвацца ў выглядзе звычайных тэчак. Для дасягнення найлепшых вынікаў выкарыстоўвайце менеджэр метададзеных, каб усталяваць тыпы змесціва ўкладзеных тэчак.", + "MessageYouHaveVersionInstalled": "Зараз у вас усталявана версія {0}.", + "MetadataManager": "Менеджэр метаданых", + "MetadataSettingChangeHelp": "Змяненне налад метададзеных паўплывае на дадаванне новага змесціва. Каб абнавіць існуючы кантэнт, адкрыйце экран падрабязных звестак і націсніце кнопку «Абнавіць» або выканайце масавае абнаўленне з дапамогай «Менеджара метададзеных».", + "MillisecondsUnit": "Спадарыня", + "LabelCustomDeviceDisplayNameHelp": "Увядзіце карыстальніцкае імя для адлюстравання або пакіньце пустым, каб выкарыстоўваць імя, паведамленае прыладай.", + "LabelCustomRating": "Індывідуальны рэйтынг:", + "LabelDateAddedBehaviorHelp": "Калі прысутнічае значэнне метаданых, яно заўсёды будзе выкарыстоўвацца перад любым з гэтых варыянтаў.", + "MixedMoviesShows": "Змешаныя фільмы і шоу", + "LabelDidlMode": "Рэжым DIDL:", + "Mixer": "Міксер", + "LabelDisplayOrder": "Парадак адлюстравання:", + "LabelDownloadLanguages": "Спампаваць мовы:", + "Mobile": "Мабільны", + "Monday": "панядзелак", + "MoreFromValue": "Больш ад {0}", + "LabelDroppedFrames": "Выпушчаныя кадры:", + "MoreMediaInfo": "Інфармацыя аб СМІ", + "MoveRight": "Рух направа", + "Movie": "Фільм", + "MovieLibraryHelp": "Праглядзіце {0}кіраўніцтва па назвах фільмаў{1}.", + "Name": "Імя", + "New": "Новы", + "NewCollectionHelp": "Калекцыі дазваляюць ствараць персаналізаваныя групы фільмаў і іншага кантэнту бібліятэкі.", + "NewCollectionNameExample": "Прыклад: калекцыя Star Wars", + "NewEpisodes": "Новыя эпізоды", + "Next": "Далей", + "LabelEnableDlnaServer": "Уключыць сервер DLNA", + "LabelEnableIP4": "Уключыць IPv4", + "NoNewDevicesFound": "Новыя прылады не знойдзены. Каб дадаць новы цюнэр, зачыніце гэтае дыялогавае акно і ўвядзіце інфармацыю аб прыладзе ўручную.", + "NumLocationsValue": "{0} тэчак", + "OneChannel": "Адзін канал", + "LabelEncoderPreset": "Папярэдні набор кадавання:", + "OnlyForcedSubtitlesHelp": "Будуць загружаныя толькі субтытры, пазначаныя як абавязковыя.", + "Option3D": "3D", + "OptionAllowAudioPlaybackTranscoding": "Дазволіць прайграванне аўдыя, якое патрабуе перакадзіравання", + "LabelFormat": "Фармат:", + "OptionAllowLinkSharingHelp": "Абагульваюцца толькі вэб-старонкі, якія змяшчаюць медыя-інфармацыю. Медыяфайлы ніколі не абагульваюцца. Абагульванне абмежавана па часе і скончыцца праз {0} дзён.", + "LabelInNetworkSignInWithEasyPassword": "Уключыць уваход у сетку з маім простым PIN-кодам", + "OptionAllowManageLiveTv": "Дазволіць кіраванне запісам ТБ", + "OptionAllowMediaPlayback": "Дазволіць прайграванне мультымедыя", + "LabelKodiMetadataDateFormat": "Фармат даты выпуску:", + "OptionAllowMediaPlaybackTranscodingHelp": "Абмежаванне доступу да перакадзіравання можа прывесці да збояў прайгравання ў кліентах з-за непадтрымоўваных фарматаў мультымедыя.", + "OptionAllowRemoteControlOthers": "Дазволіць дыстанцыйнае кіраванне іншымі карыстальнікамі", + "OptionAllowRemoteSharedDevices": "Дазволіць дыстанцыйнае кіраванне агульнымі прыладамі", + "LabelKodiMetadataUser": "Захаваць даныя карыстальніцкіх гадзіннікаў у файлы NFO для:", + "OptionAllowSyncTranscoding": "Дазволіць загрузку і сінхранізацыю медыяфайлаў, якія патрабуюць перакадзіравання", + "OptionAllowUserToManageServer": "Дазволіць гэтаму карыстальніку кіраваць серверам", + "OptionAllowVideoPlaybackRemuxing": "Дазволіць прайграванне відэа, якое патрабуе пераўтварэння без паўторнага кадавання", + "OptionAllowVideoPlaybackTranscoding": "Дазволіць прайграванне відэа, якое патрабуе перакадзіравання", + "LabelMaxParentalRating": "Максімальна дазволены бацькоўскі рэйтынг:", + "OptionAllUsers": "Усе карыстальнікі", + "OptionAutomaticallyGroupSeries": "Аўтаматычна аб'ядноўваць серыі, якія размеркаваны па некалькіх папках", + "LabelMaxStreamingBitrate": "Максімальная якасць трансляцыі:", + "LabelMetadataDownloadLanguage": "Пажаданая мова спампоўкі:", + "OptionAutomaticallyGroupSeriesHelp": "Серыі, якія размешчаны ў некалькіх папках у гэтай бібліятэцы, будуць аўтаматычна аб'яднаны ў адну серыю.", + "LabelMinResumeDurationHelp": "Самая кароткая працягласць відэа ў секундах, якая захавае месца прайгравання і дазволіць вам аднавіць.", + "OptionDaily": "Штодня", + "LabelModelDescription": "Апісанне мадэлі:", + "OptionDateEpisodeAdded": "Дата дадання эпізоду", + "LabelMovieRecordingPath": "Шлях запісу фільма:", + "OptionDateShowAdded": "Паказ даты дададзены", + "OptionDateAddedFileTime": "Выкарыстоўвайце дату стварэння файла", + "OptionDateAddedImportTime": "Выкарыстоўвайце адсканіраваную дату ў бібліятэцы", + "OptionDisableUser": "Адключыць гэтага карыстальніка", + "OptionDisableUserHelp": "Сервер не дазволіць ніякіх злучэнняў ад гэтага карыстальніка. Існуючыя сувязі будуць раптоўна спынены.", + "OptionDisplayFolderView": "Адлюстраванне прагляду тэчак, каб паказаць простыя папкі мультымедыя", + "LabelOverview": "агляд:", + "LabelPreferredSubtitleLanguage": "Пажаданая мова субтытраў:", + "LabelProtocolInfo": "Інфармацыя аб пратаколе:", + "LabelRepositoryUrlHelp": "Размяшчэнне маніфеста рэпазітара, які вы хочаце ўключыць.", + "LabelRequireHttpsHelp": "Калі пазначана, сервер будзе аўтаматычна перанакіроўваць усе запыты праз HTTP на HTTPS. Гэта не мае ніякага эфекту, калі сервер не праслухоўвае HTTPS.", + "LabelServerHostHelp": "192.168.1.100:8096 або https://myserver.com", + "LabelServerName": "Імя сервера:", + "LabelServerNameHelp": "Гэта імя будзе выкарыстоўвацца для ідэнтыфікацыі сервера і па змаўчанні будзе імем хоста сервера.", + "LabelSonyAggregationFlags": "Сцягі агрэгацыі Sony:", + "LabelSportsCategories": "Спартыўныя катэгорыі:", + "OptionDisplayFolderViewHelp": "Адлюстроўвайце папкі разам з іншымі медыятэкамі. Гэта можа спатрэбіцца, калі вы жадаеце мець просты выгляд тэчак.", + "LabelSyncPlayAccessNone": "Адключана для гэтага карыстальніка", + "LabelSyncPlayHaltPlaybackDescription": "І ігнаруйце бягучыя абнаўленні спісаў прайгравання", + "OptionEnableForAllTuners": "Уключыць для ўсіх цюнэраў", + "OptionEstimateContentLength": "Ацаніце даўжыню змесціва пры перакадзіраванні", + "OptionForceRemoteSourceTranscoding": "Прымусовае перакадзіраванне аддаленых медыякрыніц, такіх як Live TV", + "OptionHasThemeVideo": "Тэматычнае відэа", + "OptionHideUser": "Схаваць гэтага карыстальніка з экранаў уваходу", + "OptionHlsSegmentedSubtitles": "HLS сегментаваныя субтытры", + "OptionIgnoreTranscodeByteRangeRequests": "Ігнараваць запыты на перакадзіраванне дыяпазону байтаў", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Гэтыя запыты будуць выконвацца, але загаловак дыяпазону байтаў будзе ігнаравацца.", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionLoginAttemptsBeforeLockout": "Вызначце, колькі няправільных спроб уваходу можна зрабіць, перш чым адбудзецца блакіроўка.", + "LabelTonemappingThreshold": "Парог танальнага адлюстравання:", + "LabelTranscodingFramerate": "Частата кадраў перакадзіравання:", + "OptionLoginAttemptsBeforeLockoutHelp": "Нулявое значэнне азначае ўспадкоўванне па змаўчанні трох спроб для звычайных карыстальнікаў і пяці для адміністратараў. Вызначэнне -1 адключыць функцыю.", + "OptionMaxActiveSessions": "Усталюйце максімальную колькасць адначасовых сеансаў карыстальнікаў.", + "LabelXDlnaCapHelp": "Вызначце змесціва элемента «X_DLNACAP» у прасторы імёнаў «urn:schemas-dlna-org:device-1-0».", + "OptionMaxActiveSessionsHelp": "Значэнне 0 адключыць функцыю.", + "OptionOnInterval": "На інтэрвале", + "OptionPlainStorageFoldersHelp": "Усе папкі прадстаўлены ў DIDL як \"object.container.storageFolder\" замест больш канкрэтнага тыпу, напрыклад \"object.container.person.musicArtist\".", + "OptionPlainVideoItems": "Паказваць усе відэа ў выглядзе простых відэаэлементаў", + "OptionProtocolHls": "Жывая трансляцыя HTTP (HLS)", + "MediaInfoAspectRatio": "Суадносіны бакоў", + "OptionProtocolHttp": "HTTP", + "OptionRandom": "Выпадковы", + "OptionRegex": "Рэгулярны выраз", + "OptionReportByteRangeSeekingWhenTranscoding": "Паведаміце, што сервер падтрымлівае пошук байтаў пры перакадзіраванні", + "MediaInfoExternal": "Знешні", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "Гэта патрабуецца для некаторых прылад, якія не вельмі добра шукаюць час.", + "OptionRequirePerfectSubtitleMatch": "Загружайце толькі субтытры, якія ідэальна падыходзяць для відэафайлаў", + "MessageConfirmAppExit": "Вы хочаце выйсці?", + "MessageConfirmRemoveMediaLocation": "Вы ўпэўнены, што хочаце выдаліць гэта месца?", + "MessageCreateAccountAt": "Стварыце ўліковы запіс на {0}", + "MessageInvalidUser": "Няправільнае імя карыстальніка або пароль. Калі ласка, паспрабуйце яшчэ раз.", + "MessageItemsAdded": "Элементы дададзены.", + "MessageItemSaved": "Элемент захаваны.", + "OptionRequirePerfectSubtitleMatchHelp": "Патрабаванне ідэальнага супадзення адфільтруе субтытры, каб уключыць толькі тыя, якія былі правераны і правераны з вашым дакладным відэафайлам. Зняцце галачкі павялічвае верагоднасць спампоўкі субтытраў, але павялічвае верагоднасць няправільнага ці няправільнага тэксту субтытраў.", + "MessageNoGenresAvailable": "Дазволіць некаторым пастаўшчыкам метададзеных атрымліваць жанры з Інтэрнэту.", + "OptionResumable": "Аднаўляецца", + "OptionSaveMetadataAsHiddenHelp": "Змена гэтага будзе прымяняцца да новых захаваных метаданых. Існуючыя файлы метададзеных будуць абноўлены ў наступны раз, калі яны будуць захаваны на серверы.", + "OptionTrackName": "Назва дарожкі", + "OptionTvdbRating": "Рэйтынг TVDB", + "OptionUnairedEpisode": "Невыдадзеныя эпізоды", + "OptionWakeFromSleep": "Прачнуцца ад сну", + "OriginalAirDateValue": "Першапачатковая дата эфіру: {0}", + "ParentalRating": "Бацькоўскі рэйтынг", + "PasswordSaved": "Пароль захаваны.", + "OnlyImageFormats": "Толькі фарматы малюнкаў (VobSub, PGS, SUB)", + "OnWakeFromSleep": "Пры абуджэнні ад сну", + "OptionAdminUsers": "Адміністратары", + "PathNotFound": "Шлях не знойдзены. Пераканайцеся, што шлях правільны, і паўтарыце спробу.", + "PerfectMatch": "Ідэальны матч", + "Person": "Асоба", + "PlaceFavoriteChannelsAtBeginning": "Размесціце любімыя каналы ў пачатку", + "OptionAllowRemoteSharedDevicesHelp": "Прылады DLNA лічацца агульнымі, пакуль карыстальнік не пачне імі кіраваць.", + "PlaybackData": "Інфармацыя аб прайграванні", + "PlaybackErrorPlaceHolder": "Гэта запаўняльнік для фізічных носьбітаў, якія Jellyfin не можа прайграць. Калі ласка, устаўце дыск для прайгравання.", + "PlaybackRate": "Хуткасць прайгравання", + "PlayCount": "Колькасць гульняў", + "PlayNextEpisodeAutomatically": "Прайграць наступны эпізод аўтаматычна", + "PleaseConfirmPluginInstallation": "Калі ласка, націсніце \"ОК\", каб пацвердзіць, што вы прачыталі сказанае вышэй і хочаце працягнуць усталёўку плагіна.", + "PleaseEnterNameOrId": "Увядзіце імя або знешні ідэнтыфікатар.", + "OptionEnableAccessFromAllDevices": "Уключыць доступ з усіх прылад", + "PreferEmbeddedEpisodeInfosOverFileNames": "Аддайце перавагу ўбудаванай інфармацыі аб серыях перад назвамі файлаў", + "OptionEnableExternalContentInSuggestions": "Уключыць знешні кантэнт у прапановах", + "OptionEnableM2tsModeHelp": "Уключыце рэжым M2TS пры кадзіраванні ў MPEG-TS.", + "OptionEquals": "Роўнае", + "PreferEmbeddedTitlesOverFileNamesHelp": "Вызначце загаловак для адлюстравання, які будзе выкарыстоўвацца, калі інтэрнэт-метададзеныя або лакальныя метаданыя недаступныя.", + "OptionImdbRating": "Рэйтынг IMDb", + "AllowEmbeddedSubtitles": "Адключыць розныя тыпы ўбудаваных субтытраў", + "OptionMax": "Макс", + "AllowEmbeddedSubtitlesHelp": "Адключыць субтытры, спакаваныя ў мультымедыйныя кантэйнеры. Патрабуецца поўнае абнаўленне бібліятэкі.", + "OptionNew": "Новы…", + "AllowEmbeddedSubtitlesAllowNoneOption": "Не дазваляць", + "AllowEmbeddedSubtitlesAllowTextOption": "Дазволіць тэкст", + "Premiere": "Прэм'ера", + "Premieres": "Прэм'еры", + "Previous": "Папярэдні", + "PreviousTrack": "Перайсці да папярэдняга", + "OptionPlayCount": "Прайграць лічыльнік", + "Print": "Друк", + "ProductionLocations": "Вытворчыя месцы", + "OptionReleaseDate": "Дата выпуску", + "Profile": "Профіль", + "QuickConnectActivationSuccessful": "Паспяхова актывавана", + "QuickConnectAuthorizeCode": "Каб увайсці, увядзіце код {0}", + "QuickConnectAuthorizeSuccess": "Запыт дазволены", + "QuickConnectDescription": "Каб увайсці з дапамогай Quick Connect, абярыце кнопку «Quick Connect» на прыладзе, з якой вы ўваходзіце, і ўвядзіце паказаны ніжэй код.", + "QuickConnectNotAvailable": "Папрасіце адміністратара сервера ўключыць Quick Connect", + "OptionSpecialEpisode": "Спец", + "RecommendationBecauseYouWatched": "Таму што вы глядзелі {0}", + "RecommendationStarring": "У галоўнай ролі {0}", + "OptionWeekends": "Выходныя дні", + "OptionWeekly": "Штотыдзень", + "OriginalAirDate": "Першапачатковая дата эфіру", + "PackageInstallCompleted": "Усталяванне {0} (версія {1}) завершана.", + "RecordingScheduled": "Запіс запланаваны.", + "RecordSeries": "Запіс серыялаў", + "Refresh": "Абнавіць", + "Photo": "Фота", + "RefreshDialogHelp": "Метададзеныя абнаўляюцца на аснове налад і інтэрнэт-сэрвісаў, уключаных на панэлі кіравання.", + "RefreshMetadata": "Абнавіць метаданыя", + "Play": "гуляць", + "RefreshQueued": "Абнавіць у чарзе.", + "RememberAudioSelectionsHelp": "Паспрабуйце ўсталяваць гукавую дарожку, якая найбольш адпавядае апошняму відэа.", + "RememberSubtitleSelectionsHelp": "Паспрабуйце ўсталяваць дарожку субтытраў, якая найбольш адпавядае апошняму відэа.", + "Remixer": "Рэмікс", + "RepeatAll": "Паўтарыце ўсё", + "PlayNext": "Гуляць далей", + "RepeatOne": "Паўтарыце адно", + "ReplaceAllMetadata": "Замяніць усе метаданыя", + "PleaseRestartServerName": "Перазапусціце Jellyfin на {0}.", + "ResetPassword": "Скінуць пароль", + "Save": "Захаваць", + "SaveChanges": "Захавайце змены", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Выкарыстоўвайце інфармацыю аб серыі з убудаваных метаданых, калі яны ёсць.", + "SaveSubtitlesIntoMediaFolders": "Захаваць субтытры ў папках мультымедыя", + "AllowEmbeddedSubtitlesAllowAllOption": "Дазволіць усе", + "AllowEmbeddedSubtitlesAllowImageOption": "Дазволіць малюнак", + "Producer": "Прадзюсер", + "Production": "Вытворчасць", + "SaveSubtitlesIntoMediaFoldersHelp": "Захоўванне субтытраў побач з відэафайламі дазволіць ім лягчэй кіраваць.", + "PluginFromRepo": "{0} са сховішча {1}", + "Quality": "Якасць", + "ScanForNewAndUpdatedFiles": "Сканіраванне новых і абноўленых файлаў", + "QuickConnectInvalidCode": "Няправільны код хуткага злучэння", + "ScanLibrary": "Бібліятэка сканавання", + "Schedule": "Расклад", + "ScreenResolution": "Дазвол экрана", + "QuickConnectNotActive": "Хуткае злучэнне не актыўнае на гэтым серверы", + "SearchResults": "Вынікі пошуку", + "Rate": "Стаўка", + "RecommendationDirectedBy": "Рэжысёр: {0}", + "SelectServer": "Выберыце Сервер", + "Series": "серыял", + "ServerRestartNeededAfterPluginInstall": "Jellyfin трэба будзе перазапусціць пасля ўстаноўкі плагіна.", + "ServerUpdateNeeded": "Гэты сервер неабходна абнавіць. Каб спампаваць апошнюю версію, наведайце {0}", + "Settings": "Налады", + "RememberMe": "Запомні мяне", + "SettingsSaved": "Налады захаваны.", + "Restart": "Перазапуск", + "ResumeAt": "Рэзюмаваць з {0}", + "SettingsWarning": "Змяненне гэтых значэнняў можа выклікаць нестабільнасць або збоі ў падключэнні. Калі ў вас узніклі праблемы, мы рэкамендуем вярнуць іх да стандартных.", + "ShowParentImages": "Паказаць выявы серыі", + "ShowTitle": "Паказаць назву", + "ShowYear": "Пакажыце год", + "SkipEpisodesAlreadyInMyLibrary": "Не запісваць эпізоды, якія ўжо ёсць у маёй бібліятэцы", + "SendMessage": "Адправіць паведамленне", + "SmallCaps": "Малыя літары", + "Smaller": "Меншы", + "Smart": "Разумны", + "SeriesYearToPresent": "{0} - цяперашні час", + "SortChannelsBy": "Сартаваць каналы па:", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Гэтыя налады таксама прымяняюцца да любога прайгравання Google Cast, запушчанага гэтай прыладай.", + "SubtitleAppearanceSettingsDisclaimer": "Наступныя налады не прымяняюцца да графічных субтытраў, згаданых вышэй, або да субтытраў ASS/SSA, у якія ўбудаваны ўласныя стылі.", + "ShowAdvancedSettings": "Паказаць дадатковыя налады", + "Suggestions": "Прапановы", + "TabDashboard": "Прыборная панэль", + "TabLatest": "Апошні", + "TabLogs": "Лагі", + "TabMusic": "Музыка", + "TabParentalControl": "Бацькоўскі кантроль", + "SubtitleOffset": "Зрушэнне субтытраў", + "TabPlugins": "Убудовы", + "TabProfiles": "Профілі", + "TabRepositories": "Сховішчы", + "TabResponses": "Адказы", + "TabUpcoming": "Маючы адбыцца", + "Tags": "Тэгі", + "TagsValue": "Тэгі: {0}", + "TheseSettingsAffectSubtitlesOnThisDevice": "Гэтыя налады ўплываюць на субтытры на гэтай прыладзе", + "Thumb": "Вялікі палец", + "TonemappingAlgorithmHelp": "Тональнае адлюстраванне можна дакладна наладзіць. Калі вы не знаёмыя з гэтымі параметрамі, проста захавайце стандартныя. Рэкамендаванае значэнне - \"BT.2390\".", + "Track": "Трэк", + "TypeOptionPluralBook": "Кнігі", + "UninstallPluginConfirmation": "Вы ўпэўнены, што хочаце выдаліць {0}?", + "UseDoubleRateDeinterlacing": "Падвоіць частату кадраў пры дэінтэрлейсінгу", + "UseDoubleRateDeinterlacingHelp": "Гэты параметр выкарыстоўвае частату палёў пры дэінтэрлейсінгу, які часта называюць боб дэінтэрлейсінгам, які падвойвае частату кадраў відэа для забеспячэння поўнага руху, падобнага да таго, што вы бачыце пры праглядзе празрадковага відэа на тэлевізары.", + "ValueContainer": "Кантэйнер: {0}", + "TitleHostingSettings": "Налады хостынгу", + "TitlePlayback": "Прайграванне", + "ValueMovieCount": "{0} фільмаў", + "ValueOneAlbum": "1 альбом", + "Tuesday": "аўторак", + "ValueOneEpisode": "1 эпізод", + "ValueSeconds": "{0} секунд", + "ValueSongCount": "Песень: {0}", + "TypeOptionPluralSeason": "Поры года", + "ValueTimeLimitMultiHour": "Ліміт часу: {0} гадзін", + "ValueTimeLimitSingleHour": "Абмежаванне па часе: 1 гадзіна", + "Vertical": "Вертыкальны", + "VideoAudio": "Відэа Аўдыё", + "ViewAlbum": "Праглядзець альбом", + "ViewAlbumArtist": "Паглядзець выканаўцу альбома", + "ViewPlaybackInfo": "Прагляд інфармацыі аб прайграванні", + "Watched": "Глядзеў", + "Unplayed": "Негуляны", + "Wednesday": "серада", + "WeeklyAt": "{0} у {1}", + "XmlTvSportsCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як спартыўныя праграмы. Раздзяляйце некалькі знакамі '|'.", + "Yes": "так", + "Yesterday": "Учора", + "HeaderSelectFallbackFontPathHelp": "Праглядзіце або ўвядзіце шлях да папкі рэзервовага шрыфта, які будзе выкарыстоўвацца для візуалізацыі субтытраў ASS/SSA.", + "LabelFallbackFontPathHelp": "Укажыце шлях, які змяшчае запасныя шрыфты для візуалізацыі субтытраў ASS/SSA. Максімальна дазволены агульны памер шрыфта - 20 МБ. Рэкамендуюцца лёгкія і зручныя для Інтэрнэту фарматы шрыфтоў, такія як woff2.", + "Remuxing": "Рэмуксаванне", + "RemuxHelp1": "Мультымедыя знаходзіцца ў несумяшчальным файлавым кантэйнеры (MKV, AVI, WMV і г.д.), але як відэаплынь, так і аўдыяструмень сумяшчальныя з прыладай. Носьбіт будзе перапакоўвацца без страт на хаду перад адпраўкай на прыладу.", + "LabelAudioInfo": "Аўдыё інфармацыя", + "LabelTranscodingInfo": "Інфармацыя аб перакадзіраванні", + "LabelAllowedAudioChannels": "Максімальна дазволеныя аўдыяканалы", + "LabelSelectMono": "Мона", + "LabelSelectStereo": "Стэрэа", + "MessageChromecastConnectionError": "Ваш прыёмнік Google Cast не можа звязацца з серверам Jellyfin. Праверце злучэнне і паўтарыце спробу.", + "AllowVppTonemappingHelp": "Поўнае адлюстраванне тонаў на аснове драйвера Intel. У цяперашні час працуе толькі на пэўным абсталяванні з відэа HDR10. Гэта мае больш высокі прыярытэт у параўнанні з іншай рэалізацыяй OpenCL.", + "AudioCodecNotSupported": "Аўдыякодэк не падтрымліваецца", + "ContainerNotSupported": "Кантэйнер не падтрымліваецца", + "SubtitleCodecNotSupported": "Кодэк субтытраў не падтрымліваецца", + "AudioChannelsNotSupported": "Колькасць аўдыяканалаў не падтрымліваецца", + "VideoResolutionNotSupported": "Раздзяленне відэа не падтрымліваецца", + "AudioProfileNotSupported": "Профіль аўдыякодэка не падтрымліваецца", + "ValueConditions": "Умовы: {0}", + "AudioSampleRateNotSupported": "Частата дыскрэтызацыі аўдыя не падтрымліваецца", + "InterlacedVideoNotSupported": "Празрадковае відэа не падтрымліваецца", + "ValueOneSong": "1 песня", + "VideoFramerateNotSupported": "Частата кадраў відэа не падтрымліваецца", + "VideoLevelNotSupported": "Узровень відэакодэка не падтрымліваецца", + "ContainerBitrateExceedsLimit": "Бітрэйт відэа перавышае ліміт", + "PreferSystemNativeHwDecoder": "Аддайце перавагу ўласным апаратным дэкодэрам DXVA або VA-API", + "EnableIntelLowPowerH264HwEncoder": "Уключыць апаратны кадавальнік Intel Low-Power H.264", + "EnableIntelLowPowerHevcHwEncoder": "Уключыць апаратны кадавальнік Intel Low-Power HEVC", + "IntelLowPowerEncHelp": "Кадаванне з нізкім энергаспажываннем можа падтрымліваць непатрэбную сінхранізацыю CPU-GPU. У Linux яны павінны быць адключаны, калі прашыўка i915 HuC не наладжана.", + "VideoBitrateNotSupported": "Бітрэйт відэа не падтрымліваецца", + "UnknownVideoStreamInfo": "Інфармацыя пра відэаплынь невядомая", + "UnknownAudioStreamInfo": "Інфармацыя аб аўдыяплыні невядомая", + "DirectPlayError": "Узнікла памылка пры запуску прамога прайгравання", + "SelectAll": "Абраць усё", + "Clip": "Художнік", + "Sample": "Узор", + "LabelVppTonemappingBrightness": "Узмацненне яркасці танальнага адлюстравання VPP:", + "LabelVppTonemappingBrightnessHelp": "Прымяніць узмацненне яркасці ў танальным адлюстраванні VPP. І рэкамендаванае, і стандартнае значэнне роўна 0.", + "LabelVppTonemappingContrast": "Узмацненне кантраснасці танальнага адлюстравання VPP:", + "LabelVppTonemappingContrastHelp": "Прымяніць узмацненне кантрасту ў танальным адлюстраванні VPP. Рэкамендуемыя значэнні і значэнні па змаўчанні - 1,2 і 1.", + "VideoRangeTypeNotSupported": "Тып дыяпазону відэа не падтрымліваецца", + "LabelVideoRangeType": "Тып дыяпазону відэа:", + "MediaInfoVideoRangeType": "Тып дыяпазону відэа", + "MediaInfoDvVersionMinor": "DV версія мінор", + "MediaInfoDvLevel": "Узровень DV", + "MediaInfoRpuPresentFlag": "Прадусталяваны сцяг DV rpu", + "MediaInfoElPresentFlag": "Прадусталяваны сцяг DV", + "MediaInfoBlPresentFlag": "Прадусталяваны сцяг DV bl", + "MediaInfoDvBlSignalCompatibilityId": "Ідэнтыфікатар сумяшчальнасці сігналу DV bl", + "YoutubeBadRequest": "Дрэнны запыт.", + "EnableDisplayMirroring": "Адлюстраванне адлюстравання", + "FetchingData": "Атрыманне дадатковых даных", + "LabelSortOrder": "Парадак сартавання:", + "MarkPlayed": "Марк гуляў", + "HeaderAlert": "Абвестка", + "HeaderLibraryAccess": "Доступ да бібліятэкі", + "HeaderRecentlyPlayed": "Нядаўна гулялі", + "HeaderSecondsValue": "{0} секунд", + "LabelAppName": "Назва праграмы", + "LabelBirthYear": "Год народзінаў:", + "ConfirmDeletion": "Пацвердзіце выдаленне", + "Images": "Малюнкі", + "HeaderDebugging": "Адладка і трасіроўка", + "HeaderMyMediaSmall": "Мае мультымедыя (маленькія)", + "General": "Генерал", + "VideoProfileNotSupported": "Профіль відэакодэка не падтрымліваецца", + "AudioBitDepthNotSupported": "Разраднасць аўдыя не падтрымліваецца", + "Menu": "Меню", + "LabelHardwareEncodingOptions": "Параметры апаратнага кадавання:", + "AudioIsExternal": "Гукавы струмень знешні", + "MinutesBefore": "хвілін раней", + "SimultaneousConnectionLimitHelp": "Максімальная колькасць дазволеных адначасовых патокаў. Увядзіце 0 для адсутнасці абмежаванняў.", + "TabMyPlugins": "Мае плагіны", + "SkipEpisodesAlreadyInMyLibraryHelp": "Эпізоды будуць параўноўвацца з выкарыстаннем нумароў сезонаў і серый, калі яны даступныя.", + "TabNetworking": "Сеткавыя сувязі", + "TabNetworks": "Тэлевізійныя сеткі", + "TabNfoSettings": "Налады NFO", + "TabNotifications": "Апавяшчэнні", + "SmartSubtitlesHelp": "Калі гук на замежнай мове, будуць загружаны субтытры, якія адпавядаюць моўным перавагам.", + "SortName": "Назва сартавання", + "TabOther": "Іншае", + "SpecialFeatures": "Асаблівасці", + "Sports": "Спорт", + "StoryArc": "Гісторыя Арк", + "StopPlayback": "Спыніць прайграванне", + "StopRecording": "Спыніць запіс", + "Studios": "Студыі", + "Subtitle": "Падзагаловак", + "SubtitleVerticalPositionHelp": "Нумар радка, дзе з'яўляецца тэкст. Дадатныя лічбы паказваюць зверху ўніз. Адмоўныя лічбы паказваюць знізу ўверх.", + "HideWatchedContentFromLatestMedia": "Схаваць прагледжанае змесціва з «Апошніх медыя»", + "MessageRenameMediaFolder": "Перайменаванне медыятэкі прывядзе да страты ўсіх метададзеных, будзьце асцярожныя.", + "LabelMaxDaysForNextUpHelp": "Усталюйце максімальную колькасць дзён, на працягу якіх шоу павінна заставацца ў спісе \"Далей\", без яго прагляду.", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Наступныя медыя-месцы будуць выдалены з вашай бібліятэкі:", + "Metadata": "Метададзеныя", + "MinutesAfter": "хвілін пасля", + "MusicAlbum": "Музычны альбом", + "MusicArtist": "Музычны выканаўца", + "MusicLibraryHelp": "Праглядзіце {0}кіраўніцтва па назвах музыкі{1}.", + "MusicVideo": "Музычнае відэа", + "Never": "ніколі", + "NewEpisodesOnly": "Толькі новыя серыі", + "News": "Навіны", + "NextUp": "Далей", + "DownloadAll": "Спампаваць усе", + "EditImages": "Рэдагаваць выявы", + "EnableDetailsBanner": "Банер з падрабязнасцямі", + "EnableDetailsBannerHelp": "Адлюстраванне выявы банера ўверсе старонкі з інфармацыяй аб тавары.", + "ErrorAddingTunerDevice": "Пры даданні цюнэра адбылася памылка. Пераканайцеся, што ён даступны, і паўтарыце спробу.", + "ErrorDeletingItem": "Пры выдаленні элемента з сервера адбылася памылка. Калі ласка, праверце, што Jellyfin мае доступ для запісу ў тэчку мультымедыя, і паўтарыце спробу.", + "ErrorGettingTvLineups": "Адбылася памылка спампоўвання падборак ТБ. Пераканайцеся, што ваша інфармацыя правільная, і паўтарыце спробу.", + "ErrorPlayerNotFound": "Прайгравальнік для запытанага носьбіта не знойдзены.", + "ErrorSavingTvProvider": "Адбылася памылка пры захаванні правайдэра ТБ. Пераканайцеся, што ён даступны, і паўтарыце спробу.", + "EveryNDays": "Кожныя {0} дзён", + "File": "Файл", + "FileReadError": "Падчас чытання файла адбылася памылка.", + "FormatValue": "Фармат: {0}", + "Friday": "Пятніца", + "GroupBySeries": "Група па серыях", + "GuestStar": "Запрошаная зорка", + "HeaderAccessScheduleHelp": "Стварыце графік доступу, каб абмежаваць доступ да пэўных гадзін.", + "HeaderAdmin": "Адміністрацыя", + "HeaderAllowMediaDeletionFrom": "Дазволіць выдаленне мультымедыя з:", + "HeaderApiKeys": "Ключы API", + "HeaderApiKeysHelp": "Знешнія прыкладанні павінны мець ключ API для сувязі з серверам. Ключы выдаюцца шляхам ўваходу ў сістэму са звычайным уліковым запісам карыстальніка або ўручную прадастаўлення ключа праграме.", + "HeaderCancelRecording": "Адмяніць запіс", + "HeaderCancelSeries": "Адмена серыі", + "HeaderCodecProfileHelp": "Профілі кодэкаў паказваюць абмежаванні прылады пры прайграванні пэўных кодэкаў. Калі дзейнічае абмежаванне, мультымедыя будзе перакадзіравана, нават калі кодэк настроены для прамога прайгравання.", + "HeaderConfirmPluginInstallation": "Пацвердзіце ўстаноўку плагіна", + "HeaderConnectionFailure": "Збой злучэння", + "HeaderContainerProfile": "Профіль кантэйнера", + "HeaderContainerProfileHelp": "Профілі кантэйнераў паказваюць абмежаванні прылады пры прайграванні пэўных фарматаў. Калі дзейнічае абмежаванне, медыяфайл будзе перакадзіраваны, нават калі фармат настроены для прамога прайгравання.", + "HeaderDefaultRecordingSettings": "Налады запісу па змаўчанні", + "HeaderDeleteDevice": "Выдаліць прыладу", + "HeaderDeleteDevices": "Выдаліць усе прылады", + "HeaderEnabledFieldsHelp": "Зніміце галачку з поля, каб заблакіраваць яго і прадухіліць змяненне дадзеных.", + "HeaderExternalIds": "Знешнія ідэнтыфікатары:", + "HeaderFeatureAccess": "Доступ да функцый:", + "HeaderFetcherSettings": "Налады выбаршчыка", + "HeaderFetchImages": "Атрымаць выявы:", + "HeaderForKids": "Дзецям", + "HeaderIdentificationHeader": "Ідэнтыфікацыйны загаловак", + "HeaderImageOptions": "Параметры выявы", + "HeaderImageSettings": "Налады выявы", + "HeaderInstall": "Усталяваць", + "HeaderInstantMix": "Імгненны мікс", + "HeaderKeepSeries": "Трымайце серыял", + "HeaderLatestMedia": "Апошнія медыя", + "HeaderLatestMovies": "Апошнія фільмы", + "HeaderLatestMusic": "Найноўшая музыка", + "HeaderLatestRecordings": "Апошнія запісы", + "HeaderLibraries": "Бібліятэкі", + "HeaderLibraryFolders": "Бібліятэчныя тэчкі", + "HeaderLibraryOrder": "Бібліятэчны загад", + "HeaderMediaFolders": "Медыятэчкі", + "HeaderMetadataSettings": "Налады метаданых", + "HeaderMoreLikeThis": "Яшчэ падобнае", + "HeaderMusicQuality": "Якасць музыкі", + "HeaderNavigation": "Навігацыя", + "HeaderNetworking": "Пратаколы IP", + "HeaderPasswordReset": "Скід пароля", + "HeaderTunerDevices": "Цюнэры прылад", + "HeaderTuners": "Цюнеры", + "HeaderTypeImageFetchers": "Сродкі выбаркі відарысаў ({0}):", + "HeaderTypeText": "Увядзіце тэкст", + "HeaderUninstallPlugin": "Выдаліць плагін", + "HeaderUpcomingOnTV": "Будучы на ТБ", + "HeaderUploadImage": "Загрузіць выяву", + "HeaderUploadSubtitle": "Загрузіць субтытры", + "HeaderXmlDocumentAttribute": "Атрыбут дакумента XML", + "HeaderXmlDocumentAttributes": "Атрыбуты дакумента XML", + "HeaderXmlSettings": "Налады XML", + "Kids": "Дзеці", + "KnownProxiesHelp": "Спіс IP-адрасоў або імёнаў хастоў вядомых проксі, падзеленых коскамі, якія выкарыстоўваюцца пры падключэнні да вашага асобніка Jellyfin. Гэта неабходна для належнага выкарыстання загалоўкаў \"X-Forwarded-For\". Патрабуецца перазагрузка пасля захавання.", + "LabelAbortedByServerShutdown": "(Спынена адключэннем сервера)", + "LabelAccessDay": "Дзень тыдня:", + "LabelAccessStart": "Час пачатку:", + "LabelAirsBeforeEpisode": "Эфір перад эпізодам:", + "LabelAudioCodec": "Аўдыякодэк:", + "LabelAudioLanguagePreference": "Пажаданая мова гуку:", + "LabelAudioSampleRate": "Частата дыскрэтызацыі аўдыя:", + "LabelAutomaticallyAddToCollection": "Аўтаматычна дадаваць у калекцыю", + "LabelAutoDiscoveryTracing": "Уключыць адсочванне аўтаматычнага выяўлення.", + "LabelDefaultUserHelp": "Вызначце, якая бібліятэка карыстальніка павінна адлюстроўвацца на падлучаных прыладах. Гэта можна адмяніць для кожнай прылады з дапамогай профіляў.", + "LabelDeviceDescription": "Апісанне прылады:", + "LabelDisableCustomCss": "Адключыць карыстальніцкі код CSS для тэматызавання/брэндынгу, прадастаўлены з сервера.", + "LabelDiscNumber": "Нумар дыска:", + "LabelEnableDlnaDebugLoggingHelp": "Стварайце вялікія файлы часопісаў і павінны выкарыстоўвацца толькі па меры неабходнасці для ліквідацыі непаладак.", + "LabelEnableDlnaPlayToHelp": "Выяўляйце прылады ў вашай сетцы і прапануйце магчымасць кіраваць імі дыстанцыйна.", + "LabelEnableDlnaServerHelp": "Дазвольце прыладам UPnP у вашай сетцы праглядаць і прайграваць кантэнт.", + "LabelEnableHardwareDecodingFor": "Уключыць апаратнае дэкадаванне для:", + "LabelEnableHttpsHelp": "Праслухоўванне праз наладжаны порт HTTPS. Для таго, каб гэта ўступіла ў сілу, таксама неабходна падаць сапраўдны сертыфікат.", + "LabelExtractChaptersDuringLibraryScan": "Выманне малюнкаў раздзелаў падчас сканавання бібліятэкі", + "LabelExtractChaptersDuringLibraryScanHelp": "Стварайце выявы раздзелаў, калі відэа імпартуюцца падчас сканавання бібліятэкі. У адваротным выпадку яны будуць выняты падчас запланаванай задачы выявы раздзелаў, што дазволіць звычайнаму сканаванню бібліятэкі завяршыцца хутчэй.", + "LabelFailed": "Не атрымалася", + "LabelffmpegPathHelp": "Шлях да файла або папкі прыкладання FFmpeg, якая змяшчае FFmpeg.", + "LabelFileOrUrl": "Файл або URL:", + "LabelFolder": "Тэчка:", + "LabelFont": "Шрыфт:", + "LabelForgotPasswordUsernameHelp": "Увядзіце імя карыстальніка, калі вы яго памятаеце.", + "LabelFriendlyName": "Дружалюбнае імя:", + "LabelGroupMoviesIntoCollections": "Згрупаваць фільмы ў калекцыі", + "LabelGroupMoviesIntoCollectionsHelp": "Фільмы ў калекцыі будуць адлюстроўвацца як адзін згрупаваны элемент пры адлюстраванні спісаў фільмаў.", + "LabelH264Crf": "CRF кадзіроўкі H.264:", + "LabelHardwareAccelerationType": "Апаратнае паскарэнне:", + "LabelHardwareAccelerationTypeHelp": "Апаратнае паскарэнне патрабуе дадатковай канфігурацыі.", + "LabelHardwareEncoding": "Апаратнае кадзіраванне:", + "LabelHttpsPortHelp": "Нумар порта TCP для сервера HTTPS.", + "LabelIconMaxHeight": "Максімальная вышыня значка:", + "LabelIconMaxResHelp": "Максімальная раздзяляльнасць значкоў, паказаных праз уласцівасць 'upnp:icon'.", + "LabelIconMaxWidth": "Максімальная шырыня значка:", + "LabelImageFetchersHelp": "Уключыце і ранжыруйце пераважныя сродкі зборкі малюнкаў у парадку прыярытэту.", + "LabelImportOnlyFavoriteChannels": "Абмежаваць каналы, пазначаныя як абраныя", + "LabelInNetworkSignInWithEasyPasswordHelp": "Выкарыстоўвайце просты PIN-код для ўваходу з кліентаў у лакальнай сетцы. Ваш звычайны пароль спатрэбіцца толькі па-за домам. Калі PIN-код пакінуты пустым, вам не спатрэбіцца пароль у хатняй сетцы.", + "LabelInternetQuality": "Якасць інтэрнэту:", + "LabelIsForced": "Вымушана", + "LabelKeepUpTo": "Сачыць за:", + "LabelKidsCategories": "Дзіцячыя катэгорыі:", + "LabelKnownProxies": "Вядомыя проксі:", + "LabelKodiMetadataDateFormatHelp": "Усе даты ў файлах NFO будуць аналізавацца з выкарыстаннем гэтага фармату.", + "LabelKodiMetadataEnableExtraThumbs": "Скапіруйце extrafanart у поле extrathumbs", + "LabelKodiMetadataEnableExtraThumbsHelp": "Пры спампоўцы малюнкаў іх можна захоўваць як у extrafanart, так і ў extrathumbs для максімальнай сумяшчальнасці са скурай Kodi.", + "LabelKodiMetadataEnablePathSubstitution": "Уключыць замену шляху", + "LabelKodiMetadataEnablePathSubstitutionHelp": "Уключыць замену шляхоў малюнкаў з дапамогай параметраў замены шляху сервера.", + "LabelKodiMetadataSaveImagePaths": "Захоўвайце шляхі малюнкаў у файлах NFO", + "LabelKodiMetadataSaveImagePathsHelp": "Гэта рэкамендуецца, калі ў вас ёсць назвы файлаў малюнкаў, якія не адпавядаюць рэкамендацыям Kodi.", + "LabelLanguage": "мова:", + "LabelLanNetworks": "LAN сеткі:", + "LabelLibraryPageSize": "Памер старонкі бібліятэкі:", + "LabelLibraryPageSizeHelp": "Усталюйце колькасць элементаў для паказу на старонцы бібліятэкі. Усталюйце 0, каб адключыць пэйджынг.", + "LabelMaxVideoResolution": "Максімальна дазволенае раздзяленне перакадзіравання відэа", + "LabelLocalCustomCss": "Карыстальніцкі код CSS для стылю, які прымяняецца толькі да гэтага кліента. Вы можаце адключыць карыстальніцкі CSS-код сервера.", + "LabelLocalHttpServerPortNumber": "Нумар лакальнага порта HTTP:", + "LabelLocalHttpServerPortNumberHelp": "Нумар порта TCP для сервера HTTP.", + "LabelLockItemToPreventChanges": "Заблакіруйце гэты элемент, каб прадухіліць будучыя змены", + "LabelLoginDisclaimer": "Адмова ад адказнасці пры ўваходзе:", + "LabelLoginDisclaimerHelp": "Паведамленне, якое будзе адлюстроўвацца ўнізе старонкі ўваходу.", + "LabelLogs": "Журналы:", + "LabelManufacturer": "Вытворца:", + "LabelManufacturerUrl": "URL-адрас вытворцы:", + "LabelMatchType": "Тып супадзення:", + "LabelMaxAudiobookResume": "Засталося хвілін для аднаўлення аўдыякнігі:", + "LabelMaxAudiobookResumeHelp": "Лічыцца, што загалоўкі прайграны цалкам, калі іх спыніць, калі астатняя працягласць меншая за гэта значэнне.", + "LabelMaxBackdropsPerItem": "Максімальная колькасць фонаў на элемент:", + "LabelMaxChromecastBitrate": "Якасць плыні Google Cast:", + "LabelMetadataReadersHelp": "Ранжыруйце любімыя лакальныя крыніцы метададзеных у парадку прыярытэту. Будзе прачытаны першы знойдзены файл.", + "LabelMetadataSaversHelp": "Выберыце фарматы файлаў для захавання метададзеных.", + "LabelMethod": "Метад:", + "LabelMinAudiobookResume": "Мінімальнае рэзюмэ аўдыякнігі ў хвілінах:", + "LabelMinAudiobookResumeHelp": "Лічыцца, што загалоўкі не прайграваюцца, калі яны былі спынены да гэтага часу.", + "LabelMinBackdropDownloadWidth": "Мінімальная шырыня загрузкі фону:", + "LabelMinResumeDuration": "Мінімальная працягласць рэзюмэ:", + "LabelMinResumePercentage": "Мінімальны працэнт рэзюмэ:", + "LabelMinResumePercentageHelp": "Лічыцца, што загалоўкі не прайграваюцца, калі яны былі спынены да гэтага часу.", + "LabelModelName": "Назва мадэлі:", + "LabelModelNumber": "Нумар мадэлі:", + "LabelMonitorUsers": "Сачыце за актыўнасцю з:", + "LabelMovieCategories": "Катэгорыі фільмаў:", + "LabelMoviePrefix": "Прэфікс фільма:", + "LabelMoviePrefixHelp": "Калі прэфікс прымяняецца да назваў фільмаў, увядзіце яго тут, каб сервер мог правільна апрацаваць яго.", + "LabelMusicStreamingTranscodingBitrate": "Бітрэйт перакадзіравання музыкі:", + "LabelMusicStreamingTranscodingBitrateHelp": "Укажыце максімальны бітрэйт пры перадачы музыкі.", + "LabelNumber": "нумар:", + "LabelNumberOfGuideDays": "Колькасць дзён даведніка для загрузкі:", + "LabelNumberOfGuideDaysHelp": "Спампоўка даведнікаў за некалькі дзён дае магчымасць загадзя планаваць расклад і праглядаць больш спісаў, але загрузка таксама зойме больш часу. Аўто будзе выбіраць на аснове колькасці каналаў.", + "LabelOpenclDevice": "Прылада OpenCL:", + "LabelOriginalName": "Арыгінальная назва:", + "LabelScreensaver": "Застаўка:", + "LabelSSDPTracingFilterHelp": "Дадатковы IP-адрас для фільтрацыі зарэгістраванага трафіку SSDP.", + "LabelStartWhenPossible": "Пачніце, калі гэта магчыма:", + "LabelStatus": "Статус:", + "LabelTranscodePath": "Шлях перакадзіравання:", + "MessageImageTypeNotSelected": "Выберыце тып відарыса з выпадальнага меню.", + "MessageInvalidForgotPasswordPin": "Быў уведзены несапраўдны або пратэрмінаваны PIN-код. Калі ласка, паспрабуйце яшчэ раз.", + "MessageLeaveEmptyToInherit": "Пакіньце пустым, каб успадкаваць налады ад бацькоўскага элемента або глабальнае значэнне па змаўчанні.", + "MessageNoItemsAvailable": "Зараз няма даступных элементаў.", + "MessageNoFavoritesAvailable": "Зараз няма даступных абраных.", + "MessageNoAvailablePlugins": "Няма даступных плагінаў.", + "MessageNoCollectionsAvailable": "Калекцыі дазваляюць карыстацца персаналізаванымі групамі фільмаў, серыялаў і альбомаў. Націсніце кнопку «+», каб пачаць ствараць калекцыі.", + "MessageNoMovieSuggestionsAvailable": "Зараз няма прапаноў па фільмах. Пачніце глядзець і ацэньваць свае фільмы, а потым вярніцеся да прагляду рэкамендацый.", + "MessageNoNextUpItems": "Нічога не знойдзена. Пачніце глядзець свае шоу!", + "MessageNoPluginConfiguration": "Гэты плагін не мае налад для наладжвання.", + "MessagePluginInstallError": "Пры ўсталёўцы плагіна адбылася памылка.", + "NextChapter": "Наступная глава", + "NextTrack": "Перайсці да наступнага", + "No": "няма", + "NoCreatedLibraries": "Здаецца, вы яшчэ не стварылі ніводнай бібліятэкі. {0}Жадаеце стварыць зараз?{1}", + "None": "Няма", + "OptionEmbedSubtitles": "Убудаваць у кантэйнер", + "OptionEnableAccessToAllChannels": "Уключыць доступ да ўсіх каналаў", + "OptionEnableAccessToAllLibraries": "Дазволіць доступ да ўсіх бібліятэк", + "OptionEnableExternalContentInSuggestionsHelp": "Дазволіць уключэнне інтэрнэт-трэйлераў і жывых тэлепраграм у прапанаваны кантэнт.", + "OptionEnableM2tsMode": "Уключыць рэжым M2TS", + "OptionEveryday": "Кожны дзень", + "OptionExtractChapterImage": "Уключыць выманне выявы раздзела", + "OptionParentalRating": "Бацькоўскі рэйтынг", + "OptionPlainStorageFolders": "Адлюстраваць усе папкі як звычайныя папкі для захоўвання", + "PlaybackErrorNoCompatibleStream": "Гэты кліент несумяшчальны з мультымедыя, і сервер не дасылае сумяшчальны фармат медыя.", + "RememberAudioSelections": "Усталяваць гукавую дарожку на аснове папярэдняга элемента", + "Rewind": "Перамотка назад", + "SyncPlayAccessHelp": "Функцыя SyncPlay дазваляе сінхранізаваць прайграванне з іншымі прыладамі. Выберыце ўзровень доступу гэтага карыстальніка да SyncPlay.", + "SystemDlnaProfilesHelp": "Сістэмныя профілі даступныя толькі для чытання. Змены ў сістэмным профілі будуць захаваны ў новым карыстальніцкім профілі.", + "TabCatalog": "Каталог", + "TabCodecs": "Кодэкі", + "TabContainers": "Кантэйнеры", + "Unrated": "Без рэйтынгу", + "UnsupportedPlayback": "Jellyfin не можа расшыфраваць змесціва, абароненае DRM, але ўсё змесціва будзе апрабавана, у тым ліку абароненыя назвы. Некаторыя файлы могуць выглядаць цалкам чорнымі з-за шыфравання або іншых непадтрымоўваных функцый, такіх як інтэрактыўныя загалоўкі.", + "Upload": "Загрузіць", + "ValueAlbumCount": "Альбомы: {0}", + "ValueAudioCodec": "Аўдыякодэк: {0}", + "WriteAccessRequired": "Jellyfin патрабуе доступу для запісу ў гэту папку. Забяспечце доступ для запісу і паўтарыце спробу.", + "Writers": "Пісьменнікі", + "XmlDocumentAttributeListHelp": "Гэтыя атрыбуты прымяняюцца да каранёвага элемента кожнага адказу XML.", + "XmlTvKidsCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як праграмы для дзяцей. Раздзяляйце некалькі знакамі '|'.", + "XmlTvMovieCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як фільмы. Раздзяляйце некалькі знакамі '|'.", + "XmlTvNewsCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як праграмы навін. Раздзяляйце некалькі знакамі '|'.", + "XmlTvPathHelp": "Шлях да файла XMLTV. Jellyfin будзе чытаць гэты файл і перыядычна правяраць яго на наяўнасць абнаўленняў. Вы несяце адказнасць за стварэнне і абнаўленне файла.", + "Yadif": "ЯДЫФ", + "LabelDirectStreamingInfo": "Інфармацыя пра прамую трансляцыю", + "LabelOriginalMediaInfo": "Арыгінальная інфармацыя аб СМІ", + "LabelSyncPlayInfo": "Інфармацыя SyncPlay", + "MediaInfoDoViTitle": "Назва DV", + "MediaInfoDvVersionMajor": "Мажорная версія DV", + "MediaInfoDvProfile": "DV профіль", + "Off": "Выкл", + "OnlyForcedSubtitles": "Толькі прымусова", + "TabServer": "Сервер", + "ThemeVideos": "Тэматычныя відэа", + "OptionAllowContentDownloadHelp": "Карыстальнікі могуць спампоўваць мультымедыя і захоўваць яго на сваіх прыладах. Гэта не тое самае, што функцыя сінхранізацыі. Кніжныя бібліятэкі патрабуюць, каб гэта было ўключана для правільнай працы.", + "OptionAllowLinkSharing": "Дазволіць абагульванне ў сацыяльных сетках" } From 7acd0e916ed52073df7729c41cda7f49cd1b5b02 Mon Sep 17 00:00:00 2001 From: rushmash Date: Sun, 5 Feb 2023 21:30:15 +0000 Subject: [PATCH 081/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 60 +++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index affd8f6aa1..2cc7aeb896 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -244,7 +244,7 @@ "OptionDateAdded": "Дата дадання", "OptionMissingEpisode": "Адсутныя эпізоды", "OptionPremiereDate": "Дата прэм'еры", - "OptionResElement": "элемент «res».", + "OptionResElement": "элемент \"res\"", "OptionWeekdays": "будні", "PasswordResetComplete": "Пароль быў скінуты.", "PictureInPicture": "Карцінка ў карцінцы", @@ -260,7 +260,7 @@ "RemoveFromPlaylist": "Выдаліць з плэйліста", "ChannelNameOnly": "Толькі канал {0}", "Composer": "Кампазітар", - "CopyFailed": "Не атрымалася скапіяваць", + "CopyFailed": "Не атрымалася скапіраваць", "EnableFasterAnimations": "Больш хуткія анімацыі", "EnableEnhancedNvdecDecoder": "Уключыць пашыраны дэкодэр NVDEC", "LabelPersonRole": "роля:", @@ -287,12 +287,12 @@ "LabelRemuxingInfo": "Інфармацыя аб рэмуксаванні", "EnableGamepadHelp": "Праслухоўванне ўводу ад любых падлучаных кантролераў. (Патрабуецца: Рэжым адлюстравання \"ТБ\")", "Digital": "Лічбавы", - "Director": "дырэктар", + "Director": "Рэжысёр", "Directors": "Рэжысёры", "Disconnect": "Адключыцца", "Display": "Дысплей", "EnableBlurHashHelp": "Выявы, якія яшчэ загружаюцца, будуць адлюстроўвацца з унікальным запаўняльнікам.", - "EnableFasterAnimationsHelp": "Выкарыстоўвайце больш хуткія анімацыі і пераходы.", + "EnableFasterAnimationsHelp": "Выкарыстоўваць хуткія анімацыі і пераходы.", "ErrorDefault": "Адбылася памылка апрацоўкі запыту. Калі ласка паспрабуйце зноў пазней.", "EveryXHours": "Кожныя {0} гадз", "HeaderAppearsOn": "З'яўляецца на", @@ -320,7 +320,7 @@ "MediaInfoSampleRate": "Частата выбаркі", "MediaInfoSize": "Памер", "MediaInfoTitle": "Назва", - "Art": "Clearart", + "Art": "Выразка", "InstallingPackage": "Усталяванне {0} (версія {1})", "MessageConfirmRecordingCancellation": "Адмяніць запіс?", "LabelStereoDownmixAlgorithm": "Алгарытм стэрэа мікшавання", @@ -356,17 +356,17 @@ "LabelSource": "Крыніца:", "ClearQueue": "Ачысціць чаргу", "Conductor": "Дырыжор", - "ConfigureDateAdded": "Наладзьце спосаб вызначэння метаданых для «Дата дадання» ў «Панэль кіравання > Бібліятэкі > Налады NFO».", + "ConfigureDateAdded": "Наладзьце спосаб вызначэння метададзеных для \"Дата дадання\" ў \"Інфармацыйнай панэль\" > Бібліятэка > Налады NFO", "ConfirmDeleteImage": "Выдаліць выяву?", "ConfirmDeleteItem": "Пры выдаленні гэтага элемента ён будзе выдалены як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", - "ConfirmDeleteItems": "Выдаленне гэтых элементаў прывядзе да іх выдалення як з файлавай сістэмы, так і з медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", + "ConfirmDeleteItems": "Выдаленне гэтых элементаў прывядзе да іх выдалення як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", "ConfirmEndPlayerSession": "Вы хочаце адключыць Jellyfin на {0}?", "Console": "Кансоль", "Copy": "Копія", - "Cursive": "Скорапіс", + "Cursive": "Курсіўны", "CustomDlnaProfilesHelp": "Стварыце карыстальніцкі профіль для новай прылады або перавызначце сістэмны профіль.", - "DefaultMetadataLangaugeDescription": "Гэта вашы значэнні па змаўчанні, і іх можна наладзіць для кожнай бібліятэкі.", - "DefaultSubtitlesHelp": "Субтытры загружаюцца на аснове стандартных і прымусовых сцягоў ва ўбудаваных метададзеных. Моўныя перавагі ўлічваюцца, калі даступна некалькі варыянтаў.", + "DefaultMetadataLangaugeDescription": "Гэта вашы значэнні па змаўчанні. Іх можна наладзіць для кожнай бібліятэкі.", + "DefaultSubtitlesHelp": "Субтытры загружаюцца на аснове параметраў \"Па змаўчанні\" і \"Фарсаваныя\" ва ўбудаваных метададзеных. Моўныя перавагі ўлічваюцца, калі даступна некалькі варыянтаў.", "LabelSyncPlayNewGroup": "Новая група", "LabelSyncPlayNewGroupDescription": "Стварыце новую групу", "LabelSyncPlayResumePlayback": "Узнавіць лакальнае прайграванне", @@ -378,13 +378,13 @@ "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "Максімальная затрымка прайгравання (у мс), пасля якой SkipToSync выкарыстоўваецца замест SpeedToSync.", "DeinterlaceMethodHelp": "Выберыце метад дэінтэрлейсінгу для выкарыстання пры праграмным перакадзіраванні празрадковага змесціва. Калі ўключана апаратнае паскарэнне, якое падтрымлівае апаратнае дэінтэрлейсінг, замест гэтай налады будзе выкарыстоўвацца апаратны дэінтэрлейс.", "DeviceAccessHelp": "Гэта адносіцца толькі да прылад, якія могуць быць адназначна ідэнтыфікаваныя і не перашкаджаюць доступу ў браўзеры. Фільтраванне доступу карыстальнікаў да прылад не дазволіць ім выкарыстоўваць новыя прылады, пакуль яны не будуць зацверджаны тут.", - "DirectPlaying": "Прамая гульня", + "DirectPlaying": "Прамое прайграванне", "DirectPlayHelp": "Зыходны файл цалкам сумяшчальны з гэтым кліентам, і сеанс атрымлівае файл без мадыфікацый.", "LabelTag": "Тэг:", "LabelTextBackgroundColor": "Колер фону тэксту:", "LabelTextWeight": "Вага тэксту:", "LabelTime": "Час:", - "DirectStreamHelp1": "Відэапаток сумяшчальны з прыладай, але мае несумяшчальны аўдыяфармат (DTS, Dolby TrueHD і г.д.) або колькасць аўдыяканалаў. Відэапаток будзе перапакоўвацца без страт на хаду перад адпраўкай на прыладу. Будзе перакадзіраваны толькі аўдыяплынь.", + "DirectStreamHelp1": "Відэапаток сумяшчальны з прыладай, але мае несумяшчальны аўдыяфармат (DTS, Dolby TrueHD і г.д.) або колькасць аўдыё каналаў. Відэапаток будзе перапакоўвацца без страт у якасці на хаду перад адпраўкай на прыладу. Будзе перакадзіраваны толькі аўдыё паток.", "Disc": "Дыск", "DisplayInMyMedia": "Паказаць на галоўным экране", "DisplayMissingEpisodesWithinSeasonsHelp": "Гэта таксама павінна быць уключана для ТБ-бібліятэк у канфігурацыі сервера.", @@ -392,10 +392,10 @@ "DoNotRecord": "Не запісваць", "Download": "Спампаваць", "DownloadsValue": "Спамповак: {0}", - "EasyPasswordHelp": "Ваш просты PIN-код выкарыстоўваецца для пазасеткавага доступу на падтрымоўваных кліентах, а таксама можа выкарыстоўвацца для лёгкага ўваходу ў сетку.", + "EasyPasswordHelp": "Ваш Easy PIN-код выкарыстоўваецца для пазасеткавага доступу на падтрымоўваных кліентах, а таксама можа выкарыстоўвацца для лёгкага ўваходу ў сетку.", "Edit": "Рэдагаваць", "EnableCinemaMode": "Рэжым кіно", - "EnableColorCodedBackgrounds": "Каляровыя фоны", + "EnableColorCodedBackgrounds": "Пазначэнне колерам фоны", "EnableDecodingColorDepth10Hevc": "Уключыць 10-бітнае апаратнае дэкадаванне для HEVC", "EnableDecodingColorDepth10Vp9": "Уключыць 10-бітнае апаратнае дэкадаванне для VP9", "EnableExternalVideoPlayers": "Знешнія відэаплэеры", @@ -558,7 +558,7 @@ "Uniform": "Уніформа", "Unmute": "Уключыць гук", "Up": "Уверх", - "UseEpisodeImagesInNextUp": "Выкарыстоўвайце выявы эпізодаў у раздзелах \"Далей\" і \"Працягнуць прагляд\".", + "UseEpisodeImagesInNextUp": "Выкарыстоўвайце выявы эпізодаў у раздзелах \"Далей\" і \"Працягнуць прагляд\"", "UseEpisodeImagesInNextUpHelp": "У раздзелах \"Далей\" і \"Працягнуць прагляд\" у якасці эскізаў будуць выкарыстоўвацца выявы эпізодаў замест асноўнай мініяцюры шоу.", "UserAgentHelp": "Увядзіце ўласны HTTP-загаловак «User-Agent».", "ValueDiscNumber": "Дыск {0}", @@ -691,7 +691,7 @@ "LabelAutomaticallyRefreshInternetMetadataEvery": "Аўтаматычна абнаўляць метаданыя з Інтэрнэту:", "LabelAutomaticDiscoveryHelp": "Дазволіць праграмам аўтаматычна выяўляць Jellyfin з дапамогай UDP-порта 7359.", "LabelBaseUrl": "Базавы URL:", - "LabelBaseUrlHelp": "Дадайце карыстальніцкі падкаталог да URL-адраса сервера. Напрыклад: http://example.com/", + "LabelBaseUrlHelp": "Дадайце карыстальніцкі падкаталог да URL-адраса сервера. Напрыклад: http://example.com/<baseurl>", "LabelBindToLocalNetworkAddressHelp": "Перавызначыць лакальны IP-адрас для сервера HTTP. Калі пакінуць пустым, сервер будзе прывязвацца да ўсіх даступных адрасоў. Змена гэтага значэння патрабуе перазапуску.", "LabelBlastMessageIntervalHelp": "Вызначце працягласць у секундах паміж паведамленнямі blast alive.", "LabelBlockContentWithTags": "Блакіраваць элементы з тэгамі:", @@ -848,15 +848,15 @@ "LabelTitle": "Назва:", "LabelTonemappingAlgorithm": "Выберыце алгарытм танальнага адлюстравання для выкарыстання:", "LabelTonemappingDesat": "Тонавае адлюстраванне desat:", - "ChannelAccessHelp": "Выберыце каналы, каб абагуліць з гэтым карыстальнікам. Адміністратары змогуць рэдагаваць усе каналы з дапамогай дыспетчара метададзеных.", + "ChannelAccessHelp": "Выберыце каналы, каб даць доступ гэтаму карыстальніку. Адміністратары змогуць рэдагаваць усе каналы з дапамогай дыспетчара метададзеных.", "ChannelNumber": "Нумар канала", "ClientSettings": "Налады кліента", - "ColorPrimaries": "Праймерыз колеру", + "ColorPrimaries": "Асноўныя колеры", "ColorSpace": "Каляровая прастора", - "ColorTransfer": "Перадача колеру", + "ColorTransfer": "Колераперадача", "CommunityRating": "Рэйтынг супольнасці", - "Connect": "Злучыцца", - "ContinueWatching": "Працягвайце глядзець", + "Connect": "Падключыцца", + "ContinueWatching": "Працягнуць прагляд", "Continuing": "Працягваецца", "CopyStreamURL": "Скапіраваць URL патоку", "CopyStreamURLSuccess": "URL паспяхова скапіраваны.", @@ -866,32 +866,32 @@ "DashboardOperatingSystem": "Аперацыйная сістэма: {0}", "DashboardServerName": "Сервер: {0}", "DashboardVersionNumber": "Версія: {0}", - "Data": "даныя", + "Data": "Дадзеныя", "DateAdded": "Дата дабаўлення", "DatePlayed": "Дата прайгравання", "DeathDateValue": "Памёр: {0}", "Delete": "Выдаліць", "DeleteAll": "Выдаліць усе", - "DeleteDeviceConfirmation": "Вы ўпэўнены, што хочаце выдаліць гэту прыладу? Ён зноў з'явіцца ў наступны раз, калі карыстальнік увойдзе з яго дапамогай.", + "DeleteDeviceConfirmation": "Вы ўпэўнены, што хочаце выдаліць гэту прыладу? Ён зноў з'явіцца ў наступны раз, калі карыстальнік увойдзе з яго.", "DeleteDevicesConfirmation": "Вы ўпэўнены, што хочаце выдаліць усе прылады? Усе астатнія сеансы будуць выключаны. Прылады зноў з'явяцца пры наступным уваходзе карыстальніка.", "DeleteImage": "Выдаліць выяву", "DeleteImageConfirmation": "Вы ўпэўнены, што хочаце выдаліць гэты відарыс?", - "DeleteMedia": "Выдаліць носьбіт", + "DeleteMedia": "Выдаліць медыя", "DeleteUserConfirmation": "Вы ўпэўнены, што хочаце выдаліць гэтага карыстальніка?", "Depressed": "Прыгнечаны", "Descending": "Па сыходзе", "Desktop": "Працоўны стол", "DetectingDevices": "Прылады выяўлення", - "DirectStreamHelp2": "Магутнасць, спажываная прамой плынню, звычайна залежыць ад аўдыяпрофілю. Толькі відэаплынь без страт.", + "DirectStreamHelp2": "Рэсурсы, якія спажываюцца прамой трансляцыяй, звычайна залежаць ад аўдыё профіля. Толькі відэа паток перадаецца без страт.", "DirectStreaming": "Прамая трансляцыя", "EnablePlugin": "Уключыць", "DisableCustomCss": "Адключыць карыстальніцкі код CSS, прадастаўлены серверам", "DisablePlugin": "Адключыць", - "DisplayInOtherHomeScreenSections": "Адлюстраванне ў раздзелах галоўнага экрана, такіх як «Апошнія медыя» і «Працягнуць прагляд»", - "DisplayMissingEpisodesWithinSeasons": "Паказаць адсутныя серыі ў межах сезонаў", + "DisplayInOtherHomeScreenSections": "Паказаць ў раздзелах галоўнага экрана такія секцыі як \"Апошнія медыя\" і \"Працягнуць прагляд\"", + "DisplayMissingEpisodesWithinSeasons": "Паказаць адсутныя серыі ў сезону", "DrmChannelsNotImported": "Каналы з DRM не будуць імпартаваны.", "DropShadow": "Цень", - "EditMetadata": "Рэдагаваць метаданыя", + "EditMetadata": "Рэдагаваць метададзеныя", "EditSubtitles": "Рэдагаваць субтытры", "EnableAutoCast": "Ўсталяваць па змаўчанні", "EnableBackdropsHelp": "Паказваць фоны на фоне некаторых старонак падчас прагляду бібліятэкі.", @@ -985,7 +985,7 @@ "MessageForgotPasswordFileCreated": "Наступны файл быў створаны на вашым серверы і змяшчае інструкцыі аб тым, як дзейнічаць далей:", "MessageForgotPasswordInNetworkRequired": "Паўтарыце спробу ў вашай хатняй сетцы, каб пачаць працэс скіду пароля.", "MessageGetInstalledPluginsError": "Адбылася памылка пры атрыманні спісу ўсталяваных у цяперашні час плагінаў.", - "LabelEnableDlnaPlayTo": "Уключыце функцыю DLNA «Прайграць у».", + "LabelEnableDlnaPlayTo": "Уключыце функцыю DLNA \"Play To\"", "MessageNoPluginsInstalled": "У вас не ўстаноўлены плагіны.", "MessageNoRepositories": "Няма сховішчаў.", "MessageNoServersAvailable": "З дапамогай аўтаматычнага выяўлення сервераў не знойдзены серверы.", @@ -1452,7 +1452,7 @@ "DownloadAll": "Спампаваць усе", "EditImages": "Рэдагаваць выявы", "EnableDetailsBanner": "Банер з падрабязнасцямі", - "EnableDetailsBannerHelp": "Адлюстраванне выявы банера ўверсе старонкі з інфармацыяй аб тавары.", + "EnableDetailsBannerHelp": "Адлюстраваць выявы банера ўверсе старонкі з інфармацыяй аб тавары.", "ErrorAddingTunerDevice": "Пры даданні цюнэра адбылася памылка. Пераканайцеся, што ён даступны, і паўтарыце спробу.", "ErrorDeletingItem": "Пры выдаленні элемента з сервера адбылася памылка. Калі ласка, праверце, што Jellyfin мае доступ для запісу ў тэчку мультымедыя, і паўтарыце спробу.", "ErrorGettingTvLineups": "Адбылася памылка спампоўвання падборак ТБ. Пераканайцеся, што ваша інфармацыя правільная, і паўтарыце спробу.", From 14ce1fc36211ebc81a4c392968b10af18a6d42de Mon Sep 17 00:00:00 2001 From: Pretendexxx Date: Sun, 5 Feb 2023 22:53:47 +0000 Subject: [PATCH 082/222] Translated using Weblate (Lithuanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lt/ --- src/strings/lt-lt.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index bc946ef9e4..f25d12d3f6 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -1037,5 +1037,15 @@ "Unmute": "Išjungti nutildymą", "ValueTimeLimitSingleHour": "Laiko limitas: 1 valanda", "Logo": "Logotipas", - "LearnHowYouCanContribute": "Sužinokite, kaip galite prisidėti." + "LearnHowYouCanContribute": "Sužinokite, kaip galite prisidėti.", + "MetadataManager": "Metaduomenų tvarkyklė", + "UninstallPluginConfirmation": "Ar tikrai norite pašalinti {0}?", + "MessageDeleteTaskTrigger": "Ar tikrai norite ištrinti šią užduoties paleidiklį?", + "LabelKodiMetadataDateFormat": "Išleidimo datos formatas:", + "MessageConfirmRevokeApiKey": "Ar tikrai norite atšaukti šį API raktą? Aplikacijos ryšys su šiuo serveriu bus staiga nutrauktas.", + "MessageNoPluginConfiguration": "Šis įskiepis neturi nustatymų, kuriuos būtų galima nustatyti.", + "Metadata": "Metaduomenys", + "OptionSaveMetadataAsHidden": "Išsaugoti metaduomenis ir vaizdus kaip paslėptus failus", + "PinCodeResetConfirmation": "Ar tikrai norite iš naujo nustatyti \"Easy PIN\" kodą?", + "LabelScreensaver": "Ekrano užsklanda:" } From 07425d05c62c3632269ec9a9f7b9c3a7f20d65af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 01:05:22 +0000 Subject: [PATCH 083/222] Update dependency @loadable/component to v5.15.3 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b6f98504d..e08f8283c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@fontsource/noto-sans-tc": "4.5.12", "@jellyfin/libass-wasm": "4.1.1", "@jellyfin/sdk": "unstable", - "@loadable/component": "5.15.2", + "@loadable/component": "5.15.3", "blurhash": "2.0.4", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.3.2", @@ -2483,9 +2483,9 @@ "dev": true }, "node_modules/@loadable/component": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.15.2.tgz", - "integrity": "sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.15.3.tgz", + "integrity": "sha512-VOgYgCABn6+/7aGIpg7m0Ruj34tGetaJzt4bQ345FwEovDQZ+dua+NWLmuJKv8rWZyxOUSfoJkmGnzyDXH2BAQ==", "dependencies": { "@babel/runtime": "^7.7.7", "hoist-non-react-statics": "^3.3.1", @@ -2499,7 +2499,7 @@ "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "react": ">=16.3.0" + "react": "^16.3.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@mdn/browser-compat-data": { @@ -20620,9 +20620,9 @@ "dev": true }, "@loadable/component": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.15.2.tgz", - "integrity": "sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.15.3.tgz", + "integrity": "sha512-VOgYgCABn6+/7aGIpg7m0Ruj34tGetaJzt4bQ345FwEovDQZ+dua+NWLmuJKv8rWZyxOUSfoJkmGnzyDXH2BAQ==", "requires": { "@babel/runtime": "^7.7.7", "hoist-non-react-statics": "^3.3.1", diff --git a/package.json b/package.json index 7d1b846a0f..38616ccbd8 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "@fontsource/noto-sans-tc": "4.5.12", "@jellyfin/libass-wasm": "4.1.1", "@jellyfin/sdk": "unstable", - "@loadable/component": "5.15.2", + "@loadable/component": "5.15.3", "blurhash": "2.0.4", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.3.2", From 2319537b0aafb7f5bfd629cb28ca0d2959146aeb Mon Sep 17 00:00:00 2001 From: Troja Date: Mon, 6 Feb 2023 05:42:16 +0000 Subject: [PATCH 084/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 2cc7aeb896..d80b9f90a8 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -961,7 +961,7 @@ "LabelAccessEnd": "Час заканчэння:", "ListPaging": "{0}-{1} з {2}", "LiveBroadcasts": "Прамыя трансляцыі", - "LiveTV": "Жывое тэлебачанне", + "LiveTV": "Прамы эфір", "MaxParentalRatingHelp": "Кантэнт з больш высокім рэйтынгам будзе схаваны ад гэтага карыстальніка.", "MediaInfoBitrate": "Бітрэйт", "MediaInfoChannels": "Каналы", From a87226bd864e5b16e6413640a8f7adf0e75f3015 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 11:14:58 +0000 Subject: [PATCH 085/222] Update dependency swiper to v8.4.7 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e08f8283c2..a15cca7c8a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "resize-observer-polyfill": "1.5.1", "screenfull": "6.0.2", "sortablejs": "1.15.0", - "swiper": "8.4.5", + "swiper": "8.4.7", "webcomponents.js": "0.7.24", "whatwg-fetch": "3.6.2", "workbox-core": "6.5.4", @@ -17141,9 +17141,9 @@ } }, "node_modules/swiper": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.5.tgz", - "integrity": "sha512-zveyEFBBv4q1sVkbJHnuH4xCtarKieavJ4SxP0QEHvdpPLJRuD7j/Xg38IVVLbp7Db6qrPsLUePvxohYx39Agw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.7.tgz", + "integrity": "sha512-VwO/KU3i9IV2Sf+W2NqyzwWob4yX9Qdedq6vBtS0rFqJ6Fa5iLUJwxQkuD4I38w0WDJwmFl8ojkdcRFPHWD+2g==", "funding": [ { "type": "patreon", @@ -31686,9 +31686,9 @@ } }, "swiper": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.5.tgz", - "integrity": "sha512-zveyEFBBv4q1sVkbJHnuH4xCtarKieavJ4SxP0QEHvdpPLJRuD7j/Xg38IVVLbp7Db6qrPsLUePvxohYx39Agw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.7.tgz", + "integrity": "sha512-VwO/KU3i9IV2Sf+W2NqyzwWob4yX9Qdedq6vBtS0rFqJ6Fa5iLUJwxQkuD4I38w0WDJwmFl8ojkdcRFPHWD+2g==", "requires": { "dom7": "^4.0.4", "ssr-window": "^4.0.2" diff --git a/package.json b/package.json index 38616ccbd8..70e94034ee 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "resize-observer-polyfill": "1.5.1", "screenfull": "6.0.2", "sortablejs": "1.15.0", - "swiper": "8.4.5", + "swiper": "8.4.7", "webcomponents.js": "0.7.24", "whatwg-fetch": "3.6.2", "workbox-core": "6.5.4", From 47d54ee418552b40bbabbba7488f94553cab6e17 Mon Sep 17 00:00:00 2001 From: rushmash Date: Mon, 6 Feb 2023 11:37:17 +0000 Subject: [PATCH 086/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 50 +++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index d80b9f90a8..e8a452530d 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -3,7 +3,7 @@ "ButtonOk": "ОК", "ButtonQuickStartGuide": "Даведнік па пачатку працы", "ButtonSignOut": "Выйсці", - "HeaderEasyPinCode": "Просты PIN-код", + "HeaderEasyPinCode": "Easy PIN-код", "HeaderPaths": "Шляхі", "HeaderTaskTriggers": "Трыгеры задачы", "LabelFinish": "Гатова", @@ -191,14 +191,14 @@ "Filter": "Фільтраваць", "HeaderActiveDevices": "Актыўныя прылады", "HeaderActiveRecordings": "Актыўныя запісы", - "HeaderActivity": "актыўнасць", + "HeaderActivity": "Актыўнасць", "HeaderAddUser": "Дадаць карыстальніка", "HeaderPinCodeReset": "Скінуць просты PIN-код", "HeaderPortRanges": "Налады брандмаўэра і проксі", "HeaderPreferredMetadataLanguage": "Пераважная мова метаданых", "HeaderProfileInformation": "Інфармацыя аб профілі", "HeaderRecordingOptions": "Параметры запісу", - "HeaderSelectPath": "Выберыце Шлях", + "HeaderSelectPath": "Выберыце шлях", "HeaderSortOrder": "Парадак сартавання", "HeaderSpecialEpisodeInfo": "Спецыяльная інфармацыя аб эпізодзе", "HeaderStartNow": "Пачаць зараз", @@ -214,7 +214,7 @@ "LabelBirthDate": "Дата нараджэння:", "LabelBitrate": "Бітрэйт:", "LabelCollection": "Калекцыя:", - "LabelCurrentPassword": "Актуальны пароль:", + "LabelCurrentPassword": "Бягучы пароль:", "LabelCustomCertificatePath": "Шлях карыстальніцкага сертыфіката SSL:", "LabelCustomCss": "Карыстальніцкі код CSS:", "LabelCustomCssHelp": "Прымяніце свой карыстальніцкі код CSS для тэматызавання/брэндынгу на вэб-інтэрфейсе.", @@ -294,11 +294,11 @@ "EnableBlurHashHelp": "Выявы, якія яшчэ загружаюцца, будуць адлюстроўвацца з унікальным запаўняльнікам.", "EnableFasterAnimationsHelp": "Выкарыстоўваць хуткія анімацыі і пераходы.", "ErrorDefault": "Адбылася памылка апрацоўкі запыту. Калі ласка паспрабуйце зноў пазней.", - "EveryXHours": "Кожныя {0} гадз", + "EveryXHours": "Кожныя {0} гадзін", "HeaderAppearsOn": "З'яўляецца на", - "Extras": "Дадаткова", + "Extras": "Дапматэрыялы", "FastForward": "Перамотка наперад", - "Favorite": "Любімая", + "Favorite": "Абранае", "Framerate": "Частата кадраў", "HeaderCustomDlnaProfiles": "Карыстальніцкія профілі", "HeaderDeleteItems": "Выдаліць элементы", @@ -407,7 +407,7 @@ "EnableThemeSongsHelp": "Прайгравайце тэматычныя песні ў фонавым рэжыме падчас прагляду бібліятэкі.", "EnableThemeVideosHelp": "Прайграванне тэматычных відэа ў фонавым рэжыме падчас прагляду бібліятэкі.", "Engineer": "Гукарэжысёр", - "Episode": "эпізод", + "Episode": "Эпізод", "Episodes": "Эпізоды", "ErrorAddingListingsToSchedulesDirect": "Пры даданні раскладу ў ваш уліковы запіс Schedules Direct адбылася памылка. Schedules Direct дазваляе толькі абмежаваную колькасць складаў на ўліковы запіс. Магчыма, вам спатрэбіцца ўвайсці на вэб-сайт Schedules Direct і выдаліць іншыя спісы са свайго ўліковага запісу, перш чым працягнуць.", "ErrorAddingMediaPathToVirtualFolder": "Пры даданні шляху носьбіта адбылася памылка. Упэўніцеся, што шлях сапраўдны і Jellyfin мае доступ да гэтага месца.", @@ -415,7 +415,7 @@ "ErrorPleaseSelectLineup": "Выберыце склад і паўтарыце спробу. Калі няма даступных лінейак, праверце правільнасць вашага імя карыстальніка, пароля і паштовага індэкса.", "LabelTypeText": "Тэкст", "ErrorStartHourGreaterThanEnd": "Час заканчэння павінен быць большым за час пачатку.", - "EveryXMinutes": "Кожныя {0} хв", + "EveryXMinutes": "Кожныя {0} хвіліны", "ExitFullscreen": "Выйсці з поўнаэкраннага рэжыму", "LabelUserRemoteClientBitrateLimitHelp": "Перавызначыць глабальнае значэнне па змаўчанні, усталяванае ў наладах сервера, гл. Панэль кіравання > Прайграванне > Паток.", "LabelVaapiDeviceHelp": "Гэта вузел візуалізацыі, які выкарыстоўваецца для апаратнага паскарэння.", @@ -587,7 +587,7 @@ "LabelEnableGamepad": "Уключыць геймпад", "VideoCodecNotSupported": "Відэакодэк не падтрымліваецца", "H264CrfHelp": "\"Каэфіцыент пастаяннай хуткасці\" (CRF) - гэта налада якасці па змаўчанні для кадавальніка x264 і x265. Вы можаце ўсталяваць значэнні ад 0 да 51, дзе больш нізкія значэнні прывядуць да лепшай якасці (за кошт большага памеру файла). Разумныя значэнні знаходзяцца паміж 18 і 28. Значэнне па змаўчанні для x264 роўна 23, а для x265 - 28, так што вы можаце выкарыстоўваць гэта як адпраўную кропку.", - "HDPrograms": "HD праграмы", + "HDPrograms": "HD-праграмы", "AnamorphicVideoNotSupported": "Анаморфнае відэа не падтрымліваецца", "SecondaryAudioNotSupported": "Другасныя гукавыя дарожкі не падтрымліваюцца", "RefFramesNotSupported": "Апорныя кадры не падтрымліваюцца", @@ -603,7 +603,7 @@ "HeaderDirectPlayProfile": "Профіль прамога прайгравання", "HeaderDirectPlayProfileHelp": "Дадайце профілі прамога прайгравання, каб паказаць, якія фарматы можа апрацоўваць прылада.", "HeaderDownloadSync": "Спампоўка і сінхранізацыя", - "HeaderDVR": "Відэарэгістратар", + "HeaderDVR": "DVR", "HeaderEditImages": "Рэдагаваць выявы", "HeaderFrequentlyPlayed": "Часта гуляюць", "HeaderGuideProviders": "Пастаўшчыкі дадзеных тэлегіда", @@ -638,9 +638,9 @@ "HeaderRunningTasks": "Запуск задач", "HeaderScenes": "Сцэны", "HeaderSeasons": "Поры года", - "HeaderSelectCertificatePath": "Выберыце Шлях сертыфіката", - "HeaderSelectMetadataPath": "Выберыце Шлях метаданых", - "HeaderSelectMetadataPathHelp": "Праглядзіце або ўвядзіце шлях, які вы хочаце выкарыстоўваць для метададзеных. Тэчка павінна быць даступнай для запісу.", + "HeaderSelectCertificatePath": "Выберыце шлях да сертыфіката", + "HeaderSelectMetadataPath": "Выберыце шлях да метададзеных", + "HeaderSelectMetadataPathHelp": "Праглядзіце або ўвядзіце шлях, які вы хочаце выкарыстоўваць для метададзеных. Папка павінна быць даступнай для запісу.", "HeaderSelectServerCachePath": "Выберыце шлях да кэша сервера", "HeaderSelectServerCachePathHelp": "Праглядзіце або ўвядзіце шлях для выкарыстання файлаў кэша сервера. Тэчка павінна быць даступнай для запісу.", "HeaderSelectTranscodingPath": "Выберыце Часовы шлях перакадавання", @@ -659,7 +659,7 @@ "HeaderSyncPlaySelectGroup": "Далучайцеся да групы", "HeaderSyncPlayPlaybackSettings": "Прайграванне", "HeaderSyncPlayTimeSyncSettings": "Сінхранізацыя часу", - "HeaderSystemDlnaProfiles": "Профілі сістэмы", + "HeaderSystemDlnaProfiles": "Сістэмныя профілі", "HeaderTracks": "Трэкі", "HeaderTranscodingProfile": "Профіль транскадавання", "HeaderTranscodingProfileHelp": "Дадайце профілі перакадзіравання, каб паказаць, якія фарматы трэба выкарыстоўваць, калі патрабуецца перакадзіраванне.", @@ -704,7 +704,7 @@ "LabelColorTransfer": "Перадача колеру:", "LabelCommunityRating": "Рэйтынг супольнасці:", "LabelContentType": "Тып кантэнту:", - "LabelCountry": "краіна:", + "LabelCountry": "Краіна:", "LabelCreateHttpPortMap": "Уключыць аўтаматычнае адлюстраванне партоў для трафіку HTTP, а таксама HTTPS.", "LabelCreateHttpPortMapHelp": "Дазволіць аўтаматычнае супастаўленне партоў для стварэння правіла для трафіку HTTP у дадатак да трафіку HTTPS.", "LabelCriticRating": "Ацэнка крытыкаў:", @@ -742,7 +742,7 @@ "LabelEnableSSDPTracingHelp": "Уключыце рэгістрацыю падрабязнай трасіроўкі сеткі SSDP.
УВАГА: гэта прывядзе да сур'ёзнага зніжэння прадукцыйнасці.", "LabelEndDate": "Дата заканчэння:", "LabelEpisodeNumber": "Нумар эпізоду:", - "LabelEvent": "падзея:", + "LabelEvent": "Падзея:", "LabelEveryXMinutes": "Кожны:", "LabelH265Crf": "CRF кадавання H.265:", "LabelHDHomerunPortRange": "Дыяпазон партоў HDHomeRun:", @@ -905,8 +905,8 @@ "EncoderPresetHelp": "Выберыце больш хуткае значэнне, каб палепшыць прадукцыйнасць, або больш павольнае значэнне, каб палепшыць якасць.", "EndsAtValue": "Заканчваецца ў {0}", "Features": "Асаблівасці", - "GroupVersions": "Групавыя версіі", - "HeaderAccessSchedule": "Расклад доступу", + "GroupVersions": "Групаваць версіі", + "HeaderAccessSchedule": "Графік доступу", "HeaderAddToPlaylist": "Дадаць у спіс прайгравання", "HeaderAddUpdateImage": "Дадаць/абнавіць відарыс", "HeaderAddUpdateSubtitle": "Дадаць/абнавіць субтытры", @@ -917,12 +917,12 @@ "HeaderCastAndCrew": "Акцёры і здымачная група", "HeaderChannelAccess": "Доступ да канала", "HeaderConfirmRevokeApiKey": "Адклікаць ключ API", - "HeaderContinueListening": "Працягвайце слухаць", + "HeaderContinueListening": "Працягнуць праслухоўванне", "HeaderDeleteItem": "Выдаліць элемент", "HeaderDeleteProvider": "Выдаліць пастаўшчыка", "HeaderDeleteTaskTrigger": "Выдаліць трыгер задачы", "HeaderDeviceAccess": "Доступ да прылады", - "HeaderDevices": "прылады", + "HeaderDevices": "Прылады", "HeaderEnabledFields": "Уключаныя палі", "HeaderError": "Памылка", "HeaderMyMedia": "Мае СМІ", @@ -1397,7 +1397,7 @@ "MediaInfoDvBlSignalCompatibilityId": "Ідэнтыфікатар сумяшчальнасці сігналу DV bl", "YoutubeBadRequest": "Дрэнны запыт.", "EnableDisplayMirroring": "Адлюстраванне адлюстравання", - "FetchingData": "Атрыманне дадатковых даных", + "FetchingData": "Атрыманне дадатковых дадзеных", "LabelSortOrder": "Парадак сартавання:", "MarkPlayed": "Марк гуляў", "HeaderAlert": "Абвестка", @@ -1435,7 +1435,7 @@ "Studios": "Студыі", "Subtitle": "Падзагаловак", "SubtitleVerticalPositionHelp": "Нумар радка, дзе з'яўляецца тэкст. Дадатныя лічбы паказваюць зверху ўніз. Адмоўныя лічбы паказваюць знізу ўверх.", - "HideWatchedContentFromLatestMedia": "Схаваць прагледжанае змесціва з «Апошніх медыя»", + "HideWatchedContentFromLatestMedia": "Схаваць прагледжанае змесціва з \"Апошніх медыя\"", "MessageRenameMediaFolder": "Перайменаванне медыятэкі прывядзе да страты ўсіх метададзеных, будзьце асцярожныя.", "LabelMaxDaysForNextUpHelp": "Усталюйце максімальную колькасць дзён, на працягу якіх шоу павінна заставацца ў спісе \"Далей\", без яго прагляду.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Наступныя медыя-месцы будуць выдалены з вашай бібліятэкі:", @@ -1463,7 +1463,7 @@ "FileReadError": "Падчас чытання файла адбылася памылка.", "FormatValue": "Фармат: {0}", "Friday": "Пятніца", - "GroupBySeries": "Група па серыях", + "GroupBySeries": "Групаваць па серыялам", "GuestStar": "Запрошаная зорка", "HeaderAccessScheduleHelp": "Стварыце графік доступу, каб абмежаваць доступ да пэўных гадзін.", "HeaderAdmin": "Адміністрацыя", @@ -1485,7 +1485,7 @@ "HeaderFeatureAccess": "Доступ да функцый:", "HeaderFetcherSettings": "Налады выбаршчыка", "HeaderFetchImages": "Атрымаць выявы:", - "HeaderForKids": "Дзецям", + "HeaderForKids": "Для дзяцей", "HeaderIdentificationHeader": "Ідэнтыфікацыйны загаловак", "HeaderImageOptions": "Параметры выявы", "HeaderImageSettings": "Налады выявы", From 58e9265a00805eca2e99a9497c826ed31a69fb89 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 20:29:23 +0000 Subject: [PATCH 087/222] Update github/codeql-action action to v2.2.2 --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 46f45745f1..875cdc954a 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -21,11 +21,11 @@ jobs: - name: Checkout repository uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 - name: Initialize CodeQL - uses: github/codeql-action/init@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # v2.2.1 + uses: github/codeql-action/init@39d8d7e78f59cf6b40ac3b9fbebef0c753d7c9e5 # v2.2.2 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # v2.2.1 + uses: github/codeql-action/autobuild@39d8d7e78f59cf6b40ac3b9fbebef0c753d7c9e5 # v2.2.2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@3ebbd71c74ef574dbc558c82f70e52732c8b44fe # v2.2.1 + uses: github/codeql-action/analyze@39d8d7e78f59cf6b40ac3b9fbebef0c753d7c9e5 # v2.2.2 From 06f072a47e468d5f61292be251c7e48b645c65c8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 00:13:03 +0000 Subject: [PATCH 088/222] Update dependency typescript to v4.9.5 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1eb88bbe67..d8ceb2e922 100644 --- a/package-lock.json +++ b/package-lock.json @@ -108,7 +108,7 @@ "stylelint-order": "6.0.1", "stylelint-scss": "4.3.0", "ts-loader": "9.4.2", - "typescript": "4.9.4", + "typescript": "4.9.5", "webpack": "5.75.0", "webpack-cli": "5.0.1", "webpack-dev-server": "4.11.1", @@ -17878,9 +17878,9 @@ } }, "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -32364,9 +32364,9 @@ } }, "typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true }, "unbox-primitive": { diff --git a/package.json b/package.json index af4d92d36a..c920e7a0bd 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "stylelint-order": "6.0.1", "stylelint-scss": "4.3.0", "ts-loader": "9.4.2", - "typescript": "4.9.4", + "typescript": "4.9.5", "webpack": "5.75.0", "webpack-cli": "5.0.1", "webpack-dev-server": "4.11.1", From 6f0a6350a4a2ccf831e6c9308ae57680f69d5c04 Mon Sep 17 00:00:00 2001 From: rushmash Date: Mon, 6 Feb 2023 21:03:05 +0000 Subject: [PATCH 089/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 198 ++++++++++++++++++++--------------------- 1 file changed, 99 insertions(+), 99 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index e8a452530d..a6c4f649e0 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -8,12 +8,12 @@ "HeaderTaskTriggers": "Трыгеры задачы", "LabelFinish": "Гатова", "LabelYoureDone": "Вы скончылі!", - "MoreUsersCanBeAddedLater": "Потым можна дадаць яшчэ карыстальнікаў праз «Інфапанэль».", + "MoreUsersCanBeAddedLater": "Потым можна дадаць яшчэ карыстальнікаў праз «Панэль кіравання».", "TellUsAboutYourself": "Раскажыце пра сябе", "ThisWizardWillGuideYou": "Гэты памочнік правядзе вас праз усе фазы ўстаноўкі і налады. Спачатку абярыце упадабаную мову.", - "UserProfilesIntro": "У Jellyfin існуе ўбудаваная падтрымка для карыстальніцкіх профіляў, дазваляючы кожнаму карыстальніку валодаць сваімі ўласнымі параметрамі адлюстравання, станам прайгравання і кіраваннем ўтрымання.", + "UserProfilesIntro": "У Jellyfin існуе падтрымка для карыстальніцкіх профіляў з ўласнымі параметрамі адлюстравання, станам прайгравання і кіраваннем ўтрымання.", "WelcomeToProject": "Пачатак працы ў Jellyfin!", - "WizardCompleted": "Гэта ўсё, што нам трэба зараз. Jellyfin пачынае збіраць звесткі аб вашай медыятэцы. Азнаёмцеся пакуль з некаторымі нашымі праграмамі, а затым націсніце Гатова, каб праглядзець Инфопанель.", + "WizardCompleted": "Гэта ўсё, што нам трэба зараз. Jellyfin пачынае збіраць звесткі аб вашай медыятэцы. Азнаёмцеся пакуль з некаторымі нашымі праграмамі, а затым націсніце Гатова, каб праглядзець Панэль кіравання.", "ButtonSyncPlay": "Функцыя SyncPlay", "Sync": "Сінхранізаваць", "Playlists": "Плэйлісты", @@ -193,14 +193,14 @@ "HeaderActiveRecordings": "Актыўныя запісы", "HeaderActivity": "Актыўнасць", "HeaderAddUser": "Дадаць карыстальніка", - "HeaderPinCodeReset": "Скінуць просты PIN-код", + "HeaderPinCodeReset": "Скінуць Easy PIN-код", "HeaderPortRanges": "Налады брандмаўэра і проксі", - "HeaderPreferredMetadataLanguage": "Пераважная мова метаданых", + "HeaderPreferredMetadataLanguage": "Пераважная мова метададзеных", "HeaderProfileInformation": "Інфармацыя аб профілі", "HeaderRecordingOptions": "Параметры запісу", "HeaderSelectPath": "Выберыце шлях", "HeaderSortOrder": "Парадак сартавання", - "HeaderSpecialEpisodeInfo": "Спецыяльная інфармацыя аб эпізодзе", + "HeaderSpecialEpisodeInfo": "Інфармацыя аб спецэпізодзе", "HeaderStartNow": "Пачаць зараз", "HeaderStopRecording": "Спыніць запіс", "HeaderSyncPlaySettings": "Налады SyncPlay", @@ -209,7 +209,7 @@ "IgnoreDts": "Ігнараваць DTS (метка часу дэкадавання)", "InstantMix": "Імгненная сумесь", "Items": "Прадметы", - "LabelAudioBitrate": "Бітрэйт аўдыя:", + "LabelAudioBitrate": "Бітрэйт аўдыё:", "LabelAutomaticallyAddToCollectionHelp": "Калі хаця б 2 фільмы маюць аднолькавую назву калекцыі, яны будуць аўтаматычна дададзены ў калекцыю.", "LabelBirthDate": "Дата нараджэння:", "LabelBitrate": "Бітрэйт:", @@ -227,9 +227,9 @@ "LabelTrackNumber": "Нумар трэка:", "LabelTranscodes": "Перакадзіруе:", "LabelTriggerType": "Тып трыгера:", - "LabelMetadataPath": "Шлях метаданых:", + "LabelMetadataPath": "Шлях метададзеных:", "LabelVersionInstalled": "{0} усталяваны", - "LabelWeb": "Інтэрнэт:", + "LabelWeb": "Вэб:", "Localization": "Лакалізацыя", "MediaInfoBitDepth": "Разрадная глыбіня", "MediaInfoCodecTag": "Тэг кодэка", @@ -253,7 +253,7 @@ "Preview": "Папярэдні прагляд", "PreviousChapter": "Папярэдняя глава", "Primary": "Першасны", - "QuickConnectAuthorizeFail": "Невядомы код хуткага злучэння", + "QuickConnectAuthorizeFail": "Невядомы Quick Connect код", "Recordings": "Запісы", "Ended": "Скончылася", "RememberSubtitleSelections": "Усталюйце дарожку субтытраў на аснове папярэдняга элемента", @@ -277,9 +277,9 @@ "TabDirectPlay": "Прамое прайграванне", "TitleHardwareAcceleration": "Апаратнае паскарэнне", "ValueCodec": "Кодэк: {0}", - "ValueMinutes": "{0} хв", + "ValueMinutes": "{0} хвілін", "ValueOneSeries": "1 серыя", - "ValueSeriesCount": "{0} серыя", + "ValueSeriesCount": "{0} серый", "Writer": "Пісьменнік", "HeaderSelectFallbackFontPath": "Выберыце шлях да папкі рэзервовага шрыфта", "LabelFallbackFontPath": "Шлях да папкі рэзервовага шрыфта:", @@ -308,7 +308,7 @@ "LabelRequireHttps": "Патрабаваць HTTPS", "LabelVaapiDevice": "Прылада VA-API:", "ExtraLarge": "Вельмі вялікі", - "HeaderYears": "гады", + "HeaderYears": "Гады", "LabelValue": "значэнне:", "Image": "Малюнак", "LastSeen": "Апошні раз бачылі {0}", @@ -356,7 +356,7 @@ "LabelSource": "Крыніца:", "ClearQueue": "Ачысціць чаргу", "Conductor": "Дырыжор", - "ConfigureDateAdded": "Наладзьце спосаб вызначэння метададзеных для \"Дата дадання\" ў \"Інфармацыйнай панэль\" > Бібліятэка > Налады NFO", + "ConfigureDateAdded": "Наладзьце спосаб вызначэння метададзеных для \"Дата дадання\" ў \"Панэль кіравання\" > \"Медыятэка\" > \"Налады NFO\"", "ConfirmDeleteImage": "Выдаліць выяву?", "ConfirmDeleteItem": "Пры выдаленні гэтага элемента ён будзе выдалены як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", "ConfirmDeleteItems": "Выдаленне гэтых элементаў прывядзе да іх выдалення як з файлавай сістэмы, так і з вашай медыятэкі. Вы ўпэўнены, што хочаце працягнуць?", @@ -402,22 +402,22 @@ "EnableExternalVideoPlayersHelp": "Меню вонкавага прайгравальніка будзе паказана пры запуску прайгравання відэа.", "EnablePhotosHelp": "Выявы будуць выяўляцца і адлюстроўвацца разам з іншымі медыяфайламі.", "EnableRewatchingNextUp": "Уключыць паўторны прагляд у наступным", - "EnableRewatchingNextUpHelp": "Уключыць паказ ужо прагледжаных серый у раздзелах \"Далей\".", + "EnableRewatchingNextUpHelp": "Уключыць паказ ужо прагледжаных серый у раздзелах \"Наступнае\".", "EnableStreamLoopingHelp": "Уключыце гэта, калі жывыя трансляцыі ўтрымліваюць толькі некалькі секунд даных і іх трэба пастаянна запытваць. Уключэнне гэтага, калі гэта не патрэбна, можа выклікаць праблемы.", "EnableThemeSongsHelp": "Прайгравайце тэматычныя песні ў фонавым рэжыме падчас прагляду бібліятэкі.", "EnableThemeVideosHelp": "Прайграванне тэматычных відэа ў фонавым рэжыме падчас прагляду бібліятэкі.", - "Engineer": "Гукарэжысёр", + "Engineer": "Аўдыярэжысёр", "Episode": "Эпізод", "Episodes": "Эпізоды", "ErrorAddingListingsToSchedulesDirect": "Пры даданні раскладу ў ваш уліковы запіс Schedules Direct адбылася памылка. Schedules Direct дазваляе толькі абмежаваную колькасць складаў на ўліковы запіс. Магчыма, вам спатрэбіцца ўвайсці на вэб-сайт Schedules Direct і выдаліць іншыя спісы са свайго ўліковага запісу, перш чым працягнуць.", - "ErrorAddingMediaPathToVirtualFolder": "Пры даданні шляху носьбіта адбылася памылка. Упэўніцеся, што шлях сапраўдны і Jellyfin мае доступ да гэтага месца.", + "ErrorAddingMediaPathToVirtualFolder": "Пры даданні шляху медыя адбылася памылка. Упэўніцеся, што шлях сапраўдны і Jellyfin мае доступ да гэтага месца.", "ErrorAddingXmlTvFile": "Адбылася памылка доступу да файла XMLTV. Пераканайцеся, што файл існуе, і паўтарыце спробу.", "ErrorPleaseSelectLineup": "Выберыце склад і паўтарыце спробу. Калі няма даступных лінейак, праверце правільнасць вашага імя карыстальніка, пароля і паштовага індэкса.", "LabelTypeText": "Тэкст", "ErrorStartHourGreaterThanEnd": "Час заканчэння павінен быць большым за час пачатку.", "EveryXMinutes": "Кожныя {0} хвіліны", "ExitFullscreen": "Выйсці з поўнаэкраннага рэжыму", - "LabelUserRemoteClientBitrateLimitHelp": "Перавызначыць глабальнае значэнне па змаўчанні, усталяванае ў наладах сервера, гл. Панэль кіравання > Прайграванне > Паток.", + "LabelUserRemoteClientBitrateLimitHelp": "Перавызначыць глабальнае значэнне па змаўчанні, усталяванае ў наладах сервера, гл. \"Панэль кіравання\" > \"Прайграванне\" > \"Паток\".", "LabelVaapiDeviceHelp": "Гэта вузел візуалізацыі, які выкарыстоўваецца для апаратнага паскарэння.", "LabelVideoRange": "Дыяпазон відэа:", "LabelXDlnaDoc": "Ідэнтыфікатар класа прылады:", @@ -439,7 +439,7 @@ "MessageConfirmShutdown": "Вы ўпэўнены, што хочаце спыніць працу сервера?", "MessageContactAdminToResetPassword": "Каб скінуць пароль, звярніцеся да сістэмнага адміністратара.", "MessageDeleteTaskTrigger": "Вы ўпэўнены, што хочаце выдаліць гэты трыгер задачы?", - "MessageDirectoryPickerBSDInstruction": "Для BSD вам можа спатрэбіцца наладзіць сховішча ў вашай «Турме FreeNAS», каб Jellyfin мог атрымаць доступ да вашых носьбітаў.", + "MessageDirectoryPickerBSDInstruction": "Для BSD вам можа спатрэбіцца наладзіць сховішча ў вашай \"FreeNAS Jail\", каб Jellyfin мог атрымаць доступ да вашых медыя.", "MessageDirectoryPickerLinuxInstruction": "Для Linux на Arch Linux, CentOS, Debian, Fedora, openSUSE або Ubuntu вы павінны даць карыстальніку сэрвісу як мінімум доступ для чытання вашых месцаў захоўвання.", "MessageFileReadError": "Пры чытанні файла адбылася памылка. Калі ласка, паспрабуйце яшчэ раз.", "MessageImageFileTypeAllowed": "Падтрымліваюцца толькі файлы JPEG і PNG.", @@ -457,7 +457,7 @@ "OnApplicationStartup": "Пры запуску прыкладання", "OptionAllowBrowsingLiveTv": "Дазволіць доступ да ТБ у прамым эфіры", "OptionAllowContentDownload": "Дазволіць загрузку мультымедыя", - "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionCaptionInfoExSamsung": "CaptionInfoEx ( Samsung )", "OptionCommunityRating": "Рэйтынг супольнасці", "OptionCriticRating": "Рэйтынг крытыкаў", "OptionDatePlayed": "Дата гульні", @@ -469,7 +469,7 @@ "Filters": "Фільтры", "Genre": "Жанр", "GoogleCastUnsupported": "Google Cast не падтрымліваецца", - "GuideProviderLogin": "Увайсці", + "GuideProviderLogin": "Уваход", "GuideProviderSelectListings": "Выберыце спісы", "OptionPlainVideoItemsHelp": "Усе відэа прадстаўлены ў DIDL як \"object.item.videoItem\" замест больш канкрэтнага тыпу, напрыклад \"object.item.videoItem.movie\".", "OptionSaveMetadataAsHidden": "Захоўвайце метададзеныя і выявы як схаваныя файлы", @@ -484,10 +484,10 @@ "PasswordResetProviderHelp": "Выберыце пастаўшчыка скіду пароля, які будзе выкарыстоўвацца, калі гэты карыстальнік запытвае скід пароля.", "People": "Людзі", "PersonRole": "як {0}", - "PinCodeResetComplete": "Код Easy PIN быў скінуты.", + "PinCodeResetComplete": "Easy PIN-код быў скінуты.", "PlayAllFromHere": "Гуляць усё адсюль", "PlayFromBeginning": "Гуляць з пачатку", - "PleaseAddAtLeastOneFolder": "Калі ласка, дадайце хаця б адну папку ў гэту бібліятэку, націснуўшы кнопку «+» у раздзеле «Папкі».", + "PleaseAddAtLeastOneFolder": "Калі ласка, дадайце хаця б адну папку ў гэту бібліятэку, націснуўшы кнопку \"+\" у раздзеле \"Папкі\".", "PleaseSelectTwoItems": "Калі ласка, абярыце як мінімум два пункты.", "Poster": "Плакат", "PreferEmbeddedTitlesOverFileNames": "Аддавайце перавагу ўбудаваным назвам перад назвамі файлаў", @@ -543,7 +543,7 @@ "TrackCount": "{0} трэкаў", "Trailers": "Трэйлеры", "Transcoding": "Перакадзіроўка", - "TV": "тэлевізар", + "TV": "ТБ", "TvLibraryHelp": "Праглядзіце {0}Кіраўніцтва па назвах тэлевізараў{1}.", "TypeOptionPluralAudio": "Аўдыё", "TypeOptionPluralBoxSet": "Скрынкі", @@ -560,7 +560,7 @@ "Up": "Уверх", "UseEpisodeImagesInNextUp": "Выкарыстоўвайце выявы эпізодаў у раздзелах \"Далей\" і \"Працягнуць прагляд\"", "UseEpisodeImagesInNextUpHelp": "У раздзелах \"Далей\" і \"Працягнуць прагляд\" у якасці эскізаў будуць выкарыстоўвацца выявы эпізодаў замест асноўнай мініяцюры шоу.", - "UserAgentHelp": "Увядзіце ўласны HTTP-загаловак «User-Agent».", + "UserAgentHelp": "Увядзіце ўласны 'User-Agent' HTTP загаловак.", "ValueDiscNumber": "Дыск {0}", "ValueEpisodeCount": "{0} эпізодаў", "ValueMusicVideoCount": "{0} музычных відэа", @@ -623,9 +623,9 @@ "HeaderNextVideoPlayingInValue": "Наступнае відэа будзе прайгравацца праз {0}", "HeaderParentalRatings": "Бацькоўскі рэйтынг", "HeaderPhotoAlbums": "Фотаальбомы", - "HeaderPlayAll": "Гуляць усе", + "HeaderPlayAll": "Прайграваць усе", "HeaderPlayback": "Прайграванне мультымедыя:", - "HeaderPlayOn": "Гуляць далей", + "HeaderPlayOn": "Прайграваць далей", "HeaderPleaseSignIn": "Калі ласка, увайдзіце", "HeaderPluginInstallation": "Ўстаноўка плагіна", "HeaderProfileServerSettingsHelp": "Гэтыя значэнні кантралююць, як сервер будзе прадстаўляць сябе кліентам.", @@ -642,9 +642,9 @@ "HeaderSelectMetadataPath": "Выберыце шлях да метададзеных", "HeaderSelectMetadataPathHelp": "Праглядзіце або ўвядзіце шлях, які вы хочаце выкарыстоўваць для метададзеных. Папка павінна быць даступнай для запісу.", "HeaderSelectServerCachePath": "Выберыце шлях да кэша сервера", - "HeaderSelectServerCachePathHelp": "Праглядзіце або ўвядзіце шлях для выкарыстання файлаў кэша сервера. Тэчка павінна быць даступнай для запісу.", - "HeaderSelectTranscodingPath": "Выберыце Часовы шлях перакадавання", - "HeaderSelectTranscodingPathHelp": "Праглядзіце або ўвядзіце шлях для перакадзіравання файлаў. Тэчка павінна быць даступнай для запісу.", + "HeaderSelectServerCachePathHelp": "Праглядзіце або ўвядзіце шлях для выкарыстання файлаў кэша сервера. Папка павінна быць даступнай для запісу.", + "HeaderSelectTranscodingPath": "Выберыце часовы шлях перакадзіравання", + "HeaderSelectTranscodingPathHelp": "Праглядзіце або ўвядзіце шлях для перакадзіравання файлаў. Папка павінна быць даступнай для запісу.", "HeaderSeriesOptions": "Параметры серыі", "HeaderSeriesStatus": "Статус серыі", "HeaderServerAddressSettings": "Налады адраса сервера", @@ -656,7 +656,7 @@ "HeaderSubtitleProfiles": "Профілі субтытраў", "HeaderSubtitleProfilesHelp": "Профілі субтытраў апісваюць фарматы субтытраў, якія падтрымліваюцца прыладай.", "HeaderSyncPlayEnabled": "SyncPlay уключаны", - "HeaderSyncPlaySelectGroup": "Далучайцеся да групы", + "HeaderSyncPlaySelectGroup": "Далучыцца да групы", "HeaderSyncPlayPlaybackSettings": "Прайграванне", "HeaderSyncPlayTimeSyncSettings": "Сінхранізацыя часу", "HeaderSystemDlnaProfiles": "Сістэмныя профілі", @@ -666,26 +666,26 @@ "HeaderUser": "Карыстальнік", "HeaderUsers": "Карыстальнікі", "HeaderVideoQuality": "Якасць відэа", - "HeaderVideoTypes": "Віды відэа", + "HeaderVideoTypes": "Тыпы відэа", "Hide": "Схаваць", "Home": "дадому", "HomeVideosPhotos": "Хатнія відэа і фота", "Horizontal": "Гарызантальны", "HttpsRequiresCert": "Каб уключыць бяспечныя злучэнні, вам трэба будзе прадаставіць надзейны сертыфікат SSL, напрыклад Let's Encrypt. Калі ласка, падайце сертыфікат або адключыце бяспечныя злучэнні.", - "IgnoreDtsHelp": "Адключэнне гэтай опцыі можа вырашыць некаторыя праблемы, напрыклад. адсутнічае гук на каналах з асобнымі аўдыя- і відэаплынямі.", + "IgnoreDtsHelp": "Адключэнне гэтай опцыі можа вырашыць некаторыя праблемы, напрыклад. адсутнічае аўдыё на каналах з асобнымі аўдыя і відэаплынямі.", "ItemCount": "{0} элементаў", "ItemDetails": "Дэталі прадмета", - "Label3DFormat": "фармат 3D:", + "Label3DFormat": "Фармат 3D:", "LabelAirDays": "Эфірныя дні:", "LabelAirsAfterSeason": "Эфір пасля сезона:", "LabelAirTime": "Эфірны час:", - "LabelAlbum": "альбом:", - "LabelAlbumArtHelp": "PN, які выкарыстоўваецца для вокладкі альбома, у атрыбуте «dlna:profileID» на «upnp:albumArtURI». Некаторыя прылады патрабуюць пэўнага значэння, незалежна ад памеру выявы.", + "LabelAlbum": "Альбом:", + "LabelAlbumArtHelp": "PN, які выкарыстоўваецца для вокладкі альбома, у атрыбуте \"dlna:profileID\" на \"upnp:albumArtURI\". Некаторыя прылады патрабуюць пэўнага значэння, незалежна ад памеру выявы.", "LabelAlbumArtists": "Выканаўцы альбома:", "LabelAlbumArtMaxWidth": "Максімальная шырыня вокладкі альбома:", "LabelAllowedRemoteAddressesMode": "Рэжым фільтра аддаленага IP-адраса:", "LabelAppNameExample": "Прыклад: Sickbeard, Sonarr", - "LabelArtists": "Мастакі:", + "LabelArtists": "Выканаўцы:", "LabelArtistsHelp": "Раздзяляйце некалькіх выканаўцаў кропкай з коскай.", "LabelAudioBitDepth": "Глыбіня гуку ў бітах:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Аўтаматычна абнаўляць метаданыя з Інтэрнэту:", @@ -710,7 +710,7 @@ "LabelCriticRating": "Ацэнка крытыкаў:", "LabelCurrentStatus": "Бягучы стан:", "LabelCustomCertificatePathHelp": "Шлях да файла PKCS #12, які змяшчае сертыфікат і прыватны ключ для ўключэння падтрымкі TLS на карыстальніцкім дамене.", - "LabelDashboardTheme": "Тэма прыборнай панэлі сервера:", + "LabelDashboardTheme": "Тэма панэлі кіравання сервера:", "LabelDateAddedBehavior": "Дата дадання паводзін для новага кантэнту:", "LabelDateTimeLocale": "Рэгіянальная налада даты і часу:", "LabelDefaultScreen": "Экран па змаўчанні:", @@ -744,12 +744,12 @@ "LabelEpisodeNumber": "Нумар эпізоду:", "LabelEvent": "Падзея:", "LabelEveryXMinutes": "Кожны:", - "LabelH265Crf": "CRF кадавання H.265:", + "LabelH265Crf": "H.265 кадзіроўка CRF:", "LabelHDHomerunPortRange": "Дыяпазон партоў HDHomeRun:", "LabelHDHomerunPortRangeHelp": "Абмяжоўвае дыяпазон партоў HDHomeRun UDP гэтым значэннем. (Па змаўчанні 1024 - 645535).", "LabelHomeNetworkQuality": "Якасць хатняй сеткі:", "LabelHomeScreenSectionValue": "Раздзел галоўнага экрана {0}:", - "LabelMaxDaysForNextUp": "Максімальная колькасць дзён у «Далей»:", + "LabelMaxDaysForNextUp": "Максімальная колькасць дзён у \"Далей\":", "LabelMaxMuxingQueueSizeHelp": "Максімальная колькасць пакетаў, якія можна буферызаваць падчас чакання ініцыялізацыі ўсіх патокаў. Паспрабуйце павялічыць яго, калі ў журналах FFmpeg вы па-ранейшаму сустракаеце памылку \"Занадта шмат пакетаў у буферы для выхаднога патоку\". Рэкамендаванае значэнне - 2048.", "LabelMaxStreamingBitrateHelp": "Укажыце максімальны бітрэйт пры трансляцыі.", "LabelMessageText": "Тэкст паведамлення:", @@ -776,7 +776,7 @@ "LabelPostProcessorArguments": "Аргументы каманднага радка постпрацэсара:", "LabelPostProcessorArgumentsHelp": "Выкарыстоўвайце {path} як шлях да файла запісу.", "LabelPreferredDisplayLanguage": "Пажаданая мова адлюстравання:", - "LabelProfileCodecs": "кодэкі:", + "LabelProfileCodecs": "Кодэкі:", "LabelProfileContainer": "Кантэйнер:", "LabelProfileContainersHelp": "Аддзяляюцца коскамі. Гэта можна пакінуць пустым, каб прымяніць да ўсіх кантэйнераў.", "LabelProtocol": "Пратакол:", @@ -786,7 +786,7 @@ "LabelPublicHttpsPortHelp": "Нумар публічнага порта, які трэба супаставіць з лакальным портам HTTPS.", "LabelPublishedServerUri": "Апублікаваныя URI сервера:", "LabelPublishedServerUriHelp": "Перавызначыць URI, які выкарыстоўваецца Jellyfin, на аснове інтэрфейсу або IP-адраса кліента.", - "LabelQuickConnectCode": "Код хуткага злучэння:", + "LabelQuickConnectCode": "Код Quick Connect:", "LabelReasonForTranscoding": "Прычына перакадавання:", "LabelRecordingPath": "Шлях запісу па змаўчанні:", "LabelRecordingPathHelp": "Укажыце месца па змаўчанні для захавання запісаў. Калі пакінуць пустым, будзе выкарыстоўвацца папка дадзеных праграмы сервера.", @@ -799,7 +799,7 @@ "LabelSaveLocalMetadataHelp": "Захаванне ілюстрацыі ў папках мультымедыя змесціць іх у месца, дзе іх можна будзе лёгка рэдагаваць.", "LabelScheduledTaskLastRan": "Апошні запуск {0}, заняў {1}.", "LabelSeasonNumber": "Нумар сезона:", - "LabelSelectFolderGroups": "Аўтаматычна групаваць змесціва з наступных папак у віды, такія як «Фільмы», «Музыка» і «ТБ»:", + "LabelSelectFolderGroups": "Аўтаматычна групаваць змесціва з наступных папак у віды, такія як \"Фільмы\", \"Музыка\" і \"ТБ\":", "LabelSelectFolderGroupsHelp": "Папкі, якія не адзначаны, будуць паказвацца самастойна ў іх уласным праглядзе.", "LabelSelectUsers": "Выберыце карыстальнікаў:", "LabelSelectVersionToInstall": "Выберыце версію для ўстаноўкі:", @@ -902,15 +902,15 @@ "EnablePhotos": "Пакажыце фатаграфіі", "EnableStreamLooping": "Аўтаматычнае прайграванне жывых трансляцый", "EnableTonemapping": "Уключыць адлюстраванне тонаў", - "EncoderPresetHelp": "Выберыце больш хуткае значэнне, каб палепшыць прадукцыйнасць, або больш павольнае значэнне, каб палепшыць якасць.", + "EncoderPresetHelp": "Выберыце большае хуткае значэнне, каб палепшыць прадукцыйнасць, або больш павольнае значэнне, каб палепшыць якасць.", "EndsAtValue": "Заканчваецца ў {0}", "Features": "Асаблівасці", "GroupVersions": "Групаваць версіі", "HeaderAccessSchedule": "Графік доступу", "HeaderAddToPlaylist": "Дадаць у спіс прайгравання", - "HeaderAddUpdateImage": "Дадаць/абнавіць відарыс", + "HeaderAddUpdateImage": "Дадаць/абнавіць выяву", "HeaderAddUpdateSubtitle": "Дадаць/абнавіць субтытры", - "HeaderApp": "дадатак", + "HeaderApp": "Прыкладанне", "HeaderAudioBooks": "Аўдыё кнігі", "HeaderAutoDiscovery": "Выяўленне сеткі", "HeaderBlockItemsWithNoRating": "Блакіраваць элементы без або нераспазнанай інфармацыі аб рэйтынгу:", @@ -926,7 +926,7 @@ "HeaderEnabledFields": "Уключаныя палі", "HeaderError": "Памылка", "HeaderMyMedia": "Мае СМІ", - "HeaderOnNow": "Зараз", + "HeaderOnNow": "У эфіры", "HeaderPassword": "Пароль", "HeaderRemoteAccessSettings": "Налады аддаленага доступу", "HeaderRemoveMediaFolder": "Выдаліць тэчку мультымедыя", @@ -942,20 +942,20 @@ "LabelTranscodingThreadCountHelp": "Выберыце максімальную колькасць патокаў для выкарыстання пры перакадзіраванні. Памяншэнне колькасці патокаў знізіць загрузку працэсара, але можа быць недастаткова хутка пераўтворана для гладкага прайгравання.", "LabelTunerIpAddress": "IP-адрас цюнэра:", "LabelTunerType": "Тып цюнэра:", - "LabelTypeMetadataDownloaders": "Сродкі загрузкі метаданых ({0}):", + "LabelTypeMetadataDownloaders": "Сродкі загрузкі метададзеных ({0}):", "LabelUDPPortRange": "Дыяпазон сувязі UDP:", "LabelUDPPortRangeHelp": "Забараніць Jellyfin выкарыстоўваць гэты дыяпазон партоў пры падключэнні UDP. (Па змаўчанні 1024 - 645535).
Заўвага: некаторыя функцыі патрабуюць фіксаваных партоў, якія могуць знаходзіцца па-за межамі гэтага дыяпазону.", "LabelUnstable": "Няўстойлівы", - "LabelUseNotificationServices": "Скарыстайцеся наступнымі сэрвісамі:", + "LabelUseNotificationServices": "Скарыстацца наступнымі сэрвісамі:", "LabelUserAgent": "Агент карыстальніка:", - "LabelUserLibrary": "Карыстальніцкая бібліятэка:", - "LabelUserLibraryHelp": "Выберыце, якую бібліятэку карыстальніка паказаць на прыладзе. Пакіньце пустым, каб атрымаць налады па змаўчанні.", + "LabelUserLibrary": "Карыстальніцкая медыятэка:", + "LabelUserLibraryHelp": "Выберыце, якую медыятэку карыстальніка паказаць на прыладзе. Пакіньце пустым, каб атрымаць налады па змаўчанні.", "LabelUserLoginAttemptsBeforeLockout": "Няўдалыя спробы ўваходу перад тым, як карыстальнік будзе заблакіраваны:", "LabelUserMaxActiveSessions": "Максімальная колькасць адначасовых карыстальніцкіх сеансаў:", "LabelVersion": "Версія:", "LabelVideoResolution": "Разрозненне відэа:", "LabelXDlnaCap": "Ідэнтыфікатар магчымасці прылады:", - "LabelXDlnaDocHelp": "Вызначце змесціва элемента «X_DLNADOC» у прасторы імёнаў «urn:schemas-dlna-org:device-1-0».", + "LabelXDlnaDocHelp": "Вызначце змесціва элемента \"X_DLNADOC\" у прасторы імёнаў \"urn:schemas-dlna-org:device-1-0\".", "LanNetworksHelp": "Раздзелены коскамі спіс IP-адрасоў або запісаў IP/сеткавай маскі для сетак, якія будуць разглядацца ў лакальнай сетцы пры выкананні абмежаванняў паласы прапускання. Калі гэта ўстаноўлена, усе астатнія IP-адрасы будуць разглядацца як якія знаходзяцца ў знешняй сетцы і на іх будуць распаўсюджвацца абмежаванні знешняй прапускной здольнасці. Калі поле пакінуць пустым, у лакальнай сетцы лічыцца толькі падсетка сервера.", "LeaveBlankToNotSetAPassword": "Вы можаце пакінуць гэта поле пустым, каб не ўсталёўваць пароль.", "LabelAccessEnd": "Час заканчэння:", @@ -1000,12 +1000,12 @@ "LabelLineup": "Склад:", "MessagePluginConfigurationRequiresLocalAccess": "Каб наладзіць гэты плагін, увайдзіце непасрэдна на лакальны сервер.", "LabelPath": "Шлях:", - "LabelRecord": "запіс:", + "LabelRecord": "Запіс:", "LabelTonemappingParam": "Параметр танальнага адлюстравання:", "LabelTranscodingThreadCount": "Колькасць патокаў перакадзіравання:", "LabelTVHomeScreen": "Галоўны экран у рэжыме ТБ:", - "LabelRuntimeMinutes": "час выканання:", - "LabelUsername": "імя карыстальніка:", + "LabelRuntimeMinutes": "Час выканання:", + "LabelUsername": "Імя карыстальніка:", "LabelVideoBitrate": "Бітрэйт відэа:", "LabelSubtitlePlaybackMode": "Рэжым субтытраў:", "LabelType": "Тып:", @@ -1013,7 +1013,7 @@ "MediaInfoInterlaced": "Перапляценне", "MessageConfirmRestart": "Вы ўпэўнены, што хочаце перазапусціць Jellyfin?", "EnableCardLayout": "Паказаць візуальны CardBox", - "EnableQuickConnect": "Уключыце Quick Connect на гэтым серверы", + "EnableQuickConnect": "Уключыць Quick Connect на гэтым серверы", "EveryHour": "Кожную гадзіну", "FileNotFound": "Файл не знойдзены.", "FileReadCancelled": "Прачытанне файла было адменена.", @@ -1031,7 +1031,7 @@ "HeaderMyDevice": "Мая прылада", "HeaderOtherItems": "Іншыя прадметы", "HeaderPlaybackError": "Памылка прайгравання", - "MessagePluginInstallDisclaimer": "Убудовы, створаныя членамі супольнасці, - выдатны спосаб палепшыць ваш вопыт з дапамогай дадатковых функцый і пераваг. Перад усталяваннем, калі ласка, звярніце ўвагу на наступствы, якія яны могуць аказаць на ваш сервер, такія як больш працяглае сканаванне бібліятэк, дадатковая фонавая апрацоўка і зніжэнне стабільнасці сістэмы.", + "MessagePluginInstallDisclaimer": "Плагіны, створаныя членамі супольнасці - выдатны спосаб палепшыць ваш вопыт з дапамогай дадатковых функцый і пераваг. Перад усталяваннем, калі ласка, звярніце ўвагу на наступствы, якія яны могуць уплываць на ваш сервер, такія як больш працяглае сканаванне бібліятэк, дадатковая фонавая апрацоўка і зніжэнне стабільнасці сістэмы.", "MessagePluginInstalled": "Плагін быў паспяхова ўсталяваны. Сервер трэба будзе перазапусціць, каб змены ўступілі ў сілу.", "MessageSent": "Паведамленне адпраўлена.", "MessageSyncPlayCreateGroupDenied": "Для стварэння групы патрабуецца дазвол.", @@ -1051,7 +1051,7 @@ "LabelAirsBeforeSeason": "Эфір перад сезонам:", "LabelAlbumArtMaxHeight": "Максімальная вышыня вокладкі альбома:", "LabelAlbumArtMaxResHelp": "Максімальная раздзяляльнасць вокладкі альбома, якая паказваецца праз уласцівасць 'upnp:albumArtURI'.", - "LabelAlbumArtPN": "Вокладка альбома ПН:", + "LabelAlbumArtPN": "Вокладка альбома PN:", "LabelAllowedRemoteAddresses": "Фільтр аддаленага IP-адраса:", "MessageSyncPlayPlaybackPermissionRequired": "Патрабуецца дазвол на прайграванне.", "MessageSyncPlayUserJoined": "{0} далучыўся да групы.", @@ -1060,7 +1060,7 @@ "LabelAutoDiscoveryTracingHelp": "Калі ўключана, пакеты, атрыманыя на порт аўтаматычнага выяўлення, будуць рэгістравацца.", "LabelBindToLocalNetworkAddress": "Прывязка да адрасу лакальнай сеткі:", "MessageUnableToConnectToServer": "Мы не можам зараз падключыцца да выбранага сервера. Упэўніцеся, што ён запушчаны, і паўтарыце спробу.", - "LabelBlastMessageInterval": "Інтэрвал жывых паведамленняў:", + "LabelBlastMessageInterval": "Інтэрвал жыцця паведамленняў:", "LabelCachePath": "Шлях кэша:", "LabelCancelled": "Адменена", "LabelCertificatePassword": "Пароль сертыфіката:", @@ -1069,7 +1069,7 @@ "MessageUnsetContentHelp": "Змесціва будзе адлюстроўвацца ў выглядзе звычайных тэчак. Для дасягнення найлепшых вынікаў выкарыстоўвайце менеджэр метададзеных, каб усталяваць тыпы змесціва ўкладзеных тэчак.", "MessageYouHaveVersionInstalled": "Зараз у вас усталявана версія {0}.", "MetadataManager": "Менеджэр метаданых", - "MetadataSettingChangeHelp": "Змяненне налад метададзеных паўплывае на дадаванне новага змесціва. Каб абнавіць існуючы кантэнт, адкрыйце экран падрабязных звестак і націсніце кнопку «Абнавіць» або выканайце масавае абнаўленне з дапамогай «Менеджара метададзеных».", + "MetadataSettingChangeHelp": "Змяненне налад метададзеных паўплывае на дадаванне новага змесціва. Каб абнавіць існуючы кантэнт, адкрыйце экран падрабязных звестак і націсніце кнопку \"Абнавіць\" або выканайце масавае абнаўленне з дапамогай \"Менеджара метададзеных\".", "MillisecondsUnit": "Спадарыня", "LabelCustomDeviceDisplayNameHelp": "Увядзіце карыстальніцкае імя для адлюстравання або пакіньце пустым, каб выкарыстоўваць імя, паведамленае прыладай.", "LabelCustomRating": "Індывідуальны рэйтынг:", @@ -1104,7 +1104,7 @@ "OptionAllowAudioPlaybackTranscoding": "Дазволіць прайграванне аўдыя, якое патрабуе перакадзіравання", "LabelFormat": "Фармат:", "OptionAllowLinkSharingHelp": "Абагульваюцца толькі вэб-старонкі, якія змяшчаюць медыя-інфармацыю. Медыяфайлы ніколі не абагульваюцца. Абагульванне абмежавана па часе і скончыцца праз {0} дзён.", - "LabelInNetworkSignInWithEasyPassword": "Уключыць уваход у сетку з маім простым PIN-кодам", + "LabelInNetworkSignInWithEasyPassword": "Уключыць уваход у сетку з майго Easy PIN-кода", "OptionAllowManageLiveTv": "Дазволіць кіраванне запісам ТБ", "OptionAllowMediaPlayback": "Дазволіць прайграванне мультымедыя", "LabelKodiMetadataDateFormat": "Фармат даты выпуску:", @@ -1133,7 +1133,7 @@ "OptionDisableUser": "Адключыць гэтага карыстальніка", "OptionDisableUserHelp": "Сервер не дазволіць ніякіх злучэнняў ад гэтага карыстальніка. Існуючыя сувязі будуць раптоўна спынены.", "OptionDisplayFolderView": "Адлюстраванне прагляду тэчак, каб паказаць простыя папкі мультымедыя", - "LabelOverview": "агляд:", + "LabelOverview": "Агляд:", "LabelPreferredSubtitleLanguage": "Пажаданая мова субтытраў:", "LabelProtocolInfo": "Інфармацыя аб пратаколе:", "LabelRepositoryUrlHelp": "Размяшчэнне маніфеста рэпазітара, які вы хочаце ўключыць.", @@ -1161,7 +1161,7 @@ "LabelTranscodingFramerate": "Частата кадраў перакадзіравання:", "OptionLoginAttemptsBeforeLockoutHelp": "Нулявое значэнне азначае ўспадкоўванне па змаўчанні трох спроб для звычайных карыстальнікаў і пяці для адміністратараў. Вызначэнне -1 адключыць функцыю.", "OptionMaxActiveSessions": "Усталюйце максімальную колькасць адначасовых сеансаў карыстальнікаў.", - "LabelXDlnaCapHelp": "Вызначце змесціва элемента «X_DLNACAP» у прасторы імёнаў «urn:schemas-dlna-org:device-1-0».", + "LabelXDlnaCapHelp": "Вызначце змесціва элемента \"X_DLNACAP\" у прасторы імёнаў \"urn:schemas-dlna-org:device-1-0\".", "OptionMaxActiveSessionsHelp": "Значэнне 0 адключыць функцыю.", "OptionOnInterval": "На інтэрвале", "OptionPlainStorageFoldersHelp": "Усе папкі прадстаўлены ў DIDL як \"object.container.storageFolder\" замест больш канкрэтнага тыпу, напрыклад \"object.container.person.musicArtist\".", @@ -1174,17 +1174,17 @@ "OptionReportByteRangeSeekingWhenTranscoding": "Паведаміце, што сервер падтрымлівае пошук байтаў пры перакадзіраванні", "MediaInfoExternal": "Знешні", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Гэта патрабуецца для некаторых прылад, якія не вельмі добра шукаюць час.", - "OptionRequirePerfectSubtitleMatch": "Загружайце толькі субтытры, якія ідэальна падыходзяць для відэафайлаў", + "OptionRequirePerfectSubtitleMatch": "Загружаць толькі субтытры, якія ідэальна падыходзяць для відэафайлаў", "MessageConfirmAppExit": "Вы хочаце выйсці?", "MessageConfirmRemoveMediaLocation": "Вы ўпэўнены, што хочаце выдаліць гэта месца?", "MessageCreateAccountAt": "Стварыце ўліковы запіс на {0}", "MessageInvalidUser": "Няправільнае імя карыстальніка або пароль. Калі ласка, паспрабуйце яшчэ раз.", "MessageItemsAdded": "Элементы дададзены.", "MessageItemSaved": "Элемент захаваны.", - "OptionRequirePerfectSubtitleMatchHelp": "Патрабаванне ідэальнага супадзення адфільтруе субтытры, каб уключыць толькі тыя, якія былі правераны і правераны з вашым дакладным відэафайлам. Зняцце галачкі павялічвае верагоднасць спампоўкі субтытраў, але павялічвае верагоднасць няправільнага ці няправільнага тэксту субтытраў.", + "OptionRequirePerfectSubtitleMatchHelp": "Патрабаванне ідэальнага супадзення адфільтруе субтытры, каб уключыць толькі тыя, якія былі правераны з вашым дакладным відэафайлам. Зняцце галачкі павялічвае верагоднасць спампоўкі субтытраў, але павялічвае верагоднасць няправільнага тэксту субтытраў.", "MessageNoGenresAvailable": "Дазволіць некаторым пастаўшчыкам метададзеных атрымліваць жанры з Інтэрнэту.", "OptionResumable": "Аднаўляецца", - "OptionSaveMetadataAsHiddenHelp": "Змена гэтага будзе прымяняцца да новых захаваных метаданых. Існуючыя файлы метададзеных будуць абноўлены ў наступны раз, калі яны будуць захаваны на серверы.", + "OptionSaveMetadataAsHiddenHelp": "Змена гэтага будзе прымяняцца да новых захаваных метададзеных. Існуючыя файлы метададзеных будуць абноўлены ў наступны раз, калі яны будуць захаваны на серверы.", "OptionTrackName": "Назва дарожкі", "OptionTvdbRating": "Рэйтынг TVDB", "OptionUnairedEpisode": "Невыдадзеныя эпізоды", @@ -1232,7 +1232,7 @@ "QuickConnectActivationSuccessful": "Паспяхова актывавана", "QuickConnectAuthorizeCode": "Каб увайсці, увядзіце код {0}", "QuickConnectAuthorizeSuccess": "Запыт дазволены", - "QuickConnectDescription": "Каб увайсці з дапамогай Quick Connect, абярыце кнопку «Quick Connect» на прыладзе, з якой вы ўваходзіце, і ўвядзіце паказаны ніжэй код.", + "QuickConnectDescription": "Каб увайсці з дапамогай Quick Connect, цісніце кнопку \"Quick Connect\" на прыладзе, з якой вы ўваходзіце, і ўвядзіце паказаны ніжэй код.", "QuickConnectNotAvailable": "Папрасіце адміністратара сервера ўключыць Quick Connect", "OptionSpecialEpisode": "Спец", "RecommendationBecauseYouWatched": "Таму што вы глядзелі {0}", @@ -1270,11 +1270,11 @@ "PluginFromRepo": "{0} са сховішча {1}", "Quality": "Якасць", "ScanForNewAndUpdatedFiles": "Сканіраванне новых і абноўленых файлаў", - "QuickConnectInvalidCode": "Няправільны код хуткага злучэння", + "QuickConnectInvalidCode": "Няправільны Quick Connect код", "ScanLibrary": "Бібліятэка сканавання", "Schedule": "Расклад", "ScreenResolution": "Дазвол экрана", - "QuickConnectNotActive": "Хуткае злучэнне не актыўнае на гэтым серверы", + "QuickConnectNotActive": "Quick Connec не актыўнае на гэтым серверы", "SearchResults": "Вынікі пошуку", "Rate": "Стаўка", "RecommendationDirectedBy": "Рэжысёр: {0}", @@ -1290,7 +1290,7 @@ "SettingsWarning": "Змяненне гэтых значэнняў можа выклікаць нестабільнасць або збоі ў падключэнні. Калі ў вас узніклі праблемы, мы рэкамендуем вярнуць іх да стандартных.", "ShowParentImages": "Паказаць выявы серыі", "ShowTitle": "Паказаць назву", - "ShowYear": "Пакажыце год", + "ShowYear": "Паказаць год", "SkipEpisodesAlreadyInMyLibrary": "Не запісваць эпізоды, якія ўжо ёсць у маёй бібліятэцы", "SendMessage": "Адправіць паведамленне", "SmallCaps": "Малыя літары", @@ -1302,7 +1302,7 @@ "SubtitleAppearanceSettingsDisclaimer": "Наступныя налады не прымяняюцца да графічных субтытраў, згаданых вышэй, або да субтытраў ASS/SSA, у якія ўбудаваны ўласныя стылі.", "ShowAdvancedSettings": "Паказаць дадатковыя налады", "Suggestions": "Прапановы", - "TabDashboard": "Прыборная панэль", + "TabDashboard": "Панэль кіравання", "TabLatest": "Апошні", "TabLogs": "Лагі", "TabMusic": "Музыка", @@ -1322,7 +1322,7 @@ "TypeOptionPluralBook": "Кнігі", "UninstallPluginConfirmation": "Вы ўпэўнены, што хочаце выдаліць {0}?", "UseDoubleRateDeinterlacing": "Падвоіць частату кадраў пры дэінтэрлейсінгу", - "UseDoubleRateDeinterlacingHelp": "Гэты параметр выкарыстоўвае частату палёў пры дэінтэрлейсінгу, які часта называюць боб дэінтэрлейсінгам, які падвойвае частату кадраў відэа для забеспячэння поўнага руху, падобнага да таго, што вы бачыце пры праглядзе празрадковага відэа на тэлевізары.", + "UseDoubleRateDeinterlacingHelp": "Гэты параметр выкарыстоўвае частату палёў пры дэінтэрлейсінгу, які часта называюць bob дэінтэрлейсінгам, які падвойвае частату кадраў відэа для забеспячэння поўнага руху, падобнага да таго, што вы бачыце пры праглядзе празрадковага відэа на тэлевізары.", "ValueContainer": "Кантэйнер: {0}", "TitleHostingSettings": "Налады хостынгу", "TitlePlayback": "Прайграванне", @@ -1336,22 +1336,22 @@ "ValueTimeLimitMultiHour": "Ліміт часу: {0} гадзін", "ValueTimeLimitSingleHour": "Абмежаванне па часе: 1 гадзіна", "Vertical": "Вертыкальны", - "VideoAudio": "Відэа Аўдыё", + "VideoAudio": "Відэа аўдыё", "ViewAlbum": "Праглядзець альбом", "ViewAlbumArtist": "Паглядзець выканаўцу альбома", "ViewPlaybackInfo": "Прагляд інфармацыі аб прайграванні", - "Watched": "Глядзеў", + "Watched": "Прагледжана", "Unplayed": "Негуляны", - "Wednesday": "серада", + "Wednesday": "Серада", "WeeklyAt": "{0} у {1}", "XmlTvSportsCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як спартыўныя праграмы. Раздзяляйце некалькі знакамі '|'.", - "Yes": "так", + "Yes": "Так", "Yesterday": "Учора", "HeaderSelectFallbackFontPathHelp": "Праглядзіце або ўвядзіце шлях да папкі рэзервовага шрыфта, які будзе выкарыстоўвацца для візуалізацыі субтытраў ASS/SSA.", "LabelFallbackFontPathHelp": "Укажыце шлях, які змяшчае запасныя шрыфты для візуалізацыі субтытраў ASS/SSA. Максімальна дазволены агульны памер шрыфта - 20 МБ. Рэкамендуюцца лёгкія і зручныя для Інтэрнэту фарматы шрыфтоў, такія як woff2.", "Remuxing": "Рэмуксаванне", - "RemuxHelp1": "Мультымедыя знаходзіцца ў несумяшчальным файлавым кантэйнеры (MKV, AVI, WMV і г.д.), але як відэаплынь, так і аўдыяструмень сумяшчальныя з прыладай. Носьбіт будзе перапакоўвацца без страт на хаду перад адпраўкай на прыладу.", - "LabelAudioInfo": "Аўдыё інфармацыя", + "RemuxHelp1": "Мультымедыя знаходзіцца ў несумяшчальным файлавым кантэйнеры (MKV, AVI, WMV і г.д.), але як відэапаток, так і аўдыяпаток сумяшчальныя з прыладай. Мультымедыя будзе перапакоўвацца без страт на хаду перад адпраўкай на прыладу.", + "LabelAudioInfo": "Інфармацыя аб аўдыё", "LabelTranscodingInfo": "Інфармацыя аб перакадзіраванні", "LabelAllowedAudioChannels": "Максімальна дазволеныя аўдыяканалы", "LabelSelectMono": "Мона", @@ -1372,16 +1372,16 @@ "VideoLevelNotSupported": "Узровень відэакодэка не падтрымліваецца", "ContainerBitrateExceedsLimit": "Бітрэйт відэа перавышае ліміт", "PreferSystemNativeHwDecoder": "Аддайце перавагу ўласным апаратным дэкодэрам DXVA або VA-API", - "EnableIntelLowPowerH264HwEncoder": "Уключыць апаратны кадавальнік Intel Low-Power H.264", - "EnableIntelLowPowerHevcHwEncoder": "Уключыць апаратны кадавальнік Intel Low-Power HEVC", - "IntelLowPowerEncHelp": "Кадаванне з нізкім энергаспажываннем можа падтрымліваць непатрэбную сінхранізацыю CPU-GPU. У Linux яны павінны быць адключаны, калі прашыўка i915 HuC не наладжана.", + "EnableIntelLowPowerH264HwEncoder": "Уключыць апаратны энкодэр Intel Low-Power H.264", + "EnableIntelLowPowerHevcHwEncoder": "Уключыць апаратны энкодэр Intel Low-Power HEVC", + "IntelLowPowerEncHelp": "Кадзіраванне з нізкім энергаспажываннем можа падтрымліваць непатрэбную сінхранізацыю CPU-GPU. У Linux яны павінны быць адключаны, калі прашыўка i915 HuC не наладжана.", "VideoBitrateNotSupported": "Бітрэйт відэа не падтрымліваецца", "UnknownVideoStreamInfo": "Інфармацыя пра відэаплынь невядомая", "UnknownAudioStreamInfo": "Інфармацыя аб аўдыяплыні невядомая", "DirectPlayError": "Узнікла памылка пры запуску прамога прайгравання", "SelectAll": "Абраць усё", "Clip": "Художнік", - "Sample": "Узор", + "Sample": "Прыклад", "LabelVppTonemappingBrightness": "Узмацненне яркасці танальнага адлюстравання VPP:", "LabelVppTonemappingBrightnessHelp": "Прымяніць узмацненне яркасці ў танальным адлюстраванні VPP. І рэкамендаванае, і стандартнае значэнне роўна 0.", "LabelVppTonemappingContrast": "Узмацненне кантраснасці танальнага адлюстравання VPP:", @@ -1389,7 +1389,7 @@ "VideoRangeTypeNotSupported": "Тып дыяпазону відэа не падтрымліваецца", "LabelVideoRangeType": "Тып дыяпазону відэа:", "MediaInfoVideoRangeType": "Тып дыяпазону відэа", - "MediaInfoDvVersionMinor": "DV версія мінор", + "MediaInfoDvVersionMinor": "Дадатковая версія DV", "MediaInfoDvLevel": "Узровень DV", "MediaInfoRpuPresentFlag": "Прадусталяваны сцяг DV rpu", "MediaInfoElPresentFlag": "Прадусталяваны сцяг DV", @@ -1402,7 +1402,7 @@ "MarkPlayed": "Марк гуляў", "HeaderAlert": "Абвестка", "HeaderLibraryAccess": "Доступ да бібліятэкі", - "HeaderRecentlyPlayed": "Нядаўна гулялі", + "HeaderRecentlyPlayed": "Нядаўна прайгравана", "HeaderSecondsValue": "{0} секунд", "LabelAppName": "Назва праграмы", "LabelBirthYear": "Год народзінаў:", @@ -1414,14 +1414,14 @@ "VideoProfileNotSupported": "Профіль відэакодэка не падтрымліваецца", "AudioBitDepthNotSupported": "Разраднасць аўдыя не падтрымліваецца", "Menu": "Меню", - "LabelHardwareEncodingOptions": "Параметры апаратнага кадавання:", - "AudioIsExternal": "Гукавы струмень знешні", + "LabelHardwareEncodingOptions": "Параметры апаратнага кадзіравання:", + "AudioIsExternal": "Аўдыёпаток знешні", "MinutesBefore": "хвілін раней", "SimultaneousConnectionLimitHelp": "Максімальная колькасць дазволеных адначасовых патокаў. Увядзіце 0 для адсутнасці абмежаванняў.", "TabMyPlugins": "Мае плагіны", "SkipEpisodesAlreadyInMyLibraryHelp": "Эпізоды будуць параўноўвацца з выкарыстаннем нумароў сезонаў і серый, калі яны даступныя.", "TabNetworking": "Сеткавыя сувязі", - "TabNetworks": "Тэлевізійныя сеткі", + "TabNetworks": "ТБ сеткі", "TabNfoSettings": "Налады NFO", "TabNotifications": "Апавяшчэнні", "SmartSubtitlesHelp": "Калі гук на замежнай мове, будуць загружаны субтытры, якія адпавядаюць моўным перавагам.", @@ -1466,7 +1466,7 @@ "GroupBySeries": "Групаваць па серыялам", "GuestStar": "Запрошаная зорка", "HeaderAccessScheduleHelp": "Стварыце графік доступу, каб абмежаваць доступ да пэўных гадзін.", - "HeaderAdmin": "Адміністрацыя", + "HeaderAdmin": "Адміністраванне", "HeaderAllowMediaDeletionFrom": "Дазволіць выдаленне мультымедыя з:", "HeaderApiKeys": "Ключы API", "HeaderApiKeysHelp": "Знешнія прыкладанні павінны мець ключ API для сувязі з серверам. Ключы выдаюцца шляхам ўваходу ў сістэму са звычайным уліковым запісам карыстальніка або ўручную прадастаўлення ключа праграме.", @@ -1496,16 +1496,16 @@ "HeaderLatestMovies": "Апошнія фільмы", "HeaderLatestMusic": "Найноўшая музыка", "HeaderLatestRecordings": "Апошнія запісы", - "HeaderLibraries": "Бібліятэкі", + "HeaderLibraries": "Медыятэкі", "HeaderLibraryFolders": "Бібліятэчныя тэчкі", "HeaderLibraryOrder": "Бібліятэчны загад", "HeaderMediaFolders": "Медыятэчкі", "HeaderMetadataSettings": "Налады метаданых", - "HeaderMoreLikeThis": "Яшчэ падобнае", + "HeaderMoreLikeThis": "Больш падобнага", "HeaderMusicQuality": "Якасць музыкі", "HeaderNavigation": "Навігацыя", "HeaderNetworking": "Пратаколы IP", - "HeaderPasswordReset": "Скід пароля", + "HeaderPasswordReset": "Аднаўленне пароля", "HeaderTunerDevices": "Цюнэры прылад", "HeaderTuners": "Цюнеры", "HeaderTypeImageFetchers": "Сродкі выбаркі відарысаў ({0}):", @@ -1548,7 +1548,7 @@ "LabelFriendlyName": "Дружалюбнае імя:", "LabelGroupMoviesIntoCollections": "Згрупаваць фільмы ў калекцыі", "LabelGroupMoviesIntoCollectionsHelp": "Фільмы ў калекцыі будуць адлюстроўвацца як адзін згрупаваны элемент пры адлюстраванні спісаў фільмаў.", - "LabelH264Crf": "CRF кадзіроўкі H.264:", + "LabelH264Crf": "H.264 кадзіроўка CRF:", "LabelHardwareAccelerationType": "Апаратнае паскарэнне:", "LabelHardwareAccelerationTypeHelp": "Апаратнае паскарэнне патрабуе дадатковай канфігурацыі.", "LabelHardwareEncoding": "Апаратнае кадзіраванне:", @@ -1558,7 +1558,7 @@ "LabelIconMaxWidth": "Максімальная шырыня значка:", "LabelImageFetchersHelp": "Уключыце і ранжыруйце пераважныя сродкі зборкі малюнкаў у парадку прыярытэту.", "LabelImportOnlyFavoriteChannels": "Абмежаваць каналы, пазначаныя як абраныя", - "LabelInNetworkSignInWithEasyPasswordHelp": "Выкарыстоўвайце просты PIN-код для ўваходу з кліентаў у лакальнай сетцы. Ваш звычайны пароль спатрэбіцца толькі па-за домам. Калі PIN-код пакінуты пустым, вам не спатрэбіцца пароль у хатняй сетцы.", + "LabelInNetworkSignInWithEasyPasswordHelp": "Выкарыстоўвайце Easy PIN-код для ўваходу з кліентаў у лакальнай сетцы. Ваш звычайны пароль спатрэбіцца толькі па-за домам. Калі PIN-код пакінуты пустым, вам не спатрэбіцца пароль у хатняй сетцы.", "LabelInternetQuality": "Якасць інтэрнэту:", "LabelIsForced": "Вымушана", "LabelKeepUpTo": "Сачыць за:", @@ -1607,7 +1607,7 @@ "LabelMoviePrefixHelp": "Калі прэфікс прымяняецца да назваў фільмаў, увядзіце яго тут, каб сервер мог правільна апрацаваць яго.", "LabelMusicStreamingTranscodingBitrate": "Бітрэйт перакадзіравання музыкі:", "LabelMusicStreamingTranscodingBitrateHelp": "Укажыце максімальны бітрэйт пры перадачы музыкі.", - "LabelNumber": "нумар:", + "LabelNumber": "Нумар:", "LabelNumberOfGuideDays": "Колькасць дзён даведніка для загрузкі:", "LabelNumberOfGuideDaysHelp": "Спампоўка даведнікаў за некалькі дзён дае магчымасць загадзя планаваць расклад і праглядаць больш спісаў, але загрузка таксама зойме больш часу. Аўто будзе выбіраць на аснове колькасці каналаў.", "LabelOpenclDevice": "Прылада OpenCL:", @@ -1623,7 +1623,7 @@ "MessageNoItemsAvailable": "Зараз няма даступных элементаў.", "MessageNoFavoritesAvailable": "Зараз няма даступных абраных.", "MessageNoAvailablePlugins": "Няма даступных плагінаў.", - "MessageNoCollectionsAvailable": "Калекцыі дазваляюць карыстацца персаналізаванымі групамі фільмаў, серыялаў і альбомаў. Націсніце кнопку «+», каб пачаць ствараць калекцыі.", + "MessageNoCollectionsAvailable": "Калекцыі дазваляюць карыстацца персаналізаванымі групамі фільмаў, серыялаў і альбомаў. Націсніце кнопку \"+\", каб пачаць ствараць калекцыі.", "MessageNoMovieSuggestionsAvailable": "Зараз няма прапаноў па фільмах. Пачніце глядзець і ацэньваць свае фільмы, а потым вярніцеся да прагляду рэкамендацый.", "MessageNoNextUpItems": "Нічога не знойдзена. Пачніце глядзець свае шоу!", "MessageNoPluginConfiguration": "Гэты плагін не мае налад для наладжвання.", @@ -1653,7 +1653,7 @@ "Unrated": "Без рэйтынгу", "UnsupportedPlayback": "Jellyfin не можа расшыфраваць змесціва, абароненае DRM, але ўсё змесціва будзе апрабавана, у тым ліку абароненыя назвы. Некаторыя файлы могуць выглядаць цалкам чорнымі з-за шыфравання або іншых непадтрымоўваных функцый, такіх як інтэрактыўныя загалоўкі.", "Upload": "Загрузіць", - "ValueAlbumCount": "Альбомы: {0}", + "ValueAlbumCount": "{0} альбомаў", "ValueAudioCodec": "Аўдыякодэк: {0}", "WriteAccessRequired": "Jellyfin патрабуе доступу для запісу ў гэту папку. Забяспечце доступ для запісу і паўтарыце спробу.", "Writers": "Пісьменнікі", @@ -1662,12 +1662,12 @@ "XmlTvMovieCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як фільмы. Раздзяляйце некалькі знакамі '|'.", "XmlTvNewsCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як праграмы навін. Раздзяляйце некалькі знакамі '|'.", "XmlTvPathHelp": "Шлях да файла XMLTV. Jellyfin будзе чытаць гэты файл і перыядычна правяраць яго на наяўнасць абнаўленняў. Вы несяце адказнасць за стварэнне і абнаўленне файла.", - "Yadif": "ЯДЫФ", + "Yadif": "YADIF", "LabelDirectStreamingInfo": "Інфармацыя пра прамую трансляцыю", - "LabelOriginalMediaInfo": "Арыгінальная інфармацыя аб СМІ", + "LabelOriginalMediaInfo": "Арыгінальная інфармацыя аб медыя", "LabelSyncPlayInfo": "Інфармацыя SyncPlay", "MediaInfoDoViTitle": "Назва DV", - "MediaInfoDvVersionMajor": "Мажорная версія DV", + "MediaInfoDvVersionMajor": "Асноўная версія DV", "MediaInfoDvProfile": "DV профіль", "Off": "Выкл", "OnlyForcedSubtitles": "Толькі прымусова", From c4979dcce43ce8b8d0afa4252129c0d9ea2feb82 Mon Sep 17 00:00:00 2001 From: rushmash Date: Mon, 6 Feb 2023 23:00:50 +0000 Subject: [PATCH 090/222] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index 6f1cf9486a..5d4a55c17f 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1510,7 +1510,7 @@ "EnablePlugin": "Włącz", "DirectPlayHelp": "Plik źródłowy jest całkowicie zgodny z tym klientem, a sesja otrzymuje plik bez modyfikacji.", "HeaderContinueReading": "Kontynuuj czytanie", - "EnableGamepadHelp": "Nasłuchuj sygnałów z każdego z podpiętych kontrolerów.", + "EnableGamepadHelp": "Nasłuchuj sygnałów z każdego z podpiętych kontrolerów. (Wymagane: tryb wyświetlania \"TV\")", "LabelEnableGamepad": "Włącz obsługę kontrolera do gier", "Controls": "Sterowanie", "MessageSent": "Wiadomość została wysłana.", @@ -1687,5 +1687,6 @@ "OptionDateShowAdded": "Data dodania serialu", "DownloadAll": "Pobierz wszystko", "Experimental": "Eksperymentalne", - "LabelStereoDownmixAlgorithm": "Algorytm Stereo Downmix" + "LabelStereoDownmixAlgorithm": "Algorytm Stereo Downmix", + "StereoDownmixAlgorithmHelp": "Algorytm używany do miksowania wielokanałowego dźwięku do stereo." } From a075eda2bd93576cedeba0a43ccb567af62fb86d Mon Sep 17 00:00:00 2001 From: rushmash Date: Tue, 7 Feb 2023 07:02:39 +0000 Subject: [PATCH 091/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 272 ++++++++++++++++++++--------------------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index a6c4f649e0..89cebfb1b6 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -183,7 +183,7 @@ "LabelRepositoryUrl": "URL рэпазітара", "HeaderChapterImages": "Выявы раздзела", "LabelSyncPlaySettingsSkipToSync": "Уключыць SkipToSync", - "OptionExternallyDownloaded": "Знешняя загрузка", + "OptionExternallyDownloaded": "Знешняя спампоўка", "Unreleased": "Яшчэ не выпушчаны", "Copied": "Скапіравана", "LabelTagline": "Слоган:", @@ -208,7 +208,7 @@ "Identify": "Ідэнтыфікаваць", "IgnoreDts": "Ігнараваць DTS (метка часу дэкадавання)", "InstantMix": "Імгненная сумесь", - "Items": "Прадметы", + "Items": "Элементы", "LabelAudioBitrate": "Бітрэйт аўдыё:", "LabelAutomaticallyAddToCollectionHelp": "Калі хаця б 2 фільмы маюць аднолькавую назву калекцыі, яны будуць аўтаматычна дададзены ў калекцыю.", "LabelBirthDate": "Дата нараджэння:", @@ -222,7 +222,7 @@ "LabelDay": "Дзень тыдня:", "LabelDeathDate": "Дата смерці:", "LabelSize": "Памер:", - "LabelSkipBackLength": "Даўжыня спіны:", + "LabelSkipBackLength": "Даўжыня пасу назад:", "LabelSyncPlayPlaybackDiff": "Розніца ў часе прайгравання:", "LabelTrackNumber": "Нумар трэка:", "LabelTranscodes": "Перакадзіруе:", @@ -238,18 +238,18 @@ "MessageAlreadyInstalled": "Гэтая версія ўжо ўстаноўлена.", "MessageAreYouSureYouWishToRemoveMediaFolder": "Вы ўпэўнены, што жадаеце выдаліць гэту медыяпапку?", "LabelModelUrl": "URL мадэлі:", - "MoveLeft": "Рух налева", - "Mute": "Адключыць гук", - "OptionCustomUsers": "Прыстасаваныя", + "MoveLeft": "Рухайцесь налева", + "Mute": "Адключыць аўдыё", + "OptionCustomUsers": "Наладжваемыя", "OptionDateAdded": "Дата дадання", "OptionMissingEpisode": "Адсутныя эпізоды", "OptionPremiereDate": "Дата прэм'еры", "OptionResElement": "элемент \"res\"", - "OptionWeekdays": "будні", + "OptionWeekdays": "Будні", "PasswordResetComplete": "Пароль быў скінуты.", "PictureInPicture": "Карцінка ў карцінцы", "PinCodeResetConfirmation": "Вы ўпэўнены, што жадаеце скінуць Easy PIN-код?", - "PosterCard": "Плакатная картка", + "PosterCard": "Постар-картка", "Preview": "Папярэдні прагляд", "PreviousChapter": "Папярэдняя глава", "Primary": "Першасны", @@ -261,18 +261,18 @@ "ChannelNameOnly": "Толькі канал {0}", "Composer": "Кампазітар", "CopyFailed": "Не атрымалася скапіраваць", - "EnableFasterAnimations": "Больш хуткія анімацыі", + "EnableFasterAnimations": "Паскораная анімацыя", "EnableEnhancedNvdecDecoder": "Уключыць пашыраны дэкодэр NVDEC", - "LabelPersonRole": "роля:", + "LabelPersonRole": "Роля:", "LabelPlaceOfBirth": "Месца нараджэння:", - "LabelPlayer": "Гулец:", + "LabelPlayer": "Прайгравальнік:", "LabelProfileAudioCodecs": "Аўдыякодэкі:", "LabelProfileCodecsHelp": "Аддзяляюцца коскамі. Гэта можна пакінуць пустым, каб прымяніць да ўсіх кодэкаў.", "Down": "Уніз", "AudioBitrateNotSupported": "Бітрэйт аўдыя не падтрымліваецца", "LabelTextColor": "Колер тэксту:", "Bold": "Тлусты", - "Played": "Гуляў", + "Played": "Прайграна", "SearchForSubtitles": "Пошук субтытраў", "TabDirectPlay": "Прамое прайграванне", "TitleHardwareAcceleration": "Апаратнае паскарэнне", @@ -309,14 +309,14 @@ "LabelVaapiDevice": "Прылада VA-API:", "ExtraLarge": "Вельмі вялікі", "HeaderYears": "Гады", - "LabelValue": "значэнне:", + "LabelValue": "Значэнне:", "Image": "Малюнак", "LastSeen": "Апошні раз бачылі {0}", "List": "Спіс", - "Live": "жыць", + "Live": "Трансляцыя", "MediaInfoAnamorphic": "Анаморфны", "LabelAudioChannels": "Аўдыёканалы:", - "MediaInfoLayout": "Макет", + "MediaInfoLayout": "Кампаноўка", "MediaInfoSampleRate": "Частата выбаркі", "MediaInfoSize": "Памер", "MediaInfoTitle": "Назва", @@ -330,7 +330,7 @@ "LabelffmpegPath": "Шлях FFmpeg:", "LabelIdentificationFieldHelp": "Падрадок або рэгулярны выраз без уліку рэгістра.", "LabelMaxMuxingQueueSize": "Максімальны памер чаргі мультыплікацыі:", - "LabelMaxResumePercentage": "Максімальны працэнт рэзюмэ:", + "LabelMaxResumePercentage": "Максімальны працэнт узнаўлення:", "LabelMaxResumePercentageHelp": "Лічыцца, што загалоўкі прайграныя цалкам, калі яны былі спынены пасля гэтага часу.", "LabelMessageTitle": "Назва паведамлення:", "LabelMetadata": "Метададзеныя:", @@ -341,13 +341,13 @@ "LabelParentNumber": "Бацькоўскі нумар:", "LabelPasswordConfirm": "Пароль (пацвердзіць):", "LabelPlaylist": "Плэйліст:", - "LabelPlayMethod": "Спосаб гульні:", + "LabelPlayMethod": "Спосаб прайгравання:", "LabelProfileVideoCodecs": "Відэа кодэкі:", "LabelPublicHttpsPort": "Нумар публічнага порта HTTPS:", "Controls": "Элементы кіравання", "LabelRefreshMode": "Рэжым абнаўлення:", "LabelSendNotificationToUsers": "Адправіць апавяшчэнне на:", - "LabelSkipIfAudioTrackPresent": "Прапусціць, калі гукавая дарожка па змаўчанні адпавядае мове спампоўкі", + "LabelSkipIfAudioTrackPresent": "Прапусціць, калі аўдыё дарожка па змаўчанні адпавядае мове спампоўкі", "LabelSkipIfGraphicalSubsPresent": "Прапусціць, калі відэа ўжо змяшчае ўбудаваныя субтытры", "LabelSkipIfGraphicalSubsPresentHelp": "Захаванне тэкставых версій субтытраў прывядзе да больш эфектыўнай дастаўкі і знізіць верагоднасць перакадзіравання відэа.", "LabelSortBy": "Сартаваць па:", @@ -372,7 +372,7 @@ "LabelSyncPlayResumePlayback": "Узнавіць лакальнае прайграванне", "LabelSyncPlayTimeSyncOffset": "Зрушэнне часу:", "LabelSyncPlaySettingsDescription": "Змяніць налады SyncPlay", - "LabelSyncPlaySettingsExtraTimeOffset": "Дадатковы час:", + "LabelSyncPlaySettingsExtraTimeOffset": "Дадатковы часавы зрух:", "LabelSyncPlaySettingsSyncCorrectionHelp": "Уключыце актыўную сінхранізацыю прайгравання шляхам паскарэння мультымедыя або перамяшчэння да меркаванай пазіцыі. Адключыце гэта ў выпадку моцнага заікання.", "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "Мінімальная затрымка прайгравання (у мс), пасля якой SpeedToSync спрабуе выправіць пазіцыю прайгравання.", "LabelSyncPlaySettingsMaxDelaySpeedToSyncHelp": "Максімальная затрымка прайгравання (у мс), пасля якой SkipToSync выкарыстоўваецца замест SpeedToSync.", @@ -399,7 +399,7 @@ "EnableDecodingColorDepth10Hevc": "Уключыць 10-бітнае апаратнае дэкадаванне для HEVC", "EnableDecodingColorDepth10Vp9": "Уключыць 10-бітнае апаратнае дэкадаванне для VP9", "EnableExternalVideoPlayers": "Знешнія відэаплэеры", - "EnableExternalVideoPlayersHelp": "Меню вонкавага прайгравальніка будзе паказана пры запуску прайгравання відэа.", + "EnableExternalVideoPlayersHelp": "Меню знешняга прайгравальніка будзе паказана пры запуску прайгравання відэа.", "EnablePhotosHelp": "Выявы будуць выяўляцца і адлюстроўвацца разам з іншымі медыяфайламі.", "EnableRewatchingNextUp": "Уключыць паўторны прагляд у наступным", "EnableRewatchingNextUpHelp": "Уключыць паказ ужо прагледжаных серый у раздзелах \"Наступнае\".", @@ -421,18 +421,18 @@ "LabelVaapiDeviceHelp": "Гэта вузел візуалізацыі, які выкарыстоўваецца для апаратнага паскарэння.", "LabelVideoRange": "Дыяпазон відэа:", "LabelXDlnaDoc": "Ідэнтыфікатар класа прылады:", - "Larger": "Буйней", + "Larger": "Большы", "LibraryAccessHelp": "Выберыце бібліятэкі для сумеснага выкарыстання з гэтым карыстальнікам. Адміністратары змогуць рэдагаваць усе тэчкі з дапамогай дыспетчара метададзеных.", "CinemaModeConfigurationHelp": "Рэжым \"Кіно\" пераносіць уражанні ад кінатэатра прама ў вашу гасціную з магчымасцю прайгравання трэйлераў і нестандартных застаў перад галоўным фільмам.", - "MarkUnplayed": "Пазначыць негуляным", + "MarkUnplayed": "Адзначыць як непрайгранае", "MediaInfoCodec": "Кодэк", - "MediaInfoColorPrimaries": "Праймерыз колеру", + "MediaInfoColorPrimaries": "Асноўныя колеры", "MediaInfoColorSpace": "Каляровая прастора", "MediaInfoContainer": "Кантэйнер", "MediaInfoDefault": "Па змаўчанні", - "MediaInfoPath": "шлях", + "MediaInfoPath": "Шлях", "MediaInfoPixelFormat": "Піксельны фармат", - "MediaInfoResolution": "дазвол", + "MediaInfoResolution": "Рэзалюцыя", "MediaInfoTimestamp": "Метка часу", "MediaInfoVideoRange": "Відэа дыяпазон", "MessageConfirmDeleteTunerDevice": "Вы ўпэўнены, што хочаце выдаліць гэту прыладу?", @@ -443,7 +443,7 @@ "MessageDirectoryPickerLinuxInstruction": "Для Linux на Arch Linux, CentOS, Debian, Fedora, openSUSE або Ubuntu вы павінны даць карыстальніку сэрвісу як мінімум доступ для чытання вашых месцаў захоўвання.", "MessageFileReadError": "Пры чытанні файла адбылася памылка. Калі ласка, паспрабуйце яшчэ раз.", "MessageImageFileTypeAllowed": "Падтрымліваюцца толькі файлы JPEG і PNG.", - "MessagePleaseWait": "Калі ласка пачакай. Гэта можа заняць хвіліну.", + "MessagePleaseWait": "Калі ласка пачакайце. Гэта можа заняць хвіліну.", "MessageReenableUser": "Глядзіце ніжэй, каб паўторна ўключыць", "MessageSyncPlayErrorMedia": "Не ўдалося ўключыць SyncPlay! Медыя-памылка.", "MessageSyncPlayErrorMissingSession": "Не ўдалося ўключыць SyncPlay! Адсутнічае сеанс.", @@ -455,12 +455,12 @@ "LearnHowYouCanContribute": "Даведайцеся, як вы можаце ўнесці свой уклад.", "NoSubtitlesHelp": "Субтытры не загружаюцца па змаўчанні. Іх усё яшчэ можна ўключыць уручную падчас прайгравання.", "OnApplicationStartup": "Пры запуску прыкладання", - "OptionAllowBrowsingLiveTv": "Дазволіць доступ да ТБ у прамым эфіры", + "OptionAllowBrowsingLiveTv": "Дазволіць доступ да ТБ", "OptionAllowContentDownload": "Дазволіць загрузку мультымедыя", "OptionCaptionInfoExSamsung": "CaptionInfoEx ( Samsung )", "OptionCommunityRating": "Рэйтынг супольнасці", "OptionCriticRating": "Рэйтынг крытыкаў", - "OptionDatePlayed": "Дата гульні", + "OptionDatePlayed": "Дата прайгравання", "ExtractChapterImagesHelp": "Выманне малюнкаў раздзелаў дазволіць кліентам адлюстроўваць графічнае меню выбару сцэны. Працэс можа быць павольным, рэсурсаёмістым і можа запатрабаваць некалькі гігабайт прасторы. Ён запускаецца пры выяўленні відэа, а таксама ў якасці начнога запланаванага задання. Расклад можна наладзіць у вобласці запланаваных задач. Не рэкамендуецца запускаць гэтую задачу ў гадзіны пікавага выкарыстання.", "OptionDvd": "DVD", "OptionHasThemeSong": "Тэматычная песня", @@ -485,17 +485,17 @@ "People": "Людзі", "PersonRole": "як {0}", "PinCodeResetComplete": "Easy PIN-код быў скінуты.", - "PlayAllFromHere": "Гуляць усё адсюль", - "PlayFromBeginning": "Гуляць з пачатку", + "PlayAllFromHere": "Прайграць усё адсюль", + "PlayFromBeginning": "Прайграць з пачатку", "PleaseAddAtLeastOneFolder": "Калі ласка, дадайце хаця б адну папку ў гэту бібліятэку, націснуўшы кнопку \"+\" у раздзеле \"Папкі\".", "PleaseSelectTwoItems": "Калі ласка, абярыце як мінімум два пункты.", "Poster": "Плакат", "PreferEmbeddedTitlesOverFileNames": "Аддавайце перавагу ўбудаваным назвам перад назвамі файлаў", "Programs": "Праграмы", - "QuickConnect": "Хуткае падключэнне", + "QuickConnect": "Функцыя Quick Connect", "QuickConnectDeactivated": "Хуткае падключэнне было дэактывавана да таго, як запыт на ўваход мог быць ухвалены", "Raised": "Падняў", - "RecentlyWatched": "Нядаўна глядзеў", + "RecentlyWatched": "Нядаўна прагледжанае", "DeleteUser": "Выдаліць карыстальніка", "RecommendationBecauseYouLike": "Таму што вам падабаецца {0}", "Record": "Запіс", @@ -504,14 +504,14 @@ "ReleaseGroup": "Група вызвалення", "RemoveFromCollection": "Выдаліць з калекцыі", "Repeat": "Паўтарыць", - "RepeatEpisodes": "Паўтор эпізодаў", + "RepeatEpisodes": "Паўтарыць эпізоды", "RepeatMode": "Рэжым паўтору", "ReplaceExistingImages": "Замяніць існуючыя выявы", "Runtime": "Час выканання", - "Saturday": "субота", + "Saturday": "Субота", "Search": "Пошук", "SearchForCollectionInternetMetadata": "Шукайце ў інтэрнэце твор мастацтва і метададзеныя", - "SearchForMissingMetadata": "Пошук адсутных метаданых", + "SearchForMissingMetadata": "Пошук адсутных метададзеных", "Season": "Сезон", "SelectAdminUsername": "Выберыце імя карыстальніка для ўліковага запісу адміністратара.", "SeriesCancelled": "Серыял адменены.", @@ -520,7 +520,7 @@ "SeriesSettings": "Налады серыі", "ServerNameIsRestarting": "Сервер у {0} перазапускаецца.", "ServerNameIsShuttingDown": "Сервер у {0} адключаецца.", - "Share": "падзяліцца", + "Share": "Падзяліцца", "ShowIndicatorsFor": "Паказаць індыкатары для:", "ShowLess": "Паказваць менш", "ShowMore": "Паказаць больш", @@ -529,7 +529,7 @@ "SortByValue": "Сартаваць па {0}", "StereoDownmixAlgorithmHelp": "Алгарытм, які выкарыстоўваецца для звядзення шматканальнага гуку ў стэрэа.", "SubtitleDownloadersHelp": "Уключыце і ранжыруйце вашы любімыя загрузнікі субтытраў у парадку прыярытэту.", - "Subtitles": "субтытры", + "Subtitles": "Субтытры", "SyncPlayGroupDefaultTitle": "Група {0}", "TabAccess": "Доступ", "TabAdvanced": "Пашыраны", @@ -537,25 +537,25 @@ "TabStreaming": "Паток", "TextSent": "Тэкст адпраўлены.", "ThemeSongs": "Тэматычныя песні", - "ThumbCard": "Картка вялікага пальца", - "Thursday": "чацвер", + "ThumbCard": "Эскіз-карта", + "Thursday": "Чацвер", "TonemappingRangeHelp": "Выберыце выхадны каляровы дыяпазон. Аўто - гэта тое ж самае, што і дыяпазон уводу.", "TrackCount": "{0} трэкаў", "Trailers": "Трэйлеры", "Transcoding": "Перакадзіроўка", "TV": "ТБ", - "TvLibraryHelp": "Праглядзіце {0}Кіраўніцтва па назвах тэлевізараў{1}.", + "TvLibraryHelp": "Праглядзіце {0}даведнік па назвах ТБ{1}.", "TypeOptionPluralAudio": "Аўдыё", - "TypeOptionPluralBoxSet": "Скрынкі", + "TypeOptionPluralBoxSet": "Кінасерыі", "TypeOptionPluralEpisode": "Эпізоды", - "TypeOptionPluralMovie": "фільмы", + "TypeOptionPluralMovie": "Фільмы", "TypeOptionPluralMusicAlbum": "Музычныя альбомы", "TypeOptionPluralMusicArtist": "Музычныя выканаўцы", "TypeOptionPluralMusicVideo": "Музычныя кліпы", "TypeOptionPluralSeries": "Тэлеперадачы", "TypeOptionPluralVideo": "Відэа", - "Typewriter": "Пішучая машынка", - "Uniform": "Уніформа", + "Typewriter": "Машынапісны", + "Uniform": "Раўнамерны", "Unmute": "Уключыць гук", "Up": "Уверх", "UseEpisodeImagesInNextUp": "Выкарыстоўвайце выявы эпізодаў у раздзелах \"Далей\" і \"Працягнуць прагляд\"", @@ -605,17 +605,17 @@ "HeaderDownloadSync": "Спампоўка і сінхранізацыя", "HeaderDVR": "DVR", "HeaderEditImages": "Рэдагаваць выявы", - "HeaderFrequentlyPlayed": "Часта гуляюць", + "HeaderFrequentlyPlayed": "Прайграныя часта", "HeaderGuideProviders": "Пастаўшчыкі дадзеных тэлегіда", "HeaderHttpsSettings": "Налады HTTPS", "HeaderIdentification": "Ідэнтыфікацыя", "HeaderIdentificationCriteriaHelp": "Увядзіце хаця б адзін крытэрый ідэнтыфікацыі.", "HeaderIdentifyItemHelp": "Увядзіце адзін або некалькі крытэрыяў пошуку. Выдаліце крытэрыі, каб павялічыць вынікі пошуку.", "HeaderKodiMetadataHelp": "Каб уключыць або выключыць метададзеныя NFO, адрэдагуйце бібліятэку і знайдзіце раздзел «Захоўвальнікі метададзеных».", - "HeaderLatestEpisodes": "Апошнія серыі", + "HeaderLatestEpisodes": "Новыя серыі", "HeaderLiveTvTunerSetup": "Налада ТБ-цюнэра ў прамым эфіры", "HeaderLoginFailure": "Памылка ўваходу", - "HeaderMedia": "СМІ", + "HeaderMedia": "Медыя", "HeaderNewApiKey": "Новы ключ API", "HeaderNewDevices": "Новыя прылады", "HeaderNewRepository": "Новы рэпазітар", @@ -637,7 +637,7 @@ "HeaderRevisionHistory": "Гісторыя версій", "HeaderRunningTasks": "Запуск задач", "HeaderScenes": "Сцэны", - "HeaderSeasons": "Поры года", + "HeaderSeasons": "Сезоны", "HeaderSelectCertificatePath": "Выберыце шлях да сертыфіката", "HeaderSelectMetadataPath": "Выберыце шлях да метададзеных", "HeaderSelectMetadataPathHelp": "Праглядзіце або ўвядзіце шлях, які вы хочаце выкарыстоўваць для метададзеных. Папка павінна быць даступнай для запісу.", @@ -668,7 +668,7 @@ "HeaderVideoQuality": "Якасць відэа", "HeaderVideoTypes": "Тыпы відэа", "Hide": "Схаваць", - "Home": "дадому", + "Home": "Галоўны", "HomeVideosPhotos": "Хатнія відэа і фота", "Horizontal": "Гарызантальны", "HttpsRequiresCert": "Каб уключыць бяспечныя злучэнні, вам трэба будзе прадаставіць надзейны сертыфікат SSL, напрыклад Let's Encrypt. Калі ласка, падайце сертыфікат або адключыце бяспечныя злучэнні.", @@ -676,7 +676,7 @@ "ItemCount": "{0} элементаў", "ItemDetails": "Дэталі прадмета", "Label3DFormat": "Фармат 3D:", - "LabelAirDays": "Эфірныя дні:", + "LabelAirDays": "Дні эфіру:", "LabelAirsAfterSeason": "Эфір пасля сезона:", "LabelAirTime": "Эфірны час:", "LabelAlbum": "Альбом:", @@ -687,8 +687,8 @@ "LabelAppNameExample": "Прыклад: Sickbeard, Sonarr", "LabelArtists": "Выканаўцы:", "LabelArtistsHelp": "Раздзяляйце некалькіх выканаўцаў кропкай з коскай.", - "LabelAudioBitDepth": "Глыбіня гуку ў бітах:", - "LabelAutomaticallyRefreshInternetMetadataEvery": "Аўтаматычна абнаўляць метаданыя з Інтэрнэту:", + "LabelAudioBitDepth": "Глыбіня аўдыё ў бітах:", + "LabelAutomaticallyRefreshInternetMetadataEvery": "Аўтаматычна абнаўляць метададзеныя з Інтэрнэту:", "LabelAutomaticDiscoveryHelp": "Дазволіць праграмам аўтаматычна выяўляць Jellyfin з дапамогай UDP-порта 7359.", "LabelBaseUrl": "Базавы URL:", "LabelBaseUrlHelp": "Дадайце карыстальніцкі падкаталог да URL-адраса сервера. Напрыклад: http://example.com/<baseurl>", @@ -699,7 +699,7 @@ "LabelCache": "Кэш:", "LabelCachePathHelp": "Укажыце карыстацкае размяшчэнне для файлаў кэша сервера, такіх як выявы. Пакіньце пустым, каб выкарыстоўваць сервер па змаўчанні.", "LabelCertificatePasswordHelp": "Калі ваш сертыфікат патрабуе пароль, увядзіце яго тут.", - "LabelColorPrimaries": "Асноўны колер:", + "LabelColorPrimaries": "Асноўны колеры:", "LabelColorSpace": "Каляровая прастора:", "LabelColorTransfer": "Перадача колеру:", "LabelCommunityRating": "Рэйтынг супольнасці:", @@ -719,10 +719,10 @@ "LabelDisplayMode": "Рэжым адлюстравання:", "LabelDisplayName": "Адлюстраванае імя:", "LabelDisplaySpecialsWithinSeasons": "Паказаць спецыяльныя прапановы сезонаў, у якіх яны трансліраваліся", - "LabelDownMixAudioScale": "Узмацненне гуку пры паніжальным мікшаванні:", + "LabelDownMixAudioScale": "Узмацненне аўдыё пры паніжальным мікшаванні:", "LabelDownMixAudioScaleHelp": "Узмацненне гуку пры паніжальным мікшаванні. Значэнне адзінка захавае зыходны аб'ём.", "LabelDropImageHere": "Перацягніце выяву сюды або націсніце, каб прагледзець.", - "LabelDropShadow": "Цень:", + "LabelDropShadow": "Дадаць цень:", "LabelDropSubtitleHere": "Перанясіце субтытры сюды або націсніце, каб праглядзець.", "LabelEasyPinCode": "Просты PIN-код:", "LabelEmbedAlbumArtDidl": "Убудаваць вокладку альбома ў DIDL", @@ -753,7 +753,7 @@ "LabelMaxMuxingQueueSizeHelp": "Максімальная колькасць пакетаў, якія можна буферызаваць падчас чакання ініцыялізацыі ўсіх патокаў. Паспрабуйце павялічыць яго, калі ў журналах FFmpeg вы па-ранейшаму сустракаеце памылку \"Занадта шмат пакетаў у буферы для выхаднога патоку\". Рэкамендаванае значэнне - 2048.", "LabelMaxStreamingBitrateHelp": "Укажыце максімальны бітрэйт пры трансляцыі.", "LabelMessageText": "Тэкст паведамлення:", - "LabelMetadataDownloadersHelp": "Уключыце і расстаўце вашыя пераважныя загрузнікі метададзеных у парадку прыярытэту. Загрузнікі з меншым прыярытэтам будуць выкарыстоўвацца толькі для запаўнення адсутнай інфармацыі.", + "LabelMetadataDownloadersHelp": "Уключыце і зранжыравайце вашыя пераважныя спампавальнікі метададзеных у парадку прыярытэту. Спампавальнікі з меншым прыярытэтам будуць выкарыстоўвацца толькі для запаўнення адсутнай інфармацыі.", "LabelName": "Імя:", "LabelNewName": "Новая назва:", "LabelNewPassword": "Новы пароль:", @@ -769,7 +769,7 @@ "LabelPasswordRecoveryPinCode": "PIN-код:", "LabelPasswordResetProvider": "Пастаўшчык скіду пароля:", "LabelPersonRoleHelp": "Прыклад: кіроўца грузавіка з марожаным", - "LabelPlayDefaultAudioTrack": "Прайграванне гукавой дарожкі па змаўчанні незалежна ад мовы", + "LabelPlayDefaultAudioTrack": "Прайграванне аўдыё дарожкі па змаўчанні незалежна ад мовы", "LabelPlayerDimensions": "Памеры плэера:", "LabelPleaseRestart": "Змены ўступяць у сілу пасля ручной перазагрузкі вэб-кліента.", "LabelPostProcessor": "Прыкладанне для пост-апрацоўкі:", @@ -807,7 +807,7 @@ "LabelSeriesRecordingPath": "Шлях запісу серыі:", "LabelServerHost": "Вядучы:", "LabelSimultaneousConnectionLimit": "Ліміт адначасовай трансляцыі:", - "LabelSkipForwardLength": "Прапусціць даўжыню наперад:", + "LabelSkipForwardLength": "Даўжыня пасу наперад:", "LabelSkipIfAudioTrackPresentHelp": "Зніміце гэты сцяжок, каб пераканацца, што ўсе відэа маюць субтытры, незалежна ад мовы гуку.", "LabelSlowResponseEnabled": "Рэгіструйце папярэджанне, калі сервер адказваў павольна", "LabelSlowResponseTime": "Час у мс, пасля якога адказ лічыцца павольным:", @@ -817,7 +817,7 @@ "LabelStable": "Стабільны", "LabelStopping": "Прыпынак", "LabelStopWhenPossible": "Пры магчымасці спыніцеся:", - "LabelStreamType": "Тып плыні:", + "LabelStreamType": "Тып потоку:", "LabelSubtitleDownloaders": "Праграмы для загрузкі субтытраў:", "LabelSubtitleFormatHelp": "Прыклад: srt", "LabelSubtitleVerticalPosition": "Вертыкальнае становішча:", @@ -925,11 +925,11 @@ "HeaderDevices": "Прылады", "HeaderEnabledFields": "Уключаныя палі", "HeaderError": "Памылка", - "HeaderMyMedia": "Мае СМІ", + "HeaderMyMedia": "Мае медыя", "HeaderOnNow": "У эфіры", "HeaderPassword": "Пароль", "HeaderRemoteAccessSettings": "Налады аддаленага доступу", - "HeaderRemoveMediaFolder": "Выдаліць тэчку мультымедыя", + "HeaderRemoveMediaFolder": "Выдаліць папку мультымедыя", "Help": "Даведка", "LabelTonemappingDesatHelp": "Ужывайце дэсатурацыю для блікаў, якія перавышаюць гэты ўзровень яркасці. Чым вышэй параметр, тым больш інфармацыі аб колеры будзе захавана. Гэта налада дапамагае прадухіліць ненатуральна цьмяныя колеры для суперблікаў, замест гэтага (плаўна) ператвараючыся ў белыя. Гэта робіць выявы больш натуральнымі, за кошт памяншэння інфармацыі аб колерах, якія не ўваходзяць у дыяпазон. Рэкамендуемыя значэнні і значэнні па змаўчанні - 0 і 0,5.", "LabelTonemappingParamHelp": "Наладзьце алгарытм танальнага адлюстравання. Рэкамендаваныя значэнні і значэнні па змаўчанні - NaN. Як правіла, пакіньце яго пустым.", @@ -966,15 +966,15 @@ "MediaInfoBitrate": "Бітрэйт", "MediaInfoChannels": "Каналы", "MediaInfoColorTransfer": "Перадача колеру", - "MediaInfoLanguage": "мова", + "MediaInfoLanguage": "Мова", "LabelAllowHWTranscoding": "Дазволіць апаратнае перакадзіраванне", "MediaInfoLevel": "Узровень", "MediaInfoRefFrames": "Рэферальныя кадры", - "MediaIsBeingConverted": "Носьбіт пераўтворыцца ў фармат, сумяшчальны з прыладай, якая прайгравае мультымедыя.", + "MediaIsBeingConverted": "Медыя пераўтворыцца ў фармат, сумяшчальны з прыладай, якая прайгравае мультымедыя.", "MessageAddRepository": "Калі вы хочаце дадаць рэпазітар, націсніце кнопку побач з загалоўкам і запоўніце запытаную інфармацыю.", "LabelAutomaticDiscovery": "Уключыць аўтаматычнае выяўленне:", "MessageAreYouSureDeleteSubtitles": "Вы ўпэўнены, што хочаце выдаліць гэты файл субтытраў?", - "MessageBrowsePluginCatalog": "Праглядзіце наш каталог убудоў, каб убачыць даступныя ўбудовы.", + "MessageBrowsePluginCatalog": "Праглядзіце наш каталог плагінаў, каб убачыць даступныя плагіны.", "MessageChangeRecordingPath": "Змена папкі запісу не прывядзе да пераносу існуючых запісаў са старога месца ў новае. Пры жаданні вам трэба будзе перамясціць іх уручную.", "MessageConfirmDeleteGuideProvider": "Вы ўпэўнены, што хочаце выдаліць гэтага пастаўшчыка даведніка?", "MessageConfirmProfileDeletion": "Вы ўпэўнены, што хочаце выдаліць гэты профіль?", @@ -988,7 +988,7 @@ "LabelEnableDlnaPlayTo": "Уключыце функцыю DLNA \"Play To\"", "MessageNoPluginsInstalled": "У вас не ўстаноўлены плагіны.", "MessageNoRepositories": "Няма сховішчаў.", - "MessageNoServersAvailable": "З дапамогай аўтаматычнага выяўлення сервераў не знойдзены серверы.", + "MessageNoServersAvailable": "З дапамогай аўтаматычнага выяўлення сервераў, серверы не знойдзены.", "MessageNothingHere": "Нічога тут.", "MessageNoTrailersFound": "Усталюйце канал трэйлераў, каб палепшыць свае ўражанні ад фільмаў, дадаўшы бібліятэку інтэрнэт-трэйлераў.", "LabelHttpsPort": "Нумар лакальнага порта HTTPS:", @@ -1018,7 +1018,7 @@ "FileNotFound": "Файл не знойдзены.", "FileReadCancelled": "Прачытанне файла было адменена.", "Fullscreen": "Поуны экран", - "Guide": "Кіраўніцтва", + "Guide": "Даведнік", "HeaderApiKey": "Ключ API", "HeaderAudioSettings": "Налады гуку", "HeaderBranding": "Брэндынг", @@ -1027,9 +1027,9 @@ "HeaderContinueReading": "Працягнуць чытанне", "HeaderHttpHeaders": "Загалоўкі HTTP", "HeaderKeepRecording": "Працягвайце запіс", - "HeaderLibrarySettings": "Налады бібліятэкі", + "HeaderLibrarySettings": "Налады медыятэкі", "HeaderMyDevice": "Мая прылада", - "HeaderOtherItems": "Іншыя прадметы", + "HeaderOtherItems": "Іншыя элементы", "HeaderPlaybackError": "Памылка прайгравання", "MessagePluginInstallDisclaimer": "Плагіны, створаныя членамі супольнасці - выдатны спосаб палепшыць ваш вопыт з дапамогай дадатковых функцый і пераваг. Перад усталяваннем, калі ласка, звярніце ўвагу на наступствы, якія яны могуць уплываць на ваш сервер, такія як больш працяглае сканаванне бібліятэк, дадатковая фонавая апрацоўка і зніжэнне стабільнасці сістэмы.", "MessagePluginInstalled": "Плагін быў паспяхова ўсталяваны. Сервер трэба будзе перазапусціць, каб змены ўступілі ў сілу.", @@ -1039,7 +1039,7 @@ "HeaderSortBy": "Сартаваць па", "MessageSyncPlayEnabled": "SyncPlay уключаны.", "MessageSyncPlayErrorAccessingGroups": "Падчас доступу да спісу груп адбылася памылка.", - "MessageSyncPlayErrorNoActivePlayer": "Актыўны гулец не знойдзены. SyncPlay быў адключаны.", + "MessageSyncPlayErrorNoActivePlayer": "Актыўны прайгравальнік не знойдзены. SyncPlay быў адключаны.", "HeaderVideos": "Відэа", "HeaderVideoType": "Тып відэа", "MessageSyncPlayGroupDoesNotExist": "Не ўдалося далучыцца да групы, таму што яна не існуе.", @@ -1068,23 +1068,23 @@ "LabelChromecastVersion": "Версія Google Cast", "MessageUnsetContentHelp": "Змесціва будзе адлюстроўвацца ў выглядзе звычайных тэчак. Для дасягнення найлепшых вынікаў выкарыстоўвайце менеджэр метададзеных, каб усталяваць тыпы змесціва ўкладзеных тэчак.", "MessageYouHaveVersionInstalled": "Зараз у вас усталявана версія {0}.", - "MetadataManager": "Менеджэр метаданых", + "MetadataManager": "Менеджэр метададзеных", "MetadataSettingChangeHelp": "Змяненне налад метададзеных паўплывае на дадаванне новага змесціва. Каб абнавіць існуючы кантэнт, адкрыйце экран падрабязных звестак і націсніце кнопку \"Абнавіць\" або выканайце масавае абнаўленне з дапамогай \"Менеджара метададзеных\".", - "MillisecondsUnit": "Спадарыня", + "MillisecondsUnit": "мілісекунды", "LabelCustomDeviceDisplayNameHelp": "Увядзіце карыстальніцкае імя для адлюстравання або пакіньце пустым, каб выкарыстоўваць імя, паведамленае прыладай.", "LabelCustomRating": "Індывідуальны рэйтынг:", - "LabelDateAddedBehaviorHelp": "Калі прысутнічае значэнне метаданых, яно заўсёды будзе выкарыстоўвацца перад любым з гэтых варыянтаў.", + "LabelDateAddedBehaviorHelp": "Калі прысутнічае значэнне метададзеных, яно заўсёды будзе выкарыстоўвацца перад любым з гэтых варыянтаў.", "MixedMoviesShows": "Змешаныя фільмы і шоу", "LabelDidlMode": "Рэжым DIDL:", "Mixer": "Міксер", "LabelDisplayOrder": "Парадак адлюстравання:", "LabelDownloadLanguages": "Спампаваць мовы:", "Mobile": "Мабільны", - "Monday": "панядзелак", + "Monday": "Панядзелак", "MoreFromValue": "Больш ад {0}", "LabelDroppedFrames": "Выпушчаныя кадры:", - "MoreMediaInfo": "Інфармацыя аб СМІ", - "MoveRight": "Рух направа", + "MoreMediaInfo": "Інфармацыя аб медыя", + "MoveRight": "Рухайцесь направа", "Movie": "Фільм", "MovieLibraryHelp": "Праглядзіце {0}кіраўніцтва па назвах фільмаў{1}.", "Name": "Імя", @@ -1096,14 +1096,14 @@ "LabelEnableDlnaServer": "Уключыць сервер DLNA", "LabelEnableIP4": "Уключыць IPv4", "NoNewDevicesFound": "Новыя прылады не знойдзены. Каб дадаць новы цюнэр, зачыніце гэтае дыялогавае акно і ўвядзіце інфармацыю аб прыладзе ўручную.", - "NumLocationsValue": "{0} тэчак", + "NumLocationsValue": "{0} папак", "OneChannel": "Адзін канал", "LabelEncoderPreset": "Папярэдні набор кадавання:", "OnlyForcedSubtitlesHelp": "Будуць загружаныя толькі субтытры, пазначаныя як абавязковыя.", "Option3D": "3D", "OptionAllowAudioPlaybackTranscoding": "Дазволіць прайграванне аўдыя, якое патрабуе перакадзіравання", "LabelFormat": "Фармат:", - "OptionAllowLinkSharingHelp": "Абагульваюцца толькі вэб-старонкі, якія змяшчаюць медыя-інфармацыю. Медыяфайлы ніколі не абагульваюцца. Абагульванне абмежавана па часе і скончыцца праз {0} дзён.", + "OptionAllowLinkSharingHelp": "Абагульваюцца толькі вэб-старонкі, якія змяшчаюць медыя-інфармацыю. Мультымедыйныя файлы ніколі не абагульваюцца публічна. Абагульванне абмежавана па часе і скончыцца праз {0} дзён.", "LabelInNetworkSignInWithEasyPassword": "Уключыць уваход у сетку з майго Easy PIN-кода", "OptionAllowManageLiveTv": "Дазволіць кіраванне запісам ТБ", "OptionAllowMediaPlayback": "Дазволіць прайграванне мультымедыя", @@ -1112,7 +1112,7 @@ "OptionAllowRemoteControlOthers": "Дазволіць дыстанцыйнае кіраванне іншымі карыстальнікамі", "OptionAllowRemoteSharedDevices": "Дазволіць дыстанцыйнае кіраванне агульнымі прыладамі", "LabelKodiMetadataUser": "Захаваць даныя карыстальніцкіх гадзіннікаў у файлы NFO для:", - "OptionAllowSyncTranscoding": "Дазволіць загрузку і сінхранізацыю медыяфайлаў, якія патрабуюць перакадзіравання", + "OptionAllowSyncTranscoding": "Дазволіць спампоўку і сінхранізацыю медыяфайлаў, якія патрабуюць перакадзіравання", "OptionAllowUserToManageServer": "Дазволіць гэтаму карыстальніку кіраваць серверам", "OptionAllowVideoPlaybackRemuxing": "Дазволіць прайграванне відэа, якое патрабуе пераўтварэння без паўторнага кадавання", "OptionAllowVideoPlaybackTranscoding": "Дазволіць прайграванне відэа, якое патрабуе перакадзіравання", @@ -1127,12 +1127,12 @@ "LabelModelDescription": "Апісанне мадэлі:", "OptionDateEpisodeAdded": "Дата дадання эпізоду", "LabelMovieRecordingPath": "Шлях запісу фільма:", - "OptionDateShowAdded": "Паказ даты дададзены", + "OptionDateShowAdded": "Показ даты дадання серыяла", "OptionDateAddedFileTime": "Выкарыстоўвайце дату стварэння файла", "OptionDateAddedImportTime": "Выкарыстоўвайце адсканіраваную дату ў бібліятэцы", "OptionDisableUser": "Адключыць гэтага карыстальніка", "OptionDisableUserHelp": "Сервер не дазволіць ніякіх злучэнняў ад гэтага карыстальніка. Існуючыя сувязі будуць раптоўна спынены.", - "OptionDisplayFolderView": "Адлюстраванне прагляду тэчак, каб паказаць простыя папкі мультымедыя", + "OptionDisplayFolderView": "Адлюстраванне прагляду папак, каб паказаць простыя папкі мультымедыя", "LabelOverview": "Агляд:", "LabelPreferredSubtitleLanguage": "Пажаданая мова субтытраў:", "LabelProtocolInfo": "Інфармацыя аб пратаколе:", @@ -1183,7 +1183,7 @@ "MessageItemSaved": "Элемент захаваны.", "OptionRequirePerfectSubtitleMatchHelp": "Патрабаванне ідэальнага супадзення адфільтруе субтытры, каб уключыць толькі тыя, якія былі правераны з вашым дакладным відэафайлам. Зняцце галачкі павялічвае верагоднасць спампоўкі субтытраў, але павялічвае верагоднасць няправільнага тэксту субтытраў.", "MessageNoGenresAvailable": "Дазволіць некаторым пастаўшчыкам метададзеных атрымліваць жанры з Інтэрнэту.", - "OptionResumable": "Аднаўляецца", + "OptionResumable": "Аднаўляемае", "OptionSaveMetadataAsHiddenHelp": "Змена гэтага будзе прымяняцца да новых захаваных метададзеных. Існуючыя файлы метададзеных будуць абноўлены ў наступны раз, калі яны будуць захаваны на серверы.", "OptionTrackName": "Назва дарожкі", "OptionTvdbRating": "Рэйтынг TVDB", @@ -1196,14 +1196,14 @@ "OnWakeFromSleep": "Пры абуджэнні ад сну", "OptionAdminUsers": "Адміністратары", "PathNotFound": "Шлях не знойдзены. Пераканайцеся, што шлях правільны, і паўтарыце спробу.", - "PerfectMatch": "Ідэальны матч", + "PerfectMatch": "Поўная адпаведнасць", "Person": "Асоба", - "PlaceFavoriteChannelsAtBeginning": "Размесціце любімыя каналы ў пачатку", + "PlaceFavoriteChannelsAtBeginning": "Размесціце абраныя каналы ў пачатку", "OptionAllowRemoteSharedDevicesHelp": "Прылады DLNA лічацца агульнымі, пакуль карыстальнік не пачне імі кіраваць.", "PlaybackData": "Інфармацыя аб прайграванні", "PlaybackErrorPlaceHolder": "Гэта запаўняльнік для фізічных носьбітаў, якія Jellyfin не можа прайграць. Калі ласка, устаўце дыск для прайгравання.", "PlaybackRate": "Хуткасць прайгравання", - "PlayCount": "Колькасць гульняў", + "PlayCount": "Колькасць прайгравання", "PlayNextEpisodeAutomatically": "Прайграць наступны эпізод аўтаматычна", "PleaseConfirmPluginInstallation": "Калі ласка, націсніце \"ОК\", каб пацвердзіць, што вы прачыталі сказанае вышэй і хочаце працягнуць усталёўку плагіна.", "PleaseEnterNameOrId": "Увядзіце імя або знешні ідэнтыфікатар.", @@ -1211,7 +1211,7 @@ "PreferEmbeddedEpisodeInfosOverFileNames": "Аддайце перавагу ўбудаванай інфармацыі аб серыях перад назвамі файлаў", "OptionEnableExternalContentInSuggestions": "Уключыць знешні кантэнт у прапановах", "OptionEnableM2tsModeHelp": "Уключыце рэжым M2TS пры кадзіраванні ў MPEG-TS.", - "OptionEquals": "Роўнае", + "OptionEquals": "Роўна", "PreferEmbeddedTitlesOverFileNamesHelp": "Вызначце загаловак для адлюстравання, які будзе выкарыстоўвацца, калі інтэрнэт-метададзеныя або лакальныя метаданыя недаступныя.", "OptionImdbRating": "Рэйтынг IMDb", "AllowEmbeddedSubtitles": "Адключыць розныя тыпы ўбудаваных субтытраў", @@ -1224,7 +1224,7 @@ "Premieres": "Прэм'еры", "Previous": "Папярэдні", "PreviousTrack": "Перайсці да папярэдняга", - "OptionPlayCount": "Прайграць лічыльнік", + "OptionPlayCount": "Колькасьць прайгравання", "Print": "Друк", "ProductionLocations": "Вытворчыя месцы", "OptionReleaseDate": "Дата выпуску", @@ -1234,7 +1234,7 @@ "QuickConnectAuthorizeSuccess": "Запыт дазволены", "QuickConnectDescription": "Каб увайсці з дапамогай Quick Connect, цісніце кнопку \"Quick Connect\" на прыладзе, з якой вы ўваходзіце, і ўвядзіце паказаны ніжэй код.", "QuickConnectNotAvailable": "Папрасіце адміністратара сервера ўключыць Quick Connect", - "OptionSpecialEpisode": "Спец", + "OptionSpecialEpisode": "Спецэпізоды", "RecommendationBecauseYouWatched": "Таму што вы глядзелі {0}", "RecommendationStarring": "У галоўнай ролі {0}", "OptionWeekends": "Выходныя дні", @@ -1242,20 +1242,20 @@ "OriginalAirDate": "Першапачатковая дата эфіру", "PackageInstallCompleted": "Усталяванне {0} (версія {1}) завершана.", "RecordingScheduled": "Запіс запланаваны.", - "RecordSeries": "Запіс серыялаў", + "RecordSeries": "Запісаць серыял", "Refresh": "Абнавіць", "Photo": "Фота", "RefreshDialogHelp": "Метададзеныя абнаўляюцца на аснове налад і інтэрнэт-сэрвісаў, уключаных на панэлі кіравання.", - "RefreshMetadata": "Абнавіць метаданыя", - "Play": "гуляць", + "RefreshMetadata": "Абнавіць метададзеныя", + "Play": "Прайграць", "RefreshQueued": "Абнавіць у чарзе.", - "RememberAudioSelectionsHelp": "Паспрабуйце ўсталяваць гукавую дарожку, якая найбольш адпавядае апошняму відэа.", + "RememberAudioSelectionsHelp": "Паспрабуйце ўсталяваць аўдыё дарожку, якая найбольш адпавядае апошняму відэа.", "RememberSubtitleSelectionsHelp": "Паспрабуйце ўсталяваць дарожку субтытраў, якая найбольш адпавядае апошняму відэа.", - "Remixer": "Рэмікс", + "Remixer": "Рэміксер", "RepeatAll": "Паўтарыце ўсё", - "PlayNext": "Гуляць далей", - "RepeatOne": "Паўтарыце адно", - "ReplaceAllMetadata": "Замяніць усе метаданыя", + "PlayNext": "Прайграць далей", + "RepeatOne": "Паўтарыць адно", + "ReplaceAllMetadata": "Замяніць усе метададзеныя", "PleaseRestartServerName": "Перазапусціце Jellyfin на {0}.", "ResetPassword": "Скінуць пароль", "Save": "Захаваць", @@ -1271,27 +1271,27 @@ "Quality": "Якасць", "ScanForNewAndUpdatedFiles": "Сканіраванне новых і абноўленых файлаў", "QuickConnectInvalidCode": "Няправільны Quick Connect код", - "ScanLibrary": "Бібліятэка сканавання", + "ScanLibrary": "Сканаваць медыятэку", "Schedule": "Расклад", "ScreenResolution": "Дазвол экрана", "QuickConnectNotActive": "Quick Connec не актыўнае на гэтым серверы", "SearchResults": "Вынікі пошуку", - "Rate": "Стаўка", + "Rate": "Ацэніць", "RecommendationDirectedBy": "Рэжысёр: {0}", "SelectServer": "Выберыце Сервер", - "Series": "серыял", + "Series": "Серыял", "ServerRestartNeededAfterPluginInstall": "Jellyfin трэба будзе перазапусціць пасля ўстаноўкі плагіна.", "ServerUpdateNeeded": "Гэты сервер неабходна абнавіць. Каб спампаваць апошнюю версію, наведайце {0}", "Settings": "Налады", "RememberMe": "Запомні мяне", "SettingsSaved": "Налады захаваны.", "Restart": "Перазапуск", - "ResumeAt": "Рэзюмаваць з {0}", + "ResumeAt": "Аднавіць з {0}", "SettingsWarning": "Змяненне гэтых значэнняў можа выклікаць нестабільнасць або збоі ў падключэнні. Калі ў вас узніклі праблемы, мы рэкамендуем вярнуць іх да стандартных.", "ShowParentImages": "Паказаць выявы серыі", "ShowTitle": "Паказаць назву", "ShowYear": "Паказаць год", - "SkipEpisodesAlreadyInMyLibrary": "Не запісваць эпізоды, якія ўжо ёсць у маёй бібліятэцы", + "SkipEpisodesAlreadyInMyLibrary": "Не запісваць эпізоды, якія ўжо ёсць у маёй медыятэкі", "SendMessage": "Адправіць паведамленне", "SmallCaps": "Малыя літары", "Smaller": "Меншы", @@ -1304,11 +1304,11 @@ "Suggestions": "Прапановы", "TabDashboard": "Панэль кіравання", "TabLatest": "Апошні", - "TabLogs": "Лагі", + "TabLogs": "Журналы", "TabMusic": "Музыка", "TabParentalControl": "Бацькоўскі кантроль", - "SubtitleOffset": "Зрушэнне субтытраў", - "TabPlugins": "Убудовы", + "SubtitleOffset": "Зрух субтытраў", + "TabPlugins": "Плагіны", "TabProfiles": "Профілі", "TabRepositories": "Сховішчы", "TabResponses": "Адказы", @@ -1316,7 +1316,7 @@ "Tags": "Тэгі", "TagsValue": "Тэгі: {0}", "TheseSettingsAffectSubtitlesOnThisDevice": "Гэтыя налады ўплываюць на субтытры на гэтай прыладзе", - "Thumb": "Вялікі палец", + "Thumb": "Эскіз", "TonemappingAlgorithmHelp": "Тональнае адлюстраванне можна дакладна наладзіць. Калі вы не знаёмыя з гэтымі параметрамі, проста захавайце стандартныя. Рэкамендаванае значэнне - \"BT.2390\".", "Track": "Трэк", "TypeOptionPluralBook": "Кнігі", @@ -1328,11 +1328,11 @@ "TitlePlayback": "Прайграванне", "ValueMovieCount": "{0} фільмаў", "ValueOneAlbum": "1 альбом", - "Tuesday": "аўторак", + "Tuesday": "Аўторак", "ValueOneEpisode": "1 эпізод", "ValueSeconds": "{0} секунд", "ValueSongCount": "Песень: {0}", - "TypeOptionPluralSeason": "Поры года", + "TypeOptionPluralSeason": "Сезоны", "ValueTimeLimitMultiHour": "Ліміт часу: {0} гадзін", "ValueTimeLimitSingleHour": "Абмежаванне па часе: 1 гадзіна", "Vertical": "Вертыкальны", @@ -1341,7 +1341,7 @@ "ViewAlbumArtist": "Паглядзець выканаўцу альбома", "ViewPlaybackInfo": "Прагляд інфармацыі аб прайграванні", "Watched": "Прагледжана", - "Unplayed": "Негуляны", + "Unplayed": "Непрайгранае", "Wednesday": "Серада", "WeeklyAt": "{0} у {1}", "XmlTvSportsCategoriesHelp": "Праграмы з гэтымі катэгорыямі будуць адлюстроўвацца як спартыўныя праграмы. Раздзяляйце некалькі знакамі '|'.", @@ -1396,21 +1396,21 @@ "MediaInfoBlPresentFlag": "Прадусталяваны сцяг DV bl", "MediaInfoDvBlSignalCompatibilityId": "Ідэнтыфікатар сумяшчальнасці сігналу DV bl", "YoutubeBadRequest": "Дрэнны запыт.", - "EnableDisplayMirroring": "Адлюстраванне адлюстравання", + "EnableDisplayMirroring": "Дубліраванне адлюстравання", "FetchingData": "Атрыманне дадатковых дадзеных", "LabelSortOrder": "Парадак сартавання:", - "MarkPlayed": "Марк гуляў", + "MarkPlayed": "Адзначыць як прайгранае", "HeaderAlert": "Абвестка", - "HeaderLibraryAccess": "Доступ да бібліятэкі", + "HeaderLibraryAccess": "Доступ да медыятэкі", "HeaderRecentlyPlayed": "Нядаўна прайгравана", "HeaderSecondsValue": "{0} секунд", - "LabelAppName": "Назва праграмы", - "LabelBirthYear": "Год народзінаў:", + "LabelAppName": "Назва прыкладання", + "LabelBirthYear": "Год нараджэння:", "ConfirmDeletion": "Пацвердзіце выдаленне", - "Images": "Малюнкі", + "Images": "Выявы", "HeaderDebugging": "Адладка і трасіроўка", "HeaderMyMediaSmall": "Мае мультымедыя (маленькія)", - "General": "Генерал", + "General": "Агульны", "VideoProfileNotSupported": "Профіль відэакодэка не падтрымліваецца", "AudioBitDepthNotSupported": "Разраднасць аўдыя не падтрымліваецца", "Menu": "Меню", @@ -1424,12 +1424,12 @@ "TabNetworks": "ТБ сеткі", "TabNfoSettings": "Налады NFO", "TabNotifications": "Апавяшчэнні", - "SmartSubtitlesHelp": "Калі гук на замежнай мове, будуць загружаны субтытры, якія адпавядаюць моўным перавагам.", - "SortName": "Назва сартавання", + "SmartSubtitlesHelp": "Субтытры, якія адпавядаюць моўным перавагам, будуць загружаны, калі аўдыё на замежнай мове.", + "SortName": "Сартаваць каналы па назве", "TabOther": "Іншае", "SpecialFeatures": "Асаблівасці", "Sports": "Спорт", - "StoryArc": "Гісторыя Арк", + "StoryArc": "Сюжэтная арка", "StopPlayback": "Спыніць прайграванне", "StopRecording": "Спыніць запіс", "Studios": "Студыі", @@ -1443,10 +1443,10 @@ "MinutesAfter": "хвілін пасля", "MusicAlbum": "Музычны альбом", "MusicArtist": "Музычны выканаўца", - "MusicLibraryHelp": "Праглядзіце {0}кіраўніцтва па назвах музыкі{1}.", + "MusicLibraryHelp": "Праглядзіце {0}даведнік па назвах музыкі{1}.", "MusicVideo": "Музычнае відэа", - "Never": "ніколі", - "NewEpisodesOnly": "Толькі новыя серыі", + "Never": "Ніколі", + "NewEpisodesOnly": "Толькі новыя эпізоды", "News": "Навіны", "NextUp": "Далей", "DownloadAll": "Спампаваць усе", @@ -1491,15 +1491,15 @@ "HeaderImageSettings": "Налады выявы", "HeaderInstall": "Усталяваць", "HeaderInstantMix": "Імгненны мікс", - "HeaderKeepSeries": "Трымайце серыял", - "HeaderLatestMedia": "Апошнія медыя", + "HeaderKeepSeries": "Захоўвацт серыял", + "HeaderLatestMedia": "Новыя медыя", "HeaderLatestMovies": "Апошнія фільмы", - "HeaderLatestMusic": "Найноўшая музыка", + "HeaderLatestMusic": "Новая музыка", "HeaderLatestRecordings": "Апошнія запісы", "HeaderLibraries": "Медыятэкі", - "HeaderLibraryFolders": "Бібліятэчныя тэчкі", - "HeaderLibraryOrder": "Бібліятэчны загад", - "HeaderMediaFolders": "Медыятэчкі", + "HeaderLibraryFolders": "Папкі медыятэкі", + "HeaderLibraryOrder": "Парадак медыятэк", + "HeaderMediaFolders": "Папкі медыятэкі", "HeaderMetadataSettings": "Налады метаданых", "HeaderMoreLikeThis": "Больш падобнага", "HeaderMusicQuality": "Якасць музыкі", @@ -1524,7 +1524,7 @@ "LabelAccessStart": "Час пачатку:", "LabelAirsBeforeEpisode": "Эфір перад эпізодам:", "LabelAudioCodec": "Аўдыякодэк:", - "LabelAudioLanguagePreference": "Пажаданая мова гуку:", + "LabelAudioLanguagePreference": "Пажаданая мова аўдыё:", "LabelAudioSampleRate": "Частата дыскрэтызацыі аўдыя:", "LabelAutomaticallyAddToCollection": "Аўтаматычна дадаваць у калекцыю", "LabelAutoDiscoveryTracing": "Уключыць адсочванне аўтаматычнага выяўлення.", @@ -1537,12 +1537,12 @@ "LabelEnableDlnaServerHelp": "Дазвольце прыладам UPnP у вашай сетцы праглядаць і прайграваць кантэнт.", "LabelEnableHardwareDecodingFor": "Уключыць апаратнае дэкадаванне для:", "LabelEnableHttpsHelp": "Праслухоўванне праз наладжаны порт HTTPS. Для таго, каб гэта ўступіла ў сілу, таксама неабходна падаць сапраўдны сертыфікат.", - "LabelExtractChaptersDuringLibraryScan": "Выманне малюнкаў раздзелаў падчас сканавання бібліятэкі", + "LabelExtractChaptersDuringLibraryScan": "Выманне выяў раздзелаў падчас сканавання бібліятэкі", "LabelExtractChaptersDuringLibraryScanHelp": "Стварайце выявы раздзелаў, калі відэа імпартуюцца падчас сканавання бібліятэкі. У адваротным выпадку яны будуць выняты падчас запланаванай задачы выявы раздзелаў, што дазволіць звычайнаму сканаванню бібліятэкі завяршыцца хутчэй.", "LabelFailed": "Не атрымалася", "LabelffmpegPathHelp": "Шлях да файла або папкі прыкладання FFmpeg, якая змяшчае FFmpeg.", "LabelFileOrUrl": "Файл або URL:", - "LabelFolder": "Тэчка:", + "LabelFolder": "Папка:", "LabelFont": "Шрыфт:", "LabelForgotPasswordUsernameHelp": "Увядзіце імя карыстальніка, калі вы яго памятаеце.", "LabelFriendlyName": "Дружалюбнае імя:", @@ -1571,7 +1571,7 @@ "LabelKodiMetadataEnablePathSubstitutionHelp": "Уключыць замену шляхоў малюнкаў з дапамогай параметраў замены шляху сервера.", "LabelKodiMetadataSaveImagePaths": "Захоўвайце шляхі малюнкаў у файлах NFO", "LabelKodiMetadataSaveImagePathsHelp": "Гэта рэкамендуецца, калі ў вас ёсць назвы файлаў малюнкаў, якія не адпавядаюць рэкамендацыям Kodi.", - "LabelLanguage": "мова:", + "LabelLanguage": "Мова:", "LabelLanNetworks": "LAN сеткі:", "LabelLibraryPageSize": "Памер старонкі бібліятэкі:", "LabelLibraryPageSizeHelp": "Усталюйце колькасць элементаў для паказу на старонцы бібліятэкі. Усталюйце 0, каб адключыць пэйджынг.", @@ -1589,15 +1589,15 @@ "LabelMaxAudiobookResume": "Засталося хвілін для аднаўлення аўдыякнігі:", "LabelMaxAudiobookResumeHelp": "Лічыцца, што загалоўкі прайграны цалкам, калі іх спыніць, калі астатняя працягласць меншая за гэта значэнне.", "LabelMaxBackdropsPerItem": "Максімальная колькасць фонаў на элемент:", - "LabelMaxChromecastBitrate": "Якасць плыні Google Cast:", + "LabelMaxChromecastBitrate": "Якасць трансляцыі Google Cast:", "LabelMetadataReadersHelp": "Ранжыруйце любімыя лакальныя крыніцы метададзеных у парадку прыярытэту. Будзе прачытаны першы знойдзены файл.", "LabelMetadataSaversHelp": "Выберыце фарматы файлаў для захавання метададзеных.", "LabelMethod": "Метад:", - "LabelMinAudiobookResume": "Мінімальнае рэзюмэ аўдыякнігі ў хвілінах:", + "LabelMinAudiobookResume": "Мінімальнае ўзнаўленне аўдыякнігі ў хвілінах:", "LabelMinAudiobookResumeHelp": "Лічыцца, што загалоўкі не прайграваюцца, калі яны былі спынены да гэтага часу.", "LabelMinBackdropDownloadWidth": "Мінімальная шырыня загрузкі фону:", - "LabelMinResumeDuration": "Мінімальная працягласць рэзюмэ:", - "LabelMinResumePercentage": "Мінімальны працэнт рэзюмэ:", + "LabelMinResumeDuration": "Мінімальная працягласць узнаўлення:", + "LabelMinResumePercentage": "Мінімальны працэнт узнаўлення:", "LabelMinResumePercentageHelp": "Лічыцца, што загалоўкі не прайграваюцца, калі яны былі спынены да гэтага часу.", "LabelModelName": "Назва мадэлі:", "LabelModelNumber": "Нумар мадэлі:", @@ -1621,7 +1621,7 @@ "MessageInvalidForgotPasswordPin": "Быў уведзены несапраўдны або пратэрмінаваны PIN-код. Калі ласка, паспрабуйце яшчэ раз.", "MessageLeaveEmptyToInherit": "Пакіньце пустым, каб успадкаваць налады ад бацькоўскага элемента або глабальнае значэнне па змаўчанні.", "MessageNoItemsAvailable": "Зараз няма даступных элементаў.", - "MessageNoFavoritesAvailable": "Зараз няма даступных абраных.", + "MessageNoFavoritesAvailable": "Зараз няма даступных абраных элементаў.", "MessageNoAvailablePlugins": "Няма даступных плагінаў.", "MessageNoCollectionsAvailable": "Калекцыі дазваляюць карыстацца персаналізаванымі групамі фільмаў, серыялаў і альбомаў. Націсніце кнопку \"+\", каб пачаць ствараць калекцыі.", "MessageNoMovieSuggestionsAvailable": "Зараз няма прапаноў па фільмах. Пачніце глядзець і ацэньваць свае фільмы, а потым вярніцеся да прагляду рэкамендацый.", @@ -1630,7 +1630,7 @@ "MessagePluginInstallError": "Пры ўсталёўцы плагіна адбылася памылка.", "NextChapter": "Наступная глава", "NextTrack": "Перайсці да наступнага", - "No": "няма", + "No": "Не", "NoCreatedLibraries": "Здаецца, вы яшчэ не стварылі ніводнай бібліятэкі. {0}Жадаеце стварыць зараз?{1}", "None": "Няма", "OptionEmbedSubtitles": "Убудаваць у кантэйнер", From df9e1462c89787a241e37d56f1aa53d7cbdc1068 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 11:25:26 +0000 Subject: [PATCH 092/222] Update Linters to v5.50.0 --- package-lock.json | 166 +++++++++++++++++++++++----------------------- package.json | 4 +- 2 files changed, 86 insertions(+), 84 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1eb88bbe67..ce5f1b7a6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,8 +68,8 @@ "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", "@types/react-dom": "17.0.18", - "@typescript-eslint/eslint-plugin": "5.49.0", - "@typescript-eslint/parser": "5.49.0", + "@typescript-eslint/eslint-plugin": "5.50.0", + "@typescript-eslint/parser": "5.50.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -3175,15 +3175,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.49.0.tgz", - "integrity": "sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", + "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.49.0", - "@typescript-eslint/type-utils": "5.49.0", - "@typescript-eslint/utils": "5.49.0", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/type-utils": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", @@ -3223,14 +3224,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.49.0.tgz", - "integrity": "sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", + "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.49.0", - "@typescript-eslint/types": "5.49.0", - "@typescript-eslint/typescript-estree": "5.49.0", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "debug": "^4.3.4" }, "engines": { @@ -3250,13 +3251,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.49.0.tgz", - "integrity": "sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", + "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.49.0", - "@typescript-eslint/visitor-keys": "5.49.0" + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3267,13 +3268,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.49.0.tgz", - "integrity": "sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", + "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.49.0", - "@typescript-eslint/utils": "5.49.0", + "@typescript-eslint/typescript-estree": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3294,9 +3295,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.49.0.tgz", - "integrity": "sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", + "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3307,13 +3308,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.49.0.tgz", - "integrity": "sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", + "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.49.0", - "@typescript-eslint/visitor-keys": "5.49.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3378,16 +3379,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.49.0.tgz", - "integrity": "sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", + "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.49.0", - "@typescript-eslint/types": "5.49.0", - "@typescript-eslint/typescript-estree": "5.49.0", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -3419,12 +3420,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.49.0.tgz", - "integrity": "sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", + "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/types": "5.50.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -21355,15 +21356,16 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.49.0.tgz", - "integrity": "sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", + "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.49.0", - "@typescript-eslint/type-utils": "5.49.0", - "@typescript-eslint/utils": "5.49.0", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/type-utils": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", @@ -21383,53 +21385,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.49.0.tgz", - "integrity": "sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", + "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.49.0", - "@typescript-eslint/types": "5.49.0", - "@typescript-eslint/typescript-estree": "5.49.0", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.49.0.tgz", - "integrity": "sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", + "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.49.0", - "@typescript-eslint/visitor-keys": "5.49.0" + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0" } }, "@typescript-eslint/type-utils": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.49.0.tgz", - "integrity": "sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", + "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.49.0", - "@typescript-eslint/utils": "5.49.0", + "@typescript-eslint/typescript-estree": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.49.0.tgz", - "integrity": "sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", + "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.49.0.tgz", - "integrity": "sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", + "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", "dev": true, "requires": { - "@typescript-eslint/types": "5.49.0", - "@typescript-eslint/visitor-keys": "5.49.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -21469,16 +21471,16 @@ } }, "@typescript-eslint/utils": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.49.0.tgz", - "integrity": "sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", + "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.49.0", - "@typescript-eslint/types": "5.49.0", - "@typescript-eslint/typescript-estree": "5.49.0", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -21496,12 +21498,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.49.0.tgz", - "integrity": "sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", + "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/types": "5.50.0", "eslint-visitor-keys": "^3.3.0" }, "dependencies": { diff --git a/package.json b/package.json index af4d92d36a..d145aff0e0 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", "@types/react-dom": "17.0.18", - "@typescript-eslint/eslint-plugin": "5.49.0", - "@typescript-eslint/parser": "5.49.0", + "@typescript-eslint/eslint-plugin": "5.50.0", + "@typescript-eslint/parser": "5.50.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", From 9f8e98b68c710f120ddd6704a36d2ba57a82641b Mon Sep 17 00:00:00 2001 From: Merlin Danner Date: Sun, 8 Jan 2023 04:41:43 +0100 Subject: [PATCH 093/222] Rename login disclaimer disclaimerContainer is confused by adblockers using the "I don't care about cookies" filters with cookie disclaimers. This results in the disclaimer being blocked when using popular AdBlocker Extensions. This commit renames disclaimerContainer -> loginDisclaimerContainer disclaimer -> loginDisclaimer to be more verbose and circumvent that filter --- src/controllers/session/login/index.html | 4 ++-- src/controllers/session/login/index.js | 6 +++--- src/controllers/session/login/login.scss | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/controllers/session/login/index.html b/src/controllers/session/login/index.html index 55550a194c..f24bc0d3eb 100644 --- a/src/controllers/session/login/index.html +++ b/src/controllers/session/login/index.html @@ -50,8 +50,8 @@ ${ButtonChangeServer} -
-
+
+
diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index 43d0ff2e40..258e670713 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -284,11 +284,11 @@ import './login.scss'; loading.hide(); }); apiClient.getJSON(apiClient.getUrl('Branding/Configuration')).then(function (options) { - const disclaimer = view.querySelector('.disclaimer'); + const loginDisclaimer = view.querySelector('.loginDisclaimer'); - disclaimer.innerHTML = DOMPurify.sanitize(marked(options.LoginDisclaimer || '')); + loginDisclaimer.innerHTML = DOMPurify.sanitize(marked(options.LoginDisclaimer || '')); - for (const elem of disclaimer.querySelectorAll('a')) { + for (const elem of loginDisclaimer.querySelectorAll('a')) { elem.rel = 'noopener noreferrer'; elem.target = '_blank'; elem.classList.add('button-link'); diff --git a/src/controllers/session/login/login.scss b/src/controllers/session/login/login.scss index d84d0088d1..70bb7754ef 100644 --- a/src/controllers/session/login/login.scss +++ b/src/controllers/session/login/login.scss @@ -1,9 +1,9 @@ -.disclaimerContainer { +.loginDisclaimerContainer { display: flex; margin-top: 2em; } -.disclaimer { +.loginDisclaimer { margin: 0 auto; h1, From 2682fe2067b3443f2b7a167bba04eb8f5fc16503 Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@gmail.com> Date: Tue, 17 May 2022 23:01:20 +0200 Subject: [PATCH 094/222] Add option to allow extras to use embedded titles --- .../libraryoptionseditor.js | 19 +++++++++++++++++++ .../libraryoptionseditor.template.html | 7 +++++++ src/strings/en-us.json | 2 ++ 3 files changed, 28 insertions(+) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 522ee3058b..1991e0f198 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -366,6 +366,14 @@ import template from './libraryoptionseditor.template.html'; parent.querySelector('.subtitleFetchers').addEventListener('click', onSortableContainerClick); parent.querySelector('.metadataFetchers').addEventListener('click', onSortableContainerClick); parent.querySelector('.imageFetchers').addEventListener('click', onImageFetchersContainerClick); + + parent.querySelector('#chkEnableEmbeddedTitles').addEventListener('change', (e) => { + if (e.currentTarget.checked) { + parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.remove('hide'); + } else { + parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.add('hide'); + } + }); } export async function embed(parent, contentType, libraryOptions) { @@ -412,8 +420,12 @@ import template from './libraryoptionseditor.template.html'; if (contentType === 'books' || contentType === 'boxsets' || contentType === 'playlists' || contentType === 'music') { parent.querySelector('.chkEnableEmbeddedTitlesContainer').classList.add('hide'); + parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.add('hide'); } else { parent.querySelector('.chkEnableEmbeddedTitlesContainer').classList.remove('hide'); + if (parent.querySelector('#chkEnableEmbeddedTitles').checked) { + parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.remove('hide'); + } } if (contentType === 'tvshows') { @@ -525,6 +537,7 @@ import template from './libraryoptionseditor.template.html'; SeasonZeroDisplayName: parent.querySelector('#txtSeasonZeroName').value, AutomaticRefreshIntervalDays: parseInt(parent.querySelector('#selectAutoRefreshInterval').value), EnableEmbeddedTitles: parent.querySelector('#chkEnableEmbeddedTitles').checked, + EnableEmbeddedExtrasTitles: parent.querySelector('#chkEnableEmbeddedExtrasTitles').checked, EnableEmbeddedEpisodeInfos: parent.querySelector('#chkEnableEmbeddedEpisodeInfos').checked, AllowEmbeddedSubtitles: parent.querySelector('#selectAllowEmbeddedSubtitles').value, SkipSubtitlesIfEmbeddedSubtitlesPresent: parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked, @@ -580,6 +593,12 @@ import template from './libraryoptionseditor.template.html'; parent.querySelector('#chkSaveLocal').checked = options.SaveLocalMetadata; parent.querySelector('.chkAutomaticallyGroupSeries').checked = options.EnableAutomaticSeriesGrouping; parent.querySelector('#chkEnableEmbeddedTitles').checked = options.EnableEmbeddedTitles; + if (options.EnableEmbeddedTitles) { + parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.remove('hide'); + } else { + parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.add('hide'); + } + parent.querySelector('#chkEnableEmbeddedExtrasTitles').checked = options.EnableEmbeddedExtrasTitles; parent.querySelector('#chkEnableEmbeddedEpisodeInfos').value = options.EnableEmbeddedEpisodeInfos; parent.querySelector('#selectAllowEmbeddedSubtitles').value = options.AllowEmbeddedSubtitles; parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent; diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.template.html b/src/components/libraryoptionseditor/libraryoptionseditor.template.html index 5fc0742177..fbaad6e2d4 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/src/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -23,6 +23,13 @@
${PreferEmbeddedTitlesOverFileNamesHelp}
+
+ +
${PreferEmbeddedExtrasTitlesOverFileNamesHelp}
+
+ +
+

${HeaderDummyChapter}

+
+ +
${LabelDummyChapterDurationHelp}
+
+
+ +
${LabelDummyChapterCountHelp}
+
+
+ +
+
${LabelChapterImageResolutionHelp}
+
+
+

-
-

${HeaderDummyChapter}

-
- -
${LabelDummyChapterDurationHelp}
-
-
- -
${LabelDummyChapterCountHelp}
-
-
- -
-
${LabelChapterImageResolutionHelp}
-
-
-

+
+ +
From 8f359786d2f3d3d2fbd80ebe6cfa6c65fa8daf38 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 05:40:45 +0000 Subject: [PATCH 110/222] Update dependency sass to v1.58.0 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e265dad97e..dce27e313c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -98,7 +98,7 @@ "postcss-loader": "7.0.2", "postcss-preset-env": "8.0.1", "postcss-scss": "4.0.6", - "sass": "1.57.1", + "sass": "1.58.0", "sass-loader": "13.2.0", "source-map-loader": "4.0.1", "style-loader": "3.3.1", @@ -13672,9 +13672,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.57.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz", - "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.0.tgz", + "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -29068,9 +29068,9 @@ "dev": true }, "sass": { - "version": "1.57.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz", - "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.0.tgz", + "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", diff --git a/package.json b/package.json index 6428eaee68..bafc4ff4bc 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "postcss-loader": "7.0.2", "postcss-preset-env": "8.0.1", "postcss-scss": "4.0.6", - "sass": "1.57.1", + "sass": "1.58.0", "sass-loader": "13.2.0", "source-map-loader": "4.0.1", "style-loader": "3.3.1", From e2176b4594bd9a9dc7918112b9882e12fcdd6018 Mon Sep 17 00:00:00 2001 From: Oskari Lavinto Date: Wed, 8 Feb 2023 06:26:02 +0000 Subject: [PATCH 111/222] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 7a5f872df7..4f7af2ac05 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1681,5 +1681,10 @@ "DownloadAll": "Lataa kaikki", "Experimental": "Kokeellinen", "LabelStereoDownmixAlgorithm": "Stereoäänen alasmiksausalgoritmi:", - "StereoDownmixAlgorithmHelp": "Algoritmi, jonka perusteella monikanavaääni alasmiksataan steroääneksi." + "StereoDownmixAlgorithmHelp": "Algoritmi, jonka perusteella monikanavaääni alasmiksataan steroääneksi.", + "HeaderRecordingMetadataSaving": "Tallenteen metatiedot", + "SaveRecordingNFO": "Tallenna tallenteen ohjelmaoppaan metatiedot NFO-tiedostoon", + "SaveRecordingNFOHelp": "Tallenna ohjelmaoppaan tietolähteen metatiedot mediatiedoston oheen.", + "SaveRecordingImages": "Tallenna tallenteen ohjelmaoppaan kuvat", + "SaveRecordingImagesHelp": "Tallenna ohjelmaoppaan tietolähteen kuvat mediatiedoston oheen." } From f78f2c7094754d0810517f6c17b26ba680fcd193 Mon Sep 17 00:00:00 2001 From: Davide Maggio Date: Wed, 8 Feb 2023 10:18:23 +0100 Subject: [PATCH 112/222] Update src/controllers/playback/video/index.js Co-authored-by: Bill Thornton --- src/controllers/playback/video/index.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 0890df8c8b..8fc6976598 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -878,11 +878,7 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components } function nowPlayingDurationTextClick() { - if (userSettings.enableVideoRemainingTime()) { - userSettings.enableVideoRemainingTime(false); - } else { - userSettings.enableVideoRemainingTime(true); - } + userSettings.enableVideoRemainingTime(!userSettings.enableVideoRemainingTime()); // immediately update the text, without waiting for the next tick update or if the player is paused const state = playbackManager.getPlayerState(currentPlayer); const playState = state.PlayState; From 732740499bb228795e55ed497da3eebf492b0f26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Wed, 8 Feb 2023 14:14:07 +0000 Subject: [PATCH 113/222] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 3f9c7c2729..5cd79652f6 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1693,5 +1693,13 @@ "SaveRecordingNFO": "Uložit metadata elektronického programového průvodce nahrávky do souboru NFO", "SaveRecordingNFOHelp": "Uložit metadata položek elektronického programového průvodce spolu s médii.", "SaveRecordingImages": "Uložit obrázky elektronického programového průvodce nahrávky", - "SaveRecordingImagesHelp": "Uložit obrázky elektronického programového průvodce nahrávky spolu s médii." + "SaveRecordingImagesHelp": "Uložit obrázky elektronického programového průvodce nahrávky spolu s médii.", + "HeaderDummyChapter": "Obrázky kapitol", + "LabelDummyChapterDuration": "Rozmezí:", + "LabelDummyChapterDurationHelp": "Rozmezí v sekundách mezi extrakcí obrázků kapitol.", + "LabelDummyChapterCount": "Limit:", + "LabelDummyChapterCountHelp": "Maximální počet obrázků kapitol, který má být vytvořen pro jeden soubor médií.", + "LabelChapterImageResolution": "Rozlišení:", + "LabelChapterImageResolutionHelp": "Rozližení extrahovaných obrázků kapitol.", + "ResolutionMatchSource": "Stejné jako zdroj" } From 4a7cf87bb1d73e9175a9ade8a195e3f706fbf360 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Wed, 8 Feb 2023 15:15:23 +0000 Subject: [PATCH 114/222] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index a214173f7b..282b1f0f8b 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1688,5 +1688,18 @@ "StereoDownmixAlgorithmHelp": "Algoritmus používaný na prevod viackanálového zvuku na stereo.", "Experimental": "Experimentálne", "DownloadAll": "Stiahnuť všetko", - "LabelStereoDownmixAlgorithm": "Algoritmus prevodu na stereo" + "LabelStereoDownmixAlgorithm": "Algoritmus prevodu na stereo", + "HeaderDummyChapter": "Obrázky kapitol", + "LabelDummyChapterDuration": "Interval:", + "LabelDummyChapterCount": "Limit:", + "LabelDummyChapterCountHelp": "Maximálny počet obrázkov kapitol, ktoré budú extrahované pre každý mediálny súbor.", + "LabelChapterImageResolution": "Rozlíšenie:", + "LabelChapterImageResolutionHelp": "Rozlíšenie extrahovaných obrázkov kapitol.", + "ResolutionMatchSource": "Rovnaké ako zdroj", + "SaveRecordingNFOHelp": "Uloží metadáta z EPG položiek sprievodcu spolu s médiami.", + "SaveRecordingImages": "Uložiť obrázky EPG nahrávky", + "LabelDummyChapterDurationHelp": "Interval extrakcie obrázkov kapitol v sekundách.", + "SaveRecordingNFO": "Uložiť metadáta nahrávky zo sprievodcu EPG do NFO", + "SaveRecordingImagesHelp": "Uloží obrázky z EPG položiek sprievodcu spolu s médiami.", + "HeaderRecordingMetadataSaving": "Metadáta nahrávok" } From 4bd9a004cafa96fb864fe5a0fc543d007a4f111d Mon Sep 17 00:00:00 2001 From: blob03 Date: Wed, 8 Feb 2023 18:49:53 +0000 Subject: [PATCH 115/222] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 991ab5f610..d9a383a0f5 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1693,5 +1693,13 @@ "SaveRecordingImagesHelp": "Inclure les images des métadonnées du fournisseur de listes EPG dans l'enregistrement.", "HeaderRecordingMetadataSaving": "Enregistrement des métadonnées", "SaveRecordingNFO": "Enregistrer les métadonnées du fournisseur dans le fichier NFO", - "SaveRecordingImages": "Enregistrer les images des métadonnées du fournisseur" + "SaveRecordingImages": "Enregistrer les images des métadonnées du fournisseur", + "LabelDummyChapterDurationHelp": "Intervalle d’extraction des images de chapitre en secondes.", + "LabelDummyChapterCount": "Limite :", + "LabelChapterImageResolution": "Résolution :", + "LabelChapterImageResolutionHelp": "La résolution des images de chapitre.", + "ResolutionMatchSource": "Résolution de la source", + "HeaderDummyChapter": "Images des chapitres", + "LabelDummyChapterDuration": "Intervalle :", + "LabelDummyChapterCountHelp": "Nombre maximal d’images de chapitre à extraire pour chaque fichier multimédia." } From 017822e89d851099b69088f851d5da4943ed8404 Mon Sep 17 00:00:00 2001 From: felix920506 Date: Wed, 8 Feb 2023 19:42:56 +0000 Subject: [PATCH 116/222] 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 39bd4a125f..cb157541ca 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1687,5 +1687,6 @@ "LabelStereoDownmixAlgorithm": "立體聲混縮算法 (Stereo Downmix Algorithm)", "StereoDownmixAlgorithmHelp": "會將多聲道的音訊混縮為雙聲道的演算法。", "DownloadAll": "下載全部", - "Experimental": "實驗性" + "Experimental": "實驗性", + "HeaderDummyChapter": "章節影像" } From 918a178db1225b0ffa2a7241712592c3ec17f89a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 23:04:13 +0000 Subject: [PATCH 117/222] Update github/codeql-action action to v2.2.3 --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 875cdc954a..a8ab12a611 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -21,11 +21,11 @@ jobs: - name: Checkout repository uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 - name: Initialize CodeQL - uses: github/codeql-action/init@39d8d7e78f59cf6b40ac3b9fbebef0c753d7c9e5 # v2.2.2 + uses: github/codeql-action/init@8775e868027fa230df8586bdf502bbd9b618a477 # v2.2.3 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@39d8d7e78f59cf6b40ac3b9fbebef0c753d7c9e5 # v2.2.2 + uses: github/codeql-action/autobuild@8775e868027fa230df8586bdf502bbd9b618a477 # v2.2.3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@39d8d7e78f59cf6b40ac3b9fbebef0c753d7c9e5 # v2.2.2 + uses: github/codeql-action/analyze@8775e868027fa230df8586bdf502bbd9b618a477 # v2.2.3 From 26e7ddc9e43a894779ab457a239ed33343d24509 Mon Sep 17 00:00:00 2001 From: Oskari Lavinto Date: Thu, 9 Feb 2023 09:23:47 +0000 Subject: [PATCH 118/222] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 4f7af2ac05..84c1174a84 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1686,5 +1686,13 @@ "SaveRecordingNFO": "Tallenna tallenteen ohjelmaoppaan metatiedot NFO-tiedostoon", "SaveRecordingNFOHelp": "Tallenna ohjelmaoppaan tietolähteen metatiedot mediatiedoston oheen.", "SaveRecordingImages": "Tallenna tallenteen ohjelmaoppaan kuvat", - "SaveRecordingImagesHelp": "Tallenna ohjelmaoppaan tietolähteen kuvat mediatiedoston oheen." + "SaveRecordingImagesHelp": "Tallenna ohjelmaoppaan tietolähteen kuvat mediatiedoston oheen.", + "HeaderDummyChapter": "Kappalekuvat", + "LabelDummyChapterDuration": "Aikaväli:", + "LabelDummyChapterDurationHelp": "Kappalekuvien purkuväli sekunteina.", + "LabelDummyChapterCount": "Enimmäismäärä:", + "LabelDummyChapterCountHelp": "Yhdestä mediatiedostosta purettavien kappalekuvien enimmäismäärä.", + "LabelChapterImageResolution": "Resoluutio:", + "LabelChapterImageResolutionHelp": "Purettujen kappalekuvien resoluutio.", + "ResolutionMatchSource": "Vastaa lähdettä" } From 470c2bb85acaa0fe08b42373120955925d9ca649 Mon Sep 17 00:00:00 2001 From: chowhi123 Date: Thu, 9 Feb 2023 09:15:44 +0000 Subject: [PATCH 119/222] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 67d5f98b07..1033f15b4a 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -742,7 +742,7 @@ "Sports": "스포츠", "SortChannelsBy": "채널 정렬:", "SortByValue": "{0} 정렬", - "Sort": "정리", + "Sort": "정렬", "SkipEpisodesAlreadyInMyLibrary": "이미 라이브러리에 있는 에피소드는 녹화 안 함", "SimultaneousConnectionLimitHelp": "최대 동시 스트림 갯수. 0은 제한없음입니다.", "Shuffle": "셔플", @@ -1471,7 +1471,7 @@ "LabelSSDPTracingFilterHelp": "기록된 SSDP 트래픽을 필터링할 선택적 IP 주소입니다.", "LabelSSDPTracingFilter": "SSDP 필터:", "LabelSlowResponseTime": "응답이 느린 것으로 간주되는 시간(ms):", - "LabelSlowResponseEnabled": "서버 응답이 느릴 경우 경고로그 기록", + "LabelSlowResponseEnabled": "서버 응답이 느릴 경우 경고 로그 기록", "LabelPublishedServerUriHelp": "인터페이스 또는 클라이언트 IP 주소를 기반으로 Jellyfin에서 사용하는 URI를 설정합니다.", "LabelPublishedServerUri": "공개 서버 URI:", "HeaderContinueReading": "계속 읽기", @@ -1592,5 +1592,16 @@ "EnableCardLayout": "CardBox 보이기", "LabelStereoDownmixAlgorithm": "스테레오 다운믹스 알고리즘", "Experimental": "실험실", - "DownloadAll": "전부 다운로드" + "DownloadAll": "전부 다운로드", + "LabelDummyChapterCountHelp": "미디어 파일에서 챕터 이미지를 추출할 최대 수.", + "LabelSyncPlaySettingsSyncCorrectionHelp": "미디어의 속도를 빠르게 하거나 재생 위치를 추정하여 재생 액티브 동기화를 활성화. 많이 끊기면 비활성화.", + "LabelSyncPlaySettingsMinDelaySkipToSync": "넘겨서 동기화 최소 딜레이:", + "HeaderDummyChapter": "챕터 이미지", + "LabelDummyChapterDuration": "간격:", + "LabelDummyChapterDurationHelp": "챕터 이미지 추출 간격은 초입니다.", + "LabelDummyChapterCount": "제한:", + "LabelChapterImageResolution": "화질:", + "LabelChapterImageResolutionHelp": "추출된 챕터 이미지의 화질.", + "LabelSyncPlaySettingsSpeedToSyncDuration": "동기화 속도 지속시간:", + "HeaderRecordingMetadataSaving": "메타데이터 녹화하기" } From 71321bc026988952bee82be326ff94f46bc01fb9 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Thu, 9 Feb 2023 07:25:19 +0000 Subject: [PATCH 120/222] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 3410d0be96..0332485bae 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1510,7 +1510,7 @@ "Framerate": "Tỷ lệ khung hình", "DirectPlayHelp": "Tệp nguồn hoàn toàn tương thích với ứng dụng khách này và phiên đang nhận tệp mà không có sửa đổi.", "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.", + "EnableGamepadHelp": "Nghe đầu vào từ bất kỳ bộ điều khiển được kết nối nào. (Yêu cầu: Chế độ hiển thị 'TV')", "LabelEnableGamepad": "Bật Tay Cầm Chơi Game", "Controls": "Điều khiển", "TextSent": "Đã gửi văn bản.", @@ -1680,5 +1680,16 @@ "Experimental": "Trải nghiệm", "DownloadAll": "Tải Xuống Tất Cả", "LabelStereoDownmixAlgorithm": "Thuật Toán Trộn Âm Thanh Nổi", - "StereoDownmixAlgorithmHelp": "Thuật toán được sử dụng để trộn âm thanh đa kênh thành âm thanh nổi." + "StereoDownmixAlgorithmHelp": "Thuật toán được sử dụng để trộn âm thanh đa kênh thành âm thanh nổi.", + "LabelDummyChapterDurationHelp": "Khoảng thời gian trích xuất hình ảnh phân đoạn tính bằng giây.", + "LabelChapterImageResolutionHelp": "Độ phân giải của hình ảnh phân đoạn trích xuất.", + "SaveRecordingNFO": "Lưu bản ghi dữ liệu mô tả EPG trong NFO", + "SaveRecordingImagesHelp": "Lưu hình ảnh từ nhà cung cấp danh sách EPG bên cạnh phương tiện.", + "LabelDummyChapterDuration": "Khoảng thời gian:", + "LabelDummyChapterCount": "Giới hạn:", + "LabelDummyChapterCountHelp": "Số lượng hình ảnh phân đoạn tối đa sẽ được trích xuất cho mỗi tệp phương tiện.", + "LabelChapterImageResolution": "Độ phân giải:", + "ResolutionMatchSource": "Giống Như Nguồn", + "SaveRecordingNFOHelp": "Lưu dữ liệu mô tả từ nhà cung cấp danh sách EPG bên cạnh phương tiện.", + "SaveRecordingImages": "Lưu bản ghi hình ảnh EPG" } From 2ee453855a20459802d63e25594dd3bb63d6ae5b Mon Sep 17 00:00:00 2001 From: Andi Chandler Date: Fri, 10 Feb 2023 00:03:47 +0000 Subject: [PATCH 121/222] 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 | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 529fc0ff28..e92ec7aea9 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1688,5 +1688,18 @@ "DownloadAll": "Download All", "Experimental": "Experimental", "LabelStereoDownmixAlgorithm": "Stereo Downmix Algorithm", - "StereoDownmixAlgorithmHelp": "Algorithm used to downmix multi-channel audio to stereo." + "StereoDownmixAlgorithmHelp": "Algorithm used to downmix multi-channel audio to stereo.", + "LabelDummyChapterDuration": "Interval:", + "LabelDummyChapterCountHelp": "The maximum number of chapter images that will be extracted for each media file.", + "HeaderRecordingMetadataSaving": "Recording Metadata", + "SaveRecordingNFOHelp": "Save metadata from EPG listings provider along side media.", + "SaveRecordingImages": "Save recording EPG images", + "SaveRecordingImagesHelp": "Save images from EPG listings provider along side media.", + "HeaderDummyChapter": "Chapter Images", + "LabelDummyChapterDurationHelp": "The chapter image extraction interval in seconds.", + "LabelDummyChapterCount": "Limit:", + "LabelChapterImageResolution": "Resolution:", + "LabelChapterImageResolutionHelp": "The resolution of the extracted chapter images.", + "ResolutionMatchSource": "Match Source", + "SaveRecordingNFO": "Save recording EPG metadata in NFO" } From 2b86fb31b2f3e11a22ba6a9e5673741a2e3d17d5 Mon Sep 17 00:00:00 2001 From: Kamil Dzierbicki Date: Fri, 10 Feb 2023 12:49:43 +0000 Subject: [PATCH 122/222] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index 5d4a55c17f..ace38a17b4 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1688,5 +1688,18 @@ "DownloadAll": "Pobierz wszystko", "Experimental": "Eksperymentalne", "LabelStereoDownmixAlgorithm": "Algorytm Stereo Downmix", - "StereoDownmixAlgorithmHelp": "Algorytm używany do miksowania wielokanałowego dźwięku do stereo." + "StereoDownmixAlgorithmHelp": "Algorytm używany do miksowania wielokanałowego dźwięku do stereo.", + "LabelDummyChapterCountHelp": "Maksymalna liczba obrazów rozdziałów, które zostaną wyodrębnione dla każdego pliku multimedialnego.", + "SaveRecordingNFOHelp": "Zapisz metadane od dostawcy list EPG wraz z mediami.", + "HeaderDummyChapter": "Obrazy rozdziału", + "LabelDummyChapterDuration": "Interwał:", + "LabelDummyChapterDurationHelp": "Interwał ekstrakcji obrazu rozdziału w sekundach.", + "LabelDummyChapterCount": "Limit:", + "LabelChapterImageResolution": "Rozdzielczość:", + "LabelChapterImageResolutionHelp": "Rozdzielczość wyodrębnionych obrazów rozdziałów.", + "ResolutionMatchSource": "Źródło dopasowania", + "SaveRecordingNFO": "Zapisz nagrane metadane EPG w NFO", + "SaveRecordingImages": "Zapisywanie obrazów EPG", + "SaveRecordingImagesHelp": "Zapisz obrazy od dostawcy list EPG razem z mediami.", + "HeaderRecordingMetadataSaving": "Nagrywanie metadanych" } From 26f0dbd17dfc465a0007dd32dac6a8375197a217 Mon Sep 17 00:00:00 2001 From: Giuseppe Magliano Date: Fri, 10 Feb 2023 17:48:41 +0000 Subject: [PATCH 123/222] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index 2b722b95b6..1a325f784e 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -250,7 +250,7 @@ "HeaderDeleteDevice": "Elimina dispositivo", "HeaderDeleteItem": "Elimina Elemento", "HeaderDeleteItems": "Elimina Elementi", - "HeaderDeleteProvider": "eliminare Provider", + "HeaderDeleteProvider": "Eliminare Provider", "HeaderDeleteTaskTrigger": "Elimina Operazione pianificata", "HeaderDetectMyDevices": "Rileva i miei dispositivi", "HeaderDeveloperInfo": "Info sviluppatore", From e010c170220a69cf65a53c6f9cbf39378a4c78d3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Feb 2023 19:58:27 +0000 Subject: [PATCH 124/222] Update github/codeql-action action to v2.2.4 --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a8ab12a611..9162d3ca71 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -21,11 +21,11 @@ jobs: - name: Checkout repository uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 - name: Initialize CodeQL - uses: github/codeql-action/init@8775e868027fa230df8586bdf502bbd9b618a477 # v2.2.3 + uses: github/codeql-action/init@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@8775e868027fa230df8586bdf502bbd9b618a477 # v2.2.3 + uses: github/codeql-action/autobuild@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@8775e868027fa230df8586bdf502bbd9b618a477 # v2.2.3 + uses: github/codeql-action/analyze@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 From 16e51aa3196b4ddda6d4d2681913bcb626c0989c Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@users.noreply.github.com> Date: Fri, 10 Feb 2023 22:34:20 -0500 Subject: [PATCH 125/222] Convert if/else add/remove statements to toggle Co-authored-by: Bill Thornton --- .../libraryoptionseditor/libraryoptionseditor.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 1991e0f198..877b781a25 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -368,11 +368,7 @@ import template from './libraryoptionseditor.template.html'; parent.querySelector('.imageFetchers').addEventListener('click', onImageFetchersContainerClick); parent.querySelector('#chkEnableEmbeddedTitles').addEventListener('change', (e) => { - if (e.currentTarget.checked) { - parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.remove('hide'); - } else { - parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.add('hide'); - } + parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.toggle('hide', !e.currentTarget.checked); }); } @@ -593,11 +589,7 @@ import template from './libraryoptionseditor.template.html'; parent.querySelector('#chkSaveLocal').checked = options.SaveLocalMetadata; parent.querySelector('.chkAutomaticallyGroupSeries').checked = options.EnableAutomaticSeriesGrouping; parent.querySelector('#chkEnableEmbeddedTitles').checked = options.EnableEmbeddedTitles; - if (options.EnableEmbeddedTitles) { - parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.remove('hide'); - } else { - parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.add('hide'); - } + parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.toggle('hide', !options.EnableEmbeddedTitles); parent.querySelector('#chkEnableEmbeddedExtrasTitles').checked = options.EnableEmbeddedExtrasTitles; parent.querySelector('#chkEnableEmbeddedEpisodeInfos').value = options.EnableEmbeddedEpisodeInfos; parent.querySelector('#selectAllowEmbeddedSubtitles').value = options.AllowEmbeddedSubtitles; From a5047b356732bf7f61a18f8e1810e2c50a0f2417 Mon Sep 17 00:00:00 2001 From: Paulius Date: Sat, 11 Feb 2023 10:55:10 +0000 Subject: [PATCH 126/222] Translated using Weblate (Lithuanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lt/ --- src/strings/lt-lt.json | 102 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 93 insertions(+), 9 deletions(-) diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index f25d12d3f6..6ae8ade103 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -437,7 +437,7 @@ "AllLanguages": "Visos kalbos", "AllowMediaConversion": "Leisti medijos konvertavimą", "AllowRemoteAccess": "Leisti nuotolinius prisijungimus prie šio Jellyfin serverio", - "AnyLanguage": "Bet Kokia Kalba", + "AnyLanguage": "Bet kuri kalba", "Artists": "Atlikėjai", "Audio": "Garsas", "Auto": "Automatinis", @@ -495,7 +495,7 @@ "AirDate": "Išleidimo data", "Aired": "Išleista", "AllowOnTheFlySubtitleExtraction": "Leisti subtitrų ištraukimą grojimo metu", - "AlwaysPlaySubtitlesHelp": "Subtitrai atitinkantys kalbos parinktį bus visada užkraunami nepaisant garso takelio kalbos.", + "AlwaysPlaySubtitlesHelp": "Pageidaujamą kalbą atitinkantys subtitrai bus įkelti neatsižvelgiant į garso kalbą.", "AllLibraries": "Visos bibliotekos", "AllowMediaConversionHelp": "Leisti arba uždrausti medijos konvertavimą.", "AlwaysPlaySubtitles": "Visada rodyti subtitrus", @@ -525,7 +525,7 @@ "Ascending": "Didėjančia tvarka", "AllComplexFormats": "Visi Sudėtingi Formatai (ASS, SSA, VobSub, PGS, SUB, IDX, …)", "AllowHWTranscodingHelp": "Leisti imtuvui perkoduoti srautus grojant. Tai gali sumažinti perkodavimus reikalingus serveriui.", - "AuthProviderHelp": "Pasirinkite autentifikavimo paslaugos teikėją šio vartotojo slaptažodžio autentifikavimui.", + "AuthProviderHelp": "Pasirinkite autentifikavimo paslaugų teikėją, kuris bus naudojamas šio naudotojo slaptažodžiui autentifikuoti.", "AllowedRemoteAddressesHelp": "IP adresų atskirtų kableliais sąrašas ar IP/netmask įrašai tinklams, kurie turės teisę prisijungti nuotoliniu būdu. Visi adresai bus leidžiami, jei įrašas tuščias.", "HeaderMyMedia": "Mediateka", "HeaderMyDevice": "Mano įrenginys", @@ -564,7 +564,7 @@ "CopyStreamURLSuccess": "Srauto nuoroda nukopijuota.", "DefaultMetadataLangaugeDescription": "Tai yra numatytieji nustatymai. Jie gali būti keičiami kiekvienai bibliotekai atskirai.", "AllowOnTheFlySubtitleExtractionHelp": "Įterptus subtitrus iš vaizdo įrašo galima išgauti ir klientams pateikti paprastu tekstu, kad būtų išvengta vaizdo įrašų perkodavimo. Kai kuriose sistemose tai gali užtrukti ilgą laiką ir gali sustabdyti vaizdo atkūrimą subtitrų išgavimo metu. Išjunkite tai, kad subtitrus būtu įrašomi į vaizdo įrašą naudojant perkodavimą, jei jie yra nepalaikomi kliento įrenginio.", - "BurnSubtitlesHelp": "Nustato, ar perkoduojant vaizdo įrašą serveris turėtų įrašyti subtitrus, atsižvelgiant į subtitrų formatą. Išvengiant subtitrų įrašymo gali pagerinti serverio našumą. Pasirinkite „Automatinis“, jei norite įrašyti atvaizdais paremtus formatus (VOBSUB, PGS, SUB, IDX, ...) Ir tam tikrus ASS arba SSA subtitrus.", + "BurnSubtitlesHelp": "Nustatykite, ar transkoduodamas vaizdo įrašus serveris turėtų įrašyti subtitrus. Jei to išvengsite, labai pagerės našumas. Pasirinkite Auto (automatinis), kad įrašytumėte vaizdų formatais (VobSub, PGS, SUB, IDX ir t. t.) ir tam tikrais ASS arba SSA subtitrais.", "DefaultSubtitlesHelp": "Subtitrai įkeliami atsižvelgiant į numatytuosius ir priverstinius žymenis įterptuose metaduomenyse. Kalbos nustatymai įvertinami, kai yra keletas variantų.", "HeaderDeleteProvider": "Ištrinti paslaugos teikėją", "HeaderDeleteTaskTrigger": "Ištrinti užduoties trigerį", @@ -838,7 +838,7 @@ "ClientSettings": "Kliento Nustatymai", "ButtonTogglePlaylist": "Grojaraštis", "ButtonSplit": "Skirstyti", - "AskAdminToCreateLibrary": "Prašyti administratoriaus, kad sukurtų mediateka.", + "AskAdminToCreateLibrary": "Paprašykite administratoriaus sukurti biblioteką.", "Album": "Albumas", "ButtonSyncPlay": "SyncPlay", "MusicVideos": "Muzikiniai vaizdo įrašai", @@ -977,9 +977,9 @@ "Cursive": "Kursyvus", "ButtonSpace": "Tarpas", "ButtonActivate": "Aktyvuoti", - "AllowFfmpegThrottlingHelp": "Kai perkodavimas arba \"remux\" pakankamai užkrovęs į priekį nuo dabartinės atkūrimo padėties, pristabdykite procesą, kad sunaudotų mažiau išteklių. Tai labiausiai naudinga, kai žiūrite dažnai nekeisdami rodymo pozicijos. Išjunkite tai, jei kyla atkūrimo problemų.", - "AllowTonemappingHelp": "Tonų atvaizdavimas gali pakeisti vaizdo įrašo dinaminį diapazoną iš HDR į SDR, kartu išsaugant vaizdo detales ir spalvas, kurios yra labai svarbi informacija, vaizduojant originalią sceną. Šiuo metu veikia tik su HDR10 arba HLG vaizdo įrašais. Tam reikalingas atitinkamas OpenCL arba CUDA vykdymo laikas.", - "Arranger": "Aranžuotojas", + "AllowFfmpegThrottlingHelp": "Kai perkodavimas arba pakartotinis atkodavimas (Remux) yra pakankamai toli nuo dabartinės atkūrimo pozicijos, pristabdykite procesą, kad jis sunaudotų mažiau išteklių. Tai naudingiausia žiūrint be dažno persukimo. Išjunkite šią funkciją, jei kyla atkūrimo problemų.", + "AllowTonemappingHelp": "Tonų atvaizdavimas gali pakeisti vaizdo įrašo dinaminį diapazoną iš HDR į SDR, išlaikant vaizdo detales ir spalvas, kurios yra labai svarbi informacija, kad būtų galima atvaizduoti pradinę sceną. Šiuo metu veikia tik su HDR10 arba HLG vaizdo įrašais. Tam reikia atitinkamos \"OpenCL\" arba CUDA paleidimo programos.", + "Arranger": "Organizatorius", "EnableBlurHashHelp": "Vaizdai, kurie vis dar įkeliami, bus rodomi su unikalia rezervuota vieta.", "EnableDetailsBannerHelp": "Rodyti reklamjuostės vaizdą elemento išsamios informacijos puslapio viršuje.", "EnableCardLayout": "Rodyti vizualinį CardBox", @@ -1047,5 +1047,89 @@ "Metadata": "Metaduomenys", "OptionSaveMetadataAsHidden": "Išsaugoti metaduomenis ir vaizdus kaip paslėptus failus", "PinCodeResetConfirmation": "Ar tikrai norite iš naujo nustatyti \"Easy PIN\" kodą?", - "LabelScreensaver": "Ekrano užsklanda:" + "LabelScreensaver": "Ekrano užsklanda:", + "LabelAutoDiscoveryTracingHelp": "Kai ši funkcija įjungta, automatinio aptikimo prievadu gauti paketai bus registruojami.", + "LabelBaseUrlHelp": "", + "LabelBindToLocalNetworkAddressHelp": "Pakeiskite vietinį HTTP serverio IP adresą. Jei paliekama tuščia, serveris bus susietas su visais prieinamais adresais. Keičiant šią reikšmę reikia iš naujo paleisti serverį.", + "LabelEnableHttpsHelp": "Klausykitės sukonfigūruotame HTTPS prievade. Taip pat turi būti pateiktas galiojantis sertifikatas, kad tai įsigaliotų.", + "LabelExtractChaptersDuringLibraryScanHelp": "Generuoti skyrių vaizdus, kai bibliotekos skenavimo metu importuojami vaizdo įrašai. Priešingu atveju jie bus išskirti atliekant suplanuotą skyrių vaizdų užduotį, todėl įprastas bibliotekos skenavimas bus baigtas greičiau.", + "LabelIconMaxWidth": "Didžiausias piktogramos plotis:", + "LabelCreateHttpPortMap": "Įjunkite automatinį prievadų atvaizdavimą HTTP ir HTTPS srautui.", + "LabelCustomDeviceDisplayNameHelp": "Nurodykite pasirinktinį rodomą pavadinimą arba palikite tuščią laukelį, kad būtų naudojamas prietaiso pateiktas pavadinimas.", + "LabelEnableSSDPTracing": "Įjungti SSDP sekimą:", + "LabelEnableSingleImageInDidlLimitHelp": "Kai kurie įrenginiai netinkamai atvaizduoja, jei DIDL yra įterpti keli vaizdai.", + "LabelffmpegPathHelp": "Kelias iki FFmpeg programos failo arba aplanko, kuriame yra FFmpeg.", + "LabelFont": "Šriftas:", + "LabelFolder": "Aplankas:", + "LabelFormat": "Formatas:", + "LabelForgotPasswordUsernameHelp": "Įveskite savo vartotojo vardą, jei jį prisimenate.", + "LabelH265Crf": "H.265 kodavimo CRF:", + "LabelHardwareAccelerationType": "Techninės įrangos spartinimas:", + "LabelHDHomerunPortRangeHelp": "Apriboja HDHomeRun UDP prievadų diapazoną šia verte. (Numatytoji reikšmė yra 1024 - 645535).", + "LabelHDHomerunPortRange": "HDHomeRun prievadų diapazonas:", + "LabelImageType": "Vaizdo tipas:", + "LabelIconMaxHeight": "Didžiausias piktogramos aukštis:", + "LabelIconMaxResHelp": "Didžiausia piktogramų, pateikiamų per savybę \"upnp:icon\", skiriamoji geba.", + "LabelImageFetchersHelp": "Įjunkite pageidaujamus vaizdų atrinkimo įrenginius ir išdėliokite juos pagal svarbą.", + "LabelFileOrUrl": "Failas arba URL:", + "LabelAlbumArtMaxResHelp": "Didžiausia albumo apipavidalinimo, pateikiamo per savybę \"upnp:albumArtURI\", skiriamoji geba.", + "LabelAutomaticDiscovery": "Įjungti automatinį atradimą:", + "LabelDisableCustomCss": "Išjunkite iš serverio pateiktą pasirinktinį CSS kodą, skirtą temoms ir (arba) prekės ženklams kurti.", + "LabelDroppedFrames": "Pamesti kadrai:", + "LabelEnableIP4": "Įjungti IPv4", + "LabelHardwareEncoding": "Techninės įrangos kodavimas:", + "LabelHomeNetworkQuality": "Namų tinklo kokybė:", + "LabelIdentificationFieldHelp": "Didžiųjų ir mažųjų raidžių neribojanti dalinė eilutė arba regex išraiška.", + "LabelAutoDiscoveryTracing": "Įjungti automatinio atradimo sekimą.", + "LabelAutomaticallyAddToCollectionHelp": "Jei bent 2 filmai turi tą patį kolekcijos pavadinimą, jie bus automatiškai įtraukti į kolekciją.", + "LabelDisplaySpecialsWithinSeasons": "Rodyti specialiąsias programas pagal sezonus, kuriuose jos buvo rodomos", + "LabelDownMixAudioScale": "Garso stiprinimas:", + "LabelEnableHttps": "Įjungti HTTPS", + "LabelEnableSSDPTracingHelp": "Įjungti išsamios informacijos SSDP tinklo sekimo registravimą.
WARNING: Dėl to labai pablogės našumas.", + "LabelEncoderPreset": "Kodavimo išankstinis nustatymas:", + "LabelColorTransfer": "Spalvų perdavimas:", + "LabelCreateHttpPortMapHelp": "Leisti automatinį prievadų atvaizdavimą, kad būtų sukurta taisyklė ne tik HTTPS, bet ir HTTP srautui.", + "LabelH264Crf": "H.264 kodavimo CRF:", + "LabelffmpegPath": "FFmpeg kelias:", + "LabelDropSubtitleHere": "Įdėkite subtitrą čia arba spustelėkite norėdami naršyti.", + "AllowFfmpegThrottling": "Perkodavimo ribojimas", + "EnableRewatchingNextUp": "Įgalinti pakartotinį žiūrėjimą programoje", + "EnableRewatchingNextUpHelp": "Įgalinti jau žiūrėtų epizodų rodymą skyreliuose \"Next Up\".", + "EnableTonemapping": "Įjungti tonų atvaizdavimą", + "LabelChromecastVersion": "\"Google Cast\" versija", + "LabelColorPrimaries": "Pirminės spalvos:", + "LabelColorSpace": "Spalvų erdvė:", + "HomeVideosPhotos": "Vaizdo įrašai ir nuotraukos", + "LabelCustomCertificatePathHelp": "Kelias į PKCS #12 failą, kuriame yra sertifikatas ir privatus raktas, kad būtų galima įjungti TLS palaikymą pasirinktiniame domene.", + "GoogleCastUnsupported": "\"Google Cast\" nepalaikoma", + "LabelEnableIP6": "Įjungti IPv6", + "EnableQuickConnect": "Įjungti greitąjį prisijungimą šiame serveryje", + "DeinterlaceMethodHelp": "Pasirinkite pertempimo panaikinimo metodą, kuris bus naudojamas programiškai perkoduojant pertemptą turinį. Kai įjungtas aparatinis pagreitinimas, palaikantis aparatinį pervertimo panaikinimą, vietoj šio nustatymo bus naudojamas aparatinis pervertimo panaikinimas.", + "LabelStereoDownmixAlgorithm": "Stereomiksavimo žemyn algoritmas", + "LabelHomeScreenSectionValue": "Pagrindinis ekrano skyrius {0}:", + "Experimental": "Eksperimentinis", + "DownloadAll": "Atsisiųsti viską", + "Engineer": "Garso inžinierius", + "HeaderDummyChapter": "Skyrių vaizdai", + "IgnoreDts": "Ignoruoti DTS (dekodavimo laiko žyma)", + "IgnoreDtsHelp": "Išjungus šią parinktį gali būti išspręstos kai kurios problemos, pvz., dingti garsas kanaluose su atskirais garso ir vaizdo srautais.", + "KnownProxiesHelp": "Kableliais atskirtas žinomų tarpinių serverių, naudojamų jungiantis prie \"Jellyfin\" egzemplioriaus, IP adresų arba prieglobos vardų sąrašas. To reikia, kad būtų tinkamai naudojamos \"X-Forwarded-For\" antraštės. Išsaugojus reikia iš naujo paleisti serverį.", + "LabelAutomaticDiscoveryHelp": "Leiskite programoms automatiškai aptikti \"Jellyfin\" naudojant UDP prievadą 7359.", + "LabelBaseUrl": "Bazinis URL adresas:", + "LabelDummyChapterDuration": "Intervalas:", + "LabelDummyChapterDurationHelp": "Skyriaus vaizdo išgavimo intervalas sekundėmis.", + "LabelDummyChapterCount": "Riba:", + "LabelDummyChapterCountHelp": "Didžiausias skyrių vaizdų, kurie bus išskirti iš kiekvieno medijos failo, skaičius.", + "LabelChapterImageResolution": "Rezoliucija:", + "LabelChapterImageResolutionHelp": "Išskirtų skyrių vaizdų skiriamoji geba.", + "LabelEnableIP4Help": "Įjunkite IPv4 funkciją.", + "LabelEnableIP6Help": "Įjunkite IPv6 funkciją.", + "LabelExtractChaptersDuringLibraryScan": "Skyrių vaizdų išskyrimas bibliotekos skenavimo metu", + "LabelHardwareAccelerationTypeHelp": "Greitintuvui reikia papildomos konfigūracijos.", + "HeaderRecordingMetadataSaving": "Metaduomenų įrašymas", + "LabelDateAddedBehavior": "Pridėta naujo turinio elgsena:", + "LabelDateAddedBehaviorHelp": "Jei yra metaduomenų reikšmė, ji visada bus naudojama prieš bet kurią iš šių parinkčių.", + "LabelDefaultUserHelp": "Nustatykite, kuri naudotojo biblioteka turėtų būti rodoma prijungtuose įrenginiuose. Tai galima pakeisti kiekvienam įrenginiui naudojant profilius.", + "LabelDeinterlaceMethod": "Pertempimo panaikinimo metodas:", + "LabelDownMixAudioScaleHelp": "Jei reikšmė lygi vienetui, bus išsaugotas originalus garsumas." } From 4d57350502013db180c23be54d0f69f58e041930 Mon Sep 17 00:00:00 2001 From: Marcus Borking Date: Sat, 11 Feb 2023 10:31:40 +0000 Subject: [PATCH 127/222] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 85f9b9d64e..4f52dcb51b 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1528,7 +1528,7 @@ "SubtitleCodecNotSupported": "Undertextkodeken stöds ej", "ContainerNotSupported": "Videobehållaren stöds ej", "AudioCodecNotSupported": "Ljudkodeken stöds ej", - "EnableGamepadHelp": "Leta efter inmatning från vilken ansluten kontroller som helst.", + "EnableGamepadHelp": "Leta efter inmatning från vilken ansluten kontroller som helst. (Kräver: 'TV' Visningsläge)", "LabelEnableGamepad": "Aktivera Gamepad", "Controls": "Kontroller", "UseEpisodeImagesInNextUpHelp": "Sektionerna \"Nästa på tur\" och \"Fortsätt titta på\" kommer att använda avsnittsbilder som miniatyrbilder istället för den primära miniatyrbilden för serien.", @@ -1687,5 +1687,18 @@ "DownloadAll": "Ladda ned alla", "StereoDownmixAlgorithmHelp": "Algoritm använd för att nedmixa multi-kanalig ljud till stereo.", "Experimental": "Experimentell", - "LabelStereoDownmixAlgorithm": "Stereo-nedmixalgoritm" + "LabelStereoDownmixAlgorithm": "Stereo-nedmixalgoritm", + "ResolutionMatchSource": "Matcha Källa", + "SaveRecordingNFO": "Spara inspelningens EPG metadata i NFO", + "SaveRecordingNFOHelp": "Spara metadata från EPG-listningsleverantören tillsammans med media.", + "SaveRecordingImages": "Spara EPG-bilder för inspelningar", + "SaveRecordingImagesHelp": "Spara bilder från EPG-listningsleverantören tillsammans med media.", + "HeaderDummyChapter": "Kapitelbilder", + "LabelDummyChapterDuration": "Intervall :", + "LabelDummyChapterDurationHelp": "Tid mellan insamling av kapitelbilder i sekunder.", + "LabelDummyChapterCount": "Gräns:", + "LabelDummyChapterCountHelp": "Största antal kapitelbilder som kommer hämtas in för varje enskild mediafil.", + "LabelChapterImageResolution": "Upplösning:", + "LabelChapterImageResolutionHelp": "Upplösning för inhämtade kapitelbilder.", + "HeaderRecordingMetadataSaving": "Metadata för inspelning" } From 8506d8947cbf3a58249ca641a876b5b7705d477d Mon Sep 17 00:00:00 2001 From: Bhavish B S <75534159+bhvsh@users.noreply.github.com> Date: Sat, 11 Feb 2023 17:24:06 +0530 Subject: [PATCH 128/222] Updated 'Latest' sections as per #4273 --- src/strings/en-gb.json | 18 +++++++++--------- src/strings/en-us.json | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index e92ec7aea9..969b5a1463 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -189,7 +189,7 @@ "Disconnect": "Disconnect", "Display": "Display", "DisplayInMyMedia": "Display on home screen", - "DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Latest Media' and 'Continue Watching'", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Recently Added Media' and 'Continue Watching'", "DisplayMissingEpisodesWithinSeasons": "Display missing episodes within their series", "DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in the server configuration.", "DisplayModeHelp": "Select the layout style you want for the interface.", @@ -332,11 +332,11 @@ "HeaderKeepRecording": "Keep Recording", "HeaderKeepSeries": "Keep Programme", "HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and find the 'Metadata savers' section.", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderLatestMedia": "Latest Media", - "HeaderLatestMovies": "Latest Films", - "HeaderLatestMusic": "Latest Music", - "HeaderLatestRecordings": "Latest Recordings", + "HeaderLatestEpisodes": "Recently Added Episodes", + "HeaderLatestMedia": "Recently Added Media", + "HeaderLatestMovies": "Recently Added Films", + "HeaderLatestMusic": "Recently Added Music", + "HeaderLatestRecordings": "Recently Added Recordings", "HeaderLibraries": "Libraries", "HeaderLibraryAccess": "Library Access", "HeaderLibraryFolders": "Library Folders", @@ -751,7 +751,7 @@ "MediaInfoCodec": "Codec", "ManageRecording": "Manage recording", "LiveTV": "Live TV", - "LatestFromLibrary": "Latest {0}", + "LatestFromLibrary": "Recently Added in {0}", "Large": "Large", "LabelZipCode": "Postcode:", "LabelYoureDone": "You're Done!", @@ -817,7 +817,7 @@ "TabPlugins": "Plugins", "TabNfoSettings": "NFO Settings", "TabNetworking": "Networking", - "TabLatest": "Latest", + "TabLatest": "Recently Added", "TabDashboard": "Dashboard", "TabContainers": "Containers", "TabCodecs": "Codecs", @@ -1029,7 +1029,7 @@ "Identify": "Identify", "Horizontal": "Horizontal", "Home": "Home", - "HideWatchedContentFromLatestMedia": "Hide watched content from 'Latest Media'", + "HideWatchedContentFromLatestMedia": "Hide watched content from 'Recently Added Media'", "Hide": "Hide", "Help": "Help", "HeaderXmlSettings": "XML Settings", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index dcad9de015..6c135b2712 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -199,7 +199,7 @@ "Disconnect": "Disconnect", "Display": "Display", "DisplayInMyMedia": "Display on home screen", - "DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Latest Media' and 'Continue Watching'", + "DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Recently Added Media' and 'Continue Watching'", "DisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", "DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in the server configuration.", "DisplayModeHelp": "Select the layout style you want for the interface.", @@ -387,11 +387,11 @@ "HeaderKeepRecording": "Keep Recording", "HeaderKeepSeries": "Keep Series", "HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and find the 'Metadata savers' section.", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderLatestMedia": "Latest Media", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestMusic": "Latest Music", - "HeaderLatestRecordings": "Latest Recordings", + "HeaderLatestEpisodes": "Recently Added Episodes", + "HeaderLatestMedia": "Recently Added Media", + "HeaderLatestMovies": "Recently Added Movies", + "HeaderLatestMusic": "Recently Added Music", + "HeaderLatestRecordings": "Recently Added Recordings", "HeaderLibraries": "Libraries", "HeaderLibraryAccess": "Library Access", "HeaderLibraryFolders": "Library Folders", @@ -503,7 +503,7 @@ "HeaderYears": "Years", "Help": "Help", "Hide": "Hide", - "HideWatchedContentFromLatestMedia": "Hide watched content from 'Latest Media'", + "HideWatchedContentFromLatestMedia": "Hide watched content from 'Recently Added Media'", "Home": "Home", "HomeVideosPhotos": "Home Videos and Photos", "Horizontal": "Horizontal", @@ -993,7 +993,7 @@ "Large": "Large", "Larger": "Larger", "LastSeen": "Last seen {0}", - "LatestFromLibrary": "Latest {0}", + "LatestFromLibrary": "Recently Added in {0}", "LearnHowYouCanContribute": "Learn how you can contribute.", "LeaveBlankToNotSetAPassword": "You can leave this field blank to set no password.", "LibraryAccessHelp": "Select the libraries to share with this user. Administrators will be able to edit all folders using the metadata manager.", @@ -1476,7 +1476,7 @@ "TabContainers": "Containers", "TabDashboard": "Dashboard", "TabDirectPlay": "Direct Playback", - "TabLatest": "Latest", + "TabLatest": "Recently Added", "TabLogs": "Logs", "TabMusic": "Music", "TabMyPlugins": "My Plugins", From 0c583b5b10e17d0d4908f3075c52a3042b765db6 Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@gmail.com> Date: Sat, 11 Feb 2023 11:29:38 -0500 Subject: [PATCH 129/222] Fix indentation --- src/components/libraryoptionseditor/libraryoptionseditor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 877b781a25..2272aac93b 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -589,7 +589,7 @@ 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('.chkEnableEmbeddedExtrasTitlesContainer').classList.toggle('hide', !options.EnableEmbeddedTitles); + parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.toggle('hide', !options.EnableEmbeddedTitles); parent.querySelector('#chkEnableEmbeddedExtrasTitles').checked = options.EnableEmbeddedExtrasTitles; parent.querySelector('#chkEnableEmbeddedEpisodeInfos').value = options.EnableEmbeddedEpisodeInfos; parent.querySelector('#selectAllowEmbeddedSubtitles').value = options.AllowEmbeddedSubtitles; From 653b0204b3e592ef1a8fed2bdcad6df786030c66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Sat, 11 Feb 2023 16:52:29 +0000 Subject: [PATCH 130/222] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 5cd79652f6..8bb742f1cb 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -242,11 +242,11 @@ "HeaderInstantMix": "Rychlý mix", "HeaderKeepRecording": "Udržet nahrávání", "HeaderKeepSeries": "Udržet seriál", - "HeaderLatestEpisodes": "Nejnovější díly", - "HeaderLatestMedia": "Nejnovější média", - "HeaderLatestMovies": "Nejnovější filmy", - "HeaderLatestMusic": "Nejnovější hudba", - "HeaderLatestRecordings": "Nejnovější nahrávky", + "HeaderLatestEpisodes": "Nedávno přidané díly", + "HeaderLatestMedia": "Nedávno přidaná média", + "HeaderLatestMovies": "Nedávno přidané filmy", + "HeaderLatestMusic": "Nedávno přidaná hudba", + "HeaderLatestRecordings": "Nedávno přidané nahrávky", "HeaderLibraries": "Knihovny", "HeaderLibraryAccess": "Přístup ke knihovně", "HeaderLibraryFolders": "Složky knihovny", @@ -335,7 +335,7 @@ "HeaderYears": "Roky", "Help": "Nápověda", "Hide": "Skrýt", - "HideWatchedContentFromLatestMedia": "Skrýt zhlédnuté položky v seznamu Nejnovější média", + "HideWatchedContentFromLatestMedia": "Skrýt zhlédnuté položky v seznamu Nedávno přidaná média", "Home": "Domů", "Identify": "Identifikovat", "Images": "Obrázky", @@ -627,7 +627,7 @@ "LabelffmpegPath": "FFmpeg - cesta:", "LabelffmpegPathHelp": "Cesta k souboru aplikace FFmpeg nebo složka obsahující aplikaci FFmpeg.", "Large": "Velký", - "LatestFromLibrary": "Nejnovější {0}", + "LatestFromLibrary": "Nedávno přidáno v knihovně {0}", "LearnHowYouCanContribute": "Zjistěte, jak můžete přispět.", "LibraryAccessHelp": "Vyberte knihovny, které chcete sdílet s tímto uživatelem. Administrátoři budou moci editovat všechny složky pomocí Správce metadat.", "List": "Seznam", @@ -937,7 +937,7 @@ "TabCodecs": "Kodeky", "TabContainers": "Obaly", "TabDashboard": "Nástěnka", - "TabLatest": "Nejnovější", + "TabLatest": "Nedávno přidáno", "TabLogs": "Záznamy", "TabMusic": "Hudba", "TabMyPlugins": "Moje zásuvné moduly", @@ -1040,7 +1040,7 @@ "DirectStreamHelp2": "Výkon potřebný pro přímé streamování záleží na zvukovém profilu. Pouze video stopa je bezztrátová.", "Directors": "Režiséři", "DisplayInMyMedia": "Zobrazit na domovské obrazovce", - "DisplayInOtherHomeScreenSections": "Zobrazit v sekcích domovské obrazovky, např. v sekcích Nejnovější média nebo Pokračování ve sledování", + "DisplayInOtherHomeScreenSections": "Zobrazit v sekcích domovské obrazovky, např. v sekcích Nedávno přidaná média nebo Pokračování ve sledování", "DownloadsValue": "{0} ke stažení", "EditMetadata": "Upravit metadata", "EnableExternalVideoPlayersHelp": "Při spuštění přehrávání videa se zobrazí nabídka externího přehrávače.", From e4f29e7e6b998ca61fea17201e86a9028f7ee713 Mon Sep 17 00:00:00 2001 From: blob03 Date: Sat, 11 Feb 2023 19:58:45 +0000 Subject: [PATCH 131/222] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index d9a383a0f5..28626a874d 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -294,11 +294,11 @@ "HeaderKeepRecording": "Garder l'enregistrement", "HeaderKeepSeries": "Garder la série", "HeaderKodiMetadataHelp": "Pour activer ou désactiver les métadonnées NFO, ouvrir l'interface de gestion d'une médiathèque et trouver la section 'Formats de métadonnées'.", - "HeaderLatestEpisodes": "Derniers épisodes", + "HeaderLatestEpisodes": "Ajouts récents", "HeaderLatestMedia": "Ajouts récents", - "HeaderLatestMovies": "Derniers films", - "HeaderLatestMusic": "Dernières musiques", - "HeaderLatestRecordings": "Derniers enregistrements", + "HeaderLatestMovies": "Ajouts récents", + "HeaderLatestMusic": "Ajouts récents", + "HeaderLatestRecordings": "Ajouts récents", "HeaderLibraries": "Médiathèques", "HeaderLibraryAccess": "Accès à la médiathèque", "HeaderLibraryFolders": "Dossiers de la médiathèque", @@ -1068,7 +1068,7 @@ "TabContainers": "Conteneurs", "TabDashboard": "Tableau de bord", "TabDirectPlay": "Lecture directe", - "TabLatest": "Derniers", + "TabLatest": "Ajouts récents", "TabLogs": "Journaux", "TabMusic": "Musiques", "TabMyPlugins": "Mes extensions", From 2012b58663657f23ed62813e2e42f46574ff29b4 Mon Sep 17 00:00:00 2001 From: Oskari Lavinto Date: Sun, 12 Feb 2023 01:23:11 +0000 Subject: [PATCH 132/222] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 84c1174a84..35b4abfc95 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -176,7 +176,7 @@ "Disc": "Levy", "Disconnect": "Katkaise yhteys", "DisplayInMyMedia": "Näytä aloitusnäytöllä", - "DisplayInOtherHomeScreenSections": "Näytä aloitusnäytön osiot, kuten 'Uusi media' ja 'Jatka katselua'", + "DisplayInOtherHomeScreenSections": "Näytä aloitusnäytön osiot, kuten 'Viimeksi lisätty media' ja 'Jatka katselua'", "DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa", "DisplayMissingEpisodesWithinSeasonsHelp": "Tämä on aktivoitava sarjakirjastoille myös palvelimen asetuksista.", "DisplayModeHelp": "Valitse ulkonäkö, jonka haluat käyttöliittymälle.", @@ -343,7 +343,7 @@ "LabelAbortedByServerShutdown": "(Keskeytetty palvelimen sammutuksen takia)", "Identify": "Tunnista", "Horizontal": "Horisontaalinen", - "HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö 'Uusi media' -osiosta", + "HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö 'Hiljattain lisätty media' -osiosta", "HeaderUpcomingOnTV": "Tulossa televisiosta", "HeaderTypeImageFetchers": "Kuvien lataajat ({0}):", "HeaderTranscodingProfile": "Transkoodausprofiili", @@ -411,11 +411,11 @@ "HeaderMediaFolders": "Mediakansiot", "HeaderMedia": "Media", "HeaderLibraryFolders": "Kirjaston kansiot", - "HeaderLatestMedia": "Uusi media", - "HeaderLatestRecordings": "Uudet tallenteet", - "HeaderLatestMusic": "Uusi musiikki", - "HeaderLatestMovies": "Uudet elokuvat", - "HeaderLatestEpisodes": "Uudet jaksot", + "HeaderLatestMedia": "Hiljattain lisätty media", + "HeaderLatestRecordings": "Hiljattain lisätyt tallenteet", + "HeaderLatestMusic": "Hiljattain lisätty musiikki", + "HeaderLatestMovies": "Hiljattain lisätyt elokuvat", + "HeaderLatestEpisodes": "Hiljattain lisätyt jaksot", "HeaderInstall": "Asenna", "HeaderFrequentlyPlayed": "Usein toistetut", "HeaderFetcherSettings": "Lataajan asetukset", @@ -562,7 +562,7 @@ "TabMyPlugins": "Omat lisäosat", "TabMusic": "Musiikki", "TabLogs": "Lokit", - "TabLatest": "Uudet", + "TabLatest": "Hiljattain lisätyt", "TabDirectPlay": "Muuntamaton toisto", "TabDashboard": "Hallintapaneeli", "TabCatalog": "Luettelo", @@ -1264,7 +1264,7 @@ "LabelMinAudiobookResumeHelp": "Kohteita pidetään toistamattomina, jos toisto keskeytetään ennen tätä aikaa.", "LabelMaxStreamingBitrate": "Suoratoiston enimmäislaatu:", "MoreFromValue": "Lisää kohteesta {0}", - "LatestFromLibrary": "Uudet '{0}'", + "LatestFromLibrary": "Hiljattain lisätty: '{0}'", "LabelVideoRange": "Videon alue:", "LabelVaapiDeviceHelp": "Tämä on renderöintinoodi, jota käytetään laitteistokiihdytykseen.", "LabelUserRemoteClientBitrateLimitHelp": "Korvaa globaali arvo asetusten kohdasta Ohjauspaneeli > Toisto > Suoratoisto.", @@ -1694,5 +1694,7 @@ "LabelDummyChapterCountHelp": "Yhdestä mediatiedostosta purettavien kappalekuvien enimmäismäärä.", "LabelChapterImageResolution": "Resoluutio:", "LabelChapterImageResolutionHelp": "Purettujen kappalekuvien resoluutio.", - "ResolutionMatchSource": "Vastaa lähdettä" + "ResolutionMatchSource": "Vastaa lähdettä", + "PreferEmbeddedExtrasTitlesOverFileNames": "Suosi lisämateriaaleille upotettuja otsikoita tiedostonimien sijaan", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Lisämateriaaleilla on usein sama otsikko kuin niiden isännällä. Valitse tämä käyttääksesi silti upotettuja otsikoita." } From f89f85b02206cf775316a643601f821aca9e2098 Mon Sep 17 00:00:00 2001 From: hoanghuy309 Date: Sun, 12 Feb 2023 01:29:43 +0000 Subject: [PATCH 133/222] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 0332485bae..ad55122705 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -17,8 +17,8 @@ "HeaderCustomDlnaProfiles": "Hồ sơ khách hàng", "HeaderFeatureAccess": "Truy cập tính năng:", "HeaderFrequentlyPlayed": "Phát thường xuyên", - "HeaderLatestEpisodes": "Tập phim mới nhất", - "HeaderLatestMovies": "Phim Gần Nhất", + "HeaderLatestEpisodes": "Tập Phim Thêm Gần Đây", + "HeaderLatestMovies": "Phim Thêm Gần Đây", "HeaderRecentlyPlayed": "Phát gần đây", "HeaderStatus": "Trạng thái", "HeaderSystemDlnaProfiles": "Hồ sơ hệ thống", @@ -67,7 +67,7 @@ "SettingsSaved": "Lưu các cài đặt.", "Sunday": "Chủ Nhật", "TabCatalog": "Danh mục", - "TabLatest": "Mới nhất", + "TabLatest": "Thêm Gần Đây", "TabMyPlugins": "Plugin Của Tôi", "TabNetworks": "Mạng TV", "TabProfiles": "Hồ sơ", @@ -214,7 +214,7 @@ "Album": "Album", "DisplayMissingEpisodesWithinSeasonsHelp": "Cài đặt này phải được bật cho các thư viện TV trong cấu hình máy chủ.", "DisplayMissingEpisodesWithinSeasons": "Hiển thị những tập phim bị thiếu trong mỗi phần", - "DisplayInOtherHomeScreenSections": "Hiển thị các phần màn hình trang chủ như 'Phương Tiện Mới Nhất' và 'Tiếp Tục Xem'", + "DisplayInOtherHomeScreenSections": "Hiển thị các phần màn hình trang chủ như 'Phương Tiện Thêm Gần Đây' và 'Tiếp Tục Xem'", "DisplayInMyMedia": "Hiển thị trên trang chính", "Display": "Hiển thị", "Disconnect": "Ngắt kết nối", @@ -382,9 +382,9 @@ "HeaderLibraryFolders": "Thư Mục Thư Viện", "HeaderLibraryAccess": "Truy Cập Thư Viện", "HeaderLibraries": "Thư viện", - "HeaderLatestRecordings": "Bản Ghi Âm/Ghi Hình Mới Nhất", - "HeaderLatestMusic": "Âm Nhạc Mới Nhất", - "HeaderLatestMedia": "Nội Dung Mới Nhất", + "HeaderLatestRecordings": "Bản Ghi Thêm Gần Đây", + "HeaderLatestMusic": "Nhạc Thêm Gần Đây", + "HeaderLatestMedia": "Phương Tiện Thêm Gần Đây", "HeaderKodiMetadataHelp": "Để bật hoặc tắt dữ liệu mô tả NFO, hãy chỉnh sửa thư viện và tìm phần 'Lưu Dữ Liệu Mô Tả'.", "HeaderKeepSeries": "Lưu Series", "HeaderKeepRecording": "Tiếp Tục Ghi Âm/Ghi Hình", @@ -526,7 +526,7 @@ "HttpsRequiresCert": "Để bật kết nối bảo mật, bạn cần phải cung cấp một Chứng Chỉ SSL đáng tin cậy, ví dụ như \"Let's Encrypt\". Hãy cung cấp Chứng Chỉ SSL hoặc là tắt tính năng kết nối bảo mật.", "Horizontal": "Nằm Ngang", "Home": "Trang chủ", - "HideWatchedContentFromLatestMedia": "Ẩn nội dung đã xem khỏi 'Phương Tiện Mới Nhất'", + "HideWatchedContentFromLatestMedia": "Ẩn nội dung đã xem khỏi 'Phương Tiện Thêm Gần Đây'", "Hide": "Ẩn", "Help": "Trợ Giúp", "HeaderYears": "Năm", @@ -957,7 +957,7 @@ "LibraryAccessHelp": "Chọn thư viện để chia sẻ với người dùng này. Quản trị viên có thể chỉnh sửa các thư mục bằng trình quản lý dữ liệu mô tả.", "LeaveBlankToNotSetAPassword": "Bạn có thể để trống trường này để không đặt mật khẩu.", "LearnHowYouCanContribute": "Tìm hiểu cách bạn có thể đóng góp.", - "LatestFromLibrary": "{0} mới nhất", + "LatestFromLibrary": "{0} Đã Thêm Vào Gần Đây", "Large": "Lớn", "LanNetworksHelp": "Danh sách địa chỉ IP được phân tách bằng dấu phẩy hoặc mục IP / Mặt nạ mạng cho các mạng sẽ được xem xét trên mạng cục bộ khi thực thi các hạn chế về băng thông. Nếu được đặt, tất cả các địa chỉ IP khác sẽ được coi là thuộc mạng bên ngoài và sẽ phải tuân theo các giới hạn băng thông bên ngoài. Nếu để trống, chỉ mạng con của máy chủ được coi là nằm trên mạng cục bộ.", "LabelffmpegPathHelp": "Đường dẫn đến tệp ứng dụng FFmpeg hoặc thư mục chứa FFmpeg.", @@ -1691,5 +1691,9 @@ "LabelChapterImageResolution": "Độ phân giải:", "ResolutionMatchSource": "Giống Như Nguồn", "SaveRecordingNFOHelp": "Lưu dữ liệu mô tả từ nhà cung cấp danh sách EPG bên cạnh phương tiện.", - "SaveRecordingImages": "Lưu bản ghi hình ảnh EPG" + "SaveRecordingImages": "Lưu bản ghi hình ảnh EPG", + "PreferEmbeddedExtrasTitlesOverFileNames": "Ưu tiên tiêu đề được nhúng hơn tên tệp cho các tính năng bổ sung", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Phần bổ sung thường có cùng tên được nhúng với phần gốc, hãy kiểm tra điều này để sử dụng các tiêu đề được nhúng cho chúng.", + "HeaderDummyChapter": "Hình Ảnh Phân Đoạn", + "HeaderRecordingMetadataSaving": "Dữ Liệu Mô Tả Bản Ghi" } From 8da290450f40ce16bb99e7f3bfa750ad3f00b0f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Sun, 12 Feb 2023 08:27:03 +0000 Subject: [PATCH 134/222] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index 8bb742f1cb..839e85f4f7 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1701,5 +1701,7 @@ "LabelDummyChapterCountHelp": "Maximální počet obrázků kapitol, který má být vytvořen pro jeden soubor médií.", "LabelChapterImageResolution": "Rozlišení:", "LabelChapterImageResolutionHelp": "Rozližení extrahovaných obrázků kapitol.", - "ResolutionMatchSource": "Stejné jako zdroj" + "ResolutionMatchSource": "Stejné jako zdroj", + "PreferEmbeddedExtrasTitlesOverFileNames": "Preferovat vložené názvy před názvy souborů pro doplňky", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Doplňky většinou mají stejný vložený název jako nadřazená položka. Zaškrtnutím je i přesto můžete upřednostnit." } From 087c5afcf841909bb5138fddf68210a80a870788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=80=A0xu=5Fzh?= Date: Sun, 12 Feb 2023 06:40:33 +0000 Subject: [PATCH 135/222] 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 5f9d96df58..e3f3831f5c 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -705,7 +705,7 @@ "LabelffmpegPathHelp": "FFmpeg 应用文件或包含 FFmpeg 的文件夹的路径。", "LanNetworksHelp": "在强制带宽限制时,认作本地网络上的 IP 地址或 IP/网络掩码条目的逗号分隔列表。如果设置此项,所有其它 IP 地址将被视为在外部网络上,并且将受到外部带宽限制。如果保留为空,则只将服务器的子网视为本地网络。", "Large": "大", - "LatestFromLibrary": "最新{0}", + "LatestFromLibrary": "最近添加于{0}", "LearnHowYouCanContribute": "了解如何贡献。", "LibraryAccessHelp": "选择共享给此用户的媒体库。管理员有权使用媒体资料管理器来编辑所有文件夹。", "List": "列表", From f90169fa9a4f8c59750ecf091c6e3067d350e7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C4=81rti=C5=86=C5=A1=20Kudrja=C5=A1evs?= Date: Sun, 12 Feb 2023 09:31:19 +0000 Subject: [PATCH 136/222] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index bc637be980..8bef81c2eb 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -1276,5 +1276,47 @@ "ButtonExitApp": "Iziet no lietotnes", "ButtonClose": "Aizvērt", "ButtonBackspace": "Atpakaļatkāpe", - "AddToFavorites": "Pievienot favorītiem" + "AddToFavorites": "Pievienot favorītiem", + "LastSeen": "Pēdējo reizi manīts {0}", + "MessageNoMovieSuggestionsAvailable": "Šobrīd nav pieejami filmu ieteikumi. Sāciet skatīties filmas, novērtējiet tās un apskatiet šo sadaļu vēlreiz, lai saņemt rekomendācijas.", + "MessagePlayAccessRestricted": "Šī satura atskaņošana šobrīd ir ierobežota. Sazinieties ar servera administratoru, lai saņemtu vairāk informācijas.", + "MessageSyncPlayDisabled": "SyncPlay izslēgts.", + "MessageSyncPlayErrorMedia": "Neizdevās ieslēgt SyncPlay! Satura kļūme.", + "MessageSyncPlayGroupDoesNotExist": "Neizdevās pievienoties grupai, jo tā neeksistē.", + "MessageSyncPlayJoinGroupDenied": "Neizdevās pievienoties grupai.", + "MessageSyncPlayLibraryAccessDenied": "Piekļuve šim saturam ir ierobežota.", + "NoSubtitlesHelp": "Subtitri netiks ieslēgti pēc noklusējuma, bet tos tāpat varēs ieslēgt manuāli atskaņošanas laikā.", + "OptionAllowContentDownload": "Atļaut satura lejuplādes", + "Preview": "Priekšskatījums", + "MessageSyncPlayEnabled": "SyncPlay ieslēgts.", + "Movie": "Filma", + "OptionDateEpisodeAdded": "Sērijas pievienošanas datums", + "OptionDateShowAdded": "Pārraides pievienošanas datums", + "LabelTextWeight": "Teksta izmērs:", + "PlaybackRate": "Atskaņošanas ātrums", + "AllowEmbeddedSubtitlesAllowImageOption": "Atļaut attēlus", + "AllowEmbeddedSubtitlesAllowNoneOption": "Neatļaut neko", + "Profile": "Profils", + "QuickConnectActivationSuccessful": "Veiksmīgi aktivizēts", + "PleaseEnterNameOrId": "Lūdzu, ievadiet nosaukumu vai ārējo ID.", + "AllowEmbeddedSubtitlesAllowTextOption": "Atļaut tekstu", + "OptionResElement": "'res' elements", + "QuickConnectAuthorizeCode": "Lai autorizētos, ievadiet kodu {0}", + "QuickConnectAuthorizeSuccess": "Pieprasījums autorizēts", + "MediaInfoTitle": "Nosaukums", + "MillisecondsUnit": "ms", + "Photo": "Attēls", + "MessageConfirmDeleteTunerDevice": "Vai esat pārliecināti, ka vēlaties izdzēst šo ierīci?", + "MessageSent": "Ziņa nosūtīta.", + "Poster": "Plakāts", + "Experimental": "Eksperimentāla", + "IgnoreDtsHelp": "Šīs opcijas izslēgšana var radīt problēmas, piemēram, audio celiņa pazušana kanāliem ar atšķirīgiem audio un video avotiem.", + "LabelDummyChapterDuration": "Intervāls:", + "LabelDummyChapterCount": "Limits:", + "LabelChapterImageResolution": "Izšķirtspēja:", + "OptionAllowRemoteControlOthers": "Atļaut citu lietotāju attālo pārvaldību", + "OptionReleaseDate": "Izlaiduma gads", + "OptionUnairedEpisode": "Neizlaistās epizodes", + "DownloadAll": "Lejuplādēt visu", + "AllowEmbeddedSubtitlesAllowAllOption": "Atļaut visu" } From 860df9230bfc30927a6e726b458450070cc088a1 Mon Sep 17 00:00:00 2001 From: blob03 Date: Sun, 12 Feb 2023 12:44:34 +0000 Subject: [PATCH 137/222] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 28626a874d..d742a3d561 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1701,5 +1701,7 @@ "ResolutionMatchSource": "Résolution de la source", "HeaderDummyChapter": "Images des chapitres", "LabelDummyChapterDuration": "Intervalle :", - "LabelDummyChapterCountHelp": "Nombre maximal d’images de chapitre à extraire pour chaque fichier multimédia." + "LabelDummyChapterCountHelp": "Nombre maximal d’images de chapitre à extraire pour chaque fichier multimédia.", + "PreferEmbeddedExtrasTitlesOverFileNames": "Préférer les titres intégrés aux médias pour les bonus", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Les bonus possèdent souvent un titre intégré identique au média parent, cocher l'option pour utiliser ce titre quoi qu'il en soit." } From e5d6fefdd5af3707ee8ab603c601d064d06f6a99 Mon Sep 17 00:00:00 2001 From: Andi Chandler Date: Sun, 12 Feb 2023 20:51:36 +0000 Subject: [PATCH 138/222] 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 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 969b5a1463..fd3cd5de27 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1701,5 +1701,7 @@ "LabelChapterImageResolution": "Resolution:", "LabelChapterImageResolutionHelp": "The resolution of the extracted chapter images.", "ResolutionMatchSource": "Match Source", - "SaveRecordingNFO": "Save recording EPG metadata in NFO" + "SaveRecordingNFO": "Save recording EPG metadata in NFO", + "PreferEmbeddedExtrasTitlesOverFileNames": "Prefer embedded titles over filenames for extras", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras often have the same embedded name as the parent, check this to use embedded titles for them anyway." } From ff9c6978940ad06f12a222dfa230ad9a3b6a1ffc Mon Sep 17 00:00:00 2001 From: Zourlo Date: Sun, 12 Feb 2023 23:30:01 +0000 Subject: [PATCH 139/222] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index 06337cb602..f7c431d3f1 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -144,8 +144,8 @@ "DirectStreamHelp1": "ビデオストリームは、お使いのデバイスとの互換性がありますが、(DTS、Dolby TrueHDなどの)オーディオフォーマットまたはオーディオチャンネル数で互換性がありません。ビデオストリームは、デバイスに送信される前に、ロスレスに再パッケージされ、音声ストリームのみをトランスコードします。", "DirectStreamHelp2": "ダイレクトストリーミングによって消費される電力はオーディオプロファイルによります。動画のストリームのみが可逆圧縮です。", "DirectStreaming": "ダイレクトストリーミング", - "Director": "ディレクター", - "Directors": "ディレクターズ", + "Director": "監督", + "Directors": "監督", "Disc": "ディスク", "Disconnect": "切断", "Display": "ディスプレイ", From 94212cdd1f722af4556100f4227c4cea5b98a768 Mon Sep 17 00:00:00 2001 From: Aditya Gupta Date: Mon, 13 Feb 2023 14:22:47 +0000 Subject: [PATCH 140/222] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 5e594f3b3f..6d91c56039 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -129,5 +129,8 @@ "MusicVideos": "संगीत वीडियो", "OptionBluray": "BD", "Playlists": "प्लेलिस्ट", - "Photos": "तस्वीरें" + "Photos": "तस्वीरें", + "AgeValue": "({0} साल पुराना)", + "ButtonClose": "बंद करें", + "AddToFavorites": "पसंदीदो में शामिल करे" } From 4f75faab56b6ec21101978df8d6861e8836b997a Mon Sep 17 00:00:00 2001 From: Aditya Gupta Date: Mon, 13 Feb 2023 14:23:56 +0000 Subject: [PATCH 141/222] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 6d91c56039..f2dd5f66c5 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -132,5 +132,7 @@ "Photos": "तस्वीरें", "AgeValue": "({0} साल पुराना)", "ButtonClose": "बंद करें", - "AddToFavorites": "पसंदीदो में शामिल करे" + "AddToFavorites": "पसंदीदो में शामिल करे", + "ButtonExitApp": "ऐप को बंद करें", + "ButtonSpace": "स्पेस" } From 57f4324e3d5844a2d0f53fb4fb81140dd4c5f37d Mon Sep 17 00:00:00 2001 From: Aditya Gupta Date: Mon, 13 Feb 2023 14:24:30 +0000 Subject: [PATCH 142/222] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index f2dd5f66c5..3b582c39d5 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -134,5 +134,7 @@ "ButtonClose": "बंद करें", "AddToFavorites": "पसंदीदो में शामिल करे", "ButtonExitApp": "ऐप को बंद करें", - "ButtonSpace": "स्पेस" + "ButtonSpace": "स्पेस", + "ButtonSplit": "विभाजित करें", + "ButtonStart": "शुरु करें" } From 9ddb443ef6656b167b41fe15306d0e7a649c36ba Mon Sep 17 00:00:00 2001 From: Aditya Gupta Date: Mon, 13 Feb 2023 14:33:35 +0000 Subject: [PATCH 143/222] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 3b582c39d5..46c2072174 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -17,16 +17,16 @@ "AddToCollection": "संग्रह में जोड़ें", "Add": "जोड़ें", "Actor": "अभिनेता", - "AccessRestrictedTryAgainLater": "वर्तमान में पहुंच प्रतिबंधित है। कृपया बाद में पुनः प्रयास करें.", + "AccessRestrictedTryAgainLater": "पहुंच प्रतिबंधित है। कृपया बाद में प्रयास करें.", "AllowHWTranscodingHelp": "ट्यूनर को निरंतर रूप से धाराओं को ट्रांसकोड करने दें। यह सर्वर द्वारा ट्रांसकोडिंग को कम करने में मदद कर सकता है।", "AllLanguages": "सभी भाषाएं", "AllEpisodes": "सभी प्रकरण", - "AllComplexFormats": "सभी जटिल प्रारूप (ASS, SSA, VobSub, PGS, SUB, IDX, …)", + "AllComplexFormats": "सभी प्रारूप (ASS, SSA, VobSub, PGS, SUB, IDX, …)", "AllChannels": "सभी चैनल्स", "Alerts": "चेतावनियां", "Albums": "एल्बम", - "Aired": "प्रसारित हो चुका", - "AdditionalNotificationServices": "अतिरिक्त सूचना सेवाओं को स्थापित करने के लिए प्लगइन सूची पर नज़र डालें।", + "Aired": "प्रसारित हो चुका है", + "AdditionalNotificationServices": "दी गयी सूची में से प्लगिन इनस्टॉल करें|", "AddedOnValue": "जोड़ दिया", "AddToPlaylist": "प्लेलिस्ट में जोड़ें", "AllowMediaConversionHelp": "मीडिया परिवर्तन के लिये अनुमति दें या इनकार करें.", @@ -86,7 +86,7 @@ "AllowFfmpegThrottlingHelp": "जब एक ट्रांसकोड या रीमूक्स वर्तमान प्लेबैक स्थिति से काफी आगे हो जाता है, तो प्रक्रिया को रोकें ताकि यह कम संसाधनों का उपभोग करेगा। अक्सर मांग किए बिना देखने पर यह सबसे उपयोगी है। यदि आप प्लेबैक समस्याओं का अनुभव करते हैं तो इसे बंद कर दें।", "AllowFfmpegThrottling": "थ्रोटल ट्रांसकोड", "AllowOnTheFlySubtitleExtractionHelp": "वीडियो ट्रांसकोडिंग को रोकने में मदद करने के लिए एंबेडेड सबटाइटल वीडियो से निकाले जा सकते हैं और सादे पाठ में ग्राहकों तक पहुंचाए जाते हैं। कुछ प्रणालियों पर यह एक लंबा समय ले सकता है और निष्कर्षण प्रक्रिया के दौरान वीडियो प्लेबैक को स्टाल करने का कारण बन सकता है। जब वे क्लाइंट डिवाइस द्वारा मूल रूप से समर्थित नहीं होते हैं, तो वीडियो ट्रांसकोडिंग के साथ जले हुए एम्बेडेड उपशीर्षक को अक्षम करें।", - "AlbumArtist": "चित्राधार कलाकार", + "AlbumArtist": "एल्बम कलाकार", "AllowOnTheFlySubtitleExtraction": "मक्खी पर उपशीर्षक निष्कर्षण की अनुमति दें", "Album": "एल्बम", "ButtonSyncPlay": "SyncPlay", @@ -136,5 +136,10 @@ "ButtonExitApp": "ऐप को बंद करें", "ButtonSpace": "स्पेस", "ButtonSplit": "विभाजित करें", - "ButtonStart": "शुरु करें" + "ButtonStart": "शुरु करें", + "ButtonStop": "रोकें", + "ButtonSubmit": "प्रस्तुत करें", + "ButtonTogglePlaylist": "प्लेलिस्ट", + "ButtonUninstall": "ऐप हटाएं", + "ButtonTrailer": "ट्रेलर" } From 1e2f52a28edafeae6441d5e0393488e4c1c5cafb Mon Sep 17 00:00:00 2001 From: ArneNaessens Date: Mon, 13 Feb 2023 16:53:50 +0000 Subject: [PATCH 144/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 2fdce82585..0ee3872694 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1687,5 +1687,10 @@ "DownloadAll": "Alles downloaden", "Experimental": "Experimenteel", "StereoDownmixAlgorithmHelp": "Algoritme dat gebruikt wordt om multikanaals geluid naar stereo te downmixen.", - "LabelStereoDownmixAlgorithm": "Stereo-downmix-algoritme" + "LabelStereoDownmixAlgorithm": "Stereo-downmix-algoritme", + "LabelChapterImageResolutionHelp": "De resolutie van de opgehaalde hoofdstuk afbeeldingen.", + "LabelDummyChapterDuration": "Interval:", + "LabelDummyChapterCount": "Limiet:", + "LabelDummyChapterCountHelp": "Het maximum aantal hoofdstukafbeeldingen dat wordt opgehaald uit ieder mediabestand.", + "LabelChapterImageResolution": "Resolutie:" } From bbd1921629a5848a7daa0c58aa6e87a9e435d444 Mon Sep 17 00:00:00 2001 From: felix920506 Date: Mon, 13 Feb 2023 20:05:19 +0000 Subject: [PATCH 145/222] 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 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index cb157541ca..8097c827ee 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -570,9 +570,9 @@ "LabelAccessStart": "開始時間:", "LabelAirDays": "播出日期:", "LabelAirTime": "播出時間:", - "LabelAirsAfterSeason": "已播放劇集季度:", - "LabelAirsBeforeEpisode": "集播出前:", - "LabelAirsBeforeSeason": "尚未播放劇集季度:", + "LabelAirsAfterSeason": "在季度後播出:", + "LabelAirsBeforeEpisode": "在集數前播出:", + "LabelAirsBeforeSeason": "在季度前播出:", "LabelAlbum": "專輯:", "LabelAlbumArtHelp": "PN 在 upnp:albumArtURI 裡的 dlna:profileID 屬性用於專輯封面。某些設備不管圖像的尺寸大小,都會要求特定的值。", "LabelAlbumArtMaxHeight": "專輯封面最大高度:", @@ -1169,7 +1169,7 @@ "LabelOptionalNetworkPathHelp": "如果這個資料夾在網路上分享,提供網路分享路徑可以供其他應用程式直接存取媒體檔案,例如 {0} 或者 {1}。", "LabelOriginalAspectRatio": "原始長寬比:", "LabelOverview": "內容概述:", - "LabelParentalRating": "家長分級:", + "LabelParentalRating": "分級:", "LabelPasswordConfirm": "確認密碼:", "LabelPasswordResetProvider": "密碼重設提供者:", "LabelPasswordRecoveryPinCode": "PIN 碼:", From ddef7075a17f49c271d41a7e90697184c74b65c8 Mon Sep 17 00:00:00 2001 From: stegl Date: Mon, 13 Feb 2023 23:12:06 +0000 Subject: [PATCH 146/222] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 3a9451b2d6..fe584d7802 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1686,5 +1686,6 @@ "StereoDownmixAlgorithmHelp": "Algoritem uporabljen za downmix večkanalnega zvoka v stereo.", "Experimental": "Poskusno", "LabelStereoDownmixAlgorithm": "Stereo Downmix algoritem", - "DownloadAll": "Prenesi vse" + "DownloadAll": "Prenesi vse", + "HeaderDummyChapter": "Slike poglavja" } From 125b31000c4a1e14d607c515e6ecc595c225c191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=80=A0xu=5Fzh?= Date: Tue, 14 Feb 2023 09:38:19 +0000 Subject: [PATCH 147/222] 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 | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index e3f3831f5c..818bf42ffd 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -135,7 +135,7 @@ "Disconnect": "断开连接", "Display": "显示", "DisplayInMyMedia": "在主屏幕显示", - "DisplayInOtherHomeScreenSections": "在“最新媒体”和“继续观看“等主屏幕模块中显示", + "DisplayInOtherHomeScreenSections": "在“新增媒体”和“继续观看“等主屏幕模块中显示", "DisplayMissingEpisodesWithinSeasons": "显示每季里缺少的剧集", "DisplayMissingEpisodesWithinSeasonsHelp": "必须在服务器的 TV 媒体库设置中也启用该功能。", "DoNotRecord": "不录制", @@ -273,11 +273,11 @@ "HeaderInstall": "安装", "HeaderInstantMix": "速成合辑", "HeaderKodiMetadataHelp": "要启用或禁用 NFO 元数据,请编辑库并找到“元数据保护程序”部分。", - "HeaderLatestEpisodes": "最新剧集", - "HeaderLatestMedia": "最新媒体", - "HeaderLatestMovies": "最新电影", - "HeaderLatestMusic": "最新音乐", - "HeaderLatestRecordings": "最新录制的节目", + "HeaderLatestEpisodes": "新增剧集", + "HeaderLatestMedia": "新增媒体", + "HeaderLatestMovies": "新增电影", + "HeaderLatestMusic": "新增音乐", + "HeaderLatestRecordings": "新增录制", "HeaderLibraries": "媒体库", "HeaderLibraryAccess": "媒体库访问", "HeaderLibraryFolders": "媒体文件夹", @@ -368,7 +368,7 @@ "HeaderYears": "年份", "Help": "帮助", "Hide": "隐藏", - "HideWatchedContentFromLatestMedia": "隐藏来自“最新媒体”的观看内容", + "HideWatchedContentFromLatestMedia": "隐藏来自“新增媒体”的已观看内容", "Home": "首页", "HttpsRequiresCert": "要启用安全连接, 您需要提供一个受信任的 SSL 证书, 如 \"Let's Encrypt\"。请提供证书或禁用安全连接。", "Identify": "识别", @@ -705,7 +705,7 @@ "LabelffmpegPathHelp": "FFmpeg 应用文件或包含 FFmpeg 的文件夹的路径。", "LanNetworksHelp": "在强制带宽限制时,认作本地网络上的 IP 地址或 IP/网络掩码条目的逗号分隔列表。如果设置此项,所有其它 IP 地址将被视为在外部网络上,并且将受到外部带宽限制。如果保留为空,则只将服务器的子网视为本地网络。", "Large": "大", - "LatestFromLibrary": "最近添加于{0}", + "LatestFromLibrary": "最近添加于 {0}", "LearnHowYouCanContribute": "了解如何贡献。", "LibraryAccessHelp": "选择共享给此用户的媒体库。管理员有权使用媒体资料管理器来编辑所有文件夹。", "List": "列表", @@ -1036,7 +1036,7 @@ "TabContainers": "媒体载体", "TabDashboard": "控制台", "TabDirectPlay": "直接播放", - "TabLatest": "最新", + "TabLatest": "新增", "TabLogs": "日志", "TabMusic": "音乐", "TabMyPlugins": "我的插件", @@ -1689,5 +1689,19 @@ "Experimental": "实验功能", "LabelStereoDownmixAlgorithm": "立体声降混算法", "StereoDownmixAlgorithmHelp": "用于将多声道下降混合为立体声的算法。", - "HeaderRecordingMetadataSaving": "记录元数据" + "HeaderRecordingMetadataSaving": "记录元数据", + "LabelDummyChapterDuration": "间隔:", + "LabelDummyChapterDurationHelp": "章节图像提取间隔,以秒为单位。", + "PreferEmbeddedExtrasTitlesOverFileNames": "对额外内容优先使用内置的标题而不是文件名", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "额外内容通常与父项有相同的内置标题,勾选此项来对它们使用内置标题。", + "SaveRecordingNFO": "在 NFO 中保存录制的 EPG 元数据", + "SaveRecordingNFOHelp": "将 EPG 列表提供者提供的元数据与媒体一起保存。", + "ResolutionMatchSource": "匹配来源", + "SaveRecordingImagesHelp": "将 EPG 列表提供者提供的图像与媒体一起保存。", + "SaveRecordingImages": "保存录制的 EPG 图像", + "HeaderDummyChapter": "章节图片", + "LabelDummyChapterCount": "限制:", + "LabelDummyChapterCountHelp": "每个媒体文件的最大章节图像提取数。", + "LabelChapterImageResolution": "分辨率:", + "LabelChapterImageResolutionHelp": "提取的章节图像的分辨率。" } From a889769e0dc62cec0c4750344faa2dfd56af8357 Mon Sep 17 00:00:00 2001 From: Spon4ik Date: Tue, 14 Feb 2023 13:51:46 +0000 Subject: [PATCH 148/222] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/he.json b/src/strings/he.json index 0dc93afe57..73611089f8 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -773,7 +773,7 @@ "EnableDecodingColorDepth10Hevc": "אפשר פענוח חומרה של 10 סיביות עבור HEVC", "EnableBackdropsHelp": "הצג את התפאורות ברקע של כמה דפים בעת גלישה בספרייה.", "DisplayMissingEpisodesWithinSeasonsHelp": "יש להפעיל זאת גם עבור ספריות טלוויזיה בתצורת השרת.", - "DisplayInOtherHomeScreenSections": "הצג בקטעי מסך הבית כגון המדיה העדכנית והמשיך בצפייה", + "DisplayInOtherHomeScreenSections": "הצג במסך הבית מחיצות כגון \"התוכן, שנוסף לאחרונה\" ו-\"המשיך בצפייה\"", "DeinterlaceMethodHelp": "בחר בשיטת deinterlacing לשימוש בהמרת תוכנה מקושרת לתוכן. כאשר מופעלת האצת חומרה התומכת בפירוק חומרה של חומרה, ישתמש במתקן החומרה במקום בהגדרה זו.", "DefaultSubtitlesHelp": "כתוביות נטענות על סמך ברירת המחדל והדגלים המאולצים במטא הנתונים המוטמעים. העדפות שפה נחשבות כאשר קיימות אפשרויות מרובות.", "ColorTransfer": "העברת צבע", @@ -1049,5 +1049,6 @@ "DownloadAll": "הורד הכל", "Experimental": "ניסיוני", "LabelDisableCustomCss": "אפשר קוד css מותאם אישית בשביל עיצובים מהשרת", - "LabelEasyPinCode": "קוד PIN קל" + "LabelEasyPinCode": "קוד PIN קל", + "EnableCardLayout": "הצג מערך ארגז חזותי" } From b01860da84fdf32d254c21bcb3d6a01e11c3410d Mon Sep 17 00:00:00 2001 From: Daniarla Date: Tue, 14 Feb 2023 17:17:56 +0000 Subject: [PATCH 149/222] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 20f07190e3..035e371c93 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -248,11 +248,11 @@ "HeaderKeepRecording": "Mantener grabación", "HeaderKeepSeries": "Mantener series", "HeaderKodiMetadataHelp": "Para habilitar o deshabilitar los metadatos NFO, edite una biblioteca y busque la sección 'Guardadores de metadatos'.", - "HeaderLatestEpisodes": "Últimos episodios", - "HeaderLatestMedia": "Últimos", - "HeaderLatestMovies": "Últimas películas", - "HeaderLatestMusic": "Última música", - "HeaderLatestRecordings": "Últimas grabaciones", + "HeaderLatestEpisodes": "Últimos episodios añadidos", + "HeaderLatestMedia": "Últimos elementos añadidos", + "HeaderLatestMovies": "Últimas películas añadidas", + "HeaderLatestMusic": "Última música añadida", + "HeaderLatestRecordings": "Últimas grabaciones añadidas", "HeaderLibraries": "Bibliotecas", "HeaderLibraryAccess": "Acceso a la biblioteca", "HeaderLibraryFolders": "Carpetas de la biblioteca", @@ -344,7 +344,7 @@ "HeaderYears": "Años", "Help": "Ayuda", "Hide": "Ocultar", - "HideWatchedContentFromLatestMedia": "Esconder contenido visto de \"Últimos\"", + "HideWatchedContentFromLatestMedia": "Esconder contenido visto de \"Últimos elementos\"", "HttpsRequiresCert": "Para activar la conexión segura, necesitas un certificado SSL de confianza, como Let's Encrypt. De lo contrario, desactive las conexiones seguras.", "Identify": "Identificar", "Images": "Imágenes", @@ -1078,7 +1078,7 @@ "Directors": "Directores", "Display": "Visualización", "DisplayInMyMedia": "Mostrar en la pantalla de inicio", - "DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla de inicio como \"Últimos\" y \"Continuar viendo\"", + "DisplayInOtherHomeScreenSections": "Mostrar en la pantalla de inicio secciones como \"Últimos elementos añadidos\" y \"Continuar viendo\"", "DisplayMissingEpisodesWithinSeasons": "Mostrar episodios ausentes en las temporadas", "DisplayMissingEpisodesWithinSeasonsHelp": "Esto también debe ser habilitado para la biblioteca de TV en la configuración del servidor.", "DropShadow": "Eliminar sombra", @@ -1693,5 +1693,9 @@ "SaveRecordingNFO": "Guardar grabación de metadatos EPG en NFO", "SaveRecordingNFOHelp": "Guardar metadatos del proveedor de listados EPG junto con los archivos multimedia.", "SaveRecordingImages": "Guardar grabación de imágenes EPG", - "SaveRecordingImagesHelp": "Guardar imágenes del proveedor de listados EPG junto con los archivos multimedia." + "SaveRecordingImagesHelp": "Guardar imágenes del proveedor de listados EPG junto con los archivos multimedia.", + "LabelDummyChapterDuration": "Intervalo:", + "LabelDummyChapterDurationHelp": "Intervalo de extracción de imágenes de los capítulos", + "HeaderDummyChapter": "Imágenes de capítulos", + "LabelDummyChapterCount": "Límite:" } From 7f7430e02393433f83b88439c4970db736e7455f Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 14 Feb 2023 23:01:00 +0300 Subject: [PATCH 150/222] Simplify adding modules to babel-loader --- webpack.common.js | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/webpack.common.js b/webpack.common.js index 14826c9f0b..f18711b999 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -146,7 +146,25 @@ const config = { }, { test: /\.(js|jsx)$/, - exclude: /node_modules[\\/](?!@uupaa[\\/]dynamic-import-polyfill|@jellyfin[\\/]sdk|@remix-run[\\/]router|axios|blurhash|compare-versions|date-fns|dom7|epubjs|flv.js|libarchive.js|marked|react-router|screenfull|ssr-window|swiper)/, + include: [ + path.resolve(__dirname, 'node_modules/@jellyfin/sdk'), + path.resolve(__dirname, 'node_modules/@remix-run/router'), + path.resolve(__dirname, 'node_modules/@uupaa/dynamic-import-polyfill'), + path.resolve(__dirname, 'node_modules/axios'), + path.resolve(__dirname, 'node_modules/blurhash'), + path.resolve(__dirname, 'node_modules/compare-versions'), + path.resolve(__dirname, 'node_modules/date-fns'), + path.resolve(__dirname, 'node_modules/dom7'), + path.resolve(__dirname, 'node_modules/epubjs'), + path.resolve(__dirname, 'node_modules/flv.js'), + path.resolve(__dirname, 'node_modules/libarchive.js'), + path.resolve(__dirname, 'node_modules/marked'), + path.resolve(__dirname, 'node_modules/react-router'), + path.resolve(__dirname, 'node_modules/screenfull'), + path.resolve(__dirname, 'node_modules/ssr-window'), + path.resolve(__dirname, 'node_modules/swiper'), + path.resolve(__dirname, 'src') + ], use: [{ loader: 'babel-loader', options: { @@ -172,7 +190,11 @@ const config = { }, /* modules that Babel breaks when transforming to ESM */ { - test: /node_modules[\\/](pdfjs-dist|xmldom)[\\/].*\.js$/, + test: /\.js$/, + include: [ + path.resolve(__dirname, 'node_modules/pdfjs-dist'), + path.resolve(__dirname, 'node_modules/xmldom') + ], use: [{ loader: 'babel-loader', options: { From d436fae6dad2d2b5a0cf66225889dca0b8661cc3 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 14 Feb 2023 23:01:30 +0300 Subject: [PATCH 151/222] Babelify @jellyfin/libass-wasm --- webpack.common.js | 1 + 1 file changed, 1 insertion(+) diff --git a/webpack.common.js b/webpack.common.js index f18711b999..eebd423d98 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -147,6 +147,7 @@ const config = { { test: /\.(js|jsx)$/, include: [ + path.resolve(__dirname, 'node_modules/@jellyfin/libass-wasm'), path.resolve(__dirname, 'node_modules/@jellyfin/sdk'), path.resolve(__dirname, 'node_modules/@remix-run/router'), path.resolve(__dirname, 'node_modules/@uupaa/dynamic-import-polyfill'), From c65f8467bd025159e4e1126984f3036b8af76672 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Tue, 14 Feb 2023 22:36:13 +0000 Subject: [PATCH 152/222] 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 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 64f4d939fd..229cd46806 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1687,5 +1687,12 @@ "DownloadAll": "Descargar todo", "Experimental": "Experimental", "LabelStereoDownmixAlgorithm": "Algoritmo de mezcla estéreo", - "StereoDownmixAlgorithmHelp": "Algoritmo utilizado para mezclar audio multicanal a estéreo." + "StereoDownmixAlgorithmHelp": "Algoritmo utilizado para mezclar audio multicanal a estéreo.", + "LabelDummyChapterDurationHelp": "El intervalo de extracción de la imagen del capítulo en segundos.", + "HeaderRecordingMetadataSaving": "Grabando metadatos", + "HeaderDummyChapter": "Imágenes del capítulo", + "LabelDummyChapterDuration": "Intervalo:", + "LabelDummyChapterCount": "Límite:", + "LabelDummyChapterCountHelp": "El número máximo de imágenes de capítulos que se extraerán para cada archivo multimedia.", + "LabelChapterImageResolution": "Resolución:" } From 96b8d8b28e317695b8a69c27e4dd3f2128e84bb0 Mon Sep 17 00:00:00 2001 From: Bas Date: Tue, 14 Feb 2023 20:41:45 +0000 Subject: [PATCH 153/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 0ee3872694..46f7d49f04 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -139,7 +139,7 @@ "Disconnect": "Loskoppelen", "Display": "Weergave", "DisplayInMyMedia": "Op het startscherm weergeven", - "DisplayInOtherHomeScreenSections": "In secties van het startscherm weergeven, zoals \"Recente media\" en \"Verder kijken\"", + "DisplayInOtherHomeScreenSections": "In secties van het startscherm weergeven, zoals 'Onlangs toegevoegde media' en 'Verderkijken'", "DisplayMissingEpisodesWithinSeasons": "Toon ontbrekende afleveringen binnen een seizoen", "DisplayMissingEpisodesWithinSeasonsHelp": "Dit moet ook worden ingeschakeld voor tv-bibliotheken in de serverconfiguratie.", "DisplayModeHelp": "Selecteer het schermtype waar Jellyfin op draait.", @@ -284,11 +284,11 @@ "HeaderKeepRecording": "Bewaar opname", "HeaderKeepSeries": "Series behouden", "HeaderKodiMetadataHelp": "Om NFO-metadata in of uit te schakelen, bewerk een bibliotheek en zoek in de metadata-downloaders sectie.", - "HeaderLatestEpisodes": "Nieuwste afleveringen", - "HeaderLatestMedia": "Nieuwste media", - "HeaderLatestMovies": "Nieuwste films", - "HeaderLatestMusic": "Nieuwste muziek", - "HeaderLatestRecordings": "Nieuwste opnames", + "HeaderLatestEpisodes": "Onlangs toegevoegde afleveringen", + "HeaderLatestMedia": "Onlangs toegevoegde media", + "HeaderLatestMovies": "Onlangs toegevoegde films", + "HeaderLatestMusic": "Onlangs toegevoegde muziek", + "HeaderLatestRecordings": "Onlangs toegevoegde opnamen", "HeaderLibraries": "Bibliotheken", "HeaderLibraryAccess": "Bibliotheek toegang", "HeaderLibraryFolders": "Bibliotheekmappen", @@ -382,7 +382,7 @@ "HeaderYears": "Jaren", "Help": "Hulp", "Hide": "Verbergen", - "HideWatchedContentFromLatestMedia": "Verberg bekeken inhoud uit 'Nieuwste media'", + "HideWatchedContentFromLatestMedia": "Bekeken inhoud verbergen uit 'Onlangs toegevoegde media'", "Home": "Start", "Horizontal": "Horizontaal", "HttpsRequiresCert": "Om beveiligde verbindingen in te schakelen, is een vertrouwd SSL-certificaat vereist (zoals Let's Encrypt). Geef een certificaat op of schakel beveiligde verbindingen uit.", @@ -488,7 +488,7 @@ "LabelEpisodeNumber": "Afleveringsnummer:", "LabelEvent": "Gebeurtenis:", "LabelEveryXMinutes": "Iedere:", - "LabelExtractChaptersDuringLibraryScan": "Hoofdstukafbeeldingen uitpakken tijdens het scannen van de bibliotheek", + "LabelExtractChaptersDuringLibraryScan": "Hoofdstukafbeeldingen uitpakken tijdens bibliotheekscan", "LabelExtractChaptersDuringLibraryScanHelp": "Genereer hoofdstuk afbeeldingen wanneer video's geïmporteerd worden tijdens het scannen van de bibliotheek. Zo niet, zullen deze gegenereerd worden tijdens een geplande taak, hierdoor zal reguliere bibliotheek scan sneller voltooien.", "LabelFailed": "Mislukt", "LabelFileOrUrl": "Bestand of URL:", @@ -694,7 +694,7 @@ "LabelffmpegPathHelp": "Het pad naar het FFmpeg applicatiebestand, of de folder die FFmpeg bevat.", "LanNetworksHelp": "Komma-gescheiden lijst van IP-adressen of IP/netmask adressen voor netwerken die als lokaal gezien worden wanneer bandbreedtebeperkingen van toepassing zijn. Indien ingesteld, worden alle overige IP-adressen gezien als externe adressen en zullen worden onderworpen aan de bandbreedte-instellingen voor externe adressen. Indien blanco, zal alleen het subnet van de server als lokaal netwerk gezien worden.", "Large": "Groot", - "LatestFromLibrary": "Nieuwste {0}", + "LatestFromLibrary": "Onlangs toegevoegd in {0}", "LearnHowYouCanContribute": "Lees meer over hoe u kunt bijdragen.", "LibraryAccessHelp": "Selecteer de bibliotheken om met deze gebruiker te delen. Beheerders kunnen alle mappen bewerken via de metadata-beheerder.", "List": "Lijst", @@ -1017,7 +1017,7 @@ "TabAdvanced": "Geavanceerd", "TabCatalog": "Catalogus", "TabDirectPlay": "Direct Afspelen", - "TabLatest": "Nieuwste", + "TabLatest": "Onlangs toegevoegd", "TabLogs": "Logboeken", "TabMusic": "Muziek", "TabMyPlugins": "Mijn plug-ins", @@ -1688,7 +1688,7 @@ "Experimental": "Experimenteel", "StereoDownmixAlgorithmHelp": "Algoritme dat gebruikt wordt om multikanaals geluid naar stereo te downmixen.", "LabelStereoDownmixAlgorithm": "Stereo-downmix-algoritme", - "LabelChapterImageResolutionHelp": "De resolutie van de opgehaalde hoofdstuk afbeeldingen.", + "LabelChapterImageResolutionHelp": "De resolutie van de uitgepakte hoofdstukafbeeldingen.", "LabelDummyChapterDuration": "Interval:", "LabelDummyChapterCount": "Limiet:", "LabelDummyChapterCountHelp": "Het maximum aantal hoofdstukafbeeldingen dat wordt opgehaald uit ieder mediabestand.", From 85fac85968a877679ecde866358172a824e3ab62 Mon Sep 17 00:00:00 2001 From: stegl Date: Tue, 14 Feb 2023 23:02:01 +0000 Subject: [PATCH 154/222] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index fe584d7802..5bdd55a1ff 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1687,5 +1687,17 @@ "Experimental": "Poskusno", "LabelStereoDownmixAlgorithm": "Stereo Downmix algoritem", "DownloadAll": "Prenesi vse", - "HeaderDummyChapter": "Slike poglavja" + "HeaderDummyChapter": "Slike poglavja", + "SaveRecordingNFO": "Shrani posnete EPG metapodatke v NFO", + "SaveRecordingImagesHelp": "Shrani prenešene slike v mapo datoteke.", + "PreferEmbeddedExtrasTitlesOverFileNames": "Raje uporabi vdelane naslove kot imena datotek", + "SaveRecordingNFOHelp": "Shrani metapodatke v isto mapo", + "LabelDummyChapterDuration": "interval:", + "LabelDummyChapterDurationHelp": "Interval ekstrakcije slike poglavja v sekundah.", + "LabelDummyChapterCount": "Limit:", + "LabelDummyChapterCountHelp": "Največje število slik poglavij, ki bodo ekstrahirane za vsako medijsko datoteko.", + "LabelChapterImageResolution": "Resolucija:", + "LabelChapterImageResolutionHelp": "Ločljivost slik poglavij.", + "ResolutionMatchSource": "ujemanje z virom", + "HeaderRecordingMetadataSaving": "Snemanje metapodatkov" } From c92bc15a43d7504e85e7ff880004add66f0962ce Mon Sep 17 00:00:00 2001 From: ikoch Date: Wed, 15 Feb 2023 12:05:56 +0000 Subject: [PATCH 155/222] 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 8e4ab190bd..97bc59933d 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1060,7 +1060,7 @@ "ShowIndicatorsFor": "Показывать метки для:", "ShowTitle": "Отображать название", "ShowYear": "Отображать год", - "Shows": "Передачи", + "Shows": "Телешоу", "Shuffle": "Перемешать", "New": "Новое", "Filter": "Фильтрoвать", From f45f1ff868c49b711eb3ac9894c060ce808bbe61 Mon Sep 17 00:00:00 2001 From: Daniarla Date: Wed, 15 Feb 2023 15:22:33 +0000 Subject: [PATCH 156/222] 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 035e371c93..704b5761f4 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1695,7 +1695,7 @@ "SaveRecordingImages": "Guardar grabación de imágenes EPG", "SaveRecordingImagesHelp": "Guardar imágenes del proveedor de listados EPG junto con los archivos multimedia.", "LabelDummyChapterDuration": "Intervalo:", - "LabelDummyChapterDurationHelp": "Intervalo de extracción de imágenes de los capítulos", + "LabelDummyChapterDurationHelp": "Intervalo de extracción de imágenes de los capítulos en segundos", "HeaderDummyChapter": "Imágenes de capítulos", "LabelDummyChapterCount": "Límite:" } From e19dbbc93755e7262fe4d806502315bc9b881616 Mon Sep 17 00:00:00 2001 From: Ruben Kremer Date: Wed, 15 Feb 2023 21:52:02 +0000 Subject: [PATCH 157/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 46f7d49f04..6a9add068d 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1692,5 +1692,15 @@ "LabelDummyChapterDuration": "Interval:", "LabelDummyChapterCount": "Limiet:", "LabelDummyChapterCountHelp": "Het maximum aantal hoofdstukafbeeldingen dat wordt opgehaald uit ieder mediabestand.", - "LabelChapterImageResolution": "Resolutie:" + "LabelChapterImageResolution": "Resolutie:", + "PreferEmbeddedExtrasTitlesOverFileNames": "Voorkeur voor ingebedde titels boven bestandsnamen voor extra's", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extra's hebben vaak dezelfde ingebedde naam als de hoofdcontent, vink dit aan om toch de ingebedde titels te gebruiken.", + "SaveRecordingImagesHelp": "Sla afbeeldingen van de EPG vermeldingen op naast de media.", + "SaveRecordingNFO": "Sla opname EPG-metadata op in de NFO", + "SaveRecordingNFOHelp": "Sla metadata uit de EPG vermelding op naast de media.", + "SaveRecordingImages": "Sla opname EPG afbeeldingen op", + "HeaderDummyChapter": "Hoofdstukafbeeldingen", + "LabelDummyChapterDurationHelp": "De hoofdstukafbeelding extractie interval in seconden.", + "ResolutionMatchSource": "Bron matchen", + "HeaderRecordingMetadataSaving": "Opname metadata" } From bf5521f7a2424feb4c3b1afd10c3b8c3df4dc223 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Thu, 16 Feb 2023 18:24:02 +0000 Subject: [PATCH 158/222] Translated using Weblate (Spanish (Argentina)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_AR/ --- src/strings/es-ar.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 229cd46806..ab8ae2a636 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1694,5 +1694,6 @@ "LabelDummyChapterDuration": "Intervalo:", "LabelDummyChapterCount": "Límite:", "LabelDummyChapterCountHelp": "El número máximo de imágenes de capítulos que se extraerán para cada archivo multimedia.", - "LabelChapterImageResolution": "Resolución:" + "LabelChapterImageResolution": "Resolución:", + "LabelChapterImageResolutionHelp": "La resolución de las imágenes de los capítulos extraídos." } From 19b9924279741ce555a1acb34ee965a79814fb4e Mon Sep 17 00:00:00 2001 From: Bas Date: Thu, 16 Feb 2023 18:59:05 +0000 Subject: [PATCH 159/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 6a9add068d..543962164b 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1693,14 +1693,14 @@ "LabelDummyChapterCount": "Limiet:", "LabelDummyChapterCountHelp": "Het maximum aantal hoofdstukafbeeldingen dat wordt opgehaald uit ieder mediabestand.", "LabelChapterImageResolution": "Resolutie:", - "PreferEmbeddedExtrasTitlesOverFileNames": "Voorkeur voor ingebedde titels boven bestandsnamen voor extra's", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extra's hebben vaak dezelfde ingebedde naam als de hoofdcontent, vink dit aan om toch de ingebedde titels te gebruiken.", - "SaveRecordingImagesHelp": "Sla afbeeldingen van de EPG vermeldingen op naast de media.", - "SaveRecordingNFO": "Sla opname EPG-metadata op in de NFO", - "SaveRecordingNFOHelp": "Sla metadata uit de EPG vermelding op naast de media.", - "SaveRecordingImages": "Sla opname EPG afbeeldingen op", + "PreferEmbeddedExtrasTitlesOverFileNames": "Ingesloten titels boven bestandsnamen verkiezen voor extra's", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extra's hebben vaak dezelfde ingesloten naam als de hoofdinhoud; vink dit aan om toch de ingesloten titels te gebruiken.", + "SaveRecordingImagesHelp": "Afbeeldingen uit EPG-vermeldingen naast media opslaan.", + "SaveRecordingNFO": "EPG-metadata in NFO opslaan", + "SaveRecordingNFOHelp": "Metadata uit de EPG-vermeldingen naast media opslaan.", + "SaveRecordingImages": "EPG-afbeeldingen opslaan", "HeaderDummyChapter": "Hoofdstukafbeeldingen", - "LabelDummyChapterDurationHelp": "De hoofdstukafbeelding extractie interval in seconden.", - "ResolutionMatchSource": "Bron matchen", - "HeaderRecordingMetadataSaving": "Opname metadata" + "LabelDummyChapterDurationHelp": "De extractieinterval voor hoofdstukafbeeldingen in seconden.", + "ResolutionMatchSource": "Gelijk aan bron", + "HeaderRecordingMetadataSaving": "Metadata opname" } From 58db679016226cc2cebe4e1b90dcbc222d40d986 Mon Sep 17 00:00:00 2001 From: adrian gustavo martinez Date: Fri, 17 Feb 2023 02:15:44 +0000 Subject: [PATCH 160/222] 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 ab8ae2a636..5d4d6f500b 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -154,7 +154,7 @@ "DateAdded": "Fecha agregada", "DatePlayed": "Fecha de reproducción", "DeathDateValue": "Muerte: {0}", - "Default": "Por Defecto", + "Default": "Predeterminado", "ErrorDefault": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.", "DefaultMetadataLangaugeDescription": "Estos son tus predeterminados y pueden ser personalizados por librería únicamente.", "Delete": "Borrar", From e802c43fb48314582aa2193413dad0030b115bbb Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Fri, 17 Feb 2023 11:31:04 +0100 Subject: [PATCH 161/222] Respect server ordering of media sources --- src/controllers/itemDetails/index.js | 29 +--------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 28b0424153..4c2c429829 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -177,34 +177,7 @@ function renderTrackSelections(page, instance, item, forceReload) { return; } - let mediaSources = item.MediaSources; - - const resolutionNames = []; - const sourceNames = []; - mediaSources.forEach(function (v) { - (v.Name.endsWith('p') || v.Name.endsWith('i')) && !Number.isNaN(parseInt(v.Name, 10)) ? resolutionNames.push(v) : sourceNames.push(v); - }); - - resolutionNames.sort((a, b) => parseInt(b.Name, 10) - parseInt(a.Name, 10)); - sourceNames.sort((a, b) => { - const nameA = a.Name.toUpperCase(); - const nameB = b.Name.toUpperCase(); - if (nameA < nameB) { - return -1; - } else if (nameA > nameB) { - return 1; - } - return 0; - }); - - mediaSources = []; - resolutionNames.forEach(v => { - mediaSources.push(v); - }); - sourceNames.forEach(v => { - mediaSources.push(v); - }); - + const mediaSources = item.MediaSources; instance._currentPlaybackMediaSources = mediaSources; page.querySelector('.trackSelections').classList.remove('hide'); From 7d86f1a47d268d0781d17be846b67da5a95f32f1 Mon Sep 17 00:00:00 2001 From: rushmash Date: Fri, 17 Feb 2023 20:05:33 +0000 Subject: [PATCH 162/222] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index 8253518011..266b83683b 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -54,7 +54,7 @@ "BehindTheScenes": "За кулісамі", "EnableEnhancedNvdecDecoderHelp": "Эксперыментальная рэалізацыя NVDEC, не ўключайце гэту опцыю, калі вы не сутыкнуліся з памылкамі дэкадавання.", "LabelYear": "Год:", - "LatestFromLibrary": "Апошнія {0}", + "LatestFromLibrary": "Нядаўна дададзеныя ў {0}", "Lyricist": "Аўтар тэкстаў", "ManageRecording": "Кіраванне запісам", "Logo": "Лагатып", @@ -612,7 +612,7 @@ "HeaderIdentificationCriteriaHelp": "Увядзіце хаця б адзін крытэрый ідэнтыфікацыі.", "HeaderIdentifyItemHelp": "Увядзіце адзін або некалькі крытэрыяў пошуку. Выдаліце крытэрыі, каб павялічыць вынікі пошуку.", "HeaderKodiMetadataHelp": "Каб уключыць або выключыць метададзеныя NFO, адрэдагуйце бібліятэку і знайдзіце раздзел «Захоўвальнікі метададзеных».", - "HeaderLatestEpisodes": "Новыя серыі", + "HeaderLatestEpisodes": "Нядаўна дададзеныя эпізоды", "HeaderLiveTvTunerSetup": "Налада ТБ-цюнэра ў прамым эфіры", "HeaderLoginFailure": "Памылка ўваходу", "HeaderMedia": "Медыя", @@ -887,7 +887,7 @@ "EnablePlugin": "Уключыць", "DisableCustomCss": "Адключыць карыстальніцкі код CSS, прадастаўлены серверам", "DisablePlugin": "Адключыць", - "DisplayInOtherHomeScreenSections": "Паказаць ў раздзелах галоўнага экрана такія секцыі як \"Апошнія медыя\" і \"Працягнуць прагляд\"", + "DisplayInOtherHomeScreenSections": "Паказаць ў раздзелах галоўнага экрана такія секцыі як \"Нядаўна дададзеныя мультымедыя\" і \"Працягнуць прагляд\"", "DisplayMissingEpisodesWithinSeasons": "Паказаць адсутныя серыі ў сезону", "DrmChannelsNotImported": "Каналы з DRM не будуць імпартаваны.", "DropShadow": "Цень", @@ -1303,7 +1303,7 @@ "ShowAdvancedSettings": "Паказаць дадатковыя налады", "Suggestions": "Прапановы", "TabDashboard": "Панэль кіравання", - "TabLatest": "Апошні", + "TabLatest": "Нядаўна дададзены", "TabLogs": "Журналы", "TabMusic": "Музыка", "TabParentalControl": "Бацькоўскі кантроль", @@ -1435,7 +1435,7 @@ "Studios": "Студыі", "Subtitle": "Падзагаловак", "SubtitleVerticalPositionHelp": "Нумар радка, дзе з'яўляецца тэкст. Дадатныя лічбы паказваюць зверху ўніз. Адмоўныя лічбы паказваюць знізу ўверх.", - "HideWatchedContentFromLatestMedia": "Схаваць прагледжанае змесціва з \"Апошніх медыя\"", + "HideWatchedContentFromLatestMedia": "Схаваць прагледжанае змесціва з \"Нядаўна дададзеных медыя\"", "MessageRenameMediaFolder": "Перайменаванне медыятэкі прывядзе да страты ўсіх метададзеных, будзьце асцярожныя.", "LabelMaxDaysForNextUpHelp": "Усталюйце максімальную колькасць дзён, на працягу якіх шоу павінна заставацца ў спісе \"Далей\", без яго прагляду.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Наступныя медыя-месцы будуць выдалены з вашай бібліятэкі:", @@ -1492,10 +1492,10 @@ "HeaderInstall": "Усталяваць", "HeaderInstantMix": "Імгненны мікс", "HeaderKeepSeries": "Захоўвацт серыял", - "HeaderLatestMedia": "Новыя медыя", - "HeaderLatestMovies": "Апошнія фільмы", - "HeaderLatestMusic": "Новая музыка", - "HeaderLatestRecordings": "Апошнія запісы", + "HeaderLatestMedia": "Нядаўна дададзеныя медыя", + "HeaderLatestMovies": "Нядаўна дададзеныя фільмы", + "HeaderLatestMusic": "Нядаўна дададзеная музыка", + "HeaderLatestRecordings": "Нядаўна дададзеныя запісы", "HeaderLibraries": "Медыятэкі", "HeaderLibraryFolders": "Папкі медыятэкі", "HeaderLibraryOrder": "Парадак медыятэк", @@ -1679,5 +1679,15 @@ "SaveRecordingNFO": "Захаваць метададзеныя запісу EPG у NFO", "SaveRecordingNFOHelp": "Захоўвайце метаданыя ад пастаўшчыка спісаў EPG разам з медыяфайламі.", "SaveRecordingImages": "Захаванне запісу EPG выяў", - "SaveRecordingImagesHelp": "Захоўвайце выявы з спісаў EPG разам з мультымедыя." + "SaveRecordingImagesHelp": "Захоўвайце выявы з спісаў EPG разам з мультымедыя.", + "PreferEmbeddedExtrasTitlesOverFileNames": "Аддавайце перавагу ўбудаваным загалоўкам, а не імёнам файлаў для extras", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras часта маюць такое ж убудаванае імя, што і бацькоўскі, пазначце гэта, каб у любым выпадку выкарыстоўваць для іх убудаваныя загалоўкі.", + "HeaderDummyChapter": "Выявы раздзела", + "LabelDummyChapterDuration": "Інтэрвал:", + "LabelDummyChapterDurationHelp": "Інтэрвал вымання выявы главы ў секундах.", + "LabelDummyChapterCount": "Ліміт:", + "LabelDummyChapterCountHelp": "Максімальная колькасць выяваў раздзелаў, якія будуць выняты для кожнага медыяфайла.", + "LabelChapterImageResolution": "Дазвол:", + "LabelChapterImageResolutionHelp": "Дазвол вынятых малюнкаў раздзелаў.", + "ResolutionMatchSource": "Супадзенне з крыніцай" } From 3629e071c429b637ee8bf3fb67c24069f67f7c4a Mon Sep 17 00:00:00 2001 From: Pretendexxx Date: Fri, 17 Feb 2023 20:48:09 +0000 Subject: [PATCH 163/222] Translated using Weblate (Lithuanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lt/ --- src/strings/lt-lt.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 6ae8ade103..74dff4a2ee 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -115,7 +115,7 @@ "Identify": "Identifikuoti", "Images": "Atvaizdai", "InstallingPackage": "Diegiama {0} (versija {1})", - "InstantMix": "Leisti miksą", + "InstantMix": "Maišyti", "ItemCount": "{0} elementų", "Kids": "Vaikams", "Label3DFormat": "3D formatas:", @@ -809,7 +809,7 @@ "LabelProtocol": "Protokolas:", "LabelProtocolInfo": "Apie protokolą:", "HeaderCodecProfileHelp": "Kodekų profiliai nurodo įrenginio apribojimus, kai medija leidžiama su konkrečiais kodekais. Jei taikomas apribojimas, laikmena perkoduojama, net jei kodekas sukonfigūruotas tiesioginiam atkūrimui.", - "HeaderInstantMix": "auto miksavimas", + "HeaderInstantMix": "Maišyti", "HeaderLibraryAccess": "Mediatekos prieigos teisės", "HeaderLibraryOrder": "Mediatekos eiliškumas", "HeaderLibrarySettings": "Mediatekos nustatymai", From 8ee978aa700d5f199b62b4dd03e406e34453dfc7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Feb 2023 02:01:34 +0000 Subject: [PATCH 164/222] Update Linters --- package-lock.json | 332 +++++++++++++++++++++++----------------------- package.json | 10 +- 2 files changed, 171 insertions(+), 171 deletions(-) diff --git a/package-lock.json b/package-lock.json index c4fb4ec7ec..a06ce5f18e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,8 +68,8 @@ "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", "@types/react-dom": "17.0.18", - "@typescript-eslint/eslint-plugin": "5.50.0", - "@typescript-eslint/parser": "5.50.0", + "@typescript-eslint/eslint-plugin": "5.51.0", + "@typescript-eslint/parser": "5.51.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -81,8 +81,8 @@ "css-loader": "6.7.3", "cssnano": "5.1.14", "es-check": "7.1.0", - "eslint": "8.33.0", - "eslint-plugin-compat": "4.0.2", + "eslint": "8.34.0", + "eslint-plugin-compat": "4.1.1", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", @@ -105,7 +105,7 @@ "stylelint": "14.16.1", "stylelint-config-rational-order": "0.1.2", "stylelint-no-browser-hacks": "1.2.1", - "stylelint-order": "6.0.1", + "stylelint-order": "6.0.2", "stylelint-scss": "4.3.0", "ts-loader": "9.4.2", "typescript": "4.9.5", @@ -2679,9 +2679,9 @@ } }, "node_modules/@mdn/browser-compat-data": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.1.8.tgz", - "integrity": "sha512-iY8qGU+yJvscccvWLyWPKfF9BSLmSFth5HBNjSNtIfoyUrQV3lTZml+zyKWRymMYCgvos6LiSqMj1RDEj3TehA==", + "version": "5.2.36", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.36.tgz", + "integrity": "sha512-cS+xbp4jq+W04pFqw5639Grzj82JevJZst4b55Mk2NGc9wY7uXD6hlM6H0hkK5mLKXXZKsT1xq79W6LsSG4crw==", "dev": true }, "node_modules/@mrmlnc/readdir-enhanced": { @@ -3175,14 +3175,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", - "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", + "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/type-utils": "5.50.0", - "@typescript-eslint/utils": "5.50.0", + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/type-utils": "5.51.0", + "@typescript-eslint/utils": "5.51.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -3224,14 +3224,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", - "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", + "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", "debug": "^4.3.4" }, "engines": { @@ -3251,13 +3251,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", - "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", + "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0" + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3268,13 +3268,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", - "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", + "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.50.0", - "@typescript-eslint/utils": "5.50.0", + "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/utils": "5.51.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3295,9 +3295,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", - "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", + "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3308,13 +3308,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", - "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", + "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3379,16 +3379,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", - "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", + "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -3420,12 +3420,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", - "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", + "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/types": "5.51.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -4417,9 +4417,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "devOptional": true, "funding": [ { @@ -4432,10 +4432,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" }, "bin": { "browserslist": "cli.js" @@ -4445,9 +4445,9 @@ } }, "node_modules/browserslist/node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "devOptional": true }, "node_modules/buffer-from": { @@ -4604,9 +4604,9 @@ "dev": true }, "node_modules/caniuse-lite": { - "version": "1.0.30001441", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", - "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", + "version": "1.0.30001456", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz", + "integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==", "devOptional": true, "funding": [ { @@ -6086,9 +6086,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.265", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.265.tgz", - "integrity": "sha512-38KaYBNs0oCzWCpr6j7fY/W9vF0vSp4tKFIshQTgdZMhUpkxgotkQgjJP6iGMdmlsgMs3i0/Hkko4UXLTrkYVQ==", + "version": "1.4.302", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.302.tgz", + "integrity": "sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==", "devOptional": true }, "node_modules/emoji-regex": { @@ -6385,9 +6385,9 @@ } }, "node_modules/eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", + "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.4.1", @@ -6504,19 +6504,19 @@ } }, "node_modules/eslint-plugin-compat": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.0.2.tgz", - "integrity": "sha512-xqvoO54CLTVaEYGMzhu35Wzwk/As7rCvz/2dqwnFiWi0OJccEtGIn+5qq3zqIu9nboXlpdBN579fZcItC73Ycg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.1.tgz", + "integrity": "sha512-vUAaqKcDwXpVASyCAfKzkfaw3NxZ6FqeCNSGp7yqHpUMzkAiWRO0B6pR5zqh8RUhvybwXhPXvwVKDLr9GqGFUQ==", "dev": true, "dependencies": { - "@mdn/browser-compat-data": "^4.1.5", + "@mdn/browser-compat-data": "^5.2.34", "ast-metadata-inferer": "^0.7.0", - "browserslist": "^4.16.8", - "caniuse-lite": "^1.0.30001304", - "core-js": "^3.16.2", + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001450", + "core-js": "^3.27.2", "find-up": "^5.0.0", "lodash.memoize": "4.1.2", - "semver": "7.3.5" + "semver": "7.3.8" }, "engines": { "node": ">=9.x" @@ -6587,9 +6587,9 @@ } }, "node_modules/eslint-plugin-compat/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -17037,16 +17037,16 @@ } }, "node_modules/stylelint-order": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.1.tgz", - "integrity": "sha512-C9gJDZArRBZvn+4MPgggwYTp7dK49WPnYa5+6tBEkZnW/YWj4xBVNJdQjIik14w5orlF9RqFpYDHN0FPWIFOSQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.2.tgz", + "integrity": "sha512-yuac0BE6toHd27wUPvYVVQicAJthKFIv1HPQFH3Q0dExiO3Z6Uam7geoO0tUd5Z9ddsATYK++1qWNDX4RxMH5Q==", "dev": true, "dependencies": { - "postcss": "^8.4.20", + "postcss": "^8.4.21", "postcss-sorting": "^8.0.1" }, "peerDependencies": { - "stylelint": "^14.0.0" + "stylelint": "^14.0.0 || ^15.0.0" } }, "node_modules/stylelint-order/node_modules/postcss-sorting": { @@ -18120,9 +18120,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "devOptional": true, "funding": [ { @@ -20905,9 +20905,9 @@ } }, "@mdn/browser-compat-data": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-4.1.8.tgz", - "integrity": "sha512-iY8qGU+yJvscccvWLyWPKfF9BSLmSFth5HBNjSNtIfoyUrQV3lTZml+zyKWRymMYCgvos6LiSqMj1RDEj3TehA==", + "version": "5.2.36", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.36.tgz", + "integrity": "sha512-cS+xbp4jq+W04pFqw5639Grzj82JevJZst4b55Mk2NGc9wY7uXD6hlM6H0hkK5mLKXXZKsT1xq79W6LsSG4crw==", "dev": true }, "@mrmlnc/readdir-enhanced": { @@ -21356,14 +21356,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", - "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", + "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/type-utils": "5.50.0", - "@typescript-eslint/utils": "5.50.0", + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/type-utils": "5.51.0", + "@typescript-eslint/utils": "5.51.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -21385,53 +21385,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", - "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", + "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", - "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", + "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0" + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0" } }, "@typescript-eslint/type-utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", - "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", + "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.50.0", - "@typescript-eslint/utils": "5.50.0", + "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/utils": "5.51.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", - "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", + "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", - "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", + "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -21471,16 +21471,16 @@ } }, "@typescript-eslint/utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", - "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", + "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -21498,12 +21498,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", - "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", + "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/types": "5.51.0", "eslint-visitor-keys": "^3.3.0" }, "dependencies": { @@ -22281,21 +22281,21 @@ } }, "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", "devOptional": true, "requires": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" }, "dependencies": { "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", "devOptional": true } } @@ -22421,9 +22421,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001441", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", - "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==", + "version": "1.0.30001456", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz", + "integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==", "devOptional": true }, "ccount": { @@ -23511,9 +23511,9 @@ } }, "electron-to-chromium": { - "version": "1.4.265", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.265.tgz", - "integrity": "sha512-38KaYBNs0oCzWCpr6j7fY/W9vF0vSp4tKFIshQTgdZMhUpkxgotkQgjJP6iGMdmlsgMs3i0/Hkko4UXLTrkYVQ==", + "version": "1.4.302", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.302.tgz", + "integrity": "sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==", "devOptional": true }, "emoji-regex": { @@ -23757,9 +23757,9 @@ "dev": true }, "eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz", + "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", "dev": true, "requires": { "@eslint/eslintrc": "^1.4.1", @@ -24046,19 +24046,19 @@ } }, "eslint-plugin-compat": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.0.2.tgz", - "integrity": "sha512-xqvoO54CLTVaEYGMzhu35Wzwk/As7rCvz/2dqwnFiWi0OJccEtGIn+5qq3zqIu9nboXlpdBN579fZcItC73Ycg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.1.tgz", + "integrity": "sha512-vUAaqKcDwXpVASyCAfKzkfaw3NxZ6FqeCNSGp7yqHpUMzkAiWRO0B6pR5zqh8RUhvybwXhPXvwVKDLr9GqGFUQ==", "dev": true, "requires": { - "@mdn/browser-compat-data": "^4.1.5", + "@mdn/browser-compat-data": "^5.2.34", "ast-metadata-inferer": "^0.7.0", - "browserslist": "^4.16.8", - "caniuse-lite": "^1.0.30001304", - "core-js": "^3.16.2", + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001450", + "core-js": "^3.27.2", "find-up": "^5.0.0", "lodash.memoize": "4.1.2", - "semver": "7.3.5" + "semver": "7.3.8" }, "dependencies": { "find-up": { @@ -24099,9 +24099,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -31839,12 +31839,12 @@ } }, "stylelint-order": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.1.tgz", - "integrity": "sha512-C9gJDZArRBZvn+4MPgggwYTp7dK49WPnYa5+6tBEkZnW/YWj4xBVNJdQjIik14w5orlF9RqFpYDHN0FPWIFOSQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.2.tgz", + "integrity": "sha512-yuac0BE6toHd27wUPvYVVQicAJthKFIv1HPQFH3Q0dExiO3Z6Uam7geoO0tUd5Z9ddsATYK++1qWNDX4RxMH5Q==", "dev": true, "requires": { - "postcss": "^8.4.20", + "postcss": "^8.4.21", "postcss-sorting": "^8.0.1" }, "dependencies": { @@ -32551,9 +32551,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", - "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "devOptional": true, "requires": { "escalade": "^3.1.1", diff --git a/package.json b/package.json index bafc4ff4bc..f664622998 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", "@types/react-dom": "17.0.18", - "@typescript-eslint/eslint-plugin": "5.50.0", - "@typescript-eslint/parser": "5.50.0", + "@typescript-eslint/eslint-plugin": "5.51.0", + "@typescript-eslint/parser": "5.51.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -32,8 +32,8 @@ "css-loader": "6.7.3", "cssnano": "5.1.14", "es-check": "7.1.0", - "eslint": "8.33.0", - "eslint-plugin-compat": "4.0.2", + "eslint": "8.34.0", + "eslint-plugin-compat": "4.1.1", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", @@ -56,7 +56,7 @@ "stylelint": "14.16.1", "stylelint-config-rational-order": "0.1.2", "stylelint-no-browser-hacks": "1.2.1", - "stylelint-order": "6.0.1", + "stylelint-order": "6.0.2", "stylelint-scss": "4.3.0", "ts-loader": "9.4.2", "typescript": "4.9.5", From a859bfe1417c0c27cfd162fceb43605736cbd7e1 Mon Sep 17 00:00:00 2001 From: rushmash Date: Sun, 19 Feb 2023 13:12:06 +0000 Subject: [PATCH 165/222] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 60 ++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 97bc59933d..a53e391db2 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -30,7 +30,7 @@ "AlwaysPlaySubtitlesHelp": "Субтитры, соответствующие настройке языка, будут загружаться независимо от языка аудио.", "AnyLanguage": "Любой язык", "Anytime": "В любое время", - "AroundTime": "Около", + "AroundTime": "Около {0}", "Art": "Вырезка", "Artists": "Исполнители", "AsManyAsPossible": "Как можно больше", @@ -79,20 +79,20 @@ "ButtonPreviousTrack": "Предыдущая дорожка", "ButtonQuickStartGuide": "Руководство по запуску", "ButtonRefreshGuideData": "Обновить данные телегида", - "ButtonRemove": "Изъять", + "ButtonRemove": "Удалить", "ButtonRename": "Переименовать", "ButtonResetEasyPassword": "Сбросить простой PIN-код", - "ButtonResume": "Возобновление", + "ButtonResume": "Возобновить", "ButtonRevoke": "Отозвать", "ButtonScanAllLibraries": "Сканировать все медиатеки", "ButtonSelectDirectory": "Выбрать каталог", "ButtonSelectView": "Выбрать представление", "ButtonSend": "Отправить", "ButtonShutdown": "Завершить работу", - "ButtonSignIn": "Вход", + "ButtonSignIn": "Войти", "ButtonSignOut": "Выйти", "ButtonStart": "Запустить", - "ButtonStop": "Стоп", + "ButtonStop": "Остановить", "ButtonSubmit": "Подтвердить", "ButtonTogglePlaylist": "Плей-лист", "ButtonTrailer": "Трейлер", @@ -116,10 +116,10 @@ "ConfirmDeleteImage": "Удалить изображение?", "ConfirmDeleteItem": "При удалении данного элемента, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?", "ConfirmDeleteItems": "При удалении данных элементов, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?", - "ConfirmDeletion": "Подтверждение удаления", + "ConfirmDeletion": "Подтверить удаление", "ConfirmEndPlayerSession": "Вы хотите завершить работу Jellyfin на {0}?", "Connect": "Соединиться", - "ContinueWatching": "Продолжение просмотра", + "ContinueWatching": "Продолжить просмотр", "Continuing": "Продолжаемое", "Copied": "Скопировано", "Copy": "Копировать", @@ -155,7 +155,7 @@ "Disconnect": "Разъединиться", "Display": "Отображение", "DisplayInMyMedia": "Показывать на главном экране", - "DisplayInOtherHomeScreenSections": "Показывать в разделах главного экрана как \"Новые медиаданные\", \"Продолжение просмотра\"", + "DisplayInOtherHomeScreenSections": "Показывать в разделах главного экрана как \"Новые медиаданные\", \"Продолжить просмотр\"", "DisplayMissingEpisodesWithinSeasons": "Отображать отсутствующие эпизоды в пределах сезонов", "DisplayMissingEpisodesWithinSeasonsHelp": "Это также должно быть включено для ТВ-медиатек в конфигурации сервера.", "DisplayModeHelp": "Выберите желательный стиль разметки для интерфейса.", @@ -204,7 +204,7 @@ "Extras": "Допматериалы", "FFmpegSavePathNotFound": "Мы не смогли найти FFmpeg по введённому вами пути. FFprobe также необходим и должен быть в той же самой папке. Эти компоненты обычно поставляются вместе в одном загрузочном пакете. Проверьте путь и повторите попытку.", "FastForward": "Быстро вперёд", - "Favorite": "Избранное", + "Favorite": "Избранный", "Favorites": "Избранное", "Features": "Средства", "File": "Файл", @@ -214,12 +214,12 @@ "Filters": "Фильтры", "Folders": "Папки", "FormatValue": "Формат: {0}", - "Friday": "пятница", + "Friday": "Пятница", "Fullscreen": "Полный экран", "General": "Общие", "Genre": "Жанр", "Genres": "Жанры", - "GroupBySeries": "Группирование по сериалам", + "GroupBySeries": "Сгруппировать по сериалам", "GroupVersions": "Сгруппировать версии", "GuestStar": "Приглашенный актёр", "Guide": "Телегид", @@ -267,7 +267,7 @@ "HeaderContainerProfile": "Профиль контейнера", "HeaderContainerProfileHelp": "Профили контейнеров обозначают ограничения устройства при воспроизведении определённых форматов. Если применяется ограничение, то медиаданные перекодируются, даже если формат настроен для прямого воспроизведения.", "HeaderContinueListening": "Продолжение прослушивания", - "HeaderContinueWatching": "Продолжение просмотра", + "HeaderContinueWatching": "Продолжить просмотр", "HeaderCustomDlnaProfiles": "Настраиваемые профили", "HeaderDateIssued": "Дата выдачи", "HeaderDefaultRecordingSettings": "Стандартные параметры записи", @@ -307,11 +307,11 @@ "HeaderKeepRecording": "Продолжать запись", "HeaderKeepSeries": "Хранение сериала", "HeaderKodiMetadataHelp": "Для включения или отключения NFO-метаданных, правьте медиатеку и найдите раздел \"Хранители метаданных\".", - "HeaderLatestEpisodes": "Новые эпизоды", - "HeaderLatestMedia": "Новые медиаданные", - "HeaderLatestMovies": "Новые фильмы", - "HeaderLatestMusic": "Новая музыка", - "HeaderLatestRecordings": "Новые записи", + "HeaderLatestEpisodes": "Недавно добавленные эпизоды", + "HeaderLatestMedia": "Недавно добавленные медиаданные", + "HeaderLatestMovies": "Недавно добавленные фильмы", + "HeaderLatestMusic": "Недавно добавленная музыка", + "HeaderLatestRecordings": "Недавно добавленные записи", "HeaderLibraries": "Медиатеки", "HeaderLibraryAccess": "Доступ к медиатеке", "HeaderLibraryFolders": "Медиатечные папки", @@ -409,7 +409,7 @@ "HeaderYears": "Годы", "Help": "Справка", "Hide": "Скрыть", - "HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание в разделе «Новые медиаданные»", + "HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание в разделе «Недавно добавленные медиаданные»", "Home": "Главное", "Horizontal": "Горизонтально", "HttpsRequiresCert": "Чтобы включить HTTPS для внешних подключений, вам нужно будет предоставить доверенный SSL-cертификат, например, Let's Encrypt. Предоставьте сертификат или отключите защищенные соединения.", @@ -743,7 +743,7 @@ "LabelffmpegPathHelp": "Путь к файлу приложения FFmpeg или к папке содержащей FFmpeg.", "LanNetworksHelp": "Список разделённых запятыми IP-адресов или записей IP/netmask для сетей, которые будут считаться находящимися в локальной сети, когда принудительно ограничивается пропускная способность. Если так установлено, то все остальные IP-адреса будут считаться находящимися во внешней сети и будут подлежать ограничениям внешней полосы пропускания. Если не заполнять, то считается, что только подсеть сервера находится в локальной сети.", "Large": "Крупный", - "LatestFromLibrary": "Новые: {0}", + "LatestFromLibrary": "Недавно добавленные в: {0}", "LearnHowYouCanContribute": "Изучите, как вы можете внести свой вклад.", "LibraryAccessHelp": "Выделите медиатеки, чтобы дать доступ этому пользователю. Администраторы могут изменять все папки с помощью «Диспетчера метаданных».", "List": "Список", @@ -1096,7 +1096,7 @@ "TabContainers": "Контейнеры", "TabDashboard": "Панель", "TabDirectPlay": "Прямое воспроизведение", - "TabLatest": "Последние", + "TabLatest": "Недавно добавленные", "TabLogs": "Журналы", "TabMusic": "Музыка", "TabMyPlugins": "Мои плагины", @@ -1247,7 +1247,7 @@ "OptionForceRemoteSourceTranscoding": "Перекодировать принудительно удалённые источники медиаданных (нпр., эфирное ТВ)", "NoCreatedLibraries": "Похоже, вы еще не создали ни одной медиатеки. {0}Желаете создать её сейчас?{1}", "AskAdminToCreateLibrary": "Попросите администратора создать медиатеку.", - "AllowFfmpegThrottling": "Дросселировать перекодировки", + "AllowFfmpegThrottling": "Ограничить перекодировки", "PlaybackErrorNoCompatibleStream": "Этот клиент несовместим с медиаданными, а сервер не отправляет медиаданные в совместимом формате.", "AllowFfmpegThrottlingHelp": "Когда перекодировка или ремуксинг заметно опережают текущую позицию воспроизведения, процесс приостанавливается, чтобы потреблять меньше ресурсов. Это очень полезно, когда вы редко перематываете видео при просмотре. Выключите это, если возникают проблемы с воспроизведением.", "OnWakeFromSleep": "При пробуждении ото сна", @@ -1281,7 +1281,7 @@ "UnsupportedPlayback": "Jellyfin не может расшифровать содержимое, защищенное DRM, но в любом случае будет предпринята попытка расшифровки всего содержимого, включая защищенные заголовки. Некоторые файлы могут выглядеть полностью черными из-за шифрования или других неподдерживаемых средств, таких как интерактивные заголовки.", "LabelRequireHttpsHelp": "Если этот флажок установлен, сервер будет автоматически перенаправлять все запросы через HTTP на HTTPS. Это не имеет никакого эффекта, если сервер не слушает HTTPS.", "LabelEnableHttpsHelp": "Прослушивается указанный HTTPS-порт. Чтобы это вступило в силу, также необходимо предоставить действительный сертификат.", - "ApiKeysCaption": "Список действующих текущих API-ключей", + "ApiKeysCaption": "Список действующих API-ключей", "SaveChanges": "Изменить", "LabelRequireHttps": "Требуется HTTPS", "LabelStable": "Стабильная", @@ -1328,7 +1328,7 @@ "EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с уникальным заполнением.", "EnableBlurHash": "Включить размытые заполнители для изображений", "ButtonSyncPlay": "Совместный просмотр", - "ButtonCast": "Трансляция на устройство", + "ButtonCast": "Транслировать на устройство", "TabRepositories": "Репозитории", "MessageNoGenresAvailable": "Включаются какие-либо поставщики метаданных для получения жанров из интернета.", "MessageAddRepository": "Если вы хотите добавить репозиторий, нажмите кнопку рядом с заголовком и заполните необходимую информацию.", @@ -1412,7 +1412,7 @@ "EnableQuickConnect": "Разрешить быстрое подключение", "EnableAutoCast": "Задать по умолчанию", "ButtonUseQuickConnect": "Использовать быстрое подключение", - "ButtonActivate": "Активация", + "ButtonActivate": "Активировать", "Authorize": "Авторизовать", "LabelUserMaxActiveSessions": "Максимальное количество одновременных пользовательских сессий:", "OptionMaxActiveSessionsHelp": "Значение 0 отключит эту функцию.", @@ -1510,7 +1510,7 @@ "EnableEnhancedNvdecDecoder": "Включить улучшенный декодер NVDEC", "DisablePlugin": "Отключить", "EnablePlugin": "Включить", - "Framerate": "Ч-та кадров", + "Framerate": "Частота кадров", "DirectPlayHelp": "Исходный файл полностью совместим с этим клиентом, а сеанс получает файл без изменений.", "HeaderContinueReading": "Продолжение чтения", "EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров. (Необходим режим отображения \"TV\")", @@ -1520,8 +1520,8 @@ "MessageSent": "Сообщение отправлено.", "LabelSlowResponseTime": "Время, после которого ответ считается медленным, мс:", "LabelSlowResponseEnabled": "Журналировать предупреждающее сообщение, если сервер отвечал медленно", - "UseEpisodeImagesInNextUpHelp": "В разделах \"Следующие серии\" и \"Продолжение просмотра\" будут использоваться как эскизы рисунки эпизодов вместо головного эскиза сериала.", - "UseEpisodeImagesInNextUp": "Использовать рисунки эпизодов в разделах \"Следующие серии\" и \"Продолжение просмотра\"", + "UseEpisodeImagesInNextUpHelp": "В разделах \"Следующие серии\" и \"Продолжить просмотр\" будут использоваться как эскизы рисунки эпизодов вместо головного эскиза сериала.", + "UseEpisodeImagesInNextUp": "Использовать рисунки эпизодов в разделах \"Следующие серии\" и \"Продолжить просмотр\"", "LabelLocalCustomCss": "Настраиваемый CSS-код для стилизации, применимый только к этому клиенту. Вы можете отключить настраиваемый CSS-код сервера.", "LabelDisableCustomCss": "Отключает настраиваемый CSS-код для тематирования/брендирования, предоставляемый сервером.", "DisableCustomCss": "Отключить предоставляемый сервером настраиваемый CSS-код", @@ -1588,7 +1588,7 @@ "Typewriter": "Машинописный", "Print": "Типографский", "Larger": "Очень крупный", - "Console": "Консольный", + "Console": "Консоль", "Casual": "Неформальный", "TypeOptionPluralVideo": "Видео элементы", "TypeOptionPluralSeries": "ТВ-передачи", @@ -1603,7 +1603,7 @@ "TypeOptionPluralAudio": "Аудио элементы", "LabelAutomaticallyAddToCollectionHelp": "Если хотя бы два фильма имеют одинаковое название коллекции, они будут автоматически добавлены в коллекцию.", "LabelAutomaticallyAddToCollection": "Автоматически добавлять в коллекцию", - "Cursive": "Курсивный", + "Cursive": "Курсив", "PreferSystemNativeHwDecoder": "Предпочитать из декодеров встроенный в ОС DXVA или аппаратный VA-API", "LabelHardwareEncodingOptions": "Опции аппаратного кодирования:", "IntelLowPowerEncHelp": "Энергосберегающее кодирование может оставить ненужную синхронизацию CPU-GPU. В Linux они должны быть отключены, если микропрограмма i915 HuC не настроена.", @@ -1625,7 +1625,7 @@ "BehindTheScenes": "За кадром", "Trailer": "Трейлер", "Clip": "Отрывок", - "ButtonExitApp": "Выход из приложения", + "ButtonExitApp": "Выйти из приложения", "AllowEmbeddedSubtitlesAllowTextOption": "Разрешить текст", "AllowEmbeddedSubtitlesAllowImageOption": "Разрешить рисунок", "AllowEmbeddedSubtitlesAllowNoneOption": "Ничего не разрешать", From 5844721cae59baab9c2313a40d9510878a843da6 Mon Sep 17 00:00:00 2001 From: rushmash Date: Sun, 19 Feb 2023 13:33:10 +0000 Subject: [PATCH 166/222] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index a53e391db2..5f6dad04e0 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1688,5 +1688,10 @@ "DownloadAll": "Скачать все", "StereoDownmixAlgorithmHelp": "Алгоритм используемый для смешивания многоканального аудио в стерео.", "LabelStereoDownmixAlgorithm": "Алгоритм смешивания стерео", - "Experimental": "Экспериментальные" + "Experimental": "Экспериментальные", + "LabelDummyChapterDuration": "Интервал:", + "LabelChapterImageResolution": "Разрешение изображения:", + "HeaderDummyChapter": "Изображения глав", + "LabelDummyChapterCount": "Лимит:", + "HeaderRecordingMetadataSaving": "Метадата записей" } From 865e9323b260547a9943ba62cac6fb0ffe51e9ae Mon Sep 17 00:00:00 2001 From: rushmash Date: Sun, 19 Feb 2023 17:10:32 +0000 Subject: [PATCH 167/222] 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 5f6dad04e0..90b9def5f2 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1693,5 +1693,5 @@ "LabelChapterImageResolution": "Разрешение изображения:", "HeaderDummyChapter": "Изображения глав", "LabelDummyChapterCount": "Лимит:", - "HeaderRecordingMetadataSaving": "Метадата записей" + "HeaderRecordingMetadataSaving": "Метаданные записей" } From 89b82e6d5214d37d94deed23dbf2acc7c7f838fc Mon Sep 17 00:00:00 2001 From: Cyteon Date: Mon, 20 Feb 2023 13:56:41 +0000 Subject: [PATCH 168/222] =?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 | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 27185c3720..c67c6a61d0 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1525,7 +1525,7 @@ "VideoFramerateNotSupported": "Videoens bildefrekvens støttes ikke", "VideoBitDepthNotSupported": "Videoens bitdybde støttes ikke", "RefFramesNotSupported": "Referanse-bilder støttes ikke", - "EnableGamepadHelp": "Lytt til inndata fra tilkoblet kontroller.", + "EnableGamepadHelp": "Lytt til inndata fra tilkoblet kontroller. (Krever: \"TV\"-visningsmodus)", "LabelEnableGamepad": "Aktiver spillkontroller", "AudioBitDepthNotSupported": "Lydens bitdybde støttes ikke", "ThemeSong": "Tema-låt", @@ -1685,5 +1685,12 @@ "MessageNoItemsAvailable": "Ingen filer er tilgjengelige for øyeblikket.", "OptionDateShowAdded": "Dato serien ble lagt til", "Experimental": "Eksperimentell", - "DownloadAll": "Laste ned alt" + "DownloadAll": "Laste ned alt", + "LabelDummyChapterCountHelp": "Maksimalt antall kapittelbilder som vil bli ekstrahert for hver mediefil.", + "LabelStereoDownmixAlgorithm": "Stereo nedmiksingsalgoritme", + "HeaderDummyChapter": "Kapittel Bilder", + "LabelDummyChapterCount": "Grense:", + "LabelChapterImageResolution": "Oppløsning:", + "LabelDummyChapterDuration": "Intervall:", + "HeaderRecordingMetadataSaving": "Opptak metadata" } From 9686fb58f40554dca5d35914fe3c75405fa8ed93 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 17:25:36 +0000 Subject: [PATCH 169/222] Update dependency dompurify to v2.4.4 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index a06ce5f18e..8e41559fff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "classnames": "2.3.2", "core-js": "3.27.2", "date-fns": "2.29.3", - "dompurify": "2.4.3", + "dompurify": "2.4.4", "epubjs": "0.4.2", "escape-html": "1.0.3", "fast-text-encoding": "1.0.6", @@ -5940,9 +5940,9 @@ "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==" }, "node_modules/dompurify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", - "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==" + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.4.tgz", + "integrity": "sha512-1e2SpqHiRx4DPvmRuXU5J0di3iQACwJM+mFGE2HAkkK7Tbnfk9WcghcAmyWc9CRrjyRRUpmuhPUH6LphQQR3EQ==" }, "node_modules/domutils": { "version": "1.7.0", @@ -23399,9 +23399,9 @@ "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==" }, "dompurify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz", - "integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==" + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.4.tgz", + "integrity": "sha512-1e2SpqHiRx4DPvmRuXU5J0di3iQACwJM+mFGE2HAkkK7Tbnfk9WcghcAmyWc9CRrjyRRUpmuhPUH6LphQQR3EQ==" }, "domutils": { "version": "1.7.0", diff --git a/package.json b/package.json index f664622998..c32a113e06 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "classnames": "2.3.2", "core-js": "3.27.2", "date-fns": "2.29.3", - "dompurify": "2.4.3", + "dompurify": "2.4.4", "epubjs": "0.4.2", "escape-html": "1.0.3", "fast-text-encoding": "1.0.6", From 288196827fd2c74a2c58e8757f2f15b4e9fe3a74 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 21:39:36 +0000 Subject: [PATCH 170/222] Update dependency core-js to v3.28.0 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index a06ce5f18e..f4fe09eb6d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "blurhash": "2.0.4", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.3.2", - "core-js": "3.27.2", + "core-js": "3.28.0", "date-fns": "2.29.3", "dompurify": "2.4.3", "epubjs": "0.4.2", @@ -5141,9 +5141,9 @@ } }, "node_modules/core-js": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz", - "integrity": "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==", + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.28.0.tgz", + "integrity": "sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -22822,9 +22822,9 @@ } }, "core-js": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz", - "integrity": "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==" + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.28.0.tgz", + "integrity": "sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==" }, "core-js-compat": { "version": "3.25.3", diff --git a/package.json b/package.json index f664622998..fe76051456 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "blurhash": "2.0.4", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.3.2", - "core-js": "3.27.2", + "core-js": "3.28.0", "date-fns": "2.29.3", "dompurify": "2.4.3", "epubjs": "0.4.2", From 2a4d34711690beb2c602d52969aa24ae059354ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20I=C3=B1aki=20Bilbao?= Date: Tue, 21 Feb 2023 03:31:34 +0000 Subject: [PATCH 171/222] 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 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 5d4d6f500b..4962e4b8e0 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1235,7 +1235,7 @@ "TitleHostingSettings": "Configuraciones de alojamiento", "TitleHardwareAcceleration": "Aceleración por hardware", "Thursday": "Jueves", - "Thumb": "Pulgar", + "Thumb": "Miniatura", "TheseSettingsAffectSubtitlesOnThisDevice": "Esta configuración afecta los subtítulos en este dispositivo", "ThemeVideos": "Videos temáticos", "ThemeSongs": "Canciones temáticas", @@ -1353,7 +1353,7 @@ "NextTrack": "Pasar al siguiente", "LabelUnstable": "Inestable", "Video": "Video", - "ThumbCard": "Tarjeta de pulgar", + "ThumbCard": "Tarjeta de miniatura", "Subtitle": "Subtítulo", "SpecialFeatures": "Características especiales", "SelectServer": "Seleccionar servidor", @@ -1517,7 +1517,7 @@ "MessageSent": "Mensaje enviado.", "LabelSlowResponseTime": "Tiempo en ms después de lo cual una respuesta es considerada lenta:", "LabelSlowResponseEnabled": "Log de alarma si la respuesta del servidor fue lenta", - "UseEpisodeImagesInNextUpHelp": "Las secciones Siguiente y Continuar viendo utilizaran imagenes del episodio como miniaturas en lugar de miniaturas del show.", + "UseEpisodeImagesInNextUpHelp": "Las secciones 'Siguiente' y 'Continuar viendo' utilizarán imágenes del episodio como miniaturas en lugar de miniaturas del show.", "UseEpisodeImagesInNextUp": "Usar imágenes de los episodios en \"Siguiente\" y \"Continuar Viendo\"", "LabelAutomaticallyAddToCollection": "Agregar automáticamente a la colección", "HeaderSyncPlayTimeSyncSettings": "Sincronización de tiempo", From d69d4b22d9b72180fd8f27e6cbf384e2f4db032c Mon Sep 17 00:00:00 2001 From: lyaschuchenko Date: Tue, 21 Feb 2023 05:23:24 +0000 Subject: [PATCH 172/222] Translated using Weblate (Ukrainian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uk/ --- src/strings/uk.json | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/src/strings/uk.json b/src/strings/uk.json index a529cdbb78..07b7b3c2a0 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -8,10 +8,10 @@ "DeathDateValue": "Помер: {0}", "Favorite": "Обране", "HeaderDeleteDevice": "Видаліть пристрій", - "HeaderLatestEpisodes": "Нещодавно переглянуті епізоди", - "HeaderLatestMedia": "Нещодавно переглянуті", - "HeaderLatestMovies": "Нещодавні фільми", - "HeaderLatestMusic": "Остання музика", + "HeaderLatestEpisodes": "Нещодавно додані серії", + "HeaderLatestMedia": "Нещодавно додані медіа", + "HeaderLatestMovies": "Нещодавно додані фільми", + "HeaderLatestMusic": "Нещодавно додана музика", "HeaderSeasons": "Сезони", "HeaderTracks": "Доріжки", "HeaderUsers": "Користувачі", @@ -274,7 +274,7 @@ "DrmChannelsNotImported": "Канали з DRM не імпортуватимуться.", "DisplayModeHelp": "Виберіть бажаний стиль макету інтерфейсу.", "DisplayMissingEpisodesWithinSeasonsHelp": "Також, це має бути включено для ТВ-медіатек у конфігурації сервера.", - "DisplayInOtherHomeScreenSections": "Показувати на головному екрані такі розділи як \"Останні медіа\" і \"Продовження перегляду\"", + "DisplayInOtherHomeScreenSections": "Відображення в розділах головного екрана, таких як «Нещодавно додані медіа» та «Продовжити перегляд»", "DeleteDevicesConfirmation": "Ви впевнені, що хочете видалити всі пристрої? Усі інші сеанси будуть завершені. Пристрої знову з’являться, після того як користувач увійде в систему.", "DeleteAll": "Видалити все", "Data": "Дані", @@ -583,7 +583,7 @@ "Identify": "Ідентифікувати", "Horizontal": "Горизонтально", "Home": "Головна", - "HideWatchedContentFromLatestMedia": "Приховати переглянуте з останніх медіа", + "HideWatchedContentFromLatestMedia": "Приховати переглянутий вміст із «Нещодавно доданих медіа»", "Hide": "Приховати", "Help": "Допомога", "HeaderYears": "Роки", @@ -723,7 +723,7 @@ "HeaderLibraryAccess": "Доступ до медіатеки", "HeaderLibraryFolders": "Папки медіатеки", "HeaderLibraryOrder": "Порядок медіатек", - "HeaderLatestRecordings": "Останні записи", + "HeaderLatestRecordings": "Нещодавно додані записи", "HeaderKodiMetadataHelp": "Щоб увімкнути або вимкнути метадані NFO, відкрийте меню редагування медіатеки та знайдіть розділ \"Збереження метаданих\".", "HeaderKeepSeries": "Зберегти серіал", "HeaderKeepRecording": "Продовжуйте записувати", @@ -909,7 +909,7 @@ "LibraryAccessHelp": "Виберіть медіатеки, якими хочете поділитися з цим користувачем. Адміністратори зможуть редагувати всі папки за допомогою менеджера метаданих.", "LeaveBlankToNotSetAPassword": "Ви можете залишити це поле порожнім, щоб не встановлювати пароль.", "LearnHowYouCanContribute": "Дізнайтеся, як ви можете зробити свій внесок.", - "LatestFromLibrary": "Нове в {0}", + "LatestFromLibrary": "Нещодавно додано в {0}", "LastSeen": "Востаннє був {0}", "Larger": "Більший", "LabelZipCode": "Індекс:", @@ -1049,7 +1049,7 @@ "LabelSelectFolderGroupsHelp": "Папки, для яких не встановлено прапорець, відображатимуться самі по собі у власному поданні.", "LabelSeasonNumber": "Номер сезону:", "LabelScreensaver": "Заставка:", - "LabelScheduledTaskLastRan": "Останній раз запускалося: {0}, час виконання: {1}.", + "LabelScheduledTaskLastRan": "Останній запуск: {0}, час виконання: {1}.", "LabelSaveLocalMetadata": "Збережіть ілюстрацію в медіа-папках", "LabelRuntimeMinutes": "Час виконання:", "LabelRequireHttps": "Вимагати HTTPS", @@ -1284,7 +1284,7 @@ "PackageInstallFailed": "Помилка встановлення {0} (версія {1}).", "PackageInstallCompleted": "Установлення {0} (версія {1}) завершено.", "PackageInstallCancelled": "Установлення {0} (версія {1}) скасовано.", - "OtherArtist": "Інший художник", + "OtherArtist": "Інший виконавець", "OriginalAirDateValue": "Початкова дата ефіру: {0}", "OptionWakeFromSleep": "Пробудити", "OptionUnairedEpisode": "Невипущені епізоди", @@ -1422,7 +1422,7 @@ "TabMyPlugins": "Мої плагіни", "TabMusic": "Музика", "TabLogs": "Журнали", - "TabLatest": "Останні", + "TabLatest": "Нещодавно додані", "TabDashboard": "Панель", "TabContainers": "Контейнери", "TabCodecs": "Кодеки", @@ -1518,7 +1518,7 @@ "SubtitleCodecNotSupported": "Кодек субтитрів не підтримується", "ContainerNotSupported": "Контейнер не підтримується", "AudioCodecNotSupported": "Аудіокодек не підтримується", - "EnableGamepadHelp": "Слухайте вхід з будь-яких підключених контролерів.", + "EnableGamepadHelp": "Очікуйте вхідних даних від будь-яких підключених контролерів. (Вимагається: режим відображення «TV»)", "LabelEnableGamepad": "Увімкнути геймпад", "Controls": "Елементи керування", "AllowVppTonemappingHelp": "Повне відображення тонів на основі драйверів Intel. Наразі працює лише на певному обладнанні з відео HDR10. Це має вищий пріоритет порівняно з іншою реалізацією OpenCL.", @@ -1559,8 +1559,8 @@ "XmlTvMovieCategoriesHelp": "Програми з цими категоріями відображатимуться як фільми. Розділіть множинні символом \"|\".", "XmlTvKidsCategoriesHelp": "Програми з цими категоріями відображатимуться як програми для дітей. Розділіть множинні символом \"|\".", "XmlDocumentAttributeListHelp": "Ці атрибути застосовуються до кореневого елемента кожної відповіді XML.", - "Writers": "Письменники", - "Writer": "Письменник", + "Writers": "Сценаристи", + "Writer": "Сценарист", "WizardCompleted": "Це все, що нам зараз потрібно. Jellyfin почав збирати інформацію про вашу медіатеку. Перегляньте деякі з наших програм, а потім натисніть Готово, щоб переглянути інформаційну панель.", "Whitelist": "Білий список", "WelcomeToProject": "Ласкаво просимо до Jellyfin!", @@ -1685,5 +1685,20 @@ "MessageNoFavoritesAvailable": "Зараз немає доступних улюблених.", "Experimental": "Експериментальний", "LabelStereoDownmixAlgorithm": "Stereo Downmix алгоритм", - "StereoDownmixAlgorithmHelp": "Алгоритм мікшування багатоканального аудіо у стерео." + "StereoDownmixAlgorithmHelp": "Алгоритм мікшування багатоканального аудіо у стерео.", + "LabelChapterImageResolutionHelp": "Роздільна здатність витягнутих зображень розділу.", + "PreferEmbeddedExtrasTitlesOverFileNames": "Віддавайте перевагу вбудованим назвам, а не назвам файлів для додаткових функцій", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Додатки часто мають таке ж вбудоване ім’я, що й батьківське, позначте це, щоб усе одно використовувати для них вбудовані заголовки.", + "ResolutionMatchSource": "Джерело відповідності", + "SaveRecordingNFO": "Збережіть метадані EPG запису в NFO", + "SaveRecordingNFOHelp": "Зберігайте метадані від постачальника списків EPG разом із бічними носіями.", + "SaveRecordingImages": "Зберегти записані зображення EPG", + "SaveRecordingImagesHelp": "Зберігайте зображення з постачальника списків EPG разом із носієм.", + "HeaderDummyChapter": "Зображення розділів", + "LabelDummyChapterDuration": "Інтервал:", + "LabelDummyChapterDurationHelp": "Інтервал вилучення зображення розділу в секундах.", + "LabelDummyChapterCount": "Ліміт:", + "LabelDummyChapterCountHelp": "Максимальна кількість зображень розділів, які буде видобуто для кожного медіафайлу.", + "LabelChapterImageResolution": "Роздільна здатність:", + "HeaderRecordingMetadataSaving": "Метадані запису" } From 145aea184fb6746d551da90a88831e201330deb9 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Thu, 15 Sep 2022 14:22:41 -0400 Subject: [PATCH 173/222] feat: add native secondary subtitle support --- src/components/playback/playbackmanager.js | 67 ++++++++++++++++++++ src/controllers/playback/video/index.js | 73 +++++++++++++++++++++- src/plugins/htmlVideoPlayer/plugin.js | 71 ++++++++++++++++----- src/strings/en-us.json | 1 + 4 files changed, 192 insertions(+), 20 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 0013eb6544..48e2913188 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -876,6 +876,17 @@ class PlaybackManager { }); }; + self.hasSecondarySubtitleSupport = function (player = self._currentPlayer) { + if (!player) return false; + return Boolean(player.supports('SecondarySubtitles')); + }; + + self.secondarySubtitleTracks = function (player = self._currentPlayer) { + const streams = self.subtitleTracks(player); + // Currently, only External subtitles are supported + return streams.filter((stream) => getDeliveryMethod(stream) === 'External'); + }; + function getCurrentSubtitleStream(player) { if (!player) { throw new Error('player cannot be null'); @@ -890,6 +901,20 @@ class PlaybackManager { return getSubtitleStream(player, index); } + function getCurrentSecondarySubtitleStream(player) { + if (!player) { + throw new Error('player cannot be null'); + } + + const index = getPlayerData(player).secondarySubtitleStreamIndex; + + if (index == null || index === -1) { + return null; + } + + return getSubtitleStream(player, index); + } + function getSubtitleStream(player, index) { return self.subtitleTracks(player).filter(function (s) { return s.Type === 'Subtitle' && s.Index === index; @@ -1522,9 +1547,51 @@ class PlaybackManager { player.setSubtitleStreamIndex(selectedTrackElementIndex); + // Also disable secondary subtitles when disabling the primary subtitles + if (selectedTrackElementIndex === -1) { + self.setSecondarySubtitleStreamIndex(selectedTrackElementIndex); + } + getPlayerData(player).subtitleStreamIndex = index; }; + self.setSecondarySubtitleStreamIndex = function (index, player) { + player = player || self._currentPlayer; + if (!self.hasSecondarySubtitleSupport(player)) return; + if (player && !enableLocalPlaylistManagement(player)) { + try { + return player.setSecondarySubtitleStreamIndex(index); + } catch (e) { + console.error(`AutoSet - Failed to set secondary track: ${e}`); + } + } + + const currentStream = getCurrentSecondarySubtitleStream(player); + + const newStream = getSubtitleStream(player, index); + + if (!currentStream && !newStream) { + return; + } + + const clearingStream = currentStream && !newStream; + const changingStream = currentStream && newStream; + const addingStream = !currentStream && newStream; + // Secondary subtitles are currently only handled client side + // Changes to the server code are required before we can handle other delivery methods + if (!clearingStream && (changingStream || addingStream) && getDeliveryMethod(newStream) !== 'External') { + return; + } + + getPlayerData(player).secondarySubtitleStreamIndex = index; + + try { + player.setSecondarySubtitleStreamIndex(index); + } catch (e) { + console.error(`AutoSet - Failed to set secondary track: ${e}`); + } + }; + self.supportSubtitleOffset = function (player) { player = player || self._currentPlayer; return player && 'setSubtitleOffset' in player; diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 8fc6976598..6ca0f59b4a 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -988,9 +988,57 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components }); } + function showSecondarySubtitlesMenu(actionsheet, positionTo) { + const player = currentPlayer; + if (!playbackManager.hasSecondarySubtitleSupport(player)) return; + let currentIndex = playbackManager.getSecondarySubtitleStreamIndex(player); + const streams = playbackManager.secondarySubtitleTracks(player); + + if (currentIndex == null) { + currentIndex = -1; + } + + streams.unshift({ + Index: -1, + DisplayTitle: globalize.translate('Off') + }); + + const menuItems = streams.map(function (stream) { + const opt = { + name: stream.DisplayTitle, + id: stream.Index + }; + + if (stream.Index === currentIndex) { + opt.selected = true; + } + + return opt; + }); + + actionsheet.show({ + title: globalize.translate('SecondarySubtitles'), + items: menuItems, + positionTo + }).then(function (id) { + if (id) { + const index = parseInt(id); + if (index !== currentIndex) { + playbackManager.setSecondarySubtitleStreamIndex(index, player); + } + } + }) + .finally(() => { + resetIdle(); + }); + + setTimeout(resetIdle, 0); + } + function showSubtitleTrackSelection() { const player = currentPlayer; const streams = playbackManager.subtitleTracks(player); + const secondaryStreams = playbackManager.secondarySubtitleTracks(player); let currentIndex = playbackManager.getSubtitleStreamIndex(player); if (currentIndex == null) { @@ -1013,18 +1061,37 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components return opt; }); + + // Only show option if: player has support, has more than 1 subtitle track, has valid secondary tracks, primary subtitle is not off + if (playbackManager.hasSecondarySubtitleSupport(player) && streams.length > 1 && secondaryStreams.length > 0 && currentIndex !== -1) { + const secondarySubtitleMenuItem = { + name: globalize.translate('SecondarySubtitles'), + id: 'secondarysubtitle' + }; + menuItems.unshift(secondarySubtitleMenuItem); + } + const positionTo = this; import('../../../components/actionSheet/actionSheet').then(({default: actionsheet}) => { actionsheet.show({ title: globalize.translate('Subtitles'), items: menuItems, + resolveOnClick: true, positionTo: positionTo }).then(function (id) { - const index = parseInt(id); + if (id === 'secondarysubtitle') { + try { + showSecondarySubtitlesMenu(actionsheet, positionTo); + } catch (e) { + console.error(e); + } + } else { + const index = parseInt(id); - if (index !== currentIndex) { - playbackManager.setSubtitleStreamIndex(index, player); + if (index !== currentIndex) { + playbackManager.setSubtitleStreamIndex(index, player); + } } toggleSubtitleSync(); diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index af136e9185..2222548a7c 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -178,7 +178,6 @@ function tryRemoveElement(elem) { * @type {boolean} */ isFetching = false; - /** * @type {HTMLDivElement | null | undefined} */ @@ -207,6 +206,10 @@ function tryRemoveElement(elem) { * @type {number | undefined} */ #customTrackIndex; + /** + * @type {number | undefined} + */ + #customSecondaryTrackIndex; /** * @type {boolean | undefined} */ @@ -270,6 +273,14 @@ function tryRemoveElement(elem) { * @type {any | undefined} */ _currentPlayOptions; + /** + * @type {number} + */ + _PRIMARY_TEXT_TRACK_INDEX = 0; + /** + * @type {number} + */ + _SECONDARY_TEXT_TRACK_INDEX = 1; /** * @type {any | undefined} */ @@ -490,6 +501,10 @@ function tryRemoveElement(elem) { this.setCurrentTrackElement(index); } + setSecondarySubtitleStreamIndex(index) { + this.setCurrentTrackElement(index, this._SECONDARY_TEXT_TRACK_INDEX); + } + resetSubtitleOffset() { this.#currentTrackOffset = 0; this.#showTrackOffset = false; @@ -514,7 +529,7 @@ function tryRemoveElement(elem) { const videoElement = this.#mediaElement; if (videoElement) { return Array.from(videoElement.textTracks) - .find(function (trackElement) { + .filter(function (trackElement) { // get showing .vtt textTack return trackElement.mode === 'showing'; }); @@ -591,6 +606,10 @@ function tryRemoveElement(elem) { return this.#currentTrackOffset; } + isSecondaryTrack(textTrackIndex) { + return textTrackIndex === this._SECONDARY_TEXT_TRACK_INDEX; + } + /** * @private */ @@ -956,7 +975,9 @@ function tryRemoveElement(elem) { /** * @private */ - destroyCustomTrack(videoElement) { + destroyCustomTrack(videoElement, targetTrackIndex) { + const destroySingleTrack = typeof targetTrackIndex === 'number'; + if (this.#videoSubtitlesElem) { const subtitlesContainer = this.#videoSubtitlesElem.parentNode; if (subtitlesContainer) { @@ -969,7 +990,11 @@ function tryRemoveElement(elem) { if (videoElement) { const allTracks = videoElement.textTracks || []; // get list of tracks - for (const track of allTracks) { + for (let index = 0; index < allTracks.length; index++) { + const track = allTracks[index]; + if (destroySingleTrack && targetTrackIndex !== index) { + continue; + } if (track.label.includes('manualTrack')) { track.mode = 'disabled'; } @@ -1029,23 +1054,34 @@ function tryRemoveElement(elem) { /** * @private */ - setTrackForDisplay(videoElement, track) { + setTrackForDisplay(videoElement, track, targetTextTrackIndex = this._PRIMARY_TEXT_TRACK_INDEX) { if (!track) { - this.destroyCustomTrack(videoElement); + // Destroy all tracks by passing undefined if there is no valid primary track + this.destroyCustomTrack(videoElement, this.isSecondaryTrack(targetTextTrackIndex) ? targetTextTrackIndex : undefined); return; } + let targetTrackIndex = this.#customTrackIndex; + if (this.isSecondaryTrack(targetTextTrackIndex)) { + targetTrackIndex = this.#customSecondaryTrackIndex; + } + // skip if already playing this track - if (this.#customTrackIndex === track.Index) { + if (targetTrackIndex === track.Index) { return; } this.resetSubtitleOffset(); const item = this._currentPlayOptions.item; - this.destroyCustomTrack(videoElement); - this.#customTrackIndex = track.Index; - this.renderTracksEvents(videoElement, track, item); + this.destroyCustomTrack(videoElement, targetTextTrackIndex); + + if (this.isSecondaryTrack(targetTextTrackIndex)) { + this.#customSecondaryTrackIndex = track.Index; + } else { + this.#customTrackIndex = track.Index; + } + this.renderTracksEvents(videoElement, track, item, targetTextTrackIndex); } /** @@ -1211,7 +1247,7 @@ function tryRemoveElement(elem) { /** * @private */ - renderTracksEvents(videoElement, track, item) { + renderTracksEvents(videoElement, track, item, targetTextTrackIndex = this._PRIMARY_TEXT_TRACK_INDEX) { if (!itemHelper.isLocalItem(item) || track.IsExternal) { const format = (track.Codec || '').toLowerCase(); if (format === 'ssa' || format === 'ass') { @@ -1220,15 +1256,15 @@ function tryRemoveElement(elem) { } if (this.requiresCustomSubtitlesElement()) { - this.renderSubtitlesWithCustomElement(videoElement, track, item); + this.renderSubtitlesWithCustomElement(videoElement, track, item, targetTextTrackIndex); return; } } let trackElement = null; - if (videoElement.textTracks && videoElement.textTracks.length > 0) { - trackElement = videoElement.textTracks[0]; - + const updatingTrack = videoElement.textTracks && videoElement.textTracks.length > (this.isSecondaryTrack(targetTextTrackIndex) ? 1 : 0); + if (updatingTrack) { + trackElement = videoElement.textTracks[targetTextTrackIndex]; // This throws an error in IE, but is fine in chrome // In IE it's not necessary anyway because changing the src seems to be enough try { @@ -1313,7 +1349,7 @@ function tryRemoveElement(elem) { /** * @private */ - setCurrentTrackElement(streamIndex) { + setCurrentTrackElement(streamIndex, targetTextTrackIndex) { console.debug(`setting new text track index to: ${streamIndex}`); const mediaStreamTextTracks = getMediaStreamTextTracks(this._currentPlayOptions.mediaSource); @@ -1322,7 +1358,7 @@ function tryRemoveElement(elem) { return t.Index === streamIndex; })[0]; - this.setTrackForDisplay(this.#mediaElement, track); + this.setTrackForDisplay(this.#mediaElement, track, targetTextTrackIndex); if (enableNativeTrackSupport(this.#currentSrc, track)) { if (streamIndex !== -1) { this.setCueAppearance(); @@ -1500,6 +1536,7 @@ function tryRemoveElement(elem) { list.push('SetBrightness'); list.push('SetAspectRatio'); + list.push('SecondarySubtitles'); return list; } diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 50567aadad..5ca842e8fa 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1412,6 +1412,7 @@ "SearchForSubtitles": "Search for Subtitles", "SearchResults": "Search Results", "Season": "Season", + "SecondarySubtitles": "Secondary Subtitles", "SelectAdminUsername": "Please select a username for the admin account.", "SelectServer": "Select Server", "SendMessage": "Send message", From ab993886c12021e595a9febf9f26e639fc0a60e3 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Thu, 15 Sep 2022 14:25:34 -0400 Subject: [PATCH 174/222] feat: add custom rendered secondary tracks --- src/plugins/htmlVideoPlayer/plugin.js | 111 ++++++++++++++++++------- src/plugins/htmlVideoPlayer/style.scss | 8 ++ 2 files changed, 88 insertions(+), 31 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 2222548a7c..3766624d68 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -222,10 +222,18 @@ function tryRemoveElement(elem) { * @type {HTMLElement | null | undefined} */ #videoSubtitlesElem; + /** + * @type {HTMLElement | null | undefined} + */ + #videoSecondarySubtitlesElem; /** * @type {any | null | undefined} */ #currentTrackEvents; + /** + * @type {any | null | undefined} + */ + #currentSecondaryTrackEvents; /** * @type {string[] | undefined} */ @@ -977,17 +985,30 @@ function tryRemoveElement(elem) { */ destroyCustomTrack(videoElement, targetTrackIndex) { const destroySingleTrack = typeof targetTrackIndex === 'number'; + const destroyPrimaryTrack = targetTrackIndex === this._PRIMARY_TEXT_TRACK_INDEX; + const destroySecondaryTrack = targetTrackIndex === this._SECONDARY_TEXT_TRACK_INDEX; - if (this.#videoSubtitlesElem) { - const subtitlesContainer = this.#videoSubtitlesElem.parentNode; - if (subtitlesContainer) { - tryRemoveElement(subtitlesContainer); + if (destroyPrimaryTrack) { + if (this.#videoSubtitlesElem) { + tryRemoveElement(this.#videoSubtitlesElem); + this.#videoSubtitlesElem = null; + } + } else if (destroySecondaryTrack) { + if (this.#videoSecondarySubtitlesElem) { + tryRemoveElement(this.#videoSecondarySubtitlesElem); + this.#videoSecondarySubtitlesElem = null; + } + } else { + if (this.#videoSubtitlesElem) { + const subtitlesContainer = this.#videoSubtitlesElem.parentNode; + if (subtitlesContainer) { + tryRemoveElement(subtitlesContainer); + } + this.#videoSubtitlesElem = null; + this.#videoSecondarySubtitlesElem = null; } - this.#videoSubtitlesElem = null; } - this.#currentTrackEvents = null; - if (videoElement) { const allTracks = videoElement.textTracks || []; // get list of tracks for (let index = 0; index < allTracks.length; index++) { @@ -1001,7 +1022,19 @@ function tryRemoveElement(elem) { } } - this.#customTrackIndex = -1; + if (destroyPrimaryTrack) { + this.#customTrackIndex = -1; + this.#currentTrackEvents = null; + } else if (destroySecondaryTrack) { + this.#customSecondaryTrackIndex = -1; + this.#currentSecondaryTrackEvents = null; + } else { + this.#customTrackIndex = -1; + this.#customSecondaryTrackIndex = -1; + this.#currentTrackEvents = null; + this.#currentSecondaryTrackEvents = null; + } + this.#currentClock = null; this._currentAspectRatio = null; @@ -1191,16 +1224,27 @@ function tryRemoveElement(elem) { /** * @private */ - renderSubtitlesWithCustomElement(videoElement, track, item) { + renderSubtitlesWithCustomElement(videoElement, track, item, targetTextTrackIndex) { this.fetchSubtitles(track, item).then((data) => { if (!this.#videoSubtitlesElem) { - const subtitlesContainer = document.createElement('div'); - subtitlesContainer.classList.add('videoSubtitles'); - subtitlesContainer.innerHTML = '
'; - this.#videoSubtitlesElem = subtitlesContainer.querySelector('.videoSubtitlesInner'); - this.setSubtitleAppearance(subtitlesContainer, this.#videoSubtitlesElem); - videoElement.parentNode.appendChild(subtitlesContainer); - this.#currentTrackEvents = data.TrackEvents; + if (!this.isSecondaryTrack(targetTextTrackIndex)) { + const subtitlesContainer = document.createElement('div'); + subtitlesContainer.classList.add('videoSubtitles'); + subtitlesContainer.innerHTML = '
'; + this.#videoSubtitlesElem = subtitlesContainer.querySelector('.videoSubtitlesInner'); + this.setSubtitleAppearance(subtitlesContainer, this.#videoSubtitlesElem); + videoElement.parentNode.appendChild(subtitlesContainer); + this.#currentTrackEvents = data.TrackEvents; + } + } else if (this.isSecondaryTrack(targetTextTrackIndex)) { + const subtitlesContainer = document.querySelector('.videoSubtitles'); + if (!subtitlesContainer) return; + const secondarySubtitlesElement = document.createElement('div'); + secondarySubtitlesElement.classList.add('videoSecondarySubtitlesInner'); + subtitlesContainer.prepend(secondarySubtitlesElement); + this.#videoSecondarySubtitlesElem = secondarySubtitlesElement; + this.setSubtitleAppearance(subtitlesContainer, this.#videoSecondarySubtitlesElem); + this.#currentSecondaryTrackEvents = data.TrackEvents; } }); } @@ -1324,24 +1368,29 @@ function tryRemoveElement(elem) { return; } - const trackEvents = this.#currentTrackEvents; - const subtitleTextElement = this.#videoSubtitlesElem; + const allTrackEvents = [this.#currentTrackEvents, this.#currentSecondaryTrackEvents]; + const subtitleTextElements = [this.#videoSubtitlesElem, this.#videoSecondarySubtitlesElem]; - if (trackEvents && subtitleTextElement) { - const ticks = timeMs * 10000; - let selectedTrackEvent; - for (const trackEvent of trackEvents) { - if (trackEvent.StartPositionTicks <= ticks && trackEvent.EndPositionTicks >= ticks) { - selectedTrackEvent = trackEvent; - break; + for (let i = 0; i < allTrackEvents.length; i++) { + const trackEvents = allTrackEvents[i]; + const subtitleTextElement = subtitleTextElements[i]; + + if (trackEvents && subtitleTextElement) { + const ticks = timeMs * 10000; + let selectedTrackEvent; + for (const trackEvent of trackEvents) { + if (trackEvent.StartPositionTicks <= ticks && trackEvent.EndPositionTicks >= ticks) { + selectedTrackEvent = trackEvent; + break; + } } - } - if (selectedTrackEvent && selectedTrackEvent.Text) { - subtitleTextElement.innerHTML = normalizeTrackEventText(selectedTrackEvent.Text, true); - subtitleTextElement.classList.remove('hide'); - } else { - subtitleTextElement.classList.add('hide'); + if (selectedTrackEvent && selectedTrackEvent.Text) { + subtitleTextElement.innerHTML = normalizeTrackEventText(selectedTrackEvent.Text, true); + subtitleTextElement.classList.remove('hide'); + } else { + subtitleTextElement.classList.add('hide'); + } } } } diff --git a/src/plugins/htmlVideoPlayer/style.scss b/src/plugins/htmlVideoPlayer/style.scss index 390e25a994..36f86314b4 100644 --- a/src/plugins/htmlVideoPlayer/style.scss +++ b/src/plugins/htmlVideoPlayer/style.scss @@ -74,6 +74,14 @@ video[controls]::-webkit-media-controls { display: inline-block; } +.videoSecondarySubtitlesInner { + max-width: 70%; + background-color: rgba(0, 0, 0, 0.8); + margin: auto; + display: block; + margin-bottom: 0 !important; +} + @keyframes htmlvideoplayer-zoomin { from { transform: scale3d(0.2, 0.2, 0.2); From 256084ffb8a560998daa18b0e3a1c38e4cd07b37 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Thu, 15 Sep 2022 14:29:21 -0400 Subject: [PATCH 175/222] fix: correctly apply offsets/hide existing for certain browsers --- src/plugins/htmlVideoPlayer/plugin.js | 73 +++++++++++++++++++++------ 1 file changed, 58 insertions(+), 15 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 3766624d68..5b9fb3d471 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -533,7 +533,7 @@ function tryRemoveElement(elem) { /** * @private */ - getTextTrack() { + getTextTracks() { const videoElement = this.#mediaElement; if (videoElement) { return Array.from(videoElement.textTracks) @@ -546,9 +546,6 @@ function tryRemoveElement(elem) { } } - /** - * @private - */ setSubtitleOffset(offset) { const offsetValue = parseFloat(offset); @@ -557,12 +554,13 @@ function tryRemoveElement(elem) { this.updateCurrentTrackOffset(offsetValue); this.#currentSubtitlesOctopus.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + offsetValue; } else { - const trackElement = this.getTextTrack(); + const trackElements = this.getTextTracks(); // if .vtt currently rendering - if (trackElement) { - this.setTextTrackSubtitleOffset(trackElement, offsetValue); - } else if (this.#currentTrackEvents) { - this.setTrackEventsSubtitleOffset(this.#currentTrackEvents, offsetValue); + if (trackElements.length > 0) { + trackElements.forEach((trackElement, index) => this.setTextTrackSubtitleOffset(trackElement, offsetValue, index)); + } else if (this.#currentTrackEvents || this.#currentSecondaryTrackEvents) { + this.#currentTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentTrackEvents, offsetValue, this._PRIMARY_TEXT_TRACK_INDEX); + this.#currentSecondaryTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentSecondaryTrackEvents, offsetValue, this._SECONDARY_TEXT_TRACK_INDEX); } else { console.debug('No available track, cannot apply offset: ', offsetValue); } @@ -572,10 +570,21 @@ function tryRemoveElement(elem) { /** * @private */ - updateCurrentTrackOffset(offsetValue) { + updateCurrentTrackOffset(offsetValue, currentTrackIndex = 0) { + const skipRelativeOffset = currentTrackIndex !== this._PRIMARY_TEXT_TRACK_INDEX; let relativeOffset = offsetValue; const newTrackOffset = offsetValue; - if (this.#currentTrackOffset) { + if (this.#currentTrackOffset && !skipRelativeOffset) { + /** + * Only calculate the offset for the first track. + * The offset gets set after this method is first called. + * Subsequent method calls (when playing multiple tracks) + * will have the calculated relative offset cancel out + * and will be `0` + * @example + * first_call: (relativeOffset = -2) -= (this.#currentTrackOffset = -1) -> 1 + * second_call: (relativeOffset = -2) -= (this.#currentTrackOffset = -2) -> 0 + */ relativeOffset -= this.#currentTrackOffset; } this.#currentTrackOffset = newTrackOffset; @@ -585,10 +594,41 @@ function tryRemoveElement(elem) { /** * @private + * These browsers will not clear the existing active cue when setting an offset + * for native TextTracks. + * Any previous text tracks that are on the screen when the offset changes will + * remain next to the new tracks until they reach the new offset's instance of the track. */ - setTextTrackSubtitleOffset(currentTrack, offsetValue) { + requiresHidingActiveCuesOnOffsetChange() { + if (browser.firefox) { + return true; + } + return false; + } + + /** + * @private + */ + hideTextTrackActiveCues(currentTrack) { + if (currentTrack.activeCues) { + Array.from(currentTrack.activeCues).forEach((cue) => { + cue.text = ''; + }); + } + } + + /** + * @private + */ + setTextTrackSubtitleOffset(currentTrack, offsetValue, currentTrackIndex) { if (currentTrack.cues) { - offsetValue = this.updateCurrentTrackOffset(offsetValue); + offsetValue = this.updateCurrentTrackOffset(offsetValue, currentTrackIndex); + if (offsetValue === 0) { + return; + } + if (this.requiresHidingActiveCuesOnOffsetChange()) { + this.hideTextTrackActiveCues(currentTrack); + } Array.from(currentTrack.cues) .forEach(function (cue) { cue.startTime -= offsetValue; @@ -600,9 +640,12 @@ function tryRemoveElement(elem) { /** * @private */ - setTrackEventsSubtitleOffset(trackEvents, offsetValue) { + setTrackEventsSubtitleOffset(trackEvents, offsetValue, currentTrackIndex) { if (Array.isArray(trackEvents)) { - offsetValue = this.updateCurrentTrackOffset(offsetValue) * 1e7; // ticks + offsetValue = this.updateCurrentTrackOffset(offsetValue, currentTrackIndex) * 1e7; // ticks + if (offsetValue === 0) { + return; + } trackEvents.forEach(function (trackEvent) { trackEvent.StartPositionTicks -= offsetValue; trackEvent.EndPositionTicks -= offsetValue; From 348de5ac7f1d5b7e5a735c10a31c89f115980465 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Thu, 15 Sep 2022 14:30:51 -0400 Subject: [PATCH 176/222] feat: resume secondary track for current session --- src/components/playback/playbackmanager.js | 18 +++++++++++++++++ src/plugins/htmlVideoPlayer/plugin.js | 23 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 48e2913188..f0cf735522 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1488,6 +1488,24 @@ class PlaybackManager { return getPlayerData(player).subtitleStreamIndex; }; + self.getSecondarySubtitleStreamIndex = function (player) { + player = player || self._currentPlayer; + + try { + if (player && !enableLocalPlaylistManagement(player)) { + return player.getSecondarySubtitleStreamIndex(); + } + } catch (e) { + console.error(`Failed to get secondary stream index: ${e}`); + } + + if (!player) { + throw new Error('player cannot be null'); + } + + return getPlayerData(player).secondarySubtitleStreamIndex; + }; + function getDeliveryMethod(subtitleStream) { // This will be null for internal subs for local items if (subtitleStream.DeliveryMethod) { diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 5b9fb3d471..ac178d8511 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -186,6 +186,10 @@ function tryRemoveElement(elem) { * @type {number | undefined} */ #subtitleTrackIndexToSetOnPlaying; + /** + * @type {number | undefined} + */ + #secondarySubtitleTrackIndexToSetOnPlaying; /** * @type {number | null} */ @@ -474,6 +478,15 @@ function tryRemoveElement(elem) { this.#subtitleTrackIndexToSetOnPlaying = -1; } } + // Continue using the secondary track that has been set during this watch session + const currentSecondaryTrackIndex = playbackManager.getSecondarySubtitleStreamIndex(); + this.#secondarySubtitleTrackIndexToSetOnPlaying = currentSecondaryTrackIndex == null ? -1 : currentSecondaryTrackIndex; + if (this.#secondarySubtitleTrackIndexToSetOnPlaying != null && this.#secondarySubtitleTrackIndexToSetOnPlaying >= 0) { + const initialSecondarySubtitleStream = options.mediaSource.MediaStreams[this.#secondarySubtitleTrackIndexToSetOnPlaying]; + if (!initialSecondarySubtitleStream || initialSecondarySubtitleStream.DeliveryMethod !== 'External') { + this.#secondarySubtitleTrackIndexToSetOnPlaying = -1; + } + } this.#audioTrackIndexToSetOnPlaying = options.playMethod === 'Transcode' ? null : options.mediaSource.DefaultAudioStreamIndex; @@ -889,6 +902,16 @@ function tryRemoveElement(elem) { if (this.#audioTrackIndexToSetOnPlaying != null && this.canSetAudioStreamIndex()) { this.setAudioStreamIndex(this.#audioTrackIndexToSetOnPlaying); } + + if (this.#secondarySubtitleTrackIndexToSetOnPlaying != null && this.#secondarySubtitleTrackIndexToSetOnPlaying >= 0) { + /** + * Using a 0ms timeout to set the secondary subtitles because of some weird race condition when + * setting both primary and secondary tracks at the same time. + * The `TextTrack` content and cues will somehow get mixed up and each track will play a mix of both languages. + * Putting this in a timeout fixes it completely. + */ + setTimeout(() => this.setSecondarySubtitleStreamIndex(this.#secondarySubtitleTrackIndexToSetOnPlaying), 0); + } } /** From 529e70222a16aa5daac026e174755b82dc5e16ca Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Thu, 15 Sep 2022 20:22:11 -0400 Subject: [PATCH 177/222] fix: update custom renderer logic/custom track spacing --- src/plugins/htmlVideoPlayer/plugin.js | 21 ++++++++++++--------- src/plugins/htmlVideoPlayer/style.scss | 3 ++- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index ac178d8511..1605bcfbbd 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1292,17 +1292,20 @@ function tryRemoveElement(elem) { */ renderSubtitlesWithCustomElement(videoElement, track, item, targetTextTrackIndex) { this.fetchSubtitles(track, item).then((data) => { - if (!this.#videoSubtitlesElem) { - if (!this.isSecondaryTrack(targetTextTrackIndex)) { - const subtitlesContainer = document.createElement('div'); + if (!this.#videoSubtitlesElem && !this.isSecondaryTrack(targetTextTrackIndex)) { + let subtitlesContainer = document.querySelector('.videoSubtitles'); + if (!subtitlesContainer) { + subtitlesContainer = document.createElement('div'); subtitlesContainer.classList.add('videoSubtitles'); - subtitlesContainer.innerHTML = '
'; - this.#videoSubtitlesElem = subtitlesContainer.querySelector('.videoSubtitlesInner'); - this.setSubtitleAppearance(subtitlesContainer, this.#videoSubtitlesElem); - videoElement.parentNode.appendChild(subtitlesContainer); - this.#currentTrackEvents = data.TrackEvents; } - } else if (this.isSecondaryTrack(targetTextTrackIndex)) { + const subtitlesElement = document.createElement('div'); + subtitlesElement.classList.add('videoSubtitlesInner'); + subtitlesContainer.appendChild(subtitlesElement); + this.#videoSubtitlesElem = subtitlesContainer.querySelector('.videoSubtitlesInner'); + this.setSubtitleAppearance(subtitlesContainer, this.#videoSubtitlesElem); + videoElement.parentNode.appendChild(subtitlesContainer); + this.#currentTrackEvents = data.TrackEvents; + } else if (!this.#videoSecondarySubtitlesElem && this.isSecondaryTrack(targetTextTrackIndex)) { const subtitlesContainer = document.querySelector('.videoSubtitles'); if (!subtitlesContainer) return; const secondarySubtitlesElement = document.createElement('div'); diff --git a/src/plugins/htmlVideoPlayer/style.scss b/src/plugins/htmlVideoPlayer/style.scss index 36f86314b4..54137685b7 100644 --- a/src/plugins/htmlVideoPlayer/style.scss +++ b/src/plugins/htmlVideoPlayer/style.scss @@ -79,7 +79,8 @@ video[controls]::-webkit-media-controls { background-color: rgba(0, 0, 0, 0.8); margin: auto; display: block; - margin-bottom: 0 !important; + min-height: 0 !important; + margin-bottom: 0.5em !important; } @keyframes htmlvideoplayer-zoomin { From e8713002659e8acce61328eea1c114122a1b92b7 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Thu, 15 Sep 2022 21:36:25 -0400 Subject: [PATCH 178/222] chore: refactor destroyCustomTrack method --- src/plugins/htmlVideoPlayer/plugin.js | 36 ++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 1605bcfbbd..274247ff91 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1049,8 +1049,7 @@ function tryRemoveElement(elem) { /** * @private */ - destroyCustomTrack(videoElement, targetTrackIndex) { - const destroySingleTrack = typeof targetTrackIndex === 'number'; + destroyCustomRenderedTrackElements(targetTrackIndex) { const destroyPrimaryTrack = targetTrackIndex === this._PRIMARY_TEXT_TRACK_INDEX; const destroySecondaryTrack = targetTrackIndex === this._SECONDARY_TEXT_TRACK_INDEX; @@ -1064,7 +1063,7 @@ function tryRemoveElement(elem) { tryRemoveElement(this.#videoSecondarySubtitlesElem); this.#videoSecondarySubtitlesElem = null; } - } else { + } else { // destroy all if (this.#videoSubtitlesElem) { const subtitlesContainer = this.#videoSubtitlesElem.parentNode; if (subtitlesContainer) { @@ -1074,11 +1073,18 @@ function tryRemoveElement(elem) { this.#videoSecondarySubtitlesElem = null; } } + } + /** + * @private + */ + destroyNativeTracks(videoElement, targetTrackIndex) { if (videoElement) { + const destroySingleTrack = typeof targetTrackIndex === 'number'; const allTracks = videoElement.textTracks || []; // get list of tracks for (let index = 0; index < allTracks.length; index++) { const track = allTracks[index]; + // Skip all other tracks if we are targeting just one if (destroySingleTrack && targetTrackIndex !== index) { continue; } @@ -1087,6 +1093,14 @@ function tryRemoveElement(elem) { } } } + } + + /** + * @private + */ + destroyStoredTrackInfo(targetTrackIndex) { + const destroyPrimaryTrack = targetTrackIndex === this._PRIMARY_TEXT_TRACK_INDEX; + const destroySecondaryTrack = targetTrackIndex === this._SECONDARY_TEXT_TRACK_INDEX; if (destroyPrimaryTrack) { this.#customTrackIndex = -1; @@ -1094,12 +1108,26 @@ function tryRemoveElement(elem) { } else if (destroySecondaryTrack) { this.#customSecondaryTrackIndex = -1; this.#currentSecondaryTrackEvents = null; - } else { + } else { // destroy all this.#customTrackIndex = -1; this.#customSecondaryTrackIndex = -1; this.#currentTrackEvents = null; this.#currentSecondaryTrackEvents = null; } + } + + /** + * @private + */ + destroyCustomTrack(videoElement, targetTrackIndex) { + if (this.#resizeObserver) { + this.#resizeObserver.disconnect(); + this.#resizeObserver = null; + } + + this.destroyCustomRenderedTrackElements(targetTrackIndex); + this.destroyNativeTracks(videoElement, targetTrackIndex); + this.destroyStoredTrackInfo(targetTrackIndex); this.#currentClock = null; this._currentAspectRatio = null; From e01124cbcaa14675b6129092c0c2ad5ce804380a Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Fri, 16 Sep 2022 13:16:15 -0400 Subject: [PATCH 179/222] chore: use specific method for checking track --- src/plugins/htmlVideoPlayer/plugin.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 274247ff91..74a824706e 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -670,6 +670,10 @@ function tryRemoveElement(elem) { return this.#currentTrackOffset; } + isPrimaryTrack(textTrackIndex) { + return textTrackIndex === this._PRIMARY_TEXT_TRACK_INDEX; + } + isSecondaryTrack(textTrackIndex) { return textTrackIndex === this._SECONDARY_TEXT_TRACK_INDEX; } @@ -1050,15 +1054,12 @@ function tryRemoveElement(elem) { * @private */ destroyCustomRenderedTrackElements(targetTrackIndex) { - const destroyPrimaryTrack = targetTrackIndex === this._PRIMARY_TEXT_TRACK_INDEX; - const destroySecondaryTrack = targetTrackIndex === this._SECONDARY_TEXT_TRACK_INDEX; - - if (destroyPrimaryTrack) { + if (this.isPrimaryTrack(targetTrackIndex)) { if (this.#videoSubtitlesElem) { tryRemoveElement(this.#videoSubtitlesElem); this.#videoSubtitlesElem = null; } - } else if (destroySecondaryTrack) { + } else if (this.isSecondaryTrack(targetTrackIndex)) { if (this.#videoSecondarySubtitlesElem) { tryRemoveElement(this.#videoSecondarySubtitlesElem); this.#videoSecondarySubtitlesElem = null; @@ -1099,13 +1100,10 @@ function tryRemoveElement(elem) { * @private */ destroyStoredTrackInfo(targetTrackIndex) { - const destroyPrimaryTrack = targetTrackIndex === this._PRIMARY_TEXT_TRACK_INDEX; - const destroySecondaryTrack = targetTrackIndex === this._SECONDARY_TEXT_TRACK_INDEX; - - if (destroyPrimaryTrack) { + if (this.isPrimaryTrack(targetTrackIndex)) { this.#customTrackIndex = -1; this.#currentTrackEvents = null; - } else if (destroySecondaryTrack) { + } else if (this.isSecondaryTrack(targetTrackIndex)) { this.#customSecondaryTrackIndex = -1; this.#currentSecondaryTrackEvents = null; } else { // destroy all From f33699ad8a341383b422fba8bca92343a5ef494d Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Sun, 9 Oct 2022 22:33:08 -0400 Subject: [PATCH 180/222] fix: only show secondary if primary sill valid, remove resolveOnClick --- src/controllers/playback/video/index.js | 18 +++++++++++++++--- src/plugins/htmlVideoPlayer/plugin.js | 24 +++++++++++++++++------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 6ca0f59b4a..dfbf714c7a 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1062,8 +1062,21 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components return opt; }); - // Only show option if: player has support, has more than 1 subtitle track, has valid secondary tracks, primary subtitle is not off - if (playbackManager.hasSecondarySubtitleSupport(player) && streams.length > 1 && secondaryStreams.length > 0 && currentIndex !== -1) { + /** + * Only show option if: + * - player has support + * - has more than 1 subtitle track + * - has valid secondary tracks + * - primary subtitle is not off + * - primary subtitle is `External` + */ + if ( + playbackManager.hasSecondarySubtitleSupport(player) && + streams.length > 1 && + secondaryStreams.length > 0 && + currentIndex !== -1 && + playbackManager.isSubtitleStreamExternal(currentIndex, player) + ) { const secondarySubtitleMenuItem = { name: globalize.translate('SecondarySubtitles'), id: 'secondarysubtitle' @@ -1077,7 +1090,6 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components actionsheet.show({ title: globalize.translate('Subtitles'), items: menuItems, - resolveOnClick: true, positionTo: positionTo }).then(function (id) { if (id === 'secondarysubtitle') { diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 74a824706e..d00ff53d2c 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -471,15 +471,30 @@ function tryRemoveElement(elem) { destroyFlvPlayer(this); destroyCastPlayer(this); + let secondaryTrackValid = true; + this.#subtitleTrackIndexToSetOnPlaying = options.mediaSource.DefaultSubtitleStreamIndex == null ? -1 : options.mediaSource.DefaultSubtitleStreamIndex; if (this.#subtitleTrackIndexToSetOnPlaying != null && this.#subtitleTrackIndexToSetOnPlaying >= 0) { const initialSubtitleStream = options.mediaSource.MediaStreams[this.#subtitleTrackIndexToSetOnPlaying]; if (!initialSubtitleStream || initialSubtitleStream.DeliveryMethod === 'Encode') { this.#subtitleTrackIndexToSetOnPlaying = -1; } + // secondary track should not be shown if primary track is no longer `External` or is not on + if (initialSubtitleStream && initialSubtitleStream.DeliveryMethod !== 'External') { + secondaryTrackValid = false; + } + } else { + secondaryTrackValid = false; } - // Continue using the secondary track that has been set during this watch session - const currentSecondaryTrackIndex = playbackManager.getSecondarySubtitleStreamIndex(); + + // Get the secondary track that has been set during this watch session + let currentSecondaryTrackIndex = playbackManager.getSecondarySubtitleStreamIndex(); + + if (!secondaryTrackValid) { + currentSecondaryTrackIndex = -1; + playbackManager.setSecondarySubtitleStreamIndex(currentSecondaryTrackIndex); + } + this.#secondarySubtitleTrackIndexToSetOnPlaying = currentSecondaryTrackIndex == null ? -1 : currentSecondaryTrackIndex; if (this.#secondarySubtitleTrackIndexToSetOnPlaying != null && this.#secondarySubtitleTrackIndexToSetOnPlaying >= 0) { const initialSecondarySubtitleStream = options.mediaSource.MediaStreams[this.#secondarySubtitleTrackIndexToSetOnPlaying]; @@ -1118,11 +1133,6 @@ function tryRemoveElement(elem) { * @private */ destroyCustomTrack(videoElement, targetTrackIndex) { - if (this.#resizeObserver) { - this.#resizeObserver.disconnect(); - this.#resizeObserver = null; - } - this.destroyCustomRenderedTrackElements(targetTrackIndex); this.destroyNativeTracks(videoElement, targetTrackIndex); this.destroyStoredTrackInfo(targetTrackIndex); From 9ddafb063b104728acda04bb1195bcf62f7cce7e Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Mon, 10 Oct 2022 21:26:15 -0400 Subject: [PATCH 181/222] fix: limit secondary to non-SSA/ASS subtitles --- src/components/playback/playbackmanager.js | 21 +++++++++++++++++---- src/controllers/playback/video/index.js | 4 ++-- src/plugins/htmlVideoPlayer/plugin.js | 5 +++-- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index f0cf735522..f6c366b7ae 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -876,15 +876,28 @@ class PlaybackManager { }); }; - self.hasSecondarySubtitleSupport = function (player = self._currentPlayer) { + self.playerHasSecondarySubtitleSupport = function (player = self._currentPlayer) { if (!player) return false; return Boolean(player.supports('SecondarySubtitles')); }; + /** + * Checks if: + * - the track can be used directly as a secondary subtitle + * - or if it can be paired with a secondary subtitle when used as a primary subtitle + */ + self.trackHasSecondarySubtitleSupport = function (track, player = self._currentPlayer) { + if (!player || !self.playerHasSecondarySubtitleSupport(player)) return false; + const format = (track.Codec || '').toLowerCase(); + // Currently, only non-SSA/non-ASS external subtitles are supported. + // Showing secondary subtitles does not work with any SSA/ASS subtitle combinations because + // of the complexity of how they are rendered and the risk of the subtitles overlapping + return format !== 'ssa' && format !== 'ass' && getDeliveryMethod(track) === 'External'; + }; + self.secondarySubtitleTracks = function (player = self._currentPlayer) { const streams = self.subtitleTracks(player); - // Currently, only External subtitles are supported - return streams.filter((stream) => getDeliveryMethod(stream) === 'External'); + return streams.filter((stream) => self.trackHasSecondarySubtitleSupport(stream, player)); }; function getCurrentSubtitleStream(player) { @@ -1575,7 +1588,7 @@ class PlaybackManager { self.setSecondarySubtitleStreamIndex = function (index, player) { player = player || self._currentPlayer; - if (!self.hasSecondarySubtitleSupport(player)) return; + if (!self.playerHasSecondarySubtitleSupport(player)) return; if (player && !enableLocalPlaylistManagement(player)) { try { return player.setSecondarySubtitleStreamIndex(index); diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index dfbf714c7a..84e7a8d719 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -990,7 +990,7 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components function showSecondarySubtitlesMenu(actionsheet, positionTo) { const player = currentPlayer; - if (!playbackManager.hasSecondarySubtitleSupport(player)) return; + if (!playbackManager.playerHasSecondarySubtitleSupport(player)) return; let currentIndex = playbackManager.getSecondarySubtitleStreamIndex(player); const streams = playbackManager.secondarySubtitleTracks(player); @@ -1071,7 +1071,7 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components * - primary subtitle is `External` */ if ( - playbackManager.hasSecondarySubtitleSupport(player) && + playbackManager.playerHasSecondarySubtitleSupport(player) && streams.length > 1 && secondaryStreams.length > 0 && currentIndex !== -1 && diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index d00ff53d2c..c532bc95a4 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -478,9 +478,10 @@ function tryRemoveElement(elem) { const initialSubtitleStream = options.mediaSource.MediaStreams[this.#subtitleTrackIndexToSetOnPlaying]; if (!initialSubtitleStream || initialSubtitleStream.DeliveryMethod === 'Encode') { this.#subtitleTrackIndexToSetOnPlaying = -1; + secondaryTrackValid = false; } - // secondary track should not be shown if primary track is no longer `External` or is not on - if (initialSubtitleStream && initialSubtitleStream.DeliveryMethod !== 'External') { + // secondary track should not be shown if primary track is no longer a valid pair + if (initialSubtitleStream && !playbackManager.trackHasSecondarySubtitleSupport(initialSubtitleStream)) { secondaryTrackValid = false; } } else { From 8fd9d83d8ecf9e61d5ab82b9abdc80726abe0eaf Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Wed, 19 Oct 2022 20:24:55 -0400 Subject: [PATCH 182/222] chore: refactor check, move consts --- src/plugins/htmlVideoPlayer/plugin.js | 32 ++++++++++----------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index c532bc95a4..7df882fceb 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -155,6 +155,9 @@ function tryRemoveElement(elem) { return profileBuilder({}); } + const PRIMARY_TEXT_TRACK_INDEX = 0; + const SECONDARY_TEXT_TRACK_INDEX = 1; + export class HtmlVideoPlayer { /** * @type {string} @@ -285,14 +288,6 @@ function tryRemoveElement(elem) { * @type {any | undefined} */ _currentPlayOptions; - /** - * @type {number} - */ - _PRIMARY_TEXT_TRACK_INDEX = 0; - /** - * @type {number} - */ - _SECONDARY_TEXT_TRACK_INDEX = 1; /** * @type {any | undefined} */ @@ -539,7 +534,7 @@ function tryRemoveElement(elem) { } setSecondarySubtitleStreamIndex(index) { - this.setCurrentTrackElement(index, this._SECONDARY_TEXT_TRACK_INDEX); + this.setCurrentTrackElement(index, SECONDARY_TEXT_TRACK_INDEX); } resetSubtitleOffset() { @@ -588,8 +583,8 @@ function tryRemoveElement(elem) { if (trackElements.length > 0) { trackElements.forEach((trackElement, index) => this.setTextTrackSubtitleOffset(trackElement, offsetValue, index)); } else if (this.#currentTrackEvents || this.#currentSecondaryTrackEvents) { - this.#currentTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentTrackEvents, offsetValue, this._PRIMARY_TEXT_TRACK_INDEX); - this.#currentSecondaryTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentSecondaryTrackEvents, offsetValue, this._SECONDARY_TEXT_TRACK_INDEX); + this.#currentTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentTrackEvents, offsetValue, PRIMARY_TEXT_TRACK_INDEX); + this.#currentSecondaryTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentSecondaryTrackEvents, offsetValue, SECONDARY_TEXT_TRACK_INDEX); } else { console.debug('No available track, cannot apply offset: ', offsetValue); } @@ -600,7 +595,7 @@ function tryRemoveElement(elem) { * @private */ updateCurrentTrackOffset(offsetValue, currentTrackIndex = 0) { - const skipRelativeOffset = currentTrackIndex !== this._PRIMARY_TEXT_TRACK_INDEX; + const skipRelativeOffset = currentTrackIndex !== PRIMARY_TEXT_TRACK_INDEX; let relativeOffset = offsetValue; const newTrackOffset = offsetValue; if (this.#currentTrackOffset && !skipRelativeOffset) { @@ -629,10 +624,7 @@ function tryRemoveElement(elem) { * remain next to the new tracks until they reach the new offset's instance of the track. */ requiresHidingActiveCuesOnOffsetChange() { - if (browser.firefox) { - return true; - } - return false; + return !!browser.firefox; } /** @@ -687,11 +679,11 @@ function tryRemoveElement(elem) { } isPrimaryTrack(textTrackIndex) { - return textTrackIndex === this._PRIMARY_TEXT_TRACK_INDEX; + return textTrackIndex === PRIMARY_TEXT_TRACK_INDEX; } isSecondaryTrack(textTrackIndex) { - return textTrackIndex === this._SECONDARY_TEXT_TRACK_INDEX; + return textTrackIndex === SECONDARY_TEXT_TRACK_INDEX; } /** @@ -1190,7 +1182,7 @@ function tryRemoveElement(elem) { /** * @private */ - setTrackForDisplay(videoElement, track, targetTextTrackIndex = this._PRIMARY_TEXT_TRACK_INDEX) { + setTrackForDisplay(videoElement, track, targetTextTrackIndex = PRIMARY_TEXT_TRACK_INDEX) { if (!track) { // Destroy all tracks by passing undefined if there is no valid primary track this.destroyCustomTrack(videoElement, this.isSecondaryTrack(targetTextTrackIndex) ? targetTextTrackIndex : undefined); @@ -1397,7 +1389,7 @@ function tryRemoveElement(elem) { /** * @private */ - renderTracksEvents(videoElement, track, item, targetTextTrackIndex = this._PRIMARY_TEXT_TRACK_INDEX) { + renderTracksEvents(videoElement, track, item, targetTextTrackIndex = PRIMARY_TEXT_TRACK_INDEX) { if (!itemHelper.isLocalItem(item) || track.IsExternal) { const format = (track.Codec || '').toLowerCase(); if (format === 'ssa' || format === 'ass') { From 49bae6b67c9c6010611a0d595a156cd80eaa8dd2 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Wed, 19 Oct 2022 21:20:18 -0400 Subject: [PATCH 183/222] fix: failed lint check --- src/plugins/htmlVideoPlayer/plugin.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 7df882fceb..b8903ee326 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -581,7 +581,9 @@ function tryRemoveElement(elem) { const trackElements = this.getTextTracks(); // if .vtt currently rendering if (trackElements.length > 0) { - trackElements.forEach((trackElement, index) => this.setTextTrackSubtitleOffset(trackElement, offsetValue, index)); + trackElements.forEach(function (trackElement, index) { + this.setTextTrackSubtitleOffset(trackElement, offsetValue, index); + }); } else if (this.#currentTrackEvents || this.#currentSecondaryTrackEvents) { this.#currentTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentTrackEvents, offsetValue, PRIMARY_TEXT_TRACK_INDEX); this.#currentSecondaryTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentSecondaryTrackEvents, offsetValue, SECONDARY_TEXT_TRACK_INDEX); From abc663f6f6ecca6c7c4babe35b057e3c938f884e Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Sun, 13 Nov 2022 20:22:55 -0500 Subject: [PATCH 184/222] fix: update ssa/ass checks, custom track location, offsets --- src/components/playback/playbackmanager.js | 12 ++--- src/controllers/playback/video/index.js | 34 +++++++------ src/plugins/htmlVideoPlayer/plugin.js | 58 +++++++++++++++------- src/plugins/htmlVideoPlayer/style.scss | 1 + 4 files changed, 65 insertions(+), 40 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index f6c366b7ae..9104eceb78 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -887,7 +887,7 @@ class PlaybackManager { * - or if it can be paired with a secondary subtitle when used as a primary subtitle */ self.trackHasSecondarySubtitleSupport = function (track, player = self._currentPlayer) { - if (!player || !self.playerHasSecondarySubtitleSupport(player)) return false; + if (!player) return false; const format = (track.Codec || '').toLowerCase(); // Currently, only non-SSA/non-ASS external subtitles are supported. // Showing secondary subtitles does not work with any SSA/ASS subtitle combinations because @@ -1578,8 +1578,9 @@ class PlaybackManager { player.setSubtitleStreamIndex(selectedTrackElementIndex); - // Also disable secondary subtitles when disabling the primary subtitles - if (selectedTrackElementIndex === -1) { + // Also disable secondary subtitles when disabling the primary + // subtitles, or if it doesn't support a secondary pair + if (selectedTrackElementIndex === -1 || !self.trackHasSecondarySubtitleSupport(newStream)) { self.setSecondarySubtitleStreamIndex(selectedTrackElementIndex); } @@ -1605,12 +1606,9 @@ class PlaybackManager { return; } - const clearingStream = currentStream && !newStream; - const changingStream = currentStream && newStream; - const addingStream = !currentStream && newStream; // Secondary subtitles are currently only handled client side // Changes to the server code are required before we can handle other delivery methods - if (!clearingStream && (changingStream || addingStream) && getDeliveryMethod(newStream) !== 'External') { + if (newStream && getDeliveryMethod(newStream) !== 'External') { return; } diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 84e7a8d719..ccbc295987 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1035,10 +1035,26 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components setTimeout(resetIdle, 0); } + /** + * Only show option if: + * - player has support + * - has more than 1 subtitle track + * - has valid secondary tracks + * - primary subtitle is not off + * - primary subtitle has support (index + 1 because `'Off'` is index 0 in `streams` array) + */ + function currentTrackCanHaveSecondarySubtitle(player, streams, currentIndex) { + const secondaryStreams = playbackManager.secondarySubtitleTracks(player); + return playbackManager.playerHasSecondarySubtitleSupport(player) && + streams.length > 1 && + secondaryStreams.length > 0 && + currentIndex !== -1 && + playbackManager.trackHasSecondarySubtitleSupport(streams[currentIndex + 1], player); + } + function showSubtitleTrackSelection() { const player = currentPlayer; const streams = playbackManager.subtitleTracks(player); - const secondaryStreams = playbackManager.secondarySubtitleTracks(player); let currentIndex = playbackManager.getSubtitleStreamIndex(player); if (currentIndex == null) { @@ -1062,21 +1078,7 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components return opt; }); - /** - * Only show option if: - * - player has support - * - has more than 1 subtitle track - * - has valid secondary tracks - * - primary subtitle is not off - * - primary subtitle is `External` - */ - if ( - playbackManager.playerHasSecondarySubtitleSupport(player) && - streams.length > 1 && - secondaryStreams.length > 0 && - currentIndex !== -1 && - playbackManager.isSubtitleStreamExternal(currentIndex, player) - ) { + if (currentTrackCanHaveSecondarySubtitle(player, streams, currentIndex)) { const secondarySubtitleMenuItem = { name: globalize.translate('SecondarySubtitles'), id: 'secondarysubtitle' diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index b8903ee326..a40b99a273 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -225,6 +225,14 @@ function tryRemoveElement(elem) { * @type {number | undefined} */ #currentTrackOffset; + /** + * @type {HTMLElement | null | undefined} + */ + #secondaryTrackOffset; + /** + * @type {number | null | undefined} + */ + #subtitleVerticalPosition; /** * @type {HTMLElement | null | undefined} */ @@ -539,6 +547,7 @@ function tryRemoveElement(elem) { resetSubtitleOffset() { this.#currentTrackOffset = 0; + this.#secondaryTrackOffset = 0; this.#showTrackOffset = false; } @@ -581,7 +590,7 @@ function tryRemoveElement(elem) { const trackElements = this.getTextTracks(); // if .vtt currently rendering if (trackElements.length > 0) { - trackElements.forEach(function (trackElement, index) { + trackElements.forEach((trackElement, index) => { this.setTextTrackSubtitleOffset(trackElement, offsetValue, index); }); } else if (this.#currentTrackEvents || this.#currentSecondaryTrackEvents) { @@ -596,24 +605,25 @@ function tryRemoveElement(elem) { /** * @private */ - updateCurrentTrackOffset(offsetValue, currentTrackIndex = 0) { - const skipRelativeOffset = currentTrackIndex !== PRIMARY_TEXT_TRACK_INDEX; + updateCurrentTrackOffset(offsetValue, currentTrackIndex = PRIMARY_TEXT_TRACK_INDEX) { + let offsetToCompare = this.#currentTrackOffset; + if (this.isSecondaryTrack(currentTrackIndex)) { + offsetToCompare = this.#secondaryTrackOffset; + } + let relativeOffset = offsetValue; const newTrackOffset = offsetValue; - if (this.#currentTrackOffset && !skipRelativeOffset) { - /** - * Only calculate the offset for the first track. - * The offset gets set after this method is first called. - * Subsequent method calls (when playing multiple tracks) - * will have the calculated relative offset cancel out - * and will be `0` - * @example - * first_call: (relativeOffset = -2) -= (this.#currentTrackOffset = -1) -> 1 - * second_call: (relativeOffset = -2) -= (this.#currentTrackOffset = -2) -> 0 - */ - relativeOffset -= this.#currentTrackOffset; + + if (offsetToCompare) { + relativeOffset -= offsetToCompare; } - this.#currentTrackOffset = newTrackOffset; + + if (this.isSecondaryTrack(currentTrackIndex)) { + this.#secondaryTrackOffset = newTrackOffset; + } else { + this.#currentTrackOffset = newTrackOffset; + } + // relative to currentTrackOffset return relativeOffset; } @@ -1132,6 +1142,7 @@ function tryRemoveElement(elem) { this.destroyNativeTracks(videoElement, targetTrackIndex); this.destroyStoredTrackInfo(targetTrackIndex); + this.#subtitleVerticalPosition = null; this.#currentClock = null; this._currentAspectRatio = null; @@ -1322,6 +1333,14 @@ function tryRemoveElement(elem) { * @private */ renderSubtitlesWithCustomElement(videoElement, track, item, targetTextTrackIndex) { + if (this.#subtitleVerticalPosition == null) { + import('../../scripts/settings/userSettings').then((userSettings) => { + const subtitleAppearance = userSettings.getSubtitleAppearanceSettings(); + this.#subtitleVerticalPosition = subtitleAppearance.verticalPosition; + this.#subtitleVerticalPosition = parseInt(subtitleAppearance.verticalPosition, 10); + }); + } + this.fetchSubtitles(track, item).then((data) => { if (!this.#videoSubtitlesElem && !this.isSecondaryTrack(targetTextTrackIndex)) { let subtitlesContainer = document.querySelector('.videoSubtitles'); @@ -1341,7 +1360,12 @@ function tryRemoveElement(elem) { if (!subtitlesContainer) return; const secondarySubtitlesElement = document.createElement('div'); secondarySubtitlesElement.classList.add('videoSecondarySubtitlesInner'); - subtitlesContainer.prepend(secondarySubtitlesElement); + // determine the order of the subtitles + if (this.#subtitleVerticalPosition < 0) { + subtitlesContainer.prepend(secondarySubtitlesElement); + } else { + subtitlesContainer.appendChild(secondarySubtitlesElement); + } this.#videoSecondarySubtitlesElem = secondarySubtitlesElement; this.setSubtitleAppearance(subtitlesContainer, this.#videoSecondarySubtitlesElem); this.#currentSecondaryTrackEvents = data.TrackEvents; diff --git a/src/plugins/htmlVideoPlayer/style.scss b/src/plugins/htmlVideoPlayer/style.scss index 54137685b7..21b2047392 100644 --- a/src/plugins/htmlVideoPlayer/style.scss +++ b/src/plugins/htmlVideoPlayer/style.scss @@ -80,6 +80,7 @@ video[controls]::-webkit-media-controls { margin: auto; display: block; min-height: 0 !important; + margin-top: 0.5em !important; margin-bottom: 0.5em !important; } From f3865f0dac1063e0accc519fa003a525b1945cd1 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Sun, 13 Nov 2022 20:40:02 -0500 Subject: [PATCH 185/222] chore: move logic from method to const --- src/controllers/playback/video/index.js | 34 ++++++++++++------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index ccbc295987..1f1006ddbd 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1035,26 +1035,10 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components setTimeout(resetIdle, 0); } - /** - * Only show option if: - * - player has support - * - has more than 1 subtitle track - * - has valid secondary tracks - * - primary subtitle is not off - * - primary subtitle has support (index + 1 because `'Off'` is index 0 in `streams` array) - */ - function currentTrackCanHaveSecondarySubtitle(player, streams, currentIndex) { - const secondaryStreams = playbackManager.secondarySubtitleTracks(player); - return playbackManager.playerHasSecondarySubtitleSupport(player) && - streams.length > 1 && - secondaryStreams.length > 0 && - currentIndex !== -1 && - playbackManager.trackHasSecondarySubtitleSupport(streams[currentIndex + 1], player); - } - function showSubtitleTrackSelection() { const player = currentPlayer; const streams = playbackManager.subtitleTracks(player); + const secondaryStreams = playbackManager.secondarySubtitleTracks(player); let currentIndex = playbackManager.getSubtitleStreamIndex(player); if (currentIndex == null) { @@ -1078,7 +1062,21 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components return opt; }); - if (currentTrackCanHaveSecondarySubtitle(player, streams, currentIndex)) { + /** + * Only show option if: + * - player has support + * - has more than 1 subtitle track + * - has valid secondary tracks + * - primary subtitle is not off + * - primary subtitle has support (index + 1 because `'Off'` is index 0 in `streams` array) + */ + const currentTrackCanAddSecondarySubtitle = playbackManager.playerHasSecondarySubtitleSupport(player) && + streams.length > 1 && + secondaryStreams.length > 0 && + currentIndex !== -1 && + playbackManager.trackHasSecondarySubtitleSupport(streams[currentIndex + 1], player); + + if (currentTrackCanAddSecondarySubtitle) { const secondarySubtitleMenuItem = { name: globalize.translate('SecondarySubtitles'), id: 'secondarysubtitle' From b1e397c4bcadd3514543f32eda25413b52e0c6dc Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Mon, 14 Nov 2022 22:29:30 -0500 Subject: [PATCH 186/222] fix: use correct stream, code safety, race conditions, update css --- src/components/playback/playbackmanager.js | 16 ++++++------- src/controllers/playback/video/index.js | 4 ++-- src/plugins/htmlVideoPlayer/plugin.js | 27 ++++++++-------------- src/plugins/htmlVideoPlayer/style.scss | 7 +++--- 4 files changed, 22 insertions(+), 32 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 9104eceb78..493df16e14 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -911,7 +911,7 @@ class PlaybackManager { return null; } - return getSubtitleStream(player, index); + return self.getSubtitleStream(player, index); } function getCurrentSecondarySubtitleStream(player) { @@ -925,14 +925,14 @@ class PlaybackManager { return null; } - return getSubtitleStream(player, index); + return self.getSubtitleStream(player, index); } - function getSubtitleStream(player, index) { + self.getSubtitleStream = function (player, index) { return self.subtitleTracks(player).filter(function (s) { return s.Type === 'Subtitle' && s.Index === index; })[0]; - } + }; self.getPlaylist = function (player) { player = player || self._currentPlayer; @@ -1536,7 +1536,7 @@ class PlaybackManager { const currentStream = getCurrentSubtitleStream(player); - const newStream = getSubtitleStream(player, index); + const newStream = self.getSubtitleStream(player, index); if (!currentStream && !newStream) { return; @@ -1581,7 +1581,7 @@ class PlaybackManager { // Also disable secondary subtitles when disabling the primary // subtitles, or if it doesn't support a secondary pair if (selectedTrackElementIndex === -1 || !self.trackHasSecondarySubtitleSupport(newStream)) { - self.setSecondarySubtitleStreamIndex(selectedTrackElementIndex); + self.setSecondarySubtitleStreamIndex(-1); } getPlayerData(player).subtitleStreamIndex = index; @@ -1600,7 +1600,7 @@ class PlaybackManager { const currentStream = getCurrentSecondarySubtitleStream(player); - const newStream = getSubtitleStream(player, index); + const newStream = self.getSubtitleStream(player, index); if (!currentStream && !newStream) { return; @@ -1644,7 +1644,7 @@ class PlaybackManager { }; self.isSubtitleStreamExternal = function (index, player) { - const stream = getSubtitleStream(player, index); + const stream = self.getSubtitleStream(player, index); return stream ? getDeliveryMethod(stream) === 'External' : false; }; diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 1f1006ddbd..74ba461e84 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1068,13 +1068,13 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components * - has more than 1 subtitle track * - has valid secondary tracks * - primary subtitle is not off - * - primary subtitle has support (index + 1 because `'Off'` is index 0 in `streams` array) + * - primary subtitle has support */ const currentTrackCanAddSecondarySubtitle = playbackManager.playerHasSecondarySubtitleSupport(player) && streams.length > 1 && secondaryStreams.length > 0 && currentIndex !== -1 && - playbackManager.trackHasSecondarySubtitleSupport(streams[currentIndex + 1], player); + playbackManager.trackHasSecondarySubtitleSupport(playbackManager.getSubtitleStream(player, currentIndex), player); if (currentTrackCanAddSecondarySubtitle) { const secondarySubtitleMenuItem = { diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index a40b99a273..bfa74fb2c2 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -229,10 +229,6 @@ function tryRemoveElement(elem) { * @type {HTMLElement | null | undefined} */ #secondaryTrackOffset; - /** - * @type {number | null | undefined} - */ - #subtitleVerticalPosition; /** * @type {HTMLElement | null | undefined} */ @@ -589,7 +585,7 @@ function tryRemoveElement(elem) { } else { const trackElements = this.getTextTracks(); // if .vtt currently rendering - if (trackElements.length > 0) { + if (trackElements?.length > 0) { trackElements.forEach((trackElement, index) => { this.setTextTrackSubtitleOffset(trackElement, offsetValue, index); }); @@ -1142,7 +1138,6 @@ function tryRemoveElement(elem) { this.destroyNativeTracks(videoElement, targetTrackIndex); this.destroyStoredTrackInfo(targetTrackIndex); - this.#subtitleVerticalPosition = null; this.#currentClock = null; this._currentAspectRatio = null; @@ -1333,15 +1328,11 @@ function tryRemoveElement(elem) { * @private */ renderSubtitlesWithCustomElement(videoElement, track, item, targetTextTrackIndex) { - if (this.#subtitleVerticalPosition == null) { - import('../../scripts/settings/userSettings').then((userSettings) => { - const subtitleAppearance = userSettings.getSubtitleAppearanceSettings(); - this.#subtitleVerticalPosition = subtitleAppearance.verticalPosition; - this.#subtitleVerticalPosition = parseInt(subtitleAppearance.verticalPosition, 10); - }); - } + Promise.all([import('../../scripts/settings/userSettings'), this.fetchSubtitles(track, item)]).then((results) => { + const [userSettings, subtitleData] = results; + const subtitleAppearance = userSettings.getSubtitleAppearanceSettings(); + const subtitleVerticalPosition = parseInt(subtitleAppearance.verticalPosition, 10); - this.fetchSubtitles(track, item).then((data) => { if (!this.#videoSubtitlesElem && !this.isSecondaryTrack(targetTextTrackIndex)) { let subtitlesContainer = document.querySelector('.videoSubtitles'); if (!subtitlesContainer) { @@ -1354,21 +1345,21 @@ function tryRemoveElement(elem) { this.#videoSubtitlesElem = subtitlesContainer.querySelector('.videoSubtitlesInner'); this.setSubtitleAppearance(subtitlesContainer, this.#videoSubtitlesElem); videoElement.parentNode.appendChild(subtitlesContainer); - this.#currentTrackEvents = data.TrackEvents; + this.#currentTrackEvents = subtitleData.TrackEvents; } else if (!this.#videoSecondarySubtitlesElem && this.isSecondaryTrack(targetTextTrackIndex)) { const subtitlesContainer = document.querySelector('.videoSubtitles'); if (!subtitlesContainer) return; const secondarySubtitlesElement = document.createElement('div'); secondarySubtitlesElement.classList.add('videoSecondarySubtitlesInner'); // determine the order of the subtitles - if (this.#subtitleVerticalPosition < 0) { - subtitlesContainer.prepend(secondarySubtitlesElement); + if (subtitleVerticalPosition < 0) { + subtitlesContainer.insertBefore(secondarySubtitlesElement, subtitlesContainer.firstChild); } else { subtitlesContainer.appendChild(secondarySubtitlesElement); } this.#videoSecondarySubtitlesElem = secondarySubtitlesElement; this.setSubtitleAppearance(subtitlesContainer, this.#videoSecondarySubtitlesElem); - this.#currentSecondaryTrackEvents = data.TrackEvents; + this.#currentSecondaryTrackEvents = subtitleData.TrackEvents; } }); } diff --git a/src/plugins/htmlVideoPlayer/style.scss b/src/plugins/htmlVideoPlayer/style.scss index 21b2047392..0026146081 100644 --- a/src/plugins/htmlVideoPlayer/style.scss +++ b/src/plugins/htmlVideoPlayer/style.scss @@ -65,20 +65,19 @@ video[controls]::-webkit-media-controls { padding-left: env(safe-area-inset-left); padding-right: env(safe-area-inset-right); padding-bottom: env(safe-area-inset-bottom); + display: flex; + flex-direction: column; + align-items: center; } .videoSubtitlesInner { max-width: 70%; background-color: rgba(0, 0, 0, 0.8); - margin: auto; - display: inline-block; } .videoSecondarySubtitlesInner { max-width: 70%; background-color: rgba(0, 0, 0, 0.8); - margin: auto; - display: block; min-height: 0 !important; margin-top: 0.5em !important; margin-bottom: 0.5em !important; From a50fae3b7d264d5774444829169b1676cfdb74e6 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Thu, 17 Nov 2022 17:21:12 -0500 Subject: [PATCH 187/222] chore: simplify/refactor to reuse existing method --- src/components/playback/playbackmanager.js | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 493df16e14..f19d1f0fa4 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -900,26 +900,12 @@ class PlaybackManager { return streams.filter((stream) => self.trackHasSecondarySubtitleSupport(stream, player)); }; - function getCurrentSubtitleStream(player) { + function getCurrentSubtitleStream(player, isSecondaryStream = false) { if (!player) { throw new Error('player cannot be null'); } - const index = getPlayerData(player).subtitleStreamIndex; - - if (index == null || index === -1) { - return null; - } - - return self.getSubtitleStream(player, index); - } - - function getCurrentSecondarySubtitleStream(player) { - if (!player) { - throw new Error('player cannot be null'); - } - - const index = getPlayerData(player).secondarySubtitleStreamIndex; + const index = isSecondaryStream ? getPlayerData(player).secondarySubtitleStreamIndex : getPlayerData(player).subtitleStreamIndex; if (index == null || index === -1) { return null; @@ -1598,7 +1584,7 @@ class PlaybackManager { } } - const currentStream = getCurrentSecondarySubtitleStream(player); + const currentStream = getCurrentSubtitleStream(player, true); const newStream = self.getSubtitleStream(player, index); From 69265e2118625803602b37201ad30207e0defee4 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel <30599893+is343@users.noreply.github.com> Date: Wed, 8 Feb 2023 17:34:27 -0500 Subject: [PATCH 188/222] Update src/components/playback/playbackmanager.js Update error logging Co-authored-by: Bill Thornton --- src/components/playback/playbackmanager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index f19d1f0fa4..20e466b83d 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1495,7 +1495,7 @@ class PlaybackManager { return player.getSecondarySubtitleStreamIndex(); } } catch (e) { - console.error(`Failed to get secondary stream index: ${e}`); + console.error('[playbackmanager] Failed to get secondary stream index:', e); } if (!player) { From c68d01a0f0b6888c735ba796a2919fff626e0859 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel <30599893+is343@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:38:03 -0500 Subject: [PATCH 189/222] Update error logging in src/components/playback/playbackmanager.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/playback/playbackmanager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 20e466b83d..b25854146e 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1580,7 +1580,7 @@ class PlaybackManager { try { return player.setSecondarySubtitleStreamIndex(index); } catch (e) { - console.error(`AutoSet - Failed to set secondary track: ${e}`); + console.error('[playbackmanager] AutoSet - Failed to set secondary track:', e); } } From e5c05b4ebcb10cb7e313c37043b35587cc7ad004 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel <30599893+is343@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:38:28 -0500 Subject: [PATCH 190/222] Update error logging in src/components/playback/playbackmanager.js src/components/playback/playbackmanager.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/playback/playbackmanager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index b25854146e..0633aceb9d 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1603,7 +1603,7 @@ class PlaybackManager { try { player.setSecondarySubtitleStreamIndex(index); } catch (e) { - console.error(`AutoSet - Failed to set secondary track: ${e}`); + console.error('[playbackmanager] AutoSet - Failed to set secondary track:', e); } }; From 5a217ca0849f7479e8efab62533c2c3114040bf2 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel <30599893+is343@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:39:52 -0500 Subject: [PATCH 191/222] set secondary sub index after player succeeds Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/playback/playbackmanager.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 0633aceb9d..e2c2fefa04 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1598,10 +1598,9 @@ class PlaybackManager { return; } - getPlayerData(player).secondarySubtitleStreamIndex = index; - try { player.setSecondarySubtitleStreamIndex(index); + getPlayerData(player).secondarySubtitleStreamIndex = index; } catch (e) { console.error('[playbackmanager] AutoSet - Failed to set secondary track:', e); } From 2a1ff26ad9a64eda2f6e6b7912f0432dbaaafade Mon Sep 17 00:00:00 2001 From: Ivan Schurawel <30599893+is343@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:40:28 -0500 Subject: [PATCH 192/222] clean up code Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/playback/playbackmanager.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index e2c2fefa04..cf26ee7d67 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1490,18 +1490,18 @@ class PlaybackManager { self.getSecondarySubtitleStreamIndex = function (player) { player = player || self._currentPlayer; + if (!player) { + throw new Error('player cannot be null'); + } + try { - if (player && !enableLocalPlaylistManagement(player)) { + if (!enableLocalPlaylistManagement(player)) { return player.getSecondarySubtitleStreamIndex(); } } catch (e) { console.error('[playbackmanager] Failed to get secondary stream index:', e); } - if (!player) { - throw new Error('player cannot be null'); - } - return getPlayerData(player).secondarySubtitleStreamIndex; }; From c3b50c6d7307f75738033165c896a457c365437f Mon Sep 17 00:00:00 2001 From: Ivan Schurawel <30599893+is343@users.noreply.github.com> Date: Thu, 9 Feb 2023 19:41:50 -0500 Subject: [PATCH 193/222] fix code styling Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/controllers/playback/video/index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 74ba461e84..19c1492d0e 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1070,11 +1070,11 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components * - primary subtitle is not off * - primary subtitle has support */ - const currentTrackCanAddSecondarySubtitle = playbackManager.playerHasSecondarySubtitleSupport(player) && - streams.length > 1 && - secondaryStreams.length > 0 && - currentIndex !== -1 && - playbackManager.trackHasSecondarySubtitleSupport(playbackManager.getSubtitleStream(player, currentIndex), player); + const currentTrackCanAddSecondarySubtitle = playbackManager.playerHasSecondarySubtitleSupport(player) + && streams.length > 1 + && secondaryStreams.length > 0 + && currentIndex !== -1 + && playbackManager.trackHasSecondarySubtitleSupport(playbackManager.getSubtitleStream(player, currentIndex), player); if (currentTrackCanAddSecondarySubtitle) { const secondarySubtitleMenuItem = { From 6c0a1733612f597088a55bfe023559dde1997a5c Mon Sep 17 00:00:00 2001 From: Ivan Schurawel <30599893+is343@users.noreply.github.com> Date: Fri, 10 Feb 2023 08:15:12 -0500 Subject: [PATCH 194/222] use whole subtitles element Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/plugins/htmlVideoPlayer/plugin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index bfa74fb2c2..ca07c2d7a5 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1342,7 +1342,7 @@ function tryRemoveElement(elem) { const subtitlesElement = document.createElement('div'); subtitlesElement.classList.add('videoSubtitlesInner'); subtitlesContainer.appendChild(subtitlesElement); - this.#videoSubtitlesElem = subtitlesContainer.querySelector('.videoSubtitlesInner'); + this.#videoSubtitlesElem = subtitlesElement; this.setSubtitleAppearance(subtitlesContainer, this.#videoSubtitlesElem); videoElement.parentNode.appendChild(subtitlesContainer); this.#currentTrackEvents = subtitleData.TrackEvents; From c7f31c0fac2f4060fc2f12dd0076e922657ac4c7 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Fri, 10 Feb 2023 13:52:53 -0500 Subject: [PATCH 195/222] fix: pass player to playbackManager --- src/plugins/htmlVideoPlayer/plugin.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index ca07c2d7a5..700eedd141 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -480,7 +480,7 @@ function tryRemoveElement(elem) { secondaryTrackValid = false; } // secondary track should not be shown if primary track is no longer a valid pair - if (initialSubtitleStream && !playbackManager.trackHasSecondarySubtitleSupport(initialSubtitleStream)) { + if (initialSubtitleStream && !playbackManager.trackHasSecondarySubtitleSupport(initialSubtitleStream, this)) { secondaryTrackValid = false; } } else { @@ -488,11 +488,11 @@ function tryRemoveElement(elem) { } // Get the secondary track that has been set during this watch session - let currentSecondaryTrackIndex = playbackManager.getSecondarySubtitleStreamIndex(); + let currentSecondaryTrackIndex = playbackManager.getSecondarySubtitleStreamIndex(this); if (!secondaryTrackValid) { currentSecondaryTrackIndex = -1; - playbackManager.setSecondarySubtitleStreamIndex(currentSecondaryTrackIndex); + playbackManager.setSecondarySubtitleStreamIndex(currentSecondaryTrackIndex, this); } this.#secondarySubtitleTrackIndexToSetOnPlaying = currentSecondaryTrackIndex == null ? -1 : currentSecondaryTrackIndex; From fe970743f1b37293cea2aa17a2e4b9a6f62613c1 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Tue, 14 Feb 2023 19:11:16 -0500 Subject: [PATCH 196/222] chore: remove fix for stuck track cues --- src/plugins/htmlVideoPlayer/plugin.js | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 700eedd141..b45bc4d845 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -624,28 +624,6 @@ function tryRemoveElement(elem) { return relativeOffset; } - /** - * @private - * These browsers will not clear the existing active cue when setting an offset - * for native TextTracks. - * Any previous text tracks that are on the screen when the offset changes will - * remain next to the new tracks until they reach the new offset's instance of the track. - */ - requiresHidingActiveCuesOnOffsetChange() { - return !!browser.firefox; - } - - /** - * @private - */ - hideTextTrackActiveCues(currentTrack) { - if (currentTrack.activeCues) { - Array.from(currentTrack.activeCues).forEach((cue) => { - cue.text = ''; - }); - } - } - /** * @private */ @@ -655,9 +633,6 @@ function tryRemoveElement(elem) { if (offsetValue === 0) { return; } - if (this.requiresHidingActiveCuesOnOffsetChange()) { - this.hideTextTrackActiveCues(currentTrack); - } Array.from(currentTrack.cues) .forEach(function (cue) { cue.startTime -= offsetValue; From fb68bb1419044d0c7b67c4a585b9b90502e00174 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Wed, 15 Feb 2023 02:10:00 -0500 Subject: [PATCH 197/222] fix: define options before setting secondary track --- src/plugins/htmlVideoPlayer/plugin.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index b45bc4d845..646c902a5d 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -487,6 +487,10 @@ function tryRemoveElement(elem) { secondaryTrackValid = false; } + this.#audioTrackIndexToSetOnPlaying = options.playMethod === 'Transcode' ? null : options.mediaSource.DefaultAudioStreamIndex; + + this._currentPlayOptions = options; + // Get the secondary track that has been set during this watch session let currentSecondaryTrackIndex = playbackManager.getSecondarySubtitleStreamIndex(this); @@ -503,10 +507,6 @@ function tryRemoveElement(elem) { } } - this.#audioTrackIndexToSetOnPlaying = options.playMethod === 'Transcode' ? null : options.mediaSource.DefaultAudioStreamIndex; - - this._currentPlayOptions = options; - const crossOrigin = getCrossOriginValue(options.mediaSource); if (crossOrigin) { elem.crossOrigin = crossOrigin; From c74c0cddde3d9a0a8779bfd7241f1a68eec9d557 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Wed, 15 Feb 2023 02:10:55 -0500 Subject: [PATCH 198/222] chore: clear and set secondary track for continued plays --- src/components/playback/playbackmanager.js | 46 ++++++++++++++++------ 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index cf26ee7d67..7463b4b614 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -422,7 +422,8 @@ function getPlaybackInfo(player, enableDirectPlay, enableDirectStream, allowVideoStreamCopy, - allowAudioStreamCopy) { + allowAudioStreamCopy, + secondarySubtitleStreamIndex) { if (!itemHelper.isLocalItem(item) && item.MediaType === 'Audio' && !player.useServerPlaybackInfoForAudio) { return Promise.resolve({ MediaSources: [ @@ -462,6 +463,9 @@ function getPlaybackInfo(player, if (subtitleStreamIndex != null) { query.SubtitleStreamIndex = subtitleStreamIndex; } + if (secondarySubtitleStreamIndex != null) { + query.SecondarySubtitleStreamIndex = secondarySubtitleStreamIndex; + } if (enableDirectPlay != null) { query.EnableDirectPlay = enableDirectPlay; } @@ -1720,6 +1724,7 @@ class PlaybackManager { }).then(function (deviceProfile) { const audioStreamIndex = params.AudioStreamIndex == null ? getPlayerData(player).audioStreamIndex : params.AudioStreamIndex; const subtitleStreamIndex = params.SubtitleStreamIndex == null ? getPlayerData(player).subtitleStreamIndex : params.SubtitleStreamIndex; + const secondarySubtitleStreamIndex = params.SubtitleStreamIndex == null ? getPlayerData(player).secondarySubtitleStreamIndex : params.secondarySubtitleStreamIndex; let currentMediaSource = self.currentMediaSource(player); const apiClient = ServerConnections.getApiClient(currentItem.ServerId); @@ -1746,6 +1751,7 @@ class PlaybackManager { } getPlayerData(player).subtitleStreamIndex = subtitleStreamIndex; + getPlayerData(player).secondarySubtitleStreamIndex = secondarySubtitleStreamIndex; getPlayerData(player).audioStreamIndex = audioStreamIndex; getPlayerData(player).maxStreamingBitrate = maxBitrate; @@ -2031,6 +2037,7 @@ class PlaybackManager { state.PlayState.PlaybackRate = self.getPlaybackRate(player); state.PlayState.SubtitleStreamIndex = self.getSubtitleStreamIndex(player); + state.PlayState.SecondarySubtitleStreamIndex = self.getSecondarySubtitleStreamIndex(player); state.PlayState.AudioStreamIndex = self.getAudioStreamIndex(player); state.PlayState.BufferedRanges = self.getBufferedRanges(player); @@ -2311,11 +2318,16 @@ class PlaybackManager { }); } - function rankStreamType(prevIndex, prevSource, mediaSource, streamType) { + function rankStreamType(prevIndex, prevSource, mediaSource, streamType, isSecondarySubtitle) { if (prevIndex == -1) { console.debug(`AutoSet ${streamType} - No Stream Set`); - if (streamType == 'Subtitle') - mediaSource.DefaultSubtitleStreamIndex = -1; + if (streamType == 'Subtitle') { + if (isSecondarySubtitle) { + mediaSource.DefaultSecondarySubtitleStreamIndex = -1; + } else { + mediaSource.DefaultSubtitleStreamIndex = -1; + } + } return; } @@ -2373,8 +2385,13 @@ class PlaybackManager { if (bestStreamIndex != null) { console.debug(`AutoSet ${streamType} - Using ${bestStreamIndex} score ${bestStreamScore}.`); - if (streamType == 'Subtitle') - mediaSource.DefaultSubtitleStreamIndex = bestStreamIndex; + if (streamType == 'Subtitle') { + if (isSecondarySubtitle) { + mediaSource.DefaultSecondarySubtitleStreamIndex = bestStreamIndex; + } else { + mediaSource.DefaultSubtitleStreamIndex = bestStreamIndex; + } + } if (streamType == 'Audio') mediaSource.DefaultAudioStreamIndex = bestStreamIndex; } else { @@ -2382,7 +2399,7 @@ class PlaybackManager { } } - function autoSetNextTracks(prevSource, mediaSource, audio, subtitle) { + function autoSetNextTracks(prevSource, mediaSource, audio, subtitle, secondarySubtitle) { try { if (!prevSource) return; @@ -2398,6 +2415,10 @@ class PlaybackManager { if (subtitle && typeof prevSource.DefaultSubtitleStreamIndex == 'number') { rankStreamType(prevSource.DefaultSubtitleStreamIndex, prevSource, mediaSource, 'Subtitle'); } + + if (secondarySubtitle && typeof prevSource.DefaultSecondarySubtitleStreamIndex == 'number') { + rankStreamType(prevSource.DefaultSecondarySubtitleStreamIndex, prevSource, mediaSource, 'Subtitle', true); + } } catch (e) { console.error(`AutoSet - Caught unexpected error: ${e}`); } @@ -2463,14 +2484,14 @@ class PlaybackManager { return getPlaybackMediaSource(player, apiClient, deviceProfile, maxBitrate, item, startPosition, mediaSourceId, audioStreamIndex, subtitleStreamIndex).then(async (mediaSource) => { const user = await apiClient.getCurrentUser(); - autoSetNextTracks(prevSource, mediaSource, user.Configuration.RememberAudioSelections, user.Configuration.RememberSubtitleSelections); + const playerData = getPlayerData(player); + + autoSetNextTracks(prevSource, mediaSource, user.Configuration.RememberAudioSelections, user.Configuration.RememberSubtitleSelections, playerData.secondarySubtitleStreamIndex); const streamInfo = createStreamInfo(apiClient, item.MediaType, item, mediaSource, startPosition, player); streamInfo.fullscreen = playOptions.fullscreen; - const playerData = getPlayerData(player); - playerData.isChangingStream = false; playerData.maxStreamingBitrate = maxBitrate; playerData.streamInfo = streamInfo; @@ -2832,7 +2853,8 @@ class PlaybackManager { return { ...prevSource, DefaultAudioStreamIndex: prevPlayerData.audioStreamIndex, - DefaultSubtitleStreamIndex: prevPlayerData.subtitleStreamIndex + DefaultSubtitleStreamIndex: prevPlayerData.subtitleStreamIndex, + DefaultSecondarySubtitleStreamIndex: prevPlayerData.secondarySubtitleStreamIndex }; } @@ -2991,9 +3013,11 @@ class PlaybackManager { if (mediaSource) { playerData.audioStreamIndex = mediaSource.DefaultAudioStreamIndex; playerData.subtitleStreamIndex = mediaSource.DefaultSubtitleStreamIndex; + playerData.secondarySubtitleStreamIndex = mediaSource.DefaultSecondarySubtitleStreamIndex; } else { playerData.audioStreamIndex = null; playerData.subtitleStreamIndex = null; + playerData.secondarySubtitleStreamIndex = null; } self._playNextAfterEnded = true; From 89ec4cf9cf2b7ffd612b609087bc4c4c0e86d7da Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Fri, 17 Feb 2023 17:45:43 -0500 Subject: [PATCH 199/222] chore: implement feedback --- src/components/playback/playbackmanager.js | 12 ++++++------ src/plugins/htmlVideoPlayer/plugin.js | 22 +++++++++------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 7463b4b614..fe50820b50 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1724,7 +1724,7 @@ class PlaybackManager { }).then(function (deviceProfile) { const audioStreamIndex = params.AudioStreamIndex == null ? getPlayerData(player).audioStreamIndex : params.AudioStreamIndex; const subtitleStreamIndex = params.SubtitleStreamIndex == null ? getPlayerData(player).subtitleStreamIndex : params.SubtitleStreamIndex; - const secondarySubtitleStreamIndex = params.SubtitleStreamIndex == null ? getPlayerData(player).secondarySubtitleStreamIndex : params.secondarySubtitleStreamIndex; + const secondarySubtitleStreamIndex = params.SecondarySubtitleStreamIndex == null ? getPlayerData(player).secondarySubtitleStreamIndex : params.SecondarySubtitleStreamIndex; let currentMediaSource = self.currentMediaSource(player); const apiClient = ServerConnections.getApiClient(currentItem.ServerId); @@ -2399,7 +2399,7 @@ class PlaybackManager { } } - function autoSetNextTracks(prevSource, mediaSource, audio, subtitle, secondarySubtitle) { + function autoSetNextTracks(prevSource, mediaSource, audio, subtitle) { try { if (!prevSource) return; @@ -2416,7 +2416,7 @@ class PlaybackManager { rankStreamType(prevSource.DefaultSubtitleStreamIndex, prevSource, mediaSource, 'Subtitle'); } - if (secondarySubtitle && typeof prevSource.DefaultSecondarySubtitleStreamIndex == 'number') { + if (subtitle && typeof prevSource.DefaultSecondarySubtitleStreamIndex == 'number') { rankStreamType(prevSource.DefaultSecondarySubtitleStreamIndex, prevSource, mediaSource, 'Subtitle', true); } } catch (e) { @@ -2484,14 +2484,14 @@ class PlaybackManager { return getPlaybackMediaSource(player, apiClient, deviceProfile, maxBitrate, item, startPosition, mediaSourceId, audioStreamIndex, subtitleStreamIndex).then(async (mediaSource) => { const user = await apiClient.getCurrentUser(); - const playerData = getPlayerData(player); - - autoSetNextTracks(prevSource, mediaSource, user.Configuration.RememberAudioSelections, user.Configuration.RememberSubtitleSelections, playerData.secondarySubtitleStreamIndex); + autoSetNextTracks(prevSource, mediaSource, user.Configuration.RememberAudioSelections, user.Configuration.RememberSubtitleSelections); const streamInfo = createStreamInfo(apiClient, item.MediaType, item, mediaSource, startPosition, player); streamInfo.fullscreen = playOptions.fullscreen; + const playerData = getPlayerData(player); + playerData.isChangingStream = false; playerData.maxStreamingBitrate = maxBitrate; playerData.streamInfo = streamInfo; diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 646c902a5d..4a9d1a7bf9 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -491,20 +491,16 @@ function tryRemoveElement(elem) { this._currentPlayOptions = options; - // Get the secondary track that has been set during this watch session - let currentSecondaryTrackIndex = playbackManager.getSecondarySubtitleStreamIndex(this); - - if (!secondaryTrackValid) { - currentSecondaryTrackIndex = -1; - playbackManager.setSecondarySubtitleStreamIndex(currentSecondaryTrackIndex, this); - } - - this.#secondarySubtitleTrackIndexToSetOnPlaying = currentSecondaryTrackIndex == null ? -1 : currentSecondaryTrackIndex; - if (this.#secondarySubtitleTrackIndexToSetOnPlaying != null && this.#secondarySubtitleTrackIndexToSetOnPlaying >= 0) { - const initialSecondarySubtitleStream = options.mediaSource.MediaStreams[this.#secondarySubtitleTrackIndexToSetOnPlaying]; - if (!initialSecondarySubtitleStream || initialSecondarySubtitleStream.DeliveryMethod !== 'External') { - this.#secondarySubtitleTrackIndexToSetOnPlaying = -1; + if (secondaryTrackValid) { + this.#secondarySubtitleTrackIndexToSetOnPlaying = options.mediaSource.DefaultSecondarySubtitleStreamIndex == null ? -1 : options.mediaSource.DefaultSecondarySubtitleStreamIndex; + if (this.#secondarySubtitleTrackIndexToSetOnPlaying != null && this.#secondarySubtitleTrackIndexToSetOnPlaying >= 0) { + const initialSecondarySubtitleStream = options.mediaSource.MediaStreams[this.#secondarySubtitleTrackIndexToSetOnPlaying]; + if (!initialSecondarySubtitleStream || initialSecondarySubtitleStream.DeliveryMethod !== 'External') { + this.#secondarySubtitleTrackIndexToSetOnPlaying = -1; + } } + } else { + this.#secondarySubtitleTrackIndexToSetOnPlaying = -1; } const crossOrigin = getCrossOriginValue(options.mediaSource); From 95a705a893814bd06cc01a71cb179bf6aad6af0c Mon Sep 17 00:00:00 2001 From: Ivan Schurawel <30599893+is343@users.noreply.github.com> Date: Sun, 19 Feb 2023 11:58:36 -0500 Subject: [PATCH 200/222] Update src/components/playback/playbackmanager.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/playback/playbackmanager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index fe50820b50..587705b1f8 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1598,7 +1598,7 @@ class PlaybackManager { // Secondary subtitles are currently only handled client side // Changes to the server code are required before we can handle other delivery methods - if (newStream && getDeliveryMethod(newStream) !== 'External') { + if (newStream && !self.trackHasSecondarySubtitleSupport(newStream, player)) { return; } From 4ca927991f04ed2028c89fdbf336ea83226947b8 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel <30599893+is343@users.noreply.github.com> Date: Sun, 19 Feb 2023 11:58:52 -0500 Subject: [PATCH 201/222] Update src/plugins/htmlVideoPlayer/plugin.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/plugins/htmlVideoPlayer/plugin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 4a9d1a7bf9..f2a2b8d30b 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -495,7 +495,7 @@ function tryRemoveElement(elem) { this.#secondarySubtitleTrackIndexToSetOnPlaying = options.mediaSource.DefaultSecondarySubtitleStreamIndex == null ? -1 : options.mediaSource.DefaultSecondarySubtitleStreamIndex; if (this.#secondarySubtitleTrackIndexToSetOnPlaying != null && this.#secondarySubtitleTrackIndexToSetOnPlaying >= 0) { const initialSecondarySubtitleStream = options.mediaSource.MediaStreams[this.#secondarySubtitleTrackIndexToSetOnPlaying]; - if (!initialSecondarySubtitleStream || initialSecondarySubtitleStream.DeliveryMethod !== 'External') { + if (!initialSecondarySubtitleStream || !playbackManager.trackHasSecondarySubtitleSupport(initialSecondarySubtitleStream, this)) { this.#secondarySubtitleTrackIndexToSetOnPlaying = -1; } } From 3c0ace33865b0852769e31ef224548e87fa9c46d Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Sun, 19 Feb 2023 12:50:12 -0500 Subject: [PATCH 202/222] fix: ensure secondary index is valid --- src/components/playback/playbackmanager.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 587705b1f8..6d95f4b9a2 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -2387,7 +2387,11 @@ class PlaybackManager { console.debug(`AutoSet ${streamType} - Using ${bestStreamIndex} score ${bestStreamScore}.`); if (streamType == 'Subtitle') { if (isSecondarySubtitle) { - mediaSource.DefaultSecondarySubtitleStreamIndex = bestStreamIndex; + if (self.trackHasSecondarySubtitleSupport(mediaSource.MediaStreams[bestStreamIndex])) { + mediaSource.DefaultSecondarySubtitleStreamIndex = bestStreamIndex; + } else { + mediaSource.DefaultSecondarySubtitleStreamIndex = -1; + } } else { mediaSource.DefaultSubtitleStreamIndex = bestStreamIndex; } From 50eb5f277d4fae10423354b1b572138e009bcfa1 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Sun, 19 Feb 2023 13:09:37 -0500 Subject: [PATCH 203/222] fix: check if primary supports secondary track --- src/components/playback/playbackmanager.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 6d95f4b9a2..16e617f36e 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -3017,7 +3017,11 @@ class PlaybackManager { if (mediaSource) { playerData.audioStreamIndex = mediaSource.DefaultAudioStreamIndex; playerData.subtitleStreamIndex = mediaSource.DefaultSubtitleStreamIndex; - playerData.secondarySubtitleStreamIndex = mediaSource.DefaultSecondarySubtitleStreamIndex; + if (self.trackHasSecondarySubtitleSupport(mediaSource.MediaStreams[mediaSource.DefaultSubtitleStreamIndex])) { + playerData.secondarySubtitleStreamIndex = mediaSource.DefaultSecondarySubtitleStreamIndex; + } else { + playerData.secondarySubtitleStreamIndex = -1; + } } else { playerData.audioStreamIndex = null; playerData.subtitleStreamIndex = null; From 3d3a0c43b3e4e4e851a564b9e9e4a762856ed6d6 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Sun, 19 Feb 2023 15:40:36 -0500 Subject: [PATCH 204/222] chore: ensure check has valid track --- src/components/playback/playbackmanager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 16e617f36e..e3a73b7bf3 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -891,7 +891,7 @@ class PlaybackManager { * - or if it can be paired with a secondary subtitle when used as a primary subtitle */ self.trackHasSecondarySubtitleSupport = function (track, player = self._currentPlayer) { - if (!player) return false; + if (!player || !track) return false; const format = (track.Codec || '').toLowerCase(); // Currently, only non-SSA/non-ASS external subtitles are supported. // Showing secondary subtitles does not work with any SSA/ASS subtitle combinations because From 698abb929b74946150d54d409164fcc8d918b984 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Sun, 19 Feb 2023 16:40:12 -0500 Subject: [PATCH 205/222] Revert "fix: check if primary supports secondary track" This reverts commit e3e0348daeded50ed641c8def9a2619aff4f49bf. --- src/components/playback/playbackmanager.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index e3a73b7bf3..84def75483 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -3017,11 +3017,7 @@ class PlaybackManager { if (mediaSource) { playerData.audioStreamIndex = mediaSource.DefaultAudioStreamIndex; playerData.subtitleStreamIndex = mediaSource.DefaultSubtitleStreamIndex; - if (self.trackHasSecondarySubtitleSupport(mediaSource.MediaStreams[mediaSource.DefaultSubtitleStreamIndex])) { - playerData.secondarySubtitleStreamIndex = mediaSource.DefaultSecondarySubtitleStreamIndex; - } else { - playerData.secondarySubtitleStreamIndex = -1; - } + playerData.secondarySubtitleStreamIndex = mediaSource.DefaultSecondarySubtitleStreamIndex; } else { playerData.audioStreamIndex = null; playerData.subtitleStreamIndex = null; From ab75013d60f88f95bac5607d31d17c0e23ea545b Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Sun, 19 Feb 2023 16:40:47 -0500 Subject: [PATCH 206/222] Revert "fix: ensure secondary index is valid" This reverts commit 01dfad4996d2bdc96a8506b6d0c4542bfd15bc3b. --- src/components/playback/playbackmanager.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 84def75483..34e83eb683 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -2387,11 +2387,7 @@ class PlaybackManager { console.debug(`AutoSet ${streamType} - Using ${bestStreamIndex} score ${bestStreamScore}.`); if (streamType == 'Subtitle') { if (isSecondarySubtitle) { - if (self.trackHasSecondarySubtitleSupport(mediaSource.MediaStreams[bestStreamIndex])) { - mediaSource.DefaultSecondarySubtitleStreamIndex = bestStreamIndex; - } else { - mediaSource.DefaultSecondarySubtitleStreamIndex = -1; - } + mediaSource.DefaultSecondarySubtitleStreamIndex = bestStreamIndex; } else { mediaSource.DefaultSubtitleStreamIndex = bestStreamIndex; } From 0ebf6c68995298fe66a7d0fbff24608e4a3fa478 Mon Sep 17 00:00:00 2001 From: Ivan Schurawel Date: Sun, 19 Feb 2023 16:53:52 -0500 Subject: [PATCH 207/222] chore: simplify valid secondary track checks --- src/components/playback/playbackmanager.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 34e83eb683..2b8bd21280 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -2486,6 +2486,19 @@ class PlaybackManager { const user = await apiClient.getCurrentUser(); autoSetNextTracks(prevSource, mediaSource, user.Configuration.RememberAudioSelections, user.Configuration.RememberSubtitleSelections); + if (mediaSource.DefaultSubtitleStreamIndex == null || mediaSource.DefaultSubtitleStreamIndex < 0) { + mediaSource.DefaultSubtitleStreamIndex = mediaSource.DefaultSecondarySubtitleStreamIndex; + mediaSource.DefaultSecondarySubtitleStreamIndex = -1; + } + + const subtitleTrack1 = mediaSource.MediaStreams[mediaSource.DefaultSubtitleStreamIndex]; + const subtitleTrack2 = mediaSource.MediaStreams[mediaSource.DefaultSecondarySubtitleStreamIndex]; + + if (!self.trackHasSecondarySubtitleSupport(subtitleTrack1, player) + || !self.trackHasSecondarySubtitleSupport(subtitleTrack2, player)) { + mediaSource.DefaultSecondarySubtitleStreamIndex = -1; + } + const streamInfo = createStreamInfo(apiClient, item.MediaType, item, mediaSource, startPosition, player); streamInfo.fullscreen = playOptions.fullscreen; From 4f24ccdbbcf82889425cecf2129c77c8831aa2e4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 01:58:22 +0000 Subject: [PATCH 208/222] Update React --- package-lock.json | 64 +++++++++++++++++++++++------------------------ package.json | 4 +-- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index a06ce5f18e..9a8999a872 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ "pdfjs-dist": "2.16.105", "react": "17.0.2", "react-dom": "17.0.2", - "react-router-dom": "6.8.0", + "react-router-dom": "6.8.1", "resize-observer-polyfill": "1.5.1", "screenfull": "6.0.2", "sortablejs": "1.15.0", @@ -67,7 +67,7 @@ "@types/loadable__component": "5.13.4", "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", - "@types/react-dom": "17.0.18", + "@types/react-dom": "17.0.19", "@typescript-eslint/eslint-plugin": "5.51.0", "@typescript-eslint/parser": "5.51.0", "@uupaa/dynamic-import-polyfill": "1.0.2", @@ -2742,9 +2742,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.1.tgz", - "integrity": "sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.2.tgz", + "integrity": "sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==", "engines": { "node": ">=14" } @@ -3069,9 +3069,9 @@ } }, "node_modules/@types/react-dom": { - "version": "17.0.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.18.tgz", - "integrity": "sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==", + "version": "17.0.19", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz", + "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==", "dev": true, "dependencies": { "@types/react": "^17" @@ -13097,11 +13097,11 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-router": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.0.tgz", - "integrity": "sha512-760bk7y3QwabduExtudhWbd88IBbuD1YfwzpuDUAlJUJ7laIIcqhMvdhSVh1Fur1PE8cGl84L0dxhR3/gvHF7A==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz", + "integrity": "sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==", "dependencies": { - "@remix-run/router": "1.3.1" + "@remix-run/router": "1.3.2" }, "engines": { "node": ">=14" @@ -13111,12 +13111,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.0.tgz", - "integrity": "sha512-hQouduSTywGJndE86CXJ2h7YEy4HYC6C/uh19etM+79FfQ6cFFFHnHyDlzO4Pq0eBUI96E4qVE5yUjA00yJZGQ==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.1.tgz", + "integrity": "sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==", "dependencies": { - "@remix-run/router": "1.3.1", - "react-router": "6.8.0" + "@remix-run/router": "1.3.2", + "react-router": "6.8.1" }, "engines": { "node": ">=14" @@ -20956,9 +20956,9 @@ } }, "@remix-run/router": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.1.tgz", - "integrity": "sha512-+eun1Wtf72RNRSqgU7qM2AMX/oHp+dnx7BHk1qhK5ZHzdHTUU4LA1mGG1vT+jMc8sbhG3orvsfOmryjzx2PzQw==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.3.2.tgz", + "integrity": "sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==" }, "@rollup/plugin-babel": { "version": "5.3.1", @@ -21251,9 +21251,9 @@ } }, "@types/react-dom": { - "version": "17.0.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.18.tgz", - "integrity": "sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==", + "version": "17.0.19", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.19.tgz", + "integrity": "sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==", "dev": true, "requires": { "@types/react": "^17" @@ -28632,20 +28632,20 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-router": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.0.tgz", - "integrity": "sha512-760bk7y3QwabduExtudhWbd88IBbuD1YfwzpuDUAlJUJ7laIIcqhMvdhSVh1Fur1PE8cGl84L0dxhR3/gvHF7A==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz", + "integrity": "sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==", "requires": { - "@remix-run/router": "1.3.1" + "@remix-run/router": "1.3.2" } }, "react-router-dom": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.0.tgz", - "integrity": "sha512-hQouduSTywGJndE86CXJ2h7YEy4HYC6C/uh19etM+79FfQ6cFFFHnHyDlzO4Pq0eBUI96E4qVE5yUjA00yJZGQ==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.8.1.tgz", + "integrity": "sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==", "requires": { - "@remix-run/router": "1.3.1", - "react-router": "6.8.0" + "@remix-run/router": "1.3.2", + "react-router": "6.8.1" } }, "read-file-stdin": { diff --git a/package.json b/package.json index f664622998..8f607916e0 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@types/loadable__component": "5.13.4", "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", - "@types/react-dom": "17.0.18", + "@types/react-dom": "17.0.19", "@typescript-eslint/eslint-plugin": "5.51.0", "@typescript-eslint/parser": "5.51.0", "@uupaa/dynamic-import-polyfill": "1.0.2", @@ -102,7 +102,7 @@ "pdfjs-dist": "2.16.105", "react": "17.0.2", "react-dom": "17.0.2", - "react-router-dom": "6.8.0", + "react-router-dom": "6.8.1", "resize-observer-polyfill": "1.5.1", "screenfull": "6.0.2", "sortablejs": "1.15.0", From 009589b6c276bcf95d4fd0b2cbb7c0e08d0867ba Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 02:04:40 +0000 Subject: [PATCH 209/222] Update dependency sass to v1.58.1 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9a8999a872..ceb26bdb05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -98,7 +98,7 @@ "postcss-loader": "7.0.2", "postcss-preset-env": "8.0.1", "postcss-scss": "4.0.6", - "sass": "1.58.0", + "sass": "1.58.1", "sass-loader": "13.2.0", "source-map-loader": "4.0.1", "style-loader": "3.3.1", @@ -13672,9 +13672,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.0.tgz", - "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==", + "version": "1.58.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.1.tgz", + "integrity": "sha512-bnINi6nPXbP1XNRaranMFEBZWUfdW/AF16Ql5+ypRxfTvCRTTKrLsMIakyDcayUt2t/RZotmL4kgJwNH5xO+bg==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -29068,9 +29068,9 @@ "dev": true }, "sass": { - "version": "1.58.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.0.tgz", - "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==", + "version": "1.58.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.1.tgz", + "integrity": "sha512-bnINi6nPXbP1XNRaranMFEBZWUfdW/AF16Ql5+ypRxfTvCRTTKrLsMIakyDcayUt2t/RZotmL4kgJwNH5xO+bg==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", diff --git a/package.json b/package.json index 8f607916e0..5799b9d5bd 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "postcss-loader": "7.0.2", "postcss-preset-env": "8.0.1", "postcss-scss": "4.0.6", - "sass": "1.58.0", + "sass": "1.58.1", "sass-loader": "13.2.0", "source-map-loader": "4.0.1", "style-loader": "3.3.1", From ed5fd855d712f2c3fc69893b9939ac3d5ca66857 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 02:05:24 +0000 Subject: [PATCH 210/222] Update Linters --- package-lock.json | 180 +++++++++++++++++++++++----------------------- package.json | 6 +- 2 files changed, 93 insertions(+), 93 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9a8999a872..1976317dd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,8 +68,8 @@ "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", "@types/react-dom": "17.0.19", - "@typescript-eslint/eslint-plugin": "5.51.0", - "@typescript-eslint/parser": "5.51.0", + "@typescript-eslint/eslint-plugin": "5.52.0", + "@typescript-eslint/parser": "5.52.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -106,7 +106,7 @@ "stylelint-config-rational-order": "0.1.2", "stylelint-no-browser-hacks": "1.2.1", "stylelint-order": "6.0.2", - "stylelint-scss": "4.3.0", + "stylelint-scss": "4.4.0", "ts-loader": "9.4.2", "typescript": "4.9.5", "webpack": "5.75.0", @@ -3175,14 +3175,14 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", - "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz", + "integrity": "sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/type-utils": "5.51.0", - "@typescript-eslint/utils": "5.51.0", + "@typescript-eslint/scope-manager": "5.52.0", + "@typescript-eslint/type-utils": "5.52.0", + "@typescript-eslint/utils": "5.52.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -3224,14 +3224,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", - "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.52.0.tgz", + "integrity": "sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/scope-manager": "5.52.0", + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/typescript-estree": "5.52.0", "debug": "^4.3.4" }, "engines": { @@ -3251,13 +3251,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", - "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz", + "integrity": "sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/visitor-keys": "5.51.0" + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/visitor-keys": "5.52.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3268,13 +3268,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", - "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz", + "integrity": "sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.51.0", - "@typescript-eslint/utils": "5.51.0", + "@typescript-eslint/typescript-estree": "5.52.0", + "@typescript-eslint/utils": "5.52.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -3295,9 +3295,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", - "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.52.0.tgz", + "integrity": "sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3308,13 +3308,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", - "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz", + "integrity": "sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/visitor-keys": "5.51.0", + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/visitor-keys": "5.52.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3379,16 +3379,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", - "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.52.0.tgz", + "integrity": "sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/scope-manager": "5.52.0", + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/typescript-estree": "5.52.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -3420,12 +3420,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", - "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz", + "integrity": "sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/types": "5.52.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -17059,9 +17059,9 @@ } }, "node_modules/stylelint-scss": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.3.0.tgz", - "integrity": "sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.4.0.tgz", + "integrity": "sha512-Qy66a+/30aylFhPmUArHhVsHOun1qrO93LGT15uzLuLjWS7hKDfpFm34mYo1ndR4MCo8W4bEZM1+AlJRJORaaw==", "dev": true, "dependencies": { "lodash": "^4.17.21", @@ -17071,7 +17071,7 @@ "postcss-value-parser": "^4.1.0" }, "peerDependencies": { - "stylelint": "^14.5.1" + "stylelint": "^14.5.1 || ^15.0.0" } }, "node_modules/stylelint/node_modules/array-union": { @@ -21356,14 +21356,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", - "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz", + "integrity": "sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/type-utils": "5.51.0", - "@typescript-eslint/utils": "5.51.0", + "@typescript-eslint/scope-manager": "5.52.0", + "@typescript-eslint/type-utils": "5.52.0", + "@typescript-eslint/utils": "5.52.0", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -21385,53 +21385,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", - "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.52.0.tgz", + "integrity": "sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/scope-manager": "5.52.0", + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/typescript-estree": "5.52.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", - "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz", + "integrity": "sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/visitor-keys": "5.51.0" + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/visitor-keys": "5.52.0" } }, "@typescript-eslint/type-utils": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", - "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz", + "integrity": "sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.51.0", - "@typescript-eslint/utils": "5.51.0", + "@typescript-eslint/typescript-estree": "5.52.0", + "@typescript-eslint/utils": "5.52.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", - "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.52.0.tgz", + "integrity": "sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", - "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz", + "integrity": "sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/visitor-keys": "5.51.0", + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/visitor-keys": "5.52.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -21471,16 +21471,16 @@ } }, "@typescript-eslint/utils": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", - "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.52.0.tgz", + "integrity": "sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.51.0", - "@typescript-eslint/types": "5.51.0", - "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/scope-manager": "5.52.0", + "@typescript-eslint/types": "5.52.0", + "@typescript-eslint/typescript-estree": "5.52.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -21498,12 +21498,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.51.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", - "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", + "version": "5.52.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz", + "integrity": "sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/types": "5.52.0", "eslint-visitor-keys": "^3.3.0" }, "dependencies": { @@ -31858,9 +31858,9 @@ } }, "stylelint-scss": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.3.0.tgz", - "integrity": "sha512-GvSaKCA3tipzZHoz+nNO7S02ZqOsdBzMiCx9poSmLlb3tdJlGddEX/8QzCOD8O7GQan9bjsvLMsO5xiw6IhhIQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.4.0.tgz", + "integrity": "sha512-Qy66a+/30aylFhPmUArHhVsHOun1qrO93LGT15uzLuLjWS7hKDfpFm34mYo1ndR4MCo8W4bEZM1+AlJRJORaaw==", "dev": true, "requires": { "lodash": "^4.17.21", diff --git a/package.json b/package.json index 8f607916e0..b5b208c8b0 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "@types/lodash-es": "4.17.6", "@types/react": "17.0.53", "@types/react-dom": "17.0.19", - "@typescript-eslint/eslint-plugin": "5.51.0", - "@typescript-eslint/parser": "5.51.0", + "@typescript-eslint/eslint-plugin": "5.52.0", + "@typescript-eslint/parser": "5.52.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.13", "babel-loader": "9.1.2", @@ -57,7 +57,7 @@ "stylelint-config-rational-order": "0.1.2", "stylelint-no-browser-hacks": "1.2.1", "stylelint-order": "6.0.2", - "stylelint-scss": "4.3.0", + "stylelint-scss": "4.4.0", "ts-loader": "9.4.2", "typescript": "4.9.5", "webpack": "5.75.0", From 4b6f072bef1633300cca2c393e8b3c09a2fca8e1 Mon Sep 17 00:00:00 2001 From: lyaschuchenko Date: Wed, 22 Feb 2023 07:41:54 +0000 Subject: [PATCH 211/222] Translated using Weblate (Ukrainian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uk/ --- src/strings/uk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/uk.json b/src/strings/uk.json index 07b7b3c2a0..2168357faf 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -1329,7 +1329,7 @@ "OptionEnableM2tsMode": "Увімкнути режим M2TS", "OptionEnableForAllTuners": "Увімкнути для всіх пристроїв тюнера", "OptionEnableExternalContentInSuggestionsHelp": "Дозволити включати інтернет-трейлери та телепрограми в прямому ефірі до запропонованого вмісту.", - "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", + "OptionCaptionInfoExSamsung": "Функція CaptionInfoEx (Samsung)", "OptionEnableExternalContentInSuggestions": "Увімкнути зовнішній вміст у пропозиціях", "OptionEnableAccessToAllLibraries": "Увімкнути доступ до всіх медіатек", "OptionEnableAccessToAllChannels": "Увімкнути доступ до всіх каналів", From 721a766ca2606b80beafa45d0e73ecca7c6a6408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Wed, 22 Feb 2023 18:02:28 +0000 Subject: [PATCH 212/222] 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 839e85f4f7..78acddc0c0 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1703,5 +1703,6 @@ "LabelChapterImageResolutionHelp": "Rozližení extrahovaných obrázků kapitol.", "ResolutionMatchSource": "Stejné jako zdroj", "PreferEmbeddedExtrasTitlesOverFileNames": "Preferovat vložené názvy před názvy souborů pro doplňky", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Doplňky většinou mají stejný vložený název jako nadřazená položka. Zaškrtnutím je i přesto můžete upřednostnit." + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Doplňky většinou mají stejný vložený název jako nadřazená položka. Zaškrtnutím je i přesto můžete upřednostnit.", + "SecondarySubtitles": "Sekundární titulky" } From 488bb4248a8aeb112db1f6ea54b714f23fd58a71 Mon Sep 17 00:00:00 2001 From: Bas Date: Wed, 22 Feb 2023 18:30:31 +0000 Subject: [PATCH 213/222] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 543962164b..44d8eab396 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -366,7 +366,7 @@ "HeaderTranscodingProfile": "Direct Afspelen Profiel", "HeaderTranscodingProfileHelp": "Transcoding profielen toevoegen om aan te geven welke indelingen moeten worden gebruikt wanneer transcoding vereist is.", "HeaderTunerDevices": "Tuner apparaten", - "HeaderTypeImageFetchers": "Afbeelding downloaders ({0}):", + "HeaderTypeImageFetchers": "Ophalers afbeeldingen ({0}):", "HeaderTypeText": "Voer tekst in", "HeaderUpcomingOnTV": "Binnenkort op tv", "HeaderUploadImage": "Afbeelding Uploaden", @@ -504,7 +504,7 @@ "LabelHardwareAccelerationType": "Hardware acceleratie:", "LabelHardwareAccelerationTypeHelp": "Hardwarematige versnelling vereist extra configuratie.", "LabelHomeNetworkQuality": "Thuisnetwerk kwaliteit:", - "LabelHomeScreenSectionValue": "Beginscherm sectie {0}:", + "LabelHomeScreenSectionValue": "Beginschermsectie {0}:", "LabelHttpsPort": "Lokale HTTPS poort nummer:", "LabelHttpsPortHelp": "Het TCP poort nummer voor de HTTPS server.", "LabelIconMaxHeight": "Pictogram maximum hoogte:", @@ -735,7 +735,7 @@ "MessageConfirmRevokeApiKey": "Weet u zeker dat u deze API-sleutel in wilt trekken? De verbinding van de applicatie met deze server zal plotseling verbroken worden.", "MessageConfirmShutdown": "Weet u zeker dat u de server wilt afsluiten?", "MessageContactAdminToResetPassword": "Neem contact op met de serverbeheerder om uw wachtwoord te resetten.", - "MessageCreateAccountAt": "Maak een account bij {0}", + "MessageCreateAccountAt": "Account aanmaken bij {0}", "MessageDeleteTaskTrigger": "Weet u zeker dat u deze signaal taak wilt verwijderen?", "MessageDirectoryPickerBSDInstruction": "Voor BSD moet u mogelijk de opslag in uw FreeNAS Jail opzetten, zodat Jellyfin toegang heeft tot uw media.", "MessageDirectoryPickerLinuxInstruction": "Voor Linux op Arch Linux, CentOS, Debian, Fedora, openSUSE, of Ubuntu, moet u de service-gebruiker ten minste leestoegang tot uw opslaglocaties verlenen.", @@ -928,8 +928,8 @@ "Raised": "Verhoogd", "Rate": "Waardeer", "RecentlyWatched": "Onlangs bekeken", - "RecommendationBecauseYouLike": "Omdat u {0} leuk vond", - "RecommendationBecauseYouWatched": "Omdat u keek naar {0}", + "RecommendationBecauseYouLike": "Omdat je {0} leuk vindt", + "RecommendationBecauseYouWatched": "Omdat je keek naar {0}", "RecommendationDirectedBy": "Geregisseerd door {0}", "RecommendationStarring": "In de hoofdrollen {0}", "Record": "Opnemen", @@ -991,7 +991,7 @@ "Shuffle": "Willekeurig", "SimultaneousConnectionLimitHelp": "Het maximum aantal toegestane gelijktijdige streams. Geef 0 in voor geen limiet.", "SkipEpisodesAlreadyInMyLibrary": "Neem geen afleveringen op die al in mijn bibliotheek aanwezig zijn", - "SkipEpisodesAlreadyInMyLibraryHelp": "Afleveringen zullen worden vergeleken met behulp van seizoen en aflevering nummers, indien beschikbaar.", + "SkipEpisodesAlreadyInMyLibraryHelp": "Afleveringen zullen worden vergeleken met behulp van seizoens- en afleveringsnummers, indien beschikbaar.", "Small": "Klein", "SmallCaps": "Kleine letters", "Smaller": "Kleiner", @@ -1059,7 +1059,7 @@ "ValueConditions": "Voorwaarden: {0}", "ValueEpisodeCount": "{0} afleveringen", "ValueMovieCount": "{0} films", - "ValueMusicVideoCount": "{0} muziek video's", + "ValueMusicVideoCount": "{0} muziekvideo's", "ValueOneEpisode": "1 aflevering", "ValueOneMovie": "1 film", "ValueOneMusicVideo": "1 muziekvideo", @@ -1265,7 +1265,7 @@ "EveryXMinutes": "Elke {0} minuten", "OnWakeFromSleep": "Op het wakker worden vanuit slaapstand", "WeeklyAt": "{0}s op {1}", - "DailyAt": "Dagelijks op {0}", + "DailyAt": "Dagelijks om {0}", "LastSeen": "Laatst gezien {0}", "PersonRole": "als {0}", "ListPaging": "{0}-{1} van de {2}", @@ -1292,7 +1292,7 @@ "MessageSyncPlayGroupDoesNotExist": "Kan niet deelnemen aan de groep omdat deze niet bestaat.", "MessageSyncPlayPlaybackPermissionRequired": "Afspeelrechten vereist.", "MessageSyncPlayGroupWait": "{0} is aan het bufferen…", - "MessageSyncPlayUserLeft": "{0} i heeft de groep verlaten.", + "MessageSyncPlayUserLeft": "{0} heeft de groep verlaten.", "MessageSyncPlayUserJoined": "{0} is lid geworden van de groep.", "MessageSyncPlayDisabled": "SyncPlay uitgeschakeld.", "MessageSyncPlayEnabled": "SyncPlay ingeschakeld.", @@ -1702,5 +1702,6 @@ "HeaderDummyChapter": "Hoofdstukafbeeldingen", "LabelDummyChapterDurationHelp": "De extractieinterval voor hoofdstukafbeeldingen in seconden.", "ResolutionMatchSource": "Gelijk aan bron", - "HeaderRecordingMetadataSaving": "Metadata opname" + "HeaderRecordingMetadataSaving": "Metadata opname", + "SecondarySubtitles": "Secundaire ondertiteling" } From ca51355e9e7650aa598f91ae2b42465c6b416e26 Mon Sep 17 00:00:00 2001 From: blob03 Date: Wed, 22 Feb 2023 20:12:14 +0000 Subject: [PATCH 214/222] 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 d742a3d561..859cbd8640 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1703,5 +1703,6 @@ "LabelDummyChapterDuration": "Intervalle :", "LabelDummyChapterCountHelp": "Nombre maximal d’images de chapitre à extraire pour chaque fichier multimédia.", "PreferEmbeddedExtrasTitlesOverFileNames": "Préférer les titres intégrés aux médias pour les bonus", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Les bonus possèdent souvent un titre intégré identique au média parent, cocher l'option pour utiliser ce titre quoi qu'il en soit." + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Les bonus possèdent souvent un titre intégré identique au média parent, cocher l'option pour utiliser ce titre quoi qu'il en soit.", + "SecondarySubtitles": "Sous-titres secondaires" } From db51d280c469bc2cc9b15df35090000169602106 Mon Sep 17 00:00:00 2001 From: Pranav Avva Date: Wed, 22 Feb 2023 20:27:55 +0000 Subject: [PATCH 215/222] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 46c2072174..32dd0870a8 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -141,5 +141,11 @@ "ButtonSubmit": "प्रस्तुत करें", "ButtonTogglePlaylist": "प्लेलिस्ट", "ButtonUninstall": "ऐप हटाएं", - "ButtonTrailer": "ट्रेलर" + "ButtonTrailer": "ट्रेलर", + "Large": "बड़ा", + "Small": "छोटा", + "Normal": "सामान्य", + "Songs": "गाने", + "Larger": "और बड़ा", + "ListPaging": "{2} का {0}-{1}" } From 92362e30068ebe6b12177650e7abe0fc495f4955 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Feb 2023 23:52:00 +0000 Subject: [PATCH 216/222] Update dependency cssnano to v5.1.15 --- package-lock.json | 86 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1aba4abd48..865a514c68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -79,7 +79,7 @@ "copy-webpack-plugin": "11.0.0", "cross-env": "7.0.3", "css-loader": "6.7.3", - "cssnano": "5.1.14", + "cssnano": "5.1.15", "es-check": "7.1.0", "eslint": "8.34.0", "eslint-plugin-compat": "4.1.1", @@ -5455,12 +5455,12 @@ } }, "node_modules/cssnano": { - "version": "5.1.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", "dev": true, "dependencies": { - "cssnano-preset-default": "^5.2.13", + "cssnano-preset-default": "^5.2.14", "lilconfig": "^2.0.3", "yaml": "^1.10.2" }, @@ -5476,22 +5476,22 @@ } }, "node_modules/cssnano-preset-default": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", "dev": true, "dependencies": { "css-declaration-sorter": "^6.3.1", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", + "postcss-colormin": "^5.3.1", "postcss-convert-values": "^5.1.3", "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", + "postcss-merge-rules": "^5.1.4", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", "postcss-minify-params": "^5.1.4", @@ -5506,7 +5506,7 @@ "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", + "postcss-reduce-initial": "^5.1.2", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", "postcss-unique-selectors": "^5.1.1" @@ -9990,7 +9990,7 @@ "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, "node_modules/logform": { @@ -11388,12 +11388,12 @@ } }, "node_modules/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", "dev": true, "dependencies": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "colord": "^2.9.1", "postcss-value-parser": "^4.2.0" @@ -12101,9 +12101,9 @@ } }, "node_modules/postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", "dev": true, "dependencies": { "browserslist": "^4.21.4", @@ -12571,9 +12571,9 @@ } }, "node_modules/postcss-reduce-initial": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", "dev": true, "dependencies": { "browserslist": "^4.21.4", @@ -23025,33 +23025,33 @@ "dev": true }, "cssnano": { - "version": "5.1.14", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz", - "integrity": "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==", + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", "dev": true, "requires": { - "cssnano-preset-default": "^5.2.13", + "cssnano-preset-default": "^5.2.14", "lilconfig": "^2.0.3", "yaml": "^1.10.2" } }, "cssnano-preset-default": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz", - "integrity": "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==", + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", "dev": true, "requires": { "css-declaration-sorter": "^6.3.1", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", + "postcss-colormin": "^5.3.1", "postcss-convert-values": "^5.1.3", "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", + "postcss-merge-rules": "^5.1.4", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", "postcss-minify-params": "^5.1.4", @@ -23066,7 +23066,7 @@ "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", + "postcss-reduce-initial": "^5.1.2", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", "postcss-unique-selectors": "^5.1.1" @@ -26456,7 +26456,7 @@ "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, "logform": { @@ -27476,12 +27476,12 @@ } }, "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", "dev": true, "requires": { - "browserslist": "^4.16.6", + "browserslist": "^4.21.4", "caniuse-api": "^3.0.0", "colord": "^2.9.1", "postcss-value-parser": "^4.2.0" @@ -27971,9 +27971,9 @@ } }, "postcss-merge-rules": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz", - "integrity": "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", "dev": true, "requires": { "browserslist": "^4.21.4", @@ -28262,9 +28262,9 @@ } }, "postcss-reduce-initial": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz", - "integrity": "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", "dev": true, "requires": { "browserslist": "^4.21.4", diff --git a/package.json b/package.json index e1d25ca0a4..1b8b771097 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "copy-webpack-plugin": "11.0.0", "cross-env": "7.0.3", "css-loader": "6.7.3", - "cssnano": "5.1.14", + "cssnano": "5.1.15", "es-check": "7.1.0", "eslint": "8.34.0", "eslint-plugin-compat": "4.1.1", From f5b255c9f22dd429e5cc798e9803d31758c4970c Mon Sep 17 00:00:00 2001 From: Oskari Lavinto Date: Thu, 23 Feb 2023 01:12:04 +0000 Subject: [PATCH 217/222] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fi/ --- src/strings/fi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fi.json b/src/strings/fi.json index 35b4abfc95..d2051489b4 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1696,5 +1696,6 @@ "LabelChapterImageResolutionHelp": "Purettujen kappalekuvien resoluutio.", "ResolutionMatchSource": "Vastaa lähdettä", "PreferEmbeddedExtrasTitlesOverFileNames": "Suosi lisämateriaaleille upotettuja otsikoita tiedostonimien sijaan", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Lisämateriaaleilla on usein sama otsikko kuin niiden isännällä. Valitse tämä käyttääksesi silti upotettuja otsikoita." + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Lisämateriaaleilla on usein sama otsikko kuin niiden isännällä. Valitse tämä käyttääksesi silti upotettuja otsikoita.", + "SecondarySubtitles": "Toissijaiset tekstitykset" } From 2da9c9cba8d503ed34317b840b5cfe9de738a81a Mon Sep 17 00:00:00 2001 From: TnZzZHlp Date: Thu, 23 Feb 2023 12:26:07 +0000 Subject: [PATCH 218/222] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 818bf42ffd..cee2f4d006 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1703,5 +1703,6 @@ "LabelDummyChapterCount": "限制:", "LabelDummyChapterCountHelp": "每个媒体文件的最大章节图像提取数。", "LabelChapterImageResolution": "分辨率:", - "LabelChapterImageResolutionHelp": "提取的章节图像的分辨率。" + "LabelChapterImageResolutionHelp": "提取的章节图像的分辨率。", + "SecondarySubtitles": "次字幕" } From b230b0cd9c99cbe75c61403c5e246eb63e6301e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 23 Feb 2023 19:52:27 +0000 Subject: [PATCH 219/222] Update dependency eslint-plugin-compat to v4.1.2 --- package-lock.json | 22 ++++++++++------------ package.json | 2 +- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1aba4abd48..b1cc230c6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,7 +82,7 @@ "cssnano": "5.1.14", "es-check": "7.1.0", "eslint": "8.34.0", - "eslint-plugin-compat": "4.1.1", + "eslint-plugin-compat": "4.1.2", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", @@ -6504,22 +6504,21 @@ } }, "node_modules/eslint-plugin-compat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.1.tgz", - "integrity": "sha512-vUAaqKcDwXpVASyCAfKzkfaw3NxZ6FqeCNSGp7yqHpUMzkAiWRO0B6pR5zqh8RUhvybwXhPXvwVKDLr9GqGFUQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.2.tgz", + "integrity": "sha512-DNrQgDi5L4mAL4FdFboKBlSRg6MWfd75eA7K91lMjtP5ryN+O11qT2FDn7Z6zqy6sZ4sJawUR5V75qzB6l0CBg==", "dev": true, "dependencies": { "@mdn/browser-compat-data": "^5.2.34", "ast-metadata-inferer": "^0.7.0", "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001450", - "core-js": "^3.27.2", + "caniuse-lite": "^1.0.30001451", "find-up": "^5.0.0", "lodash.memoize": "4.1.2", "semver": "7.3.8" }, "engines": { - "node": ">=9.x" + "node": ">=16.x" }, "peerDependencies": { "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" @@ -24046,16 +24045,15 @@ } }, "eslint-plugin-compat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.1.tgz", - "integrity": "sha512-vUAaqKcDwXpVASyCAfKzkfaw3NxZ6FqeCNSGp7yqHpUMzkAiWRO0B6pR5zqh8RUhvybwXhPXvwVKDLr9GqGFUQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-4.1.2.tgz", + "integrity": "sha512-DNrQgDi5L4mAL4FdFboKBlSRg6MWfd75eA7K91lMjtP5ryN+O11qT2FDn7Z6zqy6sZ4sJawUR5V75qzB6l0CBg==", "dev": true, "requires": { "@mdn/browser-compat-data": "^5.2.34", "ast-metadata-inferer": "^0.7.0", "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001450", - "core-js": "^3.27.2", + "caniuse-lite": "^1.0.30001451", "find-up": "^5.0.0", "lodash.memoize": "4.1.2", "semver": "7.3.8" diff --git a/package.json b/package.json index e1d25ca0a4..24d3325686 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "cssnano": "5.1.14", "es-check": "7.1.0", "eslint": "8.34.0", - "eslint-plugin-compat": "4.1.1", + "eslint-plugin-compat": "4.1.2", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-import": "2.27.5", "eslint-plugin-jsx-a11y": "6.7.1", From 6eb760b03ca438bd7a334e0e930bb777a6671856 Mon Sep 17 00:00:00 2001 From: Valentin COMTE Date: Fri, 24 Feb 2023 04:43:16 +0000 Subject: [PATCH 220/222] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index fd3cd5de27..a4e975a8a5 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1703,5 +1703,6 @@ "ResolutionMatchSource": "Match Source", "SaveRecordingNFO": "Save recording EPG metadata in NFO", "PreferEmbeddedExtrasTitlesOverFileNames": "Prefer embedded titles over filenames for extras", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras often have the same embedded name as the parent, check this to use embedded titles for them anyway." + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras often have the same embedded name as the parent, check this to use embedded titles for them anyway.", + "SecondarySubtitles": "Secondary Subtitles" } From 34d903d85bdeb1d03e5bdbd183f72a91487058ca Mon Sep 17 00:00:00 2001 From: Kilian von Pflugk Date: Fri, 24 Feb 2023 20:06:38 +0000 Subject: [PATCH 221/222] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index e874f5d420..89856057b3 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1688,5 +1688,21 @@ "DownloadAll": "Alle Herunterladen", "LabelStereoDownmixAlgorithm": "Stereo Downmix Algorithmus", "StereoDownmixAlgorithmHelp": "Algorithmus um Mehrkanal-Audio zu Stereo-Audio umzuwandeln.", - "Experimental": "Experimentell" + "Experimental": "Experimentell", + "SaveRecordingNFO": "Speichern der EPG-Metadaten in NFO", + "SaveRecordingNFOHelp": "Speichern Sie Metadaten von EPG-Anbietern zusammen mit den Medien.", + "ResolutionMatchSource": "Quelle der Übereinstimmung", + "PreferEmbeddedExtrasTitlesOverFileNames": "Eingebettete Titel gegenüber Dateinamen für Extras bevorzugen", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras haben oft denselben eingebetteten Namen wie die übergeordnete Datei. Aktivieren Sie diese Option, um trotzdem eingebettete Titel für sie zu verwenden.", + "SaveRecordingImages": "Speichern der EPG-Bilder der Aufnahme", + "SaveRecordingImagesHelp": "Speichern Sie Bilder von EPG-Anbietern zusammen mit den Medien.", + "SecondarySubtitles": "Sekundäre Untertitel", + "HeaderDummyChapter": "Kapitel Bilder", + "HeaderRecordingMetadataSaving": "Aufzeichnung von Metadaten", + "LabelDummyChapterDuration": "Intervall:", + "LabelDummyChapterDurationHelp": "Das Intervall für die Extraktion des Kapitelbildes in Sekunden.", + "LabelDummyChapterCount": "Limit:", + "LabelDummyChapterCountHelp": "Die maximale Anzahl von Kapitelbildern, die für jede Mediendatei extrahiert werden.", + "LabelChapterImageResolution": "Auflösung:", + "LabelChapterImageResolutionHelp": "Die Auflösung der extrahierten Kapitelbilder." } From 793e9c73f72d855081d20c7a7766303aea442d24 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Feb 2023 03:13:38 +0000 Subject: [PATCH 222/222] Update github/codeql-action action to v2.2.5 --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 9162d3ca71..d0d11b4c5f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -21,11 +21,11 @@ jobs: - name: Checkout repository uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 - name: Initialize CodeQL - uses: github/codeql-action/init@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + uses: github/codeql-action/init@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + uses: github/codeql-action/autobuild@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + uses: github/codeql-action/analyze@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5