From d3d4c116a48904f2d94bd7de57d7c61edecbc2b2 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 8 May 2020 18:52:40 +0200 Subject: [PATCH 001/131] Fix some issues with details page and small redesign --- src/assets/css/librarybrowser.css | 30 +++++++++++++++------ src/controllers/itemDetails.js | 17 +----------- src/itemdetails.html | 42 ++++++++++++++--------------- src/scripts/itembynamedetailpage.js | 4 +-- 4 files changed, 46 insertions(+), 47 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 88598fb94d..ef25435dae 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -438,7 +438,7 @@ background-repeat: no-repeat; background-position: center; background-attachment: fixed; - height: 50vh; + height: 40vh; position: relative; } @@ -463,10 +463,15 @@ .detailPageContent { display: flex; flex-direction: column; - padding-left: 2%; + padding-left: 32.45vw; padding-right: 2%; } +.layout-desktop .detailPageContent .emby-scroller, +.layout-tv .detailPageContent .emby-scroller { + margin-left: 0; +} + .layout-desktop .noBackdrop .detailPageContent, .layout-tv .noBackdrop .detailPageContent { margin-top: 2.5em; @@ -569,6 +574,7 @@ .layout-desktop .detailSticky, .layout-tv .detailSticky { margin-top: -7.2em; + height: 7.18em; } .layout-desktop .noBackdrop .detailSticky, @@ -595,12 +601,20 @@ } .detailImageContainer { - position: relative; - margin-top: -25vh; - margin-bottom: 10vh; + position: absolute; + top: 50%; float: left; width: 25vw; z-index: 3; + transform: translateY(-50%); +} + +.thumbDetailImageContainer { + top: 35%; +} + +.squareDetailImageContainer { + top: 40%; } .layout-desktop .noBackdrop .detailImageContainer, @@ -613,11 +627,11 @@ } .detailLogo { - width: 30vw; - height: 25vh; + width: 25vw; + height: 16vh; position: absolute; top: 10vh; - right: 20vw; + right: 25vw; background-size: contain; } diff --git a/src/controllers/itemDetails.js b/src/controllers/itemDetails.js index 67aa5f9407..7c53338d21 100644 --- a/src/controllers/itemDetails.js +++ b/src/controllers/itemDetails.js @@ -486,7 +486,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti index: 0, tag: item.ImageTags.Thumb }); - page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl); hasbackdrop = true; } else if (usePrimaryImage && item.ImageTags && item.ImageTags.Primary) { @@ -496,7 +495,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti index: 0, tag: item.ImageTags.Primary }); - page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl); hasbackdrop = true; } else if (item.BackdropImageTags && item.BackdropImageTags.length) { @@ -506,7 +504,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti index: 0, tag: item.BackdropImageTags[0] }); - page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl); hasbackdrop = true; } else if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { @@ -516,7 +513,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti index: 0, tag: item.ParentBackdropImageTags[0] }); - page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl); hasbackdrop = true; } else if (item.ImageTags && item.ImageTags.Thumb) { @@ -526,21 +522,12 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti index: 0, tag: item.ImageTags.Thumb }); - page.classList.remove('noBackdrop'); imageLoader.lazyImage(itemBackdropElement, imgUrl); hasbackdrop = true; } else { itemBackdropElement.style.backgroundImage = ''; } - if ('Person' === item.Type) { - // FIXME: This hides the backdrop on all persons to fix a margin issue. Ideally, a proper fix should be made. - page.classList.add('noBackdrop'); - itemBackdropElement.classList.add('personBackdrop'); - } else { - itemBackdropElement.classList.remove('personBackdrop'); - } - return hasbackdrop; } @@ -2126,9 +2113,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti view.addEventListener('viewshow', function (e) { var page = this; - if (layoutManager.mobile) { - libraryMenu.setTransparentMenu(true); - } + libraryMenu.setTransparentMenu(true); if (e.detail.isRestored) { if (currentItem) { diff --git a/src/itemdetails.html b/src/itemdetails.html index 18de25845c..fff19827f8 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -1,4 +1,4 @@ -
+
'; html += '
'; - html += '
'; + html += '
'; html += '
'; return html += '
'; }).join(''); From 617708009e4ead79a90d702264f5659da109018f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 8 May 2020 19:50:56 +0200 Subject: [PATCH 002/131] Rework mobile details page --- src/assets/css/librarybrowser.css | 32 +++++++++++++++++++++---------- src/controllers/itemDetails.js | 2 +- src/themes/dark/theme.css | 5 +++++ 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index ef25435dae..2388f53bbb 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -24,10 +24,6 @@ padding-top: 7em !important; } -.layout-mobile .libraryPage { - padding-top: 4em !important; -} - .itemDetailPage { padding-top: 0 !important; } @@ -444,6 +440,7 @@ .layout-mobile .itemBackdrop { background-attachment: scroll; + height: 26.5vh; } .layout-desktop .itemBackdrop::after, @@ -467,6 +464,11 @@ padding-right: 2%; } +.layout-mobile .detailPageContent { + padding-left: 5%; + padding-right: 5%; +} + .layout-desktop .detailPageContent .emby-scroller, .layout-tv .detailPageContent .emby-scroller { margin-left: 0; @@ -551,6 +553,11 @@ text-align: center; } +.layout-mobile .mainDetailButtons { + margin-top: 2em; + margin-bottom: 0.5em; +} + .detailPagePrimaryContainer { display: flex; align-items: center; @@ -561,7 +568,7 @@ .layout-mobile .detailPagePrimaryContainer { display: block; position: relative; - top: 0; + padding: 2.5em 3.3% 1em; } .layout-tv #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer, @@ -694,12 +701,12 @@ div.itemDetailGalleryLink.defaultCardBackground { .emby-button.detailFloatingButton { position: absolute; - background-color: rgba(0, 0, 0, 0.5) !important; - z-index: 1; - top: 50%; - left: 50%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 3; + top: 100%; + left: 90%; margin: -2.2em 0 0 -2.2em; - padding: 0.4em !important; + padding: 0.4em; color: rgba(255, 255, 255, 0.76); } @@ -1150,6 +1157,11 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { margin: 0 0.2em 0 0; } +.layout-mobile .detailsGroupItem .label, +.layout-mobile .trackSelections .selectContainer .selectLabel { + flex-basis: 4.5em; +} + .trackSelections .selectContainer .detailTrackSelect { font-size: inherit; padding: 0; diff --git a/src/controllers/itemDetails.js b/src/controllers/itemDetails.js index 7c53338d21..81cac76ddd 100644 --- a/src/controllers/itemDetails.js +++ b/src/controllers/itemDetails.js @@ -1968,7 +1968,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti }); } - playItem(item, item.UserData && 'resume' === mode ? item.UserData.PlaybackPositionTicks : 0); + playItem(item, item.UserData && mode === 'resume' ? item.UserData.PlaybackPositionTicks : 0); } function onPlayClick() { diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index a32e606386..72eedd6b96 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -453,3 +453,8 @@ html { .metadataSidebarIcon { color: #00a4dc; } + +.emby-button.detailFloatingButton { + background-color: #00a4dc; + color: #fff; +} From 267d22f04468120ffb728ae9bd44379e02bf3fac Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 8 May 2020 19:57:36 +0200 Subject: [PATCH 003/131] Move Delete button to context menu --- src/controllers/itemDetails.js | 9 +-------- src/itemdetails.html | 7 ------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/controllers/itemDetails.js b/src/controllers/itemDetails.js index 81cac76ddd..d5ea90023c 100644 --- a/src/controllers/itemDetails.js +++ b/src/controllers/itemDetails.js @@ -51,7 +51,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti positionTo: button, cancelTimer: false, record: false, - deleteItem: true === item.IsFolder, + deleteItem: item.CanDelete === true, shuffle: false, instantMix: false, user: user, @@ -557,12 +557,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti setTrailerButtonVisibility(page, item); - if (item.CanDelete && !item.IsFolder) { - hideAll(page, 'btnDeleteItem', true); - } else { - hideAll(page, 'btnDeleteItem'); - } - if ('Program' !== item.Type || canPlay) { hideAll(page, 'mainDetailButtons', true); } else { @@ -2080,7 +2074,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti bindAll(view, '.btnPlayTrailer', 'click', onPlayTrailerClick); bindAll(view, '.btnCancelSeriesTimer', 'click', onCancelSeriesTimerClick); bindAll(view, '.btnCancelTimer', 'click', onCancelTimerClick); - bindAll(view, '.btnDeleteItem', 'click', onDeleteClick); bindAll(view, '.btnDownload', 'click', onDownloadClick); view.querySelector('.trackSelections').addEventListener('submit', onTrackSelectionsSubmit); view.querySelector('.btnSplitVersions').addEventListener('click', function () { diff --git a/src/itemdetails.html b/src/itemdetails.html index fff19827f8..20a61802e3 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -71,13 +71,6 @@
- - '; } - if (itemHelper.canRate(item)) { + if (itemHelper.canRate(item) && !options.disableHoverMenu) { const likes = userData.Likes == null ? '' : userData.Likes; @@ -1514,7 +1516,9 @@ import 'programStyles'; html += ''; } - html += ''; + if (!options.disableHoverMenu) { + html += ''; + } html += '
'; html += ''; diff --git a/src/controllers/itemDetails.js b/src/controllers/itemDetails.js index d5ea90023c..4858e33b7f 100644 --- a/src/controllers/itemDetails.js +++ b/src/controllers/itemDetails.js @@ -470,34 +470,12 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var imgUrl; var hasbackdrop = false; var itemBackdropElement = page.querySelector('#itemBackdrop'); - var usePrimaryImage = item.MediaType === 'Video' && item.Type !== 'Movie' && item.Type !== 'Trailer' || - item.MediaType && item.MediaType !== 'Video' || - item.Type === 'MusicAlbum' || - item.Type === 'Person'; - if (!layoutManager.mobile && !userSettings.detailsBanner()) { + if (!layoutManager.mobile && !userSettings.enableBackdrops()) { return false; } - if ('Program' === item.Type && item.ImageTags && item.ImageTags.Thumb) { - imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: 'Thumb', - maxWidth: dom.getScreenWidth(), - index: 0, - tag: item.ImageTags.Thumb - }); - imageLoader.lazyImage(itemBackdropElement, imgUrl); - hasbackdrop = true; - } else if (usePrimaryImage && item.ImageTags && item.ImageTags.Primary) { - imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: 'Primary', - maxWidth: dom.getScreenWidth(), - index: 0, - tag: item.ImageTags.Primary - }); - imageLoader.lazyImage(itemBackdropElement, imgUrl); - hasbackdrop = true; - } else if (item.BackdropImageTags && item.BackdropImageTags.length) { + if (item.BackdropImageTags && item.BackdropImageTags.length) { imgUrl = apiClient.getScaledImageUrl(item.Id, { type: 'Backdrop', maxWidth: dom.getScreenWidth(), @@ -515,15 +493,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti }); imageLoader.lazyImage(itemBackdropElement, imgUrl); hasbackdrop = true; - } else if (item.ImageTags && item.ImageTags.Thumb) { - imgUrl = apiClient.getScaledImageUrl(item.Id, { - type: 'Thumb', - maxWidth: dom.getScreenWidth(), - index: 0, - tag: item.ImageTags.Thumb - }); - imageLoader.lazyImage(itemBackdropElement, imgUrl); - hasbackdrop = true; } else { itemBackdropElement.style.backgroundImage = ''; } @@ -714,132 +683,25 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderDetailImage(page, elem, item, apiClient, editable, imageLoader, indicators) { - if ('SeriesTimer' === item.Type || 'Program' === item.Type) { - editable = false; - } - elem.classList.add('detailimg-hidemobile'); - var imageTags = item.ImageTags || {}; + const itemArray = []; + itemArray.push(item); + const cardHtml = cardBuilder.getCardsHtml(itemArray, { + shape: 'auto', + showTitle: false, + centerText: true, + overlayText: false, + transition: false, + disableIndicators: true, + disableHoverMenu: true, + overlayPlayButton: true, + width: dom.getWindowSize().innerWidth * 0.25 + }); - if (item.PrimaryImageTag) { - imageTags.Primary = item.PrimaryImageTag; - } + elem.innerHTML = cardHtml; - var url; - var html = ''; - var shape = 'portrait'; - var detectRatio = false; - - /* In the following section, getScreenWidth() is multiplied by 0.5 as the posters - are 25vw and we need double the resolution to counter Skia's scaling. */ - // TODO: Find a reliable way to get the poster width - if (imageTags.Primary) { - url = apiClient.getScaledImageUrl(item.Id, { - type: 'Primary', - maxWidth: Math.round(dom.getScreenWidth() * 0.5), - tag: item.ImageTags.Primary - }); - detectRatio = true; - } else if (item.BackdropImageTags && item.BackdropImageTags.length) { - url = apiClient.getScaledImageUrl(item.Id, { - type: 'Backdrop', - maxWidth: Math.round(dom.getScreenWidth() * 0.5), - tag: item.BackdropImageTags[0] - }); - shape = 'thumb'; - } else if (imageTags.Thumb) { - url = apiClient.getScaledImageUrl(item.Id, { - type: 'Thumb', - maxWidth: Math.round(dom.getScreenWidth() * 0.5), - tag: item.ImageTags.Thumb - }); - shape = 'thumb'; - } else if (imageTags.Disc) { - url = apiClient.getScaledImageUrl(item.Id, { - type: 'Disc', - maxWidth: Math.round(dom.getScreenWidth() * 0.5), - tag: item.ImageTags.Disc - }); - shape = 'square'; - } else if (item.AlbumId && item.AlbumPrimaryImageTag) { - url = apiClient.getScaledImageUrl(item.AlbumId, { - type: 'Primary', - maxWidth: Math.round(dom.getScreenWidth() * 0.5), - tag: item.AlbumPrimaryImageTag - }); - shape = 'square'; - } else if (item.SeriesId && item.SeriesPrimaryImageTag) { - url = apiClient.getScaledImageUrl(item.SeriesId, { - type: 'Primary', - maxWidth: Math.round(dom.getScreenWidth() * 0.5), - tag: item.SeriesPrimaryImageTag - }); - } else if (item.ParentPrimaryImageItemId && item.ParentPrimaryImageTag) { - url = apiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, { - type: 'Primary', - maxWidth: Math.round(dom.getScreenWidth() * 0.5), - tag: item.ParentPrimaryImageTag - }); - } - - if (editable && url === undefined) { - html += ""; - } else if (!editable && url === undefined) { - html += "'; - } - - var progressHtml = item.IsFolder || !item.UserData ? '' : indicators.getProgressBarHtml(item); - html += '
'; - - if (progressHtml) { - html += progressHtml; - } - - html += '
'; - elem.innerHTML = html; - - if (detectRatio && item.PrimaryImageAspectRatio) { - if (item.PrimaryImageAspectRatio >= 1.48) { - shape = 'thumb'; - } else if (item.PrimaryImageAspectRatio >= 0.85 && item.PrimaryImageAspectRatio <= 1.34) { - shape = 'square'; - } - } - - if ('thumb' == shape) { - elem.classList.add('thumbDetailImageContainer'); - elem.classList.remove('portraitDetailImageContainer'); - elem.classList.remove('squareDetailImageContainer'); - } else if ('square' == shape) { - elem.classList.remove('thumbDetailImageContainer'); - elem.classList.remove('portraitDetailImageContainer'); - elem.classList.add('squareDetailImageContainer'); - } else { - elem.classList.remove('thumbDetailImageContainer'); - elem.classList.add('portraitDetailImageContainer'); - elem.classList.remove('squareDetailImageContainer'); - } - - if (url) { - imageLoader.lazyImage(elem.querySelector('img'), url); - } + imageLoader.lazyChildren(elem); } function renderImage(page, item, apiClient, user) { @@ -1887,12 +1749,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function bindAll(view, selector, eventName, fn) { - var i; - var length; var elems = view.querySelectorAll(selector); - for (i = 0, length = elems.length; i < length; i++) { - elems[i].addEventListener(eventName, fn); + for (let elem of elems) { + elem.addEventListener(eventName, fn); } } @@ -1912,6 +1772,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var user = responses[1]; currentItem = item; reloadFromItem(instance, page, params, item, user); + + let detailImageContainer = page.querySelector('.detailImageContainer'); + const overlayPlayButton = detailImageContainer.querySelector('.cardOverlayFab-primary'); + overlayPlayButton.addEventListener('click', onPlayClick); }); } From 71a610208618e57e8602ff9827304d9019b82348 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 10 May 2020 09:56:33 +0200 Subject: [PATCH 006/131] Align the track selection baselines in item details --- src/assets/css/librarybrowser.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 9e5c941606..48d1d14229 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -1156,6 +1156,7 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { .trackSelections .selectContainer .selectLabel { margin: 0 0.2em 0 0; + line-height: 1.75; } .layout-mobile .detailsGroupItem .label, From f468e32ac4caf9eda50b9af0c70d5c77175e4950 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 10 May 2020 10:21:43 +0200 Subject: [PATCH 007/131] Fix version indicator not respecting settings on card --- src/components/cardbuilder/cardBuilder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 97a18a713b..a12feacbd5 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1313,7 +1313,7 @@ import 'programStyles'; } const mediaSourceCount = item.MediaSourceCount || 1; - if (mediaSourceCount > 1) { + if (mediaSourceCount > 1 && (!options.disableIndicators || options.disableIndicators === false)) { innerCardFooter += '
' + mediaSourceCount + '
'; } From a8e45f30ab8bb63e0272ea49e668dfedd66c2603 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 10 May 2020 10:22:24 +0200 Subject: [PATCH 008/131] Fix buttons moving and title cropping on details page --- src/assets/css/librarybrowser.css | 5 +++-- src/controllers/itemDetails.js | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 48d1d14229..c5c540e066 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -511,8 +511,6 @@ -webkit-box-align: center; -webkit-align-items: center; align-items: center; - -webkit-flex-wrap: wrap; - flex-wrap: wrap; margin: 1em 0; } @@ -598,6 +596,9 @@ white-space: nowrap; text-overflow: ellipsis; text-align: left; + min-width: 0; + max-width: 100%; + overflow: hidden; } .layout-mobile .infoText { diff --git a/src/controllers/itemDetails.js b/src/controllers/itemDetails.js index 4858e33b7f..1b5fe68a42 100644 --- a/src/controllers/itemDetails.js +++ b/src/controllers/itemDetails.js @@ -438,7 +438,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } if (item.OriginalTitle && item.OriginalTitle != item.Name) { - html += '

' + item.OriginalTitle + '

'; + html += '

' + item.OriginalTitle + '

'; } container.innerHTML = html; From d57eff1c9b98ce2515dc774724a62a5b331d74ec Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 10 May 2020 13:36:26 +0200 Subject: [PATCH 009/131] Refactor details page --- src/assets/css/librarybrowser.css | 8 +- src/components/images/imageLoader.js | 7 + src/controllers/itemDetails.js | 206 ++++++++++++++------------- src/themes/appletv/theme.css | 2 +- src/themes/blueradiance/theme.css | 2 +- src/themes/dark/theme.css | 4 +- src/themes/light/theme.css | 2 +- src/themes/purplehaze/theme.css | 2 +- src/themes/wmc/theme.css | 2 +- 9 files changed, 128 insertions(+), 107 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index c5c540e066..0df31dcc0c 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -577,14 +577,14 @@ padding-left: 32.45vw; } -.layout-desktop .detailSticky, -.layout-tv .detailSticky { +.layout-desktop .detailRibbon, +.layout-tv .detailRibbon { margin-top: -7.2em; height: 7.18em; } -.layout-desktop .noBackdrop .detailSticky, -.layout-tv .noBackdrop .detailSticky { +.layout-desktop .noBackdrop .detailRibbon, +.layout-tv .noBackdrop .detailRibbon { margin-top: 0; } diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index f7183515c5..ddf1183797 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -212,8 +212,15 @@ import 'css!./style'; } } + export function setLazyImage(element, url) { + element.classList.add('lazy'); + element.setAttribute('data-src', url); + lazyImage(element); + } + /* eslint-enable indent */ export default { + serLazyImage: setLazyImage, fillImages: fillImages, fillImage: fillImage, lazyImage: lazyImage, diff --git a/src/controllers/itemDetails.js b/src/controllers/itemDetails.js index 1b5fe68a42..12f0ef34f5 100644 --- a/src/controllers/itemDetails.js +++ b/src/controllers/itemDetails.js @@ -336,7 +336,14 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti return html = html.join(' / '); } - function renderName(item, container, isStatic, context) { + + /** + * Rneders the item's name block + * @param {Object} item - Item used to render the name. + * @param {HTMLDivElement} container - Container to render the information into. + * @param {Object} context - Application context. + */ + function renderName(item, container, context) { var parentRoute; var parentNameHtml = []; var parentNameLast = false; @@ -364,8 +371,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti if (item.SeriesName && 'Season' === item.Type) { parentRoute = appRouter.getRouteUrl({ - Id: item.SeriesId, - Name: item.SeriesName, Type: 'Series', IsFolder: true, ServerId: item.ServerId @@ -501,21 +506,25 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function reloadFromItem(instance, page, params, item, user) { - var context = params.context; - page.querySelector('.detailPagePrimaryContainer').classList.add('detailSticky'); + const apiClient = connectionManager.getApiClient(item.ServerId); - renderName(item, page.querySelector('.nameContainer'), false, context); - var apiClient = connectionManager.getApiClient(item.ServerId); - renderSeriesTimerEditor(page, item, apiClient, user); - renderTimerEditor(page, item, apiClient, user); + Emby.Page.setTitle(''); + + // Start rendering the artwork first renderImage(page, item, apiClient, user); renderLogo(page, item, apiClient); - Emby.Page.setTitle(''); - setInitialCollapsibleState(page, item, apiClient, context, user); - renderDetails(page, item, apiClient, context); - renderTrackSelections(page, instance, item); renderBackdrop(item); renderDetailPageBackdrop(page, item, apiClient); + + // Render the main information for the item + page.querySelector('.detailPagePrimaryContainer').classList.add('detailRibbon'); + renderName(item, page.querySelector('.nameContainer'), params.context); + renderDetails(page, item, apiClient, params.context); + renderTrackSelections(page, instance, item); + + renderSeriesTimerEditor(page, item, apiClient, user); + renderTimerEditor(page, item, apiClient, user); + setInitialCollapsibleState(page, item, apiClient, params.context, user); var canPlay = reloadPlayButtons(page, item); if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && -1 !== playbackManager.getSupportedCommands().indexOf('PlayTrailers')) { @@ -617,18 +626,17 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderLogo(page, item, apiClient) { - var url = logoImageUrl(item, apiClient, { - maxWidth: 400 - }); var detailLogo = page.querySelector('.detailLogo'); + var url = logoImageUrl(item, apiClient, { + maxWidth: detailLogo.clientWidth + }); + if (!layoutManager.mobile && !userSettings.enableBackdrops()) { detailLogo.classList.add('hide'); } else if (url) { detailLogo.classList.remove('hide'); - detailLogo.classList.add('lazy'); - detailLogo.setAttribute('data-src', url); - imageLoader.lazyImage(detailLogo); + imageLoader.setLazyImage(detailLogo, url); } else { detailLogo.classList.add('hide'); } @@ -654,31 +662,32 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - function renderLinks(linksElem, item) { - var html = []; + function renderLinks(page, item) { + var externalLinksElem = page.querySelector('.itemExternalLinks'); var links = []; if (!layoutManager.tv && item.HomePageUrl) { - links.push('' + globalize.translate('ButtonWebsite') + ''); + links.push(`${globalize.translate('ButtonWebsite')}`); } + if (item.ExternalUrls) { - for (var i = 0, length = item.ExternalUrls.length; i < length; i++) { - var url = item.ExternalUrls[i]; - links.push('' + url.Name + ''); + for (let url of item.ExternalUrls) { + links.push(`${url.Name}`); } } + var html = []; if (links.length) { html.push(links.join(', ')); } - linksElem.innerHTML = html.join(', '); + externalLinksElem.innerHTML = html.join(', '); if (html.length) { - linksElem.classList.remove('hide'); + externalLinksElem.classList.remove('hide'); } else { - linksElem.classList.add('hide'); + externalLinksElem.classList.add('hide'); } } @@ -828,37 +837,39 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - function renderOverview(elems, item) { - for (var i = 0, length = elems.length; i < length; i++) { - var elem = elems[i]; + function renderOverview(page, item) { + var overviewElemnts = page.querySelectorAll('.overview'); + + for (let overviewElemnt of overviewElemnts) { var overview = item.Overview || ''; if (overview) { - elem.innerHTML = overview; - elem.classList.remove('hide'); - elem.classList.add('detail-clamp-text'); + overviewElemnt.innerHTML = overview; + overviewElemnt.classList.remove('hide'); + overviewElemnt.classList.add('detail-clamp-text'); // Grab the sibling element to control the expand state - var expandButton = elem.parentElement.querySelector('.overview-expand'); + var expandButton = overviewElemnt.parentElement.querySelector('.overview-expand'); // Detect if we have overflow of text. Based on this StackOverflow answer // https://stackoverflow.com/a/35157976 - if (Math.abs(elem.scrollHeight - elem.offsetHeight) > 2) { + if (Math.abs(overviewElemnt.scrollHeight - overviewElemnt.offsetHeight) > 2) { expandButton.classList.remove('hide'); } else { expandButton.classList.add('hide'); } - expandButton.addEventListener('click', toggleLineClamp.bind(null, elem)); + expandButton.addEventListener('click', toggleLineClamp.bind(null, overviewElemnt)); - var anchors = elem.querySelectorAll('a'); + var anchors = overviewElemnt.querySelectorAll('a'); - for (var j = 0, length2 = anchors.length; j < length2; j++) { - anchors[j].setAttribute('target', '_blank'); + var anchors = overviewElemnt.querySelectorAll('a'); + for (let anchor of anchors) { + anchor.setAttribute('target', '_blank'); } } else { - elem.innerHTML = ''; - elem.classList.add('hide'); + overviewElemnt.innerHTML = ''; + overviewElemnt.classList.add('hide'); } } } @@ -902,18 +913,19 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderDirector(page, item, context) { - var directors = (item.People || []).filter(function (p) { - return 'Director' === p.Type; + var directors = (item.People || []).filter(function (person) { + return person.Type === 'Director'; }); - var html = directors.map(function (p) { + + var html = directors.map(function (person) { return '' + p.Name + ''; + }) + '">' + person.Name + ''; }).join(', '); var directorsLabel = page.querySelector('.directorsLabel'); @@ -929,13 +941,39 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - function renderDetails(page, item, apiClient, context, isStatic) { - renderSimilarItems(page, item, context); - renderMoreFromSeason(page, item, apiClient); - renderMoreFromArtist(page, item, apiClient); - renderDirector(page, item, context); - renderGenres(page, item, context); - renderChannelGuide(page, apiClient, item); + function renderMiscInfo(page, item) { + const primaryItemMiscInfo = page.querySelectorAll('.itemMiscInfo-primary'); + + for (let miscInfo of primaryItemMiscInfo) { + mediaInfo.fillPrimaryMediaInfo(miscInfo, item, { + interactive: true, + episodeTitle: false, + subtitles: false + }); + + if (miscInfo.innerHTML && 'SeriesTimer' !== item.Type) { + miscInfo.classList.remove('hide'); + } else { + miscInfo.classList.add('hide'); + } + } + + const secondaryItemMiscInfo = page.querySelectorAll('.itemMiscInfo-secondary'); + + for (let miscInfo of secondaryItemMiscInfo) { + mediaInfo.fillSecondaryMediaInfo(miscInfo, item, { + interactive: true + }); + + if (miscInfo.innerHTML && 'SeriesTimer' !== item.Type) { + miscInfo.classList.remove('hide'); + } else { + miscInfo.classList.add('hide'); + } + } + } + + function renderTagline(page, item) { var taglineElement = page.querySelector('.tagline'); if (item.Taglines && item.Taglines.length) { @@ -944,45 +982,20 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } else { taglineElement.classList.add('hide'); } + } - var overview = page.querySelector('.overview'); - var externalLinksElem = page.querySelector('.itemExternalLinks'); - - renderOverview([overview], item); - var i; - var itemMiscInfo; - itemMiscInfo = page.querySelectorAll('.itemMiscInfo-primary'); - - for (i = 0; i < itemMiscInfo.length; i++) { - mediaInfo.fillPrimaryMediaInfo(itemMiscInfo[i], item, { - interactive: true, - episodeTitle: false, - subtitles: false - }); - - if (itemMiscInfo[i].innerHTML && 'SeriesTimer' !== item.Type) { - itemMiscInfo[i].classList.remove('hide'); - } else { - itemMiscInfo[i].classList.add('hide'); - } - } - - itemMiscInfo = page.querySelectorAll('.itemMiscInfo-secondary'); - - for (i = 0; i < itemMiscInfo.length; i++) { - mediaInfo.fillSecondaryMediaInfo(itemMiscInfo[i], item, { - interactive: true - }); - - if (itemMiscInfo[i].innerHTML && 'SeriesTimer' !== item.Type) { - itemMiscInfo[i].classList.remove('hide'); - } else { - itemMiscInfo[i].classList.add('hide'); - } - } - + function renderDetails(page, item, apiClient, context, isStatic) { + renderSimilarItems(page, item, context); + renderMoreFromSeason(page, item, apiClient); + renderMoreFromArtist(page, item, apiClient); + renderDirector(page, item, context); + renderGenres(page, item, context); + renderChannelGuide(page, apiClient, item); + renderTagline(page, item); + renderOverview(page, item); + renderMiscInfo(page, item); reloadUserDataButtons(page, item); - renderLinks(externalLinksElem, item); + renderLinks(page, item); renderTags(page, item); renderSeriesAirTime(page, item, isStatic); } @@ -1765,17 +1778,18 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti return function (view, params) { function reload(instance, page, params) { loading.show(); + var apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient; - var promises = [getPromise(apiClient, params), apiClient.getCurrentUser()]; - Promise.all(promises).then(function (responses) { - var item = responses[0]; - var user = responses[1]; + + Promise.all([getPromise(apiClient, params), apiClient.getCurrentUser()]).then(([item, user]) => { currentItem = item; reloadFromItem(instance, page, params, item, user); let detailImageContainer = page.querySelector('.detailImageContainer'); const overlayPlayButton = detailImageContainer.querySelector('.cardOverlayFab-primary'); overlayPlayButton.addEventListener('click', onPlayClick); + }).catch((error) => { + console.error('failed to get item or current user: ', error); }); } diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index b3ce2c7e92..832629eb00 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -227,7 +227,7 @@ html { color: #fff !important; } -.detailSticky { +.detailRibbon { background: #303030; background: -webkit-gradient(linear, left top, right top, from(#bcbcbc), color-stop(#a7b4b7), color-stop(#beb5a5), color-stop(#adbec2), to(#b9c7cb)); background: -webkit-linear-gradient(left, #bcbcbc, #a7b4b7, #beb5a5, #adbec2, #b9c7cb); diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 74a60c91c0..84430adfa4 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -223,7 +223,7 @@ html { color: #fff !important; } -.detailSticky { +.detailRibbon { background: #303030; background: -webkit-gradient(linear, left top, right top, from(#291a31), color-stop(#033664), color-stop(#011432), color-stop(#141a3a), to(#291a31)); background: -webkit-linear-gradient(left, #291a31, #033664, #011432, #141a3a, #291a31); diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index 72eedd6b96..c23579c622 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -203,11 +203,11 @@ html { background: rgba(30, 30, 30, 0.9); } -.detailSticky { +.detailRibbon { background: rgba(32, 32, 32, 0.8); } -.noBackdrop .detailSticky { +.noBackdrop .detailRibbon { background: #202020; } diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 114ef7c3b1..571402bf1f 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -221,7 +221,7 @@ html { color: #fff !important; } -.detailSticky { +.detailRibbon { background-color: #303030; color: #ccc; color: rgba(255, 255, 255, 0.87); diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index de69a5542a..6b95ee3969 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -307,7 +307,7 @@ a[data-role=button] { color: #f8f8fe !important; } -.detailSticky { +.detailRibbon { background: #000420; background: -moz-linear-gradient(left, #000420 0%, #06256f 18%, #2b052b 38%, #2b052b 68%, #06256f 81%, #000420 100%); background: -webkit-linear-gradient(left, #000420 0%, #06256f 18%, #2b052b 38%, #2b052b 68%, #06256f 81%, #000420 100%); diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index e7d4c0371b..4d10755325 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -209,7 +209,7 @@ html { color: #fff !important; } -.detailSticky { +.detailRibbon { background-color: #081b3b; } From e83fcf89fb8eb6b2ed1b297884523c2a555d71d6 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 10 May 2020 15:41:24 +0200 Subject: [PATCH 010/131] Fix link colors in details overview --- src/assets/css/librarybrowser.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 0df31dcc0c..c6947b5961 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -485,6 +485,10 @@ margin-top: 0; } +.detailSectionContent a { + color: inherit; +} + .personBackdrop { background-size: contain; } From 660e4a0a3cf94d50d9872f62234da99c003d092f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 10 May 2020 15:41:55 +0200 Subject: [PATCH 011/131] Add Writers to overview and handle cast and crew better --- src/controllers/itemDetails.js | 32 +++++++++++++++++++++++++++++++- src/itemdetails.html | 5 +++++ src/strings/en-us.json | 1 + 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/controllers/itemDetails.js b/src/controllers/itemDetails.js index 12f0ef34f5..989edd26ca 100644 --- a/src/controllers/itemDetails.js +++ b/src/controllers/itemDetails.js @@ -912,6 +912,35 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } + function renderWriter(page, item, context) { + var writers = (item.People || []).filter(function (person) { + return person.Type === 'Writer'; + }); + + var html = writers.map(function (person) { + return '' + person.Name + ''; + }).join(', '); + + var writersLabel = page.querySelector('.writersLabel'); + writersLabel.innerHTML = globalize.translate(writers.length > 1 ? 'Writers' : 'Writer'); + var directorsValue = page.querySelector('.writers'); + directorsValue.innerHTML = html; + + var writersGroup = page.querySelector('.writersGroup'); + if (writers.length) { + writersGroup.classList.remove('hide'); + } else { + writersGroup.classList.add('hide'); + } + } + function renderDirector(page, item, context) { var directors = (item.People || []).filter(function (person) { return person.Type === 'Director'; @@ -989,6 +1018,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti renderMoreFromSeason(page, item, apiClient); renderMoreFromArtist(page, item, apiClient); renderDirector(page, item, context); + renderWriter(page, item, context); renderGenres(page, item, context); renderChannelGuide(page, apiClient, item); renderTagline(page, item); @@ -1733,7 +1763,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function renderCast(page, item) { var people = (item.People || []).filter(function (p) { - return 'Director' !== p.Type; + return p.Type === 'Actor'; }); if (!people.length) { diff --git a/src/itemdetails.html b/src/itemdetails.html index 20a61802e3..d6c8d64214 100644 --- a/src/itemdetails.html +++ b/src/itemdetails.html @@ -117,6 +117,11 @@
+ +
+
+
+
diff --git a/src/strings/en-us.json b/src/strings/en-us.json index bf77f630ae..855d7a0d86 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1529,6 +1529,7 @@ "Whitelist": "Whitelist", "WizardCompleted": "That's all we need for now. Jellyfin has begun collecting information about your media library. Check out some of our apps, and then click Finish to view the Dashboard.", "Writer": "Writer", + "Writers": "Writers", "XmlDocumentAttributeListHelp": "These attributes are applied to the root element of every XML response.", "XmlTvKidsCategoriesHelp": "Programs with these categories will be displayed as programs for children. Separate multiple with '|'.", "XmlTvMovieCategoriesHelp": "Programs with these categories will be displayed as movies. Separate multiple with '|'.", From e14f4315a8dfd8d11521f2cba55106dc58826821 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Wed, 17 Jun 2020 15:45:23 +0200 Subject: [PATCH 012/131] Further improvements to the details page --- src/assets/css/librarybrowser.css | 76 +++++++++- src/components/actionSheet/actionSheet.js | 4 +- src/components/groupedcards.js | 2 +- src/components/itemHelper.js | 4 +- src/components/remotecontrol/remotecontrol.js | 12 +- .../itemDetails/itemDetails.html} | 23 +-- .../{ => itemDetails}/itemDetails.js | 137 ++++++++---------- src/scripts/dom.js | 4 +- src/scripts/routes.js | 7 +- src/scripts/site.js | 8 +- 10 files changed, 156 insertions(+), 121 deletions(-) rename src/{itemdetails.html => controllers/itemDetails/itemDetails.html} (90%) rename src/controllers/{ => itemDetails}/itemDetails.js (95%) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index c6947b5961..354f96bb4f 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -507,7 +507,23 @@ .parentName { display: block; - margin-bottom: 0.5em; + margin: 0 0 0; +} + +.layout-mobile .parentName { + margin: 0.6em 0 0; +} + +.musicParentName { + margin: 0.15em 0 0.2em; +} + +.layout-mobile .musicParentName { + margin: -0.25em 0 0.25em; +} + +.layout-mobile .itemExternalLinks { + display: none; } .mainDetailButtons { @@ -530,6 +546,35 @@ font-weight: 600; } +.itemName.originalTitle { + margin: 0.2em 0 0.2em; +} + +.itemName.parentNameLast { + margin: 0 0 0; +} + +.layout-mobile .itemName.parentNameLast { + margin: 0.4em 0 0.4em; +} + +.layout-mobile h1.itemName, +.layout-mobile h1.parentName { + font-size: 1.6em; +} + +.itemName.parentNameLast.withOriginalTitle { + margin: 0 0 0; +} + +.layout-mobile .itemName.parentNameLast.withOriginalTitle { + margin: 0.6em 0 0; +} + +.layout-mobile .itemName.originalTitle { + margin: 0.5em 0 0.5em; +} + .nameContainer { display: flex; flex-direction: column; @@ -557,10 +602,18 @@ } .layout-mobile .mainDetailButtons { - margin-top: 2em; + margin-top: 1em; margin-bottom: 0.5em; } +.subTitle { + margin: 0.15em 0 0.2em; +} + +.layout-mobile .subTitle { + margin: 0.2em 0 0.2em; +} + .detailPagePrimaryContainer { display: flex; align-items: center; @@ -571,7 +624,7 @@ .layout-mobile .detailPagePrimaryContainer { display: block; position: relative; - padding: 2.5em 3.3% 1em; + padding: 0.5em 3.3% 0.5em; } .layout-tv #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer, @@ -613,6 +666,10 @@ margin: 1.25em 0; } +.layout-mobile .detailPageSecondaryContainer { + margin: 1em 0; +} + .detailImageContainer .card { position: absolute; top: 50%; @@ -722,7 +779,7 @@ div.itemDetailGalleryLink.defaultCardBackground { @media all and (max-width: 62.5em) { .parentName { - margin-bottom: 1em; + margin-bottom: 0; } .itemDetailPage { @@ -983,6 +1040,10 @@ div.itemDetailGalleryLink.defaultCardBackground { margin-bottom: 2.7em; } +.layout-mobile .verticalSection-extrabottompadding { + margin-bottom: 1em; +} + .sectionTitleButton, .sectionTitleIconButton { margin-right: 0 !important; @@ -1008,7 +1069,12 @@ div.itemDetailGalleryLink.defaultCardBackground { div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { margin: 0; - padding-top: 1.25em; + padding-top: 0.5em; +} + +.layout-mobile :not(.sectionTitleContainer-cards) > .sectionTitle-cards { + margin: 0; + padding-top: 0.5em; } .sectionTitleButton { diff --git a/src/components/actionSheet/actionSheet.js b/src/components/actionSheet/actionSheet.js index c56f42a9d9..2e22111945 100644 --- a/src/components/actionSheet/actionSheet.js +++ b/src/components/actionSheet/actionSheet.js @@ -16,7 +16,7 @@ function getOffsets(elems) { return results; } - for (let elem of elems) { + for (const elem of elems) { let box = elem.getBoundingClientRect(); results.push({ @@ -135,7 +135,7 @@ export function show(options) { let renderIcon = false; let icons = []; let itemIcon; - for (let item of options.items) { + for (const item of options.items) { itemIcon = item.icon || (item.selected ? 'check' : null); diff --git a/src/components/groupedcards.js b/src/components/groupedcards.js index 602c4310f4..5f23d8bb18 100644 --- a/src/components/groupedcards.js +++ b/src/components/groupedcards.js @@ -22,7 +22,7 @@ define(['dom', 'appRouter', 'connectionManager'], function (dom, appRouter, conn return void appRouter.showItem(items[0]); } - var url = 'itemdetails.html?id=' + itemId + '&serverId=' + serverId; + var url = 'details?id=' + itemId + '&serverId=' + serverId; Dashboard.navigate(url); }); e.stopPropagation(); diff --git a/src/components/itemHelper.js b/src/components/itemHelper.js index b18f37110c..3508866bdb 100644 --- a/src/components/itemHelper.js +++ b/src/components/itemHelper.js @@ -1,14 +1,12 @@ define(['apphost', 'globalize'], function (appHost, globalize) { 'use strict'; - function getDisplayName(item, options) { + function getDisplayName(item, options = {}) { if (!item) { throw new Error('null item passed into getDisplayName'); } - options = options || {}; - if (item.Type === 'Timer') { item = item.ProgramInfo || item; } diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 089915a834..9848b7e9cd 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -122,10 +122,10 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL var artistName; if (item.ArtistItems != null) { artistName = item.ArtistItems[0].Name; - context.querySelector('.nowPlayingAlbum').innerHTML = '${albumName}`; - context.querySelector('.nowPlayingArtist').innerHTML = '${artistName}`; - context.querySelector('.contextMenuAlbum').innerHTML = ' ` + globalize.translate('ViewAlbum') + ''; - context.querySelector('.contextMenuArtist').innerHTML = ' ` + globalize.translate('ViewArtist') + ''; + context.querySelector('.nowPlayingAlbum').innerHTML = '${albumName}`; + context.querySelector('.nowPlayingArtist').innerHTML = '${artistName}`; + context.querySelector('.contextMenuAlbum').innerHTML = ' ` + globalize.translate('ViewAlbum') + ''; + context.querySelector('.contextMenuArtist').innerHTML = ' ` + globalize.translate('ViewArtist') + ''; } else { artistName = item.Artists; context.querySelector('.nowPlayingAlbum').innerHTML = albumName; @@ -136,12 +136,12 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL } else if (item.Type == 'Episode') { if (item.SeasonName != null) { var seasonName = item.SeasonName; - context.querySelector('.nowPlayingSeason').innerHTML = '${seasonName}`; + context.querySelector('.nowPlayingSeason').innerHTML = '${seasonName}`; } if (item.SeriesName != null) { var seriesName = item.SeriesName; if (item.SeriesId != null) { - context.querySelector('.nowPlayingSerie').innerHTML = '${seriesName}`; + context.querySelector('.nowPlayingSerie').innerHTML = '${seriesName}`; } else { context.querySelector('.nowPlayingSerie').innerHTML = seriesName; } diff --git a/src/itemdetails.html b/src/controllers/itemDetails/itemDetails.html similarity index 90% rename from src/itemdetails.html rename to src/controllers/itemDetails/itemDetails.html index d6c8d64214..777439258a 100644 --- a/src/itemdetails.html +++ b/src/controllers/itemDetails/itemDetails.html @@ -1,8 +1,5 @@
-
@@ -15,87 +12,75 @@
- -
@@ -166,7 +151,7 @@
-
+

${HeaderNextUp}

@@ -178,7 +163,7 @@
-

+

diff --git a/src/controllers/itemDetails.js b/src/controllers/itemDetails/itemDetails.js similarity index 95% rename from src/controllers/itemDetails.js rename to src/controllers/itemDetails/itemDetails.js index 989edd26ca..cec61fb85f 100644 --- a/src/controllers/itemDetails.js +++ b/src/controllers/itemDetails/itemDetails.js @@ -28,15 +28,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function hideAll(page, className, show) { - var i; - var length; - var elems = page.querySelectorAll('.' + className); - - for (i = 0, length = elems.length; i < length; i++) { + for (const elem of page.querySelectorAll('.' + className)) { if (show) { - elems[i].classList.remove('hide'); + elem.classList.remove('hide'); } else { - elems[i].classList.add('hide'); + elem.classList.add('hide'); } } } @@ -75,7 +71,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti moreButton: false, recordButton: false }); - return html += '
'; + html += '
'; + + return html; } function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) { @@ -143,9 +141,13 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var mediaSources = item.MediaSources; instance._currentPlaybackMediaSources = mediaSources; + page.querySelector('.trackSelections').classList.remove('hide'); + select.setLabel(globalize.translate('LabelVersion')); + var currentValue = select.value; + var selectedId = mediaSources[0].Id; select.innerHTML = mediaSources.map(function (v) { var selected = v.Id === selectedId ? ' selected' : ''; @@ -242,12 +244,24 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti select.setLabel(globalize.translate('LabelSubtitles')); var selectedId = null == mediaSource.DefaultSubtitleStreamIndex ? -1 : mediaSource.DefaultSubtitleStreamIndex; - if (tracks.length) { + var videoTracks = mediaSource.MediaStreams.filter(function (m) { + return 'Video' === m.Type; + }); + + // This only makes sence on Video items + if (videoTracks.length) { var selected = -1 === selectedId ? ' selected' : ''; select.innerHTML = '' + tracks.map(function (v) { selected = v.Index === selectedId ? ' selected' : ''; return ''; }).join(''); + + if (tracks.length > 1) { + select.removeAttribute('disabled'); + } else { + select.setAttribute('disabled', 'disabled'); + } + page.querySelector('.selectSubtitlesContainer').classList.remove('hide'); } else { select.innerHTML = ''; @@ -278,7 +292,12 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var enableShuffle = item.IsFolder || -1 !== ['MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); hideAll(page, 'btnShuffle', enableShuffle); canPlay = true; - hideAll(page, 'btnResume', item.UserData && item.UserData.PlaybackPositionTicks > 0); + if (item.UserData && item.UserData.PlaybackPositionTicks > 0) { + hideAll(page, 'btnResume', true); + for (const elem of page.querySelectorAll('.btnPlay')) { + elem.querySelector('.detailButton-icon').classList.replace('play_arrow', 'replay'); + } + } } else { hideAll(page, 'btnPlay'); hideAll(page, 'btnResume'); @@ -324,8 +343,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function getArtistLinksHtml(artists, serverId, context) { var html = []; - for (var i = 0, length = artists.length; i < length; i++) { - var artist = artists[i]; + for (const artist of artists) { var href = appRouter.getRouteUrl(artist, { context: context, itemType: 'MusicArtist', @@ -333,8 +351,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti }); html.push('' + artist.Name + ''); } + html = html.join(' / '); - return html = html.join(' / '); + return html; } /** @@ -371,6 +390,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti if (item.SeriesName && 'Season' === item.Type) { parentRoute = appRouter.getRouteUrl({ + Id: item.SeriesId, + Name: item.SeriesName, Type: 'Series', IsFolder: true, ServerId: item.ServerId @@ -414,36 +435,33 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti if (parentNameLast) { // Music if (layoutManager.mobile) { - html = '

' + parentNameHtml.join('
') + '

'; + html = '

' + parentNameHtml.join('
') + '

'; } else { - html = '

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

'; + html = '

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

'; } } else { - if (layoutManager.mobile) { - html = '

' + parentNameHtml.join('
') + '

'; - } else { - html = '

' + tvShowHtml + '

'; - } + html = '

' + tvShowHtml + '

'; } } var name = itemHelper.getDisplayName(item, { includeParentInfo: false }); - var offset = parentNameLast ? '.25em' : '.5em'; if (html && !parentNameLast) { - if (!layoutManager.mobile && tvSeasonHtml) { - html += '

' + tvSeasonHtml + ' - ' + name + '

'; + if (tvSeasonHtml) { + html += '

' + tvSeasonHtml + ' - ' + name + '

'; } else { - html += '

' + name + '

'; + html += '

' + name + '

'; } + } else if (item.OriginalTitle && item.OriginalTitle != item.Name) { + html = '

' + name + '

' + html; } else { - html = '

' + name + '

' + html; + html = '

' + name + '

' + html; } if (item.OriginalTitle && item.OriginalTitle != item.Name) { - html += '

' + item.OriginalTitle + '

'; + html += '

' + item.OriginalTitle + '

'; } container.innerHTML = html; @@ -511,7 +529,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti Emby.Page.setTitle(''); // Start rendering the artwork first - renderImage(page, item, apiClient, user); + renderImage(page, item); renderLogo(page, item, apiClient); renderBackdrop(item); renderDetailPageBackdrop(page, item, apiClient); @@ -672,7 +690,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } if (item.ExternalUrls) { - for (let url of item.ExternalUrls) { + for (const url of item.ExternalUrls) { links.push(`${url.Name}`); } } @@ -691,7 +709,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - function renderDetailImage(page, elem, item, apiClient, editable, imageLoader, indicators) { + function renderDetailImage(elem, item, imageLoader) { elem.classList.add('detailimg-hidemobile'); const itemArray = []; @@ -713,15 +731,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti imageLoader.lazyChildren(elem); } - function renderImage(page, item, apiClient, user) { + function renderImage(page, item) { renderDetailImage( - page, page.querySelector('.detailImageContainer'), item, - apiClient, - user.Policy.IsAdministrator && 'Photo' != item.MediaType, - imageLoader, - indicators + imageLoader ); } @@ -840,7 +854,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function renderOverview(page, item) { var overviewElemnts = page.querySelectorAll('.overview'); - for (let overviewElemnt of overviewElemnts) { + for (const overviewElemnt of overviewElemnts) { var overview = item.Overview || ''; if (overview) { @@ -861,10 +875,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti expandButton.addEventListener('click', toggleLineClamp.bind(null, overviewElemnt)); - var anchors = overviewElemnt.querySelectorAll('a'); - - var anchors = overviewElemnt.querySelectorAll('a'); - for (let anchor of anchors) { + for (const anchor of overviewElemnt.querySelectorAll('a')) { anchor.setAttribute('target', '_blank'); } } else { @@ -874,19 +885,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - function renderGenres(page, item, context) { - context = context || inferContext(item); - var type; + function renderGenres(page, item, context = inferContext(item)) { var genres = item.GenreItems || []; - - switch (context) { - case 'music': - type = 'MusicGenre'; - break; - - default: - type = 'Genre'; - } + var type = context === 'music' ? 'MusicGenre' : 'Genre'; var html = genres.map(function (p) { return '' + mediaSourceCount + ''; } From 3cd81e73dae0496cd6d9e7f108ec8dbc4a9fc779 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Sat, 20 Jun 2020 21:24:04 +0200 Subject: [PATCH 014/131] Update src/components/cardbuilder/cardBuilder.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/cardbuilder/cardBuilder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 482fbe9f5a..f5d2c5b6c9 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1397,7 +1397,7 @@ import 'programStyles'; cardBoxClose = ''; cardScalableClose = ''; - if (!options.disableIndicators || options.disableIndicators === false) { + if (options.disableIndicators !== true) { let indicatorsHtml = ''; if (options.missingIndicator !== false) { From 6afbda6ff37a5724a98e3ec0619308e8c411699e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 20 Jun 2020 21:06:00 +0200 Subject: [PATCH 015/131] Improve season view --- src/components/listview/listview.js | 13 ++++--------- src/controllers/itemDetails/itemDetails.js | 5 ++++- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 42f32ba794..fabcfc75c2 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -125,10 +125,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var largeTitleTagName = layoutManager.tv ? 'h2' : 'div'; - for (var i = 0, length = textlines.length; i < length; i++) { - - var text = textlines[i]; - + for (const [i, text] of textlines.entries()) { if (!text) { continue; } @@ -434,8 +431,6 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += '
'; - const moreIcon = 'more_vert'; - html += getTextLinesHtml(textlines, isLargeStyle); if (options.mediaInfo !== false) { @@ -487,7 +482,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan } if (options.moreButton !== false) { - html += ''; + html += ''; } if (options.infoButton) { @@ -503,11 +498,11 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan var userData = item.UserData || {}; var likes = userData.Likes == null ? '' : userData.Likes; - if (itemHelper.canMarkPlayed(item)) { + if (itemHelper.canMarkPlayed(item) && options.enablePlayedButton !== false) { html += ''; } - if (itemHelper.canRate(item)) { + if (itemHelper.canRate(item) && options.enableRatingButton !== false) { html += ''; } } diff --git a/src/controllers/itemDetails/itemDetails.js b/src/controllers/itemDetails/itemDetails.js index cec61fb85f..72cf7817a5 100644 --- a/src/controllers/itemDetails/itemDetails.js +++ b/src/controllers/itemDetails/itemDetails.js @@ -1356,11 +1356,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti items: result.Items, showIndexNumber: false, enableOverview: true, + enablePlayedButton: false, imageSize: 'large', enableSideMediaInfo: false, highlight: false, action: layoutManager.tv ? 'resume' : 'none', - infoButton: true, imagePlayButton: true, includeParentInfoInTitle: false }); @@ -1387,6 +1387,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti childrenItemsContainer.classList.remove('vertical-list'); } } + if (layoutManager.mobile) { + childrenItemsContainer.classList.remove('padded-right'); + } childrenItemsContainer.innerHTML = html; imageLoader.lazyChildren(childrenItemsContainer); if ('BoxSet' == item.Type) { From 7dd09909d2a3d7733a251691a0825cd6da89dd2f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 20 Jun 2020 21:10:32 +0200 Subject: [PATCH 016/131] Move more button at the end of actions in listview --- src/components/listview/listview.js | 8 ++++---- src/controllers/itemDetails/itemDetails.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index fabcfc75c2..b2fa2d6971 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -481,10 +481,6 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += ''; } - if (options.moreButton !== false) { - html += ''; - } - if (options.infoButton) { html += ''; } @@ -506,6 +502,10 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += ''; } } + + if (options.moreButton !== false) { + html += ''; + } } html += '
'; diff --git a/src/controllers/itemDetails/itemDetails.js b/src/controllers/itemDetails/itemDetails.js index 72cf7817a5..6dcab03ee2 100644 --- a/src/controllers/itemDetails/itemDetails.js +++ b/src/controllers/itemDetails/itemDetails.js @@ -1356,7 +1356,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti items: result.Items, showIndexNumber: false, enableOverview: true, - enablePlayedButton: false, + enablePlayedButton: layoutManager.mobile ? false : true, imageSize: 'large', enableSideMediaInfo: false, highlight: false, From 877774212307e32b567b25764ce26a7092a9cf8f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 21 Jun 2020 09:06:51 +0200 Subject: [PATCH 017/131] Handle suggestions --- src/assets/css/librarybrowser.css | 4 ++-- src/controllers/itemDetails/itemDetails.js | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 354f96bb4f..c299ed8d0d 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -606,11 +606,11 @@ margin-bottom: 0.5em; } -.subTitle { +.subtitle { margin: 0.15em 0 0.2em; } -.layout-mobile .subTitle { +.layout-mobile .subtitle { margin: 0.2em 0 0.2em; } diff --git a/src/controllers/itemDetails/itemDetails.js b/src/controllers/itemDetails/itemDetails.js index 6dcab03ee2..7f8b460e44 100644 --- a/src/controllers/itemDetails/itemDetails.js +++ b/src/controllers/itemDetails/itemDetails.js @@ -450,9 +450,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti if (html && !parentNameLast) { if (tvSeasonHtml) { - html += '

' + tvSeasonHtml + ' - ' + name + '

'; + html += '

' + tvSeasonHtml + ' - ' + name + '

'; } else { - html += '

' + name + '

'; + html += '

' + name + '

'; } } else if (item.OriginalTitle && item.OriginalTitle != item.Name) { html = '

' + name + '

' + html; @@ -852,9 +852,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderOverview(page, item) { - var overviewElemnts = page.querySelectorAll('.overview'); - - for (const overviewElemnt of overviewElemnts) { + for (const overviewElemnt of page.querySelectorAll('.overview')) { var overview = item.Overview || ''; if (overview) { @@ -1357,6 +1355,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti showIndexNumber: false, enableOverview: true, enablePlayedButton: layoutManager.mobile ? false : true, + infoButton: layoutManager.mobile ? false : true, imageSize: 'large', enableSideMediaInfo: false, highlight: false, From 55cc467a9567383561fc2c38588ac126f38d2263 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 21 Jun 2020 09:31:56 +0200 Subject: [PATCH 018/131] Simplify resume button --- src/controllers/itemDetails/itemDetails.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/controllers/itemDetails/itemDetails.js b/src/controllers/itemDetails/itemDetails.js index 7f8b460e44..3b97bfd349 100644 --- a/src/controllers/itemDetails/itemDetails.js +++ b/src/controllers/itemDetails/itemDetails.js @@ -292,8 +292,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var enableShuffle = item.IsFolder || -1 !== ['MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); hideAll(page, 'btnShuffle', enableShuffle); canPlay = true; - if (item.UserData && item.UserData.PlaybackPositionTicks > 0) { - hideAll(page, 'btnResume', true); + + const isResumable = item.UserData && item.UserData.PlaybackPositionTicks > 0; + hideAll(page, 'btnResume', isResumable); + + if (isResumable) { for (const elem of page.querySelectorAll('.btnPlay')) { elem.querySelector('.detailButton-icon').classList.replace('play_arrow', 'replay'); } From b500579236adcd4fc23366cdcf58bff24c12e603 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 21 Jun 2020 13:21:31 +0200 Subject: [PATCH 019/131] Add hover text on item details buttons --- src/assets/css/librarybrowser.css | 6 ++++ src/controllers/itemDetails/itemDetails.html | 32 +++++++++---------- .../emby-scrollbuttons/emby-scrollbuttons.css | 2 +- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index c299ed8d0d..c0a92e05f9 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -437,6 +437,7 @@ background-attachment: fixed; height: 40vh; position: relative; + animation: backdrop-fadein 800ms ease-in normal both; } .layout-mobile .itemBackdrop { @@ -952,6 +953,10 @@ div.itemDetailGalleryLink.defaultCardBackground { } } +.detailVerticalSection .emby-scrollbuttons { + padding-top: 0.4em; +} + .layout-tv .detailVerticalSection { margin-bottom: 3.4em !important; } @@ -1070,6 +1075,7 @@ div.itemDetailGalleryLink.defaultCardBackground { div:not(.sectionTitleContainer-cards) > .sectionTitle-cards { margin: 0; padding-top: 0.5em; + padding-bottom: 0.2em; } .layout-mobile :not(.sectionTitleContainer-cards) > .sectionTitle-cards { diff --git a/src/controllers/itemDetails/itemDetails.html b/src/controllers/itemDetails/itemDetails.html index 777439258a..1a97daf1a8 100644 --- a/src/controllers/itemDetails/itemDetails.html +++ b/src/controllers/itemDetails/itemDetails.html @@ -12,73 +12,73 @@
- - - - - - - - - - - -
-
+

-
+

@@ -212,14 +212,14 @@
-
+

${HeaderScenes}

-
+

${HeaderMoreLikeThis}

diff --git a/src/elements/emby-scrollbuttons/emby-scrollbuttons.css b/src/elements/emby-scrollbuttons/emby-scrollbuttons.css index b2e0d3bc23..5af739bac1 100644 --- a/src/elements/emby-scrollbuttons/emby-scrollbuttons.css +++ b/src/elements/emby-scrollbuttons/emby-scrollbuttons.css @@ -6,7 +6,7 @@ justify-content: center; min-width: 104px; min-height: 24px; - padding-top: 1.25em; + padding-top: 0.85em; z-index: 1; color: #fff; display: flex; From 1629e79956708e5adfc4c7ed20b2a03727ee1e05 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 21 Jun 2020 13:43:23 +0200 Subject: [PATCH 020/131] Adjust star color --- src/components/mediainfo/mediainfo.css | 2 ++ src/themes/appletv/theme.css | 5 ----- src/themes/blueradiance/theme.css | 5 ----- src/themes/dark/theme.css | 5 ----- src/themes/light/theme.css | 5 ----- src/themes/purplehaze/theme.css | 5 ----- src/themes/wmc/theme.css | 5 ----- 7 files changed, 2 insertions(+), 30 deletions(-) diff --git a/src/components/mediainfo/mediainfo.css b/src/components/mediainfo/mediainfo.css index 1883b78726..508c9d96ad 100644 --- a/src/components/mediainfo/mediainfo.css +++ b/src/components/mediainfo/mediainfo.css @@ -41,6 +41,8 @@ width: auto !important; height: auto !important; font-size: 1.4em; + margin-right: 0.125em; + color: #f2b01e; } .mediaInfoCriticRating { diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 832629eb00..5182ff12e5 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -257,11 +257,6 @@ html { background: #fff; } -.mediaInfoTimerIcon, -.starIcon { - color: #cb272a; -} - .emby-input, .emby-textarea { color: inherit; diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index 84430adfa4..3ed1d7501e 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -261,11 +261,6 @@ html { background: rgba(170, 170, 190, 0.2); } -.mediaInfoTimerIcon, -.starIcon { - color: #cb272a; -} - .emby-input, .emby-textarea { color: inherit; diff --git a/src/themes/dark/theme.css b/src/themes/dark/theme.css index c23579c622..5c12389a1f 100644 --- a/src/themes/dark/theme.css +++ b/src/themes/dark/theme.css @@ -236,11 +236,6 @@ html { background: rgba(170, 170, 190, 0.2); } -.mediaInfoTimerIcon, -.starIcon { - color: #cb272a; -} - .emby-input, .emby-textarea { color: inherit; diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index 571402bf1f..5d2957d288 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -250,11 +250,6 @@ html { background: #fff; } -.mediaInfoTimerIcon, -.starIcon { - color: #cb272a; -} - .emby-input, .emby-textarea { color: inherit; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index 6b95ee3969..c43b22173c 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -344,11 +344,6 @@ a[data-role=button] { background: rgba(170, 170, 190, 0.2); } -.mediaInfoTimerIcon, -.starIcon { - color: #f2b01e; -} - .emby-input, .emby-textarea { color: inherit; diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 4d10755325..6c109f643f 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -243,11 +243,6 @@ html { background: rgba(170, 170, 190, 0.2); } -.mediaInfoTimerIcon, -.starIcon { - color: #cb272a; -} - .emby-input, .emby-textarea { color: inherit; From 8f116890d719711c7b30252e39e4aa3de03f07be Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 21 Jun 2020 13:45:13 +0200 Subject: [PATCH 021/131] Remove forced logo size --- src/controllers/itemDetails/itemDetails.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/controllers/itemDetails/itemDetails.js b/src/controllers/itemDetails/itemDetails.js index 3b97bfd349..54d758faf9 100644 --- a/src/controllers/itemDetails/itemDetails.js +++ b/src/controllers/itemDetails/itemDetails.js @@ -649,9 +649,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function renderLogo(page, item, apiClient) { var detailLogo = page.querySelector('.detailLogo'); - var url = logoImageUrl(item, apiClient, { - maxWidth: detailLogo.clientWidth - }); + var url = logoImageUrl(item, apiClient, {}); if (!layoutManager.mobile && !userSettings.enableBackdrops()) { detailLogo.classList.add('hide'); From 5960f782dfcd88fc1486ea3ea3cb1d260006ff19 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 21 Jun 2020 13:47:33 +0200 Subject: [PATCH 022/131] Rename itemDetails files to new convention --- src/controllers/itemDetails/{itemDetails.html => index.html} | 0 src/controllers/itemDetails/{itemDetails.js => index.js} | 0 src/scripts/routes.js | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/controllers/itemDetails/{itemDetails.html => index.html} (100%) rename src/controllers/itemDetails/{itemDetails.js => index.js} (100%) diff --git a/src/controllers/itemDetails/itemDetails.html b/src/controllers/itemDetails/index.html similarity index 100% rename from src/controllers/itemDetails/itemDetails.html rename to src/controllers/itemDetails/index.html diff --git a/src/controllers/itemDetails/itemDetails.js b/src/controllers/itemDetails/index.js similarity index 100% rename from src/controllers/itemDetails/itemDetails.js rename to src/controllers/itemDetails/index.js diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 025e798630..e880a9d22f 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -235,8 +235,8 @@ define([ }); defineRoute({ alias: '/details', - path: '/controllers/itemDetails/itemDetails.html', - controller: 'itemDetails/itemDetails', + path: '/controllers/itemDetails/index.html', + controller: 'itemDetails/index', autoFocus: false, transition: 'fade' }); From ed7071015adf6810e9ed6aba392f77e0e601891c Mon Sep 17 00:00:00 2001 From: crobibero Date: Mon, 22 Jun 2020 07:15:15 -0600 Subject: [PATCH 023/131] remove sessionId parameter from api calls --- src/components/syncPlay/groupSelectionMenu.js | 8 ++++---- src/components/syncPlay/syncPlayManager.js | 13 +++++-------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/components/syncPlay/groupSelectionMenu.js b/src/components/syncPlay/groupSelectionMenu.js index 067100ad73..48b22261f4 100644 --- a/src/components/syncPlay/groupSelectionMenu.js +++ b/src/components/syncPlay/groupSelectionMenu.js @@ -37,7 +37,7 @@ function showNewJoinGroupSelection (button, user, apiClient) { console.debug('No item is currently playing.'); } - apiClient.sendSyncPlayCommand(sessionId, 'ListGroups').then(function (response) { + apiClient.sendSyncPlayCommand('ListGroups').then(function (response) { response.json().then(function (groups) { var menuItems = groups.map(function (group) { return { @@ -83,9 +83,9 @@ function showNewJoinGroupSelection (button, user, apiClient) { actionsheet.show(menuOptions).then(function (id) { if (id == 'new-group') { - apiClient.sendSyncPlayCommand(sessionId, 'NewGroup'); + apiClient.sendSyncPlayCommand('NewGroup'); } else { - apiClient.sendSyncPlayCommand(sessionId, 'JoinGroup', { + apiClient.sendSyncPlayCommand('JoinGroup', { GroupId: id, PlayingItemId: playingItemId }); @@ -140,7 +140,7 @@ function showLeaveGroupSelection (button, user, apiClient) { actionsheet.show(menuOptions).then(function (id) { if (id == 'leave-group') { - apiClient.sendSyncPlayCommand(sessionId, 'LeaveGroup'); + apiClient.sendSyncPlayCommand('LeaveGroup'); } }).catch((error) => { console.error('SyncPlay: unexpected error showing group menu:', error); diff --git a/src/components/syncPlay/syncPlayManager.js b/src/components/syncPlay/syncPlayManager.js index 6116884d7c..860e3edcd4 100644 --- a/src/components/syncPlay/syncPlayManager.js +++ b/src/components/syncPlay/syncPlayManager.js @@ -139,7 +139,7 @@ class SyncPlayManager { return; } - apiClient.sendSyncPlayCommand(sessionId, 'UpdatePing', { + apiClient.sendSyncPlayCommand('UpdatePing', { Ping: ping }); } @@ -447,7 +447,7 @@ class SyncPlayManager { if (!success) { console.warning('Error reporting playback state to server. Joining group will fail.'); } - apiClient.sendSyncPlayCommand(sessionId, 'JoinGroup', { + apiClient.sendSyncPlayCommand('JoinGroup', { GroupId: groupId, PlayingItemId: playingItemId }); @@ -658,8 +658,7 @@ class SyncPlayManager { */ playRequest (player) { var apiClient = connectionManager.currentApiClient(); - var sessionId = getActivePlayerId(); - apiClient.sendSyncPlayCommand(sessionId, 'PlayRequest'); + apiClient.sendSyncPlayCommand('PlayRequest'); } /** @@ -667,8 +666,7 @@ class SyncPlayManager { */ pauseRequest (player) { var apiClient = connectionManager.currentApiClient(); - var sessionId = getActivePlayerId(); - apiClient.sendSyncPlayCommand(sessionId, 'PauseRequest'); + apiClient.sendSyncPlayCommand('PauseRequest'); // Pause locally as well, to give the user some little control playbackManager._localUnpause(player); } @@ -678,8 +676,7 @@ class SyncPlayManager { */ seekRequest (PositionTicks, player) { var apiClient = connectionManager.currentApiClient(); - var sessionId = getActivePlayerId(); - apiClient.sendSyncPlayCommand(sessionId, 'SeekRequest', { + apiClient.sendSyncPlayCommand('SeekRequest', { PositionTicks: PositionTicks }); } From cd020a2cd1cf9813ea6526dee527206449b62092 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Tue, 23 Jun 2020 17:29:59 +0200 Subject: [PATCH 024/131] Fix details banner setting --- src/controllers/itemDetails/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 28e9dfc007..21abcda0c8 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -174,7 +174,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti return m.Id === mediaSourceId; })[0]; var tracks = mediaSource.MediaStreams.filter(function (m) { - return 'Video' === m.Type; + return m.Type === 'Video'; }); var select = page.querySelector('.selectVideo'); select.setLabel(globalize.translate('LabelVideo')); @@ -360,7 +360,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } /** - * Rneders the item's name block + * Renders the item's name block * @param {Object} item - Item used to render the name. * @param {HTMLDivElement} container - Container to render the information into. * @param {Object} context - Application context. @@ -498,7 +498,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var hasbackdrop = false; var itemBackdropElement = page.querySelector('#itemBackdrop'); - if (!layoutManager.mobile && !userSettings.enableBackdrops()) { + if (!layoutManager.mobile && ((!userSettings.enableBackdrops() && !userSettings.detailsBanner()) || (userSettings.enableBackdrops() && !userSettings.detailsBanner()))) { return false; } From 12460589f7a255b3dc703902df14a213bb9c7452 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Tue, 23 Jun 2020 17:32:55 +0200 Subject: [PATCH 025/131] Fix variable names --- src/controllers/itemDetails/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 21abcda0c8..60da3b3c42 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -931,8 +931,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var writersLabel = page.querySelector('.writersLabel'); writersLabel.innerHTML = globalize.translate(writers.length > 1 ? 'Writers' : 'Writer'); - var directorsValue = page.querySelector('.writers'); - directorsValue.innerHTML = html; + var writersValue = page.querySelector('.writers'); + writersValue.innerHTML = html; var writersGroup = page.querySelector('.writersGroup'); if (writers.length) { From f37b86c79900240d73f03b0c91345c54d99f8854 Mon Sep 17 00:00:00 2001 From: ferferga Date: Wed, 24 Jun 2020 07:55:21 +0200 Subject: [PATCH 026/131] Add missing tooltip for TV layout --- src/scripts/libraryMenu.js | 2 +- src/strings/en-us.json | 3 ++- src/strings/es.json | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index a055530442..7f3a16e31e 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -13,7 +13,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' html += '
'; html += ''; html += ``; - html += ''; + html += ``; html += ``; html += ``; html += ''; diff --git a/src/strings/en-us.json b/src/strings/en-us.json index fc3883963c..a73167da79 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1561,5 +1561,6 @@ "EnableBlurhash": "Enable blurred placeholders for images", "EnableBlurhashHelp": "Images that are still being loaded will be displayed with a blurred placeholder", "ButtonSyncPlay": "SyncPlay", - "ButtonCast": "Cast" + "ButtonCast": "Cast", + "ButtonPlayer": "Player" } diff --git a/src/strings/es.json b/src/strings/es.json index eba49d29fc..911f4a8868 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1563,5 +1563,6 @@ "ButtonCast": "Enviar", "MessageNoGenresAvailable": "Permitir a algunos proveedores de metadatos extraer géneros de Internet.", "EnableDecodingColorDepth10Vp9": "Habilite la decodificación por hardware de 10 bits para Vp9", - "EnableDecodingColorDepth10Hevc": "Habilite la decodificación por hardware de 10 bits para HEVC" + "EnableDecodingColorDepth10Hevc": "Habilite la decodificación por hardware de 10 bits para HEVC", + "ButtonPlayer": "Reproductor" } From 46134f04452cc85cbd401190f17a8de7df680518 Mon Sep 17 00:00:00 2001 From: Sasa Date: Thu, 25 Jun 2020 11:34:32 +0000 Subject: [PATCH 027/131] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hr/ --- src/strings/hr.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/hr.json b/src/strings/hr.json index 16a2ab05dd..63d621fe87 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -1050,5 +1050,11 @@ "Alerts": "Upozorenja", "AlbumArtist": "Izvođač na albumu", "Album": "Album", - "AddToPlayQueue": "Dodaj u red izvođenja" + "AddToPlayQueue": "Dodaj u red izvođenja", + "Banner": "Zaglavlje", + "AutoBasedOnLanguageSetting": "Automatski (prema jezičnim postavkama)", + "AspectRatio": "Omjer", + "Ascending": "Uzlazno", + "Art": "Grafike", + "Absolute": "Apsolutno" } From d8b8486eb51f250d94cbc1be9daf6190feec7a8a Mon Sep 17 00:00:00 2001 From: Sasa Date: Thu, 25 Jun 2020 12:20:19 +0000 Subject: [PATCH 028/131] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hr/ --- src/strings/hr.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/strings/hr.json b/src/strings/hr.json index 63d621fe87..2dbee62999 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -1056,5 +1056,20 @@ "AspectRatio": "Omjer", "Ascending": "Uzlazno", "Art": "Grafike", - "Absolute": "Apsolutno" + "Absolute": "Apsolutno", + "CopyStreamURLSuccess": "URL uspješno kopiran.", + "CopyStreamURL": "Kopiraj URL streama", + "ContinueWatching": "Nastavi gledati", + "Connect": "Spoji", + "ClientSettings": "Postavke klijenta", + "ButtonTogglePlaylist": "Lista izvođenja", + "ButtonToggleContextMenu": "Više", + "ButtonSplit": "Odvoji", + "ButtonStop": "Stop", + "ButtonScanAllLibraries": "Skeniraj sve biblioteke", + "ButtonInfo": "Info", + "ButtonFilter": "Filtriraj", + "ButtonAddImage": "Dodaj sliku", + "Box": "Kutija", + "AskAdminToCreateLibrary": "Traži administratora da kreira biblioteku." } From 83c4bf8d626c6eb2c470746eee30ccce946d492e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 25 Jun 2020 18:40:19 +0200 Subject: [PATCH 029/131] Fix suggestions and layout issues --- src/assets/css/librarybrowser.css | 25 +++++++++++++++---------- src/controllers/itemDetails/index.js | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index c0a92e05f9..219599e804 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -671,6 +671,10 @@ margin: 1em 0; } +.layout-mobile .detailimg-hidemobile { + display: none; +} + .detailImageContainer .card { position: absolute; top: 50%; @@ -742,14 +746,19 @@ div.itemDetailGalleryLink.defaultCardBackground { position: relative; } - .layout-desktop .detailPageWrapperContainer, - .layout-tv .detailPageWrapperContainer { - margin-top: 7.2em; + .layout-desktop .itemBackdrop, + .layout-tv .itemBackdrop { + height: 40vh; } - .layout-tv #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer, - .layout-desktop #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer { - padding-left: 3.3%; + .layout-desktop .detailPageWrapperContainer, + .layout-tv .detailPageWrapperContainer { + margin-top: 0.1em; + } + + .layout-desktop .detailImageContainer .card, + .layout-tv .detailImageContainer .card { + top: 10%; } .btnPlaySimple { @@ -786,10 +795,6 @@ div.itemDetailGalleryLink.defaultCardBackground { .itemDetailPage { padding-top: 0 !important; } - - .detailimg-hidemobile { - display: none; - } } @media all and (min-width: 31.25em) { diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 60da3b3c42..c9677f77c0 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -498,7 +498,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var hasbackdrop = false; var itemBackdropElement = page.querySelector('#itemBackdrop'); - if (!layoutManager.mobile && ((!userSettings.enableBackdrops() && !userSettings.detailsBanner()) || (userSettings.enableBackdrops() && !userSettings.detailsBanner()))) { + if (!layoutManager.mobile && !userSettings.detailsBanner()) { return false; } From 2d6963b08c17cba5120b73641aa9ed06534477ac Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Thu, 25 Jun 2020 16:13:56 +0000 Subject: [PATCH 030/131] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 6b32e87858..dfd45cf63c 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1562,6 +1562,14 @@ "MessageNoGenresAvailable": "Engedélyezz néhány metaadat szolgáltatót, hogy műfaj adatokat tölthess le az internetről.", "EnableFasterAnimationsHelp": "Gyorsabb animációk és áttűnések használata", "EnableFasterAnimations": "Gyorsabb animációk", - "EnableDecodingColorDepth10Vp9": "10 bites hardveres dekódolás engedélyezése Vp9-hez", - "EnableDecodingColorDepth10Hevc": "10 bites hardveres dekódolás engedélyezése HEVC-hez" + "EnableDecodingColorDepth10Vp9": "10 bites hardveres dekódolás engedélyezése VP9-hez", + "EnableDecodingColorDepth10Hevc": "10 bites hardveres dekódolás engedélyezése HEVC-hez", + "TabRepositories": "Tárolók", + "MessageAddRepository": "Ha új tárolót szeretnél hozzáadni, kattints a gombra a fejlécben, és add meg a szükséges adatokat.", + "LabelRepositoryNameHelp": "Egy egyedi név, amivel megkülönböztetheted a tárolót a többi, a szervezhez hozzáadott tárolótól.", + "LabelRepositoryName": "Tároló neve", + "LabelRepositoryUrlHelp": "A hivatkozni kívánt tároló manifeszt helye.", + "LabelRepositoryUrl": "Tároló URL-je", + "HeaderNewRepository": "Új tároló", + "MessageNoRepositories": "Nincs tároló." } From d91ac4171829b55dafdfb3f694623a6372f64d56 Mon Sep 17 00:00:00 2001 From: Mednis Date: Thu, 25 Jun 2020 18:15:49 +0000 Subject: [PATCH 031/131] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index c58374ad24..0affe65209 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -602,14 +602,14 @@ "AsManyAsPossible": "Cik vien iespējams", "Artists": "Izpildītāji", "Art": "Māksla", - "AroundTime": "Ap {0}", + "AroundTime": "Ap", "Anytime": "Jebkad", "AnyLanguage": "Jebkura Valoda", "AlwaysPlaySubtitles": "Vienmēr Rādīt", "AllowedRemoteAddressesHelp": "Ar komatiem atdalīts IP adrešu vai IP/tīkla masku saraksts, kas norāda uz tīkliem, kas var pieslēgties attālināti. Ja atstāts tukšs, visas attālinātās adreses tiks atļautas.", "AllowRemoteAccessHelp": "Ja atķeksēts, visi attālinātie savienojumi tiks bloķēti.", "AllowRemoteAccess": "Atļaut attālinātus savienojumus šim Jellyfin Serverim.", - "AllowOnTheFlySubtitleExtraction": " ", + "AllowOnTheFlySubtitleExtraction": "Atļaut subtitru izvilkšanu atskaņošanas laikā", "AllowMediaConversion": "Atļaut multimēdiju pārveidošanu", "AllLibraries": "Visas bibliotēkas", "AllLanguages": "Visas valodas", @@ -1231,5 +1231,6 @@ "MessageUnauthorizedUser": "Jūs neesat autorizēti lai piekļūtu serverim šajā brīdī. Lūdzu sazinieties ar savu servera administratoru priekš papildus informācijas.", "MessageInstallPluginFromApp": "Šis paplašinājums ir jāuzstāda no lietotnes, kurā jūs to vēlaties izmantot.", "LabelEmbedAlbumArtDidl": "Ievietot albumu vākus iekš Didl", - "LabelSelectFolderGroups": "Automātiski grupēt saturu no sekojošām datnēm skatos kā Filmas, Mūzika un TV:" + "LabelSelectFolderGroups": "Automātiski grupēt saturu no sekojošām datnēm skatos kā Filmas, Mūzika un TV:", + "AllowFfmpegThrottlingHelp": "Kad trans-kodējums vai remux tiek pietiekami tālu priekšā pašreizējai atskaņošanas vietai, process tiks pauzēts lai patērētu mazāk resursu. Tas ir noderīgākais skatoties bez biežas pārlēkšanas. Atspējo šo ja saskaries ar atskaņošanas problēmām." } From 6e3f6fe1d7c7860798bffea65a59aae66eef18a8 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Thu, 25 Jun 2020 18:01:28 +0000 Subject: [PATCH 032/131] 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 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 388be4fd25..dae22366a4 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -414,7 +414,7 @@ "HeaderAppearsOn": "Aparece en", "HeaderApp": "Aplicación", "HeaderApiKeysHelp": "Se requiere que las aplicaciones externas tengan una clave de API para comunicarse con el servidor Jellyfin. Las claves se emiten iniciando sesión con una cuenta Jellyfin, u otorgando manualmente una clave a la aplicación.", - "HeaderApiKeys": "Llaves API", + "HeaderApiKeys": "Claves de API", "HeaderApiKey": "Contraseña API", "HeaderAllowMediaDeletionFrom": "Permitir el borrado de medios desde", "HeaderAlert": "Alerta", @@ -686,7 +686,7 @@ "LabelCertificatePasswordHelp": "Si su certificado requiere una contraseña, ingrésela aquí.", "LabelCertificatePassword": "Contraseña del certificado:", "LabelCancelled": "Cancelado", - "LabelCachePath": "Ruta de caché:", + "LabelCachePath": "Ruta a la caché:", "LabelCache": "Caché:", "LabelBurnSubtitles": "Grabar subtítulos:", "LabelAudioBitDepth": "Profundidad de bits de audio:", @@ -942,7 +942,7 @@ "LabelMetadataReadersHelp": "Clasifique sus fuentes de metadatos locales preferidas en orden de prioridad. Se leerá el primer archivo encontrado.", "LabelMetadataReaders": "Lectores de metadatos:", "LabelMetadataPathHelp": "Especifique una ubicación personalizada para las ilustraciones y los metadatos descargados.", - "LabelMetadataPath": "Ruta de metadatos:", + "LabelMetadataPath": "Ruta a los metadatos:", "LabelMetadataDownloadersHelp": "Habilite y clasifique sus descargadores de metadatos preferidos en orden de prioridad. Los descargadores de menor prioridad solo se utilizarán para completar la información que falta.", "LabelMetadataDownloadLanguage": "Idioma de descarga preferido:", "LabelMetadata": "Metadatos:", @@ -1190,7 +1190,7 @@ "LabelTunerIpAddress": "Dirección IP del sintonizador:", "LabelTriggerType": "Tipo de disparador:", "LabelTranscodingVideoCodec": "Códec de vídeo:", - "LabelTranscodingThreadCountHelp": "Seleccione el número máximo de hilos para usar al transcodificar. Reducir el recuento de hilos disminuirá el uso de la CPU, pero es posible que no se convierta lo suficientemente rápido para una experiencia de reproducción fluida.", + "LabelTranscodingThreadCountHelp": "Elija el número máximo de hilos para usar al transcodificar. Reducir el recuento de hilos disminuirá el uso de la CPU, pero es posible que no se convierta lo suficientemente rápido para una experiencia de reproducción fluida.", "LabelTranscodingThreadCount": "Conteo de hilos de transcodificación:", "LabelTranscodingProgress": "Progreso de transcodificación:", "LabelTranscodingFramerate": "Velocidad de fotogramas de transcodificación:", From fda99dd4ae2b3502311bb332c2a0d479a2f3cb33 Mon Sep 17 00:00:00 2001 From: Sasa Date: Thu, 25 Jun 2020 19:46:22 +0000 Subject: [PATCH 033/131] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hr/ --- src/strings/hr.json | 168 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 167 insertions(+), 1 deletion(-) diff --git a/src/strings/hr.json b/src/strings/hr.json index 2dbee62999..1e218839df 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -1071,5 +1071,171 @@ "ButtonFilter": "Filtriraj", "ButtonAddImage": "Dodaj sliku", "Box": "Kutija", - "AskAdminToCreateLibrary": "Traži administratora da kreira biblioteku." + "AskAdminToCreateLibrary": "Traži administratora da kreira biblioteku.", + "PictureInPicture": "Slika u slici", + "OtherArtist": "Ostali izvođači", + "OptionThumb": "Sličica", + "OptionProtocolHttp": "HTTP", + "OptionProfileVideo": "Video", + "OptionProfileAudio": "Audio", + "OptionPoster": "Poster", + "OptionList": "Lista", + "OptionIsSD": "SD", + "OptionIsHD": "HD", + "OptionDvd": "DVD", + "OptionDownloadLogoImage": "Logo", + "OptionBluray": "Blu-ray", + "OptionBanner": "Zaglavlje", + "Option3D": "3D", + "OneChannel": "Jedan kanal", + "Off": "Isključi", + "Normal": "Normalno", + "None": "Ništa", + "NoSubtitles": "Ništa", + "No": "Ne", + "NextUp": "Slijedi", + "Next": "Slijedeće", + "Never": "Nikada", + "MusicVideo": "Glazbeni spot", + "Movie": "Film", + "Metadata": "Meta podaci", + "MessageSyncPlayLibraryAccessDenied": "Pristup ovom sadržaju je ograničen.", + "MessageSyncPlayDisabled": "SyncPlay onemogućen.", + "MessageSyncPlayEnabled": "SyncPlay omogućen.", + "MessagePleaseWait": "Molimo pričekajte. Ovo može potrajati nekoliko minuta.", + "LabelRepositoryName": "Naziv repozitorija", + "LabelRepositoryUrl": "URL repozitorija", + "HeaderNewRepository": "Novi repozitorij", + "MessageNoRepositories": "Nema repozitorija.", + "MessageConfirmAppExit": "Da li želite izaći?", + "Menu": "Meni", + "MediaInfoStreamTypeVideo": "Video", + "MediaInfoStreamTypeSubtitle": "Prijevod", + "MediaInfoStreamTypeData": "Podaci", + "MediaInfoStreamTypeAudio": "Audio", + "MediaInfoSoftware": "Softver", + "Logo": "Logo", + "List": "Lista", + "LabelYear": "Godina:", + "LabelVideo": "Video", + "DashboardArchitecture": "Arhitektura: {0}", + "DashboardOperatingSystem": "Operativni sustav: {0}", + "DashboardServerName": "Server: {0}", + "DashboardVersionNumber": "Verzija: {0}", + "LabelVersion": "Verzija:", + "LabelTheme": "Tema:", + "LabelTextSize": "Veličina teksta:", + "LabelTextColor": "Boja teksta:", + "LabelSyncPlayAccess": "SyncPlay pristup", + "LabelSyncPlayAccessNone": "Onemogućeno za ovog korisnika", + "LabelSyncPlayAccessJoinGroups": "Dozvoli korisniku da se pridruži grupama", + "LabelSyncPlayAccessCreateAndJoinGroups": "Dozvoli korisniku da kreira i pridruži se grupama", + "LabelSyncPlayLeaveGroupDescription": "Onemogući SyncPlay", + "LabelSyncPlayLeaveGroup": "Napusti grupu", + "LabelSyncPlayNewGroupDescription": "Kreiraj novu grupu", + "LabelSyncPlayNewGroup": "Nova grupa", + "MillisecondsUnit": "ms", + "LabelSubtitles": "Prijevodi", + "LabelStatus": "Status:", + "LabelSoundEffects": "Zvučni efekti:", + "LabelSortOrder": "Redoslijed sortiranja:", + "LabelSortBy": "Sortiranje po:", + "LabelSize": "Veličina:", + "LabelServerName": "Naziv servera:", + "EnableFasterAnimations": "Brže animacije", + "LabelReasonForTranscoding": "Razlog transkodiranja:", + "LabelPreferredSubtitleLanguage": "Preferirani jezik prijevoda:", + "LabelStable": "Stabilna", + "LabelLanNetworks": "LAN mreže:", + "LabelInternetQuality": "Internet kvaliteta:", + "LabelHomeNetworkQuality": "Kvaliteta kućne mreže:", + "LabelFormat": "Format:", + "LabelFont": "Font:", + "LabelFolder": "Mapa:", + "LabelEnableHttps": "Omogući HTTPS", + "LabelEnableHardwareDecodingFor": "Omogući hardversko dekodiranje za:", + "LabelDisplayLanguageHelp": "Prevođenje Jellyfin-a je projekt u tijeku.", + "LabelDisplayLanguage": "Jezik prikaza:", + "LabelAutomaticallyRefreshInternetMetadataEvery": "Automatski osvježi meta podatke sa interneta:", + "LabelAudioChannels": "Audio kanali:", + "LabelAudio": "Audio", + "LabelAlbum": "Album:", + "Label3DFormat": "3D format:", + "Items": "Stavke", + "Horizontal": "Horizontalno", + "Home": "Početna", + "Hide": "Sakrij", + "HeaderSyncPlayEnabled": "SyncPlay omogućen", + "HeaderSyncPlaySelectGroup": "Pridruži se grupi", + "HeaderSubtitleDownloads": "Preuzimanje prijevoda", + "HeaderSubtitleAppearance": "Prikaz prijevoda", + "HeaderStopRecording": "Zaustavi snimanje", + "HeaderStatus": "Status", + "HeaderSeriesStatus": "Status serije", + "HeaderSecondsValue": "{0} sekundi", + "HeaderRemoteAccessSettings": "Postavke udaljenog pristupa", + "HeaderPlaybackError": "Pogreška reprodukcije", + "HeaderPlayAll": "Reproduciraj sve", + "HeaderOnNow": "Trenutno", + "HeaderNextVideoPlayingInValue": "Slijedeći video se reproducira za {0}", + "HeaderNextEpisodePlayingInValue": "Slijedeća epizoda se reproducira za {0}", + "HeaderNewDevices": "Novi uređaji", + "HeaderNavigation": "Navigacija", + "HeaderMyDevice": "Moj uređaj", + "HeaderLibrarySettings": "Postavke biblioteke", + "HeaderHome": "Početna", + "HeaderGenres": "Žanrovi", + "HeaderFavoritePeople": "Omiljeni ljudi", + "HeaderFavoriteMovies": "Omiljeni filmovi", + "HeaderFavoriteBooks": "Omiljene knjige", + "HeaderDVR": "DVR", + "HeaderDownloadSync": "Preuzmi i sinkroniziraj", + "HeaderContinueListening": "Nastavi slušati", + "HeaderConfigureRemoteAccess": "Konfiguriraj udaljeni pristup", + "HeaderAudioBooks": "Audio knjige", + "ApiKeysCaption": "Popis trenutno dostupnih API ključeva", + "HeaderAllowMediaDeletionFrom": "Dozvoli brisanje datoteka iz", + "HeaderAlbums": "Albumi", + "HeaderAdmin": "Administrator", + "Guide": "Vodič", + "GroupBySeries": "Grupiraj po serijama", + "Genre": "Žanr", + "General": "Općenito", + "Fullscreen": "Prikaz cijelog ekrana", + "Filters": "Filteri", + "FetchingData": "Dohvaćanje dodatnih podataka", + "Features": "Mogućnosti", + "Extras": "Dodaci", + "ExtraLarge": "Ekstra veliko", + "ExitFullscreen": "Izađi iz prikaza cijelog ekrana", + "EveryNDays": "Svakih {0} dana", + "Episodes": "Epizode", + "Episode": "Epizoda", + "EnableHardwareEncoding": "Omogući hardversko enkodiranje", + "EnableExternalVideoPlayers": "Vanjski video player", + "EnableDecodingColorDepth10Vp9": "Omogući 10-Bitno hardversko dekodiranje za VP9", + "EnableDecodingColorDepth10Hevc": "Omogući 10-Bitno hardversko dekodiranje za HEVC", + "EnableCinemaMode": "Kino mod", + "EnableBackdrops": "Pozadine", + "EditMetadata": "Izmijeni meta podatke", + "DisplayMissingEpisodesWithinSeasons": "Prikaži epizode koje nedostaju unutar sezona", + "DisplayInMyMedia": "Prikaz na početnom ekranu", + "Display": "Prikaz", + "Disconnect": "Odspoji", + "Disc": "Disk", + "Disabled": "Onemogućeno", + "Directors": "Režiseri", + "DirectPlaying": "Direktna reprodukcija", + "DetectingDevices": "Tražim uređaje", + "Descending": "Silazno", + "DefaultMetadataLangaugeDescription": "Ovo su vaše zadane postavke te se mogu prilagoditi na razini biblioteke.", + "Default": "Zadano", + "DatePlayed": "Datum reprodukcije", + "DateAdded": "Datum dodavanja", + "CriticRating": "Rejting kritičara", + "CopyStreamURLError": "Došlo je do greške prilikom kopiranja URLa.", + "ConfirmEndPlayerSession": "Da li želite ugasiti Jellyfin na {0}?", + "CommunityRating": "Rejting zajednice", + "Browse": "Pretraži", + "BoxRear": "Kutija (stražnja)" } From 29eb217a0d75134a69e39cad4d909c74e53571c9 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 26 Jun 2020 16:41:19 +0900 Subject: [PATCH 034/131] fix redirect issue on video player --- src/controllers/playback/videoosd.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index d6caf24e81..0c7261a486 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1341,7 +1341,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med }); } catch (e) { require(['appRouter'], function(appRouter) { - appRouter.showDirect('/'); + window.location.href = 'index.html'; }); } }); From 1bb428dee68f42545128dd6a44cde3819f6ae6f1 Mon Sep 17 00:00:00 2001 From: kenhon93 Date: Fri, 26 Jun 2020 08:32:43 +0000 Subject: [PATCH 035/131] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 97b2d2d1f7..dbf2de6944 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -1,6 +1,6 @@ { "Add": "添加", - "ButtonAdd": "新增", + "ButtonAdd": "增加", "ButtonAddScheduledTaskTrigger": "新增觸發", "ButtonAddUser": "添加用戶", "ButtonCancel": "取消", @@ -10,7 +10,7 @@ "ButtonFilter": "過濾", "ButtonHelp": "幫助", "ButtonManualLogin": "手動登入", - "ButtonNew": "最新", + "ButtonNew": "新增", "ButtonOk": "確定", "ButtonPlay": "播放", "ButtonQuickStartGuide": "快速入門指南", @@ -383,7 +383,7 @@ "AllowedRemoteAddressesHelp": "IP地址或IP /網絡掩碼條目的逗號分隔列表,用於允許遠程連接的網絡。 如果保留為空白,將允許所有遠程地址。", "AllowRemoteAccessHelp": "如果未選中,則將阻止所有遠程連接。", "AllowRemoteAccess": "允許與此Jellyfin服務器的遠程連接。", - "AllowFfmpegThrottlingHelp": "當轉碼或remux距離當前播放位置足夠遠時,請暫停該過程,以減少資源消耗。 在不經常觀看的情況下,此功能最為有用。 如果遇到播放問題,請關閉此功能。", + "AllowFfmpegThrottlingHelp": "當轉碼或無損複製進度遠超於當前播放位置,暫停進程可減少資源消耗。 在不經常觀看的情況下,此功能最為有用。 如果遇到播放問題,請關閉此功能。", "AllowOnTheFlySubtitleExtractionHelp": "可以從視頻中提取嵌入式字幕,然後以純文本格式將其交付給客戶端,以幫助防止視頻轉碼。 在某些系統上,這可能需要很長時間,並且會導致提取過程中視頻播放停止。 如果客戶端設備本身不支持嵌入的字幕,則可以禁用此選項以通過視頻轉碼刻錄字幕。", "AllowOnTheFlySubtitleExtraction": "允許即時提取字幕", "AllowMediaConversionHelp": "授予或拒絕訪問轉換媒體功能的權限。", @@ -402,5 +402,6 @@ "AddToPlayQueue": "添加到播放列", "AddToCollection": "添加到收藏", "AddItemToCollectionHelp": "通過搜索項目並使用右鍵單擊或點擊菜單將其添加到集合中,從而將它們添加到集合中。", - "AccessRestrictedTryAgainLater": "目前限制訪問。 請稍後再試。" + "AccessRestrictedTryAgainLater": "目前存取受限。 請稍後再試。", + "AllowFfmpegThrottling": "轉碼調節器" } From 17d8684cdf2607a7dcc5f30486e8d45468833bf6 Mon Sep 17 00:00:00 2001 From: him428 Date: Fri, 26 Jun 2020 09:05:23 +0000 Subject: [PATCH 036/131] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 95 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 91 insertions(+), 4 deletions(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index dbf2de6944..577d7aa5df 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -1,7 +1,7 @@ { "Add": "添加", "ButtonAdd": "增加", - "ButtonAddScheduledTaskTrigger": "新增觸發", + "ButtonAddScheduledTaskTrigger": "新增觸發點", "ButtonAddUser": "添加用戶", "ButtonCancel": "取消", "ButtonDelete": "删除", @@ -15,7 +15,7 @@ "ButtonPlay": "播放", "ButtonQuickStartGuide": "快速入門指南", "ButtonRefresh": "重新整理", - "ButtonRefreshGuideData": "重新整理電視指南資料", + "ButtonRefreshGuideData": "重新整理指南資料", "ButtonRemove": "清除", "ButtonRename": "重新命名", "ButtonResetPassword": "重設密碼", @@ -378,7 +378,7 @@ "Ascending": "上升", "Artist": "藝人", "Art": "藝術", - "AroundTime": "大約{0}", + "AroundTime": "大約", "AlwaysPlaySubtitlesHelp": "無論語言是哪種音頻,都將加載與語言首選項匹配的字幕。", "AllowedRemoteAddressesHelp": "IP地址或IP /網絡掩碼條目的逗號分隔列表,用於允許遠程連接的網絡。 如果保留為空白,將允許所有遠程地址。", "AllowRemoteAccessHelp": "如果未選中,則將阻止所有遠程連接。", @@ -403,5 +403,92 @@ "AddToCollection": "添加到收藏", "AddItemToCollectionHelp": "通過搜索項目並使用右鍵單擊或點擊菜單將其添加到集合中,從而將它們添加到集合中。", "AccessRestrictedTryAgainLater": "目前存取受限。 請稍後再試。", - "AllowFfmpegThrottling": "轉碼調節器" + "AllowFfmpegThrottling": "轉碼調節器", + "Dislike": "不喜歡", + "Disconnect": "中斷連接", + "Disc": "片", + "Disabled": "已停用", + "Directors": "導演", + "Director": "導演", + "DirectStreaming": "直接直播", + "DirectPlaying": "直接播放", + "DetectingDevices": "偵測裝置中", + "Desktop": "桌面", + "Descending": "倒序", + "DeleteUserConfirmation": "你確定要刪除此用戶嗎?", + "DeleteUser": "刪除用戶", + "DeleteMedia": "刪除媒體", + "DeleteImageConfirmation": "你確定要刪除此圖片嗎?", + "DeleteImage": "刪除圖片", + "DefaultErrorMessage": "處理此請求時發生錯誤,請稍後再嘗試。", + "Default": "預設", + "DateAdded": "日期已新增", + "CopyStreamURLError": "複製URL時發生錯誤。", + "CopyStreamURLSuccess": "成功複製URL。", + "CopyStreamURL": "複製直播URL", + "ContinueWatching": "繼續觀看", + "Connect": "連接", + "ConfirmEndPlayerSession": "你要關閉 {0} 的Jellyfin嗎?", + "ConfirmDeleteImage": "刪除圖片?", + "CommunityRating": "社群分數", + "ClientSettings": "客戶端設定", + "ChannelNumber": "頻道號碼", + "ChannelNameOnly": "只有頻道 {0}", + "Categories": "分類", + "CancelSeries": "取消片集", + "CancelRecording": "取消錄影", + "ButtonWebsite": "網頁", + "ButtonViewWebsite": "瀏覽網頁", + "ButtonUninstall": "解除安裝", + "ButtonTrailer": "預告", + "ButtonTogglePlaylist": "播放清單", + "ButtonToggleContextMenu": "更多", + "ButtonSplit": "分開", + "ButtonStop": "停止", + "ButtonStart": "開始", + "ButtonShutdown": "關閉", + "ButtonSettings": "設定", + "ButtonSend": "傳送", + "ButtonSelectServer": "選擇伺服器", + "ButtonSearch": "搜尋", + "ButtonScanAllLibraries": "掃瞄所有媒體櫃", + "ButtonRevoke": "撤銷", + "ButtonResume": "恢復", + "ButtonResetEasyPassword": "重設PIN碼", + "ButtonRepeat": "重複", + "ButtonProfile": "檔案", + "ButtonPause": "暫停", + "ButtonParentalControl": "家長控制", + "ButtonOpen": "開啟", + "ButtonNetwork": "網絡", + "ButtonMore": "更多", + "ButtonLearnMore": "了解更多", + "ButtonInfo": "資訊", + "ButtonHome": "主頁", + "ButtonGuide": "教學", + "ButtonGotIt": "了解", + "ButtonFullscreen": "全螢幕", + "ButtonForgotPassword": "忘記密碼", + "ButtonEditOtherUserPreferences": "更改用戶個人檔案,圖片及個人偏好。", + "ButtonEditImages": "更改圖片", + "ButtonDownload": "下載", + "ButtonConnect": "連接", + "ButtonChangeServer": "更換伺服器", + "ButtonBack": "返回", + "ButtonAudioTracks": "音軌", + "ButtonArrowUp": "箭咀上", + "ButtonArrowRight": "箭咀右", + "ButtonArrowLeft": "箭咀左", + "ButtonArrowDown": "箭咀下", + "ButtonAddServer": "新增伺服器", + "ButtonAddMediaLibrary": "新增媒體櫃", + "ButtonAddImage": "新增圖片", + "Browse": "瀏覽", + "Blacklist": "黑名單", + "BirthPlaceValue": "出生地點", + "BirthDateValue": "出生日期", + "Banner": "橫幅", + "Backdrops": "背景", + "Backdrop": "背景", + "AlwaysPlaySubtitles": "經常播放" } From 4b6f4b051ce4b5bfe5567eb29ca3912f386988b0 Mon Sep 17 00:00:00 2001 From: kenhon93 Date: Fri, 26 Jun 2020 09:16:37 +0000 Subject: [PATCH 037/131] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 577d7aa5df..6071a9b572 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -388,7 +388,7 @@ "AllowOnTheFlySubtitleExtraction": "允許即時提取字幕", "AllowMediaConversionHelp": "授予或拒絕訪問轉換媒體功能的權限。", "AllowMediaConversion": "允許媒體轉換", - "AllowHWTranscodingHelp": "允許調諧器即時轉碼流。 這可以幫助減少服務器所需的代碼轉換。", + "AllowHWTranscodingHelp": "允許調諧器即時轉碼。 這可減少使用伺服器轉碼。", "AllLibraries": "所有媒體庫", "AllEpisodes": "所有劇集", "AllComplexFormats": "所有格式(ASS,SSA,VOBSUB,PGS,SUB,IDX等)", @@ -399,9 +399,9 @@ "Aired": "已播出", "AirDate": "播出日期", "AdditionalNotificationServices": "瀏覽插件目錄以安裝其他通知服務。", - "AddToPlayQueue": "添加到播放列", + "AddToPlayQueue": "添加到播放隊列", "AddToCollection": "添加到收藏", - "AddItemToCollectionHelp": "通過搜索項目並使用右鍵單擊或點擊菜單將其添加到集合中,從而將它們添加到集合中。", + "AddItemToCollectionHelp": "搜尋物件並使用右鍵點擊或點擊菜單將他們添加到收藏中。", "AccessRestrictedTryAgainLater": "目前存取受限。 請稍後再試。", "AllowFfmpegThrottling": "轉碼調節器", "Dislike": "不喜歡", From 86abe9b8d1d4a2212cb2dfa181a79f2536e171fe Mon Sep 17 00:00:00 2001 From: him428 Date: Fri, 26 Jun 2020 09:46:45 +0000 Subject: [PATCH 038/131] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 6071a9b572..65c2274a84 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -490,5 +490,6 @@ "Banner": "橫幅", "Backdrops": "背景", "Backdrop": "背景", - "AlwaysPlaySubtitles": "經常播放" + "AlwaysPlaySubtitles": "經常播放", + "Display": "顯示" } From fd863b26fe521c01353192888ed79e37886d47f5 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 26 Jun 2020 23:47:14 +0900 Subject: [PATCH 039/131] apply code suggestions --- src/controllers/playback/videoosd.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 0c7261a486..46711dbe34 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1341,7 +1341,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med }); } catch (e) { require(['appRouter'], function(appRouter) { - window.location.href = 'index.html'; + appRouter.goHome() }); } }); From 65cd810288790edafeb6d04a09da6c4d61d308b8 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Fri, 26 Jun 2020 16:59:21 +0200 Subject: [PATCH 040/131] Fix linting error --- src/controllers/playback/videoosd.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 46711dbe34..9be5660b4a 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1341,7 +1341,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med }); } catch (e) { require(['appRouter'], function(appRouter) { - appRouter.goHome() + appRouter.goHome(); }); } }); From 52be2523ddce490ebbec232fd6dc9f4af382fd04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B9=20=D0=98=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Fri, 26 Jun 2020 14:41:19 +0000 Subject: [PATCH 041/131] Translated using Weblate (Bulgarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bg/ --- src/strings/bg-bg.json | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index 7d14080f70..ad1a8b95c5 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -1382,7 +1382,7 @@ "MessagePleaseWait": "Моля,изчакайте. Това може да отнеме минута.", "MessagePlayAccessRestricted": "Възпроизвеждането на това съдържание в момента е ограничено.Моля, свържете се с администратора на вашия сървър за повече информация.", "MessagePasswordResetForUsers": "Следните потребители са занулили паролите си.Те вече могат да влязат с пин кодовете, използвани за извършване на нулирането.", - "MessageNoTrailersFound": "Не са намерени трейлъри.За да подобрите филмовото изживяване инсталирайте канал за трейлъри,може да подредите няколко канала в библиотека.", + "MessageNoTrailersFound": "За да подобрите филмовото изживяване инсталирайте канал за трейлъри,може да подредите няколко канала в библиотека.", "MessageNoServersAvailable": "Не са намерени сървъри, използващи функцията за автоматично откриване на сървър.", "MessageNoMovieSuggestionsAvailable": "Понастоящем няма предложени филми. Започнете да гледате и оценявате филмите си, а след това се върнете, за да видите препоръките си.", "MessageNoCollectionsAvailable": "Колекциите ви позволяват да се наслаждавате на персонализирани групи от филми, сериали и албуми. Кликнете върху бутона +, за да започнете да създавате колекции.", @@ -1551,5 +1551,20 @@ "LabelSonyAggregationFlagsHelp": "Определя съдържанието на aggregationFlags елемента във urn:schemas-sonycom:av пространство от имена.", "LabelXDlnaDocHelp": "Определя съдържанието на X_DLNADOC елемента в urn:schemas-dlna-org:device-1-0 пространство от имена.", "LabelSkipForwardLength": "Време за придвижване напред:", - "LabelSkipBackLength": "Време за придвижване назад:" + "LabelSkipBackLength": "Време за придвижване назад:", + "LabelRepositoryUrlHelp": "Местоположението на манифеста на хранилището, което искате да включите.", + "MessageNoGenresAvailable": "Доставчиците на метаданни ще могат да изтеглят жанрове от интернет.", + "MessageAddRepository": "Ако искате да добавите хранилище, щракнете върху бутона до заглавната част и попълнете исканата информация.", + "LabelRepositoryNameHelp": "Персонализирано име за разграничаване на това хранилище от всички останали добавени към вашия сървър.", + "LabelRepositoryName": "Име на хранилището", + "LabelRepositoryUrl": "Адрес на хранилището", + "HeaderNewRepository": "Ново хранилище", + "MessageNoRepositories": "Няма хранилища.", + "EnableFasterAnimationsHelp": "Използвайте по-бързи анимации и преходи", + "EnableFasterAnimations": "Бързи анимации", + "EnableDecodingColorDepth10Vp9": "Включи 10 битово хардуерно декодиране за VP9", + "EnableDecodingColorDepth10Hevc": "Включи 10 битово хардуерно декодиране за HEVC", + "ButtonCast": "Стриймване", + "ButtonSyncPlay": "Синхронизирано възпроизвеждане", + "TabRepositories": "Хранилища" } From 6c6817eb7d143bd184b1fb1497afb04c1ac538e3 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Fri, 26 Jun 2020 15:16:55 +0000 Subject: [PATCH 042/131] 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 941b7c117c..e164238b32 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1506,7 +1506,7 @@ "HeaderFavoritePlaylists": "Listes de lecture favorites", "TabDVR": "DVR", "LabelChromecastVersion": "Version de Chromecast", - "LabelEnableHttpsHelp": "Autorise le serveur à écouter les requêtes HTTPS sur le port configurée. Un certificat valide doit être configuré pour permettre ce mode de fonctionnement.", + "LabelEnableHttpsHelp": "Autorise le serveur à écouter les requêtes HTTPS sur le port configuré. Un certificat valide doit être configuré pour permettre ce mode de fonctionnement.", "LabelEnableHttps": "Activer HTTPS", "HeaderServerAddressSettings": "Paramètres adresses serveur", "HeaderRemoteAccessSettings": "Paramètres d'accès distant", From e370d54edd4aa389c84f76c0f5f461dc17434e21 Mon Sep 17 00:00:00 2001 From: Vitorvlv Date: Fri, 26 Jun 2020 15:19:36 +0000 Subject: [PATCH 043/131] Translated using Weblate (Portuguese (Brazil)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pt_BR/ --- src/strings/pt-br.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index d043b19767..98f4879b60 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1511,7 +1511,7 @@ "LabelNightly": "Nightly", "LabelStable": "Estável", "LabelChromecastVersion": "Versão do Chromecast", - "LabelEnableHttpsHelp": "Habilita que o servidor escute na porta HTTPS configurada. Um certificado válido também deve ser configurado para que isso entre em vigor.", + "LabelEnableHttpsHelp": "Permite que o servidor escute na porta HTTPS configurada. Um certificado válido também deve ser configurado para que isso entre em vigor.", "LabelEnableHttps": "Habilitar HTTPS", "HeaderServerAddressSettings": "Configurações da localização do servidor", "HeaderRemoteAccessSettings": "Configurações de acesso remoto", From 0b3c6a004a4b52178f74e0ed503608e019e80b5c Mon Sep 17 00:00:00 2001 From: him428 Date: Fri, 26 Jun 2020 09:46:57 +0000 Subject: [PATCH 044/131] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 65c2274a84..2827e7dc74 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -491,5 +491,10 @@ "Backdrops": "背景", "Backdrop": "背景", "AlwaysPlaySubtitles": "經常播放", - "Display": "顯示" + "Display": "顯示", + "EnableBackdrops": "背景", + "EditImages": "更改圖片", + "DownloadsValue": "下載數目 {0}", + "Download": "下載", + "DisplayInMyMedia": "在主頁顯示" } From f7a86247f5242941964e3c4ead64668605bae780 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:36:02 +0000 Subject: [PATCH 045/131] Translated using Weblate (Greek) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/el/ --- src/strings/el.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/el.json b/src/strings/el.json index 3137f8682a..24fd7c0934 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -1234,5 +1234,6 @@ "AllowFfmpegThrottlingHelp": "Όταν ένας διακωδικοποιητής ή remux φτάσει αρκετά μπροστά από την τρέχουσα θέση αναπαραγωγής, διακόψτε τη διαδικασία ώστε να καταναλώσει λιγότερους πόρους. Αυτό είναι πιο χρήσιμο όταν παρακολουθείτε χωρίς να αναζητάτε συχνά. Απενεργοποιήστε το εάν αντιμετωπίζετε προβλήματα αναπαραγωγής.", "ButtonTogglePlaylist": "Λίστα αναπαραγωγής", "ButtonToggleContextMenu": "Περισσότερα", - "ButtonSplit": "Διαχωρισμός" + "ButtonSplit": "Διαχωρισμός", + "ButtonSyncPlay": "SyncPlay" } From 8f359310f0a046cd6762c33255c34356a98562ba Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:36:28 +0000 Subject: [PATCH 046/131] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index c1898bb1f9..09de31d043 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -1151,5 +1151,6 @@ "DisplayInOtherHomeScreenSections": "عرض في أقسام الشاشة الرئيسية مثل أحدث الوسائط واستمر في المشاهدة", "DisplayInMyMedia": "عرض على الشاشة الرئيسية", "Display": "عرض", - "Dislike": "لم يعجبنى" + "Dislike": "لم يعجبنى", + "ButtonSyncPlay": "SyncPlay" } From 20c184f33ba2638ac102dfb1a6304b1d2a904be0 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:44:02 +0000 Subject: [PATCH 047/131] Translated using Weblate (Belarusian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/be/ --- src/strings/be-by.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/be-by.json b/src/strings/be-by.json index c3675b310e..28cf51bcde 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -19,5 +19,6 @@ "ThisWizardWillGuideYou": "Гэты памочнік правядзе вас праз усе фазы ўстаноўкі і налады. Спачатку абярыце упадабаную мову.", "UserProfilesIntro": "У Jellyfin існуе ўбудаваная падтрымка для карыстальніцкіх профіляў, дазваляючы кожнаму карыстальніку валодаць сваімі ўласнымі параметрамі адлюстравання, станам прайгравання і кіраваннем ўтрымання.", "WelcomeToProject": "Пачатак працы ў Jellyfin!", - "WizardCompleted": "Гэта ўсё, што нам трэба зараз. Jellyfin пачынае збіраць звесткі аб вашай медыятэцы. Азнаёмцеся пакуль з некаторымі нашымі праграмамі, а затым націсніце Гатова, каб праглядзець Инфопанель сервера." + "WizardCompleted": "Гэта ўсё, што нам трэба зараз. Jellyfin пачынае збіраць звесткі аб вашай медыятэцы. Азнаёмцеся пакуль з некаторымі нашымі праграмамі, а затым націсніце Гатова, каб праглядзець Инфопанель сервера.", + "ButtonSyncPlay": "SyncPlay" } From 4dee37d0531d19eee70f75c4993505a50349a475 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:37:05 +0000 Subject: [PATCH 048/131] Translated using Weblate (Bulgarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bg/ --- src/strings/bg-bg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index ad1a8b95c5..71fdf80e32 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -1565,6 +1565,6 @@ "EnableDecodingColorDepth10Vp9": "Включи 10 битово хардуерно декодиране за VP9", "EnableDecodingColorDepth10Hevc": "Включи 10 битово хардуерно декодиране за HEVC", "ButtonCast": "Стриймване", - "ButtonSyncPlay": "Синхронизирано възпроизвеждане", + "ButtonSyncPlay": "SyncPlay", "TabRepositories": "Хранилища" } From a508d428979811ddcde94dee032106bdd2198fb9 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:45:46 +0000 Subject: [PATCH 049/131] Translated using Weblate (Catalan) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ca/ --- src/strings/ca.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ca.json b/src/strings/ca.json index df1cdf28f6..680be3ef77 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -818,5 +818,6 @@ "AllowFfmpegThrottling": "Transcodes de l’acceleració", "AllowOnTheFlySubtitleExtractionHelp": "Els subtítols incrustats es poden extreure de vídeos i entregar-los a clients en text senzill per tal d'evitar la transcodificació de vídeo. En alguns sistemes, això pot trigar molt i fer que la reproducció de vídeo s’aturi durant el procés d’extracció. Desactiveu-ho per tenir subtítols incrustats incrustats amb la transcodificació de vídeo quan no són compatibles amb el dispositiu client de forma nativa.", "AlbumArtist": "Album artista", - "Album": "Album" + "Album": "Album", + "ButtonSyncPlay": "SyncPlay" } From 68a66bfe00a85e14ddcb11990634bda85e4ed2fc Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:44:55 +0000 Subject: [PATCH 050/131] 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 45a4643012..5083c42e83 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1635,7 +1635,7 @@ "EnableBlurhashHelp": "Nenačtené obrázky budou zobrazeny pomocí neurčitých zástupných obrázků", "EnableBlurhash": "Povolit zástupné obrázky", "ButtonCast": "Přehrát v zařízení", - "ButtonSyncPlay": "Synchronizace přehrávání", + "ButtonSyncPlay": "SyncPlay", "MessageNoGenresAvailable": "Povolit některým poskytovatelům metadat stahovat informace o žánrech z Internetu.", "EnableFasterAnimationsHelp": "Použít rychlejší animace a přechody", "EnableFasterAnimations": "Rychlejší animace", From 86f7e5c3ac92fc58c947719bda51a050832d4432 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:43:03 +0000 Subject: [PATCH 051/131] Translated using Weblate (Danish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/da/ --- src/strings/da.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/da.json b/src/strings/da.json index 12b01f7da0..5e29e1574c 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -1608,5 +1608,6 @@ "Filter": "Filtrer", "New": "Nye", "ButtonTogglePlaylist": "Spilleliste", - "ButtonToggleContextMenu": "Mere" + "ButtonToggleContextMenu": "Mere", + "ButtonSyncPlay": "SyncPlay" } From 63767749f5c2508ed627b224d9dca710ef7bab06 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:45:25 +0000 Subject: [PATCH 052/131] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_MX/ --- src/strings/es-mx.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index f7762e396e..ef68bcd488 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -1552,5 +1552,6 @@ "HeaderSyncPlayEnabled": "SyncPlay habilitado", "HeaderSyncPlaySelectGroup": "Unirse a un grupo", "EnableDetailsBannerHelp": "Mostrar una imagen banner en la parte superior de la página de detalles del elemento.", - "EnableDetailsBanner": "Banner de detalles" + "EnableDetailsBanner": "Banner de detalles", + "ButtonSyncPlay": "SyncPlay" } From cc9d422f86ce6c70c58dcaecd5ef3ce6df5f8c0e Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:48:12 +0000 Subject: [PATCH 053/131] Translated using Weblate (Persian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fa/ --- src/strings/fa.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fa.json b/src/strings/fa.json index ad32c135f1..877c0af490 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -1553,5 +1553,6 @@ "EnableFastImageFadeIn": "Faster animations", "EnableFastImageFadeInHelp": "Use faster animations and transitions", "EnableBlurhash": "Enable blurred placeholders for images", - "EnableBlurhashHelp": "Images that are still being loaded will be displayed with a blurred placeholder" + "EnableBlurhashHelp": "Images that are still being loaded will be displayed with a blurred placeholder", + "ButtonSyncPlay": "SyncPlay" } From 2dfa6b89f250540dcaafee2914f80e722c3d8761 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:41:41 +0000 Subject: [PATCH 054/131] 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 3ccf278025..d53de1a44d 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1246,5 +1246,6 @@ "MediaInfoAnamorphic": "Anamorfinen", "ErrorGettingTvLineups": "TV esiintyjälistan lataamisessa tapahtui virhe. Varmista, että tiedot on oikein ja yritä uudelleen.", "EnableDetailsBannerHelp": "Näyttää julistekuvan yksityiskohdat -sivun ylälaidassa.", - "EnableDetailsBanner": "Yksityiskohtien banneri" + "EnableDetailsBanner": "Yksityiskohtien banneri", + "ButtonSyncPlay": "SyncPlay" } From f83306545369e013a7fb227e3ad6fa21d4e11455 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:51:16 +0000 Subject: [PATCH 055/131] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 61dce082c9..844ddee27c 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -198,5 +198,6 @@ "HeaderFavoriteShows": "Séries favorites", "HeaderFavoriteEpisodes": "Épisodes favoris", "HeaderFavoriteArtists": "Artistes favoris", - "HeaderFavoriteAlbums": "Albums favoris" + "HeaderFavoriteAlbums": "Albums favoris", + "ButtonSyncPlay": "SyncPlay" } From bebc2b88d122fbe978204bec984254c840713e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Coutu?= Date: Fri, 26 Jun 2020 20:27:49 +0000 Subject: [PATCH 056/131] 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 | 74 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 844ddee27c..67dd189a1f 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -97,7 +97,7 @@ "AllowMediaConversion": "Autoriser la conversion des médias", "AllowMediaConversionHelp": "Autoriser ou refuser l'accès à la fonctionnalité de conversion des médias.", "AllowOnTheFlySubtitleExtraction": "Autoriser l'extraction des sous-titres à la volée", - "AllowOnTheFlySubtitleExtractionHelp": "Les sous-titres intégrés peuvent être extraits des vidéos et distribués aux applications Jellyfin au format texte pour éviter le transcodage. Sur certains systèmes, cela peut prendre du temps et arrêter la lecture de la vidéo pendant le processus d'extraction. Désactivez cette option pour graver les sous-titres avec un transcodage quand l'appareil ne les prend pas en charge nativement.", + "AllowOnTheFlySubtitleExtractionHelp": "Les sous-titres intégrés peuvent être extraits des vidéos et distribués aux clients en format texte pour éviter le transcodage. Sur certains systèmes, cela peut prendre du temps et arrêter la lecture de la vidéo pendant le processus d'extraction. Désactivez cette option pour graver les sous-titres avec un transcodage quand l'appareil ne les prend pas en charge nativement.", "AllowRemoteAccess": "Autoriser les connexions distantes à ce serveur Jellyfin.", "AllowRemoteAccessHelp": "Si l'option est désactivée, toutes les connexions distantes seront bloquées.", "Artists": "Artistes", @@ -134,13 +134,13 @@ "BirthLocation": "Lieu de naissance", "BirthPlaceValue": "Lieu de naissance : {0}", "Blacklist": "Liste noire", - "BookLibraryHelp": "Les livres audios et formats textes sont supportés. Consultez le {0}Guide de nommage de livres de Jellyfin{1}.", + "BookLibraryHelp": "Les livres audios et formats textes sont supportés. Consultez le {0} Guide de nommage de livres {1}.", "Box": "Boîtier", "BoxRear": "Dos de boîtier", "Browse": "Parcourir", "BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", - "AllowHWTranscodingHelp": "Permet au récepteur TV de transcoder les flux à la volée. Cela peut aider à réduire le transcodage requis par le serveur Jellyfin.", - "BurnSubtitlesHelp": "Détermine si le serveur doit graver les sous-titres lors de la conversion vidéo en fonction du format des sous-titres. Éviter la gravure des sous-titres améliorera les performances du serveur. Sélectionnez Auto pour graver les formats basés sur l'image (par exemple, VOBSUB, PGS, SUB/IDX etc) ainsi que certains sous-titres ASS/SSA", + "AllowHWTranscodingHelp": "Permet au récepteur TV de transcoder les flux à la volée. Cela peut aider à réduire le transcodage requis par le serveur.", + "BurnSubtitlesHelp": "Détermine si le serveur doit graver les sous-titres lors du transcodage vidéo. Éviter ceci améliorera les performances du serveur. Sélectionnez Auto pour graver les formats basés sur l'image (par exemple, VOBSUB, PGS, SUB/IDX etc) ainsi que certains sous-titres ASS/SSA.", "ButtonAccept": "Accepter", "ButtonAdd": "Ajouter", "ButtonAddMediaLibrary": "Ajouter une médiathèque", @@ -187,7 +187,7 @@ "ButtonMore": "Plus", "ButtonNetwork": "Réseau", "AspectRatio": "Format de visionnement", - "AskAdminToCreateLibrary": "Demander à l'administrateur pour créer une bibliothèque de média.", + "AskAdminToCreateLibrary": "Demander un administrateur de créer une médiathèque.", "Artist": "Artiste", "AllowFfmpegThrottlingHelp": "Quand un transcodage ou rémux se déplace après la position de relecture, suspendre le processus pour consommer moins de ressources. Ceci est le plus utile pour chercher moins. Désactiver s'il y a des problèmes de relecture.", "AllowFfmpegThrottling": "Restreindre la vitesse de transcodage", @@ -199,5 +199,67 @@ "HeaderFavoriteEpisodes": "Épisodes favoris", "HeaderFavoriteArtists": "Artistes favoris", "HeaderFavoriteAlbums": "Albums favoris", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "Default": "Défaut", + "DeathDateValue": "Mort: {0}", + "DatePlayed": "Date écoutée", + "DateAdded": "Date d'ajout", + "CriticRating": "Évaluation critique", + "CopyStreamURLError": "Une erreur est survenue en essayant de copier l'URL.", + "CopyStreamURLSuccess": "L'URL a été copié avec succès.", + "CopyStreamURL": "Copier l'URL du stream", + "ContinueWatching": "Continuer à visionner", + "Connect": "Connexion", + "ConfirmEndPlayerSession": "Voulez-vous éteindre Jellyfin sur {0}?", + "ConfirmDeletion": "Confirmer la suppression", + "ConfirmDeleteItems": "Supprimer ceux-ci les effacera du système de fichiers et votre médiathèque. Êtes-vous sûr de vouloir continuer?", + "ConfirmDeleteImage": "Effacer l'image?", + "ClientSettings": "Paramètres du client", + "ChannelNumber": "Numéro de canal", + "ChannelNameOnly": "Canal {0} seulment", + "ChannelAccessHelp": "Sélectionner les canaux que vous désirer partager avec cet usager. Les administrateurs seront capable de modifier tout les canaux en utilisant le gestionnaire des métadonnées.", + "Categories": "Catégories", + "CancelSeries": "Annuler la série", + "CancelRecording": "Annuler l'enregistrement", + "ButtonWebsite": "Site web", + "ButtonViewWebsite": "Voir le site web", + "ButtonUp": "Vers le haut", + "ButtonUninstall": "Désinstaller", + "ButtonTogglePlaylist": "Liste de lecture", + "ButtonToggleContextMenu": "Plus", + "ButtonSubtitles": "Sous-titres", + "ButtonSubmit": "Soumettre", + "ButtonStop": "Arrêt", + "ButtonStart": "Démarrer", + "ButtonSort": "Trier", + "ButtonSignIn": "Se connecter", + "ButtonShutdown": "Éteindre", + "ButtonShuffle": "Lecture aléatoire", + "ButtonSettings": "Paramètres", + "ButtonSend": "Envoyer", + "ButtonSelectServer": "Sélectionner le serveur", + "ButtonSelectDirectory": "Sélectionner le répertoire", + "ButtonSearch": "Rechercher", + "ButtonScanAllLibraries": "Analyser toutes les médiathèques", + "ButtonSave": "Sauvegarder", + "ButtonRevoke": "Révoquer", + "ButtonResume": "Reprendre la lecture", + "ButtonResetPassword": "Réinitialiser le mot de passe", + "ButtonResetEasyPassword": "Remettre à nouveau le code NIP facile", + "ButtonRepeat": "Répéter", + "ButtonRename": "Renommer", + "ButtonRemove": "Enlever", + "ButtonRefreshGuideData": "Rafraîchir les données de guide", + "ButtonRefresh": "Rafraîchir", + "ButtonProfile": "Profil", + "ButtonPreviousTrack": "Piste précédente", + "ButtonPlay": "Lecture", + "ButtonPause": "Pause", + "ButtonParentalControl": "Contrôle parentale", + "ButtonOpen": "Ouvrir", + "ButtonOk": "OK", + "ButtonNextTrack": "Prochaine piste", + "ButtonNew": "Nouveau", + "ButtonAddImage": "Ajouter l'image", + "BoxSet": "Coffret" } From ac6c25f8f69b940c3a2b0d684afffdff67217865 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Fri, 26 Jun 2020 15:36:57 +0000 Subject: [PATCH 057/131] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index e164238b32..e0f633dd05 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1521,7 +1521,7 @@ "EnableDetailsBanner": "Bannière des détails", "EnableDetailsBannerHelp": "Affichez une image de bannière en haut de la page de détails de l'article.", "HeaderSyncPlaySelectGroup": "Rejoindre un groupe", - "LabelSyncPlayAccessCreateAndJoinGroups": "Autoriser l'utilisateur à créer un ou rejoindre un groupe", + "LabelSyncPlayAccessCreateAndJoinGroups": "Autoriser l'utilisateur à créer ou rejoindre un groupe", "LabelSyncPlayLeaveGroupDescription": "Désactiver SyncPlay", "LabelSyncPlayLeaveGroup": "Quitter le groupe", "LabelSyncPlayNewGroupDescription": "Créer un nouveau groupe", @@ -1529,14 +1529,14 @@ "LabelSyncPlaySyncMethod": "Méthode de synchronisation :", "LabelSyncPlayPlaybackDiff": "Décalage de la lecture :", "MillisecondsUnit": "ms", - "LabelSyncPlayTimeOffset": "Décalage de temps avec le serveur  :", + "LabelSyncPlayTimeOffset": "Décalage de temps avec le serveur :", "HeaderSyncPlayEnabled": "SyncPlay activé", "MessageSyncPlayLibraryAccessDenied": "L'accès à ce contenu est restreint.", "MessageSyncPlayJoinGroupDenied": "Permission requise pour utiliser SyncPlay.", "MessageSyncPlayCreateGroupDenied": "Permission requise pour créer un groupe.", "MessageSyncPlayGroupDoesNotExist": "Impossible de rejoindre le groupe car il n'existe pas.", "MessageSyncPlayPlaybackPermissionRequired": "Autorisation de lecture requise.", - "MessageSyncPlayNoGroupsAvailable": "Aucun groupe disponible. Commencez par lancer quelque chose.", + "MessageSyncPlayNoGroupsAvailable": "Aucun groupe disponible. Commencez par lire quelque chose.", "MessageSyncPlayGroupWait": "{0} est en train de charger...", "MessageSyncPlayUserLeft": "{0} a quitté le groupe.", "MessageSyncPlayUserJoined": "{0} a rejoint le groupe.", @@ -1548,7 +1548,7 @@ "SyncPlayAccessHelp": "Sélectionner le niveau d'accès de cet utilisateur pour la fonctionnalité SyncPlay. SyncPlay permet de synchroniser la lecture avec d'autres utilisateurs.", "MessageSyncPlayErrorMedia": "Impossible d'activer SyncPlay ! Erreur média.", "MessageSyncPlayErrorMissingSession": "Impossible d'activer SyncPlay ! Session manquante.", - "MessageSyncPlayErrorNoActivePlayer": "Aucun player actif trouvé. SyncPlay a été désactivé.", + "MessageSyncPlayErrorNoActivePlayer": "Aucun lecteur actif trouvé. SyncPlay a été désactivé.", "MessageSyncPlayErrorAccessingGroups": "Une erreur s'est produite pendant l'accès à la liste de groupes.", "ShowMore": "Voir plus", "ShowLess": "Voir moins", From f26b4db5ca72a4cdcb3bfce55e7a5c75f8367cbb Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:37:25 +0000 Subject: [PATCH 058/131] 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 e0f633dd05..f9ead15363 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1555,7 +1555,7 @@ "EnableBlurhashHelp": "Les images qui sont encore en cours de chargement seront remplacées par une image générique floue", "EnableBlurhash": "Utilise des images génériques floues à la place des images", "ButtonCast": "Diffuser", - "ButtonSyncPlay": "Lecture synchronisée", + "ButtonSyncPlay": "SyncPlay", "TabRepositories": "Dépôts", "MessageNoGenresAvailable": "Utiliser des fournisseurs de métadonnées pour récupérer les genres depuis internet.", "MessageAddRepository": "Si vous souhaitez ajouter un dépôt, cliquez sur le bouton près de l'entête et renseignez les informations demandées.", From ca2590fcb83bcaf138f9adcd1f0979691702309e Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:42:22 +0000 Subject: [PATCH 059/131] Translated using Weblate (German (Swiss)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/gsw/ --- src/strings/gsw.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/gsw.json b/src/strings/gsw.json index e396313856..803b707f61 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -165,5 +165,6 @@ "VersionNumber": "Version {0}", "Absolute": "Absolut", "Actor": "Schauspiler", - "AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probier bitte später nomau. " + "AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probier bitte später nomau. ", + "ButtonSyncPlay": "SyncPlay" } From 3aa5e971fbd98dc3cb508058b619f2229299e6dd Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:54:07 +0000 Subject: [PATCH 060/131] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/he/ --- src/strings/he.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/he.json b/src/strings/he.json index 5df0ba4fe4..6d506f43c8 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -771,5 +771,6 @@ "LabelSource": "מקור:", "LabelSoundEffects": "אפקטי סאונד:", "ButtonTogglePlaylist": "רשימת ניגון", - "ButtonToggleContextMenu": "עוד" + "ButtonToggleContextMenu": "עוד", + "ButtonSyncPlay": "SyncPlay" } From a09302952b43329d9b0322908299718cebcaa3d8 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:41:23 +0000 Subject: [PATCH 061/131] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hi/ --- src/strings/hi-in.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 7a51a4f695..698269c3bf 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -112,5 +112,6 @@ "AlbumArtist": "चित्राधार कलाकार", "AllowOnTheFlySubtitleExtraction": "मक्खी पर उपशीर्षक निष्कर्षण की अनुमति दें", "Album": "एल्बम", - "AddItemToCollectionHelp": "उनके लिए खोज करके संग्रह में आइटम जोड़ें और उन्हें संग्रह में जोड़ने के लिए उनके राइट-क्लिक या टैप मेनू का उपयोग करें।" + "AddItemToCollectionHelp": "उनके लिए खोज करके संग्रह में आइटम जोड़ें और उन्हें संग्रह में जोड़ने के लिए उनके राइट-क्लिक या टैप मेनू का उपयोग करें।", + "ButtonSyncPlay": "SyncPlay" } From f12b47a8864b759a23f57b1f0eb662f6ec2dca7c Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:38:46 +0000 Subject: [PATCH 062/131] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hr/ --- src/strings/hr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/hr.json b/src/strings/hr.json index 1e218839df..69f5dfaa65 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -1237,5 +1237,6 @@ "ConfirmEndPlayerSession": "Da li želite ugasiti Jellyfin na {0}?", "CommunityRating": "Rejting zajednice", "Browse": "Pretraži", - "BoxRear": "Kutija (stražnja)" + "BoxRear": "Kutija (stražnja)", + "ButtonSyncPlay": "SyncPlay" } From 5b125d91895037aba1d5251f77ab98ee7b5abcf6 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:35:28 +0000 Subject: [PATCH 063/131] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/id.json b/src/strings/id.json index 8085767984..e5452d7706 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -204,5 +204,6 @@ "Alerts": "Peringatan", "AddedOnValue": "Ditambahkan {0}", "AllowFfmpegThrottling": "Transcode Tercekik", - "AllowOnTheFlySubtitleExtractionHelp": "Subtitle yang melekat di video dapat dikeluarkan dan dikirimkan kepada klien dalam bentuk text biasa dengan tujuan untuk menghalau terjadinya transcoding pada video. Pada beberapa system ini membutuhkan waktu yang lama dan dapat menyebabkan video playback menjadi terhenti dikarenakan proses ekstraksi. Non-aktifkan fitur ini untuk membiarkan subtitle langsung dilekatkan kepada video dengan cara transcoding ketika klien tidak mendukung fitur ini." + "AllowOnTheFlySubtitleExtractionHelp": "Subtitle yang melekat di video dapat dikeluarkan dan dikirimkan kepada klien dalam bentuk text biasa dengan tujuan untuk menghalau terjadinya transcoding pada video. Pada beberapa system ini membutuhkan waktu yang lama dan dapat menyebabkan video playback menjadi terhenti dikarenakan proses ekstraksi. Non-aktifkan fitur ini untuk membiarkan subtitle langsung dilekatkan kepada video dengan cara transcoding ketika klien tidak mendukung fitur ini.", + "ButtonSyncPlay": "SyncPlay" } From 8895a3d2a7b5b23585f3994fb65b6ef5846764ce Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:47:17 +0000 Subject: [PATCH 064/131] Translated using Weblate (Icelandic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/is/ --- src/strings/is-is.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/is-is.json b/src/strings/is-is.json index f0d39a1d06..ff8f924e22 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -547,5 +547,6 @@ "ConfirmDeleteItems": "Ef þessum skrám er eytt verða þær fjarlægðar úr bæði stýrikerfinu og miðlasafninu. Ertu viss um að þú viljir halda áfram?", "CommunityRating": "Mat samfélagsins", "ButtonStart": "Byrja", - "BoxSet": "Kassasett" + "BoxSet": "Kassasett", + "ButtonSyncPlay": "SyncPlay" } From 3262279ba4b5245eb7fc25f3b0fb1a7e29b62228 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:37:48 +0000 Subject: [PATCH 065/131] Translated using Weblate (Kazakh) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/kk/ --- src/strings/kk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/kk.json b/src/strings/kk.json index 6acd5e46b7..5532af90f5 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -1543,5 +1543,6 @@ "HeaderRemoteAccessSettings": "Qashyqtan qatynaý parametrleri", "HeaderHttpsSettings": "HTTPS parametrleri", "HeaderFavoritePlaylists": "Tańdaýly oınatý tizimder", - "HeaderDVR": "DVR" + "HeaderDVR": "DVR", + "ButtonSyncPlay": "SyncPlay" } From 29aadefd9436c65ba3ab9ba4e312cbba74c9218a Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:42:44 +0000 Subject: [PATCH 066/131] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index cc5f63e541..2d67f10cd6 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -1429,5 +1429,6 @@ "ButtonToggleContextMenu": "더보기", "Rate": "평", "PerfectMatch": "정확히 일치", - "OtherArtist": "다른 아티스트" + "OtherArtist": "다른 아티스트", + "ButtonSyncPlay": "SyncPlay" } From 329930011e88977180a7fbc88f7daada54f971ea Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:48:31 +0000 Subject: [PATCH 067/131] Translated using Weblate (Lithuanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lt/ --- src/strings/lt-lt.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 773a7c5c8b..c8c2b6e448 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -1014,5 +1014,6 @@ "ButtonToggleContextMenu": "Daugiau", "ButtonSplit": "Skirstyti", "AskAdminToCreateLibrary": "Prašyti administratoriaus, kad sukurtų mediateka.", - "Album": "Albumas" + "Album": "Albumas", + "ButtonSyncPlay": "SyncPlay" } From f68180153f6f99084207899b5e7649d9167290a3 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:56:27 +0000 Subject: [PATCH 068/131] Translated using Weblate (Malay) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ms/ --- src/strings/ms.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ms.json b/src/strings/ms.json index c377e52af1..0c8363392b 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -102,5 +102,6 @@ "HeaderContinueWatching": "Terus Menonton", "Genres": "Genre-genre", "Collections": "Koleksi", - "Channels": "Saluran" + "Channels": "Saluran", + "ButtonSyncPlay": "SyncPlay" } From 802e0ce107aa430deb89b2b17105829634c209a5 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:58:41 +0000 Subject: [PATCH 069/131] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 32c5d20b11..e24645a86e 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1558,5 +1558,6 @@ "HeaderRemoteAccessSettings": "Externe toegang instellingen", "HeaderHttpsSettings": "HTTPS instellingen", "HeaderDVR": "DVR", - "ApiKeysCaption": "Lijst met de momenteel ingeschakelde API-sleutels" + "ApiKeysCaption": "Lijst met de momenteel ingeschakelde API-sleutels", + "ButtonSyncPlay": "SyncPlay" } From 320c911717c50d6f687e775c5f66c9f6096c3b4a Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:58:22 +0000 Subject: [PATCH 070/131] =?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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index aed96da2c6..2e38dbd1ab 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1552,5 +1552,6 @@ "HeaderDVR": "Opptak", "ApiKeysCaption": "Liste over aktive API-nøkler", "EnableDetailsBannerHelp": "Viser et bildebanner øverst på detaljsiden.", - "EnableDetailsBanner": "Detaljebanner" + "EnableDetailsBanner": "Detaljebanner", + "ButtonSyncPlay": "SyncPlay" } From e01ae118aa9d1a3df8d4b782288ff5656901c0f6 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:54:53 +0000 Subject: [PATCH 071/131] 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 3c470640e1..2eee48ee73 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1479,5 +1479,6 @@ "DeinterlaceMethodHelp": "Wybierz metodę usuwania przeplotu używaną podczas transkodowania.", "ClientSettings": "Ustawienia klienta", "ButtonTogglePlaylist": "Playlista", - "ButtonToggleContextMenu": "Więcej" + "ButtonToggleContextMenu": "Więcej", + "ButtonSyncPlay": "SyncPlay" } From 0c350bdd7b5db23ac3e4bb1a4954cdd8f3af76eb Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:42:04 +0000 Subject: [PATCH 072/131] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 6f8e218a4c..abd2c08a94 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -1452,5 +1452,6 @@ "AllowFfmpegThrottlingHelp": "Suspende o processo de transcodificação assim que este avance o suficiente após o ponto de reprodução atual, para poupança de recursos. Esta funcionalidade é mais útil quando a reprodução é maioritariamente contínua, sem avançar ou recuar manualmente. Desative esta opção caso haja problemas de reprodução.", "AllowFfmpegThrottling": "Reduzir Taxa de Transcodificação", "PreferEmbeddedTitlesOverFileNamesHelp": "Determina o título a apresentar por defeito quando não é possível carregar metadados locais nem da Internet.", - "OptionSaveMetadataAsHiddenHelp": "Alterar esta definição apenas afetará metadados guardados futuramente. Ficheiros existentes serão atualizados assim que forem alterados pelo Servidor Jellyfin." + "OptionSaveMetadataAsHiddenHelp": "Alterar esta definição apenas afetará metadados guardados futuramente. Ficheiros existentes serão atualizados assim que forem alterados pelo Servidor Jellyfin.", + "ButtonSyncPlay": "SyncPlay" } From 4aa9deafb1be1fc292f0319741f7c9bd7353bb4d Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:38:27 +0000 Subject: [PATCH 073/131] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index ae086d220b..d98d76079b 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1552,5 +1552,6 @@ "ShowMore": "Показать больше", "ShowLess": "Показать меньше", "EnableBlurhashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с размытым заполнением", - "EnableBlurhash": "Включить размытые заполнители для изображений" + "EnableBlurhash": "Включить размытые заполнители для изображений", + "ButtonSyncPlay": "SyncPlay" } From a4765add27b00b64dec3e81f13c8c6ca9d122487 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:38:08 +0000 Subject: [PATCH 074/131] 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 66b21b8a19..106b6f5bdc 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1275,5 +1275,6 @@ "Episode": "Epizoda", "EnableDetailsBannerHelp": "Prikaži sliko pasice na vrhu strani podrobnosti.", "EnableDetailsBanner": "Pasica podrobnosti", - "DeinterlaceMethodHelp": "Izberite način razpletanja pri prekodiranju prepletenih vsebin." + "DeinterlaceMethodHelp": "Izberite način razpletanja pri prekodiranju prepletenih vsebin.", + "ButtonSyncPlay": "SyncPlay" } From 516e3ce7e623cf6c8d71dc84ebadfda010ccbccb Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:49:11 +0000 Subject: [PATCH 075/131] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 7cee76407e..a8115c42fb 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1513,5 +1513,6 @@ "HeaderServerAddressSettings": "Serveradressinställningar", "HeaderRemoteAccessSettings": "Inställningar för fjärråtkomst", "HeaderHttpsSettings": "HTTPS-inställningar", - "HeaderDVR": "PVR" + "HeaderDVR": "PVR", + "ButtonSyncPlay": "SyncPlay" } From 547f560fa3a3689b980a9f898c1a1068a71ff69c Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:51:44 +0000 Subject: [PATCH 076/131] 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 7c5656dbda..3e3c94d742 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -768,5 +768,6 @@ "LabelSkipIfAudioTrackPresent": "Varsayılan ses izi indirme diliyle uyuşuyorsa atla", "LabelSize": "Boyut:", "LabelSimultaneousConnectionLimit": "Eşzamanlı yayın limiti:", - "LabelServerName": "Sunucu adı:" + "LabelServerName": "Sunucu adı:", + "ButtonSyncPlay": "SyncPlay" } From ae9efcf4136b7011b342e0b549006c8dbd7648cb Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:46:57 +0000 Subject: [PATCH 077/131] Translated using Weblate (Ukrainian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uk/ --- src/strings/uk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/uk.json b/src/strings/uk.json index 5a859a4aee..0b93964474 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -159,5 +159,6 @@ "AllowOnTheFlySubtitleExtractionHelp": "Вбудовані субтитри можуть бути експортовані з відео і надіслані, по черзі, клієнтам у вигляді тексту. Це допоможе уникнути перекодування відео. На деяких системах, перекодування може зайняти тривалий час і зупинити відтворення відео, для того щоб забезпечити експортування. Вимкнення цієї функції дозволить вбудованим субтитрам бути інтегрованим у відео, під час перекодування, якщо вбудовані субтитри не підтримуються на стороні клієнта.", "AllowOnTheFlySubtitleExtraction": "Дозволити експортування субтитрів «на льоту»", "AllowHWTranscodingHelp": "Дозволити клієнту перекодування на «на льоту». Це дозволить відмикати перекодування, якщо вона вимагається сервером.", - "AllComplexFormats": "Усі складні формати (ASS, SSA, VOBSUB, PGS, SUB, IDX, …)" + "AllComplexFormats": "Усі складні формати (ASS, SSA, VOBSUB, PGS, SUB, IDX, …)", + "ButtonSyncPlay": "SyncPlay" } From 1ec6888a8d62ca818be4494ef94f0bc2c4575098 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:39:04 +0000 Subject: [PATCH 078/131] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 84aacf6280..a5b319a86f 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -825,5 +825,6 @@ "LabelMaxStreamingBitrateHelp": "Thiết lập bitrate tối đa khi truyền tải.", "LabelMaxStreamingBitrate": "Chất lượng phát tối đa:", "LabelMaxScreenshotsPerItem": "Số lượng ảnh chụp tối đa mỗi mục:", - "LabelMaxResumePercentageHelp": "Nội dung sẽ được cho là đã kết thúc nếu ngừng phát sau thời gian này." + "LabelMaxResumePercentageHelp": "Nội dung sẽ được cho là đã kết thúc nếu ngừng phát sau thời gian này.", + "ButtonSyncPlay": "SyncPlay" } From 798943876bdbb8a4731a58c279d0d2e9317000f4 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:43:24 +0000 Subject: [PATCH 079/131] 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 6b188783bd..d29d67fccd 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1546,7 +1546,7 @@ "LabelSyncPlayLeaveGroupDescription": "关闭同步播放", "EnableDetailsBanner": "详细信息页面的横幅", "ButtonCast": "投射", - "ButtonSyncPlay": "同步播放", + "ButtonSyncPlay": "SyncPlay", "EnableBlurhashHelp": "仍在加载的图片将显示带有模糊的占位符", "EnableBlurhash": "为图片启用模糊的占位符", "SyncPlayAccessHelp": "为此用户选择对同步播放功能的访问级别。同步播放让你可以和其他设备同步播放进度。", From 223d6bf91975be799b40a7aba1a93bda587b9d13 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:53:50 +0000 Subject: [PATCH 080/131] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 2827e7dc74..3665b07e16 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -496,5 +496,6 @@ "EditImages": "更改圖片", "DownloadsValue": "下載數目 {0}", "Download": "下載", - "DisplayInMyMedia": "在主頁顯示" + "DisplayInMyMedia": "在主頁顯示", + "ButtonSyncPlay": "SyncPlay" } From 6e811c6c3e81965e6137fd046d23bd0e92614baa Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:52:15 +0000 Subject: [PATCH 081/131] 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 a1e7337ce0..f1fe8df4f4 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1655,5 +1655,6 @@ "New": "新增", "ApiKeysCaption": "目前已啟用的API金鑰列表", "ButtonTogglePlaylist": "播放清單", - "ButtonToggleContextMenu": "更多" + "ButtonToggleContextMenu": "更多", + "ButtonSyncPlay": "SyncPlay" } From 356619c717d6440808cbf7e5f1fdce00e653a0ab Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:39:23 +0000 Subject: [PATCH 082/131] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index bf2cdc6153..b095ffb877 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -1143,5 +1143,6 @@ "ClientSettings": "クライアント設定", "Artist": "アーティスト", "AlbumArtist": "アルバム アーティスト", - "Album": "アルバム" + "Album": "アルバム", + "ButtonSyncPlay": "SyncPlay" } From 9570fd165d76f07dc1cd2a21790f188ba45ceb19 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:53:33 +0000 Subject: [PATCH 083/131] 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 60b2c1cd97..9d6f3faf37 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -1416,5 +1416,6 @@ "HeaderDVR": "DVR", "ApiKeysCaption": "Lista das chaves de API ativadas no momento", "ButtonTogglePlaylist": "Lista de leitura", - "ButtonToggleContextMenu": "Mais" + "ButtonToggleContextMenu": "Mais", + "ButtonSyncPlay": "SyncPlay" } From e348c2a451f09414368febadd7bc59d1bd885a5c Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:52:01 +0000 Subject: [PATCH 084/131] Translated using Weblate (Serbian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sr/ --- src/strings/sr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sr.json b/src/strings/sr.json index dc329c1309..d1ed50e87b 100644 --- a/src/strings/sr.json +++ b/src/strings/sr.json @@ -194,5 +194,6 @@ "AlbumArtist": "Извођач албума", "Album": "Албум", "AirDate": "Премијера", - "AdditionalNotificationServices": "Прегледајте каталог додатака да бисте инсталирали сервисе за обавештења." + "AdditionalNotificationServices": "Прегледајте каталог додатака да бисте инсталирали сервисе за обавештења.", + "ButtonSyncPlay": "SyncPlay" } From deb0608d910b3b662c109339267dfcfa7eacc12b Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:52:44 +0000 Subject: [PATCH 085/131] Translated using Weblate (Galician) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/gl/ --- src/strings/gl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/gl.json b/src/strings/gl.json index 5341462de7..e87ce46770 100644 --- a/src/strings/gl.json +++ b/src/strings/gl.json @@ -11,5 +11,6 @@ "AirDate": "Data de emisión", "Aired": "Emitido", "AddToPlaylist": "Engadir á lista de reprodución", - "Add": "Engadir" + "Add": "Engadir", + "ButtonSyncPlay": "SyncPlay" } From 6b9e0e2c4b4fcf123efa9bbe37ad4ad858a1b1e4 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:53:00 +0000 Subject: [PATCH 086/131] Translated using Weblate (Spanish (Dominican Republic)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_DO/ --- src/strings/es_DO.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json index 7c42778a1c..9f5d299631 100644 --- a/src/strings/es_DO.json +++ b/src/strings/es_DO.json @@ -12,5 +12,6 @@ "Books": "Libros", "Albums": "Álbumes", "Artists": "Artistas", - "Channels": "Canales" + "Channels": "Canales", + "ButtonSyncPlay": "SyncPlay" } From 89cd821c435ebac14783d83bce510171684d4622 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:50:56 +0000 Subject: [PATCH 087/131] Translated using Weblate (Latvian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/lv/ --- src/strings/lv.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/lv.json b/src/strings/lv.json index 0affe65209..18346bbda0 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -1232,5 +1232,6 @@ "MessageInstallPluginFromApp": "Šis paplašinājums ir jāuzstāda no lietotnes, kurā jūs to vēlaties izmantot.", "LabelEmbedAlbumArtDidl": "Ievietot albumu vākus iekš Didl", "LabelSelectFolderGroups": "Automātiski grupēt saturu no sekojošām datnēm skatos kā Filmas, Mūzika un TV:", - "AllowFfmpegThrottlingHelp": "Kad trans-kodējums vai remux tiek pietiekami tālu priekšā pašreizējai atskaņošanas vietai, process tiks pauzēts lai patērētu mazāk resursu. Tas ir noderīgākais skatoties bez biežas pārlēkšanas. Atspējo šo ja saskaries ar atskaņošanas problēmām." + "AllowFfmpegThrottlingHelp": "Kad trans-kodējums vai remux tiek pietiekami tālu priekšā pašreizējai atskaņošanas vietai, process tiks pauzēts lai patērētu mazāk resursu. Tas ir noderīgākais skatoties bez biežas pārlēkšanas. Atspējo šo ja saskaries ar atskaņošanas problēmām.", + "ButtonSyncPlay": "SyncPlay" } From ce830d718af7e52dd205540a720f53bbc92be953 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:53:18 +0000 Subject: [PATCH 088/131] Translated using Weblate (Marathi) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/mr/ --- src/strings/mr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/mr.json b/src/strings/mr.json index 381c609a9e..105ac4ec35 100644 --- a/src/strings/mr.json +++ b/src/strings/mr.json @@ -97,5 +97,6 @@ "ButtonRemove": "काढून टाका", "ButtonPreviousTrack": "मागचा ट्रॅक", "ButtonPlay": "प्ले", - "ButtonPause": "पॉझ" + "ButtonPause": "पॉझ", + "ButtonSyncPlay": "SyncPlay" } From 356e9976fbeaee8bda984396b79a483a0655e256 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:47:39 +0000 Subject: [PATCH 089/131] Translated using Weblate (Urdu (Pakistan)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ur_PK/ --- src/strings/ur_PK.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ur_PK.json b/src/strings/ur_PK.json index 0967ef424b..2942bba2a6 100644 --- a/src/strings/ur_PK.json +++ b/src/strings/ur_PK.json @@ -1 +1,3 @@ -{} +{ + "ButtonSyncPlay": "SyncPlay" +} From 1d2acaa17f18147089de0714ebd8622b38bbdcb6 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:48:49 +0000 Subject: [PATCH 090/131] Translated using Weblate (Esperanto) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/eo/ --- src/strings/eo.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/eo.json b/src/strings/eo.json index 5f0e658efa..8c7fe70c07 100644 --- a/src/strings/eo.json +++ b/src/strings/eo.json @@ -1,5 +1,6 @@ { "AddToCollection": "Aldoni al kolekto", "Actor": "Aktoro", - "Absolute": "Absoluta" + "Absolute": "Absoluta", + "ButtonSyncPlay": "SyncPlay" } From 054187d709853fe7cc8991f6483f1b6ab56da9da Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:55:12 +0000 Subject: [PATCH 091/131] Translated using Weblate (Pirate) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pr/ --- src/strings/pr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pr.json b/src/strings/pr.json index 20dc534f54..b58b0cd508 100644 --- a/src/strings/pr.json +++ b/src/strings/pr.json @@ -22,5 +22,6 @@ "HeaderCastCrew": "Mateys", "Add": "Upend", "Actor": "Privateer", - "AccessRestrictedTryAgainLater": "Ye arn't appearin' on the list o' the livin'!" + "AccessRestrictedTryAgainLater": "Ye arn't appearin' on the list o' the livin'!", + "ButtonSyncPlay": "SyncPlay" } From 61862a74eb66410d76233a9f31dc5848662069f5 Mon Sep 17 00:00:00 2001 From: lelamamalgache Date: Fri, 26 Jun 2020 15:43:43 +0000 Subject: [PATCH 092/131] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 29ef1a163d..7f1b40241d 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -1548,5 +1548,6 @@ "EnableBlurhash": "Habilitar marcadores de posición borrosos para imágenes", "ShowMore": "Mostrar más", "ShowLess": "Mostrar menos", - "EnableBlurhashHelp": "Las imágenes que aún se están cargando se mostrarán con un marcador de posición borroso" + "EnableBlurhashHelp": "Las imágenes que aún se están cargando se mostrarán con un marcador de posición borroso", + "ButtonSyncPlay": "SyncPlay" } From 9a5e79b4a9235e623192fd830561773e87117fb0 Mon Sep 17 00:00:00 2001 From: chanh0 Date: Sat, 27 Jun 2020 08:32:57 +0000 Subject: [PATCH 093/131] Translated using Weblate (Chinese (Hong Kong)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant_HK/ --- src/strings/zh-hk.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 3665b07e16..74d25e6b08 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -497,5 +497,11 @@ "DownloadsValue": "下載數目 {0}", "Download": "下載", "DisplayInMyMedia": "在主頁顯示", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "ButtonDown": "向下", + "BurnSubtitlesHelp": "確定若服務器對視頻進行轉碼時是否嵌入字幕。 關閉這功能將使用更少時間。 選擇'自動'可嵌入基於圖像的格式字幕(VOBSUB,PGS,SUB,IDX等)和某些ASS或SSA字幕。", + "BrowsePluginCatalogMessage": "瀏覽我們的插件目錄以查看可用的插件。", + "BoxRear": "盒裝(背面)", + "BoxSet": "套裝", + "Box": "盒裝" } From 4a3db58ec12f4620a25cf8d65d6bf049210348de Mon Sep 17 00:00:00 2001 From: de1eted <1.deleted@gmail.com> Date: Sat, 27 Jun 2020 16:36:23 +0000 Subject: [PATCH 094/131] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index d98d76079b..6930855adc 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1504,7 +1504,7 @@ "MessageUnauthorizedUser": "В настоящее время у вас нет доступа к серверу. Пожалуйста, свяжитесь с администратором сервера для получения дополнительной информации.", "HeaderFavoritePlaylists": "Избранные плей-листы", "LabelRequireHttpsHelp": "Если этот флажок установлен, сервер будет автоматически перенаправлять все запросы через HTTP на HTTPS. Это не имеет никакого эффекта, если сервер не слушает HTTPS.", - "LabelEnableHttpsHelp": "Позволяет серверу слушать сконфигурированный HTTPS-порт. Действительный сертификат также должен быть сконфигурирован для того, чтобы это вступило в силу.", + "LabelEnableHttpsHelp": "Позволяет серверу слушать HTTPS-порт. Для работы необходим действующий сертификат.", "ApiKeysCaption": "Список действующих текущих API-ключей", "TabDVR": "DVR", "SaveChanges": "Сохранить изменения", @@ -1545,7 +1545,7 @@ "LabelSyncPlayPlaybackDiff": "Разница времени воспроизведения:", "MillisecondsUnit": "мс", "LabelSyncPlayTimeOffset": "Сдвиг времени относительно сервера:", - "SyncPlayAccessHelp": "Выберите уровень доступа данного пользователя к функциональности SyncPlay. SyncPlay позволяет синхронизировать воспроизведение с другими устройствами.", + "SyncPlayAccessHelp": "Выберите уровень доступа данного пользователя к функции SyncPlay. SyncPlay позволяет синхронизировать воспроизведение с другими устройствами.", "MessageSyncPlayErrorMedia": "Не удалось включить SyncPlay! Ошибка медиаданных.", "MessageSyncPlayErrorMissingSession": "Не удалось включить SyncPlay! Отсутствует сеанс.", "MessageSyncPlayErrorNoActivePlayer": "Активный проигрыватель не найден. SyncPlay был отключен.", @@ -1553,5 +1553,19 @@ "ShowLess": "Показать меньше", "EnableBlurhashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с размытым заполнением", "EnableBlurhash": "Включить размытые заполнители для изображений", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "ButtonCast": "В ролях", + "TabRepositories": "Репозитории", + "MessageNoGenresAvailable": "Разрешить поставщикам метаданных получать жанры из интернета.", + "MessageAddRepository": "Если вы хотите добавить репозиторий, нажмите кнопку рядом с заголовком и заполните необходимую информацию.", + "LabelRepositoryNameHelp": "Имя репозитория для показа на этом сервере.", + "LabelRepositoryName": "Название репозитория", + "LabelRepositoryUrlHelp": "Расположение манифеста добавляемого репозитория.", + "LabelRepositoryUrl": "URL репозитория", + "HeaderNewRepository": "Новый репозиторий", + "MessageNoRepositories": "Репозитории отсутствуют.", + "EnableFasterAnimationsHelp": "Использовать ускоренную анимацию и переходы", + "EnableFasterAnimations": "Ускоренная анимация", + "EnableDecodingColorDepth10Vp9": "Включить аппаратный декодер VP9 10-Bit", + "EnableDecodingColorDepth10Hevc": "Включить аппаратный декодер HEVC 10-Bit" } From 56cc24588dd145b573d2a991e98976f90bdfd7c6 Mon Sep 17 00:00:00 2001 From: chanh0 Date: Sat, 27 Jun 2020 15:57:12 +0000 Subject: [PATCH 095/131] Translated using Weblate (Chinese (Traditional)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hant/ --- src/strings/zh-tw.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index f1fe8df4f4..5fd153217f 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1015,7 +1015,7 @@ "LabelEnableDlnaServerHelp": "允許網絡上的 UPnP 設備瀏覽和播放內容。", "LabelEnableHardwareDecodingFor": "為以下啟用硬體解碼:", "LabelEpisodeNumber": "集:", - "LabelBaseUrlHelp": "您可以在此處新增自訂路徑來進入伺服器。", + "LabelBaseUrlHelp": "您可以在此處自訂伺服器URL路徑的子目錄。", "LabelExtractChaptersDuringLibraryScan": "於媒體庫掃描時擷取章節圖片", "LabelHttpsPort": "本地 HTTPS 端口:", "LabelFailed": "失敗", From 15c34e51b0aaa9740f60580363ae1f60bc0425b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Sat, 27 Jun 2020 19:35:18 +0000 Subject: [PATCH 096/131] 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 5083c42e83..c735f5360b 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1648,5 +1648,6 @@ "LabelRepositoryUrlHelp": "Umístění manifestu repozitáře, který chcete zahrnout.", "LabelRepositoryUrl": "URL adresa repozitáře", "HeaderNewRepository": "Nový repozitář", - "MessageNoRepositories": "Neexistují žádné repozitáře." + "MessageNoRepositories": "Neexistují žádné repozitáře.", + "ButtonPlayer": "Přehrávač" } From 46b4b64791b668946f5bde48f8bc297f45535f00 Mon Sep 17 00:00:00 2001 From: millallo Date: Sat, 27 Jun 2020 20:38:30 +0000 Subject: [PATCH 097/131] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/it.json b/src/strings/it.json index 5b20ea184e..838130ab5f 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1567,5 +1567,6 @@ "LabelRepositoryUrlHelp": "URL del repository manifest che si vuole includere.", "LabelRepositoryUrl": "URL Repository", "HeaderNewRepository": "Nuovo Repository", - "MessageNoRepositories": "Nessun repository." + "MessageNoRepositories": "Nessun repository.", + "ButtonPlayer": "Player" } From 233c657dca9353529c1cecb7f464c78211ab9be6 Mon Sep 17 00:00:00 2001 From: Vitorvlv Date: Sat, 27 Jun 2020 20:58:28 +0000 Subject: [PATCH 098/131] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 98f4879b60..619565d52b 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1567,5 +1567,6 @@ "LabelRepositoryUrlHelp": "A localização do manifesto do repositório que você deseja incluir.", "LabelRepositoryUrl": "URL do repositório", "HeaderNewRepository": "Novo repositório", - "MessageNoRepositories": "Não há repositórios." + "MessageNoRepositories": "Não há repositórios.", + "ButtonPlayer": "Reprodutor" } From ec127772e6a4ffe6ac7f7a1e15feed9dad7418f3 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Sat, 27 Jun 2020 22:42:04 +0000 Subject: [PATCH 099/131] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 2a1e6e61a9..2400b142ba 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1568,5 +1568,6 @@ "MessageAddRepository": "Pokiaľ chcete pridať repozitár, kliknite na tlačidlo vedľa hlavičky a vyplňte požadované informácie.", "LabelRepositoryNameHelp": "Vlastné pomenovanie, ktoré slúži na odlíšenie tohto repozitára od ostatných repozitárov pridaných na vašom serveri.", "LabelRepositoryName": "Názov repozitára", - "LabelRepositoryUrlHelp": "Umiestnenie manifestu repozitára, ktorý chcete zahrnúť." + "LabelRepositoryUrlHelp": "Umiestnenie manifestu repozitára, ktorý chcete zahrnúť.", + "ButtonPlayer": "Prehrávač" } From 45891f7b86337d25341de41930f563ad83307dc8 Mon Sep 17 00:00:00 2001 From: Gonzalo Seguel Date: Sun, 28 Jun 2020 03:39:39 +0000 Subject: [PATCH 100/131] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_MX/ --- src/strings/es-mx.json | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index ef68bcd488..c22aca4946 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -1066,7 +1066,7 @@ "OptionReportByteRangeSeekingWhenTranscodingHelp": "Esto es requerido para algunos dispositivos que no pueden hacer búsquedas de tiempo muy bien.", "OptionRequirePerfectSubtitleMatch": "Solo descargar subtítulos que coincidan perfectamente con mis archivos de video", "OptionRequirePerfectSubtitleMatchHelp": "Solicitar una coincidencia perfecta filtrará los subtítulos para incluir solo aquellos que han sido probados y verificados exactamente con tu archivo de video. Desmarcar esta opción incrementará las probabilidades de que se descarguen subtítulos, pero incrementará las posibilidades de obtener subtítulos mal sincronizados o con texto incorrecto.", - "OptionResElement": "elemento res", + "OptionResElement": "Elemento res", "OptionResumable": "Reanudable", "OptionRuntime": "Duración", "OptionSaturday": "Sábado", @@ -1424,7 +1424,7 @@ "ValueSeriesCount": "{0} series", "Vertical": "Vertical", "OptionThumb": "Miniatura", - "OptionThumbCard": "Tarjeta miniatura", + "OptionThumbCard": "Miniatura", "HeaderFavoriteBooks": "Libros favoritos", "LabelPleaseRestart": "Los cambios tendrán efecto después de recargar manualmente el cliente web.", "LabelPlayMethod": "Método de reproducción:", @@ -1487,7 +1487,7 @@ "HeaderFavoritePeople": "Personas favoritas", "Episode": "Episodio", "ClientSettings": "Configuración del cliente", - "BoxSet": "Box Set", + "BoxSet": "Colección", "AskAdminToCreateLibrary": "Pide a un administrador crear una biblioteca.", "Artist": "Artista", "AllowFfmpegThrottlingHelp": "Cuando una transcodificación o remuxeado se adelanta lo suficiente de la posición de reproducción actual, se pausa el proceso para que consuma menos recursos. Esto es más útil cuando se mira sin buscar con frecuencia. Apaga esto si experimentas problemas de reproducción.", @@ -1521,7 +1521,7 @@ "HeaderHttpsSettings": "Opciones HTTPS", "HeaderDVR": "DVR", "ApiKeysCaption": "Lista de claves API actualmente habilitadas", - "SyncPlayAccessHelp": "Selecciona el nivel de acceso que este usuario tiene a la función SyncPlay. SyncPlay permite sincronizar la reproducción con otros dispositivos.", + "SyncPlayAccessHelp": "Selecciona el nivel de acceso que este usuario tiene en la función SyncPlay. SyncPlay permite sincronizar la reproducción con otros dispositivos.", "MessageSyncPlayErrorMedia": "¡Fallo al activar SyncPlay! Error en el archivo de medios.", "MessageSyncPlayErrorMissingSession": "¡Fallo al activar SyncPlay! Falta la sesión.", "MessageSyncPlayErrorNoActivePlayer": "No se ha encontrado ningún reproductor activo. SyncPlay ha sido desactivado.", @@ -1553,5 +1553,24 @@ "HeaderSyncPlaySelectGroup": "Unirse a un grupo", "EnableDetailsBannerHelp": "Mostrar una imagen banner en la parte superior de la página de detalles del elemento.", "EnableDetailsBanner": "Banner de detalles", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "ButtonPlayer": "Reproductor", + "ButtonCast": "Elenco", + "EnableBlurhashHelp": "Imágenes que aún están siendo cargadas serán mostradas difuminadas", + "EnableBlurhash": "Habilitar imágenes de fondo difuminadas", + "TabRepositories": "Repositorios", + "ShowMore": "Mostrar más", + "ShowLess": "Mostrar menos", + "MessageNoGenresAvailable": "Habilitar algunos proveedores de metadatos para traer los generos desde internet.", + "MessageAddRepository": "Si desea agregar un repositorio, haz click en el botón junto al encabezado y completa la información requerida.", + "LabelRepositoryNameHelp": "Un nombre personalizado para distinguir este repositorio de otros añadidos a tu servidor.", + "LabelRepositoryName": "Nombre del repositorio", + "LabelRepositoryUrlHelp": "La ubicación del repositorio que desea agregar.", + "LabelRepositoryUrl": "URL del repositorio", + "HeaderNewRepository": "Nuevo repositorio", + "MessageNoRepositories": "Sin repositorios.", + "EnableFasterAnimationsHelp": "Usar animaciones y transiciones más rapidas", + "EnableFasterAnimations": "Animaciones más rápidas", + "EnableDecodingColorDepth10Vp9": "Habilitar la decodificación por hardware de 10 bit para VP9", + "EnableDecodingColorDepth10Hevc": "Habilitar la decodificación por hardware de 10 bit para HEVC" } From a9f57a479c31c8bb785e26bd665acaa27e400a36 Mon Sep 17 00:00:00 2001 From: Gonzalo Seguel Date: Sun, 28 Jun 2020 03:34:47 +0000 Subject: [PATCH 101/131] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 35d4753e5d..ed539e4a14 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1525,7 +1525,7 @@ "EnableBlurhash": "Mostrar una representación de las imágenes mientras cargan", "EnableBlurhashHelp": "Aparecerá una representación de los colores de las imágenes antes de que terminen de cargar", "HeaderDVR": "DVR", - "SyncPlayAccessHelp": "Selecciona los permisos de este usuario para utilizar SyncPlay. SyncPlay te permite sincronizar la reproducción entre varios dispositivos.", + "SyncPlayAccessHelp": "Selecciona el nivel de acceso de este usuario para utilizar SyncPlay. SyncPlay te permite sincronizar la reproducción entre varios dispositivos.", "MessageSyncPlayErrorMedia": "¡No se pudo activar SyncPlay! Error de medio.", "MessageSyncPlayErrorMissingSession": "¡No se pudo activar SyncPlay! Sesión desconectada.", "MessageSyncPlayErrorNoActivePlayer": "No hay reproductor activo. SyncPlay ha sido desactivado.", @@ -1562,7 +1562,15 @@ "ButtonSyncPlay": "SyncPlay", "ButtonCast": "Enviar", "MessageNoGenresAvailable": "Permitir a algunos proveedores de metadatos extraer géneros de Internet.", - "EnableDecodingColorDepth10Vp9": "Habilite la decodificación por hardware de 10 bits para Vp9", + "EnableDecodingColorDepth10Vp9": "Habilite la decodificación por hardware de 10 bits para VP9", "EnableDecodingColorDepth10Hevc": "Habilite la decodificación por hardware de 10 bits para HEVC", - "ButtonPlayer": "Reproductor" + "ButtonPlayer": "Reproductor", + "TabRepositories": "Repositorios", + "MessageAddRepository": "Si desea agregar un repositorio, haga click en el botón cerca del encabezado y complete la información requerida.", + "LabelRepositoryNameHelp": "Un nombre personalizado para distinguir este repositorio de otros agregados a su servidor.", + "LabelRepositoryName": "Nombre del repositorio", + "LabelRepositoryUrlHelp": "La ubicación del repositorio que desea incluir.", + "LabelRepositoryUrl": "URL del repositorio", + "HeaderNewRepository": "Nuevo repositorio", + "MessageNoRepositories": "Sin repositorios." } From d916bc19f8e7f9ce88e4e0fe0ea6cdd2e7b60613 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 28 Jun 2020 07:20:44 +0200 Subject: [PATCH 102/131] Cleanup CSS --- src/assets/css/librarybrowser.css | 2 +- src/controllers/itemDetails/index.js | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 219599e804..460585ae61 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -671,7 +671,7 @@ margin: 1em 0; } -.layout-mobile .detailimg-hidemobile { +.layout-mobile .detailImageContainer { display: none; } diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index c9677f77c0..45c43c19be 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -712,8 +712,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderDetailImage(elem, item, imageLoader) { - elem.classList.add('detailimg-hidemobile'); - const itemArray = []; itemArray.push(item); const cardHtml = cardBuilder.getCardsHtml(itemArray, { From dccaa34d584f1bccdd5521a9e295eb7fcecf5de8 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 28 Jun 2020 19:13:50 +0300 Subject: [PATCH 103/131] Fix SubtitleSync slider lagging --- src/components/subtitlesync/subtitlesync.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index fb986ec348..4f78cf52ae 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -87,14 +87,6 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', getOffsetFromPercentage(this.value)); }); - subtitleSyncSlider.addEventListener('touchmove', function () { - // set new offset - playbackManager.setSubtitleOffset(getOffsetFromPercentage(this.value), player); - // synchronize with textField value - subtitleSyncTextField.updateOffset( - getOffsetFromPercentage(this.value)); - }); - subtitleSyncSlider.getBubbleHtml = function (value) { var newOffset = getOffsetFromPercentage(value); return '

' + From 70b0fbafd097e224b65e9b7bc5e39c595d5f7a41 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 28 Jun 2020 19:15:53 +0300 Subject: [PATCH 104/131] Add minimum width for SubtitleSync dialog --- src/components/subtitlesync/subtitlesync.css | 12 +++++++++--- .../subtitlesync/subtitlesync.template.html | 12 +++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.css b/src/components/subtitlesync/subtitlesync.css index 2ff8a3e905..a63d9915bb 100644 --- a/src/components/subtitlesync/subtitlesync.css +++ b/src/components/subtitlesync/subtitlesync.css @@ -1,12 +1,18 @@ +.subtitleSync { + position: absolute; + width: 100%; +} + .subtitleSyncContainer { width: 40%; - margin-left: 30%; - margin-right: 30%; + min-width: 18em; + margin-left: auto; + margin-right: auto; height: 4.2em; background: rgba(28, 28, 28, 0.8); border-radius: 0.3em; color: #fff; - position: absolute; + position: relative; } .subtitleSync-closeButton { diff --git a/src/components/subtitlesync/subtitlesync.template.html b/src/components/subtitlesync/subtitlesync.template.html index 4ca039aa03..48ac91b6a3 100644 --- a/src/components/subtitlesync/subtitlesync.template.html +++ b/src/components/subtitlesync/subtitlesync.template.html @@ -1,7 +1,9 @@ -
- -
0s
-
- +
+
+ +
0s
+
+ +
From 1b12308f72f4eec66a96ca3051ffce850a26cf31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Sun, 28 Jun 2020 09:15:44 +0000 Subject: [PATCH 105/131] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index c735f5360b..013cb5543c 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1200,7 +1200,7 @@ "Wednesday": "Středa", "WelcomeToProject": "Vítejte v Jellyfin!", "WizardCompleted": "To je zatím vše, co potřebujeme. Server Jellyfin začal shromažďovat informace o vaší knihovně médií. Vyzkoušejte některé z našich aplikací a potom klikněte na tlačítko Dokončit pro zobrazení nástěnky.", - "Writer": "Napsal", + "Writer": "Scénárista", "XmlDocumentAttributeListHelp": "Tyto atributy jsou použity na kořenový prvek každé XML odpovědi.", "XmlTvKidsCategoriesHelp": "Programy s těmito kategoriemi budou zobrazeny jako programy pro děti. Více kategorií oddělte \"|\".", "XmlTvMovieCategoriesHelp": "Programy s těmito kategoriemi budou zobrazeny jako filmy. Více kategorií oddělte \"|\".", @@ -1231,7 +1231,7 @@ "AutoBasedOnLanguageSetting": "Automaticky (na základě jazykového nastavení)", "Banner": "Výřez plakátu", "BestFit": "Nejvhodnější", - "Blacklist": "Černá listina", + "Blacklist": "Zakázat vše kromě výjimek", "BobAndWeaveWithHelp": "Bob and weave (vyšší kvalita, ale pomalejší)", "Browse": "Procházet", "BurnSubtitlesHelp": "Určuje, zda má server při překódování videa vypálit titulky do obrazu. Tato funkce má velký negativní vliv na výkon. Chcete-li vypálit grafické formáty titulků (VOBSUB, PGS, SUB, IDX, atd.) a některé titulky ASS nebo SSA, vyberte možnost Automaticky.", @@ -1488,7 +1488,7 @@ "Vertical": "Svisle", "VideoRange": "Rozsah videa", "ViewPlaybackInfo": "Zobrazení informací o přehrávání", - "Whitelist": "Bílá listina", + "Whitelist": "Povolit vše kromě výjimek", "HeaderHome": "Domů", "DashboardOperatingSystem": "Operační systém: {0}", "DashboardArchitecture": "Architektura: {0}", @@ -1649,5 +1649,6 @@ "LabelRepositoryUrl": "URL adresa repozitáře", "HeaderNewRepository": "Nový repozitář", "MessageNoRepositories": "Neexistují žádné repozitáře.", - "ButtonPlayer": "Přehrávač" + "ButtonPlayer": "Přehrávač", + "Writers": "Scénáristé" } From 9fe6956445de6897ba29d8671ed5d0d39169b73a Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Sun, 28 Jun 2020 14:35:13 +0000 Subject: [PATCH 106/131] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 2400b142ba..f9ba8c9a95 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1569,5 +1569,6 @@ "LabelRepositoryNameHelp": "Vlastné pomenovanie, ktoré slúži na odlíšenie tohto repozitára od ostatných repozitárov pridaných na vašom serveri.", "LabelRepositoryName": "Názov repozitára", "LabelRepositoryUrlHelp": "Umiestnenie manifestu repozitára, ktorý chcete zahrnúť.", - "ButtonPlayer": "Prehrávač" + "ButtonPlayer": "Prehrávač", + "Writers": "Scenáristi" } From 85cc7eaea2c2f94c6375a10884b3f77329c046b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gregor=20Gabrov=C5=A1ek?= Date: Sun, 28 Jun 2020 13:38:51 +0000 Subject: [PATCH 107/131] Translated using Weblate (Slovenian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sl/ --- src/strings/sl-si.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 106b6f5bdc..14bf6aa598 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -77,7 +77,7 @@ "Alerts": "Alarmi", "All": "Vse", "AllChannels": "Vsi kanali", - "AllComplexFormats": "Vsi kompleksni formati (ASS, SSA, VOBSUB, PGS, SUB/IDX, itd.)", + "AllComplexFormats": "Vsi kompleksni formati (ASS, SSA, VOBSUB, PGS, SUB, IDX, itd.)", "AllEpisodes": "Vse epizode", "AllLanguages": "Vsi jeziki", "AllLibraries": "Vse knjižnice", From 891cc78bdb53a7821330cbe5764b6680dd5235f5 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 28 Jun 2020 20:50:11 +0300 Subject: [PATCH 108/131] Prevent OSD from being hidden when user works with UI --- src/controllers/playback/videoosd.js | 49 +++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 9be5660b4a..85499dc537 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -333,13 +333,21 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med osdPoster.innerHTML = ''; } + let osdLockCount = 0; + function showOsd() { slideDownToShow(headerElement); showMainOsdControls(); - startOsdHideTimer(); + if (!osdLockCount) { + startOsdHideTimer(); + } } function hideOsd() { + if (osdLockCount) { + return; + } + slideUpToHide(headerElement); hideMainOsdControls(); } @@ -352,6 +360,19 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med } } + function lockOsd() { + osdLockCount++; + stopOsdHideTimer(); + } + + function unlockOsd() { + osdLockCount--; + // Restart hide timer if OSD is currently visible + if (currentVisibleMenu && !osdLockCount) { + startOsdHideTimer(); + } + } + function startOsdHideTimer() { stopOsdHideTimer(); osdHideTimeout = setTimeout(hideOsd, 3e3); @@ -1196,10 +1217,20 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med function onWindowMouseDown(e) { clickedElement = e.srcElement; + lockOsd(); + } + + function onWindowMouseUp() { + unlockOsd(); } function onWindowTouchStart(e) { clickedElement = e.srcElement; + lockOsd(); + } + + function onWindowTouchEnd() { + unlockOsd(); } function getImgUrl(item, chapter, index, maxWidth, apiClient) { @@ -1336,9 +1367,17 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med dom.addEventListener(window, window.PointerEvent ? 'pointerdown' : 'mousedown', onWindowMouseDown, { passive: true }); + dom.addEventListener(window, window.PointerEvent ? 'pointerup' : 'mouseup', onWindowMouseUp, { + passive: true + }); dom.addEventListener(window, 'touchstart', onWindowTouchStart, { passive: true }); + ['touchend', 'touchcancel'].forEach((event) => { + dom.addEventListener(window, event, onWindowTouchEnd, { + passive: true + }); + }); } catch (e) { require(['appRouter'], function(appRouter) { appRouter.goHome(); @@ -1356,9 +1395,17 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med dom.removeEventListener(window, window.PointerEvent ? 'pointerdown' : 'mousedown', onWindowMouseDown, { passive: true }); + dom.removeEventListener(window, window.PointerEvent ? 'pointerup' : 'mouseup', onWindowMouseUp, { + passive: true + }); dom.removeEventListener(window, 'touchstart', onWindowTouchStart, { passive: true }); + ['touchend', 'touchcancel'].forEach((event) => { + dom.removeEventListener(window, event, onWindowTouchEnd, { + passive: true + }); + }); stopOsdHideTimer(); headerElement.classList.remove('osdHeader'); headerElement.classList.remove('osdHeader-hidden'); From a91afee7b69bf6cb6f33a7aa557ce30826aa327e Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 28 Jun 2020 22:04:30 +0300 Subject: [PATCH 109/131] Fix Firefox subtitle offset --- 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 f8ba7c415c..cc312bb956 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -649,7 +649,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa function setTrackEventsSubtitleOffset(trackEvents, offsetValue) { if (Array.isArray(trackEvents)) { - offsetValue = updateCurrentTrackOffset(offsetValue); + offsetValue = updateCurrentTrackOffset(offsetValue) * 1e7; // ticks trackEvents.forEach(function(trackEvent) { trackEvent.StartPositionTicks -= offsetValue; trackEvent.EndPositionTicks -= offsetValue; From ff073ea4ed43ed179c4e300457311237161481ac Mon Sep 17 00:00:00 2001 From: moltrabella Date: Sun, 28 Jun 2020 18:19:42 +0000 Subject: [PATCH 110/131] 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 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index dae22366a4..b60e917112 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1648,5 +1648,7 @@ "Runtime": "Tiempo de ejecución", "RunAtStartup": "Ejecutar en el arranque", "Rewind": "Rebobinar", - "ResumeAt": "Reanudar desde {0}" + "ResumeAt": "Reanudar desde {0}", + "ButtonPlayer": "Reproductor", + "Writers": "Escritores" } From 39b412bb0635dd2c3dbedae23a3fa8859b8ec571 Mon Sep 17 00:00:00 2001 From: moltrabella Date: Sun, 28 Jun 2020 18:18:17 +0000 Subject: [PATCH 111/131] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/es.json b/src/strings/es.json index ed539e4a14..a19f28e57a 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1572,5 +1572,6 @@ "LabelRepositoryUrlHelp": "La ubicación del repositorio que desea incluir.", "LabelRepositoryUrl": "URL del repositorio", "HeaderNewRepository": "Nuevo repositorio", - "MessageNoRepositories": "Sin repositorios." + "MessageNoRepositories": "Sin repositorios.", + "Writers": "Escritores" } From 62a2f4b17d6d7e5c53a8903c0ab3f7cccc9d335a Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 28 Jun 2020 23:46:27 +0300 Subject: [PATCH 112/131] Rearrange keydown event handling --- src/components/subtitlesync/subtitlesync.js | 3 +++ src/controllers/playback/videoosd.js | 15 ++++++++++++--- src/scripts/keyboardNavigation.js | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index fb986ec348..c3c4b1bf69 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -65,6 +65,9 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', event.preventDefault(); } } + + // FIXME: TV layout will require special handling for navigation keys. But now field is not focusable + event.stopPropagation(); }); subtitleSyncTextField.blur = function() { diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 9be5660b4a..60ae60e254 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1080,7 +1080,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med */ var clickedElement; - function onWindowKeyDown(e) { + function onKeyDown(e) { clickedElement = e.srcElement; var key = keyboardnavigation.getKeyName(e); @@ -1194,6 +1194,13 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med } } + function onKeyDownCapture() { + // Restart hide timer if OSD is currently visible + if (currentVisibleMenu) { + showOsd(); + } + } + function onWindowMouseDown(e) { clickedElement = e.srcElement; } @@ -1330,7 +1337,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med }); showOsd(); inputManager.on(window, onInputCommand); - dom.addEventListener(window, 'keydown', onWindowKeyDown, { + document.addEventListener('keydown', onKeyDown); + dom.addEventListener(document, 'keydown', onKeyDownCapture, { capture: true }); dom.addEventListener(window, window.PointerEvent ? 'pointerdown' : 'mousedown', onWindowMouseDown, { @@ -1350,7 +1358,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med statsOverlay.enabled(false); } - dom.removeEventListener(window, 'keydown', onWindowKeyDown, { + document.removeEventListener('keydown', onKeyDown); + dom.removeEventListener(document, 'keydown', onKeyDownCapture, { capture: true }); dom.removeEventListener(window, window.PointerEvent ? 'pointerdown' : 'mousedown', onWindowMouseDown, { diff --git a/src/scripts/keyboardNavigation.js b/src/scripts/keyboardNavigation.js index 6664afed53..6543207fee 100644 --- a/src/scripts/keyboardNavigation.js +++ b/src/scripts/keyboardNavigation.js @@ -78,7 +78,7 @@ export function isNavigationKey(key) { } export function enable() { - document.addEventListener('keydown', function (e) { + window.addEventListener('keydown', function (e) { const key = getKeyName(e); // Ignore navigation keys for non-TV From 8e8d50a789d3a1c3847954f1ee964c3f87960b11 Mon Sep 17 00:00:00 2001 From: Vitorvlv Date: Sun, 28 Jun 2020 21:39:58 +0000 Subject: [PATCH 113/131] 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 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 619565d52b..331ac989e6 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1568,5 +1568,6 @@ "LabelRepositoryUrl": "URL do repositório", "HeaderNewRepository": "Novo repositório", "MessageNoRepositories": "Não há repositórios.", - "ButtonPlayer": "Reprodutor" + "ButtonPlayer": "Reprodutor", + "Writers": "Escritores" } From 33547e0d77b931612ee6e2addfee80a3f1697598 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 29 Jun 2020 11:20:57 +0200 Subject: [PATCH 114/131] Add defer to apploader script --- gulpfile.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index 84f4558e6a..8b407ec2aa 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -184,7 +184,12 @@ function copy(query) { function injectBundle() { return src(options.injectBundle.query, { base: './src/' }) .pipe(inject( - src(['src/scripts/apploader.js'], { read: false }, { base: './src/' }), { relative: true } + src(['src/scripts/apploader.js'], { read: false }, { base: './src/' }), { + relative: true, + transform: function (filepath) { + return ``; + } + } )) .pipe(dest('dist/')) .pipe(browserSync.stream()); From 3fcb8ed00ef28d3870fad748f9fce4386a20b3f8 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 29 Jun 2020 11:21:20 +0200 Subject: [PATCH 115/131] Add splash screen during app load --- src/index.html | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/src/index.html b/src/index.html index ed63ca1a98..d52be4346e 100644 --- a/src/index.html +++ b/src/index.html @@ -52,7 +52,7 @@ - + @@ -69,12 +69,19 @@ Jellyfin @@ -103,7 +136,9 @@
-
+
+ +
From 783d4764482e52268c07ea94a5d954efbb004dba Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 29 Jun 2020 11:48:55 +0200 Subject: [PATCH 116/131] Add async to scripts injected by appLoader --- src/scripts/apploader.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/scripts/apploader.js b/src/scripts/apploader.js index 0353c9535c..183b765d16 100644 --- a/src/scripts/apploader.js +++ b/src/scripts/apploader.js @@ -11,6 +11,7 @@ src += `?v=${self.dashboardVersion}`; } script.src = src; + script.setAttribute('async', ''); if (onload) { script.onload = onload; From a66291a33d6f69037134d6082b2c9984c89d1889 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Mon, 29 Jun 2020 13:03:31 +0300 Subject: [PATCH 117/131] Fix handling of keydown event by volume slider and videoosd --- src/controllers/playback/videoosd.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 60ae60e254..30ac22e654 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1319,9 +1319,11 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med var headerElement = document.querySelector('.skinHeader'); var osdBottomElement = document.querySelector('.videoOsdBottom-maincontrols'); + nowPlayingPositionSlider.enableKeyboardDragging(); + nowPlayingVolumeSlider.enableKeyboardDragging(); + if (layoutManager.tv) { nowPlayingPositionSlider.classList.add('focusable'); - nowPlayingPositionSlider.enableKeyboardDragging(); } view.addEventListener('viewbeforeshow', function (e) { @@ -1456,16 +1458,13 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med }, options); } - function setVolume() { - playbackManager.setVolume(this.value, currentPlayer); - } - view.querySelector('.buttonMute').addEventListener('click', function () { playbackManager.toggleMute(currentPlayer); }); - nowPlayingVolumeSlider.addEventListener('change', setVolume); - nowPlayingVolumeSlider.addEventListener('mousemove', setVolume); - nowPlayingVolumeSlider.addEventListener('touchmove', setVolume); + + nowPlayingVolumeSlider.addEventListener('input', (e) => { + playbackManager.setVolume(e.target.value, currentPlayer); + }); nowPlayingPositionSlider.addEventListener('change', function () { var player = currentPlayer; From 4d8c1bd7c610f7229a8fff7e9c19daa5b5ec84f1 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Mon, 29 Jun 2020 13:36:17 +0300 Subject: [PATCH 118/131] Keep slider progress, as it is updated on change event --- src/components/subtitlesync/subtitlesync.template.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/subtitlesync/subtitlesync.template.html b/src/components/subtitlesync/subtitlesync.template.html index 48ac91b6a3..fe202ebf60 100644 --- a/src/components/subtitlesync/subtitlesync.template.html +++ b/src/components/subtitlesync/subtitlesync.template.html @@ -3,7 +3,7 @@
0s
- +

From 1c2dbc4c27e92ad9ef6ed30b932a488f6a1bb0e9 Mon Sep 17 00:00:00 2001 From: crobibero Date: Mon, 29 Jun 2020 09:25:50 -0600 Subject: [PATCH 119/131] bump jellyfin-apiclient --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d6efc241fc..1e3e258c31 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "hls.js": "^0.13.1", "howler": "^2.2.0", "intersection-observer": "^0.10.0", - "jellyfin-apiclient": "^1.2.2", + "jellyfin-apiclient": "^1.3.0", "jellyfin-noto": "https://github.com/jellyfin/jellyfin-noto", "jquery": "^3.5.1", "jstree": "^3.3.10", diff --git a/yarn.lock b/yarn.lock index 3696566154..fab1967eff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6273,10 +6273,10 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -jellyfin-apiclient@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jellyfin-apiclient/-/jellyfin-apiclient-1.2.2.tgz#64f058320603df02d926f4c1b929b42c6acc4527" - integrity sha512-UwC56orm4darWlnNQJ1nbKo+W8ywlheJSJC6d9zm06CslYtOc/Dkv9kz2PadQEh+6EiBsB0hAZCc7FJ9ahOoGQ== +jellyfin-apiclient@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jellyfin-apiclient/-/jellyfin-apiclient-1.3.0.tgz#428ec998ef17a755a7c07f6284f6eb4a56a63242" + integrity sha512-jq+erwtg175Vg/VnxPdMIc+R2e0+t22T42tJiirMU84xBgk+h3maJar7Umr5NHyfkbt6J8d0TmR2O7nXwVpR+w== "jellyfin-noto@https://github.com/jellyfin/jellyfin-noto": version "1.0.3" From 5924c17c7267ef96760c4fa978a4caa685ac97a4 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 29 Jun 2020 23:38:46 +0200 Subject: [PATCH 120/131] Improve blurhash performance --- src/components/images/imageLoader.js | 68 ++++++++++++---------------- src/components/images/style.css | 1 - 2 files changed, 28 insertions(+), 41 deletions(-) diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index f7183515c5..46e1c30e8a 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -12,7 +12,7 @@ import 'css!./style'; fillImageElement(elem, source); } - async function itemBlurhashing(target, blurhashstr) { + function itemBlurhashing(target, blurhashstr) { if (blurhash.isBlurhashValid(blurhashstr)) { // Although the default values recommended by Blurhash developers is 32x32, a size of 18x18 seems to be the sweet spot for us, // improving the performance and reducing the memory usage, while retaining almost full blur quality. @@ -36,27 +36,21 @@ import 'css!./style'; imgData.data.set(pixels); ctx.putImageData(imgData, 0, 0); - let child = target.appendChild(canvas); + let child = target.parentNode.insertBefore(canvas, target); child.classList.add('blurhash-canvas'); - child.style.opacity = 1; if (userSettings.enableFastFadein()) { child.classList.add('lazy-blurhash-fadein-fast'); } else { child.classList.add('lazy-blurhash-fadein'); } + child.style.opacity = 1; + target.classList.add('blurhashed'); target.removeAttribute('data-blurhash'); } } - function switchCanvas(elem) { - let child = elem.getElementsByClassName('blurhash-canvas')[0]; - if (child) { - child.style.opacity = elem.getAttribute('data-src') ? 1 : 0; - } - } - export function fillImage(entry) { if (!entry) { throw new Error('entry cannot be null'); @@ -66,23 +60,16 @@ import 'css!./style'; if (target) { source = target.getAttribute('data-src'); - var blurhashstr = target.getAttribute('data-blurhash'); } else { source = entry; } - if (userSettings.enableBlurhash()) { - if (!target.classList.contains('blurhashed', 'non-blurhashable') && blurhashstr) { - itemBlurhashing(target, blurhashstr); - } else if (!blurhashstr && !target.classList.contains('blurhashed')) { - target.classList.add('non-blurhashable'); - } - } - if (entry.intersectionRatio > 0) { if (source) fillImageElement(target, source); } else if (!source) { - emptyImageElement(target); + requestAnimationFrame(() => { + emptyImageElement(target); + }); } } @@ -94,29 +81,24 @@ import 'css!./style'; let preloaderImg = new Image(); preloaderImg.src = url; - // This is necessary here, so changing blurhash settings without reloading the page works - if (!userSettings.enableBlurhash() || elem.classList.contains('non-blurhashable')) { - elem.classList.add('lazy-hidden'); - } + elem.classList.add('lazy-hidden'); preloaderImg.addEventListener('load', () => { - if (elem.tagName !== 'IMG') { - elem.style.backgroundImage = "url('" + url + "')"; - } else { - elem.setAttribute('src', url); - } - elem.removeAttribute('data-src'); + requestAnimationFrame(() => { + if (elem.tagName !== 'IMG') { + elem.style.backgroundImage = "url('" + url + "')"; + } else { + elem.setAttribute('src', url); + } + elem.removeAttribute('data-src'); - if (elem.classList.contains('non-blurhashable') || !userSettings.enableBlurhash()) { elem.classList.remove('lazy-hidden'); if (userSettings.enableFastFadein()) { elem.classList.add('lazy-image-fadein-fast'); } else { elem.classList.add('lazy-image-fadein'); } - } else { - switchCanvas(elem); - } + }); }); } @@ -132,15 +114,21 @@ import 'css!./style'; } elem.setAttribute('data-src', url); - if (elem.classList.contains('non-blurhashable') || !userSettings.enableBlurhash()) { - elem.classList.remove('lazy-image-fadein-fast', 'lazy-image-fadein'); - elem.classList.add('lazy-hidden'); - } else { - switchCanvas(elem); - } + elem.classList.remove('lazy-image-fadein-fast', 'lazy-image-fadein'); + elem.classList.add('lazy-hidden'); } export function lazyChildren(elem) { + for (const lazyElem of elem.getElementsByClassName('lazy')) { + if (userSettings.enableBlurhash()) { + var blurhashstr = lazyElem.getAttribute('data-blurhash'); + if (!lazyElem.classList.contains('blurhashed', 'non-blurhashable') && blurhashstr) { + itemBlurhashing(lazyElem, blurhashstr); + } else if (!blurhashstr && !lazyElem.classList.contains('blurhashed')) { + lazyElem.classList.add('non-blurhashable'); + } + } + } lazyLoader.lazyChildren(elem, fillImage); } diff --git a/src/components/images/style.css b/src/components/images/style.css index 2b09da2da4..e4c706221f 100644 --- a/src/components/images/style.css +++ b/src/components/images/style.css @@ -28,6 +28,5 @@ left: 0; width: 100%; height: 100%; - z-index: 100; pointer-events: none; } From 0361a2d58d213c819717154ae111fd1382e29d96 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 29 Jun 2020 23:57:05 +0200 Subject: [PATCH 121/131] Fix blurhash entry animation --- src/components/images/imageLoader.js | 22 +++++++++++----------- src/components/images/style.css | 14 ++++++++++++-- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index 46e1c30e8a..b153331801 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -36,18 +36,18 @@ import 'css!./style'; imgData.data.set(pixels); ctx.putImageData(imgData, 0, 0); - let child = target.parentNode.insertBefore(canvas, target); - child.classList.add('blurhash-canvas'); - if (userSettings.enableFastFadein()) { - child.classList.add('lazy-blurhash-fadein-fast'); - } else { - child.classList.add('lazy-blurhash-fadein'); - } + requestAnimationFrame(() => { + canvas.classList.add('blurhash-canvas'); + if (userSettings.enableFastFadein()) { + canvas.classList.add('lazy-blurhash-fadein-fast'); + } else { + canvas.classList.add('lazy-blurhash-fadein'); + } - child.style.opacity = 1; - - target.classList.add('blurhashed'); - target.removeAttribute('data-blurhash'); + target.parentNode.insertBefore(canvas, target); + target.classList.add('blurhashed'); + target.removeAttribute('data-blurhash'); + }); } } diff --git a/src/components/images/style.css b/src/components/images/style.css index e4c706221f..af982f1582 100644 --- a/src/components/images/style.css +++ b/src/components/images/style.css @@ -12,12 +12,22 @@ opacity: 0; } +@keyframes fadein { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + .lazy-blurhash-fadein-fast { - transition: opacity 0.2s; + animation: fadein 0.2s; } .lazy-blurhash-fadein { - transition: opacity 0.7s; + animation: fadein 0.7s; } .blurhash-canvas { From c70ba48082b6a449736a74d4b063b5dac225b00b Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Mon, 29 Jun 2020 23:57:56 +0200 Subject: [PATCH 122/131] Adjust blurhash entry animation timing --- src/components/images/style.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/images/style.css b/src/components/images/style.css index af982f1582..7e8b01aff2 100644 --- a/src/components/images/style.css +++ b/src/components/images/style.css @@ -23,11 +23,11 @@ } .lazy-blurhash-fadein-fast { - animation: fadein 0.2s; + animation: fadein 0.1s; } .lazy-blurhash-fadein { - animation: fadein 0.7s; + animation: fadein 0.4s; } .blurhash-canvas { From 0766d360c1ee14c54ae5166e553392b6c8d6c29f Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Tue, 30 Jun 2020 00:10:13 +0200 Subject: [PATCH 123/131] Move check outside of loop --- src/components/images/imageLoader.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index b153331801..9981430a64 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -119,9 +119,9 @@ import 'css!./style'; } export function lazyChildren(elem) { - for (const lazyElem of elem.getElementsByClassName('lazy')) { - if (userSettings.enableBlurhash()) { - var blurhashstr = lazyElem.getAttribute('data-blurhash'); + if (userSettings.enableBlurhash()) { + for (const lazyElem of elem.getElementsByClassName('lazy')) { + const blurhashstr = lazyElem.getAttribute('data-blurhash'); if (!lazyElem.classList.contains('blurhashed', 'non-blurhashable') && blurhashstr) { itemBlurhashing(lazyElem, blurhashstr); } else if (!blurhashstr && !lazyElem.classList.contains('blurhashed')) { From 74016894602aca95573add7b5a03c88fe8ed3bfd Mon Sep 17 00:00:00 2001 From: 4d1m Date: Tue, 30 Jun 2020 08:39:00 +0000 Subject: [PATCH 124/131] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index 8b560a341e..1b1a3d5df1 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1558,5 +1558,10 @@ "EnableFasterAnimationsHelp": "Utilizați animații și tranziții mai rapide", "EnableFasterAnimations": "Animații mai rapide", "EnableDecodingColorDepth10Vp9": "Activați decodarea hardware pe 10 biți pentru VP9", - "EnableDecodingColorDepth10Hevc": "Activați decodarea hardware pe 10 biți pentru HEVC" + "EnableDecodingColorDepth10Hevc": "Activați decodarea hardware pe 10 biți pentru HEVC", + "LabelRepositoryName": "Nume Repertoriu", + "LabelRepositoryUrlHelp": "Locația manifestului repertoriului pe care doriți să o includeți.", + "LabelRepositoryUrl": "URL Repertoriu", + "HeaderNewRepository": "Repertoriu Nou", + "MessageNoRepositories": "Fără repertoriu." } From e3dfb055577c892abb30ae2bc0dc1667009ff9b4 Mon Sep 17 00:00:00 2001 From: 4d1m Date: Tue, 30 Jun 2020 08:40:52 +0000 Subject: [PATCH 125/131] Translated using Weblate (Romanian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ro/ --- src/strings/ro.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/ro.json b/src/strings/ro.json index 1b1a3d5df1..c1ef5caf1a 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1563,5 +1563,10 @@ "LabelRepositoryUrlHelp": "Locația manifestului repertoriului pe care doriți să o includeți.", "LabelRepositoryUrl": "URL Repertoriu", "HeaderNewRepository": "Repertoriu Nou", - "MessageNoRepositories": "Fără repertoriu." + "MessageNoRepositories": "Fără repertoriu.", + "ButtonPlayer": "Redare", + "Writers": "Scriitori", + "TabRepositories": "Repertorii", + "MessageAddRepository": "Dacă doriți să adăugați un repertoriu, faceți clic pe butonul de lângă antet și completați informațiile solicitate.", + "LabelRepositoryNameHelp": "Un nume personalizat pentru a distinge acest repertoriu de altele adăugate la serverul dvs." } From 0d5041910dec5f9382a5ba0fcedda78f052dfd90 Mon Sep 17 00:00:00 2001 From: Fernando Date: Tue, 30 Jun 2020 18:10:06 +0000 Subject: [PATCH 126/131] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es/ --- src/strings/es.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index a19f28e57a..396382003c 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -192,7 +192,7 @@ "ExitFullscreen": "Quitar pantalla completa", "ExtraLarge": "Extragrande", "ExtractChapterImagesHelp": "La extracción de imágenes de capítulos permitirá a los clientes mostrar gráficamente la selección de escenas. El proceso puede ser lento, intensivo en recursos y requerir varios gigabytes de espacio. Se ejecuta cuando se añaden vídeos y también como tarea programable por la noche. El horario es configurable en el área de tareas programadas. No se recomienda ejecutar esta tarea durante las horas pico de uso.", - "FFmpegSavePathNotFound": "No podemos localizar FFmpeg usando la ruta que has ingresado. FFprobe también es necesario y debe existir en la misma carpeta. Estos componentes normalmente se agrupan juntos en la misma descarga. Compruebe la ruta y vuelva a intentarlo.", + "FFmpegSavePathNotFound": "No se ha podido localizar ffmpeg ni ffprobe en la ruta especificada. Comprueba la ruta y vuelva a intentarlo.", "FastForward": "Avanzar rápido", "Favorite": "Favorito", "Favorites": "Favoritos", @@ -404,7 +404,7 @@ "HeaderTunerDevices": "Sintonizadores", "HeaderTuners": "Sintonizadores", "HeaderTypeImageFetchers": "{0} capturadores de imágenes", - "HeaderTypeText": "Entrar texto", + "HeaderTypeText": "Introducir texto", "HeaderUpcomingOnTV": "Próximamente en la televisión", "HeaderUploadImage": "Subir imagen", "HeaderUser": "Usuario", @@ -749,8 +749,8 @@ "LabelYourFirstName": "Tu nombre:", "LabelYoureDone": "¡Ya está!", "LabelZipCode": "Código postal:", - "LabelffmpegPath": "Ruta de FFmpeg:", - "LabelffmpegPathHelp": "a ruta de acceso al archivo de la aplicación FFmpeg o la carpeta que contiene FFmpeg.", + "LabelffmpegPath": "Ruta de ffmpeg:", + "LabelffmpegPathHelp": "Carpeta donde se encuentra ffmpeg, el componente utilizado para realizar las conversiones. No la cambies a no ser que sepas lo que haces.", "LanNetworksHelp": "Lista de direcciones IP separadas por comas o entradas de dirección IP / máscara de red para redes que se considerarán en la red local al imponer restricciones de ancho de banda. Si se establece, todas las demás direcciones IP se considerarán en la red externa y estarán sujetas a las restricciones de ancho de banda externo. Si se deja en blanco, solo se considera que la subred del servidor está en la red local.", "Large": "Grande", "LatestFromLibrary": "Reciente en {0}", From f6fc874ebe453b0c86b7443794f62975734217e4 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Tue, 30 Jun 2020 22:16:32 +0200 Subject: [PATCH 127/131] Prefix splash properties --- src/index.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/index.html b/src/index.html index d52be4346e..f8d867cb1a 100644 --- a/src/index.html +++ b/src/index.html @@ -104,6 +104,16 @@ width: 0.8em; } + @-webkit-keyframes fadein { + from { + opacity: 0; + } + + to { + opacity: 1; + } + } + @keyframes fadein { from { opacity: 0; @@ -115,6 +125,7 @@ } .splashLogo { + -webkit-animation: fadein 0.5s; animation: fadein 0.5s; width: 30%; height: 30%; @@ -125,6 +136,7 @@ position: fixed; top: 50%; left: 50%; + -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } From 95978564fea6e2d0da08290a7d99a4c9c7f6532b Mon Sep 17 00:00:00 2001 From: Zyzto Date: Wed, 1 Jul 2020 00:24:14 +0000 Subject: [PATCH 128/131] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ar/ --- src/strings/ar.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/ar.json b/src/strings/ar.json index 09de31d043..98825bf806 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -922,7 +922,7 @@ "ValueSpecialEpisodeName": "خاص - {0}", "HeaderFavoriteAlbums": "الألبومات المفضلة", "HeaderAlbumArtists": "فناني الألبومات", - "Genres": "الأنواع", + "Genres": "التضنيفات", "Folders": "المجلدات", "Favorites": "المفضلة", "Collections": "مجموعات", @@ -964,7 +964,7 @@ "AllEpisodes": "كل الحلقات", "AllComplexFormats": "جميع التنسيقات المعقدة (ASS ، SSA ، VOBSUB ، PGS ، SUB / IDX ، ...)", "AllChannels": "كل القنوات", - "Albums": "ألبومات", + "Albums": "البومات", "Aired": "عرضت", "AirDate": "تاريخ العرض", "AddedOnValue": "أضيفت", From a28cbe41164840b1b0484578d0737002210e63f0 Mon Sep 17 00:00:00 2001 From: Adam Bokor Date: Wed, 1 Jul 2020 06:24:32 +0000 Subject: [PATCH 129/131] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index dfd45cf63c..0cd02587fc 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1571,5 +1571,6 @@ "LabelRepositoryUrlHelp": "A hivatkozni kívánt tároló manifeszt helye.", "LabelRepositoryUrl": "Tároló URL-je", "HeaderNewRepository": "Új tároló", - "MessageNoRepositories": "Nincs tároló." + "MessageNoRepositories": "Nincs tároló.", + "Writers": "Írók" } From 9277e1f951830ff82199703af8b1039c362b9a24 Mon Sep 17 00:00:00 2001 From: Viperinius Date: Wed, 1 Jul 2020 12:41:05 +0000 Subject: [PATCH 130/131] Translated using Weblate (German) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/de/ --- src/strings/de.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/de.json b/src/strings/de.json index 2318cf8104..6e3bd00f43 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1586,5 +1586,7 @@ "LabelRepositoryName": "Name des Repository", "LabelRepositoryUrl": "URL des Repository", "HeaderNewRepository": "Neues Repository", - "MessageNoRepositories": "Keine Repositories." + "MessageNoRepositories": "Keine Repositories.", + "ButtonPlayer": "Player", + "Writers": "Autoren" } From f44a8bb6bef83610ce091490866643f5e7db5f71 Mon Sep 17 00:00:00 2001 From: Fernando Date: Wed, 1 Jul 2020 11:31:02 +0000 Subject: [PATCH 131/131] 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, 10 insertions(+), 10 deletions(-) diff --git a/src/strings/es.json b/src/strings/es.json index 396382003c..87e1f298cf 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -249,7 +249,7 @@ "HeaderChannels": "Canales", "HeaderChapterImages": "Imágenes de capítulos", "HeaderCodecProfile": "Perfil de códec", - "HeaderCodecProfileHelp": "Perfiles de códec indican las limitaciones de un dispositivo cuando se reproducen códecs específicos. Si se aplica una limitación entonces el medio se transcodificará, incluso si el códec está configurado para reproducción directa.", + "HeaderCodecProfileHelp": "Los perfiles de los códecs indican las limitaciones de un dispositivo cuando reproduce un códec en específico. Si lo que se va a reproducir no está dentro de estos límites (por ejemplo, bitrate demasiado alto), el contenido se convertirá, incluso si el códec está configurado para reproducción directa.", "HeaderConfigureRemoteAccess": "Configurar acceso remoto", "HeaderConfirmPluginInstallation": "Confirmar la instalación del complemento", "HeaderConfirmProfileDeletion": "Confirmar borrado del perfil", @@ -257,7 +257,7 @@ "HeaderConnectToServer": "Conectar al servidor", "HeaderConnectionFailure": "Fallo de conexión", "HeaderContainerProfile": "Perfil de contenedor", - "HeaderContainerProfileHelp": "Perfiles de códec indican las limitaciones de un dispositivo mientras reproduce formatos específicos. Si se aplica una limitación entonces el medio se transcodificará, incluso si el formato está configurado para reproducción directa.", + "HeaderContainerProfileHelp": "Los perfiles de los contenedores indican las limitaciones de un dispositivo cuando reproduce contenido en un formato en específico. Si lo que se va a reproducir no está dentro de estos límites, el contenedor del contenido se cambiará, incluso si el formato está configurado para reproducción directa.", "HeaderContinueListening": "Continuar escuchando", "HeaderContinueWatching": "Continuar viendo", "HeaderCustomDlnaProfiles": "Perfiles personalizados", @@ -375,7 +375,7 @@ "HeaderSelectServer": "Selecionar servidor", "HeaderSelectServerCachePath": "Seleccione la ruta para el caché del servidor", "HeaderSelectServerCachePathHelp": "Navega o introduce la ruta para alojar los archivos caché del servidor. Tienes que tener permisos de escritura en esa carpeta.", - "HeaderSelectTranscodingPath": "Seleccione la ruta temporal del transcodificador", + "HeaderSelectTranscodingPath": "Ruta para los archivos temporales de las conversiones", "HeaderSelectTranscodingPathHelp": "Busca o escribe la ruta que se utilizará para guardar los archivos temporales que se generarán mientras se convierten los archivos. Jellyfin debe tener permisos de escritura en la carpeta.", "HeaderSendMessage": "Enviar mensaje", "HeaderSeries": "Series", @@ -621,7 +621,7 @@ "LabelMoviePrefixHelp": "Si se aplica un prefijo a títulos de películas, escríbalo para que el servidor pueda manejarlo correctamente.", "LabelMovieRecordingPath": "Ruta de grabaciones de películas (opcional):", "LabelMusicStreamingTranscodingBitrate": "Tasa de bits para la reproducción de música:", - "LabelMusicStreamingTranscodingBitrateHelp": "Especifique una tasa de bits máxima cuando transmita música.", + "LabelMusicStreamingTranscodingBitrateHelp": "Tasa de bits máxima para la música.", "LabelName": "Nombre:", "LabelNewName": "Nuevo nombre:", "LabelNewPassword": "Nueva contraseña:", @@ -674,7 +674,7 @@ "LabelRefreshMode": "Modo de refresco:", "LabelReleaseDate": "Fecha de lanzamiento:", "LabelRemoteClientBitrateLimit": "Límite de la transmisión de tasa de bits por internet (Mbps):", - "LabelRemoteClientBitrateLimitHelp": "Un límite opcional de tasa de bits para todos los dispositivos fuera de la red. Esto es útil para evitar que los dispositivos soliciten una tasa de bits más alta que la que su conexión a Internet puede manejar. Esto puede ocasionar una mayor carga de la CPU en su servidor para transcodificar vídeos sobre la marcha a una tasa de bits más baja.", + "LabelRemoteClientBitrateLimitHelp": "Especifica el bitrate máximo para los dispositivos que se encuentren fuera de la red local. Esto es útil para permitir la reproducción del contenido que tengas con una tasa de bits muy alta cuando la conexión a internet de tu servidor o la del cliente no sea lo suficientemente rápida. Esto ocasionará mayor carga, ya que el contenido que supere esta tasa de bits se convertirá para que esté dentro del límite establecido.", "LabelRuntimeMinutes": "Tiempo de ejecución (minutos):", "LabelSaveLocalMetadata": "Guardar imágenes y etiquetas en las carpetas de medios", "LabelSaveLocalMetadataHelp": "Guardar imágenes y etiquetas directamente en las carpetas en las que estén los elementos hará que se puedan editar más fácilmente.", @@ -935,7 +935,7 @@ "OptionEnableM2tsModeHelp": "Activar modo M2TS cuando se codifique a MPEGTS.", "OptionEnded": "Finalizado", "OptionEquals": "Igual", - "OptionEstimateContentLength": "Estimar la longitud del contenido al transcodificar", + "OptionEstimateContentLength": "Estimar la longitud del contenido al convertirse", "OptionEveryday": "Todos los días", "OptionExternallyDownloaded": "Descarga externa", "OptionExtractChapterImage": "Habilitar la extracción de imágenes de los capítulos", @@ -973,8 +973,8 @@ "OptionProfileVideoAudio": "Vídeo y audio", "OptionProtocolHls": "Emisión HTTP en directo", "OptionReleaseDate": "Fecha de lanzamiento", - "OptionReportByteRangeSeekingWhenTranscoding": "Indicar que el servidor soporta la búsqueda de byte al transcodificar", - "OptionReportByteRangeSeekingWhenTranscodingHelp": "Esto es necesario para algunos dispositivos que no buscan el tiempo muy bien.", + "OptionReportByteRangeSeekingWhenTranscoding": "Indicar que el servidor soporta la búsqueda de byte al convertir", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "Esto es necesario para los dispositivos que no cambian entre los diferentes puntos de tiempo del contenido correctamente.", "OptionRequirePerfectSubtitleMatch": "Sólo descargar subtítulos que son una combinación perfecta para mis archivos de vídeo", "OptionRequirePerfectSubtitleMatchHelp": "Requerir una coincidencia perfecta filtra los subtítulos para incluir sólo aquellos que coinciden con el archivo de vídeo. Desmarcando esta opción, aumentará la probabilidad de que los subtítulos se descarguen, pero puede que el texto del subtítulo no coincida con el vídeo.", "OptionResElement": "Elemento res", @@ -1355,7 +1355,7 @@ "LabelPasswordResetProvider": "Proveedor de restablecimiento de contraseña:", "LabelServerName": "Nombre del servidor:", "LabelTranscodePath": "Ruta para los archivos temporales de las conversiones:", - "LabelTranscodes": "Transcodificaciones:", + "LabelTranscodes": "Archivos temporales de las conversiones:", "LabelUserLoginAttemptsBeforeLockout": "Intentos fallidos de inicio de sesión antes de que el usuario sea bloqueado:", "DashboardVersionNumber": "Versión: {0}", "DashboardServerName": "Servidor: {0}", @@ -1497,7 +1497,7 @@ "AlbumArtist": "Artista del álbum", "Album": "Álbum", "LabelDeinterlaceMethod": "Metodo de desentrelazar:", - "DeinterlaceMethodHelp": "Seleccione el método de desentrelazar para el transcodificar de contenido entrelazado.", + "DeinterlaceMethodHelp": "Seleccione el tipo de filtro que se aplicará para desentrelazar el contenido que esté entrelazado durante la conversión.", "LabelLibraryPageSize": "Tamaño de la página de la biblioteca:", "LabelLibraryPageSizeHelp": "Establece la cantidad de artículos a mostrar en una página de la biblioteca. Ponlo en 0 para desactivar la paginación.", "UnsupportedPlayback": "No es posible desencriptar contenido protegido mediante DRM; sin embargo se intentará su reproducción. Algunos archivos pueden aparecer completamente negros debido a encriptación u otras características no soportadas, como títulos interactivos.",