From 7e7613d5de732bc5b59164613252b680895fba77 Mon Sep 17 00:00:00 2001 From: Guilherme Danno Date: Fri, 8 May 2020 19:06:44 -0300 Subject: [PATCH 001/463] Update CONTRIBUTORS.md --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 2eae7e6933..65bb24e9fc 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -35,6 +35,7 @@ - [Thibault Nocchi](https://github.com/ThibaultNocchi) - [MrTimscampi](https://github.com/MrTimscampi) - [Sarab Singh](https://github.com/sarab97) + - [GuilhermeHideki](https://github.com/GuilhermeHideki) # Emby Contributors From 934797e07409e7e56cbed10f67504eaf4f0c9d41 Mon Sep 17 00:00:00 2001 From: Guilherme Danno Date: Sun, 3 May 2020 20:45:14 -0300 Subject: [PATCH 002/463] feat: add mixins file --- src/styles/_mixins.scss | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/styles/_mixins.scss diff --git a/src/styles/_mixins.scss b/src/styles/_mixins.scss new file mode 100644 index 0000000000..ed23ab0833 --- /dev/null +++ b/src/styles/_mixins.scss @@ -0,0 +1,23 @@ +@mixin background-cover($position) { + background-position: $position; + background-repeat: no-repeat; + background-size: cover; +} + +@mixin circle($size) { + @include square($size); + border-radius: 100%; +} + +@mixin position($position, $top: null, $right: null, $bottom: null, $left: null) { + position: $position; + top: $top; + right: $right; + bottom: $bottom; + left: $left; +} + +@mixin square($size) { + height: $size; + width: $size; +} From 9e92bfaae78b3bd1f1dfdc9ba02ced18729bef95 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 14 Jun 2020 23:37:48 +0300 Subject: [PATCH 003/463] Fix subtitle line spacing --- .../subtitleappearancehelper.js | 71 ++++++------------- src/plugins/htmlVideoPlayer/plugin.js | 2 +- src/plugins/htmlVideoPlayer/style.css | 6 ++ 3 files changed, 30 insertions(+), 49 deletions(-) diff --git a/src/components/subtitlesettings/subtitleappearancehelper.js b/src/components/subtitlesettings/subtitleappearancehelper.js index bec8156aca..503c81472f 100644 --- a/src/components/subtitlesettings/subtitleappearancehelper.js +++ b/src/components/subtitlesettings/subtitleappearancehelper.js @@ -1,55 +1,30 @@ define([], function () { 'use strict'; - function getTextStyles(settings, isCue) { + function getTextStyles(settings) { var list = []; - if (isCue) { - switch (settings.textSize || '') { - - case 'smaller': - list.push({ name: 'font-size', value: '.5em' }); - break; - case 'small': - list.push({ name: 'font-size', value: '.7em' }); - break; - case 'large': - list.push({ name: 'font-size', value: '1.3em' }); - break; - case 'larger': - list.push({ name: 'font-size', value: '1.72em' }); - break; - case 'extralarge': - list.push({ name: 'font-size', value: '2em' }); - break; - default: - case 'medium': - break; - } - } else { - switch (settings.textSize || '') { - - case 'smaller': - list.push({ name: 'font-size', value: '.8em' }); - break; - case 'small': - list.push({ name: 'font-size', value: 'inherit' }); - break; - case 'larger': - list.push({ name: 'font-size', value: '2em' }); - break; - case 'extralarge': - list.push({ name: 'font-size', value: '2.2em' }); - break; - case 'large': - list.push({ name: 'font-size', value: '1.72em' }); - break; - default: - case 'medium': - list.push({ name: 'font-size', value: '1.36em' }); - break; - } + switch (settings.textSize || '') { + case 'smaller': + list.push({ name: 'font-size', value: '.8em' }); + break; + case 'small': + list.push({ name: 'font-size', value: 'inherit' }); + break; + case 'larger': + list.push({ name: 'font-size', value: '2em' }); + break; + case 'extralarge': + list.push({ name: 'font-size', value: '2.2em' }); + break; + case 'large': + list.push({ name: 'font-size', value: '1.72em' }); + break; + default: + case 'medium': + list.push({ name: 'font-size', value: '1.36em' }); + break; } switch (settings.dropShadow || '') { @@ -122,10 +97,10 @@ define([], function () { return []; } - function getStyles(settings, isCue) { + function getStyles(settings) { return { - text: getTextStyles(settings, isCue), + text: getTextStyles(settings), window: getWindowStyles(settings) }; } diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index cc312bb956..9302612539 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1178,7 +1178,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa document.getElementsByTagName('head')[0].appendChild(styleElem); } - styleElem.innerHTML = getCueCss(subtitleAppearanceHelper.getStyles(userSettings.getSubtitleAppearanceSettings(), true), '.htmlvideoplayer'); + styleElem.innerHTML = getCueCss(subtitleAppearanceHelper.getStyles(userSettings.getSubtitleAppearanceSettings()), '.htmlvideoplayer'); }); } diff --git a/src/plugins/htmlVideoPlayer/style.css b/src/plugins/htmlVideoPlayer/style.css index b83a7816f5..0f63e72d7e 100644 --- a/src/plugins/htmlVideoPlayer/style.css +++ b/src/plugins/htmlVideoPlayer/style.css @@ -33,6 +33,12 @@ video::-webkit-media-controls { text-shadow: 0.14em 0.14em 0.14em rgba(0, 0, 0, 1); -webkit-font-smoothing: antialiased; font-family: inherit; + line-height: normal; /* Restore value. See -webkit-media-text-track-container 'line-height' */ +} + +.htmlvideoplayer::-webkit-media-text-track-container { + font-size: 170% !important; /* Override element inline style */ + line-height: 50%; /* Child element cannot set line height smaller than its parent has. This allow smaller values for children */ } .htmlvideoplayer-moveupsubtitles::-webkit-media-text-track-display { From 597b4258d9eba3a663082632149511d4500264ce Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 7 Jul 2020 01:06:47 +0300 Subject: [PATCH 004/463] Add subtitle position --- .../subtitleappearancehelper.js | 39 ++++++++-- .../subtitlesettings/subtitlesettings.js | 71 ++++++++++++++++++- .../subtitlesettings.template.html | 53 ++++++++++++++ src/elements/emby-slider/emby-slider.css | 15 ++++ src/elements/emby-slider/emby-slider.js | 10 +++ src/plugins/htmlVideoPlayer/plugin.js | 39 +++++----- src/plugins/htmlVideoPlayer/style.css | 9 ++- src/scripts/settings/userSettings.js | 6 +- src/strings/en-us.json | 5 +- src/strings/ru.json | 5 +- 10 files changed, 219 insertions(+), 33 deletions(-) diff --git a/src/components/subtitlesettings/subtitleappearancehelper.js b/src/components/subtitlesettings/subtitleappearancehelper.js index 503c81472f..e611228d9a 100644 --- a/src/components/subtitlesettings/subtitleappearancehelper.js +++ b/src/components/subtitlesettings/subtitleappearancehelper.js @@ -1,7 +1,7 @@ define([], function () { 'use strict'; - function getTextStyles(settings) { + function getTextStyles(settings, preview) { var list = []; @@ -89,19 +89,44 @@ define([], function () { break; } + if (!preview) { + const pos = parseInt(settings.verticalPosition); + const lineHeight = 1.35; // FIXME: It is better to read this value from element + const line = Math.abs(pos * lineHeight); + if (pos < 0) { + list.push({ name: 'min-height', value: `${line}em` }); + list.push({ name: 'margin-top', value: '' }); + } else { + list.push({ name: 'min-height', value: '' }); + list.push({ name: 'margin-top', value: `${line}em` }); + } + } + return list; } - function getWindowStyles(settings) { + function getWindowStyles(settings, preview) { + const list = []; - return []; + if (!preview) { + const pos = parseInt(settings.verticalPosition); + if (pos < 0) { + list.push({ name: 'top', value: '' }); + list.push({ name: 'bottom', value: '0' }); + } else { + list.push({ name: 'top', value: '0' }); + list.push({ name: 'bottom', value: '' }); + } + } + + return list; } - function getStyles(settings) { + function getStyles(settings, preview) { return { - text: getTextStyles(settings), - window: getWindowStyles(settings) + text: getTextStyles(settings, preview), + window: getWindowStyles(settings, preview) }; } @@ -117,7 +142,7 @@ define([], function () { function applyStyles(elements, appearanceSettings) { - var styles = getStyles(appearanceSettings); + var styles = getStyles(appearanceSettings, !!elements.preview); if (elements.text) { applyStyleList(styles.text, elements.text); diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index d728360d05..819631184c 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -1,4 +1,4 @@ -define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loading', 'connectionManager', 'subtitleAppearanceHelper', 'dom', 'events', 'listViewStyle', 'emby-select', 'emby-input', 'emby-checkbox', 'flexStyles'], function (require, globalize, appSettings, appHost, focusManager, loading, connectionManager, subtitleAppearanceHelper, dom, events) { +define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loading', 'connectionManager', 'subtitleAppearanceHelper', 'dom', 'events', 'layoutManager', 'listViewStyle', 'emby-select', 'emby-input', 'emby-checkbox', 'emby-slider', 'flexStyles'], function (require, globalize, appSettings, appHost, focusManager, loading, connectionManager, subtitleAppearanceHelper, dom, events, layoutManager) { 'use strict'; function populateLanguages(select, languages) { @@ -21,6 +21,7 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi appearanceSettings.font = context.querySelector('#selectFont').value; appearanceSettings.textBackground = context.querySelector('#inputTextBackground').value; appearanceSettings.textColor = context.querySelector('#inputTextColor').value; + appearanceSettings.verticalPosition = context.querySelector('#sliderVerticalPosition').value; return appearanceSettings; } @@ -47,6 +48,7 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi context.querySelector('#inputTextBackground').value = appearanceSettings.textBackground || 'transparent'; context.querySelector('#inputTextColor').value = appearanceSettings.textColor || '#ffffff'; context.querySelector('#selectFont').value = appearanceSettings.font || ''; + context.querySelector('#sliderVerticalPosition').value = appearanceSettings.verticalPosition; context.querySelector('#selectSubtitleBurnIn').value = appSettings.get('subtitleburnin') || ''; @@ -134,10 +136,45 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi var elements = { window: view.querySelector('.subtitleappearance-preview-window'), - text: view.querySelector('.subtitleappearance-preview-text') + text: view.querySelector('.subtitleappearance-preview-text'), + preview: true }; subtitleAppearanceHelper.applyStyles(elements, appearanceSettings); + + subtitleAppearanceHelper.applyStyles({ + window: view.querySelector('.subtitleappearance-fullpreview-window'), + text: view.querySelector('.subtitleappearance-fullpreview-text') + }, appearanceSettings); + } + + const subtitlePreviewDelay = 1000; + let subtitlePreviewTimer; + + function showSubtitlePreview(persistent) { + clearTimeout(subtitlePreviewTimer); + + this._fullPreview.classList.remove('subtitleappearance-fullpreview-hide'); + + if (persistent) { + this._refFullPreview++; + } + + if (this._refFullPreview === 0) { + subtitlePreviewTimer = setTimeout(hideSubtitlePreview.bind(this), subtitlePreviewDelay); + } + } + + function hideSubtitlePreview(persistent) { + clearTimeout(subtitlePreviewTimer); + + if (persistent) { + this._refFullPreview--; + } + + if (this._refFullPreview === 0) { + this._fullPreview.classList.add('subtitleappearance-fullpreview-hide'); + } } function embed(options, self) { @@ -162,6 +199,36 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi if (appHost.supports('subtitleappearancesettings')) { options.element.querySelector('.subtitleAppearanceSection').classList.remove('hide'); + + self._fullPreview = options.element.querySelector('.subtitleappearance-fullpreview'); + self._refFullPreview = 0; + + const sliderVerticalPosition = options.element.querySelector('#sliderVerticalPosition'); + sliderVerticalPosition.addEventListener('input', onAppearanceFieldChange); + sliderVerticalPosition.addEventListener('input', () => showSubtitlePreview.call(self)); + + const eventPrefix = window.PointerEvent ? 'pointer' : 'mouse'; + sliderVerticalPosition.addEventListener(`${eventPrefix}enter`, () => showSubtitlePreview.call(self, true)); + sliderVerticalPosition.addEventListener(`${eventPrefix}leave`, () => hideSubtitlePreview.call(self, true)); + + if (layoutManager.tv) { + sliderVerticalPosition.addEventListener('focus', () => showSubtitlePreview.call(self, true)); + sliderVerticalPosition.addEventListener('blur', () => hideSubtitlePreview.call(self, true)); + + // Give CustomElements time to attach + setTimeout(() => { + sliderVerticalPosition.classList.add('focusable'); + sliderVerticalPosition.enableKeyboardDragging(); + }, 0); + } + + options.element.querySelector('.chkPreview').addEventListener('change', (e) => { + if (e.target.checked) { + showSubtitlePreview.call(self, true); + } else { + hideSubtitlePreview.call(self, true); + } + }); } self.loadData(); diff --git a/src/components/subtitlesettings/subtitlesettings.template.html b/src/components/subtitlesettings/subtitlesettings.template.html index 716296a257..2f49fa4c3e 100644 --- a/src/components/subtitlesettings/subtitlesettings.template.html +++ b/src/components/subtitlesettings/subtitlesettings.template.html @@ -38,6 +38,45 @@ ${HeaderSubtitleAppearance} + + +
+
+
+ ${HeaderSubtitleAppearance} +
+ ${TheseSettingsAffectSubtitlesOnThisDevice} +
+
+
+
@@ -89,6 +128,20 @@
+ +
+
+ +
+
${SubtitleVerticalPositionHelp}
+
+ +
+ +
'; - itemHtml += ''; - } - itemHtml += '
'; - itemHtml += '
'; - itemHtml += '

'; - itemHtml += notification.Category; - itemHtml += '

'; - if (showHelp) { - showHelp = false; - itemHtml += ''; - itemHtml += globalize.translate('Help'); - itemHtml += ''; - } +function reload(page) { + loading.show(); + ApiClient.getJSON(ApiClient.getUrl('Notifications/Types')).then(function (list) { + let html = ''; + let lastCategory = ''; + let showHelp = true; + html += list.map(function (notification) { + let itemHtml = ''; + if (notification.Category !== lastCategory) { + lastCategory = notification.Category; + if (lastCategory) { + itemHtml += '
'; itemHtml += '
'; - itemHtml += '
'; } - itemHtml += ''; - if (notification.Enabled) { - itemHtml += ''; - } else { - itemHtml += ''; + itemHtml += '
'; + itemHtml += '
'; + itemHtml += '

'; + itemHtml += notification.Category; + itemHtml += '

'; + if (showHelp) { + showHelp = false; + itemHtml += '
'; + itemHtml += globalize.translate('Help'); + itemHtml += ''; } - itemHtml += '
'; - itemHtml += '
' + notification.Name + '
'; itemHtml += '
'; - itemHtml += ''; - itemHtml += ''; - return itemHtml; - }).join(''); - - if (list.length) { - html += '
'; - html += '
'; + itemHtml += '
'; } - page.querySelector('.notificationList').innerHTML = html; - loading.hide(); - }); - } + itemHtml += ''; + if (notification.Enabled) { + itemHtml += ''; + } else { + itemHtml += ''; + } + itemHtml += '
'; + itemHtml += '
' + notification.Name + '
'; + itemHtml += '
'; + itemHtml += ''; + itemHtml += '
'; + return itemHtml; + }).join(''); - return function(view, params) { - view.addEventListener('viewshow', function() { - reload(view); - }); - }; -}); + if (list.length) { + html += '
'; + html += '
'; + } + page.querySelector('.notificationList').innerHTML = html; + loading.hide(); + }); +} + +export default function (view, params) { + view.addEventListener('viewshow', function () { + reload(view); + }); +} From 287cc06963b5935e1a7979c763d26a1cc7d3d17f Mon Sep 17 00:00:00 2001 From: Cameron Date: Sun, 26 Jul 2020 11:29:02 +0100 Subject: [PATCH 006/463] Migration of edititemmetadata to ES6 module --- package.json | 1 + src/controllers/edititemmetadata.js | 51 ++++++++++++++--------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index dbedd2922e..ecb33b77c8 100644 --- a/package.json +++ b/package.json @@ -189,6 +189,7 @@ "src/controllers/dashboard/users/userparentalcontrol.js", "src/controllers/dashboard/users/userpasswordpage.js", "src/controllers/dashboard/users/userprofilespage.js", + "src/controllers/edititemmetadata.js", "src/controllers/playback/nowplaying.js", "src/controllers/playback/videoosd.js", "src/controllers/searchpage.js", diff --git a/src/controllers/edititemmetadata.js b/src/controllers/edititemmetadata.js index 1a3647a758..57c72dda28 100644 --- a/src/controllers/edititemmetadata.js +++ b/src/controllers/edititemmetadata.js @@ -1,31 +1,30 @@ -define(['loading', 'scripts/editorsidebar'], function (loading) { - 'use strict'; +import loading from 'loading'; +import 'scripts/editorsidebar'; - function reload(context, itemId) { - loading.show(); +function reload(context, itemId) { + loading.show(); - if (itemId) { - require(['metadataEditor'], function ({default: metadataEditor}) { - metadataEditor.embed(context.querySelector('.editPageInnerContent'), itemId, ApiClient.serverInfo().Id); - }); - } else { - context.querySelector('.editPageInnerContent').innerHTML = ''; - loading.hide(); - } + if (itemId) { + import('metadataEditor').then(({ default: metadataEditor }) => { + metadataEditor.embed(context.querySelector('.editPageInnerContent'), itemId, ApiClient.serverInfo().Id); + }); + } else { + context.querySelector('.editPageInnerContent').innerHTML = ''; + loading.hide(); } +} - return function (view, params) { - view.addEventListener('viewshow', function () { - reload(this, MetadataEditor.getCurrentItemId()); - }); - MetadataEditor.setCurrentItemId(null); - view.querySelector('.libraryTree').addEventListener('itemclicked', function (event) { - var data = event.detail; +export default function (view, params) { + view.addEventListener('viewshow', function () { + reload(this, MetadataEditor.getCurrentItemId()); + }); + MetadataEditor.setCurrentItemId(null); + view.querySelector('.libraryTree').addEventListener('itemclicked', function (event) { + var data = event.detail; - if (data.id != MetadataEditor.getCurrentItemId()) { - MetadataEditor.setCurrentItemId(data.id); - reload(view, data.id); - } - }); - }; -}); + if (data.id != MetadataEditor.getCurrentItemId()) { + MetadataEditor.setCurrentItemId(data.id); + reload(view, data.id); + } + }); +} From 3658b4471a1314d32bb84eb0cb83f6149fc5da1a Mon Sep 17 00:00:00 2001 From: Cameron Date: Sun, 26 Jul 2020 11:29:26 +0100 Subject: [PATCH 007/463] Migration of Favorites and Hometab to ES6 modules --- package.json | 2 + src/controllers/favorites.js | 108 +++++++++++++++++++---------------- src/controllers/home.js | 2 +- src/controllers/hometab.js | 67 +++++++++++----------- 4 files changed, 97 insertions(+), 82 deletions(-) diff --git a/package.json b/package.json index ecb33b77c8..de3fe62adc 100644 --- a/package.json +++ b/package.json @@ -190,6 +190,8 @@ "src/controllers/dashboard/users/userpasswordpage.js", "src/controllers/dashboard/users/userprofilespage.js", "src/controllers/edititemmetadata.js", + "src/controllers/favorites.js", + "src/controllers/hometab.js", "src/controllers/playback/nowplaying.js", "src/controllers/playback/videoosd.js", "src/controllers/searchpage.js", diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index b4c7936239..532801bfaf 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -1,5 +1,15 @@ -define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'apphost', 'layoutManager', 'focusManager', 'emby-itemscontainer', 'emby-scroller'], function (appRouter, cardBuilder, dom, globalize, connectionManager, appHost, layoutManager, focusManager) { - 'use strict'; +import appRouter from 'appRouter'; +import cardBuilder from 'cardBuilder'; +import dom from 'dom'; +import globalize from 'globalize'; +import connectionManager from 'connectionManager'; +import appHost from 'apphost'; +import layoutManager from 'layoutManager'; +import focusManager from 'focusManager'; +import 'emby-itemscontainer'; +import 'emby-scroller'; + +/* eslint-disable indent */ function enableScrollX() { return true; @@ -133,8 +143,8 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap function getFetchDataFn(section) { return function () { - var apiClient = this.apiClient; - var options = { + const apiClient = this.apiClient; + const options = { SortBy: (section.types, 'SeriesName,SortName'), SortOrder: 'Ascending', Filters: 'IsFavorite', @@ -145,7 +155,7 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap EnableTotalRecordCount: false }; options.Limit = 20; - var userId = apiClient.getCurrentUserId(); + const userId = apiClient.getCurrentUserId(); if ('MusicArtist' === section.types) { return apiClient.getArtists(userId, options); @@ -170,17 +180,17 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap function getItemsHtmlFn(section) { return function (items) { - var supportsImageAnalysis = appHost.supports('imageanalysis'); - var cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle; + const supportsImageAnalysis = appHost.supports('imageanalysis'); + let cardLayout = (appHost.preferVisualCards || supportsImageAnalysis) && section.autoCardLayout && section.showTitle; cardLayout = false; - var serverId = this.apiClient.serverId(); - var leadingButtons = layoutManager.tv ? [{ + const serverId = this.apiClient.serverId(); + const leadingButtons = layoutManager.tv ? [{ name: globalize.translate('All'), id: 'more', icon: 'favorite', routeUrl: getRouteUrl(section, serverId) }] : null; - var lines = 0; + let lines = 0; if (section.showTitle) { lines++; @@ -216,23 +226,12 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap }; } - function FavoritesTab(view, params) { - this.view = view; - this.params = params; - this.apiClient = connectionManager.currentApiClient(); - this.sectionsContainer = view.querySelector('.sections'); - createSections(this, this.sectionsContainer, this.apiClient); - } - function createSections(instance, elem, apiClient) { - var i; - var length; - var sections = getSections(); - var html = ''; + const sections = getSections(); + let html = ''; - for (i = 0, length = sections.length; i < length; i++) { - var section = sections[i]; - var sectionClass = 'verticalSection'; + for (const section of sections) { + let sectionClass = 'verticalSection'; if (!section.showTitle) { sectionClass += ' verticalSection-extrabottompadding'; @@ -258,23 +257,32 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap } elem.innerHTML = html; - var elems = elem.querySelectorAll('.itemsContainer'); + const elems = elem.querySelectorAll('.itemsContainer'); - for (i = 0, length = elems.length; i < length; i++) { - var itemsContainer = elems[i]; + for (let i = 0, length = elems.length; i < length; i++) { + const itemsContainer = elems[i]; itemsContainer.fetchData = getFetchDataFn(sections[i]).bind(instance); itemsContainer.getItemsHtml = getItemsHtmlFn(sections[i]).bind(instance); itemsContainer.parentContainer = dom.parentWithClass(itemsContainer, 'verticalSection'); } } - FavoritesTab.prototype.onResume = function (options) { - var promises = (this.apiClient, []); - var view = this.view; - var elems = this.sectionsContainer.querySelectorAll('.itemsContainer'); +class FavoritesTab { + constructor(view, params) { + this.view = view; + this.params = params; + this.apiClient = connectionManager.currentApiClient(); + this.sectionsContainer = view.querySelector('.sections'); + createSections(this, this.sectionsContainer, this.apiClient); + } - for (var i = 0, length = elems.length; i < length; i++) { - promises.push(elems[i].resume(options)); + onResume(options) { + const promises = (this.apiClient, []); + const view = this.view; + const elems = this.sectionsContainer.querySelectorAll('.itemsContainer'); + + for (const elem of elems) { + promises.push(elem.resume(options)); } Promise.all(promises).then(function () { @@ -282,30 +290,32 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap focusManager.autoFocus(view); } }); - }; + } - FavoritesTab.prototype.onPause = function () { - var elems = this.sectionsContainer.querySelectorAll('.itemsContainer'); + onPause() { + const elems = this.sectionsContainer.querySelectorAll('.itemsContainer'); - for (var i = 0, length = elems.length; i < length; i++) { - elems[i].pause(); + for (const elem of elems) { + elem.pause(); } - }; + } - FavoritesTab.prototype.destroy = function () { + destroy() { this.view = null; this.params = null; this.apiClient = null; - var elems = this.sectionsContainer.querySelectorAll('.itemsContainer'); + const elems = this.sectionsContainer.querySelectorAll('.itemsContainer'); - for (var i = 0, length = elems.length; i < length; i++) { - elems[i].fetchData = null; - elems[i].getItemsHtml = null; - elems[i].parentContainer = null; + for (const elem of elems) { + elem.fetchData = null; + elem.getItemsHtml = null; + elem.parentContainer = null; } this.sectionsContainer = null; - }; + } +} - return FavoritesTab; -}); +export default FavoritesTab; + +/* eslint-enable indent */ diff --git a/src/controllers/home.js b/src/controllers/home.js index 9a4cea2227..ea3fef3ce2 100644 --- a/src/controllers/home.js +++ b/src/controllers/home.js @@ -40,7 +40,7 @@ define(['tabbedView', 'globalize', 'require', 'emby-tabs', 'emby-button', 'emby- var controller = instance.tabControllers[index]; if (!controller) { - controller = new controllerFactory(instance.view.querySelector(".tabContent[data-index='" + index + "']"), instance.params); + controller = new controllerFactory.default(instance.view.querySelector(".tabContent[data-index='" + index + "']"), instance.params); instance.tabControllers[index] = controller; } diff --git a/src/controllers/hometab.js b/src/controllers/hometab.js index 8e2a1f92e7..4b7ddee057 100644 --- a/src/controllers/hometab.js +++ b/src/controllers/hometab.js @@ -1,27 +1,23 @@ -define(['userSettings', 'loading', 'connectionManager', 'apphost', 'layoutManager', 'focusManager', 'homeSections', 'emby-itemscontainer'], function (userSettings, loading, connectionManager, appHost, layoutManager, focusManager, homeSections) { - 'use strict'; +import * as userSettings from 'userSettings'; +import loading from 'loading'; +import connectionManager from 'connectionManager'; +import appHost from 'apphost'; +import layoutManager from 'layoutManager'; +import focusManager from 'focusManager'; +import homeSections from 'homeSections'; +import 'emby-itemscontainer'; - function HomeTab(view, params) { +class HomeTab { + constructor(view, params) { this.view = view; this.params = params; this.apiClient = connectionManager.currentApiClient(); this.sectionsContainer = view.querySelector('.sections'); view.querySelector('.sections').addEventListener('settingschange', onHomeScreenSettingsChanged.bind(this)); } - - function onHomeScreenSettingsChanged() { - this.sectionsRendered = false; - - if (!this.paused) { - this.onResume({ - refresh: true - }); - } - } - - HomeTab.prototype.onResume = function (options) { + onResume(options) { if (this.sectionsRendered) { - var sectionsContainer = this.sectionsContainer; + const sectionsContainer = this.sectionsContainer; if (sectionsContainer) { return homeSections.resume(sectionsContainer, options); @@ -31,8 +27,8 @@ define(['userSettings', 'loading', 'connectionManager', 'apphost', 'layoutManage } loading.show(); - var view = this.view; - var apiClient = this.apiClient; + const view = this.view; + const apiClient = this.apiClient; this.destroyHomeSections(); this.sectionsRendered = true; return apiClient.getCurrentUser().then(function (user) { @@ -44,31 +40,38 @@ define(['userSettings', 'loading', 'connectionManager', 'apphost', 'layoutManage loading.hide(); }); }); - }; - - HomeTab.prototype.onPause = function () { - var sectionsContainer = this.sectionsContainer; + } + onPause() { + const sectionsContainer = this.sectionsContainer; if (sectionsContainer) { homeSections.pause(sectionsContainer); } - }; - - HomeTab.prototype.destroy = function () { + } + destroy() { this.view = null; this.params = null; this.apiClient = null; this.destroyHomeSections(); this.sectionsContainer = null; - }; - - HomeTab.prototype.destroyHomeSections = function () { - var sectionsContainer = this.sectionsContainer; + } + destroyHomeSections() { + const sectionsContainer = this.sectionsContainer; if (sectionsContainer) { homeSections.destroySections(sectionsContainer); } - }; + } +} - return HomeTab; -}); +function onHomeScreenSettingsChanged() { + this.sectionsRendered = false; + + if (!this.paused) { + this.onResume({ + refresh: true + }); + } +} + +export default HomeTab; From 0bf23576ee9b95176390ea1b3ba3f6d4c36715c7 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 26 Jul 2020 15:00:09 +0300 Subject: [PATCH 008/463] Extract styles --- .../subtitlesettings/subtitlesettings.css | 26 +++++++++++++++++ .../subtitlesettings/subtitlesettings.js | 1 + .../subtitlesettings.template.html | 29 ------------------- 3 files changed, 27 insertions(+), 29 deletions(-) create mode 100644 src/components/subtitlesettings/subtitlesettings.css diff --git a/src/components/subtitlesettings/subtitlesettings.css b/src/components/subtitlesettings/subtitlesettings.css new file mode 100644 index 0000000000..e8cb9a50b5 --- /dev/null +++ b/src/components/subtitlesettings/subtitlesettings.css @@ -0,0 +1,26 @@ +.subtitleappearance-fullpreview { + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 1000; + pointer-events: none; + transition: 0.2s +} + +.subtitleappearance-fullpreview-hide { + opacity: 0; +} + +.subtitleappearance-fullpreview-window { + position: absolute; + width: 100%; + font-size: 170%; + text-align: center; +} + +.subtitleappearance-fullpreview-text { + display: inline-block; + max-width: 70%; +} diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index 07d83d86ea..f7e37c8212 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -16,6 +16,7 @@ import 'emby-slider'; import 'emby-input'; import 'emby-checkbox'; import 'flexStyles'; +import 'css!./subtitlesettings' /** * Subtitle settings. diff --git a/src/components/subtitlesettings/subtitlesettings.template.html b/src/components/subtitlesettings/subtitlesettings.template.html index 2f49fa4c3e..af9139188c 100644 --- a/src/components/subtitlesettings/subtitlesettings.template.html +++ b/src/components/subtitlesettings/subtitlesettings.template.html @@ -38,35 +38,6 @@ ${HeaderSubtitleAppearance} - -
From 3339315b9cbdca0cd19a37c345d4e5de6f9a84e0 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 26 Jul 2020 18:12:10 +0300 Subject: [PATCH 009/463] Add missing semicolon (Lint) --- src/components/subtitlesettings/subtitlesettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index f7e37c8212..68defc656a 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -16,7 +16,7 @@ import 'emby-slider'; import 'emby-input'; import 'emby-checkbox'; import 'flexStyles'; -import 'css!./subtitlesettings' +import 'css!./subtitlesettings'; /** * Subtitle settings. From 270b717cd032e0d6ca4700d45813cba7479841d0 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 26 Jul 2020 19:25:58 +0300 Subject: [PATCH 010/463] Add missing semicolon (Lint) --- src/components/subtitlesettings/subtitlesettings.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/subtitlesettings/subtitlesettings.css b/src/components/subtitlesettings/subtitlesettings.css index e8cb9a50b5..204757f10f 100644 --- a/src/components/subtitlesettings/subtitlesettings.css +++ b/src/components/subtitlesettings/subtitlesettings.css @@ -6,7 +6,7 @@ left: 0; z-index: 1000; pointer-events: none; - transition: 0.2s + transition: 0.2s; } .subtitleappearance-fullpreview-hide { From 8fb8dacdf1bca533c4021dc9adff35cfd98b9aea Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 26 Jul 2020 22:45:00 +0200 Subject: [PATCH 011/463] Migrate shell, serverNotifications to ES6 + remove searchtab --- package.json | 2 + src/assets/css/librarybrowser.css | 6 - src/components/guide/guide.js | 2 + src/components/itemsrefresher.js | 2 + src/components/notifications/notifications.js | 2 + src/components/playback/playbackmanager.js | 1 + .../recordingcreator/recordingfields.js | 2 + src/controllers/livetv/livetvsuggested.js | 6 - src/controllers/movies/moviesrecommended.js | 6 - src/controllers/music/musicrecommended.js | 6 - src/controllers/shows/tvrecommended.js | 7 - src/plugins/sessionPlayer/plugin.js | 2 + src/scripts/searchtab.js | 57 --- src/scripts/serverNotifications.js | 407 +++++++++--------- src/scripts/shell.js | 43 +- 15 files changed, 239 insertions(+), 312 deletions(-) delete mode 100644 src/scripts/searchtab.js diff --git a/package.json b/package.json index d1831b13ee..12ed63929a 100644 --- a/package.json +++ b/package.json @@ -250,9 +250,11 @@ "src/scripts/inputManager.js", "src/scripts/keyboardNavigation.js", "src/scripts/playlists.js", + "src/scripts/serverNotifications.js", "src/scripts/settings/appSettings.js", "src/scripts/settings/userSettings.js", "src/scripts/settings/webSettings.js", + "src/scripts/shell.js", "src/scripts/taskbutton.js", "src/scripts/themeLoader.js", "src/scripts/touchHelper.js" diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 61815a590f..644dba9371 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -236,12 +236,6 @@ text-align: center; } -.layout-desktop .searchTabButton, -.layout-mobile .searchTabButton, -.layout-tv .headerSearchButton { - display: none !important; -} - .mainDrawer-scrollContainer { padding-bottom: 10vh; } diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index bb4a36497c..e18f053a5a 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -1,6 +1,8 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', 'scrollHelper', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'playbackManager', 'userSettings', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'dom', 'css!./guide.css', 'programStyles', 'material-icons', 'scrollStyles', 'emby-programcell', 'emby-button', 'paper-icon-button-light', 'emby-tabs', 'emby-scroller', 'flexStyles', 'webcomponents'], function (require, inputManager, browser, globalize, connectionManager, scrollHelper, serverNotifications, loading, datetime, focusManager, playbackManager, userSettings, imageLoader, events, layoutManager, itemShortcuts, dom) { 'use strict'; + serverNotifications = serverNotifications.default || serverNotifications; + function showViewSettings(instance) { require(['guide-settings-dialog'], function (guideSettingsDialog) { diff --git a/src/components/itemsrefresher.js b/src/components/itemsrefresher.js index 6da74eef80..f50813a7e0 100644 --- a/src/components/itemsrefresher.js +++ b/src/components/itemsrefresher.js @@ -1,6 +1,8 @@ define(['playbackManager', 'serverNotifications', 'events'], function (playbackManager, serverNotifications, events) { 'use strict'; + serverNotifications = serverNotifications.default || serverNotifications; + function onUserDataChanged(e, apiClient, userData) { var instance = this; diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js index c8480e4f15..d12b14cc01 100644 --- a/src/components/notifications/notifications.js +++ b/src/components/notifications/notifications.js @@ -1,6 +1,8 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'require'], function (serverNotifications, playbackManager, events, globalize, require) { 'use strict'; + serverNotifications = serverNotifications.default || serverNotifications; + function onOneDocumentClick() { document.removeEventListener('click', onOneDocumentClick); document.removeEventListener('keydown', onOneDocumentClick); diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index fe3ff11250..a6fc3942be 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -3455,6 +3455,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (apphost.supports('remotecontrol')) { require(['serverNotifications'], function (serverNotifications) { + serverNotifications = serverNotifications.default || serverNotifications; events.on(serverNotifications, 'ServerShuttingDown', self.setDefaultPlayerActive.bind(self)); events.on(serverNotifications, 'ServerRestarting', self.setDefaultPlayerActive.bind(self)); }); diff --git a/src/components/recordingcreator/recordingfields.js b/src/components/recordingcreator/recordingfields.js index 84348fcfbc..5fc0f24af4 100644 --- a/src/components/recordingcreator/recordingfields.js +++ b/src/components/recordingcreator/recordingfields.js @@ -1,6 +1,8 @@ define(['globalize', 'connectionManager', 'serverNotifications', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'paper-icon-button-light', 'emby-button', 'css!./recordingfields', 'flexStyles'], function (globalize, connectionManager, serverNotifications, require, loading, appHost, dom, recordingHelper, events) { 'use strict'; + serverNotifications = serverNotifications.default || serverNotifications; + function loadData(parent, program, apiClient) { if (program.IsSeries) { parent.querySelector('.recordSeriesContainer').classList.remove('hide'); diff --git a/src/controllers/livetv/livetvsuggested.js b/src/controllers/livetv/livetvsuggested.js index 036eee9fc6..16cee8a496 100644 --- a/src/controllers/livetv/livetvsuggested.js +++ b/src/controllers/livetv/livetvsuggested.js @@ -167,9 +167,6 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize', name: globalize.translate('HeaderSchedule') }, { name: globalize.translate('TabSeries') - }, { - name: globalize.translate('ButtonSearch'), - cssClass: 'searchTabButton' }]; } @@ -253,9 +250,6 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize', case 5: depends.push('controllers/livetv/livetvseriestimers'); break; - - case 6: - depends.push('scripts/searchtab'); } require(depends, function (controllerFactory) { diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index d948c1cef7..11aa6e3fec 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -222,9 +222,6 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu' name: globalize.translate('TabCollections') }, { name: globalize.translate('TabGenres') - }, { - name: globalize.translate('ButtonSearch'), - cssClass: 'searchTabButton' }]; } @@ -291,9 +288,6 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu' case 5: depends.push('controllers/movies/moviegenres'); break; - - case 6: - depends.push('scripts/searchtab'); } require(depends, function (controllerFactory) { diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 3f025799f6..1409d6de3f 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -180,9 +180,6 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', ' name: globalize.translate('TabSongs') }, { name: globalize.translate('TabGenres') - }, { - name: globalize.translate('ButtonSearch'), - cssClass: 'searchTabButton' }]; } @@ -283,9 +280,6 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', ' case 6: depends.push('controllers/music/musicgenres'); break; - - case 7: - depends.push('scripts/searchtab'); } require(depends, function (controllerFactory) { diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index 7edd2ab501..25459b7b6a 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -30,9 +30,6 @@ import 'emby-button'; name: globalize.translate('TabNetworks') }, { name: globalize.translate('TabEpisodes') - }, { - name: globalize.translate('ButtonSearch'), - cssClass: 'searchTabButton' }]; } @@ -217,10 +214,6 @@ import 'emby-button'; case 6: depends = 'controllers/shows/episodes'; break; - - case 7: - depends = 'scripts/searchtab'; - break; } import(depends).then(({default: controllerFactory}) => { diff --git a/src/plugins/sessionPlayer/plugin.js b/src/plugins/sessionPlayer/plugin.js index 084aa027cf..a8cb1e3579 100644 --- a/src/plugins/sessionPlayer/plugin.js +++ b/src/plugins/sessionPlayer/plugin.js @@ -1,6 +1,8 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'], function (playbackManager, events, serverNotifications, connectionManager) { 'use strict'; + serverNotifications = serverNotifications.default || serverNotifications; + function getActivePlayerId() { var info = playbackManager.getPlayerInfo(); return info ? info.id : null; diff --git a/src/scripts/searchtab.js b/src/scripts/searchtab.js deleted file mode 100644 index e012b8a4b2..0000000000 --- a/src/scripts/searchtab.js +++ /dev/null @@ -1,57 +0,0 @@ -define(['searchFields', 'searchResults', 'events'], function (SearchFields, SearchResults, events) { - 'use strict'; - - SearchFields = SearchFields.default || SearchFields; - SearchResults = SearchResults.default || SearchResults; - - function init(instance, tabContent, options) { - tabContent.innerHTML = '
'; - instance.searchFields = new SearchFields({ - element: tabContent.querySelector('.searchFields') - }); - instance.searchResults = new SearchResults({ - element: tabContent.querySelector('.searchResults'), - serverId: ApiClient.serverId(), - parentId: options.parentId, - collectionType: options.collectionType - }); - events.on(instance.searchFields, 'search', function (e, value) { - instance.searchResults.search(value); - }); - } - - function SearchTab(view, tabContent, options) { - var self = this; - options = options || {}; - init(this, tabContent, options); - - self.preRender = function () {}; - - self.renderTab = function () { - var searchFields = this.searchFields; - - if (searchFields) { - searchFields.focus(); - } - }; - } - - SearchTab.prototype.destroy = function () { - var searchFields = this.searchFields; - - if (searchFields) { - searchFields.destroy(); - } - - this.searchFields = null; - var searchResults = this.searchResults; - - if (searchResults) { - searchResults.destroy(); - } - - this.searchResults = null; - }; - - return SearchTab; -}); diff --git a/src/scripts/serverNotifications.js b/src/scripts/serverNotifications.js index 331a75329c..83af40c4e6 100644 --- a/src/scripts/serverNotifications.js +++ b/src/scripts/serverNotifications.js @@ -1,211 +1,216 @@ -define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'inputManager', 'focusManager', 'appRouter'], function (connectionManager, playbackManager, syncPlayManager, events, inputManager, focusManager, appRouter) { - 'use strict'; +import connectionManager from 'connectionManager'; +import playbackManager from 'playbackManager'; +import syncPlayManager from 'syncPlayManager'; +import events from 'events'; +import inputManager from 'inputManager'; +import focusManager from 'focusManager'; +import appRouter from 'appRouter'; - var serverNotifications = {}; +const serverNotifications = {}; - function notifyApp() { - inputManager.notify(); - } +function notifyApp() { + inputManager.notify(); +} - function displayMessage(cmd) { - var args = cmd.Arguments; - if (args.TimeoutMs) { - require(['toast'], function (toast) { - toast({ title: args.Header, text: args.Text }); - }); - } else { - require(['alert'], function (alert) { - alert.default({ title: args.Header, text: args.Text }); - }); - } - } - - function displayContent(cmd, apiClient) { - if (!playbackManager.isPlayingLocally(['Video', 'Book'])) { - appRouter.showItem(cmd.Arguments.ItemId, apiClient.serverId()); - } - } - - function playTrailers(apiClient, itemId) { - apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { - playbackManager.playTrailers(item); +function displayMessage(cmd) { + const args = cmd.Arguments; + if (args.TimeoutMs) { + require(['toast'], function (toast) { + toast({ title: args.Header, text: args.Text }); + }); + } else { + require(['alert'], function (alert) { + alert.default({ title: args.Header, text: args.Text }); }); } +} - function processGeneralCommand(cmd, apiClient) { - console.debug('Received command: ' + cmd.Name); - switch (cmd.Name) { - case 'Select': - inputManager.handleCommand('select'); - return; - case 'Back': - inputManager.handleCommand('back'); - return; - case 'MoveUp': - inputManager.handleCommand('up'); - return; - case 'MoveDown': - inputManager.handleCommand('down'); - return; - case 'MoveLeft': - inputManager.handleCommand('left'); - return; - case 'MoveRight': - inputManager.handleCommand('right'); - return; - case 'PageUp': - inputManager.handleCommand('pageup'); - return; - case 'PageDown': - inputManager.handleCommand('pagedown'); - return; - case 'PlayTrailers': - playTrailers(apiClient, cmd.Arguments.ItemId); - break; - case 'SetRepeatMode': - playbackManager.setRepeatMode(cmd.Arguments.RepeatMode); - break; - case 'SetShuffleQueue': - playbackManager.setQueueShuffleMode(cmd.Arguments.ShuffleMode); - break; - case 'VolumeUp': - inputManager.handleCommand('volumeup'); - return; - case 'VolumeDown': - inputManager.handleCommand('volumedown'); - return; - case 'ChannelUp': - inputManager.handleCommand('channelup'); - return; - case 'ChannelDown': - inputManager.handleCommand('channeldown'); - return; - case 'Mute': - inputManager.handleCommand('mute'); - return; - case 'Unmute': - inputManager.handleCommand('unmute'); - return; - case 'ToggleMute': - inputManager.handleCommand('togglemute'); - return; - case 'SetVolume': - notifyApp(); - playbackManager.setVolume(cmd.Arguments.Volume); - break; - case 'SetAudioStreamIndex': - notifyApp(); - playbackManager.setAudioStreamIndex(parseInt(cmd.Arguments.Index)); - break; - case 'SetSubtitleStreamIndex': - notifyApp(); - playbackManager.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index)); - break; - case 'ToggleFullscreen': - inputManager.handleCommand('togglefullscreen'); - return; - case 'GoHome': - inputManager.handleCommand('home'); - return; - case 'GoToSettings': - inputManager.handleCommand('settings'); - return; - case 'DisplayContent': - displayContent(cmd, apiClient); - break; - case 'GoToSearch': - inputManager.handleCommand('search'); - return; - case 'DisplayMessage': - displayMessage(cmd); - break; - case 'ToggleOsd': - // todo - break; - case 'ToggleContextMenu': - // todo - break; - case 'TakeScreenShot': - // todo - break; - case 'SendKey': - // todo - break; - case 'SendString': - // todo - focusManager.sendText(cmd.Arguments.String); - break; - default: - console.debug('processGeneralCommand does not recognize: ' + cmd.Name); - break; - } - - notifyApp(); +function displayContent(cmd, apiClient) { + if (!playbackManager.isPlayingLocally(['Video', 'Book'])) { + appRouter.showItem(cmd.Arguments.ItemId, apiClient.serverId()); } +} - function onMessageReceived(e, msg) { - var apiClient = this; - if (msg.MessageType === 'Play') { - notifyApp(); - var serverId = apiClient.serverInfo().Id; - if (msg.Data.PlayCommand === 'PlayNext') { - playbackManager.queueNext({ ids: msg.Data.ItemIds, serverId: serverId }); - } else if (msg.Data.PlayCommand === 'PlayLast') { - playbackManager.queue({ ids: msg.Data.ItemIds, serverId: serverId }); - } else { - playbackManager.play({ - ids: msg.Data.ItemIds, - startPositionTicks: msg.Data.StartPositionTicks, - mediaSourceId: msg.Data.MediaSourceId, - audioStreamIndex: msg.Data.AudioStreamIndex, - subtitleStreamIndex: msg.Data.SubtitleStreamIndex, - startIndex: msg.Data.StartIndex, - serverId: serverId - }); - } - } else if (msg.MessageType === 'Playstate') { - if (msg.Data.Command === 'Stop') { - inputManager.handleCommand('stop'); - } else if (msg.Data.Command === 'Pause') { - inputManager.handleCommand('pause'); - } else if (msg.Data.Command === 'Unpause') { - inputManager.handleCommand('play'); - } else if (msg.Data.Command === 'PlayPause') { - inputManager.handleCommand('playpause'); - } else if (msg.Data.Command === 'Seek') { - playbackManager.seek(msg.Data.SeekPositionTicks); - } else if (msg.Data.Command === 'NextTrack') { - inputManager.handleCommand('next'); - } else if (msg.Data.Command === 'PreviousTrack') { - inputManager.handleCommand('previous'); - } else { - notifyApp(); - } - } else if (msg.MessageType === 'GeneralCommand') { - var cmd = msg.Data; - processGeneralCommand(cmd, apiClient); - } else if (msg.MessageType === 'UserDataChanged') { - if (msg.Data.UserId === apiClient.getCurrentUserId()) { - for (var i = 0, length = msg.Data.UserDataList.length; i < length; i++) { - events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]); - } - } - } else if (msg.MessageType === 'SyncPlayCommand') { - syncPlayManager.processCommand(msg.Data, apiClient); - } else if (msg.MessageType === 'SyncPlayGroupUpdate') { - syncPlayManager.processGroupUpdate(msg.Data, apiClient); - } else { - events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]); - } - } - function bindEvents(apiClient) { - events.off(apiClient, 'message', onMessageReceived); - events.on(apiClient, 'message', onMessageReceived); - } - - connectionManager.getApiClients().forEach(bindEvents); - events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) { - bindEvents(newApiClient); +function playTrailers(apiClient, itemId) { + apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { + playbackManager.playTrailers(item); }); - return serverNotifications; +} + +function processGeneralCommand(cmd, apiClient) { + console.debug('Received command: ' + cmd.Name); + switch (cmd.Name) { + case 'Select': + inputManager.handleCommand('select'); + return; + case 'Back': + inputManager.handleCommand('back'); + return; + case 'MoveUp': + inputManager.handleCommand('up'); + return; + case 'MoveDown': + inputManager.handleCommand('down'); + return; + case 'MoveLeft': + inputManager.handleCommand('left'); + return; + case 'MoveRight': + inputManager.handleCommand('right'); + return; + case 'PageUp': + inputManager.handleCommand('pageup'); + return; + case 'PageDown': + inputManager.handleCommand('pagedown'); + return; + case 'PlayTrailers': + playTrailers(apiClient, cmd.Arguments.ItemId); + break; + case 'SetRepeatMode': + playbackManager.setRepeatMode(cmd.Arguments.RepeatMode); + break; + case 'SetShuffleQueue': + playbackManager.setQueueShuffleMode(cmd.Arguments.ShuffleMode); + break; + case 'VolumeUp': + inputManager.handleCommand('volumeup'); + return; + case 'VolumeDown': + inputManager.handleCommand('volumedown'); + return; + case 'ChannelUp': + inputManager.handleCommand('channelup'); + return; + case 'ChannelDown': + inputManager.handleCommand('channeldown'); + return; + case 'Mute': + inputManager.handleCommand('mute'); + return; + case 'Unmute': + inputManager.handleCommand('unmute'); + return; + case 'ToggleMute': + inputManager.handleCommand('togglemute'); + return; + case 'SetVolume': + notifyApp(); + playbackManager.setVolume(cmd.Arguments.Volume); + break; + case 'SetAudioStreamIndex': + notifyApp(); + playbackManager.setAudioStreamIndex(parseInt(cmd.Arguments.Index)); + break; + case 'SetSubtitleStreamIndex': + notifyApp(); + playbackManager.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index)); + break; + case 'ToggleFullscreen': + inputManager.handleCommand('togglefullscreen'); + return; + case 'GoHome': + inputManager.handleCommand('home'); + return; + case 'GoToSettings': + inputManager.handleCommand('settings'); + return; + case 'DisplayContent': + displayContent(cmd, apiClient); + break; + case 'GoToSearch': + inputManager.handleCommand('search'); + return; + case 'DisplayMessage': + displayMessage(cmd); + break; + case 'ToggleOsd': + // todo + break; + case 'ToggleContextMenu': + // todo + break; + case 'TakeScreenShot': + // todo + break; + case 'SendKey': + // todo + break; + case 'SendString': + // todo + focusManager.sendText(cmd.Arguments.String); + break; + default: + console.debug('processGeneralCommand does not recognize: ' + cmd.Name); + break; + } + + notifyApp(); +} + +function onMessageReceived(e, msg) { + const apiClient = this; + if (msg.MessageType === 'Play') { + notifyApp(); + const serverId = apiClient.serverInfo().Id; + if (msg.Data.PlayCommand === 'PlayNext') { + playbackManager.queueNext({ ids: msg.Data.ItemIds, serverId: serverId }); + } else if (msg.Data.PlayCommand === 'PlayLast') { + playbackManager.queue({ ids: msg.Data.ItemIds, serverId: serverId }); + } else { + playbackManager.play({ + ids: msg.Data.ItemIds, + startPositionTicks: msg.Data.StartPositionTicks, + mediaSourceId: msg.Data.MediaSourceId, + audioStreamIndex: msg.Data.AudioStreamIndex, + subtitleStreamIndex: msg.Data.SubtitleStreamIndex, + startIndex: msg.Data.StartIndex, + serverId: serverId + }); + } + } else if (msg.MessageType === 'Playstate') { + if (msg.Data.Command === 'Stop') { + inputManager.handleCommand('stop'); + } else if (msg.Data.Command === 'Pause') { + inputManager.handleCommand('pause'); + } else if (msg.Data.Command === 'Unpause') { + inputManager.handleCommand('play'); + } else if (msg.Data.Command === 'PlayPause') { + inputManager.handleCommand('playpause'); + } else if (msg.Data.Command === 'Seek') { + playbackManager.seek(msg.Data.SeekPositionTicks); + } else if (msg.Data.Command === 'NextTrack') { + inputManager.handleCommand('next'); + } else if (msg.Data.Command === 'PreviousTrack') { + inputManager.handleCommand('previous'); + } else { + notifyApp(); + } + } else if (msg.MessageType === 'GeneralCommand') { + const cmd = msg.Data; + processGeneralCommand(cmd, apiClient); + } else if (msg.MessageType === 'UserDataChanged') { + if (msg.Data.UserId === apiClient.getCurrentUserId()) { + for (let i = 0, length = msg.Data.UserDataList.length; i < length; i++) { + events.trigger(serverNotifications, 'UserDataChanged', [apiClient, msg.Data.UserDataList[i]]); + } + } + } else if (msg.MessageType === 'SyncPlayCommand') { + syncPlayManager.processCommand(msg.Data, apiClient); + } else if (msg.MessageType === 'SyncPlayGroupUpdate') { + syncPlayManager.processGroupUpdate(msg.Data, apiClient); + } else { + events.trigger(serverNotifications, msg.MessageType, [apiClient, msg.Data]); + } +} +function bindEvents(apiClient) { + events.off(apiClient, 'message', onMessageReceived); + events.on(apiClient, 'message', onMessageReceived); +} + +connectionManager.getApiClients().forEach(bindEvents); +events.on(connectionManager, 'apiclientcreated', function (e, newApiClient) { + bindEvents(newApiClient); }); + +export default serverNotifications; diff --git a/src/scripts/shell.js b/src/scripts/shell.js index 4f1aa0c8de..390ddae82c 100644 --- a/src/scripts/shell.js +++ b/src/scripts/shell.js @@ -1,24 +1,21 @@ -define([], function () { - 'use strict'; - - return { - openUrl: function (url, target) { - if (window.NativeShell) { - window.NativeShell.openUrl(url, target); - } else { - window.open(url, target || '_blank'); - } - - }, - enableFullscreen: function () { - if (window.NativeShell) { - window.NativeShell.enableFullscreen(); - } - }, - disableFullscreen: function () { - if (window.NativeShell) { - window.NativeShell.disableFullscreen(); - } +// TODO: This seems like a good candidate for deprecation +export default { + openUrl: function (url, target) { + if (window.NativeShell) { + window.NativeShell.openUrl(url, target); + } else { + window.open(url, target || '_blank'); } - }; -}); + + }, + enableFullscreen: function () { + if (window.NativeShell) { + window.NativeShell.enableFullscreen(); + } + }, + disableFullscreen: function () { + if (window.NativeShell) { + window.NativeShell.disableFullscreen(); + } + } +}; From 4fce7f8be5076cb8cc05546c6ef0b33ebee6f14e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 26 Jul 2020 22:52:55 +0200 Subject: [PATCH 012/463] Migrate scrollHelper to ES6 --- package.json | 1 + .../collectionEditor/collectionEditor.js | 2 +- src/components/dialogHelper/dialogHelper.js | 2 +- src/components/filtermenu/filtermenu.js | 1 + src/components/guide/guide-settings.js | 2 + src/components/guide/guide.js | 2 + .../imageDownloader/imageDownloader.js | 2 + src/components/imageeditor/imageeditor.js | 2 + .../playlisteditor/playlisteditor.js | 2 +- .../recordingcreator/recordingcreator.js | 2 + .../recordingcreator/recordingeditor.js | 2 + .../recordingcreator/seriesrecordingeditor.js | 2 + src/components/refreshdialog/refreshdialog.js | 1 + src/components/sortmenu/sortmenu.js | 1 + .../subtitleeditor/subtitleeditor.js | 1 + src/components/tunerPicker.js | 2 + src/components/viewSettings/viewSettings.js | 1 + src/scripts/scrollHelper.js | 250 +++++++++--------- 18 files changed, 150 insertions(+), 128 deletions(-) diff --git a/package.json b/package.json index 12ed63929a..7a80b89140 100644 --- a/package.json +++ b/package.json @@ -250,6 +250,7 @@ "src/scripts/inputManager.js", "src/scripts/keyboardNavigation.js", "src/scripts/playlists.js", + "src/scripts/scrollHelper.js", "src/scripts/serverNotifications.js", "src/scripts/settings/appSettings.js", "src/scripts/settings/userSettings.js", diff --git a/src/components/collectionEditor/collectionEditor.js b/src/components/collectionEditor/collectionEditor.js index 18cc0d311f..67daad9f2e 100644 --- a/src/components/collectionEditor/collectionEditor.js +++ b/src/components/collectionEditor/collectionEditor.js @@ -212,7 +212,7 @@ import 'flexStyles'; } function centerFocus(elem, horiz, on) { - import('scrollHelper').then(scrollHelper => { + import('scrollHelper').then((scrollHelper) => { const fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); diff --git a/src/components/dialogHelper/dialogHelper.js b/src/components/dialogHelper/dialogHelper.js index ca7c94a416..af1a278cb4 100644 --- a/src/components/dialogHelper/dialogHelper.js +++ b/src/components/dialogHelper/dialogHelper.js @@ -376,7 +376,7 @@ import 'scrollStyles'; } function centerFocus(elem, horiz, on) { - import('scrollHelper').then(scrollHelper => { + import('scrollHelper').then((scrollHelper) => { const fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); diff --git a/src/components/filtermenu/filtermenu.js b/src/components/filtermenu/filtermenu.js index 936e2b0407..075af143d2 100644 --- a/src/components/filtermenu/filtermenu.js +++ b/src/components/filtermenu/filtermenu.js @@ -194,6 +194,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'apphost', function centerFocus(elem, horiz, on) { require(['scrollHelper'], function (scrollHelper) { + scrollHelper = scrollHelper.default || scrollHelper; var fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index 77a3637251..aded7ac5dd 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectionManager', 'require', 'loading', 'scrollHelper', 'emby-checkbox', 'emby-radio', 'css!./../formdialog', 'material-icons'], function (dialogHelper, globalize, userSettings, layoutManager, connectionManager, require, loading, scrollHelper) { 'use strict'; + scrollHelper = scrollHelper.default || scrollHelper; + function saveCategories(context, options) { var categories = []; diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index e18f053a5a..0d3c721e2d 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -1,6 +1,8 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', 'scrollHelper', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'playbackManager', 'userSettings', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'dom', 'css!./guide.css', 'programStyles', 'material-icons', 'scrollStyles', 'emby-programcell', 'emby-button', 'paper-icon-button-light', 'emby-tabs', 'emby-scroller', 'flexStyles', 'webcomponents'], function (require, inputManager, browser, globalize, connectionManager, scrollHelper, serverNotifications, loading, datetime, focusManager, playbackManager, userSettings, imageLoader, events, layoutManager, itemShortcuts, dom) { 'use strict'; + scrollHelper = scrollHelper.default || scrollHelper; + serverNotifications = serverNotifications.default || serverNotifications; function showViewSettings(instance) { diff --git a/src/components/imageDownloader/imageDownloader.js b/src/components/imageDownloader/imageDownloader.js index fbe98c532f..9ad65dd157 100644 --- a/src/components/imageDownloader/imageDownloader.js +++ b/src/components/imageDownloader/imageDownloader.js @@ -1,6 +1,8 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader', 'browser', 'layoutManager', 'scrollHelper', 'globalize', 'require', 'emby-checkbox', 'paper-icon-button-light', 'emby-button', 'formDialogStyle', 'cardStyle'], function (dom, loading, appHost, dialogHelper, connectionManager, imageLoader, browser, layoutManager, scrollHelper, globalize, require) { 'use strict'; + scrollHelper = scrollHelper.default || scrollHelper; + var enableFocusTransform = !browser.slow && !browser.edge; var currentItemId; diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 0a873fa4c7..766304f9aa 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', 'focusManager', 'globalize', 'scrollHelper', 'imageLoader', 'require', 'browser', 'apphost', 'cardStyle', 'formDialogStyle', 'emby-button', 'paper-icon-button-light', 'css!./imageeditor'], function (dialogHelper, connectionManager, loading, dom, layoutManager, focusManager, globalize, scrollHelper, imageLoader, require, browser, appHost) { 'use strict'; + scrollHelper = scrollHelper.default || scrollHelper; + var enableFocusTransform = !browser.slow && !browser.edge; var currentItem; diff --git a/src/components/playlisteditor/playlisteditor.js b/src/components/playlisteditor/playlisteditor.js index 7b1e915e1f..78f0cf3dec 100644 --- a/src/components/playlisteditor/playlisteditor.js +++ b/src/components/playlisteditor/playlisteditor.js @@ -210,7 +210,7 @@ import 'emby-button'; } function centerFocus(elem, horiz, on) { - import('scrollHelper').then(scrollHelper => { + import('scrollHelper').then((scrollHelper) => { const fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index d18d5fcb6c..3b7cbe49aa 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'datetime', 'imageLoader', 'recordingFields', 'events', 'emby-checkbox', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, datetime, imageLoader, recordingFields, events) { 'use strict'; + scrollHelper = scrollHelper.default || scrollHelper; + var currentDialog; var closeAction; var currentRecordingFields; diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index c3f40fcddb..2fde735404 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'scrollStyles', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader) { 'use strict'; + scrollHelper = scrollHelper.default || scrollHelper; + var currentDialog; var recordingDeleted = false; var currentItemId; diff --git a/src/components/recordingcreator/seriesrecordingeditor.js b/src/components/recordingcreator/seriesrecordingeditor.js index a101ce53ec..053dd1a12c 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.js +++ b/src/components/recordingcreator/seriesrecordingeditor.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'datetime', 'scrollStyles', 'emby-button', 'emby-checkbox', 'emby-input', 'emby-select', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader, datetime) { 'use strict'; + scrollHelper = scrollHelper.default || scrollHelper; + var currentDialog; var recordingUpdated = false; var recordingDeleted = false; diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 3edb725c4a..593cc0dc2d 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -42,6 +42,7 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionM function centerFocus(elem, horiz, on) { require(['scrollHelper'], function (scrollHelper) { + scrollHelper = scrollHelper.default || scrollHelper; var fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); diff --git a/src/components/sortmenu/sortmenu.js b/src/components/sortmenu/sortmenu.js index dbf7ef1a7f..abe55a6092 100644 --- a/src/components/sortmenu/sortmenu.js +++ b/src/components/sortmenu/sortmenu.js @@ -17,6 +17,7 @@ define(['require', 'dom', 'focusManager', 'dialogHelper', 'loading', 'layoutMana function centerFocus(elem, horiz, on) { require(['scrollHelper'], function (scrollHelper) { + scrollHelper = scrollHelper.default || scrollHelper; var fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 9c0992c53c..4c33252574 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -420,6 +420,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', function centerFocus(elem, horiz, on) { require(['scrollHelper'], function (scrollHelper) { + scrollHelper = scrollHelper.default || scrollHelper; var fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); diff --git a/src/components/tunerPicker.js b/src/components/tunerPicker.js index e7c92851a4..f064f95152 100644 --- a/src/components/tunerPicker.js +++ b/src/components/tunerPicker.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'dom', 'layoutManager', 'connectionManager', 'globalize', 'loading', 'browser', 'focusManager', 'scrollHelper', 'material-icons', 'formDialogStyle', 'emby-button', 'emby-itemscontainer', 'cardStyle'], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser, focusManager, scrollHelper) { 'use strict'; + scrollHelper = scrollHelper.default || scrollHelper; + var enableFocusTransform = !browser.slow && !browser.edge; function getEditorHtml() { diff --git a/src/components/viewSettings/viewSettings.js b/src/components/viewSettings/viewSettings.js index 28a9854c34..198c0a541c 100644 --- a/src/components/viewSettings/viewSettings.js +++ b/src/components/viewSettings/viewSettings.js @@ -33,6 +33,7 @@ define(['require', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'conne function centerFocus(elem, horiz, on) { require(['scrollHelper'], function (scrollHelper) { + scrollHelper = scrollHelper.default || scrollHelper; var fn = on ? 'on' : 'off'; scrollHelper.centerFocus[fn](elem, horiz); }); diff --git a/src/scripts/scrollHelper.js b/src/scripts/scrollHelper.js index 1a36594026..020888a2e3 100644 --- a/src/scripts/scrollHelper.js +++ b/src/scripts/scrollHelper.js @@ -1,137 +1,137 @@ -define(['focusManager', 'dom', 'scrollStyles'], function (focusManager, dom) { - 'use strict'; +import focusManager from 'focusManager'; +import dom from 'dom'; +import 'scrollStyles'; - function getBoundingClientRect(elem) { +function getBoundingClientRect(elem) { - // Support: BlackBerry 5, iOS 3 (original iPhone) - // If we don't have gBCR, just use 0,0 rather than error - if (elem.getBoundingClientRect) { - return elem.getBoundingClientRect(); - } else { - return { top: 0, left: 0 }; - } + // Support: BlackBerry 5, iOS 3 (original iPhone) + // If we don't have gBCR, just use 0,0 rather than error + if (elem.getBoundingClientRect) { + return elem.getBoundingClientRect(); + } else { + return { top: 0, left: 0 }; + } +} + +export function getPosition(scrollContainer, item, horizontal) { + + const slideeOffset = getBoundingClientRect(scrollContainer); + const itemOffset = getBoundingClientRect(item); + + let offset = horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top; + let size = horizontal ? itemOffset.width : itemOffset.height; + if (!size && size !== 0) { + size = item[horizontal ? 'offsetWidth' : 'offsetHeight']; } - function getPosition(scrollContainer, item, horizontal) { + const currentStart = horizontal ? scrollContainer.scrollLeft : scrollContainer.scrollTop; - var slideeOffset = getBoundingClientRect(scrollContainer); - var itemOffset = getBoundingClientRect(item); + offset += currentStart; - var offset = horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top; - var size = horizontal ? itemOffset.width : itemOffset.height; - if (!size && size !== 0) { - size = item[horizontal ? 'offsetWidth' : 'offsetHeight']; - } + const frameSize = horizontal ? scrollContainer.offsetWidth : scrollContainer.offsetHeight; - var currentStart = horizontal ? scrollContainer.scrollLeft : scrollContainer.scrollTop; + const currentEnd = currentStart + frameSize; - offset += currentStart; - - var frameSize = horizontal ? scrollContainer.offsetWidth : scrollContainer.offsetHeight; - - var currentEnd = currentStart + frameSize; - - var isVisible = offset >= currentStart && (offset + size) <= currentEnd; - - return { - start: offset, - center: (offset - (frameSize / 2) + (size / 2)), - end: offset - frameSize + size, - size: size, - isVisible: isVisible - }; - } - - function toCenter(container, elem, horizontal, skipWhenVisible) { - var pos = getPosition(container, elem, horizontal); - - if (skipWhenVisible && pos.isVisible) { - return; - } - - if (container.scrollTo) { - if (horizontal) { - container.scrollTo(pos.center, 0); - } else { - container.scrollTo(0, pos.center); - } - } else { - if (horizontal) { - container.scrollLeft = Math.round(pos.center); - } else { - container.scrollTop = Math.round(pos.center); - } - } - } - - function toStart(container, elem, horizontal, skipWhenVisible) { - var pos = getPosition(container, elem, horizontal); - - if (skipWhenVisible && pos.isVisible) { - return; - } - - if (container.scrollTo) { - if (horizontal) { - container.scrollTo(pos.start, 0); - } else { - container.scrollTo(0, pos.start); - } - } else { - if (horizontal) { - container.scrollLeft = Math.round(pos.start); - } else { - container.scrollTop = Math.round(pos.start); - } - } - } - - function centerOnFocus(e, scrollSlider, horizontal) { - var focused = focusManager.focusableParent(e.target); - - if (focused) { - toCenter(scrollSlider, focused, horizontal); - } - } - - function centerOnFocusHorizontal(e) { - centerOnFocus(e, this, true); - } - function centerOnFocusVertical(e) { - centerOnFocus(e, this, false); - } + const isVisible = offset >= currentStart && (offset + size) <= currentEnd; return { - getPosition: getPosition, - centerFocus: { - on: function (element, horizontal) { - if (horizontal) { - dom.addEventListener(element, 'focus', centerOnFocusHorizontal, { - capture: true, - passive: true - }); - } else { - dom.addEventListener(element, 'focus', centerOnFocusVertical, { - capture: true, - passive: true - }); - } - }, - off: function (element, horizontal) { - if (horizontal) { - dom.removeEventListener(element, 'focus', centerOnFocusHorizontal, { - capture: true, - passive: true - }); - } else { - dom.removeEventListener(element, 'focus', centerOnFocusVertical, { - capture: true, - passive: true - }); - } + start: offset, + center: (offset - (frameSize / 2) + (size / 2)), + end: offset - frameSize + size, + size: size, + isVisible: isVisible + }; +} + +export function toCenter(container, elem, horizontal, skipWhenVisible) { + const pos = getPosition(container, elem, horizontal); + + if (skipWhenVisible && pos.isVisible) { + return; + } + + if (container.scrollTo) { + if (horizontal) { + container.scrollTo(pos.center, 0); + } else { + container.scrollTo(0, pos.center); + } + } else { + if (horizontal) { + container.scrollLeft = Math.round(pos.center); + } else { + container.scrollTop = Math.round(pos.center); + } + } +} + +export function toStart(container, elem, horizontal, skipWhenVisible) { + const pos = getPosition(container, elem, horizontal); + + if (skipWhenVisible && pos.isVisible) { + return; + } + + if (container.scrollTo) { + if (horizontal) { + container.scrollTo(pos.start, 0); + } else { + container.scrollTo(0, pos.start); + } + } else { + if (horizontal) { + container.scrollLeft = Math.round(pos.start); + } else { + container.scrollTop = Math.round(pos.start); + } + } +} + +function centerOnFocus(e, scrollSlider, horizontal) { + const focused = focusManager.focusableParent(e.target); + + if (focused) { + toCenter(scrollSlider, focused, horizontal); + } +} + +function centerOnFocusHorizontal(e) { + centerOnFocus(e, this, true); +} +function centerOnFocusVertical(e) { + centerOnFocus(e, this, false); +} + +export default { + getPosition: getPosition, + centerFocus: { + on: function (element, horizontal) { + if (horizontal) { + dom.addEventListener(element, 'focus', centerOnFocusHorizontal, { + capture: true, + passive: true + }); + } else { + dom.addEventListener(element, 'focus', centerOnFocusVertical, { + capture: true, + passive: true + }); } }, - toCenter: toCenter, - toStart: toStart - }; -}); + off: function (element, horizontal) { + if (horizontal) { + dom.removeEventListener(element, 'focus', centerOnFocusHorizontal, { + capture: true, + passive: true + }); + } else { + dom.removeEventListener(element, 'focus', centerOnFocusVertical, { + capture: true, + passive: true + }); + } + } + }, + toCenter: toCenter, + toStart: toStart +}; From b6dfeb59fca3dffae15eaa0bdfcedbff94f6e7bb Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 27 Jul 2020 10:26:09 +0100 Subject: [PATCH 013/463] Migration of toast and upnextdialog to ES6 modules --- package.json | 2 + src/components/toast/toast.js | 66 ++++++++++----------- src/components/upnextdialog/upnextdialog.js | 40 ++++++++----- 3 files changed, 60 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index da8c87aedd..e88a68efbd 100644 --- a/package.json +++ b/package.json @@ -156,6 +156,8 @@ "src/components/syncPlay/playbackPermissionManager.js", "src/components/syncPlay/syncPlayManager.js", "src/components/syncPlay/timeSyncManager.js", + "src/components/toast/toast.js", + "src/components/upnextdialog/upnextdialog.js", "src/controllers/session/addServer/index.js", "src/controllers/session/forgotPassword/index.js", "src/controllers/session/redeemPassword/index.js", diff --git a/src/components/toast/toast.js b/src/components/toast/toast.js index 7b8e49e4d2..36226ab8e3 100644 --- a/src/components/toast/toast.js +++ b/src/components/toast/toast.js @@ -1,42 +1,40 @@ -define(['css!./toast'], function () { - 'use strict'; +import 'css!./toast'; - function remove(elem) { +function remove(elem) { - setTimeout(function () { - elem.parentNode.removeChild(elem); - }, 300); + setTimeout(function () { + elem.parentNode.removeChild(elem); + }, 300); +} + +function animateRemove(elem) { + + setTimeout(function () { + + elem.classList.remove('toastVisible'); + remove(elem); + + }, 3300); +} + +export default function (options) { + + if (typeof options === 'string') { + options = { + text: options + }; } - function animateRemove(elem) { + var elem = document.createElement('div'); + elem.classList.add('toast'); + elem.innerHTML = options.text; - setTimeout(function () { + document.body.appendChild(elem); - elem.classList.remove('toastVisible'); - remove(elem); + setTimeout(function () { + elem.classList.add('toastVisible'); - }, 3300); - } + animateRemove(elem); - return function (options) { - - if (typeof options === 'string') { - options = { - text: options - }; - } - - var elem = document.createElement('div'); - elem.classList.add('toast'); - elem.innerHTML = options.text; - - document.body.appendChild(elem); - - setTimeout(function () { - elem.classList.add('toastVisible'); - - animateRemove(elem); - - }, 300); - }; -}); + }, 300); +} diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 3e9c9f9c5e..e45b3d5951 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -1,5 +1,17 @@ -define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'layoutManager', 'focusManager', 'globalize', 'itemHelper', 'css!./upnextdialog', 'emby-button', 'flexStyles'], function (dom, playbackManager, connectionManager, events, mediaInfo, layoutManager, focusManager, globalize, itemHelper) { - 'use strict'; +import dom from 'dom'; +import playbackManager from 'playbackManager'; +import connectionManager from 'connectionManager'; +import events from 'events'; +import mediaInfo from 'mediaInfo'; +import layoutManager from 'layoutManager'; +import focusManager from 'focusManager'; +import globalize from 'globalize'; +import itemHelper from 'itemHelper'; +import 'css!./upnextdialog'; +import 'emby-button'; +import 'flexStyles'; + +/* eslint-disable indent */ var transitionEndEventName = dom.whichTransitionEvent(); @@ -289,14 +301,14 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l instance._countdownTextTimeout = setInterval(setNextVideoText.bind(instance), 400); } - function UpNextDialog(options) { +class UpNextDialog { + constructor(options) { this.options = options; init(this, options); } - - UpNextDialog.prototype.show = function () { + show() { var elem = this.options.parent; @@ -316,20 +328,20 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'l } startComingUpNextHideTimer(this); - }; - - UpNextDialog.prototype.hide = function () { + } + hide() { hideComingUpNext.call(this); - }; - - UpNextDialog.prototype.destroy = function () { + } + destroy() { hideComingUpNext.call(this); this.options = null; this.itemType = null; - }; + } +} - return UpNextDialog; -}); +export default UpNextDialog; + +/* eslint-enable indent */ From 1d74c5c85a57263a051c5bcc6e63dd609f0fa525 Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 27 Jul 2020 10:30:24 +0100 Subject: [PATCH 014/463] Update variables --- src/components/toast/toast.js | 2 +- src/components/upnextdialog/upnextdialog.js | 48 ++++++++++----------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/components/toast/toast.js b/src/components/toast/toast.js index 36226ab8e3..5eacc2787b 100644 --- a/src/components/toast/toast.js +++ b/src/components/toast/toast.js @@ -25,7 +25,7 @@ export default function (options) { }; } - var elem = document.createElement('div'); + const elem = document.createElement('div'); elem.classList.add('toast'); elem.innerHTML = options.text; diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index e45b3d5951..9879f0ed47 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -13,7 +13,7 @@ import 'flexStyles'; /* eslint-disable indent */ - var transitionEndEventName = dom.whichTransitionEvent(); + const transitionEndEventName = dom.whichTransitionEvent(); function seriesImageUrl(item, options) { @@ -79,7 +79,7 @@ import 'flexStyles'; if (item) { - var imgUrl = seriesImageUrl(item, { type: 'Primary' }) || + let imgUrl = seriesImageUrl(item, { type: 'Primary' }) || seriesImageUrl(item, { type: 'Thumb' }) || imageUrl(item, { type: 'Primary' }); @@ -100,7 +100,7 @@ import 'flexStyles'; function getHtml() { - var html = ''; + let html = ''; html += '
'; html += '
'; @@ -137,17 +137,17 @@ import 'flexStyles'; function setNextVideoText() { - var instance = this; + const instance = this; - var elem = instance.options.parent; + const elem = instance.options.parent; - var secondsRemaining = Math.max(Math.round(getTimeRemainingMs(instance) / 1000), 0); + const secondsRemaining = Math.max(Math.round(getTimeRemainingMs(instance) / 1000), 0); console.debug('up next seconds remaining: ' + secondsRemaining); - var timeText = '' + globalize.translate('HeaderSecondsValue', secondsRemaining) + ''; + const timeText = '' + globalize.translate('HeaderSecondsValue', secondsRemaining) + ''; - var nextVideoText = instance.itemType === 'Episode' ? + const nextVideoText = instance.itemType === 'Episode' ? globalize.translate('HeaderNextEpisodePlayingInValue', timeText) : globalize.translate('HeaderNextVideoPlayingInValue', timeText); @@ -156,9 +156,9 @@ import 'flexStyles'; function fillItem(item) { - var instance = this; + const instance = this; - var elem = instance.options.parent; + const elem = instance.options.parent; setPoster(elem.querySelector('.upNextDialog-poster'), item); @@ -167,7 +167,7 @@ import 'flexStyles'; elem.querySelector('.upNextDialog-mediainfo').innerHTML = mediaInfo.getPrimaryMediaInfoHtml(item, { }); - var title = itemHelper.getDisplayName(item); + let title = itemHelper.getDisplayName(item); if (item.SeriesName) { title = item.SeriesName + ' - ' + title; } @@ -188,11 +188,11 @@ import 'flexStyles'; function onStartNowClick() { - var options = this.options; + const options = this.options; if (options) { - var player = options.player; + const player = options.player; this.hide(); @@ -216,7 +216,7 @@ import 'flexStyles'; function clearHideAnimationEventListeners(instance, elem) { - var fn = instance._onHideAnimationComplete; + const fn = instance._onHideAnimationComplete; if (fn) { dom.removeEventListener(elem, transitionEndEventName, fn, { @@ -227,8 +227,8 @@ import 'flexStyles'; function onHideAnimationComplete(e) { - var instance = this; - var elem = e.target; + const instance = this; + const elem = e.target; elem.classList.add('hide'); @@ -238,14 +238,14 @@ import 'flexStyles'; function hideComingUpNext() { - var instance = this; + const instance = this; clearCountdownTextTimeout(this); if (!instance.options) { return; } - var elem = instance.options.parent; + const elem = instance.options.parent; if (!elem) { return; @@ -262,7 +262,7 @@ import 'flexStyles'; elem.classList.add('upNextDialog-hidden'); - var fn = onHideAnimationComplete.bind(instance); + const fn = onHideAnimationComplete.bind(instance); instance._onHideAnimationComplete = fn; dom.addEventListener(elem, transitionEndEventName, fn, { @@ -272,13 +272,13 @@ import 'flexStyles'; function getTimeRemainingMs(instance) { - var options = instance.options; + const options = instance.options; if (options) { - var runtimeTicks = playbackManager.duration(options.player); + const runtimeTicks = playbackManager.duration(options.player); if (runtimeTicks) { - var timeRemainingTicks = runtimeTicks - playbackManager.currentTime(options.player); + const timeRemainingTicks = runtimeTicks - playbackManager.currentTime(options.player); return Math.round(timeRemainingTicks / 10000); } @@ -289,7 +289,7 @@ import 'flexStyles'; function startComingUpNextHideTimer(instance) { - var timeRemainingMs = getTimeRemainingMs(instance); + const timeRemainingMs = getTimeRemainingMs(instance); if (timeRemainingMs <= 0) { return; @@ -310,7 +310,7 @@ class UpNextDialog { } show() { - var elem = this.options.parent; + const elem = this.options.parent; clearHideAnimationEventListeners(this, elem); From 951d3ffc498f1f22735a04b5cdde643fb8f92313 Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 27 Jul 2020 10:32:48 +0100 Subject: [PATCH 015/463] Update site.js --- src/scripts/site.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/scripts/site.js b/src/scripts/site.js index cddf2506a0..85e8c427d0 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -152,13 +152,13 @@ var Dashboard = { processPluginConfigurationUpdateResult: function () { require(['loading', 'toast'], function (loading, toast) { loading.hide(); - toast(Globalize.translate('MessageSettingsSaved')); + toast.default(Globalize.translate('MessageSettingsSaved')); }); }, processServerConfigurationUpdateResult: function (result) { require(['loading', 'toast'], function (loading, toast) { loading.hide(); - toast(Globalize.translate('MessageSettingsSaved')); + toast.default(Globalize.translate('MessageSettingsSaved')); }); }, processErrorResponse: function (response) { @@ -180,7 +180,7 @@ var Dashboard = { alert: function (options) { if ('string' == typeof options) { return void require(['toast'], function (toast) { - toast({ + toast.default({ text: options }); }); From e2b7daf4b70e982a49cd672d9ff0788e419d4368 Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 27 Jul 2020 13:08:16 +0100 Subject: [PATCH 016/463] fix lint --- src/components/imageeditor/imageeditor.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 0a873fa4c7..96c179404a 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -51,7 +51,6 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', var btnBrowseAllImages = page.querySelectorAll('.btnBrowseAllImages'); for (var i = 0, length = btnBrowseAllImages.length; i < length; i++) { - if (providers.length) { btnBrowseAllImages[i].classList.remove('hide'); } else { @@ -60,7 +59,6 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', } apiClient.getItemImageInfos(currentItem.Id).then(function (imageInfos) { - renderStandardImages(page, apiClient, item, imageInfos, providers); renderBackdrops(page, apiClient, item, imageInfos, providers); renderScreenshots(page, apiClient, item, imageInfos, providers); From f9e79c0a4eda2b6aca51244eb59d7541c47a7fdb Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 21:28:16 +0100 Subject: [PATCH 017/463] Migration of list.js and screensavermanager to ES6 modules --- .eslintignore | 1 - package.json | 2 + src/controllers/list.js | 270 ++++++++++++++-------------- src/libraries/screensavermanager.js | 256 +++++++++++++------------- 4 files changed, 264 insertions(+), 265 deletions(-) diff --git a/.eslintignore b/.eslintignore index 8e3aee83fb..74b18ddcf6 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,4 +2,3 @@ node_modules dist .idea .vscode -src/libraries diff --git a/package.json b/package.json index 30c0c481e6..f412c0671a 100644 --- a/package.json +++ b/package.json @@ -188,6 +188,7 @@ "src/controllers/dashboard/users/userparentalcontrol.js", "src/controllers/dashboard/users/userpasswordpage.js", "src/controllers/dashboard/users/userprofilespage.js", + "src/controllers/list.js", "src/controllers/playback/queue/index.js", "src/controllers/playback/video/index.js", "src/controllers/searchpage.js", @@ -230,6 +231,7 @@ "src/elements/emby-tabs/emby-tabs.js", "src/elements/emby-textarea/emby-textarea.js", "src/elements/emby-toggle/emby-toggle.js", + "src/libraries/screensavermanager.js", "src/plugins/backdropScreensaver/plugin.js", "src/plugins/bookPlayer/plugin.js", "src/plugins/bookPlayer/tableOfContents.js", diff --git a/src/controllers/list.js b/src/controllers/list.js index e550b535f4..c7c4b2a31d 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -1,8 +1,21 @@ -define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'scroller', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, scroller, playbackManager, AlphaPicker) { - 'use strict'; +import globalize from 'globalize'; +import listView from 'listView'; +import layoutManager from 'layoutManager'; +import * as userSettings from 'userSettings'; +import focusManager from 'focusManager'; +import cardBuilder from 'cardBuilder'; +import loading from 'loading'; +import connectionManager from 'connectionManager'; +import AlphaNumericShortcuts from 'alphaNumericShortcuts'; +import playbackManager from 'playbackManager'; +import AlphaPicker from 'alphaPicker'; +import 'emby-itemscontainer'; +import 'emby-scroller'; + +/* eslint-disable indent */ function getInitialLiveTvQuery(instance, params) { - var query = { + const query = { UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(), StartIndex: 0, Fields: 'ChannelInfo,PrimaryImageAspectRatio', @@ -59,7 +72,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function modifyQueryWithFilters(instance, query) { - var sortValues = instance.getSortValues(); + const sortValues = instance.getSortValues(); if (!query.SortBy) { query.SortBy = sortValues.sortBy; @@ -68,9 +81,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' query.Fields = query.Fields ? query.Fields + ',PrimaryImageAspectRatio' : 'PrimaryImageAspectRatio'; query.ImageTypeLimit = 1; - var hasFilters; - var queryFilters = []; - var filters = instance.getFilters(); + let hasFilters; + const queryFilters = []; + const filters = instance.getFilters(); if (filters.IsPlayed) { queryFilters.push('IsPlayed'); @@ -164,21 +177,21 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function updateSortText(instance) { - var btnSortText = instance.btnSortText; + const btnSortText = instance.btnSortText; if (btnSortText) { - var options = instance.getSortMenuOptions(); - var values = instance.getSortValues(); - var sortBy = values.sortBy; + const options = instance.getSortMenuOptions(); + const values = instance.getSortValues(); + const sortBy = values.sortBy; - for (var i = 0, length = options.length; i < length; i++) { + for (let i = 0, length = options.length; i < length; i++) { if (sortBy === options[i].value) { btnSortText.innerHTML = globalize.translate('SortByValue', options[i].name); break; } } - var btnSortIcon = instance.btnSortIcon; + const btnSortIcon = instance.btnSortIcon; if (btnSortIcon) { setSortButtonIcon(btnSortIcon, 'Descending' === values.sortOrder ? 'arrow_downward' : 'arrow_upward'); @@ -198,10 +211,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' function updateAlphaPickerState(instance, numItems) { if (instance.alphaPicker) { - var alphaPicker = instance.alphaPickerElement; + const alphaPicker = instance.alphaPickerElement; if (alphaPicker) { - var values = instance.getSortValues(); + const values = instance.getSortValues(); if (null == numItems) { numItems = 100; @@ -219,7 +232,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function getItems(instance, params, item, sortBy, startIndex, limit) { - var apiClient = connectionManager.getApiClient(params.serverId); + const apiClient = connectionManager.getApiClient(params.serverId); instance.queryRecursive = false; if ('Recordings' === params.type) { @@ -248,7 +261,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' if (!item) { instance.queryRecursive = true; - var method = 'getItems'; + let method = 'getItems'; if ('MusicArtist' === params.type) { method = 'getArtists'; @@ -271,7 +284,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' if ('Genre' === item.Type || 'MusicGenre' === item.Type || 'Studio' === item.Type || 'Person' === item.Type) { instance.queryRecursive = true; - var query = { + const query = { StartIndex: startIndex, Limit: limit, Fields: 'PrimaryImageAspectRatio,SortName', @@ -320,8 +333,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' return Promise.resolve(null); } - var apiClient = connectionManager.getApiClient(params.serverId); - var itemId = params.genreId || params.musicGenreId || params.studioId || params.personId || params.parentId; + const apiClient = connectionManager.getApiClient(params.serverId); + const itemId = params.genreId || params.musicGenreId || params.studioId || params.personId || params.parentId; if (itemId) { return apiClient.getItem(apiClient.getCurrentUserId(), itemId); @@ -331,9 +344,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function showViewSettingsMenu() { - var instance = this; + const instance = this; - require(['viewSettings'], function (ViewSettings) { + import('viewSettings').then(({default: ViewSettings}) => { new ViewSettings().show({ settingsKey: instance.getSettingsKey(), settings: instance.getViewSettings(), @@ -346,9 +359,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function showFilterMenu() { - var instance = this; + const instance = this; - require(['filterMenu'], function (FilterMenu) { + import('filterMenu').then(({default: FilterMenu}) => { new FilterMenu().show({ settingsKey: instance.getSettingsKey(), settings: instance.getFilters(), @@ -365,9 +378,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function showSortMenu() { - var instance = this; + const instance = this; - require(['sortMenu'], function (SortMenu) { + import('sortMenu').then(({default: SortMenu}) => { new SortMenu().show({ settingsKey: instance.getSettingsKey(), settings: instance.getSortValues(), @@ -383,9 +396,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function onNewItemClick() { - var instance = this; + const instance = this; - require(['playlistEditor'], function (playlistEditor) { + import('playlistEditor').then(({default: playlistEditor}) => { new playlistEditor.showEditor({ items: [], serverId: instance.params.serverId @@ -394,7 +407,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function hideOrShowAll(elems, hide) { - for (var i = 0, length = elems.length; i < length; i++) { + for (let i = 0, length = elems.length; i < length; i++) { if (hide) { elems[i].classList.add('hide'); } else { @@ -404,12 +417,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function bindAll(elems, eventName, fn) { - for (var i = 0, length = elems.length; i < length; i++) { + for (let i = 0, length = elems.length; i < length; i++) { elems[i].addEventListener(eventName, fn); } } - function ItemsView(view, params) { +class ItemsView { + constructor(view, params) { function fetchData() { return getItems(self, params, self.currentItem).then(function (result) { if (null == self.totalItemCount) { @@ -422,7 +436,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function getItemsHtml(items) { - var settings = self.getViewSettings(); + const settings = self.getViewSettings(); if ('list' === settings.imageType) { return listView.getListViewHtml({ @@ -430,13 +444,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' }); } - var shape; - var preferThumb; - var preferDisc; - var preferLogo; - var defaultShape; - var item = self.currentItem; - var lines = settings.showTitle ? 2 : 0; + let shape; + let preferThumb; + let preferDisc; + let preferLogo; + let defaultShape; + const item = self.currentItem; + let lines = settings.showTitle ? 2 : 0; if ('banner' === settings.imageType) { shape = 'banner'; @@ -460,7 +474,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' shape = 'autoVertical'; } - var posterOptions = { + let posterOptions = { shape: shape, showTitle: settings.showTitle, showYear: settings.showTitle, @@ -493,19 +507,19 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' lines = 1; } else if ('Programs' === params.type) { lines = settings.showTitle ? 1 : 0; - var showParentTitle = settings.showTitle && 'true' !== params.IsMovie; + const showParentTitle = settings.showTitle && 'true' !== params.IsMovie; if (showParentTitle) { lines++; } - var showAirTime = settings.showTitle && 'Recordings' !== params.type; + const showAirTime = settings.showTitle && 'Recordings' !== params.type; if (showAirTime) { lines++; } - var showYear = settings.showTitle && 'true' === params.IsMovie && 'Recordings' === params.type; + const showYear = settings.showTitle && 'true' === params.IsMovie && 'Recordings' === params.type; if (showYear) { lines++; @@ -538,7 +552,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' function initAlphaPicker() { self.scroller = view.querySelector('.scrollFrameY'); - var alphaPickerElement = self.alphaPickerElement; + const alphaPickerElement = self.alphaPickerElement; alphaPickerElement.classList.add('alphaPicker-fixed-right'); alphaPickerElement.classList.add('focuscontainer-right'); @@ -649,7 +663,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function play() { - var currentItem = self.currentItem; + const currentItem = self.currentItem; if (currentItem && !self.hasFilters) { playbackManager.play({ @@ -665,7 +679,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function queue() { - var currentItem = self.currentItem; + const currentItem = self.currentItem; if (currentItem && !self.hasFilters) { playbackManager.queue({ @@ -681,7 +695,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function shuffle() { - var currentItem = self.currentItem; + const currentItem = self.currentItem; if (currentItem && !self.hasFilters) { playbackManager.shuffle(currentItem); @@ -694,7 +708,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } } - var self = this; + const self = this; self.params = params; this.itemsContainer = view.querySelector('.itemsContainer'); @@ -708,20 +722,20 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' this.itemsContainer.setAttribute('data-refreshinterval', '300000'); } - var i; - var length; - var btnViewSettings = view.querySelectorAll('.btnViewSettings'); + let i; + let length; + const btnViewSettings = view.querySelectorAll('.btnViewSettings'); for (i = 0, length = btnViewSettings.length; i < length; i++) { btnViewSettings[i].addEventListener('click', showViewSettingsMenu.bind(this)); } - var filterButtons = view.querySelectorAll('.btnFilter'); + const filterButtons = view.querySelectorAll('.btnFilter'); this.filterButtons = filterButtons; - var hasVisibleFilters = this.getVisibleFilters().length; + const hasVisibleFilters = this.getVisibleFilters().length; for (i = 0, length = filterButtons.length; i < length; i++) { - var btnFilter = filterButtons[i]; + const btnFilter = filterButtons[i]; btnFilter.addEventListener('click', showFilterMenu.bind(this)); if (hasVisibleFilters) { @@ -731,10 +745,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } } - var sortButtons = view.querySelectorAll('.btnSort'); + const sortButtons = view.querySelectorAll('.btnSort'); for (this.sortButtons = sortButtons, i = 0, length = sortButtons.length; i < length; i++) { - var sortButton = sortButtons[i]; + const sortButton = sortButtons[i]; sortButton.addEventListener('click', showSortMenu.bind(this)); if ('nextup' !== params.type) { @@ -749,7 +763,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' self.itemsContainer.fetchData = fetchData; self.itemsContainer.getItemsHtml = getItemsHtml; view.addEventListener('viewshow', function (e) { - var isRestored = e.detail.isRestored; + const isRestored = e.detail.isRestored; if (!isRestored) { loading.show(); @@ -761,7 +775,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' getItem(params).then(function (item) { setTitle(item); self.currentItem = item; - var refresh = !isRestored; + const refresh = !isRestored; self.itemsContainer.resume({ refresh: refresh }).then(function () { @@ -776,7 +790,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' initAlphaPicker(); } - var itemType = item ? item.Type : null; + const itemType = item ? item.Type : null; if ('MusicGenre' === itemType || 'Programs' !== params.type && 'Channel' !== itemType) { hideOrShowAll(view.querySelectorAll('.btnPlay'), false); @@ -808,13 +822,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' }); }); view.addEventListener('viewhide', function (e) { - var itemsContainer = self.itemsContainer; + const itemsContainer = self.itemsContainer; if (itemsContainer) { itemsContainer.pause(); } - var alphaNumericShortcuts = self.alphaNumericShortcuts; + const alphaNumericShortcuts = self.alphaNumericShortcuts; if (alphaNumericShortcuts) { alphaNumericShortcuts.destroy(); @@ -841,9 +855,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' self.alphaPickerElement = null; }); } - - ItemsView.prototype.getFilters = function () { - var basekey = this.getSettingsKey(); + getFilters() { + const basekey = this.getSettingsKey(); return { IsPlayed: 'true' === userSettings.getFilter(basekey + '-filter-IsPlayed'), IsUnplayed: 'true' === userSettings.getFilter(basekey + '-filter-IsUnplayed'), @@ -862,30 +875,27 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' HasThemeVideo: userSettings.getFilter(basekey + '-filter-HasThemeVideo'), GenreIds: userSettings.getFilter(basekey + '-filter-GenreIds') }; - }; - - ItemsView.prototype.getSortValues = function () { - var basekey = this.getSettingsKey(); + } + getSortValues() { + const basekey = this.getSettingsKey(); return { sortBy: userSettings.getFilter(basekey + '-sortby') || this.getDefaultSortBy(), sortOrder: 'Descending' === userSettings.getFilter(basekey + '-sortorder') ? 'Descending' : 'Ascending' }; - }; - - ItemsView.prototype.getDefaultSortBy = function () { - var params = this.params; - var sortNameOption = this.getNameSortOption(params); + } + getDefaultSortBy() { + const params = this.params; + const sortNameOption = this.getNameSortOption(params); if (params.type) { return sortNameOption.value; } return 'IsFolder,' + sortNameOption.value; - }; - - ItemsView.prototype.getSortMenuOptions = function () { - var sortBy = []; - var params = this.params; + } + getSortMenuOptions() { + const sortBy = []; + const params = this.params; if ('Programs' === params.type) { sortBy.push({ @@ -894,7 +904,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' }); } - var option = this.getNameSortOption(params); + let option = this.getNameSortOption(params); if (option) { sortBy.push(option); @@ -952,9 +962,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' value: 'Runtime,SortName' }); return sortBy; - }; - - ItemsView.prototype.getNameSortOption = function (params) { + } + getNameSortOption(params) { if ('Episode' === params.type) { return { name: globalize.translate('Name'), @@ -966,9 +975,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' name: globalize.translate('Name'), value: 'SortName' }; - }; - - ItemsView.prototype.getPlayCountSortOption = function () { + } + getPlayCountSortOption() { if ('Programs' === this.params.type) { return null; } @@ -977,9 +985,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' name: globalize.translate('PlayCount'), value: 'PlayCount,SortName' }; - }; - - ItemsView.prototype.getDatePlayedSortOption = function () { + } + getDatePlayedSortOption() { if ('Programs' === this.params.type) { return null; } @@ -988,9 +995,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' name: globalize.translate('DatePlayed'), value: 'DatePlayed,SortName' }; - }; - - ItemsView.prototype.getCriticRatingSortOption = function () { + } + getCriticRatingSortOption() { if ('Programs' === this.params.type) { return null; } @@ -999,18 +1005,16 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' name: globalize.translate('CriticRating'), value: 'CriticRating,SortName' }; - }; - - ItemsView.prototype.getCommunityRatingSortOption = function () { + } + getCommunityRatingSortOption() { return { name: globalize.translate('CommunityRating'), value: 'CommunityRating,SortName' }; - }; - - ItemsView.prototype.getVisibleFilters = function () { - var filters = []; - var params = this.params; + } + getVisibleFilters() { + const filters = []; + const params = this.params; if (!('nextup' === params.type)) { if ('Programs' === params.type) { @@ -1034,16 +1038,15 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } return filters; - }; - - ItemsView.prototype.setFilterStatus = function (hasFilters) { + } + setFilterStatus(hasFilters) { this.hasFilters = hasFilters; - var filterButtons = this.filterButtons; + const filterButtons = this.filterButtons; if (filterButtons.length) { - for (var i = 0, length = filterButtons.length; i < length; i++) { - var btnFilter = filterButtons[i]; - var bubble = btnFilter.querySelector('.filterButtonBubble'); + for (let i = 0, length = filterButtons.length; i < length; i++) { + const btnFilter = filterButtons[i]; + let bubble = btnFilter.querySelector('.filterButtonBubble'); if (!bubble) { if (!hasFilters) { @@ -1062,10 +1065,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } } } - }; - - ItemsView.prototype.getFilterMenuOptions = function () { - var params = this.params; + } + getFilterMenuOptions() { + const params = this.params; return { IsAiring: params.IsAiring, IsMovie: params.IsMovie, @@ -1075,11 +1077,10 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' IsSeries: params.IsSeries, Recursive: this.queryRecursive }; - }; - - ItemsView.prototype.getVisibleViewSettings = function () { - var item = (this.params, this.currentItem); - var fields = ['showTitle']; + } + getVisibleViewSettings() { + const item = (this.params, this.currentItem); + const fields = ['showTitle']; if (!item || 'PhotoAlbum' !== item.Type && 'ChannelFolderItem' !== item.Type) { fields.push('imageType'); @@ -1087,13 +1088,12 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' fields.push('viewType'); return fields; - }; - - ItemsView.prototype.getViewSettings = function () { - var basekey = this.getSettingsKey(); - var params = this.params; - var item = this.currentItem; - var showTitle = userSettings.get(basekey + '-showTitle'); + } + getViewSettings() { + const basekey = this.getSettingsKey(); + const params = this.params; + const item = this.currentItem; + let showTitle = userSettings.get(basekey + '-showTitle'); if ('true' === showTitle) { showTitle = true; @@ -1105,7 +1105,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' showTitle = true; } - var imageType = userSettings.get(basekey + '-imageType'); + let imageType = userSettings.get(basekey + '-imageType'); if (!imageType && 'nextup' === params.type) { imageType = 'thumb'; @@ -1117,10 +1117,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' imageType: imageType || 'primary', viewType: userSettings.get(basekey + '-viewType') || 'images' }; - }; - - ItemsView.prototype.getItemTypes = function () { - var params = this.params; + } + getItemTypes() { + const params = this.params; if ('nextup' === params.type) { return ['Episode']; @@ -1131,12 +1130,11 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } return []; - }; - - ItemsView.prototype.getSettingsKey = function () { - var values = []; + } + getSettingsKey() { + const values = []; values.push('items'); - var params = this.params; + const params = this.params; if (params.type) { values.push(params.type); @@ -1193,7 +1191,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } return values.join('-'); - }; + } +} - return ItemsView; -}); +export default ItemsView; + +/* eslint-enable indent */ diff --git a/src/libraries/screensavermanager.js b/src/libraries/screensavermanager.js index b9d7082850..61d128ff14 100644 --- a/src/libraries/screensavermanager.js +++ b/src/libraries/screensavermanager.js @@ -1,132 +1,130 @@ -define(["events", "playbackManager", "pluginManager", "inputManager", "connectionManager", "userSettings"], function (events, playbackManager, pluginManager, inputManager, connectionManager, userSettings) { - "use strict"; +import events from 'events'; +import playbackManager from 'playbackManager'; +import pluginManager from 'pluginManager'; +import inputManager from 'inputManager'; +import connectionManager from 'connectionManager'; +import * as userSettings from 'userSettings'; - function getMinIdleTime() { - // Returns the minimum amount of idle time required before the screen saver can be displayed - //time units used Millisecond - return 180000; +function getMinIdleTime() { + // Returns the minimum amount of idle time required before the screen saver can be displayed + //time units used Millisecond + return 180000; +} + +let lastFunctionalEvent = 0; + +function getFunctionalEventIdleTime() { + return new Date().getTime() - lastFunctionalEvent; +} + +events.on(playbackManager, 'playbackstop', function (e, stopInfo) { + const state = stopInfo.state; + if (state.NowPlayingItem && state.NowPlayingItem.MediaType == 'Video') { + lastFunctionalEvent = new Date().getTime(); } - - var lastFunctionalEvent = 0; - - function getFunctionalEventIdleTime() { - return new Date().getTime() - lastFunctionalEvent; - } - - events.on(playbackManager, "playbackstop", function (e, stopInfo) { - var state = stopInfo.state; - if (state.NowPlayingItem && state.NowPlayingItem.MediaType == "Video") { - lastFunctionalEvent = new Date().getTime(); - } - }); - - function getScreensaverPlugin(isLoggedIn) { - - var option; - try { - option = userSettings.get("screensaver", false); - } catch (err) { - option = isLoggedIn ? "backdropscreensaver" : "logoscreensaver"; - } - - var plugins = pluginManager.ofType("screensaver"); - - for (var i = 0, length = plugins.length; i < length; i++) { - var plugin = plugins[i]; - - if (plugin.id === option) { - return plugin; - } - } - - return null; - } - - function ScreenSaverManager() { - - var self = this; - var activeScreenSaver; - - function showScreenSaver(screensaver) { - - if (activeScreenSaver) { - throw new Error("An existing screensaver is already active."); - } - - console.debug("Showing screensaver " + screensaver.name); - - screensaver.show(); - activeScreenSaver = screensaver; - - if (screensaver.hideOnClick !== false) { - window.addEventListener("click", hide, true); - } - if (screensaver.hideOnMouse !== false) { - window.addEventListener("mousemove", hide, true); - } - if (screensaver.hideOnKey !== false) { - window.addEventListener("keydown", hide, true); - } - } - - function hide() { - if (activeScreenSaver) { - console.debug("Hiding screensaver"); - activeScreenSaver.hide(); - activeScreenSaver = null; - } - - window.removeEventListener("click", hide, true); - window.removeEventListener("mousemove", hide, true); - window.removeEventListener("keydown", hide, true); - } - - self.isShowing = function () { - return activeScreenSaver != null; - }; - - self.show = function () { - var isLoggedIn; - var apiClient = connectionManager.currentApiClient(); - - if (apiClient && apiClient.isLoggedIn()) { - isLoggedIn = true; - } - - var screensaver = getScreensaverPlugin(isLoggedIn); - - if (screensaver) { - showScreenSaver(screensaver); - } - }; - - self.hide = function () { - hide(); - }; - - function onInterval() { - - if (self.isShowing()) { - return; - } - - if (inputManager.idleTime() < getMinIdleTime()) { - return; - } - - if (getFunctionalEventIdleTime < getMinIdleTime()) { - return; - } - - if (playbackManager.isPlayingVideo()) { - return; - } - - self.show(); - } - - setInterval(onInterval, 10000); - } - - return new ScreenSaverManager(); }); + +function getScreensaverPlugin(isLoggedIn) { + let option; + try { + option = userSettings.get('screensaver', false); + } catch (err) { + option = isLoggedIn ? 'backdropscreensaver' : 'logoscreensaver'; + } + + const plugins = pluginManager.ofType('screensaver'); + + for (let i = 0, length = plugins.length; i < length; i++) { + const plugin = plugins[i]; + + if (plugin.id === option) { + return plugin; + } + } + + return null; +} + +function ScreenSaverManager() { + let activeScreenSaver; + + function showScreenSaver(screensaver) { + if (activeScreenSaver) { + throw new Error('An existing screensaver is already active.'); + } + + console.debug('Showing screensaver ' + screensaver.name); + + screensaver.show(); + activeScreenSaver = screensaver; + + if (screensaver.hideOnClick !== false) { + window.addEventListener('click', hide, true); + } + if (screensaver.hideOnMouse !== false) { + window.addEventListener('mousemove', hide, true); + } + if (screensaver.hideOnKey !== false) { + window.addEventListener('keydown', hide, true); + } + } + + function hide() { + if (activeScreenSaver) { + console.debug('Hiding screensaver'); + activeScreenSaver.hide(); + activeScreenSaver = null; + } + + window.removeEventListener('click', hide, true); + window.removeEventListener('mousemove', hide, true); + window.removeEventListener('keydown', hide, true); + } + + this.isShowing = () => { + return activeScreenSaver != null; + }; + + this.show = function () { + let isLoggedIn; + const apiClient = connectionManager.currentApiClient(); + + if (apiClient && apiClient.isLoggedIn()) { + isLoggedIn = true; + } + + const screensaver = getScreensaverPlugin(isLoggedIn); + + if (screensaver) { + showScreenSaver(screensaver); + } + }; + + this.hide = function () { + hide(); + }; + + const onInterval = () => { + if (this.isShowing()) { + return; + } + + if (inputManager.idleTime() < getMinIdleTime()) { + return; + } + + if (getFunctionalEventIdleTime < getMinIdleTime()) { + return; + } + + if (playbackManager.isPlayingVideo()) { + return; + } + + this.show(); + }; + + setInterval(onInterval, 10000); +} + +export default new ScreenSaverManager; From d63a229e0ef0573af125e29d8981faf2a89a040f Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 21:43:46 +0100 Subject: [PATCH 018/463] fix lint --- src/libraries/navdrawer/navdrawer.js | 86 ++++++++++++++-------------- src/libraries/scroller.js | 39 ------------- 2 files changed, 43 insertions(+), 82 deletions(-) diff --git a/src/libraries/navdrawer/navdrawer.js b/src/libraries/navdrawer/navdrawer.js index d9c246b406..750dd510b8 100644 --- a/src/libraries/navdrawer/navdrawer.js +++ b/src/libraries/navdrawer/navdrawer.js @@ -1,5 +1,5 @@ -define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, dom) { - "use strict"; +define(['browser', 'dom', 'css!./navdrawer', 'scrollStyles'], function (browser, dom) { + 'use strict'; return function (options) { function getTouches(e) { @@ -7,7 +7,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, } function onMenuTouchStart(e) { - options.target.classList.remove("transition"); + options.target.classList.remove('transition'); var touches = getTouches(e); var touch = touches[0] || {}; menuTouchStartX = touch.clientX; @@ -36,7 +36,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, if (0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5) { dragMode = 1; - scrollContainer.addEventListener("scroll", disableEvent); + scrollContainer.addEventListener('scroll', disableEvent); self.showMask(); } else if (0 === dragMode && Math.abs(deltaY) >= 5) { dragMode = 2; @@ -49,8 +49,8 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, } function onMenuTouchEnd(e) { - options.target.classList.add("transition"); - scrollContainer.removeEventListener("scroll", disableEvent); + options.target.classList.add('transition'); + scrollContainer.removeEventListener('scroll', disableEvent); dragMode = 0; var touches = getTouches(e); var touch = touches[0] || {}; @@ -69,9 +69,9 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, if (((getTouches(e)[0] || {}).clientX || 0) <= options.handleSize) { isPeeking = true; - if (e.type === "touchstart") { - dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}); - dom.addEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}); + if (e.type === 'touchstart') { + dom.removeEventListener(edgeContainer, 'touchmove', onEdgeTouchMove, {}); + dom.addEventListener(edgeContainer, 'touchmove', onEdgeTouchMove, {}); } onMenuTouchStart(e); @@ -88,7 +88,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, function onEdgeTouchEnd(e) { if (isPeeking) { isPeeking = false; - dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {}); + dom.removeEventListener(edgeContainer, 'touchmove', onEdgeTouchMove, {}); onMenuTouchEnd(e); } } @@ -142,8 +142,8 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, function onMaskTransitionEnd() { var classList = mask.classList; - if (!classList.contains("backdrop")) { - classList.add("hide"); + if (!classList.contains('backdrop')) { + classList.add('hide'); } } @@ -155,10 +155,10 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, var startPoint = 0; var countStart = 0; var velocity = 0; - options.target.classList.add("transition"); + options.target.classList.add('transition'); var dragMode = 0; - var scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer"); - scrollContainer.classList.add("scrollY"); + var scrollContainer = options.target.querySelector('.mainDrawer-scrollContainer'); + scrollContainer.classList.add('scrollY'); var TouchMenuLA = function () { self = this; @@ -173,13 +173,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, }; TouchMenuLA.prototype.initElements = function () { - options.target.classList.add("touch-menu-la"); - options.target.style.width = options.width + "px"; - options.target.style.left = -options.width + "px"; + options.target.classList.add('touch-menu-la'); + options.target.style.width = options.width + 'px'; + options.target.style.left = -options.width + 'px'; if (!options.disableMask) { - mask = document.createElement("div"); - mask.className = "tmla-mask hide"; + mask = document.createElement('div'); + mask.className = 'tmla-mask hide'; document.body.appendChild(mask); dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, { passive: true @@ -190,12 +190,12 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, var menuTouchStartX; var menuTouchStartY; var menuTouchStartTime; - var edgeContainer = document.querySelector(".mainDrawerHandle"); + var edgeContainer = document.querySelector('.mainDrawerHandle'); var isPeeking = false; TouchMenuLA.prototype.animateToPosition = function (pos) { requestAnimationFrame(function () { - options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none"; + options.target.style.transform = pos ? 'translateX(' + pos + 'px)' : 'none'; }); }; @@ -206,7 +206,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, }; TouchMenuLA.prototype.clickMaskClose = function () { - mask.addEventListener("click", function () { + mask.addEventListener('click', function () { self.close(); }); }; @@ -233,7 +233,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, this.animateToPosition(options.width); currentPos = options.width; this.isVisible = true; - options.target.classList.add("drawer-open"); + options.target.classList.add('drawer-open'); self.showMask(); self.invoke(options.onChange); }; @@ -242,7 +242,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, this.animateToPosition(0); currentPos = 0; self.isVisible = false; - options.target.classList.remove("drawer-open"); + options.target.classList.remove('drawer-open'); self.hideMask(); self.invoke(options.onChange); }; @@ -259,13 +259,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, var backgroundTouchStartTime; TouchMenuLA.prototype.showMask = function () { - mask.classList.remove("hide"); - mask.classList.add("backdrop"); + mask.classList.remove('hide'); + mask.classList.add('backdrop'); }; TouchMenuLA.prototype.hideMask = function () { - mask.classList.add("hide"); - mask.classList.remove("backdrop"); + mask.classList.add('hide'); + mask.classList.remove('backdrop'); }; TouchMenuLA.prototype.invoke = function (fn) { @@ -282,26 +282,26 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, if (enabled) { if (!_edgeSwipeEnabled) { _edgeSwipeEnabled = true; - dom.addEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { + dom.addEventListener(edgeContainer, 'touchstart', onEdgeTouchStart, { passive: true }); - dom.addEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { + dom.addEventListener(edgeContainer, 'touchend', onEdgeTouchEnd, { passive: true }); - dom.addEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { + dom.addEventListener(edgeContainer, 'touchcancel', onEdgeTouchEnd, { passive: true }); } } else { if (_edgeSwipeEnabled) { _edgeSwipeEnabled = false; - dom.removeEventListener(edgeContainer, "touchstart", onEdgeTouchStart, { + dom.removeEventListener(edgeContainer, 'touchstart', onEdgeTouchStart, { passive: true }); - dom.removeEventListener(edgeContainer, "touchend", onEdgeTouchEnd, { + dom.removeEventListener(edgeContainer, 'touchend', onEdgeTouchEnd, { passive: true }); - dom.removeEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, { + dom.removeEventListener(edgeContainer, 'touchcancel', onEdgeTouchEnd, { passive: true }); } @@ -320,26 +320,26 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, self.initElements(); if (browser.touch) { - dom.addEventListener(options.target, "touchstart", onMenuTouchStart, { + dom.addEventListener(options.target, 'touchstart', onMenuTouchStart, { passive: true }); - dom.addEventListener(options.target, "touchmove", onMenuTouchMove, { + dom.addEventListener(options.target, 'touchmove', onMenuTouchMove, { passive: true }); - dom.addEventListener(options.target, "touchend", onMenuTouchEnd, { + dom.addEventListener(options.target, 'touchend', onMenuTouchEnd, { passive: true }); - dom.addEventListener(options.target, "touchcancel", onMenuTouchEnd, { + dom.addEventListener(options.target, 'touchcancel', onMenuTouchEnd, { passive: true }); - dom.addEventListener(mask, "touchstart", onBackgroundTouchStart, { + dom.addEventListener(mask, 'touchstart', onBackgroundTouchStart, { passive: true }); - dom.addEventListener(mask, "touchmove", onBackgroundTouchMove, {}); - dom.addEventListener(mask, "touchend", onBackgroundTouchEnd, { + dom.addEventListener(mask, 'touchmove', onBackgroundTouchMove, {}); + dom.addEventListener(mask, 'touchend', onBackgroundTouchEnd, { passive: true }); - dom.addEventListener(mask, "touchcancel", onBackgroundTouchEnd, { + dom.addEventListener(mask, 'touchcancel', onBackgroundTouchEnd, { passive: true }); } diff --git a/src/libraries/scroller.js b/src/libraries/scroller.js index 645a8ea85c..464b31059d 100644 --- a/src/libraries/scroller.js +++ b/src/libraries/scroller.js @@ -52,8 +52,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc var dragTouchEvents = ['touchmove', 'touchend']; var wheelEvent = (document.implementation.hasFeature('Event.wheel', '3.0') ? 'wheel' : 'mousewheel'); var interactiveElements = ['INPUT', 'SELECT', 'TEXTAREA']; - var tmpArray = []; - var time; // Math shorthands var abs = Math.abs; @@ -61,10 +59,8 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc var pow = Math.pow; var round = Math.round; var max = Math.max; - var min = Math.min; var scrollerFactory = function (frame, options) { - // Extend options var o = Object.assign({}, { slidee: null, // Selector, DOM element, or jQuery object with DOM element representing SLIDEE. @@ -97,11 +93,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc // native smooth scroll options.enableNativeScroll = true; } else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) { - // transform is the only way to guarantee animation options.enableNativeScroll = false; } else if (!layoutManager.tv || !browser.animate) { - options.enableNativeScroll = true; } @@ -162,9 +156,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc var frameSize = 0; var slideeSize = 0; function ensureSizeInfo() { - if (requiresReflow) { - requiresReflow = false; // Reset global variables @@ -186,11 +178,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc * @return {Void} */ function load(isInit) { - requiresReflow = true; if (!isInit) { - ensureSizeInfo(); // Fix possible overflowing @@ -200,7 +190,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc } function initFrameResizeObserver() { - var observerOptions = {}; self.frameResizeObserver = new ResizeObserver(onResize, observerOptions); @@ -225,16 +214,13 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc }; function nativeScrollTo(container, pos, immediate) { - if (container.scroll) { if (o.horizontal) { - container.scroll({ left: pos, behavior: immediate ? 'instant' : 'smooth' }); } else { - container.scroll({ top: pos, behavior: immediate ? 'instant' : 'smooth' @@ -266,14 +252,12 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc * @return {Void} */ self.slideTo = function (newPos, immediate, fullItemPos) { - ensureSizeInfo(); var pos = self._pos; newPos = within(newPos, pos.start, pos.end); if (!transform) { - nativeScrollTo(nativeScrollElement, newPos, immediate); return; } @@ -291,7 +275,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc } if (!immediate && o.skipSlideToWhenVisible && fullItemPos && fullItemPos.isVisible) { - return; } @@ -303,7 +286,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc }; function setStyleProperty(elem, name, value, speed, resetTransition) { - var style = elem.style; if (resetTransition || browser.edge) { @@ -325,7 +307,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc } function renderAnimateWithTransform(fromPosition, toPosition, immediate) { - var speed = o.speed; if (immediate) { @@ -343,7 +324,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc } function getBoundingClientRect(elem) { - // Support: BlackBerry 5, iOS 3 (original iPhone) // If we don't have gBCR, just use 0,0 rather than error if (elem.getBoundingClientRect) { @@ -361,14 +341,10 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc * @return {Object} */ self.getPos = function (item) { - var scrollElement = transform ? slideeElement : nativeScrollElement; var slideeOffset = getBoundingClientRect(scrollElement); var itemOffset = getBoundingClientRect(item); - var slideeStartPos = o.horizontal ? slideeOffset.left : slideeOffset.top; - var slideeEndPos = o.horizontal ? slideeOffset.right : slideeOffset.bottom; - var offset = o.horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top; var size = o.horizontal ? itemOffset.width : itemOffset.height; @@ -405,7 +381,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc }; self.getCenterPosition = function (item) { - ensureSizeInfo(); var pos = self.getPos(item); @@ -450,7 +425,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc // Bind dragging events if (transform) { - if (isTouch) { dragTouchEvents.forEach(function (eventName) { dom.addEventListener(document, eventName, dragHandler, { @@ -554,9 +528,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc * @return {Boolean} */ function isInteractive(element) { - while (element) { - if (interactiveElements.indexOf(element.tagName) !== -1) { return true; } @@ -592,7 +564,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc * @return {Void} */ function scrollHandler(event) { - ensureSizeInfo(); var pos = self._pos; // Ignore if there is no scrolling to be done @@ -609,7 +580,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc self.slideBy(o.scrollBy * delta); } else { - if (isSmoothScrollSupported) { delta *= 12; } @@ -628,7 +598,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc * @return {Void} */ self.destroy = function () { - if (self.frameResizeObserver) { self.frameResizeObserver.disconnect(); self.frameResizeObserver = null; @@ -664,11 +633,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc var contentRect = {}; function onResize(entries) { - var entry = entries[0]; if (entry) { - var newRect = entry.contentRect; // handle element being hidden @@ -677,7 +644,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc } if (newRect.width !== contentRect.width || newRect.height !== contentRect.height) { - contentRect = newRect; load(false); @@ -703,7 +669,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc } self.getScrollPosition = function () { - if (transform) { return self._pos.cur; } @@ -716,7 +681,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc }; self.getScrollSize = function () { - if (transform) { return slideeSize; } @@ -792,7 +756,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc initFrameResizeObserver(); if (transform) { - dom.addEventListener(dragSourceElement, 'touchstart', dragInitSlidee, { passive: true }); @@ -809,9 +772,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc passive: true }); } - } else if (o.horizontal) { - // Don't bind to mouse events with vertical scroll since the mouse wheel can handle this natively if (o.mouseWheel) { From 612d74fd2c2054c17f96549238935ebab4c2d4ab Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 22:04:01 +0100 Subject: [PATCH 019/463] Migration of home and librarymenu to ES6 modules --- package.json | 2 + .../dashboard/plugins/available/index.js | 2 + .../dashboard/plugins/installed/index.js | 2 + src/controllers/home.js | 118 +++++----- src/controllers/itemDetails/index.js | 2 + src/controllers/movies/moviesrecommended.js | 2 + src/controllers/music/musicrecommended.js | 2 + src/scripts/libraryMenu.js | 216 ++++++++++-------- 8 files changed, 190 insertions(+), 156 deletions(-) diff --git a/package.json b/package.json index edda337f2c..6276da0e43 100644 --- a/package.json +++ b/package.json @@ -188,6 +188,7 @@ "src/controllers/dashboard/users/userparentalcontrol.js", "src/controllers/dashboard/users/userpasswordpage.js", "src/controllers/dashboard/users/userprofilespage.js", + "src/controllers/home.js", "src/controllers/playback/queue/index.js", "src/controllers/playback/video/index.js", "src/controllers/searchpage.js", @@ -248,6 +249,7 @@ "src/scripts/imagehelper.js", "src/scripts/inputManager.js", "src/scripts/keyboardNavigation.js", + "src/scripts/libraryMenu.js", "src/scripts/playlists.js", "src/scripts/settings/appSettings.js", "src/scripts/settings/userSettings.js", diff --git a/src/controllers/dashboard/plugins/available/index.js b/src/controllers/dashboard/plugins/available/index.js index 1f202d6ff6..473b1b8961 100644 --- a/src/controllers/dashboard/plugins/available/index.js +++ b/src/controllers/dashboard/plugins/available/index.js @@ -1,6 +1,8 @@ define(['loading', 'libraryMenu', 'globalize', 'cardStyle', 'emby-button', 'emby-checkbox', 'emby-select'], function (loading, libraryMenu, globalize) { 'use strict'; + libraryMenu = LibraryMenu.default || libraryMenu; + function reloadList(page) { loading.show(); var promise1 = ApiClient.getAvailablePlugins(); diff --git a/src/controllers/dashboard/plugins/installed/index.js b/src/controllers/dashboard/plugins/installed/index.js index d28a04cb2b..014fbf16c2 100644 --- a/src/controllers/dashboard/plugins/installed/index.js +++ b/src/controllers/dashboard/plugins/installed/index.js @@ -1,6 +1,8 @@ define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button'], function (loading, libraryMenu, dom, globalize) { 'use strict'; + libraryMenu = LibraryMenu.default || libraryMenu; + function deletePlugin(page, uniqueid, name) { var msg = globalize.translate('UninstallPluginConfirmation', name); diff --git a/src/controllers/home.js b/src/controllers/home.js index 9a4cea2227..f3e9e8e22b 100644 --- a/src/controllers/home.js +++ b/src/controllers/home.js @@ -1,75 +1,77 @@ -define(['tabbedView', 'globalize', 'require', 'emby-tabs', 'emby-button', 'emby-scroller'], function (TabbedView, globalize, require) { - 'use strict'; +import TabbedView from 'tabbedView'; +import globalize from 'globalize'; +import require from 'require'; +import 'emby-tabs'; +import 'emby-button'; +import 'emby-scroller'; - function getTabs() { - return [{ - name: globalize.translate('Home') - }, { - name: globalize.translate('Favorites') - }]; +function getTabs() { + return [{ + name: globalize.translate('Home') + }, { + name: globalize.translate('Favorites') + }]; +} + +function getDefaultTabIndex() { + return 0; +} + +function getRequirePromise(deps) { + return new Promise(function (resolve, reject) { + require(deps, resolve); + }); +} + +function getTabController(index) { + if (null == index) { + throw new Error('index cannot be null'); } - function getDefaultTabIndex() { - return 0; + const depends = []; + + switch (index) { + case 0: + depends.push('controllers/hometab'); + break; + + case 1: + depends.push('controllers/favorites'); } - function getRequirePromise(deps) { - return new Promise(function (resolve, reject) { - require(deps, resolve); - }); - } + const instance = this; + return getRequirePromise(depends).then(function (controllerFactory) { + let controller = instance.tabControllers[index]; - function getTabController(index) { - if (null == index) { - throw new Error('index cannot be null'); + if (!controller) { + controller = new controllerFactory(instance.view.querySelector(".tabContent[data-index='" + index + "']"), instance.params); + instance.tabControllers[index] = controller; } - var depends = []; + return controller; + }); +} - switch (index) { - case 0: - depends.push('controllers/hometab'); - break; - - case 1: - depends.push('controllers/favorites'); - } - - var instance = this; - return getRequirePromise(depends).then(function (controllerFactory) { - var controller = instance.tabControllers[index]; - - if (!controller) { - controller = new controllerFactory(instance.view.querySelector(".tabContent[data-index='" + index + "']"), instance.params); - instance.tabControllers[index] = controller; - } - - return controller; - }); - } - - function HomeView(view, params) { +class HomeView { + constructor(view, params) { TabbedView.call(this, view, params); } - - Object.assign(HomeView.prototype, TabbedView.prototype); - HomeView.prototype.getTabs = getTabs; - HomeView.prototype.getDefaultTabIndex = getDefaultTabIndex; - HomeView.prototype.getTabController = getTabController; - - HomeView.prototype.setTitle = function () { + setTitle() { Emby.Page.setTitle(null); - }; - - HomeView.prototype.onPause = function () { + } + onPause() { TabbedView.prototype.onPause.call(this); document.querySelector('.skinHeader').classList.remove('noHomeButtonHeader'); - }; - - HomeView.prototype.onResume = function (options) { + } + onResume(options) { TabbedView.prototype.onResume.call(this, options); document.querySelector('.skinHeader').classList.add('noHomeButtonHeader'); - }; + } +} - return HomeView; -}); +Object.assign(HomeView.prototype, TabbedView.prototype); +HomeView.prototype.getTabs = getTabs; +HomeView.prototype.getDefaultTabIndex = getDefaultTabIndex; +HomeView.prototype.getTabController = getTabController; + +export default HomeView; diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 29aa8ad1e1..49412c4ac4 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1,6 +1,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSettings', 'cardBuilder', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'itemContextMenu', 'itemHelper', 'dom', 'indicators', 'imageLoader', 'libraryMenu', 'globalize', 'browser', 'events', 'playbackManager', 'scrollStyles', 'emby-itemscontainer', 'emby-checkbox', 'emby-button', 'emby-playstatebutton', 'emby-ratingbutton', 'emby-scroller', 'emby-select'], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, imageLoader, libraryMenu, globalize, browser, events, playbackManager) { 'use strict'; + libraryMenu = LibraryMenu.default || libraryMenu; + function getPromise(apiClient, params) { var id = params.id; diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 4ffe7888cf..96e98452db 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -1,6 +1,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu', 'mainTabsManager', 'cardBuilder', 'dom', 'imageLoader', 'playbackManager', 'globalize', 'emby-scroller', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager, globalize) { 'use strict'; + libraryMenu = LibraryMenu.default || libraryMenu; + function enableScrollX() { return !layoutManager.desktop; } diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 0eecef0bfb..01b907a893 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -1,6 +1,8 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', 'cardBuilder', 'dom', 'apphost', 'imageLoader', 'libraryMenu', 'playbackManager', 'mainTabsManager', 'globalize', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button', 'flexStyles'], function (browser, layoutManager, userSettings, inputManager, loading, cardBuilder, dom, appHost, imageLoader, libraryMenu, playbackManager, mainTabsManager, globalize) { 'use strict'; + libraryMenu = LibraryMenu.default || libraryMenu; + function itemsPerRow() { var screenWidth = dom.getWindowSize().innerWidth; diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 961d89dc05..86a8d38079 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -1,8 +1,26 @@ -define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', 'viewManager', 'libraryBrowser', 'appRouter', 'apphost', 'playbackManager', 'syncPlayManager', 'groupSelectionMenu', 'browser', 'globalize', 'scripts/imagehelper', 'paper-icon-button-light', 'material-icons', 'scrollStyles', 'flexStyles'], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, syncPlayManager, groupSelectionMenu, browser, globalize, imageHelper) { - 'use strict'; +import dom from 'dom'; +import layoutManager from 'layoutManager'; +import inputManager from 'inputManager'; +import connectionManager from 'connectionManager'; +import events from 'events'; +import viewManager from 'viewManager'; +import appRouter from 'appRouter'; +import appHost from 'apphost'; +import playbackManager from 'playbackManager'; +import syncPlayManager from 'syncPlayManager'; +import groupSelectionMenu from 'groupSelectionMenu'; +import browser from 'browser'; +import globalize from 'globalize'; +import imageHelper from 'scripts/imagehelper'; +import 'paper-icon-button-light'; +import 'material-icons'; +import 'scrollStyles'; +import 'flexStyles'; + +/* eslint-disable indent */ function renderHeader() { - var html = ''; + let html = ''; html += '
'; html += '
'; html += ''; @@ -56,11 +74,11 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function updateUserInHeader(user) { - var hasImage; + let hasImage; if (user && user.name) { if (user.imageUrl) { - var url = user.imageUrl; + const url = user.imageUrl; updateHeaderUserButton(url); hasImage = true; } @@ -87,9 +105,9 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' headerCastButton.classList.remove('hide'); } - var policy = user.Policy ? user.Policy : user.localUser.Policy; + const policy = user.Policy ? user.Policy : user.localUser.Policy; - var apiClient = getCurrentApiClient(); + const apiClient = getCurrentApiClient(); if (headerSyncButton && policy && policy.SyncPlayAccess !== 'None' && apiClient.isMinServerVersion('10.6.0')) { headerSyncButton.classList.remove('hide'); } @@ -139,7 +157,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' mainDrawerButton.addEventListener('click', toggleMainDrawer); } - var headerBackButton = skinHeader.querySelector('.headerBackButton'); + const headerBackButton = skinHeader.querySelector('.headerBackButton'); if (headerBackButton) { headerBackButton.addEventListener('click', onBackClick); @@ -181,7 +199,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function onCastButtonClicked() { - var btn = this; + const btn = this; require(['playerSelectionMenu'], function (playerSelectionMenu) { playerSelectionMenu.show(btn); @@ -189,12 +207,12 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function onSyncButtonClicked() { - var btn = this; + const btn = this; groupSelectionMenu.show(btn); } function onSyncPlayEnabled(event, enabled) { - var icon = headerSyncButton.querySelector('span'); + const icon = headerSyncButton.querySelector('span'); icon.classList.remove('sync', 'sync_disabled', 'sync_problem'); if (enabled) { icon.classList.add('sync'); @@ -204,7 +222,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function onSyncPlaySyncing(event, is_syncing, syncMethod) { - var icon = headerSyncButton.querySelector('span'); + const icon = headerSyncButton.querySelector('span'); icon.classList.remove('sync', 'sync_disabled', 'sync_problem'); if (is_syncing) { icon.classList.add('sync_problem'); @@ -250,7 +268,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function refreshLibraryInfoInDrawer(user, drawer) { - var html = ''; + let html = ''; html += '
'; html += '' + globalize.translate('ButtonHome') + ''; @@ -286,12 +304,12 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' // add buttons to navigation drawer navDrawerScrollContainer.innerHTML = html; - var btnSettings = navDrawerScrollContainer.querySelector('.btnSettings'); + const btnSettings = navDrawerScrollContainer.querySelector('.btnSettings'); if (btnSettings) { btnSettings.addEventListener('click', onSettingsClick); } - var btnLogout = navDrawerScrollContainer.querySelector('.btnLogout'); + const btnLogout = navDrawerScrollContainer.querySelector('.btnLogout'); if (btnLogout) { btnLogout.addEventListener('click', onLogoutClick); } @@ -313,20 +331,20 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function updateDashboardMenuSelectedItem() { - var links = navDrawerScrollContainer.querySelectorAll('.navMenuOption'); - var currentViewId = viewManager.currentView().id; + const links = navDrawerScrollContainer.querySelectorAll('.navMenuOption'); + const currentViewId = viewManager.currentView().id; - for (var i = 0, length = links.length; i < length; i++) { - var link = links[i]; - var selected = false; - var pageIds = link.getAttribute('data-pageids'); + for (let i = 0, length = links.length; i < length; i++) { + let link = links[i]; + let selected = false; + let pageIds = link.getAttribute('data-pageids'); if (pageIds) { pageIds = pageIds.split('|'); selected = -1 != pageIds.indexOf(currentViewId); } - var pageUrls = link.getAttribute('data-pageurls'); + let pageUrls = link.getAttribute('data-pageurls'); if (pageUrls) { pageUrls = pageUrls.split('|'); @@ -335,7 +353,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' if (selected) { link.classList.add('navMenuOption-selected'); - var title = ''; + let title = ''; link = link.querySelector('.navMenuOptionText') || link; title += (link.innerText || link.textContent).trim(); LibraryMenu.setTitle(title); @@ -346,7 +364,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function createToolsMenuList(pluginItems) { - var links = [{ + const links = [{ name: globalize.translate('TabServer') }, { name: globalize.translate('TabDashboard'), @@ -458,8 +476,8 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function addPluginPagesToMainMenu(links, pluginItems, section) { - for (var i = 0, length = pluginItems.length; i < length; i++) { - var pluginItem = pluginItems[i]; + for (let i = 0, length = pluginItems.length; i < length; i++) { + const pluginItem = pluginItems[i]; if (pluginItem.EnableInMainMenu && pluginItem.MenuSection === section) { links.push({ @@ -479,10 +497,10 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function getToolsLinkHtml(item) { - var menuHtml = ''; - var pageIds = item.pageIds ? item.pageIds.join('|') : ''; + let menuHtml = ''; + let pageIds = item.pageIds ? item.pageIds.join('|') : ''; pageIds = pageIds ? ' data-pageids="' + pageIds + '"' : ''; - var pageUrls = item.pageUrls ? item.pageUrls.join('|') : ''; + let pageUrls = item.pageUrls ? item.pageUrls.join('|') : ''; pageUrls = pageUrls ? ' data-pageurls="' + pageUrls + '"' : ''; menuHtml += ''; @@ -498,11 +516,11 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' function getToolsMenuHtml(apiClient) { return getToolsMenuLinks(apiClient).then(function (items) { - var item; - var menuHtml = ''; + let item; + let menuHtml = ''; menuHtml += '
'; - for (var i = 0; i < items.length; i++) { + for (let i = 0; i < items.length; i++) { item = items[i]; if (item.href) { @@ -520,7 +538,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' function createDashboardMenu(apiClient) { return getToolsMenuHtml(apiClient).then(function (toolsMenuHtml) { - var html = ''; + let html = ''; html += ''; @@ -531,24 +549,24 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function onSidebarLinkClick() { - var section = this.getElementsByClassName('sectionName')[0]; - var text = section ? section.innerHTML : this.innerHTML; + const section = this.getElementsByClassName('sectionName')[0]; + const text = section ? section.innerHTML : this.innerHTML; LibraryMenu.setTitle(text); } function getUserViews(apiClient, userId) { return apiClient.getUserViews({}, userId).then(function (result) { - var items = result.Items; - var list = []; + const items = result.Items; + const list = []; - for (var i = 0, length = items.length; i < length; i++) { - var view = items[i]; + for (let i = 0, length = items.length; i < length; i++) { + const view = items[i]; list.push(view); if ('livetv' == view.CollectionType) { view.ImageTags = {}; view.icon = 'live_tv'; - var guideView = Object.assign({}, view); + const guideView = Object.assign({}, view); guideView.Name = globalize.translate('ButtonGuide'); guideView.ImageTags = {}; guideView.icon = 'dvr'; @@ -562,7 +580,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function showBySelector(selector, show) { - var elem = document.querySelector(selector); + const elem = document.querySelector(selector); if (elem) { if (show) { @@ -592,17 +610,17 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' showBySelector('.libraryMenuDownloads', false); } - var userId = Dashboard.getCurrentUserId(); - var apiClient = getCurrentApiClient(); - var libraryMenuOptions = document.querySelector('.libraryMenuOptions'); + const userId = Dashboard.getCurrentUserId(); + const apiClient = getCurrentApiClient(); + const libraryMenuOptions = document.querySelector('.libraryMenuOptions'); if (libraryMenuOptions) { getUserViews(apiClient, userId).then(function (result) { - var items = result; - var html = `

${globalize.translate('HeaderMedia')}

`; + const items = result; + let html = `

${globalize.translate('HeaderMedia')}

`; html += items.map(function (i) { - var icon = i.icon || imageHelper.getLibraryIcon(i.CollectionType); - var itemId = i.Id; + const icon = i.icon || imageHelper.getLibraryIcon(i.CollectionType); + const itemId = i.Id; const linkHtml = ` @@ -612,8 +630,8 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' return linkHtml; }).join(''); libraryMenuOptions.innerHTML = html; - var elem = libraryMenuOptions; - var sidebarLinks = elem.querySelectorAll('.navMenuOption'); + const elem = libraryMenuOptions; + const sidebarLinks = elem.querySelectorAll('.navMenuOption'); for (const sidebarLink of sidebarLinks) { sidebarLink.removeEventListener('click', onSidebarLinkClick); @@ -642,9 +660,9 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function updateCastIcon() { - var context = document; - var info = playbackManager.getPlayerInfo(); - var icon = headerCastButton.querySelector('.material-icons'); + const context = document; + const info = playbackManager.getPlayerInfo(); + const icon = headerCastButton.querySelector('.material-icons'); icon.classList.remove('cast_connected', 'cast'); @@ -660,18 +678,16 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function updateLibraryNavLinks(page) { - var i; - var length; - var isLiveTvPage = page.classList.contains('liveTvPage'); - var isChannelsPage = page.classList.contains('channelsPage'); - var isEditorPage = page.classList.contains('metadataEditorPage'); - var isMySyncPage = page.classList.contains('mySyncPage'); - var id = isLiveTvPage || isChannelsPage || isEditorPage || isMySyncPage || page.classList.contains('allLibraryPage') ? '' : getTopParentId() || ''; - var elems = document.getElementsByClassName('lnkMediaFolder'); + const isLiveTvPage = page.classList.contains('liveTvPage'); + const isChannelsPage = page.classList.contains('channelsPage'); + const isEditorPage = page.classList.contains('metadataEditorPage'); + const isMySyncPage = page.classList.contains('mySyncPage'); + const id = isLiveTvPage || isChannelsPage || isEditorPage || isMySyncPage || page.classList.contains('allLibraryPage') ? '' : getTopParentId() || ''; + const elems = document.getElementsByClassName('lnkMediaFolder'); - for (var i = 0, length = elems.length; i < length; i++) { - var lnkMediaFolder = elems[i]; - var itemId = lnkMediaFolder.getAttribute('data-itemid'); + for (let i = 0, length = elems.length; i < length; i++) { + const lnkMediaFolder = elems[i]; + const itemId = lnkMediaFolder.getAttribute('data-itemid'); if (isChannelsPage && 'channels' === itemId) { lnkMediaFolder.classList.add('navMenuOption-selected'); @@ -692,7 +708,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function updateMenuForPageType(isDashboardPage, isLibraryPage) { - var newPageType = isDashboardPage ? 2 : isLibraryPage ? 1 : 3; + const newPageType = isDashboardPage ? 2 : isLibraryPage ? 1 : 3; if (currentPageType !== newPageType) { currentPageType = newPageType; @@ -703,7 +719,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' skinHeader.classList.remove('headroomDisabled'); } - var bodyClassList = document.body.classList; + const bodyClassList = document.body.classList; if (isLibraryPage) { bodyClassList.add('libraryDocument'); @@ -740,7 +756,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function updateTitle(page) { - var title = page.getAttribute('data-title'); + const title = page.getAttribute('data-title'); if (title) { LibraryMenu.setTitle(title); @@ -765,7 +781,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' function initHeadRoom(elem) { require(['headroom'], function (Headroom) { - var headroom = new Headroom(elem); + const headroom = new Headroom(elem); headroom.init(); }); } @@ -785,7 +801,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function getNavDrawerOptions() { - var drawerWidth = screen.availWidth - 50; + let drawerWidth = screen.availWidth - 50; drawerWidth = Math.max(drawerWidth, 240); drawerWidth = Math.min(drawerWidth, 320); return { @@ -816,25 +832,25 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' }); } - var navDrawerElement; - var navDrawerScrollContainer; - var navDrawerInstance; - var mainDrawerButton; - var headerHomeButton; - var currentDrawerType; - var pageTitleElement; - var headerBackButton; - var headerUserButton; - var currentUser; - var headerCastButton; - var headerSearchButton; - var headerAudioPlayerButton; - var headerSyncButton; - var enableLibraryNavDrawer = layoutManager.desktop; - var enableLibraryNavDrawerHome = !layoutManager.tv; - var skinHeader = document.querySelector('.skinHeader'); - var requiresUserRefresh = true; - window.LibraryMenu = { + let navDrawerElement; + let navDrawerScrollContainer; + let navDrawerInstance; + let mainDrawerButton; + let headerHomeButton; + let currentDrawerType; + let pageTitleElement; + let headerBackButton; + let headerUserButton; + let currentUser; + let headerCastButton; + let headerSearchButton; + let headerAudioPlayerButton; + let headerSyncButton; + const enableLibraryNavDrawer = layoutManager.desktop; + const enableLibraryNavDrawerHome = !layoutManager.tv; + const skinHeader = document.querySelector('.skinHeader'); + let requiresUserRefresh = true; + const LibraryMenu = { getTopParentId: getTopParentId, onHardwareMenuButtonClick: function () { toggleMainDrawer(); @@ -873,7 +889,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' title = ''; } - var html = title; + const html = title; if (!pageTitleElement) { pageTitleElement = document.querySelector('.pageTitle'); @@ -896,18 +912,18 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } } }; - var currentPageType; + let currentPageType; pageClassOn('pagebeforeshow', 'page', function (e) { if (!this.classList.contains('withTabs')) { LibraryMenu.setTabs(null); } }); pageClassOn('pageshow', 'page', function (e) { - var page = this; - var isDashboardPage = page.classList.contains('type-interior'); - var isHomePage = page.classList.contains('homePage'); - var isLibraryPage = !isDashboardPage && page.classList.contains('libraryPage'); - var apiClient = getCurrentApiClient(); + const page = this; + const isDashboardPage = page.classList.contains('type-interior'); + const isHomePage = page.classList.contains('homePage'); + const isLibraryPage = !isDashboardPage && page.classList.contains('libraryPage'); + const apiClient = getCurrentApiClient(); if (isDashboardPage) { if (mainDrawerButton) { @@ -944,7 +960,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' renderHeader(); events.on(connectionManager, 'localusersignedin', function (e, user) { - var currentApiClient = connectionManager.getApiClient(user.ServerId); + const currentApiClient = connectionManager.getApiClient(user.ServerId); currentDrawerType = null; currentUser = { @@ -968,5 +984,9 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' events.on(syncPlayManager, 'syncing', onSyncPlaySyncing); loadNavDrawer(); - return LibraryMenu; -}); + + window.LibraryMenu = LibraryMenu; + +export default LibraryMenu; + +/* eslint-enable indent */ From 00a545dae350daf20b671ee184ebb9f7e5430534 Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 22:09:56 +0100 Subject: [PATCH 020/463] extraction of functions --- src/scripts/libraryMenu.js | 129 ++++++++++++++++++++----------------- 1 file changed, 71 insertions(+), 58 deletions(-) diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 86a8d38079..594bb79f20 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -850,74 +850,74 @@ import 'flexStyles'; const enableLibraryNavDrawerHome = !layoutManager.tv; const skinHeader = document.querySelector('.skinHeader'); let requiresUserRefresh = true; - const LibraryMenu = { - getTopParentId: getTopParentId, - onHardwareMenuButtonClick: function () { - toggleMainDrawer(); - }, - setTabs: function (type, selectedIndex, builder) { - require(['mainTabsManager'], function (mainTabsManager) { - if (type) { - mainTabsManager.setTabs(viewManager.currentView(), selectedIndex, builder, function () { - return []; - }); - } else { - mainTabsManager.setTabs(null); - } - }); - }, - setDefaultTitle: function () { - if (!pageTitleElement) { - pageTitleElement = document.querySelector('.pageTitle'); - } - if (pageTitleElement) { - pageTitleElement.classList.add('pageTitleWithLogo'); - pageTitleElement.classList.add('pageTitleWithDefaultLogo'); - pageTitleElement.style.backgroundImage = null; - pageTitleElement.innerHTML = ''; - } - - document.title = 'Jellyfin'; - }, - setTitle: function (title) { - if (null == title) { - return void LibraryMenu.setDefaultTitle(); - } - - if ('-' === title) { - title = ''; - } - - const html = title; - - if (!pageTitleElement) { - pageTitleElement = document.querySelector('.pageTitle'); - } - - if (pageTitleElement) { - pageTitleElement.classList.remove('pageTitleWithLogo'); - pageTitleElement.classList.remove('pageTitleWithDefaultLogo'); - pageTitleElement.style.backgroundImage = null; - pageTitleElement.innerHTML = html || ''; - } - - document.title = title || 'Jellyfin'; - }, - setTransparentMenu: function (transparent) { - if (transparent) { - skinHeader.classList.add('semiTransparent'); + function setTabs (type, selectedIndex, builder) { + require(['mainTabsManager'], function (mainTabsManager) { + if (type) { + mainTabsManager.setTabs(viewManager.currentView(), selectedIndex, builder, function () { + return []; + }); } else { - skinHeader.classList.remove('semiTransparent'); + mainTabsManager.setTabs(null); } + }); + } + + function setDefaultTitle () { + if (!pageTitleElement) { + pageTitleElement = document.querySelector('.pageTitle'); } - }; + + if (pageTitleElement) { + pageTitleElement.classList.add('pageTitleWithLogo'); + pageTitleElement.classList.add('pageTitleWithDefaultLogo'); + pageTitleElement.style.backgroundImage = null; + pageTitleElement.innerHTML = ''; + } + + document.title = 'Jellyfin'; + } + + function setTitle (title) { + if (null == title) { + return void LibraryMenu.setDefaultTitle(); + } + + if ('-' === title) { + title = ''; + } + + const html = title; + + if (!pageTitleElement) { + pageTitleElement = document.querySelector('.pageTitle'); + } + + if (pageTitleElement) { + pageTitleElement.classList.remove('pageTitleWithLogo'); + pageTitleElement.classList.remove('pageTitleWithDefaultLogo'); + pageTitleElement.style.backgroundImage = null; + pageTitleElement.innerHTML = html || ''; + } + + document.title = title || 'Jellyfin'; + } + + function setTransparentMenu (transparent) { + if (transparent) { + skinHeader.classList.add('semiTransparent'); + } else { + skinHeader.classList.remove('semiTransparent'); + } + } + let currentPageType; pageClassOn('pagebeforeshow', 'page', function (e) { if (!this.classList.contains('withTabs')) { LibraryMenu.setTabs(null); } }); + pageClassOn('pageshow', 'page', function (e) { const page = this; const isDashboardPage = page.classList.contains('type-interior'); @@ -974,10 +974,12 @@ import 'flexStyles'; updateUserInHeader(user); }); }); + events.on(connectionManager, 'localusersignedout', function () { currentUser = {}; updateUserInHeader(); }); + events.on(playbackManager, 'playerchange', updateCastIcon); events.on(syncPlayManager, 'enabled', onSyncPlayEnabled); @@ -985,6 +987,17 @@ import 'flexStyles'; loadNavDrawer(); + const LibraryMenu = { + getTopParentId: getTopParentId, + onHardwareMenuButtonClick: function () { + toggleMainDrawer(); + }, + setTabs: setTabs, + setDefaultTitle: setDefaultTitle, + setTitle: setTitle, + setTransparentMenu: setTransparentMenu + }; + window.LibraryMenu = LibraryMenu; export default LibraryMenu; From 215a623a18cf859414cadb4051fefbce7051812e Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 22:13:49 +0100 Subject: [PATCH 021/463] remove require --- src/scripts/libraryMenu.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 594bb79f20..f010fa15e3 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -64,7 +64,7 @@ import 'flexStyles'; } function lazyLoadViewMenuBarImages() { - require(['imageLoader'], function (imageLoader) { + import('imageLoader').then(({default: imageLoader}) => { imageLoader.lazyChildren(skinHeader); }); } @@ -201,7 +201,7 @@ import 'flexStyles'; function onCastButtonClicked() { const btn = this; - require(['playerSelectionMenu'], function (playerSelectionMenu) { + import('playerSelectionMenu').then(({default: playerSelectionMenu}) => { playerSelectionMenu.show(btn); }); } @@ -780,7 +780,7 @@ import 'flexStyles'; } function initHeadRoom(elem) { - require(['headroom'], function (Headroom) { + import('headroom').then(({default: Headroom}) => { const headroom = new Headroom(elem); headroom.init(); }); @@ -820,7 +820,7 @@ import 'flexStyles'; navDrawerScrollContainer = navDrawerElement.querySelector('.scrollContainer'); navDrawerScrollContainer.addEventListener('click', onMainDrawerClick); return new Promise(function (resolve, reject) { - require(['navdrawer'], function (navdrawer) { + import('navdrawer').then(({default: navdrawer}) => { navDrawerInstance = new navdrawer(getNavDrawerOptions()); if (!layoutManager.tv) { @@ -852,7 +852,7 @@ import 'flexStyles'; let requiresUserRefresh = true; function setTabs (type, selectedIndex, builder) { - require(['mainTabsManager'], function (mainTabsManager) { + import('mainTabsManager').then(({default: mainTabsManager}) => { if (type) { mainTabsManager.setTabs(viewManager.currentView(), selectedIndex, builder, function () { return []; From 675cad71d845cf0faaacbc82b01dd3f25812eea4 Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 28 Jul 2020 23:08:27 +0100 Subject: [PATCH 022/463] Migration of loading to ES6 module --- package.json | 1 + src/components/appRouter.js | 10 +- src/components/guide/guide.js | 2 + .../imageDownloader/imageDownloader.js | 2 + src/components/imageeditor/imageeditor.js | 2 + src/components/loading/loading.js | 118 +++++++++--------- src/components/playback/playbackmanager.js | 2 + .../recordingcreator/recordingeditor.js | 2 + .../recordingcreator/recordingfields.js | 2 + .../recordingcreator/recordinghelper.js | 2 + .../recordingcreator/seriesrecordingeditor.js | 2 + src/components/refreshdialog/refreshdialog.js | 2 + .../subtitleeditor/subtitleeditor.js | 2 + src/components/tunerPicker.js | 2 + src/components/tvproviders/schedulesdirect.js | 2 + src/components/tvproviders/xmltv.js | 2 + .../notifications/notifications/index.js | 2 + .../dashboard/plugins/add/index.js | 2 + .../dashboard/plugins/available/index.js | 2 + .../dashboard/plugins/installed/index.js | 2 + src/controllers/edititemmetadata.js | 2 + src/controllers/hometab.js | 2 + src/controllers/itemDetails/index.js | 2 + src/controllers/list.js | 2 + src/controllers/livetv/livetvchannels.js | 2 + src/controllers/livetv/livetvrecordings.js | 2 + src/controllers/livetv/livetvschedule.js | 2 + src/controllers/livetv/livetvseriestimers.js | 2 + src/controllers/livetv/livetvsuggested.js | 2 + src/controllers/livetvguideprovider.js | 2 + src/controllers/livetvsettings.js | 2 + src/controllers/livetvstatus.js | 2 + src/controllers/livetvtuner.js | 2 + src/controllers/movies/moviecollections.js | 2 + src/controllers/movies/moviegenres.js | 2 + src/controllers/movies/movies.js | 2 + src/controllers/movies/movietrailers.js | 2 + src/controllers/music/musicalbums.js | 2 + src/controllers/music/musicartists.js | 2 + src/controllers/music/musicgenres.js | 2 + src/controllers/music/musicplaylists.js | 2 + src/controllers/music/musicrecommended.js | 2 + src/controllers/music/songs.js | 2 + src/plugins/htmlVideoPlayer/plugin.js | 2 + src/scripts/site.js | 2 +- 45 files changed, 146 insertions(+), 67 deletions(-) diff --git a/package.json b/package.json index edda337f2c..f2ae59522b 100644 --- a/package.json +++ b/package.json @@ -122,6 +122,7 @@ "src/components/lazyLoader/lazyLoaderIntersectionObserver.js", "src/components/libraryoptionseditor/libraryoptionseditor.js", "src/components/listview/listview.js", + "src/components/loading/loading.js", "src/components/maintabsmanager.js", "src/components/mediainfo/mediainfo.js", "src/components/mediaLibraryCreator/mediaLibraryCreator.js", diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 138d58e5c0..e4c53fbbb8 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -22,7 +22,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro function beginConnectionWizard() { backdrop.clearBackdrop(); - loading.show(); + loading.default.show(); connectionManager.connect({ enableAutoLogin: appSettings.enableAutoLogin() }).then(function (result) { @@ -33,7 +33,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro function handleConnectionResult(result) { switch (result.State) { case 'SignedIn': - loading.hide(); + loading.default.hide(); skinManager.loadUserSkin(); break; case 'ServerSignIn': @@ -277,7 +277,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro var firstConnectionResult; function start(options) { - loading.show(); + loading.default.show(); initApiClients(); @@ -297,7 +297,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro hashbang: options.hashbang !== false }); }).catch().then(function() { - loading.hide(); + loading.default.hide(); }); } @@ -512,7 +512,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro if (currentRouteInfo && currentRouteInfo.path === path) { // can't use this with home right now due to the back menu if (currentRouteInfo.route.type !== 'home') { - loading.hide(); + loading.default.hide(); return Promise.resolve(); } } diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index bd3ad89aaa..abc7d81fee 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -1,6 +1,8 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', 'scrollHelper', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'playbackManager', 'userSettings', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'dom', 'css!./guide.css', 'programStyles', 'material-icons', 'scrollStyles', 'emby-programcell', 'emby-button', 'paper-icon-button-light', 'emby-tabs', 'emby-scroller', 'flexStyles', 'webcomponents'], function (require, inputManager, browser, globalize, connectionManager, scrollHelper, serverNotifications, loading, datetime, focusManager, playbackManager, userSettings, imageLoader, events, layoutManager, itemShortcuts, dom) { 'use strict'; + loading = loading.default || loading; + function showViewSettings(instance) { require(['guide-settings-dialog'], function (guideSettingsDialog) { guideSettingsDialog.show(instance.categoryOptions).then(function () { diff --git a/src/components/imageDownloader/imageDownloader.js b/src/components/imageDownloader/imageDownloader.js index 8c278a62b6..d615b912fd 100644 --- a/src/components/imageDownloader/imageDownloader.js +++ b/src/components/imageDownloader/imageDownloader.js @@ -1,6 +1,8 @@ define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader', 'browser', 'layoutManager', 'scrollHelper', 'globalize', 'require', 'emby-checkbox', 'paper-icon-button-light', 'emby-button', 'formDialogStyle', 'cardStyle'], function (dom, loading, appHost, dialogHelper, connectionManager, imageLoader, browser, layoutManager, scrollHelper, globalize, require) { 'use strict'; + loading = loading.default || loading; + var enableFocusTransform = !browser.slow && !browser.edge; var currentItemId; diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 125a2dc062..9a7b563d0f 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', 'focusManager', 'globalize', 'scrollHelper', 'imageLoader', 'require', 'browser', 'apphost', 'cardStyle', 'formDialogStyle', 'emby-button', 'paper-icon-button-light', 'css!./imageeditor'], function (dialogHelper, connectionManager, loading, dom, layoutManager, focusManager, globalize, scrollHelper, imageLoader, require, browser, appHost) { 'use strict'; + loading = loading.default || loading; + var enableFocusTransform = !browser.slow && !browser.edge; var currentItem; diff --git a/src/components/loading/loading.js b/src/components/loading/loading.js index 9f86ba452f..08271d4635 100644 --- a/src/components/loading/loading.js +++ b/src/components/loading/loading.js @@ -1,78 +1,74 @@ -define(['css!./loading'], function () { - 'use strict'; +import 'css!./loading'; - var loadingElem; - var layer1; - var layer2; - var layer3; - var layer4; - var circleLefts; - var circleRights; +let loadingElem; +let layer1; +let layer2; +let layer3; +let layer4; +let circleLefts; +let circleRights; - return { - show: function () { - var elem = loadingElem; +function show() { + let elem = loadingElem; - if (!elem) { - elem = document.createElement('div'); - loadingElem = elem; + if (!elem) { + elem = document.createElement('div'); + loadingElem = elem; - elem.classList.add('docspinner'); - elem.classList.add('mdl-spinner'); + elem.classList.add('docspinner'); + elem.classList.add('mdl-spinner'); - elem.innerHTML = '
'; + elem.innerHTML = '
'; - document.body.appendChild(elem); + document.body.appendChild(elem); - layer1 = elem.querySelector('.mdl-spinner__layer-1'); - layer2 = elem.querySelector('.mdl-spinner__layer-2'); - layer3 = elem.querySelector('.mdl-spinner__layer-3'); - layer4 = elem.querySelector('.mdl-spinner__layer-4'); + layer1 = elem.querySelector('.mdl-spinner__layer-1'); + layer2 = elem.querySelector('.mdl-spinner__layer-2'); + layer3 = elem.querySelector('.mdl-spinner__layer-3'); + layer4 = elem.querySelector('.mdl-spinner__layer-4'); - circleLefts = elem.querySelectorAll('.mdl-spinner__circleLeft'); - circleRights = elem.querySelectorAll('.mdl-spinner__circleRight'); - } + circleLefts = elem.querySelectorAll('.mdl-spinner__circleLeft'); + circleRights = elem.querySelectorAll('.mdl-spinner__circleRight'); + } - elem.classList.add('mdlSpinnerActive'); + elem.classList.add('mdlSpinnerActive'); - layer1.classList.add('mdl-spinner__layer-1-active'); - layer2.classList.add('mdl-spinner__layer-2-active'); - layer3.classList.add('mdl-spinner__layer-3-active'); - layer4.classList.add('mdl-spinner__layer-4-active'); + layer1.classList.add('mdl-spinner__layer-1-active'); + layer2.classList.add('mdl-spinner__layer-2-active'); + layer3.classList.add('mdl-spinner__layer-3-active'); + layer4.classList.add('mdl-spinner__layer-4-active'); - var i; - var length; + for (let i = 0, length = circleLefts.length; i < length; i++) { + circleLefts[i].classList.add('mdl-spinner__circleLeft-active'); + } - for (i = 0, length = circleLefts.length; i < length; i++) { - circleLefts[i].classList.add('mdl-spinner__circleLeft-active'); - } + for (let i = 0, length = circleRights.length; i < length; i++) { + circleRights[i].classList.add('mdl-spinner__circleRight-active'); + } +} - for (i = 0, length = circleRights.length; i < length; i++) { - circleRights[i].classList.add('mdl-spinner__circleRight-active'); - } - }, - hide: function () { - var elem = loadingElem; +function hide() { + const elem = loadingElem; - if (elem) { - elem.classList.remove('mdlSpinnerActive'); + if (elem) { + elem.classList.remove('mdlSpinnerActive'); - elem.classList.remove('mdl-spinner__layer-1-active'); - elem.classList.remove('mdl-spinner__layer-2-active'); - elem.classList.remove('mdl-spinner__layer-3-active'); - elem.classList.remove('mdl-spinner__layer-4-active'); + elem.classList.remove('mdl-spinner__layer-1-active'); + elem.classList.remove('mdl-spinner__layer-2-active'); + elem.classList.remove('mdl-spinner__layer-3-active'); + elem.classList.remove('mdl-spinner__layer-4-active'); - var i; - var length; - - for (i = 0, length = circleLefts.length; i < length; i++) { - circleLefts[i].classList.remove('mdl-spinner__circleLeft-active'); - } - - for (i = 0, length = circleRights.length; i < length; i++) { - circleRights[i].classList.remove('mdl-spinner__circleRight-active'); - } - } + for (let i = 0, length = circleLefts.length; i < length; i++) { + circleLefts[i].classList.remove('mdl-spinner__circleLeft-active'); } - }; -}); + + for (let i = 0, length = circleRights.length; i < length; i++) { + circleRights[i].classList.remove('mdl-spinner__circleRight-active'); + } + } +} + +export default { + show: show, + hide: hide +}; diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 829cd38f2c..85d5954d18 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1,6 +1,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'playQueueManager', 'userSettings', 'globalize', 'connectionManager', 'loading', 'apphost', 'screenfull'], function (events, datetime, appSettings, itemHelper, pluginManager, PlayQueueManager, userSettings, globalize, connectionManager, loading, apphost, screenfull) { 'use strict'; + loading = loading.default || loading; + function enableLocalPlaylistManagement(player) { if (player.getPlaylist) { return false; diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index 3797cde370..2086129a9e 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'scrollStyles', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader) { 'use strict'; + loading = loading.default || loading; + var currentDialog; var recordingDeleted = false; var currentItemId; diff --git a/src/components/recordingcreator/recordingfields.js b/src/components/recordingcreator/recordingfields.js index 2534eafe6a..e3739f1cfe 100644 --- a/src/components/recordingcreator/recordingfields.js +++ b/src/components/recordingcreator/recordingfields.js @@ -1,6 +1,8 @@ define(['globalize', 'connectionManager', 'serverNotifications', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'paper-icon-button-light', 'emby-button', 'css!./recordingfields', 'flexStyles'], function (globalize, connectionManager, serverNotifications, require, loading, appHost, dom, recordingHelper, events) { 'use strict'; + loading = loading.default || loading; + function loadData(parent, program, apiClient) { if (program.IsSeries) { parent.querySelector('.recordSeriesContainer').classList.remove('hide'); diff --git a/src/components/recordingcreator/recordinghelper.js b/src/components/recordingcreator/recordinghelper.js index 4a0bdd9b01..5d72394282 100644 --- a/src/components/recordingcreator/recordinghelper.js +++ b/src/components/recordingcreator/recordinghelper.js @@ -1,6 +1,8 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loading, connectionManager) { 'use strict'; + loading = loading.default || loading; + function changeRecordingToSeries(apiClient, timerId, programId, confirmTimerCancellation) { loading.show(); diff --git a/src/components/recordingcreator/seriesrecordingeditor.js b/src/components/recordingcreator/seriesrecordingeditor.js index ea20c7267d..b115e273e6 100644 --- a/src/components/recordingcreator/seriesrecordingeditor.js +++ b/src/components/recordingcreator/seriesrecordingeditor.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'datetime', 'scrollStyles', 'emby-button', 'emby-checkbox', 'emby-input', 'emby-select', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons', 'flexStyles'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader, datetime) { 'use strict'; + loading = loading.default || loading; + var currentDialog; var recordingUpdated = false; var recordingDeleted = false; diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 40e1183502..57b2ee3189 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -1,6 +1,8 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'appRouter', 'globalize', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (dom, shell, dialogHelper, loading, layoutManager, connectionManager, appRouter, globalize) { 'use strict'; + loading = loading.default || loading; + function getEditorHtml() { var html = ''; diff --git a/src/components/subtitleeditor/subtitleeditor.js b/src/components/subtitleeditor/subtitleeditor.js index 37f767524e..7df24b5da8 100644 --- a/src/components/subtitleeditor/subtitleeditor.js +++ b/src/components/subtitleeditor/subtitleeditor.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings', 'connectionManager', 'loading', 'focusManager', 'dom', 'apphost', 'emby-select', 'listViewStyle', 'paper-icon-button-light', 'css!./../formdialog', 'material-icons', 'css!./subtitleeditor', 'emby-button', 'flexStyles'], function (dialogHelper, require, layoutManager, globalize, userSettings, connectionManager, loading, focusManager, dom, appHost) { 'use strict'; + loading = loading.default || loading; + var currentItem; var hasChanges; diff --git a/src/components/tunerPicker.js b/src/components/tunerPicker.js index e7c92851a4..de5c4cf186 100644 --- a/src/components/tunerPicker.js +++ b/src/components/tunerPicker.js @@ -1,6 +1,8 @@ define(['dialogHelper', 'dom', 'layoutManager', 'connectionManager', 'globalize', 'loading', 'browser', 'focusManager', 'scrollHelper', 'material-icons', 'formDialogStyle', 'emby-button', 'emby-itemscontainer', 'cardStyle'], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser, focusManager, scrollHelper) { 'use strict'; + loading = loading.default || loading; + var enableFocusTransform = !browser.slow && !browser.edge; function getEditorHtml() { diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index be1cdf575b..e9bb6c4080 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -1,6 +1,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emby-input', 'emby-select', 'emby-button', 'flexStyles'], function ($, loading, globalize) { 'use strict'; + loading = loading.default || loading; + return function (page, providerId, options) { function reload() { loading.show(); diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index 054c5b640d..339451e1ab 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -1,6 +1,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listViewStyle', 'paper-icon-button-light'], function ($, loading, globalize) { 'use strict'; + loading = loading.default || loading; + return function (page, providerId, options) { function getListingProvider(config, id) { if (config && id) { diff --git a/src/controllers/dashboard/notifications/notifications/index.js b/src/controllers/dashboard/notifications/notifications/index.js index 4e049bc106..c2cf9d83c3 100644 --- a/src/controllers/dashboard/notifications/notifications/index.js +++ b/src/controllers/dashboard/notifications/notifications/index.js @@ -1,6 +1,8 @@ define(['loading', 'libraryMenu', 'globalize', 'listViewStyle', 'emby-button'], function(loading, libraryMenu, globalize) { 'use strict'; + loading = loading.default || loading; + function reload(page) { loading.show(); ApiClient.getJSON(ApiClient.getUrl('Notifications/Types')).then(function(list) { diff --git a/src/controllers/dashboard/plugins/add/index.js b/src/controllers/dashboard/plugins/add/index.js index a3c450dd79..c20b7832cd 100644 --- a/src/controllers/dashboard/plugins/add/index.js +++ b/src/controllers/dashboard/plugins/add/index.js @@ -1,6 +1,8 @@ define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'connectionManager', 'emby-button'], function ($, loading, libraryMenu, globalize, connectionManager) { 'use strict'; + loading = loading.default || loading; + function populateHistory(packageInfo, page) { var html = ''; var length = Math.min(packageInfo.versions.length, 10); diff --git a/src/controllers/dashboard/plugins/available/index.js b/src/controllers/dashboard/plugins/available/index.js index 1f202d6ff6..c4f18b6de9 100644 --- a/src/controllers/dashboard/plugins/available/index.js +++ b/src/controllers/dashboard/plugins/available/index.js @@ -1,6 +1,8 @@ define(['loading', 'libraryMenu', 'globalize', 'cardStyle', 'emby-button', 'emby-checkbox', 'emby-select'], function (loading, libraryMenu, globalize) { 'use strict'; + loading = loading.default || loading; + function reloadList(page) { loading.show(); var promise1 = ApiClient.getAvailablePlugins(); diff --git a/src/controllers/dashboard/plugins/installed/index.js b/src/controllers/dashboard/plugins/installed/index.js index d28a04cb2b..3131386b2b 100644 --- a/src/controllers/dashboard/plugins/installed/index.js +++ b/src/controllers/dashboard/plugins/installed/index.js @@ -1,6 +1,8 @@ define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button'], function (loading, libraryMenu, dom, globalize) { 'use strict'; + loading = loading.default || loading; + function deletePlugin(page, uniqueid, name) { var msg = globalize.translate('UninstallPluginConfirmation', name); diff --git a/src/controllers/edititemmetadata.js b/src/controllers/edititemmetadata.js index 1a3647a758..b0f1f4a142 100644 --- a/src/controllers/edititemmetadata.js +++ b/src/controllers/edititemmetadata.js @@ -1,6 +1,8 @@ define(['loading', 'scripts/editorsidebar'], function (loading) { 'use strict'; + loading = loading.default || loading; + function reload(context, itemId) { loading.show(); diff --git a/src/controllers/hometab.js b/src/controllers/hometab.js index 8e2a1f92e7..97034d4505 100644 --- a/src/controllers/hometab.js +++ b/src/controllers/hometab.js @@ -1,6 +1,8 @@ define(['userSettings', 'loading', 'connectionManager', 'apphost', 'layoutManager', 'focusManager', 'homeSections', 'emby-itemscontainer'], function (userSettings, loading, connectionManager, appHost, layoutManager, focusManager, homeSections) { 'use strict'; + loading = loading.default || loading; + function HomeTab(view, params) { this.view = view; this.params = params; diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 29aa8ad1e1..02dc66d35a 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1,6 +1,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSettings', 'cardBuilder', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'itemContextMenu', 'itemHelper', 'dom', 'indicators', 'imageLoader', 'libraryMenu', 'globalize', 'browser', 'events', 'playbackManager', 'scrollStyles', 'emby-itemscontainer', 'emby-checkbox', 'emby-button', 'emby-playstatebutton', 'emby-ratingbutton', 'emby-scroller', 'emby-select'], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, imageLoader, libraryMenu, globalize, browser, events, playbackManager) { 'use strict'; + loading = loading.default || loading; + function getPromise(apiClient, params) { var id = params.id; diff --git a/src/controllers/list.js b/src/controllers/list.js index e550b535f4..2a26f81a39 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -1,6 +1,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'scroller', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, scroller, playbackManager, AlphaPicker) { 'use strict'; + loading = loading.default || loading; + function getInitialLiveTvQuery(instance, params) { var query = { UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(), diff --git a/src/controllers/livetv/livetvchannels.js b/src/controllers/livetv/livetvchannels.js index 62906d9d21..c0061c1f52 100644 --- a/src/controllers/livetv/livetvchannels.js +++ b/src/controllers/livetv/livetvchannels.js @@ -1,6 +1,8 @@ define(['cardBuilder', 'imageLoader', 'libraryBrowser', 'loading', 'events', 'userSettings', 'emby-itemscontainer'], function (cardBuilder, imageLoader, libraryBrowser, loading, events, userSettings) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent) { function getPageData() { if (!pageData) { diff --git a/src/controllers/livetv/livetvrecordings.js b/src/controllers/livetv/livetvrecordings.js index d832ca1339..b0259bc89b 100644 --- a/src/controllers/livetv/livetvrecordings.js +++ b/src/controllers/livetv/livetvrecordings.js @@ -1,6 +1,8 @@ define(['layoutManager', 'loading', 'cardBuilder', 'apphost', 'imageLoader', 'scripts/livetvcomponents', 'listViewStyle', 'emby-itemscontainer'], function (layoutManager, loading, cardBuilder, appHost, imageLoader) { 'use strict'; + loading = loading.default || loading; + function renderRecordings(elem, recordings, cardOptions, scrollX) { if (!elem) { return; diff --git a/src/controllers/livetv/livetvschedule.js b/src/controllers/livetv/livetvschedule.js index 2f451e50fb..4427bef5d1 100644 --- a/src/controllers/livetv/livetvschedule.js +++ b/src/controllers/livetv/livetvschedule.js @@ -1,6 +1,8 @@ define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'scripts/livetvcomponents', 'emby-button', 'emby-itemscontainer'], function (layoutManager, cardBuilder, appHost, imageLoader, loading) { 'use strict'; + loading = loading.default || loading; + function enableScrollX() { return !layoutManager.desktop; } diff --git a/src/controllers/livetv/livetvseriestimers.js b/src/controllers/livetv/livetvseriestimers.js index c5d0da60d7..62f36a1006 100644 --- a/src/controllers/livetv/livetvseriestimers.js +++ b/src/controllers/livetv/livetvseriestimers.js @@ -1,6 +1,8 @@ define(['datetime', 'cardBuilder', 'imageLoader', 'apphost', 'loading', 'paper-icon-button-light', 'emby-button'], function (datetime, cardBuilder, imageLoader, appHost, loading) { 'use strict'; + loading = loading.default || loading; + function renderTimers(context, timers) { var html = ''; html += cardBuilder.getCardsHtml({ diff --git a/src/controllers/livetv/livetvsuggested.js b/src/controllers/livetv/livetvsuggested.js index 036eee9fc6..5f0d4d5657 100644 --- a/src/controllers/livetv/livetvsuggested.js +++ b/src/controllers/livetv/livetvsuggested.js @@ -1,6 +1,8 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize', 'libraryBrowser', 'mainTabsManager', 'cardBuilder', 'apphost', 'imageLoader', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (layoutManager, userSettings, inputManager, loading, globalize, libraryBrowser, mainTabsManager, cardBuilder, appHost, imageLoader) { 'use strict'; + loading = loading.default || loading; + function enableScrollX() { return !layoutManager.desktop; } diff --git a/src/controllers/livetvguideprovider.js b/src/controllers/livetvguideprovider.js index 8f8b9f91c7..3ec04fd2af 100644 --- a/src/controllers/livetvguideprovider.js +++ b/src/controllers/livetvguideprovider.js @@ -1,6 +1,8 @@ define(['events', 'loading', 'globalize'], function (events, loading, globalize) { 'use strict'; + loading = loading.default || loading; + function onListingsSubmitted() { Dashboard.navigate('livetvstatus.html'); } diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index 715eb06214..33034295b5 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -1,6 +1,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading, globalize) { 'use strict'; + loading = loading.default || loading; + function loadPage(page, config) { $('.liveTvSettingsForm', page).show(); $('.noLiveTvServices', page).hide(); diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 84ea006fd9..216594160f 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -1,6 +1,8 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layoutManager', 'loading', 'browser', 'listViewStyle', 'flexStyles', 'emby-itemscontainer', 'cardStyle', 'material-icons', 'emby-button'], function ($, globalize, taskButton, dom, libraryMenu, layoutManager, loading, browser) { 'use strict'; + loading = loading.default || loading; + var enableFocusTransform = !browser.slow && !browser.edge; function getDeviceHtml(device) { diff --git a/src/controllers/livetvtuner.js b/src/controllers/livetvtuner.js index 92f705c02f..7f5b70483d 100644 --- a/src/controllers/livetvtuner.js +++ b/src/controllers/livetvtuner.js @@ -1,6 +1,8 @@ define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button', 'emby-checkbox', 'emby-select'], function (globalize, loading, libraryMenu, dom) { 'use strict'; + loading = loading.default || loading; + function isM3uVariant(type) { return ['nextpvr'].indexOf(type || '') !== -1; } diff --git a/src/controllers/movies/moviecollections.js b/src/controllers/movies/moviecollections.js index 65abca46e0..f69b53b77e 100644 --- a/src/controllers/movies/moviecollections.js +++ b/src/controllers/movies/moviecollections.js @@ -1,6 +1,8 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (loading, events, libraryBrowser, imageLoader, listView, cardBuilder, userSettings, globalize) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent) { function getPageData(context) { var key = getSavedQueryKey(context); diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 43f73bfa76..93370a8ce5 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -1,6 +1,8 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader', 'apphost', 'globalize', 'appRouter', 'dom', 'emby-button'], function (layoutManager, loading, libraryBrowser, cardBuilder, lazyLoader, appHost, globalize, appRouter, dom) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent) { function getPageData() { var key = getSavedQueryKey(); diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 82b162e2ad..5bc582ad29 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -1,6 +1,8 @@ define(['loading', 'layoutManager', 'userSettings', 'events', 'libraryBrowser', 'alphaPicker', 'listView', 'cardBuilder', 'globalize', 'emby-itemscontainer'], function (loading, layoutManager, userSettings, events, libraryBrowser, AlphaPicker, listView, cardBuilder, globalize) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent, options) { function onViewStyleChange() { if (self.getCurrentViewStyle() == 'List') { diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index a9db0abf49..51ed03ce81 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -1,6 +1,8 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, userSettings, globalize) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent) { function getPageData(context) { var key = getSavedQueryKey(context); diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 3630e0b9f9..81dc3d8bb0 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -1,6 +1,8 @@ define(['layoutManager', 'playbackManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'userSettings', 'globalize', 'emby-itemscontainer'], function (layoutManager, playbackManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, userSettings, globalize) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent) { function playAll() { ApiClient.getItem(ApiClient.getCurrentUserId(), params.topParentId).then(function (item) { diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index c9a0b06b77..ab73c30db3 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -1,6 +1,8 @@ define(['layoutManager', 'loading', 'events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'apphost', 'userSettings', 'emby-itemscontainer'], function (layoutManager, loading, events, libraryBrowser, imageLoader, AlphaPicker, listView, cardBuilder, appHost, userSettings) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent) { function getPageData(context) { var key = getSavedQueryKey(context); diff --git a/src/controllers/music/musicgenres.js b/src/controllers/music/musicgenres.js index 82f2eba574..39ca5a44bf 100644 --- a/src/controllers/music/musicgenres.js +++ b/src/controllers/music/musicgenres.js @@ -1,6 +1,8 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent) { function getPageData() { var key = getSavedQueryKey(); diff --git a/src/controllers/music/musicplaylists.js b/src/controllers/music/musicplaylists.js index f508489216..464d418229 100644 --- a/src/controllers/music/musicplaylists.js +++ b/src/controllers/music/musicplaylists.js @@ -1,6 +1,8 @@ define(['libraryBrowser', 'cardBuilder', 'apphost', 'imageLoader', 'loading'], function (libraryBrowser, cardBuilder, appHost, imageLoader, loading) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent) { function getPageData() { var key = getSavedQueryKey(); diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 0eecef0bfb..f1809623d4 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -1,6 +1,8 @@ define(['browser', 'layoutManager', 'userSettings', 'inputManager', 'loading', 'cardBuilder', 'dom', 'apphost', 'imageLoader', 'libraryMenu', 'playbackManager', 'mainTabsManager', 'globalize', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button', 'flexStyles'], function (browser, layoutManager, userSettings, inputManager, loading, cardBuilder, dom, appHost, imageLoader, libraryMenu, playbackManager, mainTabsManager, globalize) { 'use strict'; + loading = loading.default || loading; + function itemsPerRow() { var screenWidth = dom.getWindowSize().innerWidth; diff --git a/src/controllers/music/songs.js b/src/controllers/music/songs.js index aa63ec51fe..e82b81a5c7 100644 --- a/src/controllers/music/songs.js +++ b/src/controllers/music/songs.js @@ -1,6 +1,8 @@ define(['events', 'libraryBrowser', 'imageLoader', 'listView', 'loading', 'userSettings', 'globalize', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, listView, loading, userSettings, globalize) { 'use strict'; + loading = loading.default || loading; + return function (view, params, tabContent) { function getPageData(context) { var key = getSavedQueryKey(context); diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index b3b2402c26..9e91723449 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -2,6 +2,8 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager', 'htmlMediaHelper', 'itemHelper', 'screenfull', 'globalize'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager, htmlMediaHelper, itemHelper, screenfull, globalize) { 'use strict'; + loading = loading.default || loading; + function tryRemoveElement(elem) { var parentNode = elem.parentNode; if (parentNode) { diff --git a/src/scripts/site.js b/src/scripts/site.js index 2beb45959a..c53ed7e713 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -880,7 +880,7 @@ function initClient() { }); } } - + console.log(appRouter) appRouter.showLocalLogin = function (serverId, manualLogin) { Dashboard.navigate('login.html?serverid=' + serverId); }; From 24cd5e112beb5b4caac72788fdfe91ae12224a97 Mon Sep 17 00:00:00 2001 From: dkanada Date: Wed, 29 Jul 2020 14:19:27 +0900 Subject: [PATCH 023/463] fix banner height and use primary image as fallback --- src/assets/css/librarybrowser.css | 2 +- src/controllers/itemDetails/index.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/assets/css/librarybrowser.css b/src/assets/css/librarybrowser.css index 61815a590f..047ae0a1c6 100644 --- a/src/assets/css/librarybrowser.css +++ b/src/assets/css/librarybrowser.css @@ -646,7 +646,7 @@ .layout-desktop .detailRibbon, .layout-tv .detailRibbon { margin-top: -7.2em; - height: 7.18em; + height: 7.2em; } .layout-desktop .noBackdrop .detailRibbon, diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 29aa8ad1e1..dd0a81a761 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -523,6 +523,14 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti }); imageLoader.lazyImage(itemBackdropElement, imgUrl); hasbackdrop = true; + } else if (item.ImageTags && item.ImageTags.Primary) { + imgUrl = apiClient.getScaledImageUrl(item.Id, { + type: 'Primary', + maxWidth: dom.getScreenWidth(), + tag: item.ImageTags.Primary + }); + imageLoader.lazyImage(itemBackdropElement, imgUrl); + hasbackdrop = true; } else { itemBackdropElement.style.backgroundImage = ''; } From e3ca0a3d994f8cd4ce05ab10ae8b50ec1e56bd1f Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 29 Jul 2020 09:06:06 +0100 Subject: [PATCH 024/463] Migration of favoriteitems to ES6 module --- package.json | 1 + src/components/favoriteitems.js | 54 +++++++++++++++++++-------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index f2ae59522b..9b3ee84d10 100644 --- a/package.json +++ b/package.json @@ -106,6 +106,7 @@ "src/components/dialogHelper/dialogHelper.js", "src/components/directorybrowser/directorybrowser.js", "src/components/displaySettings/displaySettings.js", + "src/components/favoriteitems.js", "src/components/fetchhelper.js", "src/components/filterdialog/filterdialog.js", "src/components/groupedcards.js", diff --git a/src/components/favoriteitems.js b/src/components/favoriteitems.js index 358bf04112..056022fa88 100644 --- a/src/components/favoriteitems.js +++ b/src/components/favoriteitems.js @@ -1,5 +1,14 @@ -define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoader', 'globalize', 'layoutManager', 'scrollStyles', 'emby-itemscontainer'], function (loading, libraryBrowser, cardBuilder, dom, appHost, imageLoader, globalize, layoutManager) { - 'use strict'; +import loading from 'loading'; +import cardBuilder from 'cardBuilder'; +import dom from 'dom'; +import appHost from 'apphost'; +import imageLoader from 'imageLoader'; +import globalize from 'globalize'; +import layoutManager from 'layoutManager'; +import 'scrollStyles'; +import 'emby-itemscontainer'; + +/* eslint-disable indent */ function enableScrollX() { return !layoutManager.desktop; @@ -94,8 +103,8 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad } function loadSection(elem, userId, topParentId, section, isSingleSection) { - var screenWidth = dom.getWindowSize().innerWidth; - var options = { + const screenWidth = dom.getWindowSize().innerWidth; + const options = { SortBy: 'SortName', SortOrder: 'Ascending', Filters: 'IsFavorite', @@ -118,7 +127,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad } } - var promise; + let promise; if ('MusicArtist' === section.types) { promise = ApiClient.getArtists(userId, options); @@ -128,7 +137,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad } return promise.then(function (result) { - var html = ''; + let html = ''; if (result.Items.length) { if (html += '
', !layoutManager.tv && options.Limit && result.Items.length >= options.Limit) { @@ -144,7 +153,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad html += '
'; if (enableScrollX()) { - var scrollXClass = 'scrollX hiddenScrollX'; + let scrollXClass = 'scrollX hiddenScrollX'; if (layoutManager.tv) { scrollXClass += ' smoothScrollX'; } @@ -154,7 +163,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad html += '
'; } - var cardLayout = appHost.preferVisualCards && section.autoCardLayout && section.showTitle; + let cardLayout = appHost.preferVisualCards && section.autoCardLayout && section.showTitle; cardLayout = false; html += cardBuilder.getCardsHtml(result.Items, { preferThumb: section.preferThumb, @@ -179,10 +188,10 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad }); } - function loadSections(page, userId, topParentId, types) { + export function loadSections(page, userId, topParentId, types) { loading.show(); - var sections = getSections(); - var sectionid = getParameterByName('sectionid'); + let sections = getSections(); + const sectionid = getParameterByName('sectionid'); if (sectionid) { sections = sections.filter(function (s) { @@ -196,24 +205,22 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad }); } - var i; - var length; - var elem = page.querySelector('.favoriteSections'); + let elem = page.querySelector('.favoriteSections'); if (!elem.innerHTML) { - var html = ''; + let html = ''; - for (i = 0, length = sections.length; i < length; i++) { + for (let i = 0, length = sections.length; i < length; i++) { html += '
'; } elem.innerHTML = html; } - var promises = []; + const promises = []; - for (i = 0, length = sections.length; i < length; i++) { - var section = sections[i]; + for (let i = 0, length = sections.length; i < length; i++) { + const section = sections[i]; elem = page.querySelector('.section' + section.id); promises.push(loadSection(elem, userId, topParentId, section, 1 === sections.length)); } @@ -223,7 +230,8 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad }); } - return { - render: loadSections - }; -}); +export default { + render: loadSection +}; + +/* eslint-enable indent */ From 8985ba2a958c4c41c8050e998db6b7845d0006c7 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 29 Jul 2020 09:08:26 +0100 Subject: [PATCH 025/463] remove log --- src/scripts/site.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/site.js b/src/scripts/site.js index c53ed7e713..2beb45959a 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -880,7 +880,7 @@ function initClient() { }); } } - console.log(appRouter) + appRouter.showLocalLogin = function (serverId, manualLogin) { Dashboard.navigate('login.html?serverid=' + serverId); }; From da5eb9ccc445562a79401f378c6fd6afd8a8958b Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 29 Jul 2020 10:04:55 +0100 Subject: [PATCH 026/463] Migration of browser to ES6 module --- package.json | 1 + src/scripts/browser.js | 440 ++++++++++++++++++++--------------------- 2 files changed, 219 insertions(+), 222 deletions(-) diff --git a/package.json b/package.json index 5db40a0efe..bd199cb3e2 100644 --- a/package.json +++ b/package.json @@ -239,6 +239,7 @@ "src/plugins/youtubePlayer/plugin.js", "src/scripts/alphanumericshortcuts.js", "src/scripts/autoBackdrops.js", + "src/scripts/browser.js", "src/scripts/datetime.js", "src/scripts/deleteHelper.js", "src/scripts/dfnshelper.js", diff --git a/src/scripts/browser.js b/src/scripts/browser.js index 41e95fa6b4..b10587cb09 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -1,260 +1,256 @@ -define([], function () { - 'use strict'; +function isTv() { + // This is going to be really difficult to get right + const userAgent = navigator.userAgent.toLowerCase(); - function isTv() { - // This is going to be really difficult to get right - var userAgent = navigator.userAgent.toLowerCase(); - - if (userAgent.indexOf('tv') !== -1) { - return true; - } - - if (userAgent.indexOf('samsungbrowser') !== -1) { - return true; - } - - if (userAgent.indexOf('viera') !== -1) { - return true; - } - - if (userAgent.indexOf('web0s') !== -1) { - return true; - } - - return false; + if (userAgent.indexOf('tv') !== -1) { + return true; } - function isMobile(userAgent) { - var terms = [ - 'mobi', - 'ipad', - 'iphone', - 'ipod', - 'silk', - 'gt-p1000', - 'nexus 7', - 'kindle fire', - 'opera mini' - ]; - - var lower = userAgent.toLowerCase(); - - for (var i = 0, length = terms.length; i < length; i++) { - if (lower.indexOf(terms[i]) !== -1) { - return true; - } - } - - return false; + if (userAgent.indexOf('samsungbrowser') !== -1) { + return true; } - function hasKeyboard(browser) { - if (browser.touch) { - return true; - } - - if (browser.xboxOne) { - return true; - } - - if (browser.ps4) { - return true; - } - - if (browser.edgeUwp) { - // This is OK for now, but this won't always be true - // Should we use this? - // https://gist.github.com/wagonli/40d8a31bd0d6f0dd7a5d - return true; - } - - if (browser.tv) { - return true; - } - - return false; + if (userAgent.indexOf('viera') !== -1) { + return true; } - function iOSversion() { - // MacIntel: Apple iPad Pro 11 iOS 13.1 - if (/iP(hone|od|ad)|MacIntel/.test(navigator.platform)) { - // supports iOS 2.0 and later: - var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/); - return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)]; + if (userAgent.indexOf('web0s') !== -1) { + return true; + } + + return false; +} + +function isMobile(userAgent) { + const terms = [ + 'mobi', + 'ipad', + 'iphone', + 'ipod', + 'silk', + 'gt-p1000', + 'nexus 7', + 'kindle fire', + 'opera mini' + ]; + + const lower = userAgent.toLowerCase(); + + for (let i = 0, length = terms.length; i < length; i++) { + if (lower.indexOf(terms[i]) !== -1) { + return true; } } - var _supportsCssAnimation; - var _supportsCssAnimationWithPrefix; - function supportsCssAnimation(allowPrefix) { - // TODO: Assess if this is still needed, as all of our targets should natively support CSS animations. - if (allowPrefix) { - if (_supportsCssAnimationWithPrefix === true || _supportsCssAnimationWithPrefix === false) { - return _supportsCssAnimationWithPrefix; - } - } else { - if (_supportsCssAnimation === true || _supportsCssAnimation === false) { - return _supportsCssAnimation; - } - } + return false; +} - var animation = false; - var domPrefixes = ['Webkit', 'O', 'Moz']; - var elm = document.createElement('div'); +function hasKeyboard(browser) { + if (browser.touch) { + return true; + } - if (elm.style.animationName !== undefined) { - animation = true; - } + if (browser.xboxOne) { + return true; + } - if (animation === false && allowPrefix) { - for (var i = 0; i < domPrefixes.length; i++) { - if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) { - animation = true; - break; - } - } - } + if (browser.ps4) { + return true; + } - if (allowPrefix) { - _supportsCssAnimationWithPrefix = animation; + if (browser.edgeUwp) { + // This is OK for now, but this won't always be true + // Should we use this? + // https://gist.github.com/wagonli/40d8a31bd0d6f0dd7a5d + return true; + } + + if (browser.tv) { + return true; + } + + return false; +} + +function iOSversion() { + // MacIntel: Apple iPad Pro 11 iOS 13.1 + if (/iP(hone|od|ad)|MacIntel/.test(navigator.platform)) { + // supports iOS 2.0 and later: + const v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/); + return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)]; + } +} + +let _supportsCssAnimation; +let _supportsCssAnimationWithPrefix; +function supportsCssAnimation(allowPrefix) { + // TODO: Assess if this is still needed, as all of our targets should natively support CSS animations. + if (allowPrefix) { + if (_supportsCssAnimationWithPrefix === true || _supportsCssAnimationWithPrefix === false) { return _supportsCssAnimationWithPrefix; - } else { - _supportsCssAnimation = animation; + } + } else { + if (_supportsCssAnimation === true || _supportsCssAnimation === false) { return _supportsCssAnimation; } } - var uaMatch = function (ua) { - ua = ua.toLowerCase(); + let animation = false; + const domPrefixes = ['Webkit', 'O', 'Moz']; + const elm = document.createElement('div'); - var match = /(edg)[ \/]([\w.]+)/.exec(ua) || - /(edga)[ \/]([\w.]+)/.exec(ua) || - /(edgios)[ \/]([\w.]+)/.exec(ua) || - /(edge)[ \/]([\w.]+)/.exec(ua) || - /(opera)[ \/]([\w.]+)/.exec(ua) || - /(opr)[ \/]([\w.]+)/.exec(ua) || - /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(safari)[ \/]([\w.]+)/.exec(ua) || - /(firefox)[ \/]([\w.]+)/.exec(ua) || - ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; + if (elm.style.animationName !== undefined) { + animation = true; + } - var versionMatch = /(version)[ \/]([\w.]+)/.exec(ua); - - var platform_match = /(ipad)/.exec(ua) || - /(iphone)/.exec(ua) || - /(windows)/.exec(ua) || - /(android)/.exec(ua) || - []; - - var browser = match[1] || ''; - - if (browser === 'edge') { - platform_match = ['']; + if (animation === false && allowPrefix) { + for (let i = 0; i < domPrefixes.length; i++) { + if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) { + animation = true; + break; + } } - - if (browser === 'opr') { - browser = 'opera'; - } - - var version; - if (versionMatch && versionMatch.length > 2) { - version = versionMatch[2]; - } - - version = version || match[2] || '0'; - - var versionMajor = parseInt(version.split('.')[0]); - - if (isNaN(versionMajor)) { - versionMajor = 0; - } - - return { - browser: browser, - version: version, - platform: platform_match[0] || '', - versionMajor: versionMajor - }; - }; - - var userAgent = navigator.userAgent; - - var matched = uaMatch(userAgent); - var browser = {}; - - if (matched.browser) { - browser[matched.browser] = true; - browser.version = matched.version; - browser.versionMajor = matched.versionMajor; } - if (matched.platform) { - browser[matched.platform] = true; - } - - browser.edgeChromium = browser.edg || browser.edga || browser.edgios; - - if (!browser.chrome && !browser.edgeChromium && !browser.edge && !browser.opera && userAgent.toLowerCase().indexOf('webkit') !== -1) { - browser.safari = true; - } - - if (userAgent.toLowerCase().indexOf('playstation 4') !== -1) { - browser.ps4 = true; - browser.tv = true; - } - - if (isMobile(userAgent)) { - browser.mobile = true; - } - - if (userAgent.toLowerCase().indexOf('xbox') !== -1) { - browser.xboxOne = true; - browser.tv = true; - } - browser.animate = typeof document !== 'undefined' && document.documentElement.animate != null; - browser.tizen = userAgent.toLowerCase().indexOf('tizen') !== -1 || self.tizen != null; - browser.web0s = userAgent.toLowerCase().indexOf('Web0S'.toLowerCase()) !== -1; - browser.edgeUwp = browser.edge && (userAgent.toLowerCase().indexOf('msapphost') !== -1 || userAgent.toLowerCase().indexOf('webview') !== -1); - - if (!browser.tizen) { - browser.orsay = userAgent.toLowerCase().indexOf('smarthub') !== -1; + if (allowPrefix) { + _supportsCssAnimationWithPrefix = animation; + return _supportsCssAnimationWithPrefix; } else { - var v = (navigator.appVersion).match(/Tizen (\d+).(\d+)/); - browser.tizenVersion = parseInt(v[1]); + _supportsCssAnimation = animation; + return _supportsCssAnimation; + } +} + +const uaMatch = function (ua) { + ua = ua.toLowerCase(); + + const match = /(edg)[ \/]([\w.]+)/.exec(ua) || + /(edga)[ \/]([\w.]+)/.exec(ua) || + /(edgios)[ \/]([\w.]+)/.exec(ua) || + /(edge)[ \/]([\w.]+)/.exec(ua) || + /(opera)[ \/]([\w.]+)/.exec(ua) || + /(opr)[ \/]([\w.]+)/.exec(ua) || + /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(safari)[ \/]([\w.]+)/.exec(ua) || + /(firefox)[ \/]([\w.]+)/.exec(ua) || + ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + const versionMatch = /(version)[ \/]([\w.]+)/.exec(ua); + + let platform_match = /(ipad)/.exec(ua) || + /(iphone)/.exec(ua) || + /(windows)/.exec(ua) || + /(android)/.exec(ua) || + []; + + let browser = match[1] || ''; + + if (browser === 'edge') { + platform_match = ['']; } - if (browser.edgeUwp) { - browser.edge = true; + if (browser === 'opr') { + browser = 'opera'; } - browser.tv = isTv(); - browser.operaTv = browser.tv && userAgent.toLowerCase().indexOf('opr/') !== -1; - - if (browser.mobile || browser.tv) { - browser.slow = true; + let version; + if (versionMatch && versionMatch.length > 2) { + version = versionMatch[2]; } - if (typeof document !== 'undefined') { - /* eslint-disable-next-line compat/compat */ - if (('ontouchstart' in window) || (navigator.maxTouchPoints > 0)) { - browser.touch = true; - } + version = version || match[2] || '0'; + + let versionMajor = parseInt(version.split('.')[0]); + + if (isNaN(versionMajor)) { + versionMajor = 0; } - browser.keyboard = hasKeyboard(browser); - browser.supportsCssAnimation = supportsCssAnimation; + return { + browser: browser, + version: version, + platform: platform_match[0] || '', + versionMajor: versionMajor + }; +}; - browser.osx = userAgent.toLowerCase().indexOf('os x') !== -1; - browser.iOS = browser.ipad || browser.iphone || browser.ipod; +const userAgent = navigator.userAgent; - if (browser.iOS) { - browser.iOSVersion = iOSversion(); +const matched = uaMatch(userAgent); +const browser = {}; - if (browser.iOSVersion && browser.iOSVersion.length >= 2) { - browser.iOSVersion = browser.iOSVersion[0] + (browser.iOSVersion[1] / 10); - } +if (matched.browser) { + browser[matched.browser] = true; + browser.version = matched.version; + browser.versionMajor = matched.versionMajor; +} + +if (matched.platform) { + browser[matched.platform] = true; +} + +browser.edgeChromium = browser.edg || browser.edga || browser.edgios; + +if (!browser.chrome && !browser.edgeChromium && !browser.edge && !browser.opera && userAgent.toLowerCase().indexOf('webkit') !== -1) { + browser.safari = true; +} + +if (userAgent.toLowerCase().indexOf('playstation 4') !== -1) { + browser.ps4 = true; + browser.tv = true; +} + +if (isMobile(userAgent)) { + browser.mobile = true; +} + +if (userAgent.toLowerCase().indexOf('xbox') !== -1) { + browser.xboxOne = true; + browser.tv = true; +} +browser.animate = typeof document !== 'undefined' && document.documentElement.animate != null; +browser.tizen = userAgent.toLowerCase().indexOf('tizen') !== -1 || self.tizen != null; +browser.web0s = userAgent.toLowerCase().indexOf('Web0S'.toLowerCase()) !== -1; +browser.edgeUwp = browser.edge && (userAgent.toLowerCase().indexOf('msapphost') !== -1 || userAgent.toLowerCase().indexOf('webview') !== -1); + +if (!browser.tizen) { + browser.orsay = userAgent.toLowerCase().indexOf('smarthub') !== -1; +} else { + const v = (navigator.appVersion).match(/Tizen (\d+).(\d+)/); + browser.tizenVersion = parseInt(v[1]); +} + +if (browser.edgeUwp) { + browser.edge = true; +} + +browser.tv = isTv(); +browser.operaTv = browser.tv && userAgent.toLowerCase().indexOf('opr/') !== -1; + +if (browser.mobile || browser.tv) { + browser.slow = true; +} + +if (typeof document !== 'undefined') { + /* eslint-disable-next-line compat/compat */ + if (('ontouchstart' in window) || (navigator.maxTouchPoints > 0)) { + browser.touch = true; } +} - return browser; -}); +browser.keyboard = hasKeyboard(browser); +browser.supportsCssAnimation = supportsCssAnimation; + +browser.osx = userAgent.toLowerCase().indexOf('os x') !== -1; +browser.iOS = browser.ipad || browser.iphone || browser.ipod; + +if (browser.iOS) { + browser.iOSVersion = iOSversion(); + + if (browser.iOSVersion && browser.iOSVersion.length >= 2) { + browser.iOSVersion = browser.iOSVersion[0] + (browser.iOSVersion[1] / 10); + } +} + +export default browser; From f93c93f8709cbea6d65039bf29c1574dc9e2f839 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 29 Jul 2020 10:05:16 +0100 Subject: [PATCH 027/463] Migration of itemhelper to ES6 module --- package.json | 1 + src/components/itemHelper.js | 618 ++++++++++++++++++----------------- 2 files changed, 314 insertions(+), 305 deletions(-) diff --git a/package.json b/package.json index bd199cb3e2..8930867484 100644 --- a/package.json +++ b/package.json @@ -119,6 +119,7 @@ "src/components/imageUploader/imageUploader.js", "src/components/indicators/indicators.js", "src/components/itemContextMenu.js", + "src/components/itemHelper.js", "src/components/itemidentifier/itemidentifier.js", "src/components/itemMediaInfo/itemMediaInfo.js", "src/components/lazyLoader/lazyLoaderIntersectionObserver.js", diff --git a/src/components/itemHelper.js b/src/components/itemHelper.js index 55e9e10062..7d1ac0e110 100644 --- a/src/components/itemHelper.js +++ b/src/components/itemHelper.js @@ -1,342 +1,350 @@ -define(['apphost', 'globalize'], function (appHost, globalize) { - 'use strict'; +import appHost from 'apphost'; +import globalize from 'globalize'; - function getDisplayName(item, options = {}) { - if (!item) { - throw new Error('null item passed into getDisplayName'); +export function getDisplayName(item, options = {}) { + if (!item) { + throw new Error('null item passed into getDisplayName'); + } + + if (item.Type === 'Timer') { + item = item.ProgramInfo || item; + } + + let name = ((item.Type === 'Program' || item.Type === 'Recording') && (item.IsSeries || item.EpisodeTitle) ? item.EpisodeTitle : item.Name) || ''; + + if (item.Type === 'TvChannel') { + if (item.ChannelNumber) { + return item.ChannelNumber + ' ' + name; } - - if (item.Type === 'Timer') { - item = item.ProgramInfo || item; - } - - var name = ((item.Type === 'Program' || item.Type === 'Recording') && (item.IsSeries || item.EpisodeTitle) ? item.EpisodeTitle : item.Name) || ''; - - if (item.Type === 'TvChannel') { - if (item.ChannelNumber) { - return item.ChannelNumber + ' ' + name; - } - return name; - } - if (item.Type === 'Episode' && item.ParentIndexNumber === 0) { - name = globalize.translate('ValueSpecialEpisodeName', name); - } else if ((item.Type === 'Episode' || item.Type === 'Program') && item.IndexNumber != null && item.ParentIndexNumber != null && options.includeIndexNumber !== false) { - var displayIndexNumber = item.IndexNumber; - - var number = displayIndexNumber; - var nameSeparator = ' - '; - - if (options.includeParentInfo !== false) { - number = 'S' + item.ParentIndexNumber + ':E' + number; - } else { - nameSeparator = '. '; - } - - if (item.IndexNumberEnd) { - displayIndexNumber = item.IndexNumberEnd; - number += '-' + displayIndexNumber; - } - - if (number) { - name = name ? (number + nameSeparator + name) : number; - } - } - return name; } + if (item.Type === 'Episode' && item.ParentIndexNumber === 0) { + name = globalize.translate('ValueSpecialEpisodeName', name); + } else if ((item.Type === 'Episode' || item.Type === 'Program') && item.IndexNumber != null && item.ParentIndexNumber != null && options.includeIndexNumber !== false) { + let displayIndexNumber = item.IndexNumber; - function supportsAddingToCollection(item) { - var invalidTypes = ['Genre', 'MusicGenre', 'Studio', 'UserView', 'CollectionFolder', 'Audio', 'Program', 'Timer', 'SeriesTimer']; + let number = displayIndexNumber; + let nameSeparator = ' - '; - if (item.Type === 'Recording') { - if (item.Status !== 'Completed') { - return false; - } + if (options.includeParentInfo !== false) { + number = 'S' + item.ParentIndexNumber + ':E' + number; + } else { + nameSeparator = '. '; } - return !item.CollectionType && invalidTypes.indexOf(item.Type) === -1 && item.MediaType !== 'Photo' && !isLocalItem(item); + if (item.IndexNumberEnd) { + displayIndexNumber = item.IndexNumberEnd; + number += '-' + displayIndexNumber; + } + + if (number) { + name = name ? (number + nameSeparator + name) : number; + } } - function supportsAddingToPlaylist(item) { - if (item.Type === 'Program') { - return false; - } - if (item.Type === 'TvChannel') { - return false; - } - if (item.Type === 'Timer') { - return false; - } - if (item.Type === 'SeriesTimer') { - return false; - } - if (item.MediaType === 'Photo') { - return false; - } + return name; +} - if (item.Type === 'Recording') { - if (item.Status !== 'Completed') { - return false; - } - } +export function supportsAddingToCollection(item) { + const invalidTypes = ['Genre', 'MusicGenre', 'Studio', 'UserView', 'CollectionFolder', 'Audio', 'Program', 'Timer', 'SeriesTimer']; - if (isLocalItem(item)) { + if (item.Type === 'Recording') { + if (item.Status !== 'Completed') { return false; } - if (item.CollectionType === 'livetv') { - return false; - } - - return item.MediaType || item.IsFolder || item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'MusicArtist'; } - function canEdit(user, item) { - var itemType = item.Type; + return !item.CollectionType && invalidTypes.indexOf(item.Type) === -1 && item.MediaType !== 'Photo' && !isLocalItem(item); +} - if (itemType === 'UserRootFolder' || itemType === 'UserView') { - return false; - } - - if (itemType === 'Program') { - return false; - } - - if (itemType === 'Timer') { - return false; - } - - if (itemType === 'SeriesTimer') { - return false; - } - - if (item.Type === 'Recording') { - if (item.Status !== 'Completed') { - return false; - } - } - - if (isLocalItem(item)) { - return false; - } - - return user.Policy.IsAdministrator; +export function supportsAddingToPlaylist(item) { + if (item.Type === 'Program') { + return false; + } + if (item.Type === 'TvChannel') { + return false; + } + if (item.Type === 'Timer') { + return false; + } + if (item.Type === 'SeriesTimer') { + return false; + } + if (item.MediaType === 'Photo') { + return false; } - function isLocalItem(item) { - if (item && item.Id && item.Id.indexOf('local') === 0) { + if (item.Type === 'Recording') { + if (item.Status !== 'Completed') { + return false; + } + } + + if (isLocalItem(item)) { + return false; + } + if (item.CollectionType === 'livetv') { + return false; + } + + return item.MediaType || item.IsFolder || item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'MusicArtist'; +} + +export function canEdit(user, item) { + const itemType = item.Type; + + if (itemType === 'UserRootFolder' || itemType === 'UserView') { + return false; + } + + if (itemType === 'Program') { + return false; + } + + if (itemType === 'Timer') { + return false; + } + + if (itemType === 'SeriesTimer') { + return false; + } + + if (item.Type === 'Recording') { + if (item.Status !== 'Completed') { + return false; + } + } + + if (isLocalItem(item)) { + return false; + } + + return user.Policy.IsAdministrator; +} + +export function isLocalItem(item) { + if (item && item.Id && item.Id.indexOf('local') === 0) { + return true; + } + + return false; +} + +export function canIdentify (user, item) { + const itemType = item.Type; + + if (itemType === 'Movie' || + itemType === 'Trailer' || + itemType === 'Series' || + itemType === 'BoxSet' || + itemType === 'Person' || + itemType === 'Book' || + itemType === 'MusicAlbum' || + itemType === 'MusicArtist' || + itemType === 'MusicVideo') { + if (user.Policy.IsAdministrator) { + if (!isLocalItem(item)) { + return true; + } + } + } + + return false; +} + +export function canEditImages (user, item) { + const itemType = item.Type; + + if (item.MediaType === 'Photo') { + return false; + } + + if (itemType === 'UserView') { + if (user.Policy.IsAdministrator) { return true; } return false; } - return { - getDisplayName: getDisplayName, - supportsAddingToCollection: supportsAddingToCollection, - supportsAddingToPlaylist: supportsAddingToPlaylist, - isLocalItem: isLocalItem, - - canIdentify: function (user, item) { - var itemType = item.Type; - - if (itemType === 'Movie' || - itemType === 'Trailer' || - itemType === 'Series' || - itemType === 'BoxSet' || - itemType === 'Person' || - itemType === 'Book' || - itemType === 'MusicAlbum' || - itemType === 'MusicArtist' || - itemType === 'MusicVideo') { - if (user.Policy.IsAdministrator) { - if (!isLocalItem(item)) { - return true; - } - } - } - + if (item.Type === 'Recording') { + if (item.Status !== 'Completed') { return false; - }, + } + } - canEdit: canEdit, + return itemType !== 'Timer' && itemType !== 'SeriesTimer' && canEdit(user, item) && !isLocalItem(item); +} - canEditImages: function (user, item) { - var itemType = item.Type; +export function canSync (user, item) { + if (user && !user.Policy.EnableContentDownloading) { + return false; + } - if (item.MediaType === 'Photo') { - return false; - } + if (isLocalItem(item)) { + return false; + } - if (itemType === 'UserView') { - if (user.Policy.IsAdministrator) { - return true; - } - - return false; - } - - if (item.Type === 'Recording') { - if (item.Status !== 'Completed') { - return false; - } - } - - return itemType !== 'Timer' && itemType !== 'SeriesTimer' && canEdit(user, item) && !isLocalItem(item); - }, - - canSync: function (user, item) { - if (user && !user.Policy.EnableContentDownloading) { - return false; - } - - if (isLocalItem(item)) { - return false; - } - - return item.SupportsSync; - }, - - canShare: function (item, user) { - if (item.Type === 'Program') { - return false; - } - if (item.Type === 'TvChannel') { - return false; - } - if (item.Type === 'Timer') { - return false; - } - if (item.Type === 'SeriesTimer') { - return false; - } - if (item.Type === 'Recording') { - if (item.Status !== 'Completed') { - return false; - } - } - if (isLocalItem(item)) { - return false; - } - return user.Policy.EnablePublicSharing && appHost.supports('sharing'); - }, - - enableDateAddedDisplay: function (item) { - return !item.IsFolder && item.MediaType && item.Type !== 'Program' && item.Type !== 'TvChannel' && item.Type !== 'Trailer'; - }, - - canMarkPlayed: function (item) { - if (item.Type === 'Program') { - return false; - } - - if (item.MediaType === 'Video') { - if (item.Type !== 'TvChannel') { - return true; - } - } else if (item.MediaType === 'Audio') { - if (item.Type === 'AudioPodcast') { - return true; - } - if (item.Type === 'AudioBook') { - return true; - } - } - - if (item.Type === 'Series' || - item.Type === 'Season' || - item.Type === 'BoxSet' || - item.MediaType === 'Book' || - item.MediaType === 'Recording') { - return true; - } + return item.SupportsSync; +} +export function canShare (item, user) { + if (item.Type === 'Program') { + return false; + } + if (item.Type === 'TvChannel') { + return false; + } + if (item.Type === 'Timer') { + return false; + } + if (item.Type === 'SeriesTimer') { + return false; + } + if (item.Type === 'Recording') { + if (item.Status !== 'Completed') { return false; - }, + } + } + if (isLocalItem(item)) { + return false; + } + return user.Policy.EnablePublicSharing && appHost.supports('sharing'); +} - canRate: function (item) { - if (item.Type === 'Program' - || item.Type === 'Timer' - || item.Type === 'SeriesTimer' - || item.Type === 'CollectionFolder' - || item.Type === 'UserView' - || item.Type === 'Channel' - || !item.UserData) { - return false; - } +export function enableDateAddedDisplay (item) { + return !item.IsFolder && item.MediaType && item.Type !== 'Program' && item.Type !== 'TvChannel' && item.Type !== 'Trailer'; +} - return true; - }, - - canConvert: function (item, user) { - if (!user.Policy.EnableMediaConversion) { - return false; - } - - if (isLocalItem(item)) { - return false; - } - - var mediaType = item.MediaType; - if (mediaType === 'Book' || mediaType === 'Photo' || mediaType === 'Audio') { - return false; - } - - var collectionType = item.CollectionType; - if (collectionType === 'livetv') { - return false; - } - - var type = item.Type; - if (type === 'Channel' || type === 'Person' || type === 'Year' || type === 'Program' || type === 'Timer' || type === 'SeriesTimer') { - return false; - } - - if (item.LocationType === 'Virtual' && !item.IsFolder) { - return false; - } - - if (item.IsPlaceHolder) { - return false; - } - - return true; - }, - - canRefreshMetadata: function (item, user) { - if (user.Policy.IsAdministrator) { - var collectionType = item.CollectionType; - if (collectionType === 'livetv') { - return false; - } - - if (item.Type !== 'Timer' && item.Type !== 'SeriesTimer' && item.Type !== 'Program' && item.Type !== 'TvChannel' && !(item.Type === 'Recording' && item.Status !== 'Completed')) { - if (!isLocalItem(item)) { - return true; - } - } - } - - return false; - }, - - supportsMediaSourceSelection: function (item) { - if (item.MediaType !== 'Video') { - return false; - } - if (item.Type === 'TvChannel') { - return false; - } - if (!item.MediaSources || (item.MediaSources.length === 1 && item.MediaSources[0].Type === 'Placeholder')) { - return false; - } - if (item.EnableMediaSourceDisplay === false) { - return false; - } - if (item.EnableMediaSourceDisplay == null && item.SourceType && item.SourceType !== 'Library') { - return false; - } +export function canMarkPlayed (item) { + if (item.Type === 'Program') { + return false; + } + if (item.MediaType === 'Video') { + if (item.Type !== 'TvChannel') { return true; } - }; -}); + } else if (item.MediaType === 'Audio') { + if (item.Type === 'AudioPodcast') { + return true; + } + if (item.Type === 'AudioBook') { + return true; + } + } + + if (item.Type === 'Series' || + item.Type === 'Season' || + item.Type === 'BoxSet' || + item.MediaType === 'Book' || + item.MediaType === 'Recording') { + return true; + } + + return false; +} + +export function canRate (item) { + if (item.Type === 'Program' + || item.Type === 'Timer' + || item.Type === 'SeriesTimer' + || item.Type === 'CollectionFolder' + || item.Type === 'UserView' + || item.Type === 'Channel' + || !item.UserData) { + return false; + } + + return true; +} + +export function canConvert (item, user) { + if (!user.Policy.EnableMediaConversion) { + return false; + } + + if (isLocalItem(item)) { + return false; + } + + const mediaType = item.MediaType; + if (mediaType === 'Book' || mediaType === 'Photo' || mediaType === 'Audio') { + return false; + } + + const collectionType = item.CollectionType; + if (collectionType === 'livetv') { + return false; + } + + const type = item.Type; + if (type === 'Channel' || type === 'Person' || type === 'Year' || type === 'Program' || type === 'Timer' || type === 'SeriesTimer') { + return false; + } + + if (item.LocationType === 'Virtual' && !item.IsFolder) { + return false; + } + + if (item.IsPlaceHolder) { + return false; + } + + return true; +} + +export function canRefreshMetadata (item, user) { + if (user.Policy.IsAdministrator) { + const collectionType = item.CollectionType; + if (collectionType === 'livetv') { + return false; + } + + if (item.Type !== 'Timer' && item.Type !== 'SeriesTimer' && item.Type !== 'Program' && item.Type !== 'TvChannel' && !(item.Type === 'Recording' && item.Status !== 'Completed')) { + if (!isLocalItem(item)) { + return true; + } + } + } + + return false; +} + +export function supportsMediaSourceSelection (item) { + if (item.MediaType !== 'Video') { + return false; + } + if (item.Type === 'TvChannel') { + return false; + } + if (!item.MediaSources || (item.MediaSources.length === 1 && item.MediaSources[0].Type === 'Placeholder')) { + return false; + } + if (item.EnableMediaSourceDisplay === false) { + return false; + } + if (item.EnableMediaSourceDisplay == null && item.SourceType && item.SourceType !== 'Library') { + return false; + } + + return true; +} + +export default { + getDisplayName: getDisplayName, + supportsAddingToCollection: supportsAddingToCollection, + supportsAddingToPlaylist: supportsAddingToPlaylist, + isLocalItem: isLocalItem, + canIdentify: canIdentify, + canEdit: canEdit, + canEditImages: canEditImages, + canSync: canSync, + canShare: canShare, + enableDateAddedDisplay: enableDateAddedDisplay, + canMarkPlayed: canMarkPlayed, + canRate: canRate, + canConvert: canConvert, + canRefreshMetadata: canRefreshMetadata, + supportsMediaSourceSelection: supportsMediaSourceSelection +}; From 3705a7c96ff9199f52a7d1d68910509955e46111 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 29 Jul 2020 10:05:26 +0100 Subject: [PATCH 028/463] migration of itemDetails to ES6 module --- package.json | 1 + src/controllers/itemDetails/index.js | 388 +++++++++++++++------------ 2 files changed, 210 insertions(+), 179 deletions(-) diff --git a/package.json b/package.json index 8930867484..a70bfac564 100644 --- a/package.json +++ b/package.json @@ -191,6 +191,7 @@ "src/controllers/dashboard/users/userparentalcontrol.js", "src/controllers/dashboard/users/userpasswordpage.js", "src/controllers/dashboard/users/userprofilespage.js", + "src/controllers/itemDetails/index.js", "src/controllers/playback/queue/index.js", "src/controllers/playback/video/index.js", "src/controllers/searchpage.js", diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 29aa8ad1e1..0e5b41b658 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1,8 +1,36 @@ -define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSettings', 'cardBuilder', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'itemContextMenu', 'itemHelper', 'dom', 'indicators', 'imageLoader', 'libraryMenu', 'globalize', 'browser', 'events', 'playbackManager', 'scrollStyles', 'emby-itemscontainer', 'emby-checkbox', 'emby-button', 'emby-playstatebutton', 'emby-ratingbutton', 'emby-scroller', 'emby-select'], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, imageLoader, libraryMenu, globalize, browser, events, playbackManager) { - 'use strict'; +import loading from 'loading'; +import appRouter from 'appRouter'; +import layoutManager from 'layoutManager'; +import connectionManager from 'connectionManager'; +import * as userSettings from 'userSettings'; +import cardBuilder from 'cardBuilder'; +import datetime from 'datetime'; +import mediaInfo from 'mediaInfo'; +import backdrop from 'backdrop'; +import listView from 'listView'; +import itemContextMenu from 'itemContextMenu'; +import itemHelper from 'itemHelper'; +import dom from 'dom'; +import indicators from 'indicators'; +import imageLoader from 'imageLoader'; +import libraryMenu from 'libraryMenu'; +import globalize from 'globalize'; +import browser from 'browser'; +import events from 'events'; +import playbackManager from 'playbackManager'; +import 'scrollStyles'; +import 'emby-itemscontainer'; +import 'emby-checkbox'; +import 'emby-button'; +import 'emby-playstatebutton'; +import 'emby-ratingbutton'; +import 'emby-scroller'; +import 'emby-select'; + +/* eslint-disable indent */ function getPromise(apiClient, params) { - var id = params.id; + const id = params.id; if (id) { return apiClient.getItem(apiClient.getCurrentUserId(), id); @@ -38,7 +66,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function getContextMenuOptions(item, user, button) { - var options = { + const options = { item: item, open: false, play: false, @@ -58,7 +86,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function getProgramScheduleHtml(items) { - var html = ''; + let html = ''; html += '
'; html += listView.getListViewHtml({ @@ -94,8 +122,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti result.Items = []; } - var html = getProgramScheduleHtml(result.Items); - var scheduleTab = page.querySelector('.seriesTimerSchedule'); + const html = getProgramScheduleHtml(result.Items); + const scheduleTab = page.querySelector('.seriesTimerSchedule'); scheduleTab.innerHTML = html; imageLoader.lazyChildren(scheduleTab); }); @@ -115,7 +143,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } if (user.Policy.EnableLiveTvManagement) { - require(['seriesRecordingEditor'], function (seriesRecordingEditor) { + import('seriesRecordingEditor').then(({default: seriesRecordingEditor}) => { seriesRecordingEditor.embed(item, apiClient.serverId(), { context: page.querySelector('.seriesRecordingEditor') }); @@ -131,7 +159,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderTrackSelections(page, instance, item, forceReload) { - var select = page.querySelector('.selectSource'); + const select = page.querySelector('.selectSource'); if (!item.MediaSources || !itemHelper.supportsMediaSourceSelection(item) || -1 === playbackManager.getSupportedCommands().indexOf('PlayMediaSource') || !playbackManager.canPlay(item)) { page.querySelector('.trackSelections').classList.add('hide'); @@ -142,17 +170,17 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti return; } - var mediaSources = item.MediaSources; + const mediaSources = item.MediaSources; instance._currentPlaybackMediaSources = mediaSources; page.querySelector('.trackSelections').classList.remove('hide'); select.setLabel(globalize.translate('LabelVersion')); - var currentValue = select.value; + const currentValue = select.value; - var selectedId = mediaSources[0].Id; + const selectedId = mediaSources[0].Id; select.innerHTML = mediaSources.map(function (v) { - var selected = v.Id === selectedId ? ' selected' : ''; + const selected = v.Id === selectedId ? ' selected' : ''; return ''; }).join(''); @@ -170,22 +198,22 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderVideoSelections(page, mediaSources) { - var mediaSourceId = page.querySelector('.selectSource').value; - var mediaSource = mediaSources.filter(function (m) { + const mediaSourceId = page.querySelector('.selectSource').value; + const mediaSource = mediaSources.filter(function (m) { return m.Id === mediaSourceId; })[0]; - var tracks = mediaSource.MediaStreams.filter(function (m) { + const tracks = mediaSource.MediaStreams.filter(function (m) { return m.Type === 'Video'; }); - var select = page.querySelector('.selectVideo'); + const select = page.querySelector('.selectVideo'); select.setLabel(globalize.translate('LabelVideo')); - var selectedId = tracks.length ? tracks[0].Index : -1; + const selectedId = tracks.length ? tracks[0].Index : -1; select.innerHTML = tracks.map(function (v) { - var selected = v.Index === selectedId ? ' selected' : ''; - var titleParts = []; - var resolutionText = mediaInfo.getResolutionText(v); + const selected = v.Index === selectedId ? ' selected' : ''; + const titleParts = []; + const resolutionText = mediaInfo.getResolutionText(v); if (resolutionText) { titleParts.push(resolutionText); @@ -207,18 +235,18 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderAudioSelections(page, mediaSources) { - var mediaSourceId = page.querySelector('.selectSource').value; - var mediaSource = mediaSources.filter(function (m) { + const mediaSourceId = page.querySelector('.selectSource').value; + const mediaSource = mediaSources.filter(function (m) { return m.Id === mediaSourceId; })[0]; - var tracks = mediaSource.MediaStreams.filter(function (m) { + const tracks = mediaSource.MediaStreams.filter(function (m) { return 'Audio' === m.Type; }); - var select = page.querySelector('.selectAudio'); + const select = page.querySelector('.selectAudio'); select.setLabel(globalize.translate('LabelAudio')); - var selectedId = mediaSource.DefaultAudioStreamIndex; + const selectedId = mediaSource.DefaultAudioStreamIndex; select.innerHTML = tracks.map(function (v) { - var selected = v.Index === selectedId ? ' selected' : ''; + const selected = v.Index === selectedId ? ' selected' : ''; return ''; }).join(''); @@ -236,24 +264,24 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderSubtitleSelections(page, mediaSources) { - var mediaSourceId = page.querySelector('.selectSource').value; - var mediaSource = mediaSources.filter(function (m) { + const mediaSourceId = page.querySelector('.selectSource').value; + const mediaSource = mediaSources.filter(function (m) { return m.Id === mediaSourceId; })[0]; - var tracks = mediaSource.MediaStreams.filter(function (m) { + const tracks = mediaSource.MediaStreams.filter(function (m) { return 'Subtitle' === m.Type; }); - var select = page.querySelector('.selectSubtitles'); + const select = page.querySelector('.selectSubtitles'); select.setLabel(globalize.translate('LabelSubtitles')); - var selectedId = null == mediaSource.DefaultSubtitleStreamIndex ? -1 : mediaSource.DefaultSubtitleStreamIndex; + const selectedId = null == mediaSource.DefaultSubtitleStreamIndex ? -1 : mediaSource.DefaultSubtitleStreamIndex; - var videoTracks = mediaSource.MediaStreams.filter(function (m) { + const videoTracks = mediaSource.MediaStreams.filter(function (m) { return 'Video' === m.Type; }); // This only makes sense on Video items if (videoTracks.length) { - var selected = -1 === selectedId ? ' selected' : ''; + let selected = -1 === selectedId ? ' selected' : ''; select.innerHTML = '' + tracks.map(function (v) { selected = v.Index === selectedId ? ' selected' : ''; return ''; @@ -273,10 +301,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function reloadPlayButtons(page, item) { - var canPlay = false; + let canPlay = false; if ('Program' == item.Type) { - var now = new Date(); + const now = new Date(); if (now >= datetime.parseISO8601Date(item.StartDate, true) && now < datetime.parseISO8601Date(item.EndDate, true)) { hideAll(page, 'btnPlay', true); @@ -290,9 +318,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti hideAll(page, 'btnShuffle'); } else if (playbackManager.canPlay(item)) { hideAll(page, 'btnPlay', true); - var enableInstantMix = -1 !== ['Audio', 'MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); + const enableInstantMix = -1 !== ['Audio', 'MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); hideAll(page, 'btnInstantMix', enableInstantMix); - var enableShuffle = item.IsFolder || -1 !== ['MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); + const enableShuffle = item.IsFolder || -1 !== ['MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); hideAll(page, 'btnShuffle', enableShuffle); canPlay = true; @@ -315,12 +343,12 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function reloadUserDataButtons(page, item) { - var i; - var length; - var btnPlaystates = page.querySelectorAll('.btnPlaystate'); + let i; + let length; + const btnPlaystates = page.querySelectorAll('.btnPlaystate'); for (i = 0, length = btnPlaystates.length; i < length; i++) { - var btnPlaystate = btnPlaystates[i]; + const btnPlaystate = btnPlaystates[i]; if (itemHelper.canMarkPlayed(item)) { btnPlaystate.classList.remove('hide'); @@ -331,10 +359,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - var btnUserRatings = page.querySelectorAll('.btnUserRating'); + const btnUserRatings = page.querySelectorAll('.btnUserRating'); for (i = 0, length = btnUserRatings.length; i < length; i++) { - var btnUserRating = btnUserRatings[i]; + const btnUserRating = btnUserRatings[i]; if (itemHelper.canRate(item)) { btnUserRating.classList.remove('hide'); @@ -347,10 +375,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function getArtistLinksHtml(artists, serverId, context) { - var html = []; + let html = []; for (const artist of artists) { - var href = appRouter.getRouteUrl(artist, { + const href = appRouter.getRouteUrl(artist, { context: context, itemType: 'MusicArtist', serverId: serverId @@ -369,9 +397,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti * @param {Object} context - Application context. */ function renderName(item, container, context) { - var parentRoute; - var parentNameHtml = []; - var parentNameLast = false; + let parentRoute; + const parentNameHtml = []; + let parentNameLast = false; if (item.AlbumArtists) { parentNameHtml.push(getArtistLinksHtml(item.AlbumArtists, item.ServerId, context)); @@ -434,9 +462,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } // FIXME: This whole section needs some refactoring, so it becames easier to scale across all form factors. See GH #1022 - var html = ''; - var tvShowHtml = parentNameHtml[0]; - var tvSeasonHtml = parentNameHtml[1]; + let html = ''; + const tvShowHtml = parentNameHtml[0]; + const tvSeasonHtml = parentNameHtml[1]; if (parentNameHtml.length) { if (parentNameLast) { @@ -451,7 +479,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - var name = itemHelper.getDisplayName(item, { + const name = itemHelper.getDisplayName(item, { includeParentInfo: false }); @@ -497,9 +525,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderDetailPageBackdrop(page, item, apiClient) { - var imgUrl; - var hasbackdrop = false; - var itemBackdropElement = page.querySelector('#itemBackdrop'); + let imgUrl; + let hasbackdrop = false; + const itemBackdropElement = page.querySelector('#itemBackdrop'); if (!layoutManager.mobile && !userSettings.detailsBanner()) { return false; @@ -550,7 +578,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti renderSeriesTimerEditor(page, item, apiClient, user); renderTimerEditor(page, item, apiClient, user); setInitialCollapsibleState(page, item, apiClient, params.context, user); - var canPlay = reloadPlayButtons(page, item); + const canPlay = reloadPlayButtons(page, item); if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && -1 !== playbackManager.getSupportedCommands().indexOf('PlayTrailers')) { hideAll(page, 'btnPlayTrailer', true); @@ -567,7 +595,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } showRecordingFields(instance, page, item, user); - var groupedVersions = (item.MediaSources || []).filter(function (g) { + const groupedVersions = (item.MediaSources || []).filter(function (g) { return 'Grouping' == g.Type; }); @@ -583,11 +611,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti hideAll(page, 'btnMoreCommands'); } - var itemBirthday = page.querySelector('#itemBirthday'); + const itemBirthday = page.querySelector('#itemBirthday'); if ('Person' == item.Type && item.PremiereDate) { try { - var birthday = datetime.parseISO8601Date(item.PremiereDate, true).toDateString(); + const birthday = datetime.parseISO8601Date(item.PremiereDate, true).toDateString(); itemBirthday.classList.remove('hide'); itemBirthday.innerHTML = globalize.translate('BirthDateValue', birthday); } catch (err) { @@ -597,11 +625,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti itemBirthday.classList.add('hide'); } - var itemDeathDate = page.querySelector('#itemDeathDate'); + const itemDeathDate = page.querySelector('#itemDeathDate'); if ('Person' == item.Type && item.EndDate) { try { - var deathday = datetime.parseISO8601Date(item.EndDate, true).toDateString(); + const deathday = datetime.parseISO8601Date(item.EndDate, true).toDateString(); itemDeathDate.classList.remove('hide'); itemDeathDate.innerHTML = globalize.translate('DeathDateValue', deathday); } catch (err) { @@ -611,10 +639,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti itemDeathDate.classList.add('hide'); } - var itemBirthLocation = page.querySelector('#itemBirthLocation'); + const itemBirthLocation = page.querySelector('#itemBirthLocation'); if ('Person' == item.Type && item.ProductionLocations && item.ProductionLocations.length) { - var gmap = '' + item.ProductionLocations[0] + ''; + const gmap = '' + item.ProductionLocations[0] + ''; itemBirthLocation.classList.remove('hide'); itemBirthLocation.innerHTML = globalize.translate('BirthPlaceValue', gmap); } else { @@ -628,7 +656,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti hideAll(page, 'btnDownload', true); } - require(['autoFocuser'], function (autoFocuser) { + import('autoFocuser').then(({default: autoFocuser}) => { autoFocuser.autoFocus(page); }); } @@ -651,9 +679,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderLogo(page, item, apiClient) { - var detailLogo = page.querySelector('.detailLogo'); + const detailLogo = page.querySelector('.detailLogo'); - var url = logoImageUrl(item, apiClient, {}); + const url = logoImageUrl(item, apiClient, {}); if (!layoutManager.mobile && !userSettings.enableBackdrops()) { detailLogo.classList.add('hide'); @@ -667,10 +695,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function showRecordingFields(instance, page, item, user) { if (!instance.currentRecordingFields) { - var recordingFieldsElement = page.querySelector('.recordingFields'); + const recordingFieldsElement = page.querySelector('.recordingFields'); if ('Program' == item.Type && user.Policy.EnableLiveTvManagement) { - require(['recordingFields'], function (recordingFields) { + import('recordingFields').then(({default: recordingFields}) => { instance.currentRecordingFields = new recordingFields({ parent: recordingFieldsElement, programId: item.Id, @@ -686,9 +714,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderLinks(page, item) { - var externalLinksElem = page.querySelector('.itemExternalLinks'); + const externalLinksElem = page.querySelector('.itemExternalLinks'); - var links = []; + const links = []; if (!layoutManager.tv && item.HomePageUrl) { links.push(`${globalize.translate('ButtonWebsite')}`); @@ -700,7 +728,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - var html = []; + const html = []; if (links.length) { html.push(links.join(', ')); } @@ -758,7 +786,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderNextUp(page, item, user) { - var section = page.querySelector('.nextUpSection'); + const section = page.querySelector('.nextUpSection'); if ('Series' != item.Type) { return void section.classList.add('hide'); @@ -774,7 +802,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti section.classList.add('hide'); } - var html = cardBuilder.getCardsHtml({ + const html = cardBuilder.getCardsHtml({ items: result.Items, shape: 'overflowBackdrop', showTitle: true, @@ -783,7 +811,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti centerText: true, overlayPlayButton: true }); - var itemsContainer = section.querySelector('.nextUpItems'); + const itemsContainer = section.querySelector('.nextUpItems'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); }); @@ -841,8 +869,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function toggleLineClamp(clampTarget, e) { - var expandButton = e.target; - var clampClassName = 'detail-clamp-text'; + const expandButton = e.target; + const clampClassName = 'detail-clamp-text'; if (clampTarget.classList.contains(clampClassName)) { clampTarget.classList.remove(clampClassName); @@ -855,7 +883,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function renderOverview(page, item) { for (const overviewElemnt of page.querySelectorAll('.overview')) { - var overview = item.Overview || ''; + const overview = item.Overview || ''; if (overview) { overviewElemnt.innerHTML = overview; @@ -863,7 +891,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti overviewElemnt.classList.add('detail-clamp-text'); // Grab the sibling element to control the expand state - var expandButton = overviewElemnt.parentElement.querySelector('.overview-expand'); + const expandButton = overviewElemnt.parentElement.querySelector('.overview-expand'); // Detect if we have overflow of text. Based on this StackOverflow answer // https://stackoverflow.com/a/35157976 @@ -886,10 +914,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderGenres(page, item, context = inferContext(item)) { - var genres = item.GenreItems || []; - var type = context === 'music' ? 'MusicGenre' : 'Genre'; + const genres = item.GenreItems || []; + const type = context === 'music' ? 'MusicGenre' : 'Genre'; - var html = genres.map(function (p) { + const html = genres.map(function (p) { return '' + p.Name + ''; }).join(', '); - var genresLabel = page.querySelector('.genresLabel'); + const genresLabel = page.querySelector('.genresLabel'); genresLabel.innerHTML = globalize.translate(genres.length > 1 ? 'Genres' : 'Genre'); - var genresValue = page.querySelector('.genres'); + const genresValue = page.querySelector('.genres'); genresValue.innerHTML = html; - var genresGroup = page.querySelector('.genresGroup'); + const genresGroup = page.querySelector('.genresGroup'); if (genres.length) { genresGroup.classList.remove('hide'); } else { @@ -914,11 +942,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderWriter(page, item, context) { - var writers = (item.People || []).filter(function (person) { + const writers = (item.People || []).filter(function (person) { return person.Type === 'Writer'; }); - var html = writers.map(function (person) { + const html = writers.map(function (person) { return '' + person.Name + ''; }).join(', '); - var writersLabel = page.querySelector('.writersLabel'); + const writersLabel = page.querySelector('.writersLabel'); writersLabel.innerHTML = globalize.translate(writers.length > 1 ? 'Writers' : 'Writer'); - var writersValue = page.querySelector('.writers'); + const writersValue = page.querySelector('.writers'); writersValue.innerHTML = html; - var writersGroup = page.querySelector('.writersGroup'); + const writersGroup = page.querySelector('.writersGroup'); if (writers.length) { writersGroup.classList.remove('hide'); } else { @@ -943,11 +971,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderDirector(page, item, context) { - var directors = (item.People || []).filter(function (person) { + const directors = (item.People || []).filter(function (person) { return person.Type === 'Director'; }); - var html = directors.map(function (person) { + const html = directors.map(function (person) { return '' + person.Name + ''; }).join(', '); - var directorsLabel = page.querySelector('.directorsLabel'); + const directorsLabel = page.querySelector('.directorsLabel'); directorsLabel.innerHTML = globalize.translate(directors.length > 1 ? 'Directors' : 'Director'); - var directorsValue = page.querySelector('.directors'); + const directorsValue = page.querySelector('.directors'); directorsValue.innerHTML = html; - var directorsGroup = page.querySelector('.directorsGroup'); + const directorsGroup = page.querySelector('.directorsGroup'); if (directors.length) { directorsGroup.classList.remove('hide'); } else { @@ -1004,7 +1032,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderTagline(page, item) { - var taglineElement = page.querySelector('.tagline'); + const taglineElement = page.querySelector('.tagline'); if (item.Taglines && item.Taglines.length) { taglineElement.classList.remove('hide'); @@ -1052,14 +1080,14 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderMoreFromSeason(view, item, apiClient) { - var section = view.querySelector('.moreFromSeasonSection'); + const section = view.querySelector('.moreFromSeasonSection'); if (section) { if ('Episode' !== item.Type || !item.SeasonId || !item.SeriesId) { return void section.classList.add('hide'); } - var userId = apiClient.getCurrentUserId(); + const userId = apiClient.getCurrentUserId(); apiClient.getEpisodes(item.SeriesId, { SeasonId: item.SeasonId, UserId: userId, @@ -1071,7 +1099,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti section.classList.remove('hide'); section.querySelector('h2').innerHTML = globalize.translate('MoreFromValue', item.SeasonName); - var itemsContainer = section.querySelector('.itemsContainer'); + const itemsContainer = section.querySelector('.itemsContainer'); cardBuilder.buildCards(result.Items, { parentContainer: section, itemsContainer: itemsContainer, @@ -1084,7 +1112,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti includeParentInfoInTitle: false, allowBottomPadding: false }); - var card = itemsContainer.querySelector('.card[data-id="' + item.Id + '"]'); + const card = itemsContainer.querySelector('.card[data-id="' + item.Id + '"]'); if (card) { setTimeout(function () { @@ -1096,7 +1124,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderMoreFromArtist(view, item, apiClient) { - var section = view.querySelector('.moreFromArtistSection'); + const section = view.querySelector('.moreFromArtistSection'); if (section) { if ('MusicArtist' === item.Type) { @@ -1107,7 +1135,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti return void section.classList.add('hide'); } - var query = { + const query = { IncludeItemTypes: 'MusicAlbum', Recursive: true, ExcludeItemIds: item.Id, @@ -1155,7 +1183,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderSimilarItems(page, item, context) { - var similarCollapsible = page.querySelector('#similarCollapsible'); + const similarCollapsible = page.querySelector('#similarCollapsible'); if (similarCollapsible) { if ('Movie' != item.Type && 'Trailer' != item.Type && 'Series' != item.Type && 'Program' != item.Type && 'Recording' != item.Type && 'MusicAlbum' != item.Type && 'MusicArtist' != item.Type && 'Playlist' != item.Type) { @@ -1163,8 +1191,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } similarCollapsible.classList.remove('hide'); - var apiClient = connectionManager.getApiClient(item.ServerId); - var options = { + const apiClient = connectionManager.getApiClient(item.ServerId); + const options = { userId: apiClient.getCurrentUserId(), limit: 12, fields: 'PrimaryImageAspectRatio,UserData,CanDelete' @@ -1180,7 +1208,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } similarCollapsible.classList.remove('hide'); - var html = ''; + let html = ''; html += cardBuilder.getCardsHtml({ items: result.Items, shape: 'autooverflow', @@ -1195,7 +1223,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti overlayText: false, showYear: 'Movie' === item.Type || 'Trailer' === item.Type || 'Series' === item.Type }); - var similarContent = similarCollapsible.querySelector('.similarContent'); + const similarContent = similarCollapsible.querySelector('.similarContent'); similarContent.innerHTML = html; imageLoader.lazyChildren(similarContent); }); @@ -1203,12 +1231,12 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderSeriesAirTime(page, item, isStatic) { - var seriesAirTime = page.querySelector('#seriesAirTime'); + const seriesAirTime = page.querySelector('#seriesAirTime'); if ('Series' != item.Type) { seriesAirTime.classList.add('hide'); return; } - var html = ''; + let html = ''; if (item.AirDays && item.AirDays.length) { if (7 == item.AirDays.length) { html += 'daily'; @@ -1225,8 +1253,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti if (isStatic) { html += ' on ' + item.Studios[0].Name; } else { - var context = inferContext(item); - var href = appRouter.getRouteUrl(item.Studios[0], { + const context = inferContext(item); + const href = appRouter.getRouteUrl(item.Studios[0], { context: context, itemType: 'Studio', serverId: item.ServerId @@ -1244,15 +1272,15 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderTags(page, item) { - var itemTags = page.querySelector('.itemTags'); - var tagElements = []; - var tags = item.Tags || []; + const itemTags = page.querySelector('.itemTags'); + const tagElements = []; + let tags = item.Tags || []; if ('Program' === item.Type) { tags = []; } - for (var i = 0, length = tags.length; i < length; i++) { + for (let i = 0, length = tags.length; i < length; i++) { tagElements.push(tags[i]); } @@ -1266,8 +1294,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderChildren(page, item) { - var fields = 'ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount'; - var query = { + let fields = 'ItemCounts,PrimaryImageAspectRatio,BasicSyncInfo,CanDelete,MediaSourceCount'; + const query = { ParentId: item.Id, Fields: fields }; @@ -1276,9 +1304,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti query.SortBy = 'SortName'; } - var promise; - var apiClient = connectionManager.getApiClient(item.ServerId); - var userId = apiClient.getCurrentUserId(); + let promise; + const apiClient = connectionManager.getApiClient(item.ServerId); + const userId = apiClient.getCurrentUserId(); if ('Series' == item.Type) { promise = apiClient.getSeasons(item.Id, { @@ -1298,10 +1326,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti promise = promise || apiClient.getItems(apiClient.getCurrentUserId(), query); promise.then(function (result) { - var html = ''; - var scrollX = false; - var isList = false; - var childrenItemsContainer = page.querySelector('.childrenItemsContainer'); + let html = ''; + let scrollX = false; + let isList = false; + const childrenItemsContainer = page.querySelector('.childrenItemsContainer'); if ('MusicAlbum' == item.Type) { html = listView.getListViewHtml({ @@ -1394,7 +1422,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti childrenItemsContainer.innerHTML = html; imageLoader.lazyChildren(childrenItemsContainer); if ('BoxSet' == item.Type) { - var collectionItemTypes = [{ + const collectionItemTypes = [{ name: globalize.translate('HeaderVideos'), mediaType: 'Video' }, { @@ -1430,25 +1458,25 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderItemsByName(page, item) { - require('scripts/itembynamedetailpage'.split(','), function () { + import('scripts/itembynamedetailpage').then(() => { window.ItemsByName.renderItems(page, item); }); } function renderPlaylistItems(page, item) { - require('scripts/playlistedit'.split(','), function () { + import('scripts/playlistedit').then(() => { PlaylistViewer.render(page, item); }); } function renderProgramsForChannel(page, result) { - var html = ''; - var currentItems = []; - var currentStartDate = null; + let html = ''; + let currentItems = []; + let currentStartDate = null; - for (var i = 0, length = result.Items.length; i < length; i++) { - var item = result.Items[i]; - var itemStartDate = datetime.parseISO8601Date(item.StartDate); + for (let i = 0, length = result.Items.length; i < length; i++) { + const item = result.Items[i]; + const itemStartDate = datetime.parseISO8601Date(item.StartDate); if (!(currentStartDate && currentStartDate.toDateString() === itemStartDate.toDateString())) { if (currentItems.length) { @@ -1516,7 +1544,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderSeriesSchedule(page, item) { - var apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = connectionManager.getApiClient(item.ServerId); apiClient.getLiveTvPrograms({ UserId: apiClient.getCurrentUserId(), HasAired: false, @@ -1580,9 +1608,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function canPlaySomeItemInCollection(items) { - var i = 0; + let i = 0; - for (var length = items.length; i < length; i++) { + for (let length = items.length; i < length; i++) { if (playbackManager.canPlay(items[i])) { return true; } @@ -1596,17 +1624,17 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti page.querySelector('.collectionItems').innerHTML = ''; for (const type of types) { - var typeItems = filterItemsByCollectionItemType(items, type); + const typeItems = filterItemsByCollectionItemType(items, type); if (typeItems.length) { renderCollectionItemType(page, parentItem, type, typeItems); } } - var otherType = { + const otherType = { name: globalize.translate('HeaderOtherItems') }; - var otherTypeItems = items.filter(function (curr) { + const otherTypeItems = items.filter(function (curr) { return !types.filter(function (t) { return filterItemsByCollectionItemType([curr], t).length > 0; }).length; @@ -1622,9 +1650,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti }, items); } - var containers = page.querySelectorAll('.collectionItemsContainer'); + const containers = page.querySelectorAll('.collectionItemsContainer'); - var notifyRefreshNeeded = function () { + const notifyRefreshNeeded = function () { renderChildren(page, parentItem); }; @@ -1640,13 +1668,13 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti // HACK: Call autoFocuser again because btnPlay may be hidden, but focused by reloadFromItem // FIXME: Sometimes focus does not move until all (?) sections are loaded - require(['autoFocuser'], function (autoFocuser) { + import('autoFocuser').then(({default: autoFocuser}) => { autoFocuser.autoFocus(page); }); } function renderCollectionItemType(page, parentItem, type, items) { - var html = ''; + let html = ''; html += '
'; html += '
'; html += '

'; @@ -1654,7 +1682,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti html += '

'; html += '
'; html += '
'; - var shape = 'MusicAlbum' == type.type ? getSquareShape(false) : getPortraitShape(false); + const shape = 'MusicAlbum' == type.type ? getSquareShape(false) : getPortraitShape(false); html += cardBuilder.getCardsHtml({ items: items, shape: shape, @@ -1670,7 +1698,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti }); html += '
'; html += '
'; - var collectionItems = page.querySelector('.collectionItems'); + const collectionItems = page.querySelector('.collectionItems'); collectionItems.insertAdjacentHTML('beforeend', html); imageLoader.lazyChildren(collectionItems); } @@ -1686,7 +1714,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti }).then(function (result) { if (result.Items.length) { page.querySelector('#musicVideosCollapsible').classList.remove('hide'); - var musicVideosContent = page.querySelector('.musicVideosContent'); + const musicVideosContent = page.querySelector('.musicVideosContent'); musicVideosContent.innerHTML = getVideosHtml(result.Items); imageLoader.lazyChildren(musicVideosContent); } else { @@ -1699,7 +1727,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti connectionManager.getApiClient(item.ServerId).getAdditionalVideoParts(user.Id, item.Id).then(function (result) { if (result.Items.length) { page.querySelector('#additionalPartsCollapsible').classList.remove('hide'); - var additionalPartsContent = page.querySelector('#additionalPartsContent'); + const additionalPartsContent = page.querySelector('#additionalPartsContent'); additionalPartsContent.innerHTML = getVideosHtml(result.Items); imageLoader.lazyChildren(additionalPartsContent); } else { @@ -1709,13 +1737,13 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderScenes(page, item) { - var chapters = item.Chapters || []; + let chapters = item.Chapters || []; if (chapters.length && !chapters[0].ImageTag && (chapters = []), chapters.length) { page.querySelector('#scenesCollapsible').classList.remove('hide'); - var scenesContent = page.querySelector('#scenesContent'); + const scenesContent = page.querySelector('#scenesContent'); - require(['chaptercardbuilder'], function (chaptercardbuilder) { + import('chaptercardbuilder').then(({default: chaptercardbuilder}) => { chaptercardbuilder.buildChapterCards(item, chapters, { itemsContainer: scenesContent, backdropShape: 'overflowBackdrop', @@ -1729,7 +1757,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function getVideosHtml(items) { - var html = cardBuilder.getCardsHtml({ + const html = cardBuilder.getCardsHtml({ items: items, shape: 'autooverflow', showTitle: true, @@ -1744,14 +1772,14 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function renderSpecials(page, item, user) { connectionManager.getApiClient(item.ServerId).getSpecialFeatures(user.Id, item.Id).then(function (specials) { - var specialsContent = page.querySelector('#specialsContent'); + const specialsContent = page.querySelector('#specialsContent'); specialsContent.innerHTML = getVideosHtml(specials); imageLoader.lazyChildren(specialsContent); }); } function renderCast(page, item) { - var people = (item.People || []).filter(function (p) { + const people = (item.People || []).filter(function (p) { return p.Type === 'Actor'; }); @@ -1760,9 +1788,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } page.querySelector('#castCollapsible').classList.remove('hide'); - var castContent = page.querySelector('#castContent'); + const castContent = page.querySelector('#castContent'); - require(['peoplecardbuilder'], function (peoplecardbuilder) { + import('peoplecardbuilder').then(({default: peoplecardbuilder}) => { peoplecardbuilder.buildPeopleCards(people, { itemsContainer: castContent, coverImage: true, @@ -1774,14 +1802,14 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function itemDetailPage() { - var self = this; + const self = this; self.setInitialCollapsibleState = setInitialCollapsibleState; self.renderDetails = renderDetails; self.renderCast = renderCast; } function bindAll(view, selector, eventName, fn) { - var elems = view.querySelectorAll(selector); + const elems = view.querySelectorAll(selector); for (const elem of elems) { elem.addEventListener(eventName, fn); @@ -1794,11 +1822,12 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } window.ItemDetailPage = new itemDetailPage(); - return function (view, params) { + + export default function (view, params) { function reload(instance, page, params) { loading.show(); - var apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient; + const apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient; Promise.all([getPromise(apiClient, params), apiClient.getCurrentUser()]).then(([item, user]) => { currentItem = item; @@ -1809,8 +1838,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function splitVersions(instance, page, apiClient, params) { - require(['confirm'], function (confirm) { - confirm.default('Are you sure you wish to split the media sources into separate items?', 'Split Media Apart').then(function () { + import('confirm').then(({default: confirm}) => { + confirm('Are you sure you wish to split the media sources into separate items?', 'Split Media Apart').then(function () { loading.show(); apiClient.ajax({ type: 'DELETE', @@ -1824,7 +1853,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function getPlayOptions(startPosition) { - var audioStreamIndex = view.querySelector('.selectAudio').value || null; + const audioStreamIndex = view.querySelector('.selectAudio').value || null; return { startPositionTicks: startPosition, mediaSourceId: view.querySelector('.selectSource').value, @@ -1834,7 +1863,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function playItem(item, startPosition) { - var playOptions = getPlayOptions(startPosition); + const playOptions = getPlayOptions(startPosition); playOptions.items = [item]; playbackManager.play(playOptions); } @@ -1844,10 +1873,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function playCurrentItem(button, mode) { - var item = currentItem; + const item = currentItem; if ('Program' === item.Type) { - var apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = connectionManager.getApiClient(item.ServerId); return void apiClient.getLiveTvChannel(item.ChannelId, apiClient.getCurrentUserId()).then(function (channel) { playbackManager.play({ items: [channel] @@ -1871,7 +1900,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function onCancelSeriesTimerClick() { - require(['recordingHelper'], function (recordingHelper) { + import('recordingHelper').then(({default: recordingHelper}) => { recordingHelper.cancelSeriesTimerWithConfirmation(currentItem.Id, currentItem.ServerId).then(function () { Dashboard.navigate('livetv.html'); }); @@ -1879,7 +1908,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function onCancelTimerClick() { - require(['recordingHelper'], function (recordingHelper) { + import('recordingHelper').then(({default: recordingHelper}) => { recordingHelper.cancelTimer(connectionManager.getApiClient(currentItem.ServerId), currentItem.TimerId).then(function () { reload(self, view, params); }); @@ -1891,8 +1920,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function onDownloadClick() { - require(['fileDownloader'], function (fileDownloader) { - var downloadHref = apiClient.getItemDownloadUrl(currentItem.Id); + import('fileDownloader').then(({default: fileDownloader}) => { + const downloadHref = apiClient.getItemDownloadUrl(currentItem.Id); fileDownloader.download([{ url: downloadHref, itemId: currentItem.Id, @@ -1902,7 +1931,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function onMoreCommandsClick() { - var button = this; + const button = this; apiClient.getCurrentUser().then(function (user) { itemContextMenu.show(getContextMenuOptions(currentItem, user, button)).then(function (result) { if (result.deleted) { @@ -1920,11 +1949,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function onWebSocketMessage(e, data) { - var msg = data; + const msg = data; if ('UserDataChanged' === msg.MessageType && currentItem && msg.Data.UserId == apiClient.getCurrentUserId()) { - var key = currentItem.UserData.Key; - var userData = msg.Data.UserDataList.filter(function (u) { + const key = currentItem.UserData.Key; + const userData = msg.Data.UserDataList.filter(function (u) { return u.Key == key; })[0]; @@ -1936,9 +1965,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - var currentItem; - var self = this; - var apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient; + let currentItem; + const self = this; + const apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient; view.querySelectorAll('.btnPlay'); bindAll(view, '.btnPlay', 'click', onPlayClick); bindAll(view, '.btnResume', 'click', onPlayClick); @@ -1959,7 +1988,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti renderSubtitleSelections(view, self._currentPlaybackMediaSources); }); view.addEventListener('viewshow', function (e) { - var page = this; + const page = this; libraryMenu.setTransparentMenu(true); @@ -1985,5 +2014,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti self._currentPlaybackMediaSources = null; self.currentRecordingFields = null; }); - }; -}); + } + +/* eslint-enable indent */ From ddf65f31e03be9e9246c29a5972644c120456a7d Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 29 Jul 2020 10:09:05 +0100 Subject: [PATCH 029/463] fix lint --- src/components/imageeditor/imageeditor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 9fbd34090d..c0394ed2ad 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -18,7 +18,7 @@ import 'css!./imageeditor'; /* eslint-disable indent */ const enableFocusTransform = !browser.slow && !browser.edge; - + loading = loading.default || loading; let currentItem; From 7e92a4d02fd9a7eaef850c61dc99b2b9cef76d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= <31072879+KucharczykL@users.noreply.github.com> Date: Wed, 29 Jul 2020 11:41:24 +0200 Subject: [PATCH 030/463] Add tooltip to Previous/Next track buttons. --- src/controllers/playback/video/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/playback/video/index.html b/src/controllers/playback/video/index.html index 452c8a9af8..cf3d0beff8 100644 --- a/src/controllers/playback/video/index.html +++ b/src/controllers/playback/video/index.html @@ -28,7 +28,7 @@ - @@ -44,7 +44,7 @@ - From 0afc669862a9b9400e3cf76bc5539d137a6d7ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= <31072879+KucharczykL@users.noreply.github.com> Date: Wed, 29 Jul 2020 11:45:21 +0200 Subject: [PATCH 031/463] Add the PreviousTrack and NextTrack strings. --- src/strings/en-us.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 6024363f05..92daf3ebd5 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1094,6 +1094,7 @@ "NewEpisodesOnly": "New episodes only", "News": "News", "Next": "Next", + "NextTrack": "Skip to next", "NextUp": "Next Up", "No": "No", "NoCreatedLibraries": "Seems like you haven't created any libraries yet. {0}Would you like to create one now?{1}", @@ -1307,6 +1308,7 @@ "Premiere": "Premiere", "Premieres": "Premieres", "Previous": "Previous", + "PreviousTrack": "Skip to previous", "Primary": "Primary", "Producer": "Producer", "ProductionLocations": "Production locations", From 66ea2631b5dc11d528a57bd5371e548d0d776acb Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 29 Jul 2020 11:24:30 +0100 Subject: [PATCH 032/463] remove bookplayer .default --- src/plugins/bookPlayer/plugin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/bookPlayer/plugin.js b/src/plugins/bookPlayer/plugin.js index db6c344dad..be5beb98ed 100644 --- a/src/plugins/bookPlayer/plugin.js +++ b/src/plugins/bookPlayer/plugin.js @@ -222,7 +222,7 @@ export class BookPlayer { return new Promise((resolve, reject) => { import('epubjs').then(({default: epubjs}) => { let downloadHref = apiClient.getItemDownloadUrl(item.Id); - let book = epubjs.default(downloadHref, {openAs: 'epub'}); + let book = epubjs(downloadHref, {openAs: 'epub'}); let rendition = book.renderTo(elem, {width: '100%', height: '97%'}); this._currentSrc = downloadHref; From c76f550b915c57d575700c78550805e24997ea80 Mon Sep 17 00:00:00 2001 From: dkanada Date: Wed, 29 Jul 2020 19:36:44 +0900 Subject: [PATCH 033/463] add paging in book player with touch events --- src/plugins/bookPlayer/plugin.js | 47 ++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/src/plugins/bookPlayer/plugin.js b/src/plugins/bookPlayer/plugin.js index db6c344dad..8fdab182cf 100644 --- a/src/plugins/bookPlayer/plugin.js +++ b/src/plugins/bookPlayer/plugin.js @@ -2,6 +2,7 @@ import connectionManager from 'connectionManager'; import loading from 'loading'; import keyboardnavigation from 'keyboardnavigation'; import dialogHelper from 'dialogHelper'; +import dom from 'dom'; import events from 'events'; import 'css!./style'; import 'material-icons'; @@ -93,23 +94,22 @@ export class BookPlayer { onWindowKeyUp(e) { let key = keyboardnavigation.getKeyName(e); - let rendition = this._rendition; + + // TODO: depending on the event this can be the document or the rendition itself + let rendition = this._rendition || this; let book = rendition.book; + if (this._loaded === false) return; switch (key) { case 'l': case 'ArrowRight': case 'Right': - if (this._loaded) { - book.package.metadata.direction === 'rtl' ? rendition.prev() : rendition.next(); - } + book.package.metadata.direction === 'rtl' ? rendition.prev() : rendition.next(); break; case 'j': case 'ArrowLeft': case 'Left': - if (this._loaded) { - book.package.metadata.direction === 'rtl' ? rendition.next() : rendition.prev(); - } + book.package.metadata.direction === 'rtl' ? rendition.next() : rendition.prev(); break; case 'Escape': if (this._tocElement) { @@ -123,6 +123,25 @@ export class BookPlayer { } } + onTouchStart(e) { + // TODO: depending on the event this can be the document or the rendition itself + let rendition = this._rendition || this; + let book = rendition.book; + + // check that the event is from the book or the document + if (!book || this._loaded === false) return; + + // epubjs stores pages off the screen or something for preloading + // get the modulus of the touch event to account for the increased width + if (!e.touches || e.touches.length === 0) return; + let touch = e.touches[0].clientX % dom.getWindowSize().innerWidth; + if (touch < dom.getWindowSize().innerWidth / 2) { + book.package.metadata.direction === 'rtl' ? rendition.next() : rendition.prev(); + } else { + book.package.metadata.direction === 'rtl' ? rendition.prev() : rendition.next(); + } + } + onDialogClosed() { this.stop(); } @@ -139,8 +158,11 @@ export class BookPlayer { this.bindMediaElementEvents(); document.addEventListener('keyup', this.onWindowKeyUp); + document.addEventListener('touchstart', this.onTouchStart); + // FIXME: I don't really get why document keyup event is not triggered when epub is in focus this._rendition.on('keyup', this.onWindowKeyUp); + this._rendition.on('touchstart', this.onTouchStart); } unbindMediaElementEvents() { @@ -155,9 +177,13 @@ export class BookPlayer { if (this._mediaElement) { this.unbindMediaElementEvents(); } + document.removeEventListener('keyup', this.onWindowKeyUp); + document.removeEventListener('touchstart', this.onTouchStart); + if (this._rendition) { this._rendition.off('keyup', this.onWindowKeyUp); + this._rendition.off('touchstart', this.onTouchStart); } } @@ -169,13 +195,11 @@ export class BookPlayer { createMediaElement() { let elem = this._mediaElement; - if (elem) { return elem; } elem = document.getElementById('bookPlayer'); - if (!elem) { elem = dialogHelper.createDialog({ exitAnimationDuration: 400, @@ -185,6 +209,7 @@ export class BookPlayer { exitAnimation: 'fadeout', removeOnClose: true }); + elem.id = 'bookPlayer'; let html = ''; @@ -230,6 +255,7 @@ export class BookPlayer { let cancellationToken = { shouldCancel: false }; + this._cancellationToken = cancellationToken; return rendition.display().then(() => { @@ -253,7 +279,6 @@ export class BookPlayer { epubElem.style.display = 'block'; rendition.on('relocated', (locations) => { this._progress = book.locations.percentageFromCfi(locations.start.cfi); - events.trigger(this, 'timeupdate'); }); @@ -262,7 +287,7 @@ export class BookPlayer { return resolve(); }); }, () => { - console.error('Failed to display epub'); + console.error('failed to display epub'); return reject(); }); }); From fd55eb99ac960d248f1dce32684719b2b790e8f7 Mon Sep 17 00:00:00 2001 From: Mariusz Chryc Date: Wed, 29 Jul 2020 17:49:07 +0200 Subject: [PATCH 034/463] Fix updateNowPlayingInfo when artist or album are empty --- src/components/remotecontrol/remotecontrol.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index db2bed36a7..24e58404d8 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -119,9 +119,9 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL var nowPlayingServerId = (item.ServerId || serverId); if (item.Type == 'Audio' || item.MediaStreams[0].Type == 'Audio') { var songName = item.Name; - if (item.Album != null && item.Artists != null) { - var artistsSeries = ''; - var albumName = item.Album; + var artistsSeries = ''; + var albumName = ''; + if (item.Artists != null) { if (item.ArtistItems != null) { for (const artist of item.ArtistItems) { let artistName = artist.Name; @@ -142,9 +142,12 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL } } } - context.querySelector('.nowPlayingArtist').innerHTML = artistsSeries; - context.querySelector('.nowPlayingAlbum').innerHTML = '${albumName}`; } + if (item.Album != null){ + albumName = '` + item.Album + ``; + } + context.querySelector('.nowPlayingAlbum').innerHTML = albumName + context.querySelector('.nowPlayingArtist').innerHTML = artistsSeries; context.querySelector('.nowPlayingSongName').innerHTML = songName; } else if (item.Type == 'Episode') { if (item.SeasonName != null) { From 260668f501b7018c93b9bdf4aa302455f4362484 Mon Sep 17 00:00:00 2001 From: Mariusz Chryc Date: Wed, 29 Jul 2020 18:05:45 +0200 Subject: [PATCH 035/463] Fix lintint errors --- src/components/remotecontrol/remotecontrol.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 24e58404d8..c0d594f123 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -143,10 +143,10 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL } } } - if (item.Album != null){ - albumName = '` + item.Album + ``; + if (item.Album != null) { + albumName = '' + item.Album + ''; } - context.querySelector('.nowPlayingAlbum').innerHTML = albumName + context.querySelector('.nowPlayingAlbum').innerHTML = albumName; context.querySelector('.nowPlayingArtist').innerHTML = artistsSeries; context.querySelector('.nowPlayingSongName').innerHTML = songName; } else if (item.Type == 'Episode') { From 56aaed9f816acfc1ec0dac69ae02484562026205 Mon Sep 17 00:00:00 2001 From: Mariusz Chryc Date: Wed, 29 Jul 2020 18:11:27 +0200 Subject: [PATCH 036/463] Fix string --- src/components/remotecontrol/remotecontrol.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index c0d594f123..13fa8c0887 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -144,7 +144,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL } } if (item.Album != null) { - albumName = '' + item.Album + ''; + albumName = '` + item.Album + ''; } context.querySelector('.nowPlayingAlbum').innerHTML = albumName; context.querySelector('.nowPlayingArtist').innerHTML = artistsSeries; From 3ffd2bc4b920728214ae688463fc2ff1bd6a281b Mon Sep 17 00:00:00 2001 From: Supergamer1337 Date: Wed, 29 Jul 2020 21:08:50 +0200 Subject: [PATCH 037/463] Made cursor hide on OSD hide. Cursor shows on OSD show. Co-authored-by: Esaias Tilly --- src/controllers/playback/video/index.js | 7 +++++++ src/scripts/mouseManager.js | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index d2bddfc136..23453857f9 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1,6 +1,7 @@ import playbackManager from 'playbackManager'; import dom from 'dom'; import inputManager from 'inputManager'; +import mouseManager from 'mouseManager'; import datetime from 'datetime'; import itemHelper from 'itemHelper'; import mediaInfo from 'mediaInfo'; @@ -421,6 +422,9 @@ import 'css!assets/css/videoosd'; elem.classList.remove('hide'); elem.classList.remove('videoOsdBottom-hidden'); + mouseManager.removeIdleClasses(); // Remove Idle Classes To Show Cursor + mouseManager.lastMouseInputTime = new Date().getTime(); // Reset Mouse Input Time + if (!layoutManager.mobile) { setTimeout(function () { focusManager.focus(elem.querySelector('.btnPause')); @@ -435,6 +439,9 @@ import 'css!assets/css/videoosd'; const elem = osdBottomElement; clearHideAnimationEventListeners(elem); elem.classList.add('videoOsdBottom-hidden'); + + mouseManager.addIdleClasses(); // Add Idle Classes To Hide Cursor + dom.addEventListener(elem, transitionEndEventName, onHideAnimationComplete, { once: true }); diff --git a/src/scripts/mouseManager.js b/src/scripts/mouseManager.js index 4fc174381a..cc4d5459b5 100644 --- a/src/scripts/mouseManager.js +++ b/src/scripts/mouseManager.js @@ -157,5 +157,10 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd events.on(layoutManager, 'modechange', initMouse); + // Make Both Idle Class Functions And Last Mouse Input Time Accessible + self.addIdleClasses = addIdleClasses; + self.removeIdleClasses = removeIdleClasses; + self.lastMouseInputTime = lastMouseInputTime; + return self; }); From c5e6b5d95d0558d714a3719fa456c4ab151840c0 Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Wed, 29 Jul 2020 22:18:34 +0200 Subject: [PATCH 038/463] Migrated livetvtuner.js file to es6 module --- package.json | 1 + src/controllers/livetvtuner.js | 436 ++++++++++++++++----------------- 2 files changed, 217 insertions(+), 220 deletions(-) diff --git a/package.json b/package.json index 5db40a0efe..d8cdb1357d 100644 --- a/package.json +++ b/package.json @@ -193,6 +193,7 @@ "src/controllers/playback/queue/index.js", "src/controllers/playback/video/index.js", "src/controllers/searchpage.js", + "src/controllers/livetvtuner.js", "src/controllers/shows/episodes.js", "src/controllers/shows/tvgenres.js", "src/controllers/shows/tvlatest.js", diff --git a/src/controllers/livetvtuner.js b/src/controllers/livetvtuner.js index 92f705c02f..d7dc96ee4d 100644 --- a/src/controllers/livetvtuner.js +++ b/src/controllers/livetvtuner.js @@ -1,232 +1,228 @@ -define(['globalize', 'loading', 'libraryMenu', 'dom', 'emby-input', 'emby-button', 'emby-checkbox', 'emby-select'], function (globalize, loading, libraryMenu, dom) { - 'use strict'; +import globalize from 'globalize'; +import loading from 'loading'; +import dom from 'dom'; +import 'emby-input'; +import 'emby-button'; +import 'emby-checkbox'; +import 'emby-select'; - function isM3uVariant(type) { - return ['nextpvr'].indexOf(type || '') !== -1; - } +function isM3uVariant(type) { + return ['nextpvr'].indexOf(type || '') !== -1; +} - function fillTypes(view, currentId) { - return ApiClient.getJSON(ApiClient.getUrl('LiveTv/TunerHosts/Types')).then(function (types) { - var selectType = view.querySelector('.selectType'); - var html = ''; - html += types.map(function (tuner) { - return ''; - }).join(''); - html += ''; - selectType.innerHTML = html; - selectType.disabled = null != currentId; - selectType.value = ''; - onTypeChange.call(selectType); - }); - } - - function reload(view, providerId) { - view.querySelector('.txtDevicePath').value = ''; - view.querySelector('.chkFavorite').checked = false; - view.querySelector('.txtDevicePath').value = ''; - - if (providerId) { - ApiClient.getNamedConfiguration('livetv').then(function (config) { - var info = config.TunerHosts.filter(function (i) { - return i.Id === providerId; - })[0]; - fillTunerHostInfo(view, info); - }); - } - } - - function fillTunerHostInfo(view, info) { - var selectType = view.querySelector('.selectType'); - var type = info.Type || ''; - - if (info.Source && isM3uVariant(info.Source)) { - type = info.Source; - } - - selectType.value = type; +function fillTypes(view, currentId) { + return ApiClient.getJSON(ApiClient.getUrl('LiveTv/TunerHosts/Types')).then(function (types) { + const selectType = view.querySelector('.selectType'); + let html = ''; + html += types.map(function (tuner) { + return ''; + }).join(''); + html += ''; + selectType.innerHTML = html; + selectType.disabled = null != currentId; + selectType.value = ''; onTypeChange.call(selectType); - view.querySelector('.txtDevicePath').value = info.Url || ''; - view.querySelector('.txtFriendlyName').value = info.FriendlyName || ''; - view.querySelector('.txtUserAgent').value = info.UserAgent || ''; - view.querySelector('.fldDeviceId').value = info.DeviceId || ''; - view.querySelector('.chkFavorite').checked = info.ImportFavoritesOnly; - view.querySelector('.chkTranscode').checked = info.AllowHWTranscoding; - view.querySelector('.chkStreamLoop').checked = info.EnableStreamLooping; - view.querySelector('.txtTunerCount').value = info.TunerCount || '0'; - } + }); +} - function submitForm(page) { - loading.show(); - var info = { - Type: page.querySelector('.selectType').value, - Url: page.querySelector('.txtDevicePath').value || null, - UserAgent: page.querySelector('.txtUserAgent').value || null, - FriendlyName: page.querySelector('.txtFriendlyName').value || null, - DeviceId: page.querySelector('.fldDeviceId').value || null, - TunerCount: page.querySelector('.txtTunerCount').value || 0, - ImportFavoritesOnly: page.querySelector('.chkFavorite').checked, - AllowHWTranscoding: page.querySelector('.chkTranscode').checked, - EnableStreamLooping: page.querySelector('.chkStreamLoop').checked - }; +function reload(view, providerId) { + view.querySelector('.txtDevicePath').value = ''; + view.querySelector('.chkFavorite').checked = false; + view.querySelector('.txtDevicePath').value = ''; - if (isM3uVariant(info.Type)) { - info.Source = info.Type; - info.Type = 'm3u'; - } - - var id = getParameterByName('id'); - - if (id) { - info.Id = id; - } - - ApiClient.ajax({ - type: 'POST', - url: ApiClient.getUrl('LiveTv/TunerHosts'), - data: JSON.stringify(info), - contentType: 'application/json' - }).then(function (result) { - Dashboard.processServerConfigurationUpdateResult(); - Dashboard.navigate('livetvstatus.html'); - }, function () { - loading.hide(); - Dashboard.alert({ - message: globalize.translate('ErrorSavingTvProvider') - }); + if (providerId) { + ApiClient.getNamedConfiguration('livetv').then(function (config) { + const info = config.TunerHosts.filter(function (i) { + return i.Id === providerId; + })[0]; + fillTunerHostInfo(view, info); }); } +} - function getRequirePromise(deps) { - return new Promise(function (resolve, reject) { - require(deps, resolve); - }); +function fillTunerHostInfo(view, info) { + const selectType = view.querySelector('.selectType'); + let type = info.Type || ''; + + if (info.Source && isM3uVariant(info.Source)) { + type = info.Source; } - function getDetectedDevice() { - return getRequirePromise(['tunerPicker']).then(function (tunerPicker) { - return new tunerPicker().show({ - serverId: ApiClient.serverId() - }); - }); - } + selectType.value = type; + onTypeChange.call(selectType); + view.querySelector('.txtDevicePath').value = info.Url || ''; + view.querySelector('.txtFriendlyName').value = info.FriendlyName || ''; + view.querySelector('.txtUserAgent').value = info.UserAgent || ''; + view.querySelector('.fldDeviceId').value = info.DeviceId || ''; + view.querySelector('.chkFavorite').checked = info.ImportFavoritesOnly; + view.querySelector('.chkTranscode').checked = info.AllowHWTranscoding; + view.querySelector('.chkStreamLoop').checked = info.EnableStreamLooping; + view.querySelector('.txtTunerCount').value = info.TunerCount || '0'; +} - function onTypeChange() { - var value = this.value; - var view = dom.parentWithClass(this, 'page'); - var mayIncludeUnsupportedDrmChannels = 'hdhomerun' === value; - var supportsTranscoding = 'hdhomerun' === value; - var supportsFavorites = 'hdhomerun' === value; - var supportsTunerIpAddress = 'hdhomerun' === value; - var supportsTunerFileOrUrl = 'm3u' === value; - var supportsStreamLooping = 'm3u' === value; - var supportsTunerCount = 'm3u' === value; - var supportsUserAgent = 'm3u' === value; - var suppportsSubmit = 'other' !== value; - var supportsSelectablePath = supportsTunerFileOrUrl; - var txtDevicePath = view.querySelector('.txtDevicePath'); - - if (supportsTunerIpAddress) { - txtDevicePath.label(globalize.translate('LabelTunerIpAddress')); - view.querySelector('.fldPath').classList.remove('hide'); - } else if (supportsTunerFileOrUrl) { - txtDevicePath.label(globalize.translate('LabelFileOrUrl')); - view.querySelector('.fldPath').classList.remove('hide'); - } else { - view.querySelector('.fldPath').classList.add('hide'); - } - - if (supportsSelectablePath) { - view.querySelector('.btnSelectPath').classList.remove('hide'); - view.querySelector('.txtDevicePath').setAttribute('required', 'required'); - } else { - view.querySelector('.btnSelectPath').classList.add('hide'); - view.querySelector('.txtDevicePath').removeAttribute('required'); - } - - if (supportsUserAgent) { - view.querySelector('.fldUserAgent').classList.remove('hide'); - } else { - view.querySelector('.fldUserAgent').classList.add('hide'); - } - - if (supportsFavorites) { - view.querySelector('.fldFavorites').classList.remove('hide'); - } else { - view.querySelector('.fldFavorites').classList.add('hide'); - } - - if (supportsTranscoding) { - view.querySelector('.fldTranscode').classList.remove('hide'); - } else { - view.querySelector('.fldTranscode').classList.add('hide'); - } - - if (supportsStreamLooping) { - view.querySelector('.fldStreamLoop').classList.remove('hide'); - } else { - view.querySelector('.fldStreamLoop').classList.add('hide'); - } - - if (supportsTunerCount) { - view.querySelector('.fldTunerCount').classList.remove('hide'); - view.querySelector('.txtTunerCount').setAttribute('required', 'required'); - } else { - view.querySelector('.fldTunerCount').classList.add('hide'); - view.querySelector('.txtTunerCount').removeAttribute('required'); - } - - if (mayIncludeUnsupportedDrmChannels) { - view.querySelector('.drmMessage').classList.remove('hide'); - } else { - view.querySelector('.drmMessage').classList.add('hide'); - } - - if (suppportsSubmit) { - view.querySelector('.button-submit').classList.remove('hide'); - } else { - view.querySelector('.button-submit').classList.add('hide'); - } - } - - return function (view, params) { - if (!params.id) { - view.querySelector('.btnDetect').classList.remove('hide'); - } - - view.addEventListener('viewshow', function () { - var currentId = params.id; - fillTypes(view, currentId).then(function () { - reload(view, currentId); - }); - }); - view.querySelector('form').addEventListener('submit', function (e) { - submitForm(view); - e.preventDefault(); - e.stopPropagation(); - return false; - }); - view.querySelector('.selectType').addEventListener('change', onTypeChange); - view.querySelector('.btnDetect').addEventListener('click', function () { - getDetectedDevice().then(function (info) { - fillTunerHostInfo(view, info); - }); - }); - view.querySelector('.btnSelectPath').addEventListener('click', function () { - require(['directorybrowser'], function (directoryBrowser) { - var picker = new directoryBrowser.default(); - picker.show({ - includeFiles: true, - callback: function (path) { - if (path) { - view.querySelector('.txtDevicePath').value = path; - } - - picker.close(); - } - }); - }); - }); +function submitForm(page) { + loading.show(); + const info = { + Type: page.querySelector('.selectType').value, + Url: page.querySelector('.txtDevicePath').value || null, + UserAgent: page.querySelector('.txtUserAgent').value || null, + FriendlyName: page.querySelector('.txtFriendlyName').value || null, + DeviceId: page.querySelector('.fldDeviceId').value || null, + TunerCount: page.querySelector('.txtTunerCount').value || 0, + ImportFavoritesOnly: page.querySelector('.chkFavorite').checked, + AllowHWTranscoding: page.querySelector('.chkTranscode').checked, + EnableStreamLooping: page.querySelector('.chkStreamLoop').checked }; -}); + + if (isM3uVariant(info.Type)) { + info.Source = info.Type; + info.Type = 'm3u'; + } + + if (getParameterByName('id')) { + info.Id = getParameterByName('id'); + } + + ApiClient.ajax({ + type: 'POST', + url: ApiClient.getUrl('LiveTv/TunerHosts'), + data: JSON.stringify(info), + contentType: 'application/json' + }).then(function (result) { + Dashboard.processServerConfigurationUpdateResult(); + Dashboard.navigate('livetvstatus.html'); + }, function () { + loading.hide(); + Dashboard.alert({ + message: globalize.translate('ErrorSavingTvProvider') + }); + }); +} + +function getDetectedDevice() { + return import('tunerPicker').then(({default: tunerPicker}) => { + return new tunerPicker().show({ + serverId: ApiClient.serverId() + }); + }); +} + +function onTypeChange() { + const value = this.value; + const view = dom.parentWithClass(this, 'page'); + const mayIncludeUnsupportedDrmChannels = 'hdhomerun' === value; + const supportsTranscoding = 'hdhomerun' === value; + const supportsFavorites = 'hdhomerun' === value; + const supportsTunerIpAddress = 'hdhomerun' === value; + const supportsTunerFileOrUrl = 'm3u' === value; + const supportsStreamLooping = 'm3u' === value; + const supportsTunerCount = 'm3u' === value; + const supportsUserAgent = 'm3u' === value; + const suppportsSubmit = 'other' !== value; + const supportsSelectablePath = supportsTunerFileOrUrl; + const txtDevicePath = view.querySelector('.txtDevicePath'); + + if (supportsTunerIpAddress) { + txtDevicePath.label(globalize.translate('LabelTunerIpAddress')); + view.querySelector('.fldPath').classList.remove('hide'); + } else if (supportsTunerFileOrUrl) { + txtDevicePath.label(globalize.translate('LabelFileOrUrl')); + view.querySelector('.fldPath').classList.remove('hide'); + } else { + view.querySelector('.fldPath').classList.add('hide'); + } + + if (supportsSelectablePath) { + view.querySelector('.btnSelectPath').classList.remove('hide'); + view.querySelector('.txtDevicePath').setAttribute('required', 'required'); + } else { + view.querySelector('.btnSelectPath').classList.add('hide'); + view.querySelector('.txtDevicePath').removeAttribute('required'); + } + + if (supportsUserAgent) { + view.querySelector('.fldUserAgent').classList.remove('hide'); + } else { + view.querySelector('.fldUserAgent').classList.add('hide'); + } + + if (supportsFavorites) { + view.querySelector('.fldFavorites').classList.remove('hide'); + } else { + view.querySelector('.fldFavorites').classList.add('hide'); + } + + if (supportsTranscoding) { + view.querySelector('.fldTranscode').classList.remove('hide'); + } else { + view.querySelector('.fldTranscode').classList.add('hide'); + } + + if (supportsStreamLooping) { + view.querySelector('.fldStreamLoop').classList.remove('hide'); + } else { + view.querySelector('.fldStreamLoop').classList.add('hide'); + } + + if (supportsTunerCount) { + view.querySelector('.fldTunerCount').classList.remove('hide'); + view.querySelector('.txtTunerCount').setAttribute('required', 'required'); + } else { + view.querySelector('.fldTunerCount').classList.add('hide'); + view.querySelector('.txtTunerCount').removeAttribute('required'); + } + + if (mayIncludeUnsupportedDrmChannels) { + view.querySelector('.drmMessage').classList.remove('hide'); + } else { + view.querySelector('.drmMessage').classList.add('hide'); + } + + if (suppportsSubmit) { + view.querySelector('.button-submit').classList.remove('hide'); + } else { + view.querySelector('.button-submit').classList.add('hide'); + } +} + +export default function (view, params) { + if (!params.id) { + view.querySelector('.btnDetect').classList.remove('hide'); + } + + view.addEventListener('viewshow', function () { + const currentId = params.id; + fillTypes(view, currentId).then(function () { + reload(view, currentId); + }); + }); + view.querySelector('form').addEventListener('submit', function (e) { + submitForm(view); + e.preventDefault(); + e.stopPropagation(); + return false; + }); + view.querySelector('.selectType').addEventListener('change', onTypeChange); + view.querySelector('.btnDetect').addEventListener('click', function () { + getDetectedDevice().then(function (info) { + fillTunerHostInfo(view, info); + }); + }); + view.querySelector('.btnSelectPath').addEventListener('click', function () { + import('directorybrowser').then(({default: directorybrowser}) => { + const picker = new directorybrowser(); + picker.show({ + includeFiles: true, + callback: function (path) { + if (path) { + view.querySelector('.txtDevicePath').value = path; + } + + picker.close(); + } + }); + }); + }); +}; From 5fb80c7fcb146842d580424833766a6b1c01f43a Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Wed, 29 Jul 2020 22:26:45 +0200 Subject: [PATCH 039/463] fixed es linting error --- src/controllers/livetvtuner.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/livetvtuner.js b/src/controllers/livetvtuner.js index d7dc96ee4d..9250c18432 100644 --- a/src/controllers/livetvtuner.js +++ b/src/controllers/livetvtuner.js @@ -225,4 +225,4 @@ export default function (view, params) { }); }); }); -}; +} From e870cc733d4ccc96b815e506cadb797668d515ad Mon Sep 17 00:00:00 2001 From: Cyrus Boadway Date: Wed, 29 Jul 2020 23:00:07 +0100 Subject: [PATCH 040/463] Skip number key navigation when key is modified Pressing 0-9 seeks playback to the corresponding %. This overloaded browser tab switching when ALT/CTRL modifiers were active. --- src/controllers/playback/video/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index d2bddfc136..580e331220 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1131,6 +1131,7 @@ import 'css!assets/css/videoosd'; clickedElement = e.target; const key = keyboardnavigation.getKeyName(e); + const isKeyModified = e.ctrlKey || e.altKey; if (!currentVisibleMenu && 32 === e.keyCode) { playbackManager.playPause(currentPlayer); @@ -1235,8 +1236,10 @@ import 'css!assets/css/videoosd'; case '7': case '8': case '9': { - const percent = parseInt(key, 10) * 10; - playbackManager.seekPercent(percent, currentPlayer); + if (!isKeyModified) { + const percent = parseInt(key, 10) * 10; + playbackManager.seekPercent(percent, currentPlayer); + } break; } } From f05fdfc0a485d7ff53fd79a6cc0534951efff9fc Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 30 Jul 2020 08:38:09 +0100 Subject: [PATCH 041/463] Migration of refresh dialog to ES6 module --- package.json | 1 + src/components/refreshdialog/refreshdialog.js | 170 ++++++++++-------- 2 files changed, 93 insertions(+), 78 deletions(-) diff --git a/package.json b/package.json index 5db40a0efe..f0fdde8309 100644 --- a/package.json +++ b/package.json @@ -146,6 +146,7 @@ "src/components/playlisteditor/playlisteditor.js", "src/components/playmenu.js", "src/components/prompt/prompt.js", + "src/components/refreshdialog/refreshdialog.js", "src/components/sanatizefilename.js", "src/components/scrollManager.js", "src/components/search/searchfields.js", diff --git a/src/components/refreshdialog/refreshdialog.js b/src/components/refreshdialog/refreshdialog.js index 40e1183502..1ec0517448 100644 --- a/src/components/refreshdialog/refreshdialog.js +++ b/src/components/refreshdialog/refreshdialog.js @@ -1,94 +1,108 @@ -define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'appRouter', 'globalize', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (dom, shell, dialogHelper, loading, layoutManager, connectionManager, appRouter, globalize) { - 'use strict'; +import dom from 'dom'; +import dialogHelper from 'dialogHelper'; +import loading from 'loading'; +import layoutManager from 'layoutManager'; +import connectionManager from 'connectionManager'; +import globalize from 'globalize'; +import 'emby-input'; +import 'emby-checkbox'; +import 'paper-icon-button-light'; +import 'emby-select'; +import 'material-icons'; +import 'css!./../formdialog'; +import 'emby-button'; - function getEditorHtml() { - var html = ''; +/*eslint prefer-const: "error"*/ - html += '
'; - html += '
'; - html += '
'; +function getEditorHtml() { + let html = ''; - html += '
'; - html += ''; - html += '
'; + html += '
'; + html += '
'; + html += ''; - html += ''; + html += '
'; + html += ''; + html += '
'; - html += '
'; - html += globalize.translate('RefreshDialogHelp'); - html += '
'; + html += ''; - html += ''; + html += '
'; + html += globalize.translate('RefreshDialogHelp'); + html += '
'; - html += '
'; - html += '
'; - html += ''; - html += '
'; + html += ''; - html += ''; - html += '
'; - html += '
'; + html += '
'; + html += '
'; + html += ''; + html += '
'; - return html; - } + html += ''; + html += '
'; + html += '
'; - function centerFocus(elem, horiz, on) { - require(['scrollHelper'], function (scrollHelper) { - var fn = on ? 'on' : 'off'; - scrollHelper.centerFocus[fn](elem, horiz); + return html; +} + +function centerFocus(elem, horiz, on) { + import('scrollHelper').then(({default: scrollHelper}) => { + const fn = on ? 'on' : 'off'; + scrollHelper.centerFocus[fn](elem, horiz); + }); +} + +function onSubmit(e) { + loading.show(); + + const instance = this; + const dlg = dom.parentWithClass(e.target, 'dialog'); + const options = instance.options; + + const apiClient = connectionManager.getApiClient(options.serverId); + + const replaceAllMetadata = dlg.querySelector('#selectMetadataRefreshMode').value === 'all'; + + const mode = dlg.querySelector('#selectMetadataRefreshMode').value === 'scan' ? 'Default' : 'FullRefresh'; + const replaceAllImages = mode === 'FullRefresh' && dlg.querySelector('.chkReplaceImages').checked; + + options.itemIds.forEach(function (itemId) { + apiClient.refreshItem(itemId, { + + Recursive: true, + ImageRefreshMode: mode, + MetadataRefreshMode: mode, + ReplaceAllImages: replaceAllImages, + ReplaceAllMetadata: replaceAllMetadata }); - } + }); - function onSubmit(e) { - loading.show(); + dialogHelper.close(dlg); - var instance = this; - var dlg = dom.parentWithClass(e.target, 'dialog'); - var options = instance.options; + import('toast').then(({default: toast}) => { + toast(globalize.translate('RefreshQueued')); + }); - var apiClient = connectionManager.getApiClient(options.serverId); + loading.hide(); - var replaceAllMetadata = dlg.querySelector('#selectMetadataRefreshMode').value === 'all'; + e.preventDefault(); + return false; +} - var mode = dlg.querySelector('#selectMetadataRefreshMode').value === 'scan' ? 'Default' : 'FullRefresh'; - var replaceAllImages = mode === 'FullRefresh' && dlg.querySelector('.chkReplaceImages').checked; - - options.itemIds.forEach(function (itemId) { - apiClient.refreshItem(itemId, { - - Recursive: true, - ImageRefreshMode: mode, - MetadataRefreshMode: mode, - ReplaceAllImages: replaceAllImages, - ReplaceAllMetadata: replaceAllMetadata - }); - }); - - dialogHelper.close(dlg); - - require(['toast'], function (toast) { - toast(globalize.translate('RefreshQueued')); - }); - - loading.hide(); - - e.preventDefault(); - return false; - } - - function RefreshDialog(options) { +class RefreshDialog { + constructor(options) { this.options = options; } - RefreshDialog.prototype.show = function () { - var dialogOptions = { + show() { + const dialogOptions = { removeOnClose: true, scrollY: false }; @@ -99,12 +113,12 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionM dialogOptions.size = 'small'; } - var dlg = dialogHelper.createDialog(dialogOptions); + const dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add('formDialog'); - var html = ''; - var title = globalize.translate('RefreshMetadata'); + let html = ''; + const title = globalize.translate('RefreshMetadata'); html += '
'; html += ''; @@ -150,7 +164,7 @@ define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionM dlg.addEventListener('close', resolve); dialogHelper.open(dlg); }); - }; + } +} - return RefreshDialog; -}); +export default RefreshDialog; From d7526d955d67f26bedf74d40b51408e683686cce Mon Sep 17 00:00:00 2001 From: Supergamer1337 Date: Thu, 30 Jul 2020 10:51:53 +0200 Subject: [PATCH 042/463] Added show and hide cursor --- src/controllers/playback/video/index.js | 5 +---- src/scripts/mouseManager.js | 26 +++++++++++++++---------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 23453857f9..ca67cddbe7 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -422,9 +422,6 @@ import 'css!assets/css/videoosd'; elem.classList.remove('hide'); elem.classList.remove('videoOsdBottom-hidden'); - mouseManager.removeIdleClasses(); // Remove Idle Classes To Show Cursor - mouseManager.lastMouseInputTime = new Date().getTime(); // Reset Mouse Input Time - if (!layoutManager.mobile) { setTimeout(function () { focusManager.focus(elem.querySelector('.btnPause')); @@ -440,7 +437,7 @@ import 'css!assets/css/videoosd'; clearHideAnimationEventListeners(elem); elem.classList.add('videoOsdBottom-hidden'); - mouseManager.addIdleClasses(); // Add Idle Classes To Hide Cursor + mouseManager.hideCursor(); dom.addEventListener(elem, transitionEndEventName, onHideAnimationComplete, { once: true diff --git a/src/scripts/mouseManager.js b/src/scripts/mouseManager.js index cc4d5459b5..b3faedbb58 100644 --- a/src/scripts/mouseManager.js +++ b/src/scripts/mouseManager.js @@ -31,6 +31,18 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd } } + function showCursor() { + isMouseIdle = false; + removeIdleClasses(); + events.trigger(self, 'mouseactive'); + } + + function hideCursor() { + isMouseIdle = true; + addIdleClasses(); + events.trigger(self, 'mouseidle'); + } + var lastPointerMoveData; function onPointerMove(e) { var eventX = e.screenX; @@ -62,9 +74,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd notifyApp(); if (isMouseIdle) { - isMouseIdle = false; - removeIdleClasses(); - events.trigger(self, 'mouseactive'); + showCursor(); } } @@ -99,9 +109,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd function onMouseInterval() { if (!isMouseIdle && mouseIdleTime() >= 5000) { - isMouseIdle = true; - addIdleClasses(); - events.trigger(self, 'mouseidle'); + hideCursor(); } } @@ -157,10 +165,8 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd events.on(layoutManager, 'modechange', initMouse); - // Make Both Idle Class Functions And Last Mouse Input Time Accessible - self.addIdleClasses = addIdleClasses; - self.removeIdleClasses = removeIdleClasses; - self.lastMouseInputTime = lastMouseInputTime; + self.hideCursor = hideCursor; + self.showCursor = showCursor; return self; }); From 17923bb924486a7c3e25f6471831d749cf93f352 Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 30 Jul 2020 10:15:25 +0100 Subject: [PATCH 043/463] Migration of playqueuemanager to ES6 module --- package.json | 1 + src/components/playback/playbackmanager.js | 2 + src/components/playback/playqueuemanager.js | 175 ++++++++++---------- 3 files changed, 89 insertions(+), 89 deletions(-) diff --git a/package.json b/package.json index 5db40a0efe..2f80699ce7 100644 --- a/package.json +++ b/package.json @@ -139,6 +139,7 @@ "src/components/playback/playerSelectionMenu.js", "src/components/playback/playersettingsmenu.js", "src/components/playback/playmethodhelper.js", + "src/components/playback/playqueuemanager.js", "src/components/playback/remotecontrolautoplay.js", "src/components/playback/volumeosd.js", "src/components/playbackSettings/playbackSettings.js", diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 829cd38f2c..dcc2de5eb7 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1,6 +1,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'playQueueManager', 'userSettings', 'globalize', 'connectionManager', 'loading', 'apphost', 'screenfull'], function (events, datetime, appSettings, itemHelper, pluginManager, PlayQueueManager, userSettings, globalize, connectionManager, loading, apphost, screenfull) { 'use strict'; + PlayQueueManager = PlayQueueManager.default || PlayQueueManager; + function enableLocalPlaylistManagement(player) { if (player.getPlaylist) { return false; diff --git a/src/components/playback/playqueuemanager.js b/src/components/playback/playqueuemanager.js index 696075b344..fbe1ceabfe 100644 --- a/src/components/playback/playqueuemanager.js +++ b/src/components/playback/playqueuemanager.js @@ -1,56 +1,56 @@ -define([], function () { - 'use strict'; +/*eslint prefer-const: "error"*/ - var currentId = 0; - function addUniquePlaylistItemId(item) { - if (!item.PlaylistItemId) { - item.PlaylistItemId = 'playlistItem' + currentId; - currentId++; +let currentId = 0; +function addUniquePlaylistItemId(item) { + if (!item.PlaylistItemId) { + item.PlaylistItemId = 'playlistItem' + currentId; + currentId++; + } +} + +function findPlaylistIndex(playlistItemId, list) { + for (let i = 0, length = list.length; i < length; i++) { + if (list[i].PlaylistItemId === playlistItemId) { + return i; } } - function findPlaylistIndex(playlistItemId, list) { - for (var i = 0, length = list.length; i < length; i++) { - if (list[i].PlaylistItemId === playlistItemId) { - return i; - } - } + return -1; +} - return -1; - } - - function PlayQueueManager() { +class PlayQueueManager { + constructor() { this._sortedPlaylist = []; this._playlist = []; this._repeatMode = 'RepeatNone'; this._shuffleMode = 'Sorted'; } - PlayQueueManager.prototype.getPlaylist = function () { + getPlaylist() { return this._playlist.slice(0); - }; + } - PlayQueueManager.prototype.setPlaylist = function (items) { + setPlaylist(items) { items = items.slice(0); - for (var i = 0, length = items.length; i < length; i++) { + for (let i = 0, length = items.length; i < length; i++) { addUniquePlaylistItemId(items[i]); } this._currentPlaylistItemId = null; this._playlist = items; this._repeatMode = 'RepeatNone'; - }; + } - PlayQueueManager.prototype.queue = function (items) { - for (var i = 0, length = items.length; i < length; i++) { + queue(items) { + for (let i = 0, length = items.length; i < length; i++) { addUniquePlaylistItemId(items[i]); this._playlist.push(items[i]); } - }; + } - PlayQueueManager.prototype.shufflePlaylist = function () { + shufflePlaylist() { this._sortedPlaylist = []; for (const item of this._playlist) { this._sortedPlaylist.push(item); @@ -65,42 +65,31 @@ define([], function () { } this._playlist.unshift(currentPlaylistItem); this._shuffleMode = 'Shuffle'; - }; + } - PlayQueueManager.prototype.sortShuffledPlaylist = function () { + sortShuffledPlaylist() { this._playlist = []; - for (let item of this._sortedPlaylist) { + for (const item of this._sortedPlaylist) { this._playlist.push(item); } this._sortedPlaylist = []; this._shuffleMode = 'Sorted'; - }; + } - PlayQueueManager.prototype.clearPlaylist = function (clearCurrentItem = false) { + clearPlaylist(clearCurrentItem = false) { const currentPlaylistItem = this._playlist.splice(this.getCurrentPlaylistIndex(), 1)[0]; this._playlist = []; if (!clearCurrentItem) { this._playlist.push(currentPlaylistItem); } - }; - - function arrayInsertAt(destArray, pos, arrayToInsert) { - var args = []; - args.push(pos); // where to insert - args.push(0); // nothing to remove - args = args.concat(arrayToInsert); // add on array to insert - destArray.splice.apply(destArray, args); // splice it in } - PlayQueueManager.prototype.queueNext = function (items) { - var i; - var length; - - for (i = 0, length = items.length; i < length; i++) { + queueNext(items) { + for (let i = 0, length = items.length; i < length; i++) { addUniquePlaylistItemId(items[i]); } - var currentIndex = this.getCurrentPlaylistIndex(); + let currentIndex = this.getCurrentPlaylistIndex(); if (currentIndex === -1) { currentIndex = this._playlist.length; @@ -109,43 +98,43 @@ define([], function () { } arrayInsertAt(this._playlist, currentIndex, items); - }; + } - PlayQueueManager.prototype.getCurrentPlaylistIndex = function () { + getCurrentPlaylistIndex() { return findPlaylistIndex(this.getCurrentPlaylistItemId(), this._playlist); - }; + } - PlayQueueManager.prototype.getCurrentItem = function () { - var index = findPlaylistIndex(this.getCurrentPlaylistItemId(), this._playlist); + getCurrentItem() { + const index = findPlaylistIndex(this.getCurrentPlaylistItemId(), this._playlist); return index === -1 ? null : this._playlist[index]; - }; + } - PlayQueueManager.prototype.getCurrentPlaylistItemId = function () { + getCurrentPlaylistItemId() { return this._currentPlaylistItemId; - }; + } - PlayQueueManager.prototype.setPlaylistState = function (playlistItemId, playlistIndex) { + setPlaylistState(playlistItemId, playlistIndex) { this._currentPlaylistItemId = playlistItemId; - }; + } - PlayQueueManager.prototype.setPlaylistIndex = function (playlistIndex) { + setPlaylistIndex(playlistIndex) { if (playlistIndex < 0) { this.setPlaylistState(null); } else { this.setPlaylistState(this._playlist[playlistIndex].PlaylistItemId); } - }; + } - PlayQueueManager.prototype.removeFromPlaylist = function (playlistItemIds) { + removeFromPlaylist(playlistItemIds) { if (this._playlist.length <= playlistItemIds.length) { return { result: 'empty' }; } - var currentPlaylistItemId = this.getCurrentPlaylistItemId(); - var isCurrentIndex = playlistItemIds.indexOf(currentPlaylistItemId) !== -1; + const currentPlaylistItemId = this.getCurrentPlaylistItemId(); + const isCurrentIndex = playlistItemIds.indexOf(currentPlaylistItemId) !== -1; this._sortedPlaylist = this._sortedPlaylist.filter(function (item) { return !playlistItemIds.includes(item.PlaylistItemId); @@ -159,17 +148,13 @@ define([], function () { result: 'removed', isCurrentIndex: isCurrentIndex }; - }; - - function moveInArray(array, from, to) { - array.splice(to, 0, array.splice(from, 1)[0]); } - PlayQueueManager.prototype.movePlaylistItem = function (playlistItemId, newIndex) { - var playlist = this.getPlaylist(); + movePlaylistItem(playlistItemId, newIndex) { + const playlist = this.getPlaylist(); - var oldIndex; - for (var i = 0, length = playlist.length; i < length; i++) { + let oldIndex; + for (let i = 0, length = playlist.length; i < length; i++) { if (playlist[i].PlaylistItemId === playlistItemId) { oldIndex = i; break; @@ -195,30 +180,30 @@ define([], function () { playlistItemId: playlistItemId, newIndex: newIndex }; - }; + } - PlayQueueManager.prototype.reset = function () { + reset() { this._sortedPlaylist = []; this._playlist = []; this._currentPlaylistItemId = null; this._repeatMode = 'RepeatNone'; this._shuffleMode = 'Sorted'; - }; + } - PlayQueueManager.prototype.setRepeatMode = function (value) { + setRepeatMode(value) { const repeatModes = ['RepeatOne', 'RepeatAll', 'RepeatNone']; if (repeatModes.includes(value)) { this._repeatMode = value; } else { throw new TypeError('invalid value provided for setRepeatMode'); } - }; + } - PlayQueueManager.prototype.getRepeatMode = function () { + getRepeatMode() { return this._repeatMode; - }; + } - PlayQueueManager.prototype.setShuffleMode = function (value) { + setShuffleMode(value) { switch (value) { case 'Shuffle': this.shufflePlaylist(); @@ -229,9 +214,9 @@ define([], function () { default: throw new TypeError('invalid value provided to setShuffleMode'); } - }; + } - PlayQueueManager.prototype.toggleShuffleMode = function () { + toggleShuffleMode() { switch (this._shuffleMode) { case 'Shuffle': this.setShuffleMode('Sorted'); @@ -242,16 +227,16 @@ define([], function () { default: throw new TypeError('current value for shufflequeue is invalid'); } - }; + } - PlayQueueManager.prototype.getShuffleMode = function () { + getShuffleMode() { return this._shuffleMode; - }; + } - PlayQueueManager.prototype.getNextItemInfo = function () { - var newIndex; - var playlist = this.getPlaylist(); - var playlistLength = playlist.length; + getNextItemInfo() { + let newIndex; + const playlist = this.getPlaylist(); + const playlistLength = playlist.length; switch (this.getRepeatMode()) { case 'RepeatOne': @@ -272,7 +257,7 @@ define([], function () { return null; } - var item = playlist[newIndex]; + const item = playlist[newIndex]; if (!item) { return null; @@ -282,7 +267,19 @@ define([], function () { item: item, index: newIndex }; - }; + } +} - return PlayQueueManager; -}); +function arrayInsertAt(destArray, pos, arrayToInsert) { + let args = []; + args.push(pos); // where to insert + args.push(0); // nothing to remove + args = args.concat(arrayToInsert); // add on array to insert + destArray.splice.apply(destArray, args); // splice it in +} + +function moveInArray(array, from, to) { + array.splice(to, 0, array.splice(from, 1)[0]); +} + +export default PlayQueueManager; From f254a7157296db31516e9baf3245dbb080ba00c8 Mon Sep 17 00:00:00 2001 From: Felix Bjerhem Aronsson Date: Thu, 30 Jul 2020 13:42:07 +0200 Subject: [PATCH 044/463] Moved hide cursor according to review --- src/controllers/playback/video/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index ca67cddbe7..e761c16a32 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -368,6 +368,7 @@ import 'css!assets/css/videoosd'; function hideOsd() { slideUpToHide(headerElement); hideMainOsdControls(); + mouseManager.hideCursor(); } function toggleOsd() { @@ -437,8 +438,6 @@ import 'css!assets/css/videoosd'; clearHideAnimationEventListeners(elem); elem.classList.add('videoOsdBottom-hidden'); - mouseManager.hideCursor(); - dom.addEventListener(elem, transitionEndEventName, onHideAnimationComplete, { once: true }); From 5e422e15c0432489860171daffc2e3ac04e9f3f4 Mon Sep 17 00:00:00 2001 From: Felix Bjerhem Aronsson Date: Thu, 30 Jul 2020 13:42:41 +0200 Subject: [PATCH 045/463] Misc suggestions from code review Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/scripts/mouseManager.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/scripts/mouseManager.js b/src/scripts/mouseManager.js index b3faedbb58..d801d82393 100644 --- a/src/scripts/mouseManager.js +++ b/src/scripts/mouseManager.js @@ -32,15 +32,19 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd } function showCursor() { - isMouseIdle = false; - removeIdleClasses(); - events.trigger(self, 'mouseactive'); + if (isMouseIdle) { + isMouseIdle = false; + removeIdleClasses(); + events.trigger(self, 'mouseactive'); + } } function hideCursor() { - isMouseIdle = true; - addIdleClasses(); - events.trigger(self, 'mouseidle'); + if (!isMouseIdle) { + isMouseIdle = true; + addIdleClasses(); + events.trigger(self, 'mouseidle'); + } } var lastPointerMoveData; @@ -73,9 +77,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd lastMouseInputTime = new Date().getTime(); notifyApp(); - if (isMouseIdle) { - showCursor(); - } + showCursor(); } function onPointerEnter(e) { From 2110f862c1c6f3ef783ddce09b28f6079926527c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 30 Jul 2020 11:56:57 +0000 Subject: [PATCH 046/463] Bump webpack from 4.44.0 to 4.44.1 Bumps [webpack](https://github.com/webpack/webpack) from 4.44.0 to 4.44.1. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v4.44.0...v4.44.1) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 00b9f70f53..d2521c0113 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "stylelint-config-rational-order": "^0.1.2", "stylelint-no-browser-hacks": "^1.2.1", "stylelint-order": "^4.1.0", - "webpack": "^4.44.0", + "webpack": "^4.44.1", "webpack-merge": "^4.2.2", "webpack-stream": "^5.2.1" }, diff --git a/yarn.lock b/yarn.lock index 3c30f7edf8..03922b53c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11953,10 +11953,10 @@ webpack-stream@^5.2.1: vinyl "^2.1.0" webpack "^4.26.1" -webpack@^4.26.1, webpack@^4.44.0: - version "4.44.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.0.tgz#3b08f88a89470175f036f4a9496b8a0428668802" - integrity sha512-wAuJxK123sqAw31SpkPiPW3iKHgFUiKvO7E7UZjtdExcsRe3fgav4mvoMM7vvpjLHVoJ6a0Mtp2fzkoA13e0Zw== +webpack@^4.26.1, webpack@^4.44.1: + version "4.44.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" + integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" From 1e76ec3ff034470c66e948e0cdb10681c85b7e31 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 30 Jul 2020 11:57:23 +0000 Subject: [PATCH 047/463] Bump css-loader from 4.0.0 to 4.1.1 Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 4.0.0 to 4.1.1. - [Release notes](https://github.com/webpack-contrib/css-loader/releases) - [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/css-loader/compare/v4.0.0...v4.1.1) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 00b9f70f53..019574a4e7 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "babel-loader": "^8.0.6", "browser-sync": "^2.26.12", "copy-webpack-plugin": "^5.1.1", - "css-loader": "^4.0.0", + "css-loader": "^4.1.1", "cssnano": "^4.1.10", "del": "^5.1.0", "eslint": "^6.8.0", diff --git a/yarn.lock b/yarn.lock index 3c30f7edf8..94bc651a16 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2968,10 +2968,10 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.0.0.tgz#814434d4e1e2d5f430c70e85e78268db7f3cced1" - integrity sha512-/7d5slKnmY2S39FNifJ7JQ8MhcMM/rDIjAZ2Sc/Z8lnOWOmc10hijg28ovBtljY364pQaF01O2nj5AIBDnJ9vQ== +css-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.1.1.tgz#48342f098784e75bbfc0933dea2853314fb737d8" + integrity sha512-nZ4OC2g88+wOOdkVQ0yYy7T6uXSkb7I7UyMNnaevQQvVWskTSDRAz08ETl91et4ghVL6jfnzWUt0o2XaY0gyRg== dependencies: camelcase "^6.0.0" cssesc "^3.0.0" From a395e6b3d36b51d0c3965108b0f56d85728e1c8d Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 30 Jul 2020 19:42:30 +0200 Subject: [PATCH 048/463] Remove redundant variable assignments --- src/components/appRouter.js | 3 +-- src/components/cardbuilder/chaptercardbuilder.js | 4 +--- src/components/playback/playbackmanager.js | 8 +++----- src/controllers/itemDetails/index.js | 11 +++-------- src/scripts/dom.js | 4 +--- src/scripts/libraryMenu.js | 4 +--- 6 files changed, 10 insertions(+), 24 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 138d58e5c0..4fa2a92433 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -231,8 +231,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro max /= 8; max *= 1000000; max *= 0.7; - max = parseInt(max); - return max; + return parseInt(max, 10); } } /* eslint-enable compat/compat */ diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index 0215f8d8e5..1521650ed0 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -104,9 +104,7 @@ import browser from 'browser'; const cardBoxCssClass = 'cardBox'; const cardScalableClass = 'cardScalable'; - const html = `
`; - - return html; + return `
`; } export function buildChapterCards(item, chapters, options) { diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 0f3b0fbc55..9aaeb01c04 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -887,9 +887,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } } - targets = targets.sort(sortPlayerTargets); - - return targets; + return targets.sort(sortPlayerTargets); }); }); }; @@ -3390,8 +3388,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla PlaybackManager.prototype.getSubtitleUrl = function (textStream, serverId) { var apiClient = connectionManager.getApiClient(serverId); - var textStreamUrl = !textStream.IsExternalUrl ? apiClient.getUrl(textStream.DeliveryUrl) : textStream.DeliveryUrl; - return textStreamUrl; + + return !textStream.IsExternalUrl ? apiClient.getUrl(textStream.DeliveryUrl) : textStream.DeliveryUrl; }; PlaybackManager.prototype.stop = function (player) { diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 29aa8ad1e1..85f42109d7 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -38,7 +38,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function getContextMenuOptions(item, user, button) { - var options = { + return { item: item, open: false, play: false, @@ -53,8 +53,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti user: user, share: true }; - - return options; } function getProgramScheduleHtml(items) { @@ -357,9 +355,8 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti }); html.push('' + artist.Name + ''); } - html = html.join(' / '); - return html; + return html.join(' / '); } /** @@ -1729,7 +1726,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function getVideosHtml(items) { - var html = cardBuilder.getCardsHtml({ + return cardBuilder.getCardsHtml({ items: items, shape: 'autooverflow', showTitle: true, @@ -1738,8 +1735,6 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti centerText: true, showRuntime: true }); - - return html; } function renderSpecials(page, item, user) { diff --git a/src/scripts/dom.js b/src/scripts/dom.js index 080bff66ae..63935edbbf 100644 --- a/src/scripts/dom.js +++ b/src/scripts/dom.js @@ -183,11 +183,9 @@ width = height * (16.0 / 9.0); } - const closest = standardWidths.sort(function (a, b) { + return standardWidths.sort(function (a, b) { return Math.abs(width - a) - Math.abs(width - b); })[0]; - - return closest; } /** diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 961d89dc05..da52be574d 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -604,12 +604,10 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' var icon = i.icon || imageHelper.getLibraryIcon(i.CollectionType); var itemId = i.Id; - const linkHtml = ` + return ` ${i.Name} `; - - return linkHtml; }).join(''); libraryMenuOptions.innerHTML = html; var elem = libraryMenuOptions; From c89ede96dae6dd018ac306ff513a0ac734e9ee23 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Thu, 30 Jul 2020 17:36:14 +0000 Subject: [PATCH 049/463] 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 06acfddab5..c19bdf3611 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1362,7 +1362,7 @@ "DashboardVersionNumber": "版本:{0}", "DashboardServerName": "服务器:{0}", "LabelVideo": "视频", - "LabelWeb": "网站:", + "LabelWeb": "网页:", "LeaveBlankToNotSetAPassword": "您可以将此字段留空以设置空密码。", "LinksValue": "链接:{0}", "LiveBroadcasts": "直播", From 6ef3be136a1e2f98e0d292cfdc108b94eb3eb470 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Thu, 30 Jul 2020 23:36:52 +0300 Subject: [PATCH 050/463] Add parseInt radix --- src/components/subtitlesettings/subtitleappearancehelper.js | 4 ++-- src/plugins/htmlVideoPlayer/plugin.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/subtitlesettings/subtitleappearancehelper.js b/src/components/subtitlesettings/subtitleappearancehelper.js index 4b8b7aed2a..904c018bfc 100644 --- a/src/components/subtitlesettings/subtitleappearancehelper.js +++ b/src/components/subtitlesettings/subtitleappearancehelper.js @@ -89,7 +89,7 @@ function getTextStyles(settings, preview) { } if (!preview) { - const pos = parseInt(settings.verticalPosition); + const pos = parseInt(settings.verticalPosition, 10); const lineHeight = 1.35; // FIXME: It is better to read this value from element const line = Math.abs(pos * lineHeight); if (pos < 0) { @@ -108,7 +108,7 @@ function getWindowStyles(settings, preview) { const list = []; if (!preview) { - const pos = parseInt(settings.verticalPosition); + const pos = parseInt(settings.verticalPosition, 10); if (pos < 0) { list.push({ name: 'top', value: '' }); list.push({ name: 'bottom', value: '0' }); diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 77e3253641..7ef35adf41 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1200,7 +1200,7 @@ function tryRemoveElement(elem) { console.debug(`downloaded ${data.TrackEvents.length} track events`); const subtitleAppearance = userSettings.getSubtitleAppearanceSettings(); - const cueLine = parseInt(subtitleAppearance.verticalPosition); + const cueLine = parseInt(subtitleAppearance.verticalPosition, 10); // add some cues to show the text // in safari, the cues need to be added before setting the track mode to showing From b3bfbe640e17c5ec05427883b856001fef3f1a6d Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Thu, 30 Jul 2020 23:25:35 +0200 Subject: [PATCH 051/463] Migrated livestatus.js to es6 module --- package.json | 1 + src/controllers/livetvstatus.js | 545 ++++++++++++++++---------------- 2 files changed, 280 insertions(+), 266 deletions(-) diff --git a/package.json b/package.json index 38b7580ed9..965d676b5b 100644 --- a/package.json +++ b/package.json @@ -201,6 +201,7 @@ "src/controllers/playback/video/index.js", "src/controllers/searchpage.js", "src/controllers/livetvtuner.js", + "src/controllers/livetvstatus.js", "src/controllers/shows/episodes.js", "src/controllers/shows/tvgenres.js", "src/controllers/shows/tvlatest.js", diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 84ea006fd9..1c04990634 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -1,294 +1,307 @@ -define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layoutManager', 'loading', 'browser', 'listViewStyle', 'flexStyles', 'emby-itemscontainer', 'cardStyle', 'material-icons', 'emby-button'], function ($, globalize, taskButton, dom, libraryMenu, layoutManager, loading, browser) { - 'use strict'; +'use strict'; - var enableFocusTransform = !browser.slow && !browser.edge; +import $ from 'jQuery'; +import globalize from 'globalize'; +import taskButton from 'scripts/taskbutton'; +import dom from 'dom'; +import layoutManager from 'layoutManager'; +import loading from 'loading'; +import browser from 'browser'; +import 'listViewStyle'; +import 'flexStyles'; +import 'emby-itemscontainer'; +import 'cardStyle'; +import 'material-icons'; +import 'emby-button'; - function getDeviceHtml(device) { - var padderClass; - var html = ''; - var cssClass = 'card scalableCard'; - var cardBoxCssClass = 'cardBox visualCardBox'; - cssClass += ' backdropCard backdropCard-scalable'; - padderClass = 'cardPadder-backdrop'; +const enableFocusTransform = !browser.slow && !browser.edge; - // TODO move card creation code to Card component +function getDeviceHtml(device) { + let padderClass; + let html = ''; + let cssClass = 'card scalableCard'; + let cardBoxCssClass = 'cardBox visualCardBox'; + cssClass += ' backdropCard backdropCard-scalable'; + padderClass = 'cardPadder-backdrop'; - if (layoutManager.tv) { - cssClass += ' show-focus'; + // TODO move card creation code to Card component - if (enableFocusTransform) { - cssClass += ' show-animation'; - } + if (layoutManager.tv) { + cssClass += ' show-focus'; + + if (enableFocusTransform) { + cssClass += ' show-animation'; } - - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += ''; - html += '
' + (device.FriendlyName || getTunerName(device.Type)) + '
'; - html += '
'; - html += device.Url || ' '; - html += '
'; - html += '
'; - html += '
'; - return html += '
'; } - function renderDevices(page, devices) { - var html = devices.map(getDeviceHtml).join(''); - page.querySelector('.devicesList').innerHTML = html; - } + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += ''; + html += '
' + (device.FriendlyName || getTunerName(device.Type)) + '
'; + html += '
'; + html += device.Url || ' '; + html += '
'; + html += '
'; + html += '
'; + return html += '
'; +} - function deleteDevice(page, id) { - var message = globalize.translate('MessageConfirmDeleteTunerDevice'); +function renderDevices(page, devices) { + page.querySelector('.devicesList').innerHTML = devices.map(getDeviceHtml).join(''); +} - require(['confirm'], function (confirm) { - confirm.default(message, globalize.translate('HeaderDeleteDevice')).then(function () { - loading.show(); - ApiClient.ajax({ - type: 'DELETE', - url: ApiClient.getUrl('LiveTv/TunerHosts', { - Id: id - }) - }).then(function () { - reload(page); - }); +function deleteDevice(page, id) { + const message = globalize.translate('MessageConfirmDeleteTunerDevice'); + + import('confirm').then(({default: confirm}) => { + confirm(message, globalize.translate('HeaderDeleteDevice')).then(function () { + loading.show(); + ApiClient.ajax({ + type: 'DELETE', + url: ApiClient.getUrl('LiveTv/TunerHosts', { + Id: id + }) + }).then(function () { + reload(page); }); }); - } + }); +} - function reload(page) { - loading.show(); - ApiClient.getNamedConfiguration('livetv').then(function (config) { - renderDevices(page, config.TunerHosts); - renderProviders(page, config.ListingProviders); +function reload(page) { + loading.show(); + ApiClient.getNamedConfiguration('livetv').then(function (config) { + renderDevices(page, config.TunerHosts); + renderProviders(page, config.ListingProviders); + }); + loading.hide(); +} + +function submitAddDeviceForm(page) { + page.querySelector('.dlgAddDevice').close(); + loading.show(); + ApiClient.ajax({ + type: 'POST', + url: ApiClient.getUrl('LiveTv/TunerHosts'), + data: JSON.stringify({ + Type: $('#selectTunerDeviceType', page).val(), + Url: $('#txtDevicePath', page).val() + }), + contentType: 'application/json' + }).then(function () { + reload(page); + }, function () { + Dashboard.alert({ + message: globalize.translate('ErrorAddingTunerDevice') }); - loading.hide(); - } + }); +} - function submitAddDeviceForm(page) { - page.querySelector('.dlgAddDevice').close(); - loading.show(); - ApiClient.ajax({ - type: 'POST', - url: ApiClient.getUrl('LiveTv/TunerHosts'), - data: JSON.stringify({ - Type: $('#selectTunerDeviceType', page).val(), - Url: $('#txtDevicePath', page).val() - }), - contentType: 'application/json' - }).then(function () { - reload(page); - }, function () { - Dashboard.alert({ - message: globalize.translate('ErrorAddingTunerDevice') - }); - }); - } +function renderProviders(page, providers) { + let html = ''; - function renderProviders(page, providers) { - var html = ''; - - if (providers.length) { - html += '
'; - - for (var i = 0, length = providers.length; i < length; i++) { - var provider = providers[i]; - html += ''; - } + if (providers.length) { + html += '
'; + for (let i = 0, length = providers.length; i < length; i++) { + const provider = providers[i]; + html += ''; } - var elem = $('.providerList', page).html(html); - $('.btnOptions', elem).on('click', function () { - var id = this.getAttribute('data-id'); - showProviderOptions(page, id, this); - }); + html += '
'; } - function showProviderOptions(page, providerId, button) { - var items = []; - items.push({ - name: globalize.translate('ButtonDelete'), - id: 'delete' - }); - items.push({ - name: globalize.translate('MapChannels'), - id: 'map' - }); + const elem = $('.providerList', page).html(html); + $('.btnOptions', elem).on('click', function () { + var id = this.getAttribute('data-id'); + showProviderOptions(page, id, this); + }); +} - require(['actionsheet'], function (actionsheet) { - actionsheet.show({ - items: items, - positionTo: button - }).then(function (id) { - switch (id) { - case 'delete': - deleteProvider(page, providerId); - break; +function showProviderOptions(page, providerId, button) { + const items = []; + items.push({ + name: globalize.translate('ButtonDelete'), + id: 'delete' + }); + items.push({ + name: globalize.translate('MapChannels'), + id: 'map' + }); - case 'map': - mapChannels(page, providerId); - } - }); - }); - } + import('actionsheet').then(({default: actionsheet}) => { + actionsheet.show({ + items: items, + positionTo: button + }).then(function (id) { + switch (id) { + case 'delete': + deleteProvider(page, providerId); + break; - function mapChannels(page, providerId) { - require(['components/channelMapper/channelMapper'], function (channelMapper) { - new channelMapper.default({ - serverId: ApiClient.serverInfo().Id, - providerId: providerId - }).show(); - }); - } - - function deleteProvider(page, id) { - var message = globalize.translate('MessageConfirmDeleteGuideProvider'); - - require(['confirm'], function (confirm) { - confirm.default(message, globalize.translate('HeaderDeleteProvider')).then(function () { - loading.show(); - ApiClient.ajax({ - type: 'DELETE', - url: ApiClient.getUrl('LiveTv/ListingProviders', { - Id: id - }) - }).then(function () { - reload(page); - }, function () { - reload(page); - }); - }); - }); - } - - function getTunerName(providerId) { - switch (providerId = providerId.toLowerCase()) { - case 'm3u': - return 'M3U'; - case 'hdhomerun': - return 'HDHomeRun'; - case 'hauppauge': - return 'Hauppauge'; - case 'satip': - return 'DVB'; - default: - return 'Unknown'; - } - } - - function getProviderName(providerId) { - switch (providerId = providerId.toLowerCase()) { - case 'schedulesdirect': - return 'Schedules Direct'; - case 'xmltv': - return 'XMLTV'; - default: - return 'Unknown'; - } - } - - function getProviderConfigurationUrl(providerId) { - switch (providerId = providerId.toLowerCase()) { - case 'xmltv': - return 'livetvguideprovider.html?type=xmltv'; - case 'schedulesdirect': - return 'livetvguideprovider.html?type=schedulesdirect'; - } - } - - function addProvider(button) { - var menuItems = []; - menuItems.push({ - name: 'Schedules Direct', - id: 'SchedulesDirect' - }); - menuItems.push({ - name: 'XMLTV', - id: 'xmltv' - }); - - require(['actionsheet'], function (actionsheet) { - actionsheet.show({ - items: menuItems, - positionTo: button, - callback: function (id) { - Dashboard.navigate(getProviderConfigurationUrl(id)); - } - }); - }); - } - - function addDevice(button) { - Dashboard.navigate('livetvtuner.html'); - } - - function showDeviceMenu(button, tunerDeviceId) { - var items = []; - items.push({ - name: globalize.translate('ButtonDelete'), - id: 'delete' - }); - items.push({ - name: globalize.translate('ButtonEdit'), - id: 'edit' - }); - - require(['actionsheet'], function (actionsheet) { - actionsheet.show({ - items: items, - positionTo: button - }).then(function (id) { - switch (id) { - case 'delete': - deleteDevice(dom.parentWithClass(button, 'page'), tunerDeviceId); - break; - - case 'edit': - Dashboard.navigate('livetvtuner.html?id=' + tunerDeviceId); - } - }); - }); - } - - function onDevicesListClick(e) { - var card = dom.parentWithClass(e.target, 'card'); - - if (card) { - var id = card.getAttribute('data-id'); - var btnCardOptions = dom.parentWithClass(e.target, 'btnCardOptions'); - - if (btnCardOptions) { - showDeviceMenu(btnCardOptions, id); - } else { - Dashboard.navigate('livetvtuner.html?id=' + id); + case 'map': + mapChannels(page, providerId); } + }); + }); +} + +function mapChannels(page, providerId) { + import('components/channelMapper/channelMapper').then(({default: channelMapper}) => { + new channelMapper({ + serverId: ApiClient.serverInfo().Id, + providerId: providerId + }).show(); + }); +} + +function deleteProvider(page, id) { + const message = globalize.translate('MessageConfirmDeleteGuideProvider'); + + import('confirm').then(({default: confirm}) => { + confirm(message, globalize.translate('HeaderDeleteProvider')).then(function () { + loading.show(); + ApiClient.ajax({ + type: 'DELETE', + url: ApiClient.getUrl('LiveTv/ListingProviders', { + Id: id + }) + }).then(function () { + reload(page); + }, function () { + reload(page); + }); + }); + }); +} + +function getTunerName(providerId) { + switch (providerId = providerId.toLowerCase()) { + case 'm3u': + return 'M3U'; + case 'hdhomerun': + return 'HDHomeRun'; + case 'hauppauge': + return 'Hauppauge'; + case 'satip': + return 'DVB'; + default: + return 'Unknown'; + } +} + +function getProviderName(providerId) { + switch (providerId = providerId.toLowerCase()) { + case 'schedulesdirect': + return 'Schedules Direct'; + case 'xmltv': + return 'XMLTV'; + default: + return 'Unknown'; + } +} + +function getProviderConfigurationUrl(providerId) { + switch (providerId = providerId.toLowerCase()) { + case 'xmltv': + return 'livetvguideprovider.html?type=xmltv'; + case 'schedulesdirect': + return 'livetvguideprovider.html?type=schedulesdirect'; + } +} + +function addProvider(button) { + const menuItems = []; + menuItems.push({ + name: 'Schedules Direct', + id: 'SchedulesDirect' + }); + menuItems.push({ + name: 'XMLTV', + id: 'xmltv' + }); + + import('actionsheet').then(({default: actionsheet}) => { + actionsheet.show({ + items: menuItems, + positionTo: button, + callback: function (id) { + Dashboard.navigate(getProviderConfigurationUrl(id)); + } + }); + }); +} + +function addDevice(button) { + Dashboard.navigate('livetvtuner.html'); +} + +function showDeviceMenu(button, tunerDeviceId) { + var items = []; + items.push({ + name: globalize.translate('ButtonDelete'), + id: 'delete' + }); + items.push({ + name: globalize.translate('ButtonEdit'), + id: 'edit' + }); + + require(['actionsheet'], function (actionsheet) { + actionsheet.show({ + items: items, + positionTo: button + }).then(function (id) { + switch (id) { + case 'delete': + deleteDevice(dom.parentWithClass(button, 'page'), tunerDeviceId); + break; + + case 'edit': + Dashboard.navigate('livetvtuner.html?id=' + tunerDeviceId); + } + }); + }); +} + +function onDevicesListClick(e) { + const card = dom.parentWithClass(e.target, 'card'); + + if (card) { + const id = card.getAttribute('data-id'); + const btnCardOptions = dom.parentWithClass(e.target, 'btnCardOptions'); + + if (btnCardOptions) { + showDeviceMenu(btnCardOptions, id); + } else { + Dashboard.navigate('livetvtuner.html?id=' + id); } } +} +export default function () { $(document).on('pageinit', '#liveTvStatusPage', function () { - var page = this; + const page = this; $('.btnAddDevice', page).on('click', function () { addDevice(this); }); @@ -301,21 +314,21 @@ define(['jQuery', 'globalize', 'scripts/taskbutton', 'dom', 'libraryMenu', 'layo }); page.querySelector('.devicesList').addEventListener('click', onDevicesListClick); }).on('pageshow', '#liveTvStatusPage', function () { - var page = this; + const page = this; reload(page); - taskButton.default({ + taskButton({ mode: 'on', progressElem: page.querySelector('.refreshGuideProgress'), taskKey: 'RefreshGuide', button: page.querySelector('.btnRefresh') }); }).on('pagehide', '#liveTvStatusPage', function () { - var page = this; - taskButton.default({ + const page = this; + taskButton({ mode: 'off', progressElem: page.querySelector('.refreshGuideProgress'), taskKey: 'RefreshGuide', button: page.querySelector('.btnRefresh') }); }); -}); +} From 319805fe5db44f7fa4222fc58d8f73bc8d79b48e Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 31 Jul 2020 00:08:38 +0200 Subject: [PATCH 052/463] Use emblem on mobile --- src/index.html | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/index.html b/src/index.html index f8d867cb1a..a135079a7d 100644 --- a/src/index.html +++ b/src/index.html @@ -129,7 +129,7 @@ animation: fadein 0.5s; width: 30%; height: 30%; - background-image: url(assets/img/banner-light.png); + background-image: url(assets/img/icon-transparent.png); background-position: center center; background-repeat: no-repeat; background-size: contain; @@ -139,6 +139,14 @@ -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } + + @media screen + and (min-device-width: 992px) + and (-webkit-min-device-pixel-ratio: 1) { + .splashLogo { + background-image: url(assets/img/banner-light.png); + } + } From 775015a913a205fc714d005ae3201c9a3d14675e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2020 02:21:44 +0000 Subject: [PATCH 053/463] Bump hls.js from 0.14.6 to 0.14.7 Bumps [hls.js](https://github.com/video-dev/hls.js) from 0.14.6 to 0.14.7. - [Release notes](https://github.com/video-dev/hls.js/releases) - [Changelog](https://github.com/video-dev/hls.js/blob/master/docs/release-process.md) - [Commits](https://github.com/video-dev/hls.js/compare/v0.14.6...v0.14.7) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 38b7580ed9..f3fefb74a6 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "fast-text-encoding": "^1.0.3", "flv.js": "^1.5.0", "headroom.js": "^0.11.0", - "hls.js": "^0.14.6", + "hls.js": "^0.14.7", "howler": "^2.2.0", "intersection-observer": "^0.11.0", "jellyfin-apiclient": "^1.4.1", diff --git a/yarn.lock b/yarn.lock index 7050a1d682..ad0e27ec3b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5417,10 +5417,10 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -hls.js@^0.14.6: - version "0.14.6" - resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.6.tgz#f5ea8412ccd980fec67ec94a40b65adcc0bf75d1" - integrity sha512-6s8L+Pzed3Gyf7wDxQNx9TP9y9clCDIPW8cQdDV7PF7npI75BbCbUZSQQclnt20442Ay1NL3vg2WXeSEYNiuAw== +hls.js@^0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.14.7.tgz#47fbd2662b13121ab17c07aea06b1c07828240cf" + integrity sha512-9JY0D9nwMrfQPRWc8/kEJTKK0TYfDTzIs6Xq+gdCvasRxdvQKQ2T76rdueTkS0AsFV6sQlJN0wxbnI44aRvvUA== dependencies: eventemitter3 "^4.0.3" url-toolkit "^2.1.6" From cb0bdc829e9a3b3e04f4de7fe782a73546a77f10 Mon Sep 17 00:00:00 2001 From: diego fernando Date: Fri, 31 Jul 2020 01:56:02 +0000 Subject: [PATCH 054/463] Translated using Weblate (Spanish (Latin America)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_419/ --- src/strings/es_419.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index d730a75b9e..1cf6a3f07c 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -352,7 +352,7 @@ "MessageSyncPlayGroupDoesNotExist": "Fallo al unirse al grupo porque éste no existe.", "MessageSyncPlayPlaybackPermissionRequired": "Permiso de reproducción requerido.", "MessageSyncPlayNoGroupsAvailable": "No hay grupos disponibles. Empieza a reproducir algo primero.", - "MessageSyncPlayGroupWait": "{0} está cargando...", + "MessageSyncPlayGroupWait": "{0} está cargando…", "MessageSyncPlayUserLeft": "{0} abandonó el grupo.", "MessageSyncPlayUserJoined": "{0} se ha unido al grupo.", "MessageSyncPlayDisabled": "SyncPlay deshabilitado.", From 62f819672943b7f58a90823050b92ff09f93a595 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2020 03:30:53 +0000 Subject: [PATCH 055/463] Bump autoprefixer from 9.8.5 to 9.8.6 Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 9.8.5 to 9.8.6. - [Release notes](https://github.com/postcss/autoprefixer/releases) - [Changelog](https://github.com/postcss/autoprefixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/postcss/autoprefixer/compare/9.8.5...9.8.6) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 38b7580ed9..112842a691 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "@babel/plugin-transform-modules-amd": "^7.10.5", "@babel/polyfill": "^7.8.7", "@babel/preset-env": "^7.10.3", - "autoprefixer": "^9.8.5", + "autoprefixer": "^9.8.6", "babel-eslint": "^11.0.0-beta.2", "babel-loader": "^8.0.6", "browser-sync": "^2.26.12", diff --git a/yarn.lock b/yarn.lock index 7050a1d682..bcec0d7a5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1616,14 +1616,14 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.8.0, autoprefixer@^9.8.5: - version "9.8.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa" - integrity sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg== +autoprefixer@^9.0.0, autoprefixer@^9.6.1, autoprefixer@^9.8.0, autoprefixer@^9.8.6: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== dependencies: browserslist "^4.12.0" - caniuse-lite "^1.0.30001097" - colorette "^1.2.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^7.0.32" @@ -2282,10 +2282,10 @@ caniuse-db@^1.0.30001090: resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001093.tgz#5a1cae72d94df1156f40f15d9079456e1b29d050" integrity sha512-XqXxHR6Z9IN0BXLKMaTJ1NZ+US74cbKritholD6uaDLUWHiDj0QilpSb708wOcoGz0PmPRsXT/6zE+bjx+QSMw== -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001088, caniuse-lite@^1.0.30001097: - version "1.0.30001099" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz#540118fcc6842d1fde62f4ee5521d1ec6afdb40e" - integrity sha512-sdS9A+sQTk7wKoeuZBN/YMAHVztUfVnjDi4/UV3sDE8xoh7YR12hKW+pIdB3oqKGwr9XaFL2ovfzt9w8eUI5CA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001088, caniuse-lite@^1.0.30001109: + version "1.0.30001109" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001109.tgz#a9f3f26a0c3753b063d7acbb48dfb9c0e46f2b19" + integrity sha512-4JIXRodHzdS3HdK8nSgIqXYLExOvG+D2/EenSvcub2Kp3QEADjo2v2oUn5g0n0D+UNwG9BtwKOyGcSq2qvQXvQ== caseless@~0.12.0: version "0.12.0" @@ -2624,10 +2624,10 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" -colorette@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.0.tgz#45306add826d196e8c87236ac05d797f25982e63" - integrity sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw== +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" From 0d4ab35b2247abf497d8233f167f6db060d52dc0 Mon Sep 17 00:00:00 2001 From: "Just@FunThing" Date: Fri, 31 Jul 2020 03:24:57 +0000 Subject: [PATCH 056/463] Translated using Weblate (Vietnamese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/vi/ --- src/strings/vi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/strings/vi.json b/src/strings/vi.json index 4e51ce8d2d..7ca2832ea8 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -825,5 +825,10 @@ "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.", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "LabelPasswordConfirm": "Mật khẩu (xác nhận):", + "LabelPassword": "Mật khẩu:", + "LabelNotificationEnabled": "Bật thông báo này", + "LabelNewsCategories": "", + "LabelStable": "Ổn Định" } From 54be93ff828fc3a773356175ca33c0a0036d3874 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2020 05:00:44 +0000 Subject: [PATCH 057/463] Bump @babel/core from 7.10.5 to 7.11.0 Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.10.5 to 7.11.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.11.0/packages/babel-core) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 79 ++++++++++++++++++++++++++++------------------------ 2 files changed, 44 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 38b7580ed9..e9bc9fe097 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "repository": "https://github.com/jellyfin/jellyfin-web", "license": "GPL-2.0-or-later", "devDependencies": { - "@babel/core": "^7.10.5", + "@babel/core": "^7.11.0", "@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-private-methods": "^7.10.1", "@babel/plugin-transform-modules-amd": "^7.10.5", diff --git a/yarn.lock b/yarn.lock index 7050a1d682..5116a25002 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,19 +18,19 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330" - integrity sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w== +"@babel/core@>=7.2.2", "@babel/core@>=7.9.0", "@babel/core@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.0.tgz#73b9c33f1658506887f767c26dae07798b30df76" + integrity sha512-mkLq8nwaXmDtFmRkQ8ED/eA2CnVw4zr7dCztKalZXBvdK5EeNUAesrrwUqjQEzFgomJssayzB0aqlOsP1vGLqg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.5" - "@babel/helper-module-transforms" "^7.10.5" + "@babel/generator" "^7.11.0" + "@babel/helper-module-transforms" "^7.11.0" "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.10.5" + "@babel/parser" "^7.11.0" "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.5" - "@babel/types" "^7.10.5" + "@babel/traverse" "^7.11.0" + "@babel/types" "^7.11.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -40,12 +40,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69" - integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig== +"@babel/generator@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" + integrity sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ== dependencies: - "@babel/types" "^7.10.5" + "@babel/types" "^7.11.0" jsesc "^2.5.1" source-map "^0.5.0" @@ -150,17 +150,17 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz#120c271c0b3353673fcdfd8c053db3c544a260d6" - integrity sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA== +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" + integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== dependencies: "@babel/helper-module-imports" "^7.10.4" "@babel/helper-replace-supers" "^7.10.4" "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" "@babel/template" "^7.10.4" - "@babel/types" "^7.10.5" + "@babel/types" "^7.11.0" lodash "^4.17.19" "@babel/helper-optimise-call-expression@^7.10.4": @@ -218,6 +218,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" @@ -251,10 +258,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" - integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== +"@babel/parser@^7.10.4", "@babel/parser@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.0.tgz#a9d7e11aead25d3b422d17b2c6502c8dddef6a5d" + integrity sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw== "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.4" @@ -779,25 +786,25 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/traverse@^7.10.4", "@babel/traverse@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" - integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== +"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" + integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.5" + "@babel/generator" "^7.11.0" "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.5" - "@babel/types" "^7.10.5" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.11.0" + "@babel/types" "^7.11.0" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.4.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" - integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== +"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.4.4": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" + integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== dependencies: "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.19" From cf06ac3e11eb924fa99a33b623d53e2a9c0defeb Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2020 07:11:07 +0000 Subject: [PATCH 058/463] Bump @babel/preset-env from 7.10.4 to 7.11.0 Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.10.4 to 7.11.0. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.11.0/packages/babel-preset-env) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 95 ++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 70 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 4a91e202a8..a6367e26f0 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "@babel/plugin-proposal-private-methods": "^7.10.1", "@babel/plugin-transform-modules-amd": "^7.10.5", "@babel/polyfill": "^7.8.7", - "@babel/preset-env": "^7.10.3", + "@babel/preset-env": "^7.11.0", "autoprefixer": "^9.8.6", "babel-eslint": "^11.0.0-beta.2", "babel-loader": "^8.0.6", diff --git a/yarn.lock b/yarn.lock index 3e785bbd7f..22240c09b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,10 +9,10 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.4.tgz#706a6484ee6f910b719b696a9194f8da7d7ac241" - integrity sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw== +"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" + integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== dependencies: browserslist "^4.12.0" invariant "^2.2.4" @@ -170,7 +170,7 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== @@ -211,6 +211,13 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" + integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== + dependencies: + "@babel/types" "^7.11.0" + "@babel/helper-split-export-declaration@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" @@ -288,6 +295,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" +"@babel/plugin-proposal-export-namespace-from@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" + integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-json-strings@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" @@ -296,6 +311,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" +"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" + integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" @@ -312,10 +335,10 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" - integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== +"@babel/plugin-proposal-object-rest-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" + integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" @@ -329,12 +352,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" - integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== +"@babel/plugin-proposal-optional-chaining@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" + integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" "@babel/plugin-proposal-private-methods@^7.10.1", "@babel/plugin-proposal-private-methods@^7.10.4": @@ -374,6 +398,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -381,6 +412,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" @@ -629,12 +667,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-spread@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" - integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== +"@babel/plugin-transform-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" + integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-transform-sticky-regex@^7.10.4": version "7.10.4" @@ -682,30 +721,34 @@ core-js "^2.6.5" regenerator-runtime "^0.13.4" -"@babel/preset-env@^7.10.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" - integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== +"@babel/preset-env@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.0.tgz#860ee38f2ce17ad60480c2021ba9689393efb796" + integrity sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg== dependencies: - "@babel/compat-data" "^7.10.4" + "@babel/compat-data" "^7.11.0" "@babel/helper-compilation-targets" "^7.10.4" "@babel/helper-module-imports" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-async-generator-functions" "^7.10.4" "@babel/plugin-proposal-class-properties" "^7.10.4" "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-export-namespace-from" "^7.10.4" "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.11.0" "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.11.0" "@babel/plugin-proposal-private-methods" "^7.10.4" "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-syntax-class-properties" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" @@ -738,14 +781,14 @@ "@babel/plugin-transform-regenerator" "^7.10.4" "@babel/plugin-transform-reserved-words" "^7.10.4" "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.10.4" + "@babel/plugin-transform-spread" "^7.11.0" "@babel/plugin-transform-sticky-regex" "^7.10.4" "@babel/plugin-transform-template-literals" "^7.10.4" "@babel/plugin-transform-typeof-symbol" "^7.10.4" "@babel/plugin-transform-unicode-escapes" "^7.10.4" "@babel/plugin-transform-unicode-regex" "^7.10.4" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.10.4" + "@babel/types" "^7.11.0" browserslist "^4.12.0" core-js-compat "^3.6.2" invariant "^2.2.2" From 7056e829e22011ac14c4a64f6d7440c44fc1ef6c Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 31 Jul 2020 10:01:51 +0200 Subject: [PATCH 059/463] Migrate to new babel-eslint package --- .eslintrc.js | 3 ++- package.json | 3 ++- yarn.lock | 51 ++++++++++++++++++++++++++++++++++++++------------- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 765db89daa..0288105bfd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,7 @@ module.exports = { root: true, plugins: [ + '@babel', 'promise', 'import', 'eslint-comments' @@ -53,7 +54,7 @@ module.exports = { files: [ './src/**/*.js' ], - parser: 'babel-eslint', + parser: '@babel/eslint-parser', env: { node: false, amd: true, diff --git a/package.json b/package.json index a6367e26f0..de2fc8fc3e 100644 --- a/package.json +++ b/package.json @@ -6,13 +6,14 @@ "license": "GPL-2.0-or-later", "devDependencies": { "@babel/core": "^7.11.0", + "@babel/eslint-parser": "^7.11.0", + "@babel/eslint-plugin": "^7.11.0", "@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-private-methods": "^7.10.1", "@babel/plugin-transform-modules-amd": "^7.10.5", "@babel/polyfill": "^7.8.7", "@babel/preset-env": "^7.11.0", "autoprefixer": "^9.8.6", - "babel-eslint": "^11.0.0-beta.2", "babel-loader": "^8.0.6", "browser-sync": "^2.26.12", "copy-webpack-plugin": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index 22240c09b9..fdba5328dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,6 +40,22 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/eslint-parser@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.11.0.tgz#b123924edd44508782c030066c926f1b807151cd" + integrity sha512-dJDM2Pc01D9TwKL3Mmz2xgVF9X953RBHq9H4gywbN1q8MrfvXmNHfsCt06vvByBVQqm+9WxMs+doEH/R09TwWQ== + dependencies: + eslint-scope "5.1.0" + eslint-visitor-keys "^1.3.0" + semver "^6.3.0" + +"@babel/eslint-plugin@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/eslint-plugin/-/eslint-plugin-7.11.0.tgz#55d5b6bd29859cabce152f16d01b3a8150d5b295" + integrity sha512-+gfPM0/T6d25jKBgmxWp38W0jqRs16Vt7DPBxGOcnN/7nS2A/6QoaXOYEaccvWS5a9UpWlMIAylivp6UtH8/sQ== + dependencies: + eslint-rule-composer "^0.3.0" + "@babel/generator@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" @@ -1697,15 +1713,6 @@ axios@0.19.0: follow-redirects "1.5.10" is-buffer "^2.0.2" -babel-eslint@^11.0.0-beta.2: - version "11.0.0-beta.2" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-11.0.0-beta.2.tgz#de1f06795aa0d8cedcf6ac943e63056f5b4a7048" - integrity sha512-D2tunrOu04XloEdU2XVUminUu25FILlGruZmffqH5OSnLDhCheKNvUoM1ihrexdUvhizlix8bjqRnsss4V/UIQ== - dependencies: - eslint-scope "5.0.0" - eslint-visitor-keys "^1.1.0" - semver "^6.3.0" - babel-loader@^8.0.6: version "8.1.0" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" @@ -4002,10 +4009,15 @@ eslint-plugin-promise@^4.2.1: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== -eslint-scope@5.0.0, eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" + integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== + +eslint-scope@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" @@ -4018,6 +4030,14 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-utils@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" @@ -4030,6 +4050,11 @@ eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + eslint@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" From e44534140599aef02139145d8a36f847950cdbf5 Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 09:47:58 +0100 Subject: [PATCH 060/463] Update src/components/favoriteitems.js Co-authored-by: dkanada --- src/components/favoriteitems.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/favoriteitems.js b/src/components/favoriteitems.js index 056022fa88..dde2e5f1c5 100644 --- a/src/components/favoriteitems.js +++ b/src/components/favoriteitems.js @@ -231,7 +231,7 @@ import 'emby-itemscontainer'; } export default { - render: loadSection + render: loadSections }; /* eslint-enable indent */ From 5fb29b77a8cdec89bd27342e10c3d5f2a7ae84ca Mon Sep 17 00:00:00 2001 From: Cyrus Boadway Date: Fri, 31 Jul 2020 11:15:27 +0100 Subject: [PATCH 061/463] Consider Meta Key as a modifier In a previous commit, number seek navigation was disabled when the ALT and CTRL modifiers were active. Macs allow tab switching with the COMMAND key and a number. This commit excludes meta key modifiers (COMMAND and WINDOWS) key. --- src/controllers/playback/video/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 5a22ebf285..0413b377c3 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1134,7 +1134,7 @@ import 'css!assets/css/videoosd'; clickedElement = e.target; const key = keyboardnavigation.getKeyName(e); - const isKeyModified = e.ctrlKey || e.altKey; + const isKeyModified = e.ctrlKey || e.altKey || e.metaKey; if (!currentVisibleMenu && 32 === e.keyCode) { playbackManager.playPause(currentPlayer); From 116e73e5606a47da15c2cacb74f829f02c24924d Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 11:30:02 +0100 Subject: [PATCH 062/463] Remove unused vars --- src/controllers/hometab.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/controllers/hometab.js b/src/controllers/hometab.js index 4b7ddee057..d834e3e233 100644 --- a/src/controllers/hometab.js +++ b/src/controllers/hometab.js @@ -1,8 +1,6 @@ import * as userSettings from 'userSettings'; import loading from 'loading'; import connectionManager from 'connectionManager'; -import appHost from 'apphost'; -import layoutManager from 'layoutManager'; import focusManager from 'focusManager'; import homeSections from 'homeSections'; import 'emby-itemscontainer'; From 642e2624e5745252dac927d394b95185203bc235 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 30 Jul 2020 16:05:34 +0200 Subject: [PATCH 063/463] Add no-yoda rule to ESLint config --- .eslintrc.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 765db89daa..4ab7ef075d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -46,7 +46,8 @@ module.exports = { 'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }], 'semi': ['error'], 'space-before-blocks': ['error'], - 'space-infix-ops': 'error' + 'space-infix-ops': 'error', + 'yoda': 'error' }, overrides: [ { From 22a46ecea6da49273a55858bd4fd9947e61fc208 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 30 Jul 2020 16:07:13 +0200 Subject: [PATCH 064/463] Apply ESLint autofix for no-yoda rule --- src/components/activitylog.js | 6 +- src/components/apphost.js | 4 +- src/components/favoriteitems.js | 8 +- src/components/groupedcards.js | 2 +- .../imageOptionsEditor/imageOptionsEditor.js | 2 +- .../libraryoptionseditor.js | 6 +- .../mediaLibraryEditor/mediaLibraryEditor.js | 6 +- src/components/remotecontrol/remotecontrol.js | 42 ++-- src/components/tvproviders/schedulesdirect.js | 4 +- src/components/tvproviders/xmltv.js | 4 +- src/components/viewContainer.js | 24 +- src/controllers/dashboard/dashboard.js | 6 +- src/controllers/dashboard/dlna/profile.js | 46 ++-- src/controllers/dashboard/dlna/profiles.js | 6 +- src/controllers/dashboard/encodingsettings.js | 6 +- src/controllers/dashboard/librarydisplay.js | 4 +- src/controllers/dashboard/mediaLibrary.js | 4 +- src/controllers/dashboard/networking.js | 4 +- .../notifications/notification/index.js | 2 +- .../dashboard/plugins/available/index.js | 8 +- .../dashboard/scheduledtasks/scheduledtask.js | 6 +- src/controllers/dashboard/users/useredit.js | 6 +- .../dashboard/users/userlibraryaccess.js | 6 +- .../dashboard/users/userparentalcontrol.js | 6 +- .../dashboard/users/userpasswordpage.js | 2 +- .../dashboard/users/userprofilespage.js | 2 +- src/controllers/favorites.js | 6 +- src/controllers/home.js | 2 +- src/controllers/itemDetails/index.js | 162 ++++++------- src/controllers/list.js | 226 +++++++++--------- src/controllers/livetv/livetvsuggested.js | 16 +- src/controllers/livetvtuner.js | 20 +- src/controllers/movies/moviecollections.js | 2 +- src/controllers/movies/moviegenres.js | 4 +- src/controllers/music/musicalbums.js | 2 +- src/controllers/music/musicartists.js | 2 +- src/controllers/music/musicrecommended.js | 2 +- src/controllers/playback/video/index.js | 70 +++--- .../session/forgotPassword/index.js | 6 +- src/controllers/shows/episodes.js | 2 +- src/controllers/shows/tvgenres.js | 4 +- src/controllers/shows/tvshows.js | 2 +- src/plugins/htmlVideoPlayer/plugin.js | 2 +- src/scripts/itembynamedetailpage.js | 18 +- src/scripts/libraryBrowser.js | 4 +- src/scripts/libraryMenu.js | 24 +- src/scripts/playlists.js | 2 +- src/scripts/site.js | 78 +++--- src/scripts/themeLoader.js | 2 +- 49 files changed, 440 insertions(+), 440 deletions(-) diff --git a/src/components/activitylog.js b/src/components/activitylog.js index 9834255003..ab489a3f31 100644 --- a/src/components/activitylog.js +++ b/src/components/activitylog.js @@ -16,7 +16,7 @@ import 'listViewStyle'; let color = '#00a4dc'; let icon = 'notifications'; - if ('Error' == entry.Severity || 'Fatal' == entry.Severity || 'Warn' == entry.Severity) { + if (entry.Severity == 'Error' || entry.Severity == 'Fatal' || entry.Severity == 'Warn') { color = '#cc0000'; icon = 'notification_important'; } @@ -60,13 +60,13 @@ import 'listViewStyle'; } function reloadData(instance, elem, apiClient, startIndex, limit) { - if (null == startIndex) { + if (startIndex == null) { startIndex = parseInt(elem.getAttribute('data-activitystartindex') || '0'); } limit = limit || parseInt(elem.getAttribute('data-activitylimit') || '7'); const minDate = new Date(); - const hasUserId = 'false' !== elem.getAttribute('data-useractivity'); + const hasUserId = elem.getAttribute('data-useractivity') !== 'false'; // TODO: Use date-fns if (hasUserId) { diff --git a/src/components/apphost.js b/src/components/apphost.js index e7d5bbc2f4..8a5581d817 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -47,7 +47,7 @@ define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'g profile = window.NativeShell.AppHost.getDeviceProfile(profileBuilder); } else { var builderOpts = getBaseProfileOptions(item); - builderOpts.enableSsaRender = (item && !options.isRetry && 'allcomplexformats' !== appSettings.get('subtitleburnin')); + builderOpts.enableSsaRender = (item && !options.isRetry && appSettings.get('subtitleburnin') !== 'allcomplexformats'); profile = profileBuilder(builderOpts); } @@ -370,7 +370,7 @@ define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'g return window.NativeShell.AppHost.supports(command); } - return -1 !== supportedFeatures.indexOf(command.toLowerCase()); + return supportedFeatures.indexOf(command.toLowerCase()) !== -1; }, preferVisualCards: browser.android || browser.chrome, getSyncProfile: getSyncProfile, diff --git a/src/components/favoriteitems.js b/src/components/favoriteitems.js index 358bf04112..43b20dd198 100644 --- a/src/components/favoriteitems.js +++ b/src/components/favoriteitems.js @@ -120,7 +120,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad var promise; - if ('MusicArtist' === section.types) { + if (section.types === 'MusicArtist') { promise = ApiClient.getArtists(userId, options); } else { options.IncludeItemTypes = section.types; @@ -160,7 +160,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad preferThumb: section.preferThumb, shape: section.shape, centerText: section.centerText && !cardLayout, - overlayText: false !== section.overlayText, + overlayText: section.overlayText !== false, showTitle: section.showTitle, showParentTitle: section.showParentTitle, scalable: true, @@ -192,7 +192,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad if (types) { sections = sections.filter(function (s) { - return -1 !== types.indexOf(s.id); + return types.indexOf(s.id) !== -1; }); } @@ -215,7 +215,7 @@ define(['loading', 'libraryBrowser', 'cardBuilder', 'dom', 'apphost', 'imageLoad for (i = 0, length = sections.length; i < length; i++) { var section = sections[i]; elem = page.querySelector('.section' + section.id); - promises.push(loadSection(elem, userId, topParentId, section, 1 === sections.length)); + promises.push(loadSection(elem, userId, topParentId, section, sections.length === 1)); } Promise.all(promises).then(function () { diff --git a/src/components/groupedcards.js b/src/components/groupedcards.js index 8ac3cc799c..3361db5f02 100644 --- a/src/components/groupedcards.js +++ b/src/components/groupedcards.js @@ -21,7 +21,7 @@ import connectionManager from 'connectionManager'; if (!actionableParent || actionableParent.classList.contains('cardContent')) { apiClient.getJSON(apiClient.getUrl('Users/' + userId + '/Items/Latest', options)).then(function (items) { - if (1 === items.length) { + if (items.length === 1) { return void appRouter.showItem(items[0]); } diff --git a/src/components/imageOptionsEditor/imageOptionsEditor.js b/src/components/imageOptionsEditor/imageOptionsEditor.js index 6660ecf74c..41fe9b4c94 100644 --- a/src/components/imageOptionsEditor/imageOptionsEditor.js +++ b/src/components/imageOptionsEditor/imageOptionsEditor.js @@ -16,7 +16,7 @@ import 'emby-input'; return { Type: type, MinWidth: 0, - Limit: 'Primary' === type ? 1 : 0 + Limit: type === 'Primary' ? 1 : 0 }; } diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index a6256de24c..ab193c264e 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -219,7 +219,7 @@ import 'emby-input'; html += '
'; html += '

' + globalize.translate('HeaderTypeImageFetchers', availableTypeOptions.Type) + '

'; const supportedImageTypes = availableTypeOptions.SupportedImageTypes || []; - if (supportedImageTypes.length > 1 || 1 === supportedImageTypes.length && 'Primary' !== supportedImageTypes[0]) { + if (supportedImageTypes.length > 1 || supportedImageTypes.length === 1 && supportedImageTypes[0] !== 'Primary') { html += ''; } html += '
'; @@ -362,7 +362,7 @@ import 'emby-input'; TypeOptions: [] }; currentAvailableOptions = null; - const isNewLibrary = null === libraryOptions; + const isNewLibrary = libraryOptions === null; isNewLibrary && parent.classList.add('newlibrary'); const response = await fetch('components/libraryoptionseditor/libraryoptionseditor.template.html'); const template = await response.text(); @@ -578,7 +578,7 @@ import 'emby-input'; parent.querySelector('#chkSkipIfAudioTrackPresent').checked = options.SkipSubtitlesIfAudioTrackMatches; parent.querySelector('#chkRequirePerfectMatch').checked = options.RequirePerfectSubtitleMatch; Array.prototype.forEach.call(parent.querySelectorAll('.chkMetadataSaver'), elem => { - elem.checked = options.MetadataSavers ? options.MetadataSavers.includes(elem.getAttribute('data-pluginname')) : 'true' === elem.getAttribute('data-defaultenabled'); + elem.checked = options.MetadataSavers ? options.MetadataSavers.includes(elem.getAttribute('data-pluginname')) : elem.getAttribute('data-defaultenabled') === 'true'; }); Array.prototype.forEach.call(parent.querySelectorAll('.chkSubtitleLanguage'), elem => { elem.checked = !!options.SubtitleDownloadLanguages && options.SubtitleDownloadLanguages.includes(elem.getAttribute('data-lang')); diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js index 1cee6984d9..b04f632055 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js @@ -98,8 +98,8 @@ import 'flexStyles'; if (listItem) { const index = parseInt(listItem.getAttribute('data-index')); const pathInfos = (currentOptions.library.LibraryOptions || {}).PathInfos || []; - const pathInfo = null == index ? {} : pathInfos[index] || {}; - const originalPath = pathInfo.Path || (null == index ? null : currentOptions.library.Locations[index]); + const pathInfo = index == null ? {} : pathInfos[index] || {}; + const originalPath = pathInfo.Path || (index == null ? null : currentOptions.library.Locations[index]); const btnRemovePath = dom.parentWithClass(e.target, 'btnRemovePath'); if (btnRemovePath) { @@ -171,7 +171,7 @@ import 'flexStyles'; const picker = new directoryBrowser(); picker.show({ enableNetworkSharePath: true, - pathReadOnly: null != originalPath, + pathReadOnly: originalPath != null, path: originalPath, networkSharePath: networkPath, callback: function (path, networkSharePath) { diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index db2bed36a7..ca1657605b 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -48,7 +48,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL menuItems.unshift({ id: -1, name: globalize.translate('ButtonOff'), - selected: null == currentIndex + selected: currentIndex == null }); require(['actionsheet'], function (actionsheet) { @@ -69,18 +69,18 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL } function seriesImageUrl(item, options) { - if ('Episode' !== item.Type) { + if (item.Type !== 'Episode') { return null; } options = options || {}; options.type = options.type || 'Primary'; - if ('Primary' === options.type && item.SeriesPrimaryImageTag) { + if (options.type === 'Primary' && item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } - if ('Thumb' === options.type) { + if (options.type === 'Thumb') { if (item.SeriesThumbImageTag) { options.tag = item.SeriesThumbImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); @@ -210,7 +210,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL backdrop.setBackdrops([item]); apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) { var userData = fullItem.UserData || {}; - var likes = null == userData.Likes ? '' : userData.Likes; + var likes = userData.Likes == null ? '' : userData.Likes; context.querySelector('.nowPlayingPageUserDataButtonsTitle').innerHTML = ''; context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = ''; }); @@ -251,7 +251,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL var all = context.querySelectorAll('.btnCommand'); for (var i = 0, length = all.length; i < length; i++) { - var enableButton = -1 !== commands.indexOf(all[i].getAttribute('data-command')); + var enableButton = commands.indexOf(all[i].getAttribute('data-command')) !== -1; all[i].disabled = !enableButton; } } @@ -278,7 +278,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL currentPlayerSupportedCommands = supportedCommands; var playState = state.PlayState || {}; var isSupportedCommands = supportedCommands.includes('DisplayMessage') || supportedCommands.includes('SendString') || supportedCommands.includes('Select'); - buttonVisible(context.querySelector('.btnToggleFullscreen'), item && 'Video' == item.MediaType && supportedCommands.includes('ToggleFullscreen')); + buttonVisible(context.querySelector('.btnToggleFullscreen'), item && item.MediaType == 'Video' && supportedCommands.includes('ToggleFullscreen')); updateAudioTracksDisplay(player, context); updateSubtitleTracksDisplay(player, context); @@ -306,15 +306,15 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL context.querySelector('.remoteControlSection').classList.add('hide'); } - buttonVisible(context.querySelector('.btnStop'), null != item); - buttonVisible(context.querySelector('.btnNextTrack'), null != item); - buttonVisible(context.querySelector('.btnPreviousTrack'), null != item); + buttonVisible(context.querySelector('.btnStop'), item != null); + buttonVisible(context.querySelector('.btnNextTrack'), item != null); + buttonVisible(context.querySelector('.btnPreviousTrack'), item != null); if (layoutManager.mobile) { buttonVisible(context.querySelector('.btnRewind'), false); buttonVisible(context.querySelector('.btnFastForward'), false); } else { - buttonVisible(context.querySelector('.btnRewind'), null != item); - buttonVisible(context.querySelector('.btnFastForward'), null != item); + buttonVisible(context.querySelector('.btnRewind'), item != null); + buttonVisible(context.querySelector('.btnFastForward'), item != null); } var positionSlider = context.querySelector('.nowPlayingPositionSlider'); @@ -325,15 +325,15 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL if (positionSlider && !positionSlider.dragging) { positionSlider.disabled = !playState.CanSeek; - var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks; + var isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null; positionSlider.setIsClear(isProgressClear); } - updatePlayPauseState(playState.IsPaused, null != item); + updatePlayPauseState(playState.IsPaused, item != null); updateTimeDisplay(playState.PositionTicks, item ? item.RunTimeTicks : null); updatePlayerVolumeState(context, playState.IsMuted, playState.VolumeLevel); - if (item && 'Video' == item.MediaType) { + if (item && item.MediaType == 'Video') { context.classList.remove('hideVideoButtons'); } else { context.classList.add('hideVideoButtons'); @@ -346,12 +346,12 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL function updateAudioTracksDisplay(player, context) { var supportedCommands = currentPlayerSupportedCommands; - buttonVisible(context.querySelector('.btnAudioTracks'), playbackManager.audioTracks(player).length > 1 && -1 != supportedCommands.indexOf('SetAudioStreamIndex')); + buttonVisible(context.querySelector('.btnAudioTracks'), playbackManager.audioTracks(player).length > 1 && supportedCommands.indexOf('SetAudioStreamIndex') != -1); } function updateSubtitleTracksDisplay(player, context) { var supportedCommands = currentPlayerSupportedCommands; - buttonVisible(context.querySelector('.btnSubtitles'), playbackManager.subtitleTracks(player).length && -1 != supportedCommands.indexOf('SetSubtitleStreamIndex')); + buttonVisible(context.querySelector('.btnSubtitles'), playbackManager.subtitleTracks(player).length && supportedCommands.indexOf('SetSubtitleStreamIndex') != -1); } function updateRepeatModeDisplay(repeatMode) { @@ -383,11 +383,11 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL var view = context; var supportedCommands = currentPlayerSupportedCommands; - if (-1 === supportedCommands.indexOf('Mute')) { + if (supportedCommands.indexOf('Mute') === -1) { showMuteButton = false; } - if (-1 === supportedCommands.indexOf('SetVolume')) { + if (supportedCommands.indexOf('SetVolume') === -1) { showVolumeSlider = false; } @@ -452,8 +452,8 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL } } - context.querySelector('.positionTime').innerHTML = null == positionTicks ? '--:--' : datetime.getDisplayRunningTime(positionTicks); - context.querySelector('.runtime').innerHTML = null != runtimeTicks ? datetime.getDisplayRunningTime(runtimeTicks) : '--:--'; + context.querySelector('.positionTime').innerHTML = positionTicks == null ? '--:--' : datetime.getDisplayRunningTime(positionTicks); + context.querySelector('.runtime').innerHTML = runtimeTicks != null ? datetime.getDisplayRunningTime(runtimeTicks) : '--:--'; } function getPlaylistItems(player) { diff --git a/src/components/tvproviders/schedulesdirect.js b/src/components/tvproviders/schedulesdirect.js index be1cdf575b..6f89702012 100644 --- a/src/components/tvproviders/schedulesdirect.js +++ b/src/components/tvproviders/schedulesdirect.js @@ -42,7 +42,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb for (var region in result) { var countries = result[region]; - if (countries.length && 'ZZZ' !== region) { + if (countries.length && region !== 'ZZZ') { for (i = 0, length = countries.length; i < length; i++) { countryList.push({ name: countries[i].fullName, @@ -237,7 +237,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'listViewStyle', 'emb var device = devices[i]; html += '
'; var enabledTuners = providerInfo.EnabledTuners || []; - var isChecked = providerInfo.EnableAllTuners || -1 !== enabledTuners.indexOf(device.Id); + var isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1; var checkedAttribute = isChecked ? ' checked' : ''; html += ''; html += '
'; diff --git a/src/components/tvproviders/xmltv.js b/src/components/tvproviders/xmltv.js index 054c5b640d..5c75a09cdd 100644 --- a/src/components/tvproviders/xmltv.js +++ b/src/components/tvproviders/xmltv.js @@ -84,7 +84,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi }).then(function (result) { loading.hide(); - if (false !== options.showConfirmation) { + if (options.showConfirmation !== false) { Dashboard.processServerConfigurationUpdateResult(); } @@ -118,7 +118,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-checkbox', 'emby-input', 'listVi var device = devices[i]; html += '
'; var enabledTuners = providerInfo.EnabledTuners || []; - var isChecked = providerInfo.EnableAllTuners || -1 !== enabledTuners.indexOf(device.Id); + var isChecked = providerInfo.EnableAllTuners || enabledTuners.indexOf(device.Id) !== -1; var checkedAttribute = isChecked ? ' checked' : ''; html += ''; html += '
'; diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index dbc493bc91..d1b0df6fbb 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -9,7 +9,7 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta var controllerUrl = view.getAttribute('data-controller'); if (controllerUrl) { - if (0 === controllerUrl.indexOf('__plugin/')) { + if (controllerUrl.indexOf('__plugin/') === 0) { controllerUrl = controllerUrl.substring('__plugin/'.length); } @@ -31,14 +31,14 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta function loadView(options) { if (!options.cancel) { var selected = selectedPageIndex; - var previousAnimatable = -1 === selected ? null : allPages[selected]; + var previousAnimatable = selected === -1 ? null : allPages[selected]; var pageIndex = selected + 1; if (pageIndex >= pageContainerCount) { pageIndex = 0; } - var isPluginpage = -1 !== options.url.toLowerCase().indexOf('/configurationpage'); + var isPluginpage = options.url.toLowerCase().indexOf('/configurationpage') !== -1; var newViewInfo = normalizeNewView(options, isPluginpage); var newView = newViewInfo.elem; var modulesToLoad = []; @@ -53,7 +53,7 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta var view = newView; - if ('string' == typeof view) { + if (typeof view == 'string') { view = document.createElement('div'); view.innerHTML = newView; } @@ -133,15 +133,15 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta function normalizeNewView(options, isPluginpage) { var viewHtml = options.view; - if (-1 === viewHtml.indexOf('data-role="page"')) { + if (viewHtml.indexOf('data-role="page"') === -1) { return viewHtml; } - var hasScript = -1 !== viewHtml.indexOf(''; - btnCssClass = session.ServerId && -1 !== session.SupportedCommands.indexOf('DisplayMessage') && session.DeviceId !== connectionManager.deviceId() ? '' : ' hide'; + btnCssClass = session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== connectionManager.deviceId() ? '' : ' hide'; html += ''; html += '
'; @@ -346,7 +346,7 @@ import 'emby-itemscontainer'; function renderRunningTasks(view, tasks) { let html = ''; tasks = tasks.filter(function (task) { - if ('Idle' != task.State) { + if (task.State != 'Idle') { return !task.IsHidden; } @@ -551,7 +551,7 @@ import 'emby-itemscontainer'; row.classList.remove('playingSession'); } - if (session.ServerId && -1 !== session.SupportedCommands.indexOf('DisplayMessage') && session.DeviceId !== connectionManager.deviceId()) { + if (session.ServerId && session.SupportedCommands.indexOf('DisplayMessage') !== -1 && session.DeviceId !== connectionManager.deviceId()) { row.querySelector('.btnSessionSendMessage').classList.remove('hide'); } else { row.querySelector('.btnSessionSendMessage').classList.add('hide'); diff --git a/src/controllers/dashboard/dlna/profile.js b/src/controllers/dashboard/dlna/profile.js index 2a4fbec37b..17dc9f78cb 100644 --- a/src/controllers/dashboard/dlna/profile.js +++ b/src/controllers/dashboard/dlna/profile.js @@ -29,7 +29,7 @@ import 'listViewStyle'; function renderProfile(page, profile, users) { $('#txtName', page).val(profile.Name); $('.chkMediaType', page).each(function () { - this.checked = -1 != (profile.SupportedMediaTypes || '').split(',').indexOf(this.getAttribute('data-value')); + this.checked = (profile.SupportedMediaTypes || '').split(',').indexOf(this.getAttribute('data-value')) != -1; }); $('#chkEnableAlbumArtInDidl', page).prop('checked', profile.EnableAlbumArtInDidl); $('#chkEnableSingleImageLimit', page).prop('checked', profile.EnableSingleAlbumArtLimit); @@ -111,7 +111,7 @@ import 'listViewStyle'; } function editIdentificationHeader(page, header) { - isSubProfileNew = null == header; + isSubProfileNew = header == null; header = header || {}; currentSubProfile = header; const popup = $('#identificationHeaderPopup', page); @@ -156,7 +156,7 @@ import 'listViewStyle'; } function editXmlDocumentAttribute(page, attribute) { - isSubProfileNew = null == attribute; + isSubProfileNew = attribute == null; attribute = attribute || {}; currentSubProfile = attribute; const popup = $('#xmlAttributePopup', page); @@ -204,7 +204,7 @@ import 'listViewStyle'; } function editSubtitleProfile(page, profile) { - isSubProfileNew = null == profile; + isSubProfileNew = profile == null; profile = profile || {}; currentSubProfile = profile; const popup = $('#subtitleProfilePopup', page); @@ -266,11 +266,11 @@ import 'listViewStyle'; html += ''; html += '

' + globalize.translate('ValueContainer', profile.Container || allText) + '

'; - if ('Video' == profile.Type) { + if (profile.Type == 'Video') { html += '

' + globalize.translate('ValueVideoCodec', profile.VideoCodec || allText) + '

'; html += '

' + globalize.translate('ValueAudioCodec', profile.AudioCodec || allText) + '

'; } else { - if ('Audio' == profile.Type) { + if (profile.Type == 'Audio') { html += '

' + globalize.translate('ValueCodec', profile.AudioCodec || allText) + '

'; } } @@ -298,7 +298,7 @@ import 'listViewStyle'; } function editDirectPlayProfile(page, directPlayProfile) { - isSubProfileNew = null == directPlayProfile; + isSubProfileNew = directPlayProfile == null; directPlayProfile = directPlayProfile || {}; currentSubProfile = directPlayProfile; const popup = $('#popupEditDirectPlayProfile', page); @@ -327,11 +327,11 @@ import 'listViewStyle'; html += '

Protocol: ' + (profile.Protocol || 'Http') + '

'; html += '

' + globalize.translate('ValueContainer', profile.Container || allText) + '

'; - if ('Video' == profile.Type) { + if (profile.Type == 'Video') { html += '

' + globalize.translate('ValueVideoCodec', profile.VideoCodec || allText) + '

'; html += '

' + globalize.translate('ValueAudioCodec', profile.AudioCodec || allText) + '

'; } else { - if ('Audio' == profile.Type) { + if (profile.Type == 'Audio') { html += '

' + globalize.translate('ValueCodec', profile.AudioCodec || allText) + '

'; } } @@ -354,7 +354,7 @@ import 'listViewStyle'; } function editTranscodingProfile(page, transcodingProfile) { - isSubProfileNew = null == transcodingProfile; + isSubProfileNew = transcodingProfile == null; transcodingProfile = transcodingProfile || {}; currentSubProfile = transcodingProfile; const popup = $('#transcodingProfilePopup', page); @@ -365,7 +365,7 @@ import 'listViewStyle'; $('#selectTranscodingProtocol', popup).val(transcodingProfile.Protocol || 'Http'); $('#chkEnableMpegtsM2TsMode', popup).prop('checked', transcodingProfile.EnableMpegtsM2TsMode || false); $('#chkEstimateContentLength', popup).prop('checked', transcodingProfile.EstimateContentLength || false); - $('#chkReportByteRangeRequests', popup).prop('checked', 'Bytes' == transcodingProfile.TranscodeSeekInfo); + $('#chkReportByteRangeRequests', popup).prop('checked', transcodingProfile.TranscodeSeekInfo == 'Bytes'); $('.radioTabButton:first', popup).trigger('click'); openPopup(popup[0]); } @@ -443,7 +443,7 @@ import 'listViewStyle'; } function editContainerProfile(page, containerProfile) { - isSubProfileNew = null == containerProfile; + isSubProfileNew = containerProfile == null; containerProfile = containerProfile || {}; currentSubProfile = containerProfile; const popup = $('#containerProfilePopup', page); @@ -515,7 +515,7 @@ import 'listViewStyle'; } function editCodecProfile(page, codecProfile) { - isSubProfileNew = null == codecProfile; + isSubProfileNew = codecProfile == null; codecProfile = codecProfile || {}; currentSubProfile = codecProfile; const popup = $('#codecProfilePopup', page); @@ -555,11 +555,11 @@ import 'listViewStyle'; html += '
'; html += '

' + globalize.translate('ValueContainer', profile.Container || allText) + '

'; - if ('Video' == profile.Type) { + if (profile.Type == 'Video') { html += '

' + globalize.translate('ValueVideoCodec', profile.VideoCodec || allText) + '

'; html += '

' + globalize.translate('ValueAudioCodec', profile.AudioCodec || allText) + '

'; } else { - if ('Audio' == profile.Type) { + if (profile.Type == 'Audio') { html += '

' + globalize.translate('ValueCodec', profile.AudioCodec || allText) + '

'; } } @@ -595,7 +595,7 @@ import 'listViewStyle'; } function editResponseProfile(page, responseProfile) { - isSubProfileNew = null == responseProfile; + isSubProfileNew = responseProfile == null; responseProfile = responseProfile || {}; currentSubProfile = responseProfile; const popup = $('#responseProfilePopup', page); @@ -703,26 +703,26 @@ import 'listViewStyle'; $('.radioTabButton', page).on('click', function () { $(this).siblings().removeClass('ui-btn-active'); $(this).addClass('ui-btn-active'); - const value = 'A' == this.tagName ? this.getAttribute('data-value') : this.value; + const value = this.tagName == 'A' ? this.getAttribute('data-value') : this.value; const elem = $('.' + value, page); elem.siblings('.tabContent').hide(); elem.show(); }); $('#selectDirectPlayProfileType', page).on('change', function () { - if ('Video' == this.value) { + if (this.value == 'Video') { $('#fldDirectPlayVideoCodec', page).show(); } else { $('#fldDirectPlayVideoCodec', page).hide(); } - if ('Photo' == this.value) { + if (this.value == 'Photo') { $('#fldDirectPlayAudioCodec', page).hide(); } else { $('#fldDirectPlayAudioCodec', page).show(); } }); $('#selectTranscodingProfileType', page).on('change', function () { - if ('Video' == this.value) { + if (this.value == 'Video') { $('#fldTranscodingVideoCodec', page).show(); $('#fldTranscodingProtocol', page).show(); $('#fldEnableMpegtsM2TsMode', page).show(); @@ -732,7 +732,7 @@ import 'listViewStyle'; $('#fldEnableMpegtsM2TsMode', page).hide(); } - if ('Photo' == this.value) { + if (this.value == 'Photo') { $('#fldTranscodingAudioCodec', page).hide(); $('#fldEstimateContentLength', page).hide(); $('#fldReportByteRangeRequests', page).hide(); @@ -743,13 +743,13 @@ import 'listViewStyle'; } }); $('#selectResponseProfileType', page).on('change', function () { - if ('Video' == this.value) { + if (this.value == 'Video') { $('#fldResponseProfileVideoCodec', page).show(); } else { $('#fldResponseProfileVideoCodec', page).hide(); } - if ('Photo' == this.value) { + if (this.value == 'Photo') { $('#fldResponseProfileAudioCodec', page).hide(); } else { $('#fldResponseProfileAudioCodec', page).show(); diff --git a/src/controllers/dashboard/dlna/profiles.js b/src/controllers/dashboard/dlna/profiles.js index 510128be4b..7fd3bdb525 100644 --- a/src/controllers/dashboard/dlna/profiles.js +++ b/src/controllers/dashboard/dlna/profiles.js @@ -18,13 +18,13 @@ import 'emby-button'; function renderUserProfiles(page, profiles) { renderProfiles(page, page.querySelector('.customProfiles'), profiles.filter(function (p) { - return 'User' == p.Type; + return p.Type == 'User'; })); } function renderSystemProfiles(page, profiles) { renderProfiles(page, page.querySelector('.systemProfiles'), profiles.filter(function (p) { - return 'System' == p.Type; + return p.Type == 'System'; })); } @@ -45,7 +45,7 @@ import 'emby-button'; html += '
'; html += '
'; - if ('User' == profile.Type) { + if (profile.Type == 'User') { html += ''; } diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index aac18360ac..9995577ba8 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -8,7 +8,7 @@ import libraryMenu from 'libraryMenu'; function loadPage(page, config, systemInfo) { Array.prototype.forEach.call(page.querySelectorAll('.chkDecodeCodec'), function (c) { - c.checked = -1 !== (config.HardwareDecodingCodecs || []).indexOf(c.getAttribute('data-codec')); + c.checked = (config.HardwareDecodingCodecs || []).indexOf(c.getAttribute('data-codec')) !== -1; }); page.querySelector('#chkDecodingColorDepth10Hevc').checked = config.EnableDecodingColorDepth10Hevc; page.querySelector('#chkDecodingColorDepth10Vp9').checked = config.EnableDecodingColorDepth10Vp9; @@ -107,7 +107,7 @@ import libraryMenu from 'libraryMenu'; value = value || ''; let any; Array.prototype.forEach.call(context.querySelectorAll('.chkDecodeCodec'), function (c) { - if (-1 === c.getAttribute('data-types').split(',').indexOf(value)) { + if (c.getAttribute('data-types').split(',').indexOf(value) === -1) { dom.parentWithTag(c, 'LABEL').classList.add('hide'); } else { dom.parentWithTag(c, 'LABEL').classList.remove('hide'); @@ -138,7 +138,7 @@ import libraryMenu from 'libraryMenu'; $(document).on('pageinit', '#encodingSettingsPage', function () { const page = this; page.querySelector('#selectVideoDecoder').addEventListener('change', function () { - if ('vaapi' == this.value) { + if (this.value == 'vaapi') { page.querySelector('.fldVaapiDevice').classList.remove('hide'); page.querySelector('#txtVaapiDevice').setAttribute('required', 'required'); } else { diff --git a/src/controllers/dashboard/librarydisplay.js b/src/controllers/dashboard/librarydisplay.js index 2269e19c44..bbc7e633d1 100644 --- a/src/controllers/dashboard/librarydisplay.js +++ b/src/controllers/dashboard/librarydisplay.js @@ -48,7 +48,7 @@ import 'emby-button'; ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult); }); ApiClient.getNamedConfiguration('metadata').then(function(config) { - config.UseFileCreationTimeForDateAdded = '1' === $('#selectDateAdded', form).val(); + config.UseFileCreationTimeForDateAdded = $('#selectDateAdded', form).val() === '1'; ApiClient.updateNamedConfiguration('metadata', config); }); @@ -61,7 +61,7 @@ import 'emby-button'; libraryMenu.setTabs('librarysetup', 1, getTabs); loadData(); ApiClient.getSystemInfo().then(function(info) { - if ('Windows' === info.OperatingSystem) { + if (info.OperatingSystem === 'Windows') { view.querySelector('.fldSaveMetadataHidden').classList.remove('hide'); } else { view.querySelector('.fldSaveMetadataHidden').classList.add('hide'); diff --git a/src/controllers/dashboard/mediaLibrary.js b/src/controllers/dashboard/mediaLibrary.js index 6694a28d0f..4fee65e674 100644 --- a/src/controllers/dashboard/mediaLibrary.js +++ b/src/controllers/dashboard/mediaLibrary.js @@ -156,7 +156,7 @@ import 'emby-itemrefreshindicator'; } function shouldRefreshLibraryAfterChanges(page) { - return 'mediaLibraryPage' === page.id; + return page.id === 'mediaLibraryPage'; } function reloadVirtualFolders(page, virtualFolders) { @@ -286,7 +286,7 @@ import 'emby-itemrefreshindicator'; if (hasCardImageContainer) { html += '
'; - html += '
'; + html += '
'; html += '
'; html += '
'; } diff --git a/src/controllers/dashboard/networking.js b/src/controllers/dashboard/networking.js index 5cae08d2fa..a7f3076056 100644 --- a/src/controllers/dashboard/networking.js +++ b/src/controllers/dashboard/networking.js @@ -30,7 +30,7 @@ import 'emby-select'; }).filter(function (s) { return s.length > 0; }); - config.IsRemoteIPFilterBlacklist = 'blacklist' === form.querySelector('#selectExternalAddressFilterMode').value; + config.IsRemoteIPFilterBlacklist = form.querySelector('#selectExternalAddressFilterMode').value === 'blacklist'; config.PublicPort = form.querySelector('#txtPublicPort').value; config.PublicHttpsPort = form.querySelector('#txtPublicHttpsPort').value; config.HttpServerPortNumber = form.querySelector('#txtPortNumber').value; @@ -110,7 +110,7 @@ import 'emby-select'; page.querySelector('#txtLanNetworks').value = (config.LocalNetworkSubnets || []).join(', '); page.querySelector('#txtExternalAddressFilter').value = (config.RemoteIPFilter || []).join(', '); page.querySelector('#selectExternalAddressFilterMode').value = config.IsRemoteIPFilterBlacklist ? 'blacklist' : 'whitelist'; - page.querySelector('#chkRemoteAccess').checked = null == config.EnableRemoteAccess || config.EnableRemoteAccess; + page.querySelector('#chkRemoteAccess').checked = config.EnableRemoteAccess == null || config.EnableRemoteAccess; page.querySelector('#txtHttpsPort').value = config.HttpsPortNumber; page.querySelector('#chkEnableHttps').checked = config.EnableHttps; page.querySelector('#chkRequireHttps').checked = config.RequireHttps; diff --git a/src/controllers/dashboard/notifications/notification/index.js b/src/controllers/dashboard/notifications/notification/index.js index af9301c13f..edecd5d853 100644 --- a/src/controllers/dashboard/notifications/notification/index.js +++ b/src/controllers/dashboard/notifications/notification/index.js @@ -106,7 +106,7 @@ define(['jQuery', 'emby-checkbox'], function ($) { $(document).on('pageinit', '#notificationSettingPage', function () { var page = this; $('#selectUsers', page).on('change', function () { - if ('Custom' == this.value) { + if (this.value == 'Custom') { $('.selectCustomUsers', page).show(); } else { $('.selectCustomUsers', page).hide(); diff --git a/src/controllers/dashboard/plugins/available/index.js b/src/controllers/dashboard/plugins/available/index.js index 1f202d6ff6..e27a3298da 100644 --- a/src/controllers/dashboard/plugins/available/index.js +++ b/src/controllers/dashboard/plugins/available/index.js @@ -17,13 +17,13 @@ define(['loading', 'libraryMenu', 'globalize', 'cardStyle', 'emby-button', 'emby function getHeaderText(category) { category = category.replace(' ', ''); - if ('Channel' === category) { + if (category === 'Channel') { category = 'Channels'; - } else if ('Theme' === category) { + } else if (category === 'Theme') { category = 'Themes'; - } else if ('LiveTV' === category) { + } else if (category === 'LiveTV') { category = 'HeaderLiveTV'; - } else if ('ScreenSaver' === category) { + } else if (category === 'ScreenSaver') { category = 'HeaderScreenSavers'; } diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtask.js b/src/controllers/dashboard/scheduledtasks/scheduledtask.js index 28a21eb630..7944eb8a60 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtask.js +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.js @@ -84,16 +84,16 @@ import 'emby-select'; }, // TODO: Replace this mess with date-fns and remove datetime completely getTriggerFriendlyName: function (trigger) { - if ('DailyTrigger' == trigger.Type) { + if (trigger.Type == 'DailyTrigger') { return globalize.translate('DailyAt', ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks)); } - if ('WeeklyTrigger' == trigger.Type) { + if (trigger.Type == 'WeeklyTrigger') { // TODO: The day of week isn't localised as well return globalize.translate('WeeklyAt', trigger.DayOfWeek, ScheduledTaskPage.getDisplayTime(trigger.TimeOfDayTicks)); } - if ('SystemEventTrigger' == trigger.Type && 'WakeFromSleep' == trigger.SystemEvent) { + if (trigger.Type == 'SystemEventTrigger' && trigger.SystemEvent == 'WakeFromSleep') { return globalize.translate('OnWakeFromSleep'); } diff --git a/src/controllers/dashboard/users/useredit.js b/src/controllers/dashboard/users/useredit.js index 866e940e54..796b70c704 100644 --- a/src/controllers/dashboard/users/useredit.js +++ b/src/controllers/dashboard/users/useredit.js @@ -14,13 +14,13 @@ import globalize from 'globalize'; let html = ''; for (const folder of mediaFolders) { - isChecked = user.Policy.EnableContentDeletion || -1 != user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id); + isChecked = user.Policy.EnableContentDeletion || user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id) != -1; checkedAttribute = isChecked ? ' checked="checked"' : ''; html += ''; } for (const folder of channelsResult.Items) { - isChecked = user.Policy.EnableContentDeletion || -1 != user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id); + isChecked = user.Policy.EnableContentDeletion || user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id) != -1; checkedAttribute = isChecked ? ' checked="checked"' : ''; html += ''; } @@ -96,7 +96,7 @@ import globalize from 'globalize'; $('#chkEnableVideoPlaybackTranscoding', page).prop('checked', user.Policy.EnableVideoPlaybackTranscoding); $('#chkEnableVideoPlaybackRemuxing', page).prop('checked', user.Policy.EnablePlaybackRemuxing); $('#chkForceRemoteSourceTranscoding', page).prop('checked', user.Policy.ForceRemoteSourceTranscoding); - $('#chkRemoteAccess', page).prop('checked', null == user.Policy.EnableRemoteAccess || user.Policy.EnableRemoteAccess); + $('#chkRemoteAccess', page).prop('checked', user.Policy.EnableRemoteAccess == null || user.Policy.EnableRemoteAccess); $('#chkEnableSyncTranscoding', page).prop('checked', user.Policy.EnableSyncTranscoding); $('#chkEnableConversion', page).prop('checked', user.Policy.EnableMediaConversion || false); $('#chkEnableSharing', page).prop('checked', user.Policy.EnablePublicSharing); diff --git a/src/controllers/dashboard/users/userlibraryaccess.js b/src/controllers/dashboard/users/userlibraryaccess.js index df42733f0c..d32c7312b7 100644 --- a/src/controllers/dashboard/users/userlibraryaccess.js +++ b/src/controllers/dashboard/users/userlibraryaccess.js @@ -18,7 +18,7 @@ import globalize from 'globalize'; for (let i = 0, length = mediaFolders.length; i < length; i++) { const folder = mediaFolders[i]; - const isChecked = user.Policy.EnableAllFolders || -1 != user.Policy.EnabledFolders.indexOf(folder.Id); + const isChecked = user.Policy.EnableAllFolders || user.Policy.EnabledFolders.indexOf(folder.Id) != -1; const checkedAttribute = isChecked ? ' checked="checked"' : ''; html += ''; } @@ -37,7 +37,7 @@ import globalize from 'globalize'; for (let i = 0, length = channels.length; i < length; i++) { const folder = channels[i]; - const isChecked = user.Policy.EnableAllChannels || -1 != user.Policy.EnabledChannels.indexOf(folder.Id); + const isChecked = user.Policy.EnableAllChannels || user.Policy.EnabledChannels.indexOf(folder.Id) != -1; const checkedAttribute = isChecked ? ' checked="checked"' : ''; html += ''; } @@ -61,7 +61,7 @@ import globalize from 'globalize'; for (let i = 0, length = devices.length; i < length; i++) { const device = devices[i]; - const checkedAttribute = user.Policy.EnableAllDevices || -1 != user.Policy.EnabledDevices.indexOf(device.Id) ? ' checked="checked"' : ''; + const checkedAttribute = user.Policy.EnableAllDevices || user.Policy.EnabledDevices.indexOf(device.Id) != -1 ? ' checked="checked"' : ''; html += ''; } diff --git a/src/controllers/dashboard/users/userparentalcontrol.js b/src/controllers/dashboard/users/userparentalcontrol.js index e146aac567..0c74c2c018 100644 --- a/src/controllers/dashboard/users/userparentalcontrol.js +++ b/src/controllers/dashboard/users/userparentalcontrol.js @@ -67,7 +67,7 @@ import 'paper-icon-button-light'; for (let i = 0, length = items.length; i < length; i++) { const item = items[i]; - const checkedAttribute = -1 != user.Policy.BlockUnratedItems.indexOf(item.value) ? ' checked="checked"' : ''; + const checkedAttribute = user.Policy.BlockUnratedItems.indexOf(item.value) != -1 ? ' checked="checked"' : ''; html += ''; } @@ -201,7 +201,7 @@ import 'paper-icon-button-light'; }).then(function (updatedSchedule) { const schedules = getSchedulesFromPage(page); - if (-1 == index) { + if (index == -1) { index = schedules.length; } @@ -234,7 +234,7 @@ import 'paper-icon-button-light'; }).then(function (value) { const tags = getBlockedTagsFromPage(page); - if (-1 == tags.indexOf(value)) { + if (tags.indexOf(value) == -1) { tags.push(value); loadBlockedTags(page, tags); } diff --git a/src/controllers/dashboard/users/userpasswordpage.js b/src/controllers/dashboard/users/userpasswordpage.js index d694bb2c5d..db91c7bce7 100644 --- a/src/controllers/dashboard/users/userpasswordpage.js +++ b/src/controllers/dashboard/users/userpasswordpage.js @@ -14,7 +14,7 @@ import 'emby-button'; let showPasswordSection = true; let showLocalAccessSection = false; - if ('Guest' == user.ConnectLinkType) { + if (user.ConnectLinkType == 'Guest') { page.querySelector('.localAccessSection').classList.add('hide'); showPasswordSection = false; } else if (user.HasConfiguredPassword) { diff --git a/src/controllers/dashboard/users/userprofilespage.js b/src/controllers/dashboard/users/userprofilespage.js index 824baef4cf..add90d0a0b 100644 --- a/src/controllers/dashboard/users/userprofilespage.js +++ b/src/controllers/dashboard/users/userprofilespage.js @@ -129,7 +129,7 @@ import 'flexStyles'; html += '
'; html += '
'; const lastSeen = getLastSeenText(user.LastActivityDate); - html += '' != lastSeen ? lastSeen : ' '; + html += lastSeen != '' ? lastSeen : ' '; html += '
'; html += '
'; html += '
'; diff --git a/src/controllers/favorites.js b/src/controllers/favorites.js index 51c4301a71..74cf186729 100644 --- a/src/controllers/favorites.js +++ b/src/controllers/favorites.js @@ -147,11 +147,11 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap options.Limit = 20; var userId = apiClient.getCurrentUserId(); - if ('MusicArtist' === section.types) { + if (section.types === 'MusicArtist') { return apiClient.getArtists(userId, options); } - if ('Person' === section.types) { + if (section.types === 'Person') { return apiClient.getPeople(userId, options); } @@ -198,7 +198,7 @@ define(['appRouter', 'cardBuilder', 'dom', 'globalize', 'connectionManager', 'ap preferThumb: section.preferThumb, shape: section.shape, centerText: section.centerText && !cardLayout, - overlayText: false !== section.overlayText, + overlayText: section.overlayText !== false, showTitle: section.showTitle, showYear: section.showYear, showParentTitle: section.showParentTitle, diff --git a/src/controllers/home.js b/src/controllers/home.js index 9a4cea2227..3396a7336f 100644 --- a/src/controllers/home.js +++ b/src/controllers/home.js @@ -20,7 +20,7 @@ define(['tabbedView', 'globalize', 'require', 'emby-tabs', 'emby-button', 'emby- } function getTabController(index) { - if (null == index) { + if (index == null) { throw new Error('index cannot be null'); } diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index e50e2ae092..992eaf0482 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -100,7 +100,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderTimerEditor(page, item, apiClient, user) { - if ('Recording' !== item.Type || !user.Policy.EnableLiveTvManagement || !item.TimerId || 'InProgress' !== item.Status) { + if (item.Type !== 'Recording' || !user.Policy.EnableLiveTvManagement || !item.TimerId || item.Status !== 'InProgress') { return void hideAll(page, 'btnCancelTimer'); } @@ -108,7 +108,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderSeriesTimerEditor(page, item, apiClient, user) { - if ('SeriesTimer' !== item.Type) { + if (item.Type !== 'SeriesTimer') { return void hideAll(page, 'btnCancelSeriesTimer'); } @@ -131,7 +131,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function renderTrackSelections(page, instance, item, forceReload) { var select = page.querySelector('.selectSource'); - if (!item.MediaSources || !itemHelper.supportsMediaSourceSelection(item) || -1 === playbackManager.getSupportedCommands().indexOf('PlayMediaSource') || !playbackManager.canPlay(item)) { + if (!item.MediaSources || !itemHelper.supportsMediaSourceSelection(item) || playbackManager.getSupportedCommands().indexOf('PlayMediaSource') === -1 || !playbackManager.canPlay(item)) { page.querySelector('.trackSelections').classList.add('hide'); select.innerHTML = ''; page.querySelector('.selectVideo').innerHTML = ''; @@ -210,7 +210,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti return m.Id === mediaSourceId; })[0]; var tracks = mediaSource.MediaStreams.filter(function (m) { - return 'Audio' === m.Type; + return m.Type === 'Audio'; }); var select = page.querySelector('.selectAudio'); select.setLabel(globalize.translate('LabelAudio')); @@ -239,19 +239,19 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti return m.Id === mediaSourceId; })[0]; var tracks = mediaSource.MediaStreams.filter(function (m) { - return 'Subtitle' === m.Type; + return m.Type === 'Subtitle'; }); var select = page.querySelector('.selectSubtitles'); select.setLabel(globalize.translate('LabelSubtitles')); - var selectedId = null == mediaSource.DefaultSubtitleStreamIndex ? -1 : mediaSource.DefaultSubtitleStreamIndex; + var selectedId = mediaSource.DefaultSubtitleStreamIndex == null ? -1 : mediaSource.DefaultSubtitleStreamIndex; var videoTracks = mediaSource.MediaStreams.filter(function (m) { - return 'Video' === m.Type; + return m.Type === 'Video'; }); // This only makes sense on Video items if (videoTracks.length) { - var selected = -1 === selectedId ? ' selected' : ''; + var selected = selectedId === -1 ? ' selected' : ''; select.innerHTML = '' + tracks.map(function (v) { selected = v.Index === selectedId ? ' selected' : ''; return ''; @@ -273,7 +273,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function reloadPlayButtons(page, item) { var canPlay = false; - if ('Program' == item.Type) { + if (item.Type == 'Program') { var now = new Date(); if (now >= datetime.parseISO8601Date(item.StartDate, true) && now < datetime.parseISO8601Date(item.EndDate, true)) { @@ -288,9 +288,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti hideAll(page, 'btnShuffle'); } else if (playbackManager.canPlay(item)) { hideAll(page, 'btnPlay', true); - var enableInstantMix = -1 !== ['Audio', 'MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); + var enableInstantMix = ['Audio', 'MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type) !== -1; hideAll(page, 'btnInstantMix', enableInstantMix); - var enableShuffle = item.IsFolder || -1 !== ['MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type); + var enableShuffle = item.IsFolder || ['MusicAlbum', 'MusicGenre', 'MusicArtist'].indexOf(item.Type) !== -1; hideAll(page, 'btnShuffle', enableShuffle); canPlay = true; @@ -373,10 +373,10 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti if (item.AlbumArtists) { parentNameHtml.push(getArtistLinksHtml(item.AlbumArtists, item.ServerId, context)); parentNameLast = true; - } else if (item.ArtistItems && item.ArtistItems.length && 'MusicVideo' === item.Type) { + } else if (item.ArtistItems && item.ArtistItems.length && item.Type === 'MusicVideo') { parentNameHtml.push(getArtistLinksHtml(item.ArtistItems, item.ServerId, context)); parentNameLast = true; - } else if (item.SeriesName && 'Episode' === item.Type) { + } else if (item.SeriesName && item.Type === 'Episode') { parentRoute = appRouter.getRouteUrl({ Id: item.SeriesId, Name: item.SeriesName, @@ -391,7 +391,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti parentNameHtml.push(item.Name); } - if (item.SeriesName && 'Season' === item.Type) { + if (item.SeriesName && item.Type === 'Season') { parentRoute = appRouter.getRouteUrl({ Id: item.SeriesId, Name: item.SeriesName, @@ -402,7 +402,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti context: context }); parentNameHtml.push('' + item.SeriesName + ''); - } else if (null != item.ParentIndexNumber && 'Episode' === item.Type) { + } else if (item.ParentIndexNumber != null && item.Type === 'Episode') { parentRoute = appRouter.getRouteUrl({ Id: item.SeasonId, Name: item.SeasonName, @@ -413,9 +413,9 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti context: context }); parentNameHtml.push('' + item.SeasonName + ''); - } else if (null != item.ParentIndexNumber && item.IsSeries) { + } else if (item.ParentIndexNumber != null && item.IsSeries) { parentNameHtml.push(item.SeasonName || 'S' + item.ParentIndexNumber); - } else if (item.Album && item.AlbumId && ('MusicVideo' === item.Type || 'Audio' === item.Type)) { + } else if (item.Album && item.AlbumId && (item.Type === 'MusicVideo' || item.Type === 'Audio')) { parentRoute = appRouter.getRouteUrl({ Id: item.AlbumId, Name: item.Album, @@ -478,7 +478,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function setTrailerButtonVisibility(page, item) { - if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && -1 !== playbackManager.getSupportedCommands().indexOf('PlayTrailers')) { + if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && playbackManager.getSupportedCommands().indexOf('PlayTrailers') !== -1) { hideAll(page, 'btnPlayTrailer', true); } else { hideAll(page, 'btnPlayTrailer'); @@ -557,7 +557,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti 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')) { + if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && playbackManager.getSupportedCommands().indexOf('PlayTrailers') !== -1) { hideAll(page, 'btnPlayTrailer', true); } else { hideAll(page, 'btnPlayTrailer'); @@ -565,7 +565,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti setTrailerButtonVisibility(page, item); - if ('Program' !== item.Type || canPlay) { + if (item.Type !== 'Program' || canPlay) { hideAll(page, 'mainDetailButtons', true); } else { hideAll(page, 'mainDetailButtons'); @@ -573,7 +573,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti showRecordingFields(instance, page, item, user); var groupedVersions = (item.MediaSources || []).filter(function (g) { - return 'Grouping' == g.Type; + return g.Type == 'Grouping'; }); if (user.Policy.IsAdministrator && groupedVersions.length) { @@ -590,7 +590,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var itemBirthday = page.querySelector('#itemBirthday'); - if ('Person' == item.Type && item.PremiereDate) { + if (item.Type == 'Person' && item.PremiereDate) { try { var birthday = datetime.parseISO8601Date(item.PremiereDate, true).toDateString(); itemBirthday.classList.remove('hide'); @@ -604,7 +604,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var itemDeathDate = page.querySelector('#itemDeathDate'); - if ('Person' == item.Type && item.EndDate) { + if (item.Type == 'Person' && item.EndDate) { try { var deathday = datetime.parseISO8601Date(item.EndDate, true).toDateString(); itemDeathDate.classList.remove('hide'); @@ -618,7 +618,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var itemBirthLocation = page.querySelector('#itemBirthLocation'); - if ('Person' == item.Type && item.ProductionLocations && item.ProductionLocations.length) { + if (item.Type == 'Person' && item.ProductionLocations && item.ProductionLocations.length) { var gmap = '' + item.ProductionLocations[0] + ''; itemBirthLocation.classList.remove('hide'); itemBirthLocation.innerHTML = globalize.translate('BirthPlaceValue', gmap); @@ -674,7 +674,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti if (!instance.currentRecordingFields) { var recordingFieldsElement = page.querySelector('.recordingFields'); - if ('Program' == item.Type && user.Policy.EnableLiveTvManagement) { + if (item.Type == 'Program' && user.Policy.EnableLiveTvManagement) { require(['recordingFields'], function (recordingFields) { instance.currentRecordingFields = new recordingFields({ parent: recordingFieldsElement, @@ -755,7 +755,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function setPeopleHeader(page, item) { - if ('Audio' == item.MediaType || 'MusicAlbum' == item.Type || 'Book' == item.MediaType || 'Photo' == item.MediaType) { + if (item.MediaType == 'Audio' || item.Type == 'MusicAlbum' || item.MediaType == 'Book' || item.MediaType == 'Photo') { page.querySelector('#peopleHeader').innerHTML = globalize.translate('HeaderPeople'); } else { page.querySelector('#peopleHeader').innerHTML = globalize.translate('HeaderCastAndCrew'); @@ -765,7 +765,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function renderNextUp(page, item, user) { var section = page.querySelector('.nextUpSection'); - if ('Series' != item.Type) { + if (item.Type != 'Series') { return void section.classList.add('hide'); } @@ -783,7 +783,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti items: result.Items, shape: 'overflowBackdrop', showTitle: true, - displayAsSpecial: 'Season' == item.Type && item.IndexNumber, + displayAsSpecial: item.Type == 'Season' && item.IndexNumber, overlayText: false, centerText: true, overlayPlayButton: true @@ -797,14 +797,14 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function setInitialCollapsibleState(page, item, apiClient, context, user) { page.querySelector('.collectionItems').innerHTML = ''; - if ('Playlist' == item.Type) { + if (item.Type == 'Playlist') { page.querySelector('#childrenCollapsible').classList.remove('hide'); renderPlaylistItems(page, item); - } else if ('Studio' == item.Type || 'Person' == item.Type || 'Genre' == item.Type || 'MusicGenre' == item.Type || 'MusicArtist' == item.Type) { + } else if (item.Type == 'Studio' || item.Type == 'Person' || item.Type == 'Genre' || item.Type == 'MusicGenre' || item.Type == 'MusicArtist') { page.querySelector('#childrenCollapsible').classList.remove('hide'); renderItemsByName(page, item); } else if (item.IsFolder) { - if ('BoxSet' == item.Type) { + if (item.Type == 'BoxSet') { page.querySelector('#childrenCollapsible').classList.add('hide'); } @@ -813,7 +813,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti page.querySelector('#childrenCollapsible').classList.add('hide'); } - if ('Series' == item.Type) { + if (item.Type == 'Series') { renderSeriesSchedule(page, item); renderNextUp(page, item, user); } else { @@ -822,7 +822,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti renderScenes(page, item); - if (item.SpecialFeatureCount && 0 != item.SpecialFeatureCount && 'Series' != item.Type) { + if (item.SpecialFeatureCount && item.SpecialFeatureCount != 0 && item.Type != 'Series') { page.querySelector('#specialsCollapsible').classList.remove('hide'); renderSpecials(page, item, user); } else { @@ -838,7 +838,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti page.querySelector('#additionalPartsCollapsible').classList.add('hide'); } - if ('MusicAlbum' == item.Type) { + if (item.Type == 'MusicAlbum') { renderMusicVideos(page, item, user); } else { page.querySelector('#musicVideosCollapsible').classList.add('hide'); @@ -986,7 +986,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti subtitles: false }); - if (miscInfo.innerHTML && 'SeriesTimer' !== item.Type) { + if (miscInfo.innerHTML && item.Type !== 'SeriesTimer') { miscInfo.classList.remove('hide'); } else { miscInfo.classList.add('hide'); @@ -1000,7 +1000,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti interactive: true }); - if (miscInfo.innerHTML && 'SeriesTimer' !== item.Type) { + if (miscInfo.innerHTML && item.Type !== 'SeriesTimer') { miscInfo.classList.remove('hide'); } else { miscInfo.classList.add('hide'); @@ -1041,7 +1041,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function getPortraitShape(scrollX) { - if (null == scrollX) { + if (scrollX == null) { scrollX = enableScrollX(); } @@ -1049,7 +1049,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function getSquareShape(scrollX) { - if (null == scrollX) { + if (scrollX == null) { scrollX = enableScrollX(); } @@ -1060,7 +1060,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var section = view.querySelector('.moreFromSeasonSection'); if (section) { - if ('Episode' !== item.Type || !item.SeasonId || !item.SeriesId) { + if (item.Type !== 'Episode' || !item.SeasonId || !item.SeriesId) { return void section.classList.add('hide'); } @@ -1104,11 +1104,11 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var section = view.querySelector('.moreFromArtistSection'); if (section) { - if ('MusicArtist' === item.Type) { + if (item.Type === 'MusicArtist') { if (!apiClient.isMinServerVersion('3.4.1.19')) { return void section.classList.add('hide'); } - } else if ('MusicAlbum' !== item.Type || !item.AlbumArtists || !item.AlbumArtists.length) { + } else if (item.Type !== 'MusicAlbum' || !item.AlbumArtists || !item.AlbumArtists.length) { return void section.classList.add('hide'); } @@ -1120,7 +1120,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti SortOrder: 'Descending' }; - if ('MusicArtist' === item.Type) { + if (item.Type === 'MusicArtist') { query.ContributingArtistIds = item.Id; } else if (apiClient.isMinServerVersion('3.4.1.18')) { query.AlbumArtistIds = item.AlbumArtists[0].Id; @@ -1135,7 +1135,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti section.classList.remove('hide'); - if ('MusicArtist' === item.Type) { + if (item.Type === 'MusicArtist') { section.querySelector('h2').innerHTML = globalize.translate('HeaderAppearsOn'); } else { section.querySelector('h2').innerHTML = globalize.translate('MoreFromValue', item.AlbumArtists[0].Name); @@ -1147,7 +1147,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti shape: 'autooverflow', sectionTitleTagName: 'h2', scalable: true, - coverImage: 'MusicArtist' === item.Type || 'MusicAlbum' === item.Type, + coverImage: item.Type === 'MusicArtist' || item.Type === 'MusicAlbum', showTitle: true, showParentTitle: false, centerText: true, @@ -1163,7 +1163,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var similarCollapsible = page.querySelector('#similarCollapsible'); if (similarCollapsible) { - if ('Movie' != item.Type && 'Trailer' != item.Type && 'Series' != item.Type && 'Program' != item.Type && 'Recording' != item.Type && 'MusicAlbum' != item.Type && 'MusicArtist' != item.Type && 'Playlist' != item.Type) { + if (item.Type != 'Movie' && item.Type != 'Trailer' && item.Type != 'Series' && item.Type != 'Program' && item.Type != 'Recording' && item.Type != 'MusicAlbum' && item.Type != 'MusicArtist' && item.Type != 'Playlist') { return void similarCollapsible.classList.add('hide'); } @@ -1175,7 +1175,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti fields: 'PrimaryImageAspectRatio,UserData,CanDelete' }; - if ('MusicAlbum' == item.Type && item.AlbumArtists && item.AlbumArtists.length) { + if (item.Type == 'MusicAlbum' && item.AlbumArtists && item.AlbumArtists.length) { options.ExcludeArtistIds = item.AlbumArtists[0].Id; } @@ -1189,16 +1189,16 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti html += cardBuilder.getCardsHtml({ items: result.Items, shape: 'autooverflow', - showParentTitle: 'MusicAlbum' == item.Type, + showParentTitle: item.Type == 'MusicAlbum', centerText: true, showTitle: true, context: context, lazy: true, showDetailsMenu: true, - coverImage: 'MusicAlbum' == item.Type || 'MusicArtist' == item.Type, + coverImage: item.Type == 'MusicAlbum' || item.Type == 'MusicArtist', overlayPlayButton: true, overlayText: false, - showYear: 'Movie' === item.Type || 'Trailer' === item.Type || 'Series' === item.Type + showYear: item.Type === 'Movie' || item.Type === 'Trailer' || item.Type === 'Series' }); var similarContent = similarCollapsible.querySelector('.similarContent'); similarContent.innerHTML = html; @@ -1209,13 +1209,13 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function renderSeriesAirTime(page, item, isStatic) { var seriesAirTime = page.querySelector('#seriesAirTime'); - if ('Series' != item.Type) { + if (item.Type != 'Series') { seriesAirTime.classList.add('hide'); return; } var html = ''; if (item.AirDays && item.AirDays.length) { - if (7 == item.AirDays.length) { + if (item.AirDays.length == 7) { html += 'daily'; } else { html += item.AirDays.map(function (a) { @@ -1240,7 +1240,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } if (html) { - html = ('Ended' == item.Status ? 'Aired ' : 'Airs ') + html; + html = (item.Status == 'Ended' ? 'Aired ' : 'Airs ') + html; seriesAirTime.innerHTML = html; seriesAirTime.classList.remove('hide'); } else { @@ -1253,7 +1253,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var tagElements = []; var tags = item.Tags || []; - if ('Program' === item.Type) { + if (item.Type === 'Program') { tags = []; } @@ -1277,7 +1277,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti Fields: fields }; - if ('BoxSet' !== item.Type) { + if (item.Type !== 'BoxSet') { query.SortBy = 'SortName'; } @@ -1285,19 +1285,19 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var apiClient = connectionManager.getApiClient(item.ServerId); var userId = apiClient.getCurrentUserId(); - if ('Series' == item.Type) { + if (item.Type == 'Series') { promise = apiClient.getSeasons(item.Id, { userId: userId, Fields: fields }); - } else if ('Season' == item.Type) { + } else if (item.Type == 'Season') { fields += ',Overview'; promise = apiClient.getEpisodes(item.SeriesId, { seasonId: item.Id, userId: userId, Fields: fields }); - } else if ('MusicArtist' == item.Type) { + } else if (item.Type == 'MusicArtist') { query.SortBy = 'ProductionYear,SortName'; } @@ -1308,7 +1308,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti var isList = false; var childrenItemsContainer = page.querySelector('.childrenItemsContainer'); - if ('MusicAlbum' == item.Type) { + if (item.Type == 'MusicAlbum') { html = listView.getListViewHtml({ items: result.Items, smallIcon: true, @@ -1322,7 +1322,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti containerAlbumArtists: item.AlbumArtists }); isList = true; - } else if ('Series' == item.Type) { + } else if (item.Type == 'Series') { scrollX = enableScrollX(); html = cardBuilder.getCardsHtml({ items: result.Items, @@ -1333,21 +1333,21 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti overlayPlayButton: true, allowBottomPadding: !scrollX }); - } else if ('Season' == item.Type || 'Episode' == item.Type) { - if ('Episode' !== item.Type) { + } else if (item.Type == 'Season' || item.Type == 'Episode') { + if (item.Type !== 'Episode') { isList = true; } - scrollX = 'Episode' == item.Type; - if (result.Items.length < 2 && 'Episode' === item.Type) { + scrollX = item.Type == 'Episode'; + if (result.Items.length < 2 && item.Type === 'Episode') { return; } - if ('Episode' === item.Type) { + if (item.Type === 'Episode') { html = cardBuilder.getCardsHtml({ items: result.Items, shape: 'overflowBackdrop', showTitle: true, - displayAsSpecial: 'Season' == item.Type && item.IndexNumber, + displayAsSpecial: item.Type == 'Season' && item.IndexNumber, playFromHere: true, overlayText: true, lazy: true, @@ -1356,7 +1356,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti allowBottomPadding: !scrollX, includeParentInfoInTitle: false }); - } else if ('Season' === item.Type) { + } else if (item.Type === 'Season') { html = listView.getListViewHtml({ items: result.Items, showIndexNumber: false, @@ -1373,7 +1373,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } } - if ('BoxSet' !== item.Type) { + if (item.Type !== 'BoxSet') { page.querySelector('#childrenCollapsible').classList.remove('hide'); } if (scrollX) { @@ -1398,7 +1398,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } childrenItemsContainer.innerHTML = html; imageLoader.lazyChildren(childrenItemsContainer); - if ('BoxSet' == item.Type) { + if (item.Type == 'BoxSet') { var collectionItemTypes = [{ name: globalize.translate('HeaderVideos'), mediaType: 'Video' @@ -1416,17 +1416,17 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } }); - if ('Season' == item.Type) { + if (item.Type == 'Season') { page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderEpisodes'); - } else if ('Series' == item.Type) { + } else if (item.Type == 'Series') { page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderSeasons'); - } else if ('MusicAlbum' == item.Type) { + } else if (item.Type == 'MusicAlbum') { page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderTracks'); } else { page.querySelector('#childrenTitle').innerHTML = globalize.translate('HeaderItems'); } - if ('MusicAlbum' == item.Type || 'Season' == item.Type) { + if (item.Type == 'MusicAlbum' || item.Type == 'Season') { page.querySelector('.childrenSectionHeader').classList.add('hide'); page.querySelector('#childrenCollapsible').classList.add('verticalSection-extrabottompadding'); } else { @@ -1503,7 +1503,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function renderChannelGuide(page, apiClient, item) { - if ('TvChannel' === item.Type) { + if (item.Type === 'TvChannel') { page.querySelector('.programGuideSection').classList.remove('hide'); apiClient.getLiveTvPrograms({ ChannelIds: item.Id, @@ -1555,19 +1555,19 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti } function inferContext(item) { - if ('Movie' === item.Type || 'BoxSet' === item.Type) { + if (item.Type === 'Movie' || item.Type === 'BoxSet') { return 'movies'; } - if ('Series' === item.Type || 'Season' === item.Type || 'Episode' === item.Type) { + if (item.Type === 'Series' || item.Type === 'Season' || item.Type === 'Episode') { return 'tvshows'; } - if ('MusicArtist' === item.Type || 'MusicAlbum' === item.Type || 'Audio' === item.Type || 'AudioBook' === item.Type) { + if (item.Type === 'MusicArtist' || item.Type === 'MusicAlbum' || item.Type === 'Audio' || item.Type === 'AudioBook') { return 'music'; } - if ('Program' === item.Type) { + if (item.Type === 'Program') { return 'livetv'; } @@ -1659,12 +1659,12 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti html += ''; html += '
'; html += '
'; - var shape = 'MusicAlbum' == type.type ? getSquareShape(false) : getPortraitShape(false); + var shape = type.type == 'MusicAlbum' ? getSquareShape(false) : getPortraitShape(false); html += cardBuilder.getCardsHtml({ items: items, shape: shape, showTitle: true, - showYear: 'Video' === type.mediaType || 'Series' === type.type, + showYear: type.mediaType === 'Video' || type.type === 'Series', centerText: true, lazy: true, showDetailsMenu: true, @@ -1849,7 +1849,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function playCurrentItem(button, mode) { var item = currentItem; - if ('Program' === item.Type) { + if (item.Type === 'Program') { var apiClient = connectionManager.getApiClient(item.ServerId); return void apiClient.getLiveTvChannel(item.ChannelId, apiClient.getCurrentUserId()).then(function (channel) { playbackManager.play({ @@ -1925,7 +1925,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti function onWebSocketMessage(e, data) { var msg = data; - if ('UserDataChanged' === msg.MessageType && currentItem && msg.Data.UserId == apiClient.getCurrentUserId()) { + if (msg.MessageType === 'UserDataChanged' && currentItem && msg.Data.UserId == apiClient.getCurrentUserId()) { var key = currentItem.UserData.Key; var userData = msg.Data.UserDataList.filter(function (u) { return u.Key == key; diff --git a/src/controllers/list.js b/src/controllers/list.js index e550b535f4..01ef35a26a 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -9,7 +9,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' Limit: 300 }; - if ('Recordings' === params.type) { + if (params.type === 'Recordings') { query.IsInProgress = false; } else { query.HasAired = false; @@ -19,39 +19,39 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' query.GenreIds = params.genreId; } - if ('true' === params.IsMovie) { + if (params.IsMovie === 'true') { query.IsMovie = true; - } else if ('false' === params.IsMovie) { + } else if (params.IsMovie === 'false') { query.IsMovie = false; } - if ('true' === params.IsSeries) { + if (params.IsSeries === 'true') { query.IsSeries = true; - } else if ('false' === params.IsSeries) { + } else if (params.IsSeries === 'false') { query.IsSeries = false; } - if ('true' === params.IsNews) { + if (params.IsNews === 'true') { query.IsNews = true; - } else if ('false' === params.IsNews) { + } else if (params.IsNews === 'false') { query.IsNews = false; } - if ('true' === params.IsSports) { + if (params.IsSports === 'true') { query.IsSports = true; - } else if ('false' === params.IsSports) { + } else if (params.IsSports === 'false') { query.IsSports = false; } - if ('true' === params.IsKids) { + if (params.IsKids === 'true') { query.IsKids = true; - } else if ('false' === params.IsKids) { + } else if (params.IsKids === 'false') { query.IsKids = false; } - if ('true' === params.IsAiring) { + if (params.IsAiring === 'true') { query.IsAiring = true; - } else if ('false' === params.IsAiring) { + } else if (params.IsAiring === 'false') { query.IsAiring = false; } @@ -181,13 +181,13 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' var btnSortIcon = instance.btnSortIcon; if (btnSortIcon) { - setSortButtonIcon(btnSortIcon, 'Descending' === values.sortOrder ? 'arrow_downward' : 'arrow_upward'); + setSortButtonIcon(btnSortIcon, values.sortOrder === 'Descending' ? 'arrow_downward' : 'arrow_upward'); } } } function updateItemsContainerForViewType(instance) { - if ('list' === instance.getViewSettings().imageType) { + if (instance.getViewSettings().imageType === 'list') { instance.itemsContainer.classList.remove('vertical-wrap'); instance.itemsContainer.classList.add('vertical-list'); } else { @@ -203,11 +203,11 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' if (alphaPicker) { var values = instance.getSortValues(); - if (null == numItems) { + if (numItems == null) { numItems = 100; } - if ('SortName' === values.sortBy && 'Ascending' === values.sortOrder && numItems > 40) { + if (values.sortBy === 'SortName' && values.sortOrder === 'Ascending' && numItems > 40) { alphaPicker.classList.remove('hide'); instance.itemsContainer.parentNode.classList.add('padded-right-withalphapicker'); } else { @@ -222,19 +222,19 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' var apiClient = connectionManager.getApiClient(params.serverId); instance.queryRecursive = false; - if ('Recordings' === params.type) { + if (params.type === 'Recordings') { return apiClient.getLiveTvRecordings(getInitialLiveTvQuery(instance, params)); } - if ('Programs' === params.type) { - if ('true' === params.IsAiring) { + if (params.type === 'Programs') { + if (params.IsAiring === 'true') { return apiClient.getLiveTvRecommendedPrograms(getInitialLiveTvQuery(instance, params)); } return apiClient.getLiveTvPrograms(getInitialLiveTvQuery(instance, params)); } - if ('nextup' === params.type) { + if (params.type === 'nextup') { return apiClient.getNextUpEpisodes(modifyQueryWithFilters(instance, { Limit: limit, Fields: 'PrimaryImageAspectRatio,SeriesInfo,DateCreated,BasicSyncInfo', @@ -250,9 +250,9 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' instance.queryRecursive = true; var method = 'getItems'; - if ('MusicArtist' === params.type) { + if (params.type === 'MusicArtist') { method = 'getArtists'; - } else if ('Person' === params.type) { + } else if (params.type === 'Person') { method = 'getPeople'; } @@ -261,15 +261,15 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' Limit: limit, Fields: 'PrimaryImageAspectRatio,SortName', ImageTypeLimit: 1, - IncludeItemTypes: 'MusicArtist' === params.type || 'Person' === params.type ? null : params.type, + IncludeItemTypes: params.type === 'MusicArtist' || params.type === 'Person' ? null : params.type, Recursive: true, - IsFavorite: 'true' === params.IsFavorite || null, + IsFavorite: params.IsFavorite === 'true' || null, ArtistIds: params.artistId || null, SortBy: sortBy })); } - if ('Genre' === item.Type || 'MusicGenre' === item.Type || 'Studio' === item.Type || 'Person' === item.Type) { + if (item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'Studio' || item.Type === 'Person') { instance.queryRecursive = true; var query = { StartIndex: startIndex, @@ -280,25 +280,25 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' SortBy: sortBy }; - if ('Studio' === item.Type) { + if (item.Type === 'Studio') { query.StudioIds = item.Id; - } else if ('Genre' === item.Type || 'MusicGenre' === item.Type) { + } else if (item.Type === 'Genre' || item.Type === 'MusicGenre') { query.GenreIds = item.Id; - } else if ('Person' === item.Type) { + } else if (item.Type === 'Person') { query.PersonIds = item.Id; } - if ('MusicGenre' === item.Type) { + if (item.Type === 'MusicGenre') { query.IncludeItemTypes = 'MusicAlbum'; - } else if ('GameGenre' === item.Type) { + } else if (item.Type === 'GameGenre') { query.IncludeItemTypes = 'Game'; - } else if ('movies' === item.CollectionType) { + } else if (item.CollectionType === 'movies') { query.IncludeItemTypes = 'Movie'; - } else if ('tvshows' === item.CollectionType) { + } else if (item.CollectionType === 'tvshows') { query.IncludeItemTypes = 'Series'; - } else if ('Genre' === item.Type) { + } else if (item.Type === 'Genre') { query.IncludeItemTypes = 'Movie,Series,Video'; - } else if ('Person' === item.Type) { + } else if (item.Type === 'Person') { query.IncludeItemTypes = params.type; } @@ -316,7 +316,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function getItem(params) { - if ('Recordings' === params.type || 'Programs' === params.type || 'nextup' === params.type) { + if (params.type === 'Recordings' || params.type === 'Programs' || params.type === 'nextup') { return Promise.resolve(null); } @@ -412,7 +412,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' function ItemsView(view, params) { function fetchData() { return getItems(self, params, self.currentItem).then(function (result) { - if (null == self.totalItemCount) { + if (self.totalItemCount == null) { self.totalItemCount = result.Items ? result.Items.length : result.length; } @@ -424,7 +424,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' function getItemsHtml(items) { var settings = self.getViewSettings(); - if ('list' === settings.imageType) { + if (settings.imageType === 'list') { return listView.getListViewHtml({ items: items }); @@ -438,24 +438,24 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' var item = self.currentItem; var lines = settings.showTitle ? 2 : 0; - if ('banner' === settings.imageType) { + if (settings.imageType === 'banner') { shape = 'banner'; - } else if ('disc' === settings.imageType) { + } else if (settings.imageType === 'disc') { shape = 'square'; preferDisc = true; - } else if ('logo' === settings.imageType) { + } else if (settings.imageType === 'logo') { shape = 'backdrop'; preferLogo = true; - } else if ('thumb' === settings.imageType) { + } else if (settings.imageType === 'thumb') { shape = 'backdrop'; preferThumb = true; - } else if ('nextup' === params.type) { + } else if (params.type === 'nextup') { shape = 'backdrop'; - preferThumb = 'thumb' === settings.imageType; - } else if ('Programs' === params.type || 'Recordings' === params.type) { - shape = 'true' === params.IsMovie ? 'portrait' : 'autoVertical'; - preferThumb = 'true' !== params.IsMovie ? 'auto' : false; - defaultShape = 'true' === params.IsMovie ? 'portrait' : 'backdrop'; + preferThumb = settings.imageType === 'thumb'; + } else if (params.type === 'Programs' || params.type === 'Recordings') { + shape = params.IsMovie === 'true' ? 'portrait' : 'autoVertical'; + preferThumb = params.IsMovie !== 'true' ? 'auto' : false; + defaultShape = params.IsMovie === 'true' ? 'portrait' : 'backdrop'; } else { shape = 'autoVertical'; } @@ -473,46 +473,46 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' overlayMoreButton: true, overlayText: !settings.showTitle, defaultShape: defaultShape, - action: 'Audio' === params.type ? 'playallfromhere' : null + action: params.type === 'Audio' ? 'playallfromhere' : null }; - if ('nextup' === params.type) { + if (params.type === 'nextup') { posterOptions.showParentTitle = settings.showTitle; - } else if ('Person' === params.type) { + } else if (params.type === 'Person') { posterOptions.showYear = false; posterOptions.showParentTitle = false; lines = 1; - } else if ('Audio' === params.type) { + } else if (params.type === 'Audio') { posterOptions.showParentTitle = settings.showTitle; - } else if ('MusicAlbum' === params.type) { + } else if (params.type === 'MusicAlbum') { posterOptions.showParentTitle = settings.showTitle; - } else if ('Episode' === params.type) { + } else if (params.type === 'Episode') { posterOptions.showParentTitle = settings.showTitle; - } else if ('MusicArtist' === params.type) { + } else if (params.type === 'MusicArtist') { posterOptions.showYear = false; lines = 1; - } else if ('Programs' === params.type) { + } else if (params.type === 'Programs') { lines = settings.showTitle ? 1 : 0; - var showParentTitle = settings.showTitle && 'true' !== params.IsMovie; + var showParentTitle = settings.showTitle && params.IsMovie !== 'true'; if (showParentTitle) { lines++; } - var showAirTime = settings.showTitle && 'Recordings' !== params.type; + var showAirTime = settings.showTitle && params.type !== 'Recordings'; if (showAirTime) { lines++; } - var showYear = settings.showTitle && 'true' === params.IsMovie && 'Recordings' === params.type; + var showYear = settings.showTitle && params.IsMovie === 'true' && params.type === 'Recordings'; if (showYear) { lines++; } posterOptions = Object.assign(posterOptions, { - inheritThumb: 'Recordings' === params.type, + inheritThumb: params.type === 'Recordings', context: 'livetv', showParentTitle: showParentTitle, showAirTime: showAirTime, @@ -529,7 +529,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' posterOptions.lines = lines; posterOptions.items = items; - if (item && 'folders' === item.CollectionType) { + if (item && item.CollectionType === 'folders') { posterOptions.context = 'folders'; } @@ -561,7 +561,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' function setTitle(item) { Emby.Page.setTitle(getTitle(item) || ''); - if (item && 'playlists' === item.CollectionType) { + if (item && item.CollectionType === 'playlists') { hideOrShowAll(view.querySelectorAll('.btnNewItem'), false); } else { hideOrShowAll(view.querySelectorAll('.btnNewItem'), true); @@ -569,43 +569,43 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } function getTitle(item) { - if ('Recordings' === params.type) { + if (params.type === 'Recordings') { return globalize.translate('Recordings'); } - if ('Programs' === params.type) { - if ('true' === params.IsMovie) { + if (params.type === 'Programs') { + if (params.IsMovie === 'true') { return globalize.translate('Movies'); } - if ('true' === params.IsSports) { + if (params.IsSports === 'true') { return globalize.translate('Sports'); } - if ('true' === params.IsKids) { + if (params.IsKids === 'true') { return globalize.translate('HeaderForKids'); } - if ('true' === params.IsAiring) { + if (params.IsAiring === 'true') { return globalize.translate('HeaderOnNow'); } - if ('true' === params.IsSeries) { + if (params.IsSeries === 'true') { return globalize.translate('Shows'); } - if ('true' === params.IsNews) { + if (params.IsNews === 'true') { return globalize.translate('News'); } return globalize.translate('Programs'); } - if ('nextup' === params.type) { + if (params.type === 'nextup') { return globalize.translate('NextUp'); } - if ('favoritemovies' === params.type) { + if (params.type === 'favoritemovies') { return globalize.translate('FavoriteMovies'); } @@ -613,35 +613,35 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' return item.Name; } - if ('Movie' === params.type) { + if (params.type === 'Movie') { return globalize.translate('Movies'); } - if ('Series' === params.type) { + if (params.type === 'Series') { return globalize.translate('Shows'); } - if ('Season' === params.type) { + if (params.type === 'Season') { return globalize.translate('Seasons'); } - if ('Episode' === params.type) { + if (params.type === 'Episode') { return globalize.translate('Episodes'); } - if ('MusicArtist' === params.type) { + if (params.type === 'MusicArtist') { return globalize.translate('Artists'); } - if ('MusicAlbum' === params.type) { + if (params.type === 'MusicAlbum') { return globalize.translate('Albums'); } - if ('Audio' === params.type) { + if (params.type === 'Audio') { return globalize.translate('Songs'); } - if ('Video' === params.type) { + if (params.type === 'Video') { return globalize.translate('Videos'); } @@ -700,11 +700,11 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' if (params.parentId) { this.itemsContainer.setAttribute('data-parentid', params.parentId); - } else if ('nextup' === params.type) { + } else if (params.type === 'nextup') { this.itemsContainer.setAttribute('data-monitor', 'videoplayback'); - } else if ('favoritemovies' === params.type) { + } else if (params.type === 'favoritemovies') { this.itemsContainer.setAttribute('data-monitor', 'markfavorite'); - } else if ('Programs' === params.type) { + } else if (params.type === 'Programs') { this.itemsContainer.setAttribute('data-refreshinterval', '300000'); } @@ -737,7 +737,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' var sortButton = sortButtons[i]; sortButton.addEventListener('click', showSortMenu.bind(this)); - if ('nextup' !== params.type) { + if (params.type !== 'nextup') { sortButton.classList.remove('hide'); } } @@ -772,19 +772,19 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' } }); - if (!isRestored && item && 'PhotoAlbum' !== item.Type) { + if (!isRestored && item && item.Type !== 'PhotoAlbum') { initAlphaPicker(); } var itemType = item ? item.Type : null; - if ('MusicGenre' === itemType || 'Programs' !== params.type && 'Channel' !== itemType) { + if (itemType === 'MusicGenre' || params.type !== 'Programs' && itemType !== 'Channel') { hideOrShowAll(view.querySelectorAll('.btnPlay'), false); } else { hideOrShowAll(view.querySelectorAll('.btnPlay'), true); } - if ('MusicGenre' === itemType || 'Programs' !== params.type && 'nextup' !== params.type && 'Channel' !== itemType) { + if (itemType === 'MusicGenre' || params.type !== 'Programs' && params.type !== 'nextup' && itemType !== 'Channel') { hideOrShowAll(view.querySelectorAll('.btnShuffle'), false); } else { hideOrShowAll(view.querySelectorAll('.btnShuffle'), true); @@ -845,14 +845,14 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' ItemsView.prototype.getFilters = function () { var basekey = this.getSettingsKey(); return { - IsPlayed: 'true' === userSettings.getFilter(basekey + '-filter-IsPlayed'), - IsUnplayed: 'true' === userSettings.getFilter(basekey + '-filter-IsUnplayed'), - IsFavorite: 'true' === userSettings.getFilter(basekey + '-filter-IsFavorite'), - IsResumable: 'true' === userSettings.getFilter(basekey + '-filter-IsResumable'), - Is4K: 'true' === userSettings.getFilter(basekey + '-filter-Is4K'), - IsHD: 'true' === userSettings.getFilter(basekey + '-filter-IsHD'), - IsSD: 'true' === userSettings.getFilter(basekey + '-filter-IsSD'), - Is3D: 'true' === userSettings.getFilter(basekey + '-filter-Is3D'), + IsPlayed: userSettings.getFilter(basekey + '-filter-IsPlayed') === 'true', + IsUnplayed: userSettings.getFilter(basekey + '-filter-IsUnplayed') === 'true', + IsFavorite: userSettings.getFilter(basekey + '-filter-IsFavorite') === 'true', + IsResumable: userSettings.getFilter(basekey + '-filter-IsResumable') === 'true', + Is4K: userSettings.getFilter(basekey + '-filter-Is4K') === 'true', + IsHD: userSettings.getFilter(basekey + '-filter-IsHD') === 'true', + IsSD: userSettings.getFilter(basekey + '-filter-IsSD') === 'true', + Is3D: userSettings.getFilter(basekey + '-filter-Is3D') === 'true', VideoTypes: userSettings.getFilter(basekey + '-filter-VideoTypes'), SeriesStatus: userSettings.getFilter(basekey + '-filter-SeriesStatus'), HasSubtitles: userSettings.getFilter(basekey + '-filter-HasSubtitles'), @@ -868,7 +868,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' var basekey = this.getSettingsKey(); return { sortBy: userSettings.getFilter(basekey + '-sortby') || this.getDefaultSortBy(), - sortOrder: 'Descending' === userSettings.getFilter(basekey + '-sortorder') ? 'Descending' : 'Ascending' + sortOrder: userSettings.getFilter(basekey + '-sortorder') === 'Descending' ? 'Descending' : 'Ascending' }; }; @@ -887,7 +887,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' var sortBy = []; var params = this.params; - if ('Programs' === params.type) { + if (params.type === 'Programs') { sortBy.push({ name: globalize.translate('AirDate'), value: 'StartDate,SortName' @@ -912,7 +912,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' sortBy.push(option); } - if ('Programs' !== params.type) { + if (params.type !== 'Programs') { sortBy.push({ name: globalize.translate('DateAdded'), value: 'DateCreated,SortName' @@ -955,7 +955,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' }; ItemsView.prototype.getNameSortOption = function (params) { - if ('Episode' === params.type) { + if (params.type === 'Episode') { return { name: globalize.translate('Name'), value: 'SeriesName,SortName' @@ -969,7 +969,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' }; ItemsView.prototype.getPlayCountSortOption = function () { - if ('Programs' === this.params.type) { + if (this.params.type === 'Programs') { return null; } @@ -980,7 +980,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' }; ItemsView.prototype.getDatePlayedSortOption = function () { - if ('Programs' === this.params.type) { + if (this.params.type === 'Programs') { return null; } @@ -991,7 +991,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' }; ItemsView.prototype.getCriticRatingSortOption = function () { - if ('Programs' === this.params.type) { + if (this.params.type === 'Programs') { return null; } @@ -1012,8 +1012,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' var filters = []; var params = this.params; - if (!('nextup' === params.type)) { - if ('Programs' === params.type) { + if (!(params.type === 'nextup')) { + if (params.type === 'Programs') { filters.push('Genres'); } else { filters.push('IsUnplayed'); @@ -1081,7 +1081,7 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' var item = (this.params, this.currentItem); var fields = ['showTitle']; - if (!item || 'PhotoAlbum' !== item.Type && 'ChannelFolderItem' !== item.Type) { + if (!item || item.Type !== 'PhotoAlbum' && item.Type !== 'ChannelFolderItem') { fields.push('imageType'); } @@ -1095,25 +1095,25 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' var item = this.currentItem; var showTitle = userSettings.get(basekey + '-showTitle'); - if ('true' === showTitle) { + if (showTitle === 'true') { showTitle = true; - } else if ('false' === showTitle) { + } else if (showTitle === 'false') { showTitle = false; - } else if ('Programs' === params.type || 'Recordings' === params.type || 'Person' === params.type || 'nextup' === params.type || 'Audio' === params.type || 'MusicAlbum' === params.type || 'MusicArtist' === params.type) { + } else if (params.type === 'Programs' || params.type === 'Recordings' || params.type === 'Person' || params.type === 'nextup' || params.type === 'Audio' || params.type === 'MusicAlbum' || params.type === 'MusicArtist') { showTitle = true; - } else if (item && 'PhotoAlbum' !== item.Type) { + } else if (item && item.Type !== 'PhotoAlbum') { showTitle = true; } var imageType = userSettings.get(basekey + '-imageType'); - if (!imageType && 'nextup' === params.type) { + if (!imageType && params.type === 'nextup') { imageType = 'thumb'; } return { showTitle: showTitle, - showYear: 'false' !== userSettings.get(basekey + '-showYear'), + showYear: userSettings.get(basekey + '-showYear') !== 'false', imageType: imageType || 'primary', viewType: userSettings.get(basekey + '-viewType') || 'images' }; @@ -1122,11 +1122,11 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager' ItemsView.prototype.getItemTypes = function () { var params = this.params; - if ('nextup' === params.type) { + if (params.type === 'nextup') { return ['Episode']; } - if ('Programs' === params.type) { + if (params.type === 'Programs') { return ['Program']; } diff --git a/src/controllers/livetv/livetvsuggested.js b/src/controllers/livetv/livetvsuggested.js index 036eee9fc6..36ba825a34 100644 --- a/src/controllers/livetv/livetvsuggested.js +++ b/src/controllers/livetv/livetvsuggested.js @@ -142,9 +142,9 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize', coverImage: true, overlayText: false, lazy: true, - overlayPlayButton: 'play' === overlayButton, - overlayMoreButton: 'more' === overlayButton, - overlayInfoButton: 'info' === overlayButton, + overlayPlayButton: overlayButton === 'play', + overlayMoreButton: overlayButton === 'more', + overlayInfoButton: overlayButton === 'info', allowBottomPadding: !enableScrollX(), showAirTime: true, showAirDateTime: true @@ -261,7 +261,7 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize', require(depends, function (controllerFactory) { var tabContent; - if (0 == index) { + if (index == 0) { tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"); self.tabContent = tabContent; } @@ -271,9 +271,9 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize', if (!controller) { tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"); - if (0 === index) { + if (index === 0) { controller = self; - } else if (6 === index) { + } else if (index === 6) { controller = new controllerFactory(view, tabContent, { collectionType: 'livetv' }); @@ -305,8 +305,8 @@ define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize', getTabController(page, index, function (controller) { initialTabIndex = null; - if (-1 == renderedTabs.indexOf(index)) { - if (1 === index) { + if (renderedTabs.indexOf(index) == -1) { + if (index === 1) { renderedTabs.push(index); } diff --git a/src/controllers/livetvtuner.js b/src/controllers/livetvtuner.js index 9250c18432..0e3b2b689e 100644 --- a/src/controllers/livetvtuner.js +++ b/src/controllers/livetvtuner.js @@ -21,7 +21,7 @@ function fillTypes(view, currentId) { html += globalize.translate('TabOther'); html += ''; selectType.innerHTML = html; - selectType.disabled = null != currentId; + selectType.disabled = currentId != null; selectType.value = ''; onTypeChange.call(selectType); }); @@ -112,15 +112,15 @@ function getDetectedDevice() { function onTypeChange() { const value = this.value; const view = dom.parentWithClass(this, 'page'); - const mayIncludeUnsupportedDrmChannels = 'hdhomerun' === value; - const supportsTranscoding = 'hdhomerun' === value; - const supportsFavorites = 'hdhomerun' === value; - const supportsTunerIpAddress = 'hdhomerun' === value; - const supportsTunerFileOrUrl = 'm3u' === value; - const supportsStreamLooping = 'm3u' === value; - const supportsTunerCount = 'm3u' === value; - const supportsUserAgent = 'm3u' === value; - const suppportsSubmit = 'other' !== value; + const mayIncludeUnsupportedDrmChannels = value === 'hdhomerun'; + const supportsTranscoding = value === 'hdhomerun'; + const supportsFavorites = value === 'hdhomerun'; + const supportsTunerIpAddress = value === 'hdhomerun'; + const supportsTunerFileOrUrl = value === 'm3u'; + const supportsStreamLooping = value === 'm3u'; + const supportsTunerCount = value === 'm3u'; + const supportsUserAgent = value === 'm3u'; + const suppportsSubmit = value !== 'other'; const supportsSelectablePath = supportsTunerFileOrUrl; const txtDevicePath = view.querySelector('.txtDevicePath'); diff --git a/src/controllers/movies/moviecollections.js b/src/controllers/movies/moviecollections.js index 44904633fa..dc8fae3a7b 100644 --- a/src/controllers/movies/moviecollections.js +++ b/src/controllers/movies/moviecollections.js @@ -50,7 +50,7 @@ define(['loading', 'events', 'libraryBrowser', 'imageLoader', 'listView', 'cardB var viewStyle = self.getCurrentViewStyle(); var itemsContainer = tabContent.querySelector('.itemsContainer'); - if ('List' == viewStyle) { + if (viewStyle == 'List') { itemsContainer.classList.add('vertical-list'); itemsContainer.classList.remove('vertical-wrap'); } else { diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 69450989e8..07334b4d91 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -56,13 +56,13 @@ define(['layoutManager', 'loading', 'libraryBrowser', 'cardBuilder', 'lazyLoader var elem = entry.target; var id = elem.getAttribute('data-id'); var viewStyle = self.getCurrentViewStyle(); - var limit = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 5 : 9; + var limit = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 5 : 9; if (enableScrollX()) { limit = 10; } - var enableImageTypes = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 'Primary,Backdrop,Thumb' : 'Primary'; + var enableImageTypes = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 'Primary,Backdrop,Thumb' : 'Primary'; var query = { SortBy: 'SortName', SortOrder: 'Ascending', diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index bc6d2c4e37..7d03c91073 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -73,7 +73,7 @@ import 'emby-itemscontainer'; const viewStyle = self.getCurrentViewStyle(); const itemsContainer = tabContent.querySelector('.itemsContainer'); - if ('List' == viewStyle) { + if (viewStyle == 'List') { itemsContainer.classList.add('vertical-list'); itemsContainer.classList.remove('vertical-wrap'); } else { diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 985c629103..23e0bbd459 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -57,7 +57,7 @@ import 'emby-itemscontainer'; const viewStyle = self.getCurrentViewStyle(); const itemsContainer = tabContent.querySelector('.itemsContainer'); - if ('List' == viewStyle) { + if (viewStyle == 'List') { itemsContainer.classList.add('vertical-list'); itemsContainer.classList.remove('vertical-wrap'); } else { diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 82041c5a56..db7dac9547 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -304,7 +304,7 @@ import 'flexStyles'; import(depends).then(({default: controllerFactory}) => { let tabContent; - if (0 == index) { + if (index == 0) { tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"); self.tabContent = tabContent; } diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 5a22ebf285..a004287ad3 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -22,18 +22,18 @@ import 'css!assets/css/videoosd'; /* eslint-disable indent */ function seriesImageUrl(item, options) { - if ('Episode' !== item.Type) { + if (item.Type !== 'Episode') { return null; } options = options || {}; options.type = options.type || 'Primary'; - if ('Primary' === options.type && item.SeriesPrimaryImageTag) { + if (options.type === 'Primary' && item.SeriesPrimaryImageTag) { options.tag = item.SeriesPrimaryImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); } - if ('Thumb' === options.type) { + if (options.type === 'Thumb') { if (item.SeriesThumbImageTag) { options.tag = item.SeriesThumbImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.SeriesId, options); @@ -57,7 +57,7 @@ import 'css!assets/css/videoosd'; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.PrimaryImageItemId || item.Id, options); } - if ('Primary' === options.type && item.AlbumId && item.AlbumPrimaryImageTag) { + if (options.type === 'Primary' && item.AlbumId && item.AlbumPrimaryImageTag) { options.tag = item.AlbumPrimaryImageTag; return connectionManager.getApiClient(item.ServerId).getScaledImageUrl(item.AlbumId, options); } @@ -104,7 +104,7 @@ import 'css!assets/css/videoosd'; function onDoubleClick(e) { const clientX = e.clientX; - if (null != clientX) { + if (clientX != null) { if (clientX < dom.getWindowSize().innerWidth / 2) { playbackManager.rewind(currentPlayer); } else { @@ -117,7 +117,7 @@ import 'css!assets/css/videoosd'; } function getDisplayItem(item) { - if ('TvChannel' === item.Type) { + if (item.Type === 'TvChannel') { const apiClient = connectionManager.getApiClient(item.ServerId); return apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (refreshedItem) { return { @@ -133,7 +133,7 @@ import 'css!assets/css/videoosd'; } function updateRecordingButton(item) { - if (!item || 'Program' !== item.Type) { + if (!item || item.Type !== 'Program') { if (recordingButtonManager) { recordingButtonManager.destroy(); recordingButtonManager = null; @@ -176,8 +176,8 @@ import 'css!assets/css/videoosd'; const osdTitle = view.querySelector('.osdTitle'); titleElement = osdTitle; let displayName = itemHelper.getDisplayName(displayItem, { - includeParentInfo: 'Program' !== displayItem.Type, - includeIndexNumber: 'Program' !== displayItem.Type + includeParentInfo: displayItem.Type !== 'Program', + includeIndexNumber: displayItem.Type !== 'Program' }); if (!displayName) { @@ -198,8 +198,8 @@ import 'css!assets/css/videoosd'; tomatoes: false, endsAt: false, episodeTitle: false, - originalAirDate: 'Program' !== displayItem.Type, - episodeTitleIndexNumber: 'Program' !== displayItem.Type, + originalAirDate: displayItem.Type !== 'Program', + episodeTitleIndexNumber: displayItem.Type !== 'Program', programIndicator: false }); const osdMediaInfo = view.querySelector('.osdMediaInfo'); @@ -271,7 +271,7 @@ import 'css!assets/css/videoosd'; } function shouldEnableProgressByTimeOfDay(item) { - return !('TvChannel' !== item.Type || !item.CurrentProgram); + return !(item.Type !== 'TvChannel' || !item.CurrentProgram); } function updateNowPlayingInfo(player, state) { @@ -372,7 +372,7 @@ import 'css!assets/css/videoosd'; } function toggleOsd() { - if ('osd' === currentVisibleMenu) { + if (currentVisibleMenu === 'osd') { hideOsd(); } else if (!currentVisibleMenu) { showOsd(); @@ -433,7 +433,7 @@ import 'css!assets/css/videoosd'; } function hideMainOsdControls() { - if ('osd' === currentVisibleMenu) { + if (currentVisibleMenu === 'osd') { const elem = osdBottomElement; clearHideAnimationEventListeners(elem); elem.classList.add('videoOsdBottom-hidden'); @@ -463,7 +463,7 @@ import 'css!assets/css/videoosd'; } function onPointerMove(e) { - if ('mouse' === (e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'))) { + if ((e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse')) === 'mouse') { const eventX = e.screenX || 0; const eventY = e.screenY || 0; const obj = lastPointerMoveData; @@ -491,7 +491,7 @@ import 'css!assets/css/videoosd'; switch (e.detail.command) { case 'left': - if ('osd' === currentVisibleMenu) { + if (currentVisibleMenu === 'osd') { showOsd(); } else { if (!currentVisibleMenu) { @@ -503,7 +503,7 @@ import 'css!assets/css/videoosd'; break; case 'right': - if ('osd' === currentVisibleMenu) { + if (currentVisibleMenu === 'osd') { showOsd(); } else if (!currentVisibleMenu) { e.preventDefault(); @@ -618,7 +618,7 @@ import 'css!assets/css/videoosd'; resetUpNextDialog(); console.debug('nowplaying event: ' + e.type); - if ('Video' !== state.NextMediaType) { + if (state.NextMediaType !== 'Video') { view.removeEventListener('viewbeforehide', onViewHideStopPlayback); Emby.Page.back(); } @@ -705,7 +705,7 @@ import 'css!assets/css/videoosd'; } function showComingUpNextIfNeeded(player, currentItem, currentTimeTicks, runtimeTicks) { - if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && 'Episode' === currentItem.Type && userSettings.enableNextVideoInfoOverlay()) { + if (runtimeTicks && currentTimeTicks && !comingUpNextDisplayed && !currentVisibleMenu && currentItem.Type === 'Episode' && userSettings.enableNextVideoInfoOverlay()) { const showAtSecondsLeft = runtimeTicks >= 3e10 ? 40 : runtimeTicks >= 24e9 ? 35 : 30; const showAtTicks = runtimeTicks - 1e3 * showAtSecondsLeft * 1e4; const timeRemainingTicks = runtimeTicks - currentTimeTicks; @@ -717,7 +717,7 @@ import 'css!assets/css/videoosd'; } function onUpNextHidden() { - if ('upnext' === currentVisibleMenu) { + if (currentVisibleMenu === 'upnext') { currentVisibleMenu = null; } } @@ -740,7 +740,7 @@ import 'css!assets/css/videoosd'; } function refreshProgramInfoIfNeeded(player, item) { - if ('TvChannel' === item.Type) { + if (item.Type === 'TvChannel') { const program = item.CurrentProgram; if (program && program.EndDate) { @@ -781,7 +781,7 @@ import 'css!assets/css/videoosd'; updatePlayPauseState(playState.IsPaused); const supportedCommands = playbackManager.getSupportedCommands(player); currentPlayerSupportedCommands = supportedCommands; - supportsBrightnessChange = -1 !== supportedCommands.indexOf('SetBrightness'); + supportsBrightnessChange = supportedCommands.indexOf('SetBrightness') !== -1; updatePlayerVolumeState(player, playState.IsMuted, playState.VolumeLevel); if (nowPlayingPositionSlider && !nowPlayingPositionSlider.dragging) { @@ -795,13 +795,13 @@ import 'css!assets/css/videoosd'; updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playState.PlaybackStartTimeTicks, playState.BufferedRanges || []); updateNowPlayingInfo(player, state); - if (state.MediaSource && state.MediaSource.SupportsTranscoding && -1 !== supportedCommands.indexOf('SetMaxStreamingBitrate')) { + if (state.MediaSource && state.MediaSource.SupportsTranscoding && supportedCommands.indexOf('SetMaxStreamingBitrate') !== -1) { view.querySelector('.btnVideoOsdSettings').classList.remove('hide'); } else { view.querySelector('.btnVideoOsdSettings').classList.add('hide'); } - const isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks; + const isProgressClear = state.MediaSource && state.MediaSource.RunTimeTicks == null; nowPlayingPositionSlider.setIsClear(isProgressClear); if (nowPlayingItem.RunTimeTicks) { @@ -809,19 +809,19 @@ import 'css!assets/css/videoosd'; userSettings.skipForwardLength() * 1000000 / nowPlayingItem.RunTimeTicks); } - if (-1 === supportedCommands.indexOf('ToggleFullscreen') || player.isLocalPlayer && layoutManager.tv && playbackManager.isFullscreen(player)) { + if (supportedCommands.indexOf('ToggleFullscreen') === -1 || player.isLocalPlayer && layoutManager.tv && playbackManager.isFullscreen(player)) { view.querySelector('.btnFullscreen').classList.add('hide'); } else { view.querySelector('.btnFullscreen').classList.remove('hide'); } - if (-1 === supportedCommands.indexOf('PictureInPicture')) { + if (supportedCommands.indexOf('PictureInPicture') === -1) { view.querySelector('.btnPip').classList.add('hide'); } else { view.querySelector('.btnPip').classList.remove('hide'); } - if (-1 === supportedCommands.indexOf('AirPlay')) { + if (supportedCommands.indexOf('AirPlay') === -1) { view.querySelector('.btnAirPlay').classList.add('hide'); } else { view.querySelector('.btnAirPlay').classList.remove('hide'); @@ -869,7 +869,7 @@ import 'css!assets/css/videoosd'; nowPlayingPositionSlider.value = 0; } - if (runtimeTicks && null != positionTicks && currentRuntimeTicks && !enableProgressByTimeOfDay && currentItem.RunTimeTicks && 'Recording' !== currentItem.Type) { + if (runtimeTicks && positionTicks != null && currentRuntimeTicks && !enableProgressByTimeOfDay && currentItem.RunTimeTicks && currentItem.Type !== 'Recording') { endsAtText.innerHTML = '  -  ' + mediaInfo.getEndsAtFromPosition(runtimeTicks, positionTicks, true); } else { endsAtText.innerHTML = ''; @@ -890,11 +890,11 @@ import 'css!assets/css/videoosd'; let showMuteButton = true; let showVolumeSlider = true; - if (-1 === supportedCommands.indexOf('Mute')) { + if (supportedCommands.indexOf('Mute') === -1) { showMuteButton = false; } - if (-1 === supportedCommands.indexOf('SetVolume')) { + if (supportedCommands.indexOf('SetVolume') === -1) { showVolumeSlider = false; } @@ -945,7 +945,7 @@ import 'css!assets/css/videoosd'; } function updateTimeText(elem, ticks, divider) { - if (null == ticks) { + if (ticks == null) { elem.innerHTML = ''; return; } @@ -987,9 +987,9 @@ import 'css!assets/css/videoosd'; } function onSettingsOption(selectedOption) { - if ('stats' === selectedOption) { + if (selectedOption === 'stats') { toggleStats(); - } else if ('suboffset' === selectedOption) { + } else if (selectedOption === 'suboffset') { const player = currentPlayer; if (player) { playbackManager.enableShowingSubtitleOffset(player); @@ -1063,7 +1063,7 @@ import 'css!assets/css/videoosd'; const streams = playbackManager.subtitleTracks(player); let currentIndex = playbackManager.getSubtitleStreamIndex(player); - if (null == currentIndex) { + if (currentIndex == null) { currentIndex = -1; } @@ -1136,7 +1136,7 @@ import 'css!assets/css/videoosd'; const key = keyboardnavigation.getKeyName(e); const isKeyModified = e.ctrlKey || e.altKey; - if (!currentVisibleMenu && 32 === e.keyCode) { + if (!currentVisibleMenu && e.keyCode === 32) { playbackManager.playPause(currentPlayer); showOsd(); return; diff --git a/src/controllers/session/forgotPassword/index.js b/src/controllers/session/forgotPassword/index.js index ace5a3ec15..368642db35 100644 --- a/src/controllers/session/forgotPassword/index.js +++ b/src/controllers/session/forgotPassword/index.js @@ -3,21 +3,21 @@ import globalize from 'globalize'; /* eslint-disable indent */ function processForgotPasswordResult(result) { - if ('ContactAdmin' == result.Action) { + if (result.Action == 'ContactAdmin') { return void Dashboard.alert({ message: globalize.translate('MessageContactAdminToResetPassword'), title: globalize.translate('HeaderForgotPassword') }); } - if ('InNetworkRequired' == result.Action) { + if (result.Action == 'InNetworkRequired') { return void Dashboard.alert({ message: globalize.translate('MessageForgotPasswordInNetworkRequired'), title: globalize.translate('HeaderForgotPassword') }); } - if ('PinCode' == result.Action) { + if (result.Action == 'PinCode') { let msg = globalize.translate('MessageForgotPasswordFileCreated'); msg += '
'; msg += '
'; diff --git a/src/controllers/shows/episodes.js b/src/controllers/shows/episodes.js index 1e067a7674..5fe70d7be0 100644 --- a/src/controllers/shows/episodes.js +++ b/src/controllers/shows/episodes.js @@ -58,7 +58,7 @@ import 'emby-itemscontainer'; const viewStyle = self.getCurrentViewStyle(); const itemsContainer = tabContent.querySelector('.itemsContainer'); - if ('List' == viewStyle) { + if (viewStyle == 'List') { itemsContainer.classList.add('vertical-list'); itemsContainer.classList.remove('vertical-wrap'); } else { diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index 87d3a2e240..3a17fd7997 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -62,13 +62,13 @@ import 'emby-button'; const elem = entry.target; const id = elem.getAttribute('data-id'); const viewStyle = self.getCurrentViewStyle(); - let limit = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 5 : 9; + let limit = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 5 : 9; if (enableScrollX()) { limit = 10; } - const enableImageTypes = 'Thumb' == viewStyle || 'ThumbCard' == viewStyle ? 'Primary,Backdrop,Thumb' : 'Primary'; + const enableImageTypes = viewStyle == 'Thumb' || viewStyle == 'ThumbCard' ? 'Primary,Backdrop,Thumb' : 'Primary'; const query = { SortBy: 'SortName', SortOrder: 'Ascending', diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index 1ee70c8f88..281c921e48 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -58,7 +58,7 @@ import 'emby-itemscontainer'; const viewStyle = self.getCurrentViewStyle(); const itemsContainer = tabContent.querySelector('.itemsContainer'); - if ('List' == viewStyle) { + if (viewStyle == 'List') { itemsContainer.classList.add('vertical-list'); itemsContainer.classList.remove('vertical-wrap'); } else { diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 083a61670f..d52f0eb5b3 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1663,7 +1663,7 @@ function tryRemoveElement(elem) { setAspectRatio(val) { const mediaElement = this.#mediaElement; if (mediaElement) { - if ('auto' === val) { + if (val === 'auto') { mediaElement.style.removeProperty('object-fit'); } else { mediaElement.style['object-fit'] = val; diff --git a/src/scripts/itembynamedetailpage.js b/src/scripts/itembynamedetailpage.js index fd29724225..eaeecba275 100644 --- a/src/scripts/itembynamedetailpage.js +++ b/src/scripts/itembynamedetailpage.js @@ -11,7 +11,7 @@ define(['connectionManager', 'listView', 'cardBuilder', 'imageLoader', 'libraryB }); } - if (item.ProgramCount && 'Person' == item.Type) { + if (item.ProgramCount && item.Type == 'Person') { sections.push({ name: globalize.translate('HeaderUpcomingOnTV'), type: 'Program' @@ -65,7 +65,7 @@ define(['connectionManager', 'listView', 'cardBuilder', 'imageLoader', 'libraryB var html = ''; var sectionClass = 'verticalSection'; - if ('Audio' === section.type) { + if (section.type === 'Audio') { sectionClass += ' verticalSection-extrabottompadding'; } @@ -272,7 +272,7 @@ define(['connectionManager', 'listView', 'cardBuilder', 'imageLoader', 'libraryB listOptions.items = result.Items; var itemsContainer = element.querySelector('.itemsContainer'); - if ('Audio' == type) { + if (type == 'Audio') { html = listView.getListViewHtml(listOptions); itemsContainer.classList.remove('vertical-wrap'); itemsContainer.classList.add('vertical-list'); @@ -288,23 +288,23 @@ define(['connectionManager', 'listView', 'cardBuilder', 'imageLoader', 'libraryB } function getMoreItemsHref(item, type) { - if ('Genre' == item.Type) { + if (item.Type == 'Genre') { return 'list.html?type=' + type + '&genreId=' + item.Id + '&serverId=' + item.ServerId; } - if ('MusicGenre' == item.Type) { + if (item.Type == 'MusicGenre') { return 'list.html?type=' + type + '&musicGenreId=' + item.Id + '&serverId=' + item.ServerId; } - if ('Studio' == item.Type) { + if (item.Type == 'Studio') { return 'list.html?type=' + type + '&studioId=' + item.Id + '&serverId=' + item.ServerId; } - if ('MusicArtist' == item.Type) { + if (item.Type == 'MusicArtist') { return 'list.html?type=' + type + '&artistId=' + item.Id + '&serverId=' + item.ServerId; } - if ('Person' == item.Type) { + if (item.Type == 'Person') { return 'list.html?type=' + type + '&personId=' + item.Id + '&serverId=' + item.ServerId; } @@ -354,7 +354,7 @@ define(['connectionManager', 'listView', 'cardBuilder', 'imageLoader', 'libraryB var apiClient = connectionManager.getApiClient(item.ServerId); - if ('MusicArtist' === query.IncludeItemTypes) { + if (query.IncludeItemTypes === 'MusicArtist') { query.IncludeItemTypes = null; return apiClient.getAlbumArtists(apiClient.getCurrentUserId(), query); } diff --git a/src/scripts/libraryBrowser.js b/src/scripts/libraryBrowser.js index 568e73916a..46cda51e55 100644 --- a/src/scripts/libraryBrowser.js +++ b/src/scripts/libraryBrowser.js @@ -178,9 +178,9 @@ export function showSortMenu (options) { html += globalize.translate('HeaderSortOrder'); html += ''; html += '
'; - isChecked = 'Ascending' == options.query.SortOrder ? ' checked' : ''; + isChecked = options.query.SortOrder == 'Ascending' ? ' checked' : ''; html += ''; - isChecked = 'Descending' == options.query.SortOrder ? ' checked' : ''; + isChecked = options.query.SortOrder == 'Descending' ? ' checked' : ''; html += ''; html += '
'; html += '
'; diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index da52be574d..d2a68cd6e3 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -309,7 +309,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } function isUrlInCurrentView(url) { - return -1 !== window.location.href.toString().toLowerCase().indexOf(url.toLowerCase()); + return window.location.href.toString().toLowerCase().indexOf(url.toLowerCase()) !== -1; } function updateDashboardMenuSelectedItem() { @@ -323,7 +323,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' if (pageIds) { pageIds = pageIds.split('|'); - selected = -1 != pageIds.indexOf(currentViewId); + selected = pageIds.indexOf(currentViewId) != -1; } var pageUrls = link.getAttribute('data-pageurls'); @@ -545,7 +545,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' var view = items[i]; list.push(view); - if ('livetv' == view.CollectionType) { + if (view.CollectionType == 'livetv') { view.ImageTags = {}; view.icon = 'live_tv'; var guideView = Object.assign({}, view); @@ -671,15 +671,15 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' var lnkMediaFolder = elems[i]; var itemId = lnkMediaFolder.getAttribute('data-itemid'); - if (isChannelsPage && 'channels' === itemId) { + if (isChannelsPage && itemId === 'channels') { lnkMediaFolder.classList.add('navMenuOption-selected'); - } else if (isLiveTvPage && 'livetv' === itemId) { + } else if (isLiveTvPage && itemId === 'livetv') { lnkMediaFolder.classList.add('navMenuOption-selected'); - } else if (isEditorPage && 'editor' === itemId) { + } else if (isEditorPage && itemId === 'editor') { lnkMediaFolder.classList.add('navMenuOption-selected'); - } else if (isMySyncPage && 'manageoffline' === itemId && -1 != window.location.href.toString().indexOf('mode=download')) { + } else if (isMySyncPage && itemId === 'manageoffline' && window.location.href.toString().indexOf('mode=download') != -1) { lnkMediaFolder.classList.add('navMenuOption-selected'); - } else if (isMySyncPage && 'syncotherdevices' === itemId && -1 == window.location.href.toString().indexOf('mode=download')) { + } else if (isMySyncPage && itemId === 'syncotherdevices' && window.location.href.toString().indexOf('mode=download') == -1) { lnkMediaFolder.classList.add('navMenuOption-selected'); } else if (id && itemId == id) { lnkMediaFolder.classList.add('navMenuOption-selected'); @@ -753,7 +753,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } if (headerBackButton) { - if ('false' !== page.getAttribute('data-backbutton') && appRouter.canGoBack()) { + if (page.getAttribute('data-backbutton') !== 'false' && appRouter.canGoBack()) { headerBackButton.classList.remove('hide'); } else { headerBackButton.classList.add('hide'); @@ -863,11 +863,11 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' document.title = 'Jellyfin'; }, setTitle: function (title) { - if (null == title) { + if (title == null) { return void LibraryMenu.setDefaultTitle(); } - if ('-' === title) { + if (title === '-') { title = ''; } @@ -922,7 +922,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' } } - if ('library' !== currentDrawerType) { + if (currentDrawerType !== 'library') { refreshLibraryDrawer(); } } diff --git a/src/scripts/playlists.js b/src/scripts/playlists.js index 123d1c7859..bdfd155c55 100644 --- a/src/scripts/playlists.js +++ b/src/scripts/playlists.js @@ -60,7 +60,7 @@ export default function (view, params) { const viewStyle = getPageData(view).view; const itemsContainer = view.querySelector('.itemsContainer'); - if ('List' == viewStyle) { + if (viewStyle == 'List') { itemsContainer.classList.add('vertical-list'); itemsContainer.classList.remove('vertical-wrap'); } else { diff --git a/src/scripts/site.js b/src/scripts/site.js index 2beb45959a..f1b49f6342 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -6,7 +6,7 @@ function getWindowLocationSearch(win) { if (!search) { var index = window.location.href.indexOf('?'); - if (-1 != index) { + if (index != -1) { search = window.location.href.substring(index); } } @@ -22,7 +22,7 @@ window.getParameterByName = function (name, url) { var regex = new RegExp(regexS, 'i'); var results = regex.exec(url || getWindowLocationSearch()); - if (null == results) { + if (results == null) { return ''; } @@ -73,7 +73,7 @@ var Dashboard = { var urlLower = window.location.href.toLowerCase(); var index = urlLower.lastIndexOf('/web'); - if (-1 != index) { + if (index != -1) { return urlLower.substring(0, index); } @@ -178,7 +178,7 @@ var Dashboard = { }); }, alert: function (options) { - if ('string' == typeof options) { + if (typeof options == 'string') { return void require(['toast'], function (toast) { toast({ text: options @@ -197,7 +197,7 @@ var Dashboard = { var capabilities = { PlayableMediaTypes: ['Audio', 'Video'], SupportedCommands: ['MoveUp', 'MoveDown', 'MoveLeft', 'MoveRight', 'PageUp', 'PageDown', 'PreviousLetter', 'NextLetter', 'ToggleOsd', 'ToggleContextMenu', 'Select', 'Back', 'SendKey', 'SendString', 'GoHome', 'GoToSettings', 'VolumeUp', 'VolumeDown', 'Mute', 'Unmute', 'ToggleMute', 'SetVolume', 'SetAudioStreamIndex', 'SetSubtitleStreamIndex', 'DisplayContent', 'GoToSearch', 'DisplayMessage', 'SetRepeatMode', 'SetShuffleQueue', 'ChannelUp', 'ChannelDown', 'PlayMediaSource', 'PlayTrailers'], - SupportsPersistentIdentifier: 'cordova' === self.appMode || 'android' === self.appMode, + SupportsPersistentIdentifier: self.appMode === 'cordova' || self.appMode === 'android', SupportsMediaControl: true }; appHost.getPushTokenInfo(); @@ -452,8 +452,8 @@ function initClient() { } function onGlobalizeInit(browser, globalize) { - if ('android' === self.appMode) { - if (-1 !== self.location.href.toString().toLowerCase().indexOf('start=backgroundsync')) { + if (self.appMode === 'android') { + if (self.location.href.toString().toLowerCase().indexOf('start=backgroundsync') !== -1) { return onAppReady(browser); } } @@ -863,7 +863,7 @@ function initClient() { }); define('appRouter', [componentsPath + '/appRouter', 'itemHelper'], function (appRouter, itemHelper) { function showItem(item, serverId, options) { - if ('string' == typeof item) { + if (typeof item == 'string') { require(['connectionManager'], function (connectionManager) { var apiClient = connectionManager.currentApiClient(); apiClient.getItem(apiClient.getCurrentUserId(), item).then(function (item) { @@ -871,7 +871,7 @@ function initClient() { }); }); } else { - if (2 == arguments.length) { + if (arguments.length == 2) { options = arguments[1]; } @@ -953,27 +953,27 @@ function initClient() { var itemType = item.Type || (options ? options.itemType : null); var serverId = item.ServerId || options.serverId; - if ('settings' === item) { + if (item === 'settings') { return 'mypreferencesmenu.html'; } - if ('wizard' === item) { + if (item === 'wizard') { return 'wizardstart.html'; } - if ('manageserver' === item) { + if (item === 'manageserver') { return 'dashboard.html'; } - if ('recordedtv' === item) { + if (item === 'recordedtv') { return 'livetv.html?tab=3&serverId=' + options.serverId; } - if ('nextup' === item) { + if (item === 'nextup') { return 'list.html?type=nextup&serverId=' + options.serverId; } - if ('list' === item) { + if (item === 'list') { var url = 'list.html?serverId=' + options.serverId + '&type=' + options.itemTypes; if (options.isFavorite) { @@ -983,61 +983,61 @@ function initClient() { return url; } - if ('livetv' === item) { - if ('programs' === options.section) { + if (item === 'livetv') { + if (options.section === 'programs') { return 'livetv.html?tab=0&serverId=' + options.serverId; } - if ('guide' === options.section) { + if (options.section === 'guide') { return 'livetv.html?tab=1&serverId=' + options.serverId; } - if ('movies' === options.section) { + if (options.section === 'movies') { return 'list.html?type=Programs&IsMovie=true&serverId=' + options.serverId; } - if ('shows' === options.section) { + if (options.section === 'shows') { return 'list.html?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId=' + options.serverId; } - if ('sports' === options.section) { + if (options.section === 'sports') { return 'list.html?type=Programs&IsSports=true&serverId=' + options.serverId; } - if ('kids' === options.section) { + if (options.section === 'kids') { return 'list.html?type=Programs&IsKids=true&serverId=' + options.serverId; } - if ('news' === options.section) { + if (options.section === 'news') { return 'list.html?type=Programs&IsNews=true&serverId=' + options.serverId; } - if ('onnow' === options.section) { + if (options.section === 'onnow') { return 'list.html?type=Programs&IsAiring=true&serverId=' + options.serverId; } - if ('dvrschedule' === options.section) { + if (options.section === 'dvrschedule') { return 'livetv.html?tab=4&serverId=' + options.serverId; } - if ('seriesrecording' === options.section) { + if (options.section === 'seriesrecording') { return 'livetv.html?tab=5&serverId=' + options.serverId; } return 'livetv.html?serverId=' + options.serverId; } - if ('SeriesTimer' == itemType) { + if (itemType == 'SeriesTimer') { return 'details?seriesTimerId=' + id + '&serverId=' + serverId; } - if ('livetv' == item.CollectionType) { + if (item.CollectionType == 'livetv') { return 'livetv.html'; } - if ('Genre' === item.Type) { + if (item.Type === 'Genre') { url = 'list.html?genreId=' + item.Id + '&serverId=' + serverId; - if ('livetv' === context) { + if (context === 'livetv') { url += '&type=Programs'; } @@ -1048,7 +1048,7 @@ function initClient() { return url; } - if ('MusicGenre' === item.Type) { + if (item.Type === 'MusicGenre') { url = 'list.html?musicGenreId=' + item.Id + '&serverId=' + serverId; if (options.parentId) { @@ -1058,7 +1058,7 @@ function initClient() { return url; } - if ('Studio' === item.Type) { + if (item.Type === 'Studio') { url = 'list.html?studioId=' + item.Id + '&serverId=' + serverId; if (options.parentId) { @@ -1068,28 +1068,28 @@ function initClient() { return url; } - if ('folders' !== context && !itemHelper.isLocalItem(item)) { - if ('movies' == item.CollectionType) { + if (context !== 'folders' && !itemHelper.isLocalItem(item)) { + if (item.CollectionType == 'movies') { url = 'movies.html?topParentId=' + item.Id; - if (options && 'latest' === options.section) { + if (options && options.section === 'latest') { url += '&tab=1'; } return url; } - if ('tvshows' == item.CollectionType) { + if (item.CollectionType == 'tvshows') { url = 'tv.html?topParentId=' + item.Id; - if (options && 'latest' === options.section) { + if (options && options.section === 'latest') { url += '&tab=2'; } return url; } - if ('music' == item.CollectionType) { + if (item.CollectionType == 'music') { return 'music.html?topParentId=' + item.Id; } } @@ -1102,7 +1102,7 @@ function initClient() { var contextSuffix = context ? '&context=' + context : ''; - if ('Series' == itemType || 'Season' == itemType || 'Episode' == itemType) { + if (itemType == 'Series' || itemType == 'Season' || itemType == 'Episode') { return 'details?id=' + id + contextSuffix + '&serverId=' + serverId; } diff --git a/src/scripts/themeLoader.js b/src/scripts/themeLoader.js index 3a3a60e565..f7b78e70ab 100644 --- a/src/scripts/themeLoader.js +++ b/src/scripts/themeLoader.js @@ -13,7 +13,7 @@ pageClassOn('viewbeforeshow', 'page', function () { var theme; var context; - if ('a' === viewType) { + if (viewType === 'a') { theme = userSettings.dashboardTheme(); context = 'serverdashboard'; } else { From 398ed86a2c9d9080e823e5ea859946a6ad6474d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Fri, 31 Jul 2020 10:14:42 +0000 Subject: [PATCH 065/463] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index f6f7d52b9a..dac9109dbf 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1652,5 +1652,7 @@ "Writers": "Scénáristé", "ClearQueue": "Vymazat frontu", "StopPlayback": "Zastavit přehrávání", - "ViewAlbumArtist": "Zobrazit interpreta alba" + "ViewAlbumArtist": "Zobrazit interpreta alba", + "PreviousTrack": "Předchozí", + "NextTrack": "Další" } From 79a59d17c36fdbae6b530bfd5eca9ea970c95a16 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 31 Jul 2020 22:16:20 +0900 Subject: [PATCH 066/463] rename chromecast flavors --- .../playbackSettings/playbackSettings.template.html | 2 +- src/plugins/chromecastPlayer/plugin.js | 6 +++--- src/strings/en-us.json | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/playbackSettings/playbackSettings.template.html b/src/components/playbackSettings/playbackSettings.template.html index 03af5d6faa..700215223d 100644 --- a/src/components/playbackSettings/playbackSettings.template.html +++ b/src/components/playbackSettings/playbackSettings.template.html @@ -85,7 +85,7 @@
diff --git a/src/plugins/chromecastPlayer/plugin.js b/src/plugins/chromecastPlayer/plugin.js index d3fc8d0ef8..f4acc6d8b3 100644 --- a/src/plugins/chromecastPlayer/plugin.js +++ b/src/plugins/chromecastPlayer/plugin.js @@ -54,7 +54,7 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' // production version registered with google // replace this value if you want to test changes on another instance var applicationStable = 'F007D354'; - var applicationNightly = '6F511C87'; + var applicationUnstable = '6F511C87'; var messageNamespace = 'urn:x-cast:com.connectsdk'; @@ -99,8 +99,8 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', ' } var applicationID = applicationStable; - if (userSettings.chromecastVersion() === 'nightly') { - applicationID = applicationNightly; + if (userSettings.chromecastVersion() === 'unstable') { + applicationID = applicationUnstable; } // request session diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 6024363f05..52f8ce05ce 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -760,6 +760,7 @@ "LabelChromecastVersion": "Chromecast Version", "LabelStable": "Stable", "LabelNightly": "Nightly", + "LabelUnstable": "Unstable", "LabelNewName": "New name:", "LabelNewPassword": "New password:", "LabelNewPasswordConfirm": "New password confirm:", From ae520390c62db5e17256bcec283307b72f477c68 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 31 Jul 2020 15:18:32 +0200 Subject: [PATCH 067/463] Remove image size hack --- src/components/cardbuilder/cardBuilder.js | 2 +- src/components/cardbuilder/chaptercardbuilder.js | 2 +- src/components/listview/listview.js | 4 ++-- src/components/remotecontrol/remotecontrol.js | 4 ++-- src/controllers/itemDetails/index.js | 2 +- src/controllers/playback/video/index.js | 12 ++++++------ 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index edb9db28ba..4a37331ef4 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -277,7 +277,7 @@ import 'programStyles'; */ function getImageWidth(shape, screenWidth, isOrientationLandscape) { const imagesPerRow = getPostersPerRow(shape, screenWidth, isOrientationLandscape); - return Math.round(screenWidth / imagesPerRow) * 2; + return Math.round(screenWidth / imagesPerRow); } /** diff --git a/src/components/cardbuilder/chaptercardbuilder.js b/src/components/cardbuilder/chaptercardbuilder.js index 1521650ed0..642a87db2a 100644 --- a/src/components/cardbuilder/chaptercardbuilder.js +++ b/src/components/cardbuilder/chaptercardbuilder.js @@ -73,7 +73,7 @@ import browser from 'browser'; if (ImageTag) { return apiClient.getScaledImageUrl(Id, { - maxWidth: maxWidth * 2, + maxWidth: maxWidth, tag: ImageTag, type: 'Chapter', index diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js index 6b20159130..11e8e953ae 100644 --- a/src/components/listview/listview.js +++ b/src/components/listview/listview.js @@ -81,7 +81,7 @@ import 'emby-playstatebutton'; let itemId; const options = { - maxWidth: width * 2, + maxWidth: width, type: 'Primary' }; @@ -108,7 +108,7 @@ import 'emby-playstatebutton'; function getChannelImageUrl(item, width) { const apiClient = connectionManager.getApiClient(item.ServerId); const options = { - maxWidth: width * 2, + maxWidth: width, type: 'Primary' }; diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index ca1657605b..54e09def84 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -171,9 +171,9 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL } var url = item ? seriesImageUrl(item, { - maxHeight: 300 * 2 + maxHeight: 300 }) || imageUrl(item, { - maxHeight: 300 * 2 + maxHeight: 300 }) : null; let contextButton = context.querySelector('.btnToggleContextMenu'); diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 992eaf0482..8913002327 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -731,7 +731,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSetti disableIndicators: true, disableHoverMenu: true, overlayPlayButton: true, - width: dom.getWindowSize().innerWidth * 0.5 + width: dom.getWindowSize().innerWidth * 0.25 }); elem.innerHTML = cardHtml; diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index e40ea4c0ad..a8bd0e01f3 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -330,24 +330,24 @@ import 'css!assets/css/videoosd'; if (item) { let imgUrl = seriesImageUrl(item, { - maxWidth: osdPoster.clientWidth * 2, + maxWidth: osdPoster.clientWidth, type: 'Primary' }) || seriesImageUrl(item, { - maxWidth: osdPoster.clientWidth * 2, + maxWidth: osdPoster.clientWidth, type: 'Thumb' }) || imageUrl(item, { - maxWidth: osdPoster.clientWidth * 2, + maxWidth: osdPoster.clientWidth, type: 'Primary' }); if (!imgUrl && secondaryItem && (imgUrl = seriesImageUrl(secondaryItem, { - maxWidth: osdPoster.clientWidth * 2, + maxWidth: osdPoster.clientWidth, type: 'Primary' }) || seriesImageUrl(secondaryItem, { - maxWidth: osdPoster.clientWidth * 2, + maxWidth: osdPoster.clientWidth, type: 'Thumb' }) || imageUrl(secondaryItem, { - maxWidth: osdPoster.clientWidth * 2, + maxWidth: osdPoster.clientWidth, type: 'Primary' })), imgUrl) { return void (osdPoster.innerHTML = ''); From e066b792c1614d5d5d6973f655527a6a28ae9bb6 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 31 Jul 2020 22:24:38 +0900 Subject: [PATCH 068/463] remove strings that only exist in translations --- src/strings/af.json | 1 - src/strings/ar.json | 2 - src/strings/bg-bg.json | 6 -- src/strings/ca.json | 2 - src/strings/cs.json | 88 ---------------------- src/strings/da.json | 113 ---------------------------- src/strings/de.json | 26 ------- src/strings/el.json | 5 -- src/strings/en-gb.json | 14 ---- src/strings/es-ar.json | 88 ---------------------- src/strings/es-mx.json | 11 --- src/strings/es.json | 10 --- src/strings/es_419.json | 3 - src/strings/fa.json | 8 -- src/strings/fi.json | 25 ------- src/strings/fr-ca.json | 13 ---- src/strings/fr.json | 8 -- src/strings/gsw.json | 14 ---- src/strings/he.json | 1 - src/strings/hr.json | 3 - src/strings/hu.json | 11 --- src/strings/is-is.json | 1 - src/strings/it.json | 7 -- src/strings/ja.json | 3 - src/strings/kk.json | 35 --------- src/strings/ko.json | 6 -- src/strings/lt-lt.json | 3 - src/strings/lv.json | 3 - src/strings/nb.json | 7 -- src/strings/nl.json | 17 ----- src/strings/pl.json | 7 -- src/strings/pt-br.json | 7 -- src/strings/pt-pt.json | 7 -- src/strings/pt.json | 5 -- src/strings/ro.json | 6 -- src/strings/ru.json | 7 -- src/strings/sk.json | 8 -- src/strings/sl-si.json | 26 ------- src/strings/sv.json | 7 -- src/strings/tr.json | 1 - src/strings/vi.json | 1 - src/strings/zh-cn.json | 13 ---- src/strings/zh-hk.json | 1 - src/strings/zh-tw.json | 159 ---------------------------------------- 44 files changed, 789 deletions(-) diff --git a/src/strings/af.json b/src/strings/af.json index 5c4e13dc7c..bab716af49 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -83,7 +83,6 @@ "Wednesday": "Woensdag", "Watched": "Gekyk", "ViewPlaybackInfo": "Beskou terugspeel inligting", - "ViewArtist": "Beskou kunstenaar", "ViewAlbum": "Beskou album", "VideoRange": "Video reekse", "Vertical": "Vertikaal", diff --git a/src/strings/ar.json b/src/strings/ar.json index b069301f92..216cbf7074 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -548,7 +548,6 @@ "LabelVaapiDeviceHelp": "هذه هي عقدة التصيير التي ستستخدم من قبل التسريع بعتاد الحاسوب.", "LabelValue": "القيمة:", "LabelVersionInstalled": "{0} مثبتة", - "LabelVersionNumber": "الإصدار {0}", "LabelXDlnaCap": "سقف X-Dlna:", "LabelXDlnaCapHelp": "تحدد محتوى عنصر X_DLNACAP في النطاق الاسمي لـ urn:schemas-dlna-org:device-1-0 .", "LabelXDlnaDoc": "وثيقة X-Dlna:", @@ -599,7 +598,6 @@ "MessageCreateAccountAt": "أنشئ حساب في {0}", "MessageDeleteTaskTrigger": "هل أنت متأكد أنك تريد حذف زناد المهمة؟", "MessageDirectoryPickerBSDInstruction": "من أجل BSD، يمكنك أن تضبط إعدادات التخزين دخال حساب FreeNAS Jail الخاص بك لكي يتمكن أمبي أن يتصل به.", - "MessageDirectoryPickerInstruction": "يمكن إدخال مسارات الشبكة يدوياً في حال أن زر الشبكة يخفق في اكتشاف أجهزتك. على سبيل المثال، {0} أو {1}.", "MessageDirectoryPickerLinuxInstruction": "من أجل أنظمة التشغيل التالية: Linux أو Arch Linux أو CentOS أو Debian أو Fedora أو openSUSE أو Ubuntu، يجب أن تمنح المستخدم النظامي صلاحية القراءة ليتمكن من الوصول إلى أماكن التخزين.", "MessageEnablingOptionLongerScans": "قد يؤدي تمكين هذا الخيار إلى إبطاء البحث في المكتبات بشكل ملحوظ.", "MessageFileReadError": "حصل خطأ أثناء قراءة الملف. الرجاء المحاولة مرة اخرى.", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index 619ccbe825..9af8c54435 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -451,7 +451,6 @@ "LabelUserLibrary": "Библиотека на потребителя:", "LabelUsername": "Потребителско име:", "LabelVersion": "Версия:", - "LabelVersionNumber": "Версия {0}", "LabelYear": "Година:", "LabelYourFirstName": "Първото ви име:", "LabelYoureDone": "Готови сте!", @@ -776,7 +775,6 @@ "ValueVideoCodec": "Видеокодек: {0}", "Vertical": "Отвесно", "ViewAlbum": "Преглед на албума", - "ViewArtist": "Преглед на изпълнителя", "Watched": "Изгледано", "Wednesday": "Сряда", "WelcomeToProject": "Добре дошли в Емби!", @@ -1029,7 +1027,6 @@ "HeaderSelectMetadataPathHelp": "Търси или въведи ръчно пътя ,където искаш да се съхраняват метаданните.Папката трябва да има права за запис.", "HeaderSelectMetadataPath": "Избери папка със метаданни", "HeaderSelectCertificatePath": "Избери папка със сертификат", - "HeaderRestartingServer": "Рестартиране на сървъра", "HeaderResponseProfileHelp": "Профилите за комуникация дават възможност да се настрои типът информация ,която се изпраща към устройството при възпроизвеждането на определени типове медия.", "HeaderRemoveMediaLocation": "Премахни папката с медия", "HeaderRemoteAccessSettings": "Настройки за отдалечен достъп", @@ -1254,8 +1251,6 @@ "SmartSubtitlesHelp": "Когато аудиото е чуждоезично ще бъдат заредени субтитри според зададените настройки за език.", "ErrorAddingListingsToSchedulesDirect": "Възникна грешка при добавянето на списъка към вашия \"Schedules Direct\" акаунт.Услугата позволява определен брой списъци към един акаунт.Ще е необходимо да влезете в акаунта си (през сайта на услугата) и да отстраните другите списъци преди да продължите с добавянето на нови.", "LabelIdentificationFieldHelp": "Подниз или регулярен израз с различаване на главни букви.", - "EnableFastImageFadeInHelp": "Използвай бързи анимации преходи", - "EnableFastImageFadeIn": "Бързи анимации", "LabelScreensaver": "Скрийнсейвър:", "LabelScheduledTaskLastRan": "Последно пускан {0}, заел {1}.", "LabelRuntimeMinutes": "Продължителност (в минути):", @@ -1419,7 +1414,6 @@ "SaveSubtitlesIntoMediaFolders": "Запазване на субтитрите в папките с медията", "SaveChanges": "Запазете промените", "RunAtStartup": "Пускай при стартиране", - "RestartPleaseWaitMessage": "Моля, изчакайте, докато сървъра се изключи и рестартира. Това може да отнеме минута или две.", "RepeatOne": "Повтори един път", "RepeatMode": "Режим на повторение", "RepeatEpisodes": "Повтори епизодите", diff --git a/src/strings/ca.json b/src/strings/ca.json index 8c0fa300cc..2324c31e4c 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -438,7 +438,6 @@ "LabelUserLibrary": "Biblioteca d'usuari:", "LabelUsername": "Nom d'usuari:", "LabelValue": "Valor:", - "LabelVersionNumber": "Versió {0}", "LabelYear": "Any:", "LabelYourFirstName": "El teu nom:", "LabelYoureDone": "Ja està!", @@ -719,7 +718,6 @@ "ValueOneMusicVideo": "1 vídeo musical", "ValueSpecialEpisodeName": "Especial - {0}", "ViewAlbum": "Veure àlbum", - "ViewArtist": "Veure artista", "ViewPlaybackInfo": "Veure informació de reproducció", "Watched": "Vists", "Wednesday": "Dimecres", diff --git a/src/strings/cs.json b/src/strings/cs.json index dac9109dbf..fcabe3f3b3 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -110,11 +110,6 @@ "CancelRecording": "Zrušit nahrávání", "CancelSeries": "Ukončit Seriál", "Categories": "Kategorie", - "CategoryApplication": "Aplikace", - "CategoryPlugin": "Zásuvný modul", - "CategorySync": "Synchronizace", - "CategorySystem": "Systém", - "CategoryUser": "Uživatel", "ChannelAccessHelp": "Vyberte kanály, které chcete sdílet s tímto uživatelem. Administrátoři budou moci upravovat všechny kanály pomocí správce metadat.", "ChannelNameOnly": "Kanál {0} jen", "ChannelNumber": "Číslo kanálu", @@ -162,10 +157,6 @@ "DoNotRecord": "Nenahrávat", "Down": "Dolů", "Download": "Stáhnout", - "Downloaded": "Staženo", - "Downloading": "Stahování", - "DownloadingDots": "Stahování...", - "Downloads": "Stahování", "DrmChannelsNotImported": "Kanál s DRM nebude importován.", "DropShadow": "Stín", "EasyPasswordHelp": "Váš jednoduchý kód PIN slouží k přístupu v režimu offline v podporovaných klientech Jellyfin a k snadnému přihlášení v místní síti.", @@ -195,7 +186,6 @@ "ErrorDeletingItem": "Při odstranění položky ze serveru Jellyfin došlo k chybě. Zkontrolujte prosím, zda má server Jellyfin oprávnění k zápisu do složky médií, a zkuste to prosím znovu.", "ErrorGettingTvLineups": "Došlo k chybě při stahování TV sestav. Ujistěte se prosím, že zadané informace jsou správné a zkuste to znovu.", "ErrorMessageStartHourGreaterThanEnd": "Čas ukončení musí být větší než čas startu.", - "ErrorMessageUsernameInUse": "Uživatelské jméno se již používá. Prosím, vyberte nový název a zkuste to znovu.", "ErrorPleaseSelectLineup": "Vyberte prosím sestavu a zkuste to znovu. Pokud nejsou k dispozici žádné sestavy, zkontrolujte, zda je vaše uživatelské jméno, heslo a poštovní směrovací číslo správné.", "ErrorSavingTvProvider": "Při ukládání poskytovatele TV došlo k chybě. Prosím, ujistěte se, že je přístupný a zkuste to znovu.", "ExitFullscreen": "Opustit celou obrazovku", @@ -412,7 +402,6 @@ "HeaderXmlDocumentAttribute": "Atributy XML dokumentu", "HeaderXmlDocumentAttributes": "Atributy XML dokumentu", "HeaderXmlSettings": "Nastavení XML", - "HeaderYear": "Rok", "HeaderYears": "Roky", "HeadersFolders": "Složky", "Help": "Nápověda", @@ -433,8 +422,6 @@ "LabelAccessDay": "Den týdne:", "LabelAccessEnd": "Konec:", "LabelAccessStart": "Začátek:", - "LabelAddedOnDate": "Přidáno {0}", - "LabelAirDate": "Dny vysílání:", "LabelAirDays": "Vysíláno:", "LabelAirTime": "Čas vysílání:", "LabelAirsAfterSeason": "Vysíláno po sezóně:", @@ -451,10 +438,8 @@ "LabelAllowHWTranscoding": "Povolit hardwarové překódování", "LabelAllowServerAutoRestart": "Povolit automatický restart serveru pro provedení aktualizace", "LabelAllowServerAutoRestartHelp": "Server bude restartován pouze v době nečinnosti, pokud nejsou aktivní žádní uživatelé.", - "LabelAnytime": "Kdykoliv", "LabelAppName": "Název aplikace", "LabelAppNameExample": "Příklad: Sickbeard, Sonarr", - "LabelArtist": "Umělec", "LabelArtists": "Umělci:", "LabelArtistsHelp": "Odděl pomocí ;", "LabelAudio": "Zvuk", @@ -486,8 +471,6 @@ "LabelDateAddedBehaviorHelp": "Pokud je hodnota metadat přítomna, bude vždy použita před některou z těchto možností.", "LabelDay": "Den:", "LabelDeathDate": "Datum úmrtí:", - "LabelDefaultForcedStream": "(Defaultní/Vynucené)", - "LabelDefaultStream": "(Defaultní)", "LabelDefaultUser": "Výchozí uživatel:", "LabelDefaultUserHelp": "Určí, která uživatelská knihovna by měla být zobrazena na připojených zařízení. Nastavení může být přepsáno pomocí profilů pro každé zařízení.", "LabelDeviceDescription": "Popis zařízení", @@ -496,15 +479,12 @@ "LabelDisplayLanguage": "Jazyk rozhraní:", "LabelDisplayLanguageHelp": "Překlad projektu Jellyfin se neustále vyvíjí.", "LabelDisplayMissingEpisodesWithinSeasons": "Zobrazit chybějící epizody", - "LabelDisplayMissingEpisodesWithinSeasonsHelp": "Toto musí být zapnuto pro knihovny TV v nastavení Jellyfin serveru.", "LabelDisplayMode": "Režim zobrazení:", "LabelDisplayName": "Zobrazované jméno:", "LabelDisplayOrder": "Pořadí zobrazení:", "LabelDisplaySpecialsWithinSeasons": "Zobraz speciální epizody dle odvysílaných sezón", "LabelDownMixAudioScale": "Zesílení audia při downmix:", "LabelDownMixAudioScaleHelp": "Zvýšit hlasitost při downmixování. Nastavte na 1 pro zachování původní hlasitosti.", - "LabelDownloadInternetMetadata": "Stáhnout přebal a metadata z Internetu", - "LabelDownloadInternetMetadataHelp": "Jellyfin server může stahovat informace o vašich médiích, aby umožnil vylepšené prezentace.", "LabelDownloadLanguages": "Stahované jazyky:", "LabelDropImageHere": "Sem přetáhněte obrázek nebo klikněte pro procházení.", "LabelDropShadow": "Typ zvýraznění titulků:", @@ -531,7 +511,6 @@ "LabelEpisodeNumber": "Číslo epizody:", "LabelEvent": "Událost:", "LabelEveryXMinutes": "Každý:", - "LabelExternalPlayers": "Externí přehrávače:", "LabelExtractChaptersDuringLibraryScan": "Extrakce obrázků kapitol během prohledávání vaší knihovny", "LabelExtractChaptersDuringLibraryScanHelp": "Vytvářejte obrázky kapitol při importu videí během skenování knihovny. Jinak budou obrázky extrahovány během naplánované úlohy, což umožňuje rychlejší dokončení běžného skenování knihovny.", "LabelFailed": "Selhání", @@ -540,9 +519,7 @@ "LabelFont": "Písmo:", "LabelForgotPasswordUsernameHelp": "Zadej své uživatelské jméno, jestliže se má pamatovat.", "LabelFormat": "Formát:", - "LabelFree": "Zdarma", "LabelFriendlyName": "Přívětivý název:", - "LabelFromHelp": "Například: {0} (na serveru)", "LabelGroupMoviesIntoCollections": "Seskupit filmy do kolekcí", "LabelGroupMoviesIntoCollectionsHelp": "Při zobrazení seznamů filmu, budou filmy patřící do kolekce, zobrazeny jako jedna položka.", "LabelH264Crf": "H264 kódování CRF:", @@ -573,7 +550,6 @@ "LabelKodiMetadataSaveImagePaths": "Uložit cesty k obrázkům do NFO souborů", "LabelKodiMetadataSaveImagePathsHelp": "Toto nastavení je doporučeno, pokud používáte názvy souborů (obrázků), které nejsou v souladu s pokyny Kodi.", "LabelLanguage": "Jazyk:", - "LabelLastResult": "Poslední výsledky:", "LabelLineup": "V pořadí:", "LabelLocalHttpServerPortNumber": "Lokální HTTP port:", "LabelLocalHttpServerPortNumberHelp": "Číslo portu TCP, ke kterému by se měl HTTP server Jellyfin připojit.", @@ -681,7 +657,6 @@ "LabelSelectVersionToInstall": "Vyber verzi k instalaci:", "LabelSendNotificationToUsers": "Odeslat oznámení pro:", "LabelSerialNumber": "Sériové číslo", - "LabelSeries": "Seriály:", "LabelSeriesRecordingPath": "Složka pro nahrávání seriálů (volitelné):", "LabelServerHostHelp": "192.168.1.100:8096 nebo https://mujserver.cz", "LabelSkipBackLength": "Délka posunu zpět:", @@ -733,7 +708,6 @@ "LabelValue": "Hodnota:", "LabelVersion": "Verze:", "LabelVersionInstalled": "{0} instalováno", - "LabelVersionNumber": "Verze {0}", "LabelXDlnaCap": "Zachytávací zařízení X-DLNA:", "LabelXDlnaCapHelp": "Určuje obsah prvku X_DLNACAP ve jmenném prostoru urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDoc": "Dokumentace X-DLNA:", @@ -796,7 +770,6 @@ "MessageCreateAccountAt": "Vytvořit účet v {0}", "MessageDeleteTaskTrigger": "Opravdu si přejete odebrat spouštění úlohy?", "MessageDirectoryPickerBSDInstruction": "V operačním systému FreeBSD či FreeNAS může být nutné nakonfigurovat úložiště přímo pomocí izolační funkce jail, aby k němu měl Jellyfin přístup.", - "MessageDirectoryPickerInstruction": "Síťové cesty lze zadat ručně v případě, že tlačítko 'Síť' nedokáže automaticky lokalizovat vaše zařízení. Například, {0} nebo {1}.", "MessageDirectoryPickerLinuxInstruction": "Pro systémy Linux jako Arch Linux, CentOS, Debian, Fedora, OpenSUSE nebo Ubuntu musíte udělit uživateli služby oprávnění alespoň pro čtení.", "MessageDownloadQueued": "Stažení zařazeno.", "MessageFileReadError": "Došlo k chybě při čtení souboru. Prosím zkuste to znovu.", @@ -828,10 +801,6 @@ "MetadataSettingChangeHelp": "Změna nastavení metadat bude mít vliv na nový obsah, který bude přidáván. Chcete-li aktualizovat stávající obsah, otevřte obrazovku s detailem a klepněte na tlačítko Aktualizovat, nebo proveďte hromadnou aktualizaci pomocí správce metadat.", "MinutesAfter": "minut po", "MinutesBefore": "minut předem", - "MissingBackdropImage": "Nedostupný obrázek pozadí.", - "MissingEpisode": "Chybí epizoda.", - "MissingLogoImage": "Nedostupný obrázek loga.", - "MissingPrimaryImage": "Nedostupný primární obrázek.", "Mobile": "Mobilní", "Monday": "Pondělí", "MoreFromValue": "Více z {0}", @@ -878,8 +847,6 @@ "OptionAllowUserToManageServer": "Povolit tomuto uživateli správu serveru", "OptionAllowVideoPlaybackRemuxing": "Umožní přehrávání videa, která vyžaduje konverzi bez opětovného překódování", "OptionAllowVideoPlaybackTranscoding": "Povolit přehrávání videa, které vyžaduje překódování", - "OptionAnyNumberOfPlayers": "Jakýkoliv", - "OptionArt": "Umění", "OptionArtist": "Umělec", "OptionAscending": "Vzestupně", "OptionAuto": "Automaticky", @@ -1012,10 +979,7 @@ "PlayFromBeginning": "Přehrát od začátku", "PlayNext": "Přehrát další", "PlayNextEpisodeAutomatically": "Automaticky přehrávat další epizodu", - "PlayOnAnotherDevice": "Přehrát na jiném zařízení", "PlaybackErrorNoCompatibleStream": "Tento klient není kompatibilní s médiem a server neodesílá kompatibilní formát médií.", - "PlaybackErrorNotAllowed": "V současné době nejste oprávněni přehrávat tento obsah. Pro více informací se obraťte se na správce systému.", - "PlaybackErrorPlaceHolder": "Chcete-li toto video přehrát, vložte disk.", "Played": "Přehráno", "Playlists": "Seznamy skladeb", "PleaseAddAtLeastOneFolder": "Přidejte prosím nejméně jednu složku do této knihovny pomocí tlačítka Přidat.", @@ -1194,7 +1158,6 @@ "ValueTimeLimitSingleHour": "Časový limit: 1 hodina", "ValueVideoCodec": "Video kodeky: {0}", "ViewAlbum": "Zobrazit album", - "ViewArtist": "Zobrazit úmělce", "Watched": "Zhlédnuto", "Wednesday": "Středa", "WelcomeToProject": "Vítejte v Jellyfin!", @@ -1214,7 +1177,6 @@ "Alerts": "Upozornění", "AllComplexFormats": "Všechny komplexní formáty (ASS, SSA, VOBSUB, PGS, SUB/IDX, atd.)", "AllLibraries": "Všechny knihovny", - "AllowDeletionFromAll": "Povolit smazání médií ze všech knihoven", "AllowMediaConversion": "Povolit konverzi médií", "AllowMediaConversionHelp": "Povolit nebo zakázat přístup k funkci konverze médií.", "AllowOnTheFlySubtitleExtraction": "Povolit extrahování titulků za běhu", @@ -1222,59 +1184,39 @@ "AllowRemoteAccess": "Povolit vzdálené připojení k tomuto serveru Jellyfin.", "AllowRemoteAccessHelp": "Pokud není zapnuto, všechna vzdálená připojení budou blokována.", "AllowedRemoteAddressesHelp": "Seznam IP adres nebo síťových masek oddělených čárkou pro sítě, ze kterých se lze vzdáleně připojit. Pokud necháte prázdné, všechny adresy budou povoleny.", - "AnamorphicVideoNotSupported": "Anamorfní video není podporováno", "AnyLanguage": "Jakýkoli jazyk", "Ascending": "Vzestupně", - "AudioBitDepthNotSupported": "Bitová hloubka zvuku není podporována", - "AudioSampleRateNotSupported": "Frekvence vzorkování zvuku není podporována", "AutoBasedOnLanguageSetting": "Automaticky (na základě jazykového nastavení)", "Banner": "Výřez plakátu", - "BestFit": "Nejvhodnější", "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.", "ButtonInfo": "Info", - "ButtonMenu": "Menu", "ButtonOk": "Ok", - "ButtonPlaylist": "Playlist", "ButtonRestart": "Restart", "ButtonScanAllLibraries": "Skenovat všechny knihovny", - "ButtonServer": "Server", "ButtonStart": "Start", - "ButtonStopRecording": "Zastavit nahrávání", "ChangingMetadataImageSettingsNewContent": "Změny nastavení metadat nebo stahování médií se budou týkat pouze nového obsahu přidaného do vaší knihovny. Chcete-li aplikovat změny na existující položky, musíte je aktualizovat ručně.", "Channels": "Kanály", "ColorPrimaries": "Primární barva", "ColorSpace": "Barva prostoru", "ColorTransfer": "Barva přenosu", - "ContainerBitrateExceedsLimit": "Datový tok média dosáhl limitu.", - "Convert": "Konverze", - "ConvertItemLimitHelp": "Volitelné. Nastavte limit počtu položek, které budou zkonvertovány.", - "ConvertUnwatchedVideosOnly": "Zkonvertovat pouze nepřehraná videa", - "ConvertUnwatchedVideosOnlyHelp": "Pouze nepřehraná videa budou zkonvertována.", - "ConvertingDots": "Konverze...", "CriticRating": "Kritické hodnocení", - "DefaultCameraUploadPathHelp": "Vyberte vlastní cestu nahrávání. Pokud zůstane prázdné, bude použita výchozí složka. Pokud použijete vlastní cestu, bude třeba ji přidat jako knihovnu v nastavení knihovny Jellyfin.", "Depressed": "Vytlačené", "Descending": "Klesající", "DetectingDevices": "Hledání zařízení", - "DirectPlayError": "Chyba přímého přehrávání", "DirectStreamHelp2": "Přímé streamování souboru používá velmi malý výkon bez ztráty kvality videa.", "Directors": "Režiséři", "Disabled": "Vypnuto", "DisplayInMyMedia": "Zobrazit na domovské obrazovce", "DisplayInOtherHomeScreenSections": "Zobrazení v sekcích domovské obrazovky, jako jsou nejnovější média, a pokračování ve sledování", - "DownloadItemLimitHelp": "Volitelné. Nastavte limit počtu položek, které budou staženy.", "DownloadsValue": "{0} ke stažení", - "DvrFeatureDescription": "Naplánujte individuálně záznamy z živého vysílání TV, záznamy seriálů a jiné s Jellyfin DVR.", "EditMetadata": "Upravit metadata", "EnableExternalVideoPlayersHelp": "Při spuštění přehrávání videa se zobrazí nabídka externího přehrávače.", "EnableHardwareEncoding": "Povolit hardwarové kódování videa", "EnableNextVideoInfoOverlayHelp": "Na konci přehrávání videa se zobrazí informace o příštím videu v aktuálním seznamu skladeb.", "EnableStreamLooping": "Autom. smyčka živých vysílání", "EnableStreamLoopingHelp": "Povolte, pokud živé vysílání obsahuje pouze několik vteřin dat a nemusí být nepřetržitě požadováno. Povolení této funkce, pokud není potřeba, může způsobit problémy.", - "ErrorConnectServerUnreachable": "Při provádění požadované operace došlo k chybě. Váš server není schopen kontaktovat náš server Jellyfin Connect na adrese {0}. Ujistěte se, že váš server má aktivní připojení k internetu a že komunikace je povolena jakýmkoli firewallem nebo bezpečnostním softwarem, který jste nainstalovali.", "EveryNDays": "Každých {0} dní", "Extras": "Doplňky", "Features": "Funkce", @@ -1283,47 +1225,33 @@ "General": "Obecné", "Genre": "Žánr", "GroupBySeries": "Seskupit podle série", - "HandledByProxy": "Zpracováno reverzním proxy", - "HeaderAddLocalUser": "Přidat místního uživatele", "HeaderAllowMediaDeletionFrom": "Povolit smazání médií z", "HeaderAppearsOn": "Objeví se", - "HeaderAudio": "Audio", "HeaderBlockItemsWithNoRating": "Blokovat položky s žádnými nebo nerozpoznanými informacemi o hodnocení:", - "HeaderCameraUploadHelp": "Aplikace Jellyfin mohou automaticky nahrávat fotografie z mobilních zařízení do serveru Jellyfin.", "HeaderChapterImages": "Obrázky kapitol", "HeaderConfigureRemoteAccess": "Nastavit vzdálený přístup", "HeaderDetectMyDevices": "Najít moje zařízení", "HeaderDownloadSync": "Stahování a synchronizace", - "HeaderExport": "Export", "HeaderExternalIds": "Externí Id:", - "HeaderFavoriteCollections": "Oblíbené sbírky", "HeaderFavoritePlaylists": "Oblíbené playlisty", "HeaderFavoriteVideos": "Oblíbená videa", "HeaderFetcherSettings": "Nastavení načítání", - "HeaderImageLogo": "Logo", "HeaderImageOptions": "Volby obrázku", "HeaderKodiMetadataHelp": "Chcete-li povolit nebo zakázat Nfo metadata, upravte nastavení knihovny v sekci ukládání metadat.", "HeaderLiveTV": "Televize", "HeaderLiveTv": "Televize", "HeaderLiveTvTunerSetup": "Nastavení televizního tuneru", - "HeaderMenu": "Menu", "HeaderNewDevices": "Nové zařízení", "HeaderPhotoAlbums": "Fotoalba", "HeaderPlayOn": "Přehrát", - "HeaderProgram": "Program", "HeaderRestart": "Restart", - "HeaderScreenSavers": "Spořiče obrazovky", "HeaderSeriesStatus": "Stav seriálu", "HeaderStopRecording": "Zastavit nahrávání", "HeaderSubtitleDownloads": "Stahování titulků", - "HeaderTV": "TV", "HeaderTypeImageFetchers": "{0} stahovačů obrázků", - "HeaderUpcomingEpisodes": "Následující epizody", - "HeaderVideo": "Video", "HeaderVideoType": "Formát videa", "Horizontal": "Vodorovně", "HttpsRequiresCert": "Chcete-li povolit zabezpečená připojení, budete muset zadat důvěryhodný certifikát SSL, například Let's Encrypt. Zadejte prosím certifikát nebo zakažte zabezpečená připojení.", - "KeepDownload": "Zachovat stahování", "LabelAlbum": "Album:", "LabelAllowedRemoteAddresses": "Filtr vzdálené IP adresy:", "LabelAllowedRemoteAddressesMode": "Režim filtru vzdálené IP adresy:", @@ -1332,23 +1260,19 @@ "LabelBlockContentWithTags": "Blokovat položky s tagy:", "LabelBurnSubtitles": "Vypálit titulky:", "LabelCache": "Cache:", - "LabelCameraUploadPathHelp": "Vyberte vlastní umístění nahraných souborů. Toto přepíše jakékoli výchozí nastavení v sekci nahrávání souborů z fotoaparátu. Pokud použijete vlastní umístění, bude potřeba jej také přidat jako knihovnu v nastavení Jellyfin.", "LabelCertificatePassword": "Heslo certifikátu:", "LabelCertificatePasswordHelp": "Pokud certifikát vyžaduje heslo, zadejte jej prosím zde.", "LabelCustomCertificatePath": "Vlastní umístění SSL certifikátu:", "LabelCustomCertificatePathHelp": "Umístění souboru PKCS #12, který obsahuje certifikát a soukromý klíč k povolení podpory TLS na vlastní doméně.", "LabelDateTimeLocale": "Místní nastavení data:", "LabelDefaultScreen": "Výchozí obrazovka:", - "LabelDeinterlacingMethod": "Metoda odstraněni prokládání:", "LabelDynamicExternalId": "{0} ID:", - "LabelEmail": "E-mail:", "LabelEnableHardwareDecodingFor": "Povolit hardwarové dekódování pro:", "LabelHomeNetworkQuality": "Kvalita na domácí síti:", "LabelInternetQuality": "Kvalita na internetu:", "LabelKodiMetadataUser": "Uložit data sledování uživatele do NFO souboru pro:", "LabelKodiMetadataUserHelp": "Uložit sledovaná data o přehrávání pro využití dalšími aplikacemi.", "LabelLanNetworks": "Sítě LAN:", - "LabelLimit": "Limit:", "LabelMaxStreamingBitrate": "Maximální kvalita streamování:", "LabelMetadata": "Metadata:", "LabelOptionalNetworkPathHelp": "Pokud je tato složka sdílena ve vaší síti, zadání cesty ke sdílené složce umožní aplikacím Jellyfin na jiných zařízeních přímý přístup k souborům s médii. Například {0} nebo {1}.", @@ -1356,7 +1280,6 @@ "LabelPlaylist": "Playlist:", "LabelReasonForTranscoding": "Důvod pro překódování:", "LabelRemoteClientBitrateLimitHelp": "Volitelný limit datového toku pro všechna síťová zařízení. To je užitečné, aby se zabránilo požadavkům na vyšší přenosovou rychlost než zvládne vaše připojení k internetu. To může mít za následek zvýšení zátěže procesoru, aby bylo možné převádět videa za běhu na nižší datový tok.", - "LabelSecureConnectionsMode": "Režim zabezpečeného připojení:", "LabelServerHost": "Host:", "LabelSimultaneousConnectionLimit": "Limit současně běžících streamů:", "LabelSkin": "Vzhled:", @@ -1368,17 +1291,13 @@ "LabelTag": "Tag:", "LabelTypeMetadataDownloaders": "{0} stahovače metadat:", "LabelTypeText": "Text", - "LabelUrl": "URL:", "LabelUserAgent": "User agent:", "LabelUserRemoteClientBitrateLimitHelp": "Přepíše výchozí globální hodnotu nastavenou v nastavení přehrávání serveru.", "LabelVideo": "Video", "LabelVideoCodec": "Video kodek:", "LeaveBlankToNotSetAPassword": "Můžete ponechat prázdné pro nastavení bez hesla.", - "LetterButtonAbbreviation": "A", - "LinkApi": "API", "LinksValue": "Odkazy: {0}", "LiveTV": "Televize", - "LiveTvFeatureDescription": "Streamujte televizní vysílání do libovolné aplikace Jellyfin s kompatibilním televizním tunerem instalovaným na serveru Jellyfin.", "Logo": "Logo", "ManageLibrary": "Spravovat knihovnu", "MediaInfoDefault": "Výchozí", @@ -1439,16 +1358,11 @@ "OptionProtocolHttp": "HTTP", "OptionRequirePerfectSubtitleMatchHelp": "Vyžadování dokonalé shody filtruje titulky tak, aby obsahovaly pouze ty, které byly testovány a ověřeny s vaším přesným videosouborem. Zrušení zaškrtnutí tohoto políčka zvýší pravděpodobnost stahování titulků, ale zvýší pravděpodobnost chybného nebo nesprávného textu titulků.", "PasswordResetProviderHelp": "Zvolte poskytovatele resetování hesla, který bude použit, když tento uživatel o něj požádá", - "PlaybackSettings": "Nastavení přehrávání", - "PlaybackSettingsIntro": "Chcete-li nastavit výchozí volby přehrávání, zastavte přehrávání videa a klepněte na ikonu uživatele v pravé horní části aplikace.", "PluginInstalledMessage": "Zásuvný modul byl úspěšně nainstalován. Server Jellyfin bude nutné restartovat, aby se změny projevily.", - "PluginTabAppClassic": "Jellyfin pro Windows Media Center", "PreferEmbeddedTitlesOverFileNames": "Preferovat vložené názvy nad názvy souborů", "PreferEmbeddedTitlesOverFileNamesHelp": "Toto určuje výchozí název zobrazení, pokud nejsou k dispozici žádná metadata z internetu nebo místní metadata.", - "PreferredNotRequired": "Preferováno, ale není vyžadováno", "Raised": "Vystupující", "Rate": "Hodnocení", - "RequiredForAllRemoteConnections": "Požadováno pro všechna vzdálená připojení", "SaveSubtitlesIntoMediaFolders": "Titulky ukládat do mediálních složek", "SaveSubtitlesIntoMediaFoldersHelp": "Ukládání titulků vedle video souborů umožní jejich snadnější správu.", "ScanLibrary": "Skenovat knihovnu", @@ -1464,8 +1378,6 @@ "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Tato nastavení platí také pro jakékoli přehrávání na Chromecastu spuštěné tímto zařízením.", "SubtitleAppearanceSettingsDisclaimer": "Tato nastavení se nevztahuje na grafické titulky (PGS, DVD atd.) nebo ASS/SSA titulky, které mají vlastní vložené styly.", "SubtitleDownloadersHelp": "Povolte a zařaďte preferované stahovače titulků v pořadí podle priority.", - "SubtitleSettings": "Nastavení titulků", - "SubtitleSettingsIntro": "Chcete-li nastavit výchozí vzhled a jazyk titulků, zastavte přehrávání videa a klepněte na ikonu uživatele v pravé horní části aplikace.", "TV": "TV", "TabDirectPlay": "Přímé přehrávání", "TabInfo": "Info", diff --git a/src/strings/da.json b/src/strings/da.json index fce7ba8551..9965294f4c 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -606,7 +606,6 @@ "LabelSaveLocalMetadataHelp": "Lagring af illustrationer og metadata i mediemapper vil placerer dem et sted hvor de nemt kan redigeres.", "LabelScheduledTaskLastRan": "Sidst kørt {0}, og tog {1}.", "LabelSeasonNumber": "Sæsonnummer:", - "LabelSecureConnectionsMode": "Sikker forbindelse mode:", "LabelSelectUsers": "Vælg brugere:", "LabelSelectVersionToInstall": "Vælg hvilken version der skal installeres:", "LabelSendNotificationToUsers": "Send underretning til:", @@ -637,9 +636,7 @@ "LabelTitle": "Titel:", "LabelTrackNumber": "Spor nummer:", "LabelTranscodingAudioCodec": "Lyd codec:", - "LabelTranscodingTempPath": "Midlertidig sti til omkodning:", "LabelTranscodingTempPathHelp": "Definér en bugerdefineret sti til transkodede filer til klienter. Lad den stå tom for at bruge standardmappen i serverens datamappe.", - "LabelTranscodingTemporaryFiles": "Midlertidige filer til omkodning:", "LabelTranscodingThreadCount": "Antal af omkodningstråde:", "LabelTranscodingThreadCountHelp": "Vælg det maksimale antal af tråde der bruges under transcoding. Reduktion af antallet af tråde sænker CPU-forbrug, men resulterer muligvis i at konverteringer ikke foregår hurtigt nok til en jævn afspilning.", "LabelTriggerType": "Udløsertype:", @@ -706,7 +703,6 @@ "MessageCreateAccountAt": "Opret en konto hos {0}", "MessageDeleteTaskTrigger": "Er du sikker på du ønsker at slette denne task trigger?", "MessageDirectoryPickerBSDInstruction": "For BSD skal du muligvis konfigurere lager i dit FreeNAS Jail, før Jellyfin kan tilgå det.", - "MessageDirectoryPickerInstruction": "Netværksstier kan indtastes manuelt i tilfælde af at netværksknappen ikke kan lokalisere dine enheder. Foreksempel, {0} eller {1}.", "MessageDirectoryPickerLinuxInstruction": "For Linux på Arch Linux, CentOS, Debian, Fedora, openSUSE eller Ubuntu, skal du give servicebrugeren mindst læseadgang til dine lagerpladser.", "MessageDownloadQueued": "Download sat i kø.", "MessageEnablingOptionLongerScans": "Aktivering af denne indstilling kan resultere i væsentlig længere biblioteks skan.", @@ -913,7 +909,6 @@ "PluginInstalledMessage": "Plugin blev installeret med success. Jellyfin serveren skal genstartes for at aktivere det.", "PreferEmbeddedTitlesOverFileNames": "Foretræk indlejrede titler over filnavne", "PreferEmbeddedTitlesOverFileNamesHelp": "Dette bestemmer standard visnings titel når ingen internet metadata eller lokal metadata er tilgængelig.", - "PreferredNotRequired": "Foretrukket, men ikke påkrævet", "Premieres": "Premiere", "Producer": "Producent", "ProductionLocations": "Produktionslokationer", @@ -941,7 +936,6 @@ "RepeatEpisodes": "Gentag episoder", "ReplaceAllMetadata": "Erstat alle metadata", "ReplaceExistingImages": "Erstat eksisterende billeder", - "RequiredForAllRemoteConnections": "Påkrævet for alle fjern forbindelser", "ResumeAt": "Genoptag fra {0}", "Rewind": "Spol tilbage", "Runtime": "Afspilningstid", @@ -1062,7 +1056,6 @@ "ValueTimeLimitMultiHour": "Tidsbegrænsning: {0} timer", "ValueTimeLimitSingleHour": "Tidsbegrænsning: 1 time", "ViewAlbum": "Vis album", - "ViewArtist": "Vis kunstner", "ViewPlaybackInfo": "Vis afspilnings information", "Wednesday": "Onsdag", "WelcomeToProject": "Velkommen til Jellyfin!", @@ -1096,12 +1089,6 @@ "AnyLanguage": "Hvilken som helst sprog", "Art": "Kunst", "Ascending": "Stigende", - "AudioBitDepthNotSupported": "Lyd bit dybde ikke understøttet", - "AudioBitrateNotSupported": "Lydens bitrate ikke understøttet", - "AudioChannelsNotSupported": "Lydkanaler ikke understøttet", - "AudioCodecNotSupported": "Lydkodeks ikke understøttet", - "AudioProfileNotSupported": "Lydprofil ikke understøttet", - "AudioSampleRateNotSupported": "Lydens samplerate ikke understøttet", "Auto": "Auto", "AutoBasedOnLanguageSetting": "Automatisk (baseret på sprogindstilling)", "Backdrop": "Baggrund", @@ -1114,34 +1101,18 @@ "ButtonFilter": "Filter", "ButtonGuide": "Vejledning", "ButtonInfo": "Information", - "ButtonMenu": "Menu", "ButtonOk": "Ok", "ButtonPause": "Pause", - "ButtonPlayTrailer": "Forfilm", - "ButtonReset": "Nulstil", - "ButtonResetTuner": "Nulstil tuner", "ButtonSend": "Send", - "ButtonServer": "Server", "ButtonStart": "Start", "ButtonStop": "Stop", - "ButtonSync": "Synkronisér", "ButtonTrailer": "Forfilm", - "CategoryPlugin": "Tilføjelse", - "CategorySync": "Synkronisér", - "CategorySystem": "System", "ColorPrimaries": "Primære farver", "ColorSpace": "Farverum", "ColorTransfer": "Farveoverførsel", "CommunityRating": "Føllesskabets Bedømmelse", "ConfirmEndPlayerSession": "Vil du gerne slukke Jellyfin på {0}?", - "ContainerBitrateExceedsLimit": "Medie bitrate går over grænsen.", - "ContainerNotSupported": "Beholder ikke understøttet", "ContinueWatching": "Fortsæt med at se", - "Convert": "Konvertér", - "ConvertItemLimitHelp": "Valgfri. Sæt en begrænsning på antallet af emner der vil blive konverteret.", - "ConvertUnwatchedVideosOnly": "Konvertér kun usete videoer", - "ConvertUnwatchedVideosOnlyHelp": "Kun usete videoer vil blive konverteret.", - "ConvertingDots": "Konverterer...", "CriticRating": "Kritiker bedømmelse", "DateAdded": "Dato tilføjet", "DatePlayed": "Dato afspillet", @@ -1150,7 +1121,6 @@ "Depressed": "Ikke Trykket", "Descending": "Faldene", "Desktop": "Skrivebord", - "DirectPlayError": "Direkte Afspilning fejl", "DirectPlaying": "Afspiller direkte", "DirectStreamHelp1": "Medie filen er kompatibel med enheden i forhold til opløsning og medie type (H.264,AC3, etc.), men er i en ikke kompatibel fil container (mkv, avi, wmv, etc). Videoen vil blive genpakket live før den streames til enheden.", "DirectStreamHelp2": "Direkte Streaming af en fil bruger meget lidt processor kraft uden nogen tab af video kvalitet.", @@ -1165,13 +1135,8 @@ "DisplayMissingEpisodesWithinSeasonsHelp": "Dette skal også være aktiveret for TV biblioteker i serverens indstillinger.", "DisplayModeHelp": "Vælg det ønskede tema for grænsefladen.", "Down": "Ned", - "DownloadItemLimitHelp": "Valgfri. Sæt en begrænsning på antallet af ting der vil blive hentet.", - "Downloaded": "Hentet", - "DownloadingDots": "Henter...", - "Downloads": "Hentninger", "DownloadsValue": "{0} hentninger", "DropShadow": "Drop Skygge", - "DvrFeatureDescription": "Tidsindstil individuelle TV optagelser, serie optagelser, og mere med Jellyfin DVR.", "EditMetadata": "Redigér metadata", "EnableBackdrops": "Baggrundsbilleder", "EnableBackdropsHelp": "Vis baggrundsbilleder i baggrunden af nogle sider mens man gennemser biblioteket.", @@ -1185,8 +1150,6 @@ "EnableThemeVideos": "Tema videoer", "EnableThemeVideosHelp": "Afspil tema videoer i baggrunden mens man gennemser biblioteket.", "Episodes": "Afsnit", - "ErrorAddingGuestAccount1": "Der skete en fejl ved tilføjelsen af Jellyfin Connect kontoen. Har din gæst lavet en Jellyfin konto? De kan regsistrere sig på {0}.", - "ErrorAddingGuestAccount2": "Hvis du stadig har problemer, så send venligst en email til {0}, og inkludér din email adresse såvel som deres.", "ErrorDeletingItem": "Der skete en fejl ved sletningen af mediet fra Jellyfin Server. Tjek venligst at Jellyfin Server har skrive adgang til mediemappen og prøv igen.", "ExtraLarge": "Ekstra Stor", "Extras": "Bonusmateriale", @@ -1197,7 +1160,6 @@ "GroupBySeries": "Gruppér efter serie", "Guide": "Vejledning", "GuideProviderLogin": "Log Ind", - "HandledByProxy": "Ordnet af omvendt proxy", "HeaderAdmin": "Admin", "HeaderAlbums": "Albummer", "HeaderApp": "App", @@ -1205,19 +1167,10 @@ "HeaderAudioBooks": "Lydbøger", "HeaderBranding": "Mærkning", "HeaderContinueListening": "Fortsæt med At Høre", - "HeaderDestination": "Destination", - "HeaderDownloadSettings": "Hentningsindstillinger", "HeaderDownloadSync": "Hentning Og Sync", - "HeaderFavoriteCollections": "Favorit Samlinger", "HeaderFavoritePlaylists": "Favorit Afspilningslister", - "HeaderHomeScreen": "Hjemmeskærm", - "HeaderImageLogo": "Logo", - "HeaderLatestFrom": "Seneste fra {0}", "HeaderLibraryOrder": "Bibliotektsorden", - "HeaderLinks": "Link", "HeaderLiveTv": "Live TV", - "HeaderManagement": "Håndtering", - "HeaderMenu": "Menu", "HeaderMusicQuality": "Musik Kvalitet", "HeaderMyMediaSmall": "Mine Medier (lille)", "HeaderNavigation": "Navigation", @@ -1225,34 +1178,22 @@ "HeaderNextVideoPlayingInValue": "Næste video afspilles om {0}", "HeaderPhotoAlbums": "Foto Albummer", "HeaderPlayOn": "Afspil På", - "HeaderProgram": "Program", - "HeaderRestartingJellyfinServer": "Genstarter Jellyfin Server", "HeaderSecondsValue": "{0} Sekunder", "HeaderSeriesStatus": "Serie Status", "HeaderStartNow": "Start Nu", "HeaderStatus": "Status", "HeaderStopRecording": "Stop Optagelse", "HeaderSubtitleAppearance": "Undertekst Udseende", - "HeaderSync": "Sync", - "HeaderTV": "TV", "HeaderTags": "Mærker", - "HeaderTopPlugins": "Bedste Plugins", - "HeaderType": "Type", - "HeaderVideo": "Video", "HeaderVideoQuality": "Video Kvalitet", "HeaderVideoType": "Video Type", "Hide": "Skjul", "HideWatchedContentFromLatestMedia": "Skjul set indhold fra seneste medier", "Home": "Hjem", "Horizontal": "Horisontalt", - "ImdbRating": "IMDb bedømmelse", - "InterlacedVideoNotSupported": "Interlaced video ikke understøttet", - "KeepDownload": "Behold hentning", "Label3DFormat": "3D format:", "LabelAlbum": "Album:", - "LabelArtist": "Kunstner", "LabelAudio": "Lyd", - "LabelBitrateMbps": "Bitrate (Mbps):", "LabelBlockContentWithTags": "Blokér filer med etiketter:", "LabelBurnSubtitles": "Brænd undertekster:", "LabelCache": "Cache:", @@ -1266,9 +1207,7 @@ "LabelDisplayMode": "Visningstilstand:", "LabelDropShadow": "Drop skygge:", "LabelDynamicExternalId": "{0} ID:", - "LabelEmail": "Email:", "LabelEnableHardwareDecodingFor": "Aktivér hardware afkodning for:", - "LabelEpisode": "Afsnit", "LabelFont": "Skrifttype:", "LabelFormat": "Format:", "LabelHomeNetworkQuality": "Hjemme netværk kvalitet:", @@ -1276,7 +1215,6 @@ "LabelInternetQuality": "Internet kvalitet:", "LabelLogs": "Log:", "LabelMatchType": "Passer til type:", - "LabelMaxBitrate": "Maks bitrate:", "LabelMaxChromecastBitrate": "Chromecast streaming kvalitet:", "LabelMetadata": "Metadata:", "LabelModelUrl": "Model URL", @@ -1305,32 +1243,24 @@ "LabelTranscodingContainer": "Beholder:", "LabelTranscodingVideoCodec": "Video codec:", "LabelType": "Type:", - "LabelUrl": "Link:", "LabelVersion": "Version:", - "LabelVersionNumber": "Version {0}", "LabelVideo": "Video", "LabelVideoCodec": "Video codec:", - "LabelWindowBackgroundColor": "Tekst baggrundsfarve:", "LabelXDlnaCap": "X-DLNA begrænsning:", "LabelXDlnaDoc": "X-DLNA dokumentation:", "LabelYear": "År:", "Large": "Stor", "LearnHowYouCanContribute": "Lær hvordan du kan bidrage.", "LeaveBlankToNotSetAPassword": "Du kan lade dette felt være tomt hvis du ikke ønsker adgangskode.", - "LetterButtonAbbreviation": "A", "Like": "Favorit", - "LinkGithub": "Github", "LinksValue": "Link: {0}", "List": "Liste", "Live": "Live", "LiveTV": "Se Live TV", - "LiveTvFeatureDescription": "Stream Live TV til enhver Jellyfin app, med en kompatibel TV tuner installeret på din Jellyfin Server.", "Logo": "Logo", "ManageRecording": "Håndtér optagelse", - "MarkWatched": "Markér som set", "MediaInfoBitrate": "Bitrate", "MediaInfoCodec": "Codek", - "MediaInfoFormat": "Format", "MediaInfoFramerate": "Billederate", "MediaInfoInterlaced": "Interlaceret", "MediaInfoLayout": "Udlæg", @@ -1340,11 +1270,9 @@ "MediaInfoStreamTypeData": "Data", "MediaInfoStreamTypeVideo": "Video", "MediaIsBeingConverted": "Mediet bliver konverteret til et format der er kompatibel med enheden der afspiller mediet.", - "Medium": "Medie", "Menu": "Menu", "MessageImageFileTypeAllowed": "Kun JPEG og PNG filer er understøttet.", "MessageImageTypeNotSelected": "Vælg venligst en type af billede i drop-down menuen.", - "MessageNoDownloadsFound": "Ingen offline hentninger. Hent dine medier til offline brug ved at klikke Hent igennem app'en.", "MessagePlayAccessRestricted": "Afspilning af dette indhold er begrænset. Kontakt venligst server administratoren for mere information.", "Metadata": "Metadata", "Mobile": "Mobil", @@ -1364,51 +1292,33 @@ "OptionAuto": "Automatisk", "OptionAutomatic": "Automatisk", "OptionBanner": "Banner", - "OptionBeta": "Beta", "OptionBluray": "Blu-Ray", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionConvertRecordingsToStreamingFormatHelp": "Optagelser vil blive konverteret med det samme til MKV for let afspilning på dine enheder.", - "OptionDev": "Dev", "OptionDownloadBannerImage": "Bannere", "OptionDownloadLogoImage": "Logo", "OptionDownloadMenuImage": "Menu", "OptionHasTrailer": "Forfilm", "OptionIsHD": "HD", "OptionIsSD": "SD", - "OptionIso": "ISO", "OptionLikes": "Favoritter", - "OptionLogo": "Logo", - "OptionMenu": "Menu", - "OptionMobileApps": "Mobil apps", - "OptionOff": "Fra", - "OptionOn": "Til", "OptionProfileVideo": "Video", "OptionProtocolHls": "Web Live Streaming", "OptionProtocolHttp": "Web", "OptionRegex": "Regex", "OptionRequirePerfectSubtitleMatchHelp": "At påkræve en perfekt match vil filtrere undertekster så kun dem der er testet og tjekket der passer nøjagtigt til din video fil vil blive inkluderet. At fravælge denne vil forøge chancerne for at undertekster bliver hentet, men vil også forøge risikoen for ikke-passende og ukorrekte undertekster.", "OptionResElement": "res element", - "OptionTags": "Mærker", - "OptionVideoBitrate": "Video Bitrate", "PerfectMatch": "Perfekt match", - "PersonTypePerson": "Person", "Photos": "Fotoer", "PlayCount": "Afspilninger", "PlayNext": "Afspil næste", "PlayNextEpisodeAutomatically": "Afspil næste afsnit automatisk", "PlaybackErrorNoCompatibleStream": "Denne klient er ikke kompatibel med medierne, og serveren sender ikke et kompatibelt medieformat.", - "PlaybackErrorNotAllowed": "Du har ikke adgang til at afspille dette indhold. Kontakt venligst system administratoren for detaljer.", - "PlaybackErrorPlaceHolder": "Indlæs venligst disken for at afspille denne video.", - "PlaybackSettings": "Afspilningsindstillinger", - "PlaybackSettingsIntro": "For at indstille standard afspilningsindstillingerne, stop video afspilning, herefter klik på dit bruger ikon i øverste højre sektion af denne app.", "Playlists": "Afspilningslister", "Previous": "Forrige", "Primary": "Primær", - "PrivacyPolicy": "Privatlivs politik", "Raised": "Forhøjet", "Rate": "Rate", "Recordings": "Optagelser", - "RefFramesNotSupported": "Antal af video reference billeder ikke understøttet", "RefreshMetadata": "Genopfrisk metadata", "RepeatAll": "Gentag alle", "RepeatMode": "Gentagelses tilstand", @@ -1417,7 +1327,6 @@ "ScanForNewAndUpdatedFiles": "Skan for nye og opdaterede filer", "Schedule": "Tidsplan", "Screenshot": "Skærmbillede", - "SecondaryAudioNotSupported": "Lydspor skift ikke understøttet", "SeriesDisplayOrderHelp": "Sortér episoder efter luftdato, DVD-orden eller absolut nummerering.", "ShowTitle": "Vis titel", "ShowYear": "Vis år", @@ -1428,37 +1337,26 @@ "SmartSubtitlesHelp": "Undertekster der matcher det foretrukne sprog vil blive indlæst når lyden er et fremmed sprog.", "Sort": "Sortér", "SortByValue": "Sortér efter {0}", - "Standard": "Standard", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Disse indstilinger bliver aktiveret på enhver Chromecast afspilning på denne enhed.", "SubtitleAppearanceSettingsDisclaimer": "Disse indstillinger bliver ikke aktiveret på grafiske undertekster (PGS, DVD, etc) eller ASS/SSA undertekster der har deres egen indbyggede stil.", - "SubtitleCodecNotSupported": "Undertekst format ikke understøttet", - "SubtitleSettings": "Undertekst indstillinger", - "SubtitleSettingsIntro": "For at konfigurere standard undertekst udseende og sprog indstillinger, stop video afspilning, herefter klik på dit bruger ikon i øverste højre sektion af denne app.", "Suggestions": "Forslag", "TV": "TV", "TabAlbums": "Albummer", "TabCodecs": "Codeks", - "TabDLNA": "DLNA", "TabGuide": "Vejledning", "TabInfo": "Information", "TabLiveTV": "Live TV", "TabLogs": "Log", "TabMetadata": "Metadata", - "TabNavigation": "Navigering", "TabPlaylist": "Afspilningsliste", "TabServer": "Server", "TabStreaming": "Streamer", - "TabTV": "TV", "Tags": "Mærker", "TagsValue": "Mærker: {0}", "ThemeSongs": "Tema sange", "ThemeVideos": "Tema videoer", "TheseSettingsAffectSubtitlesOnThisDevice": "Disse indstillinger påvirker undertekster på denne enhed", "Thumb": "Tommel", - "TitleLiveTV": "Live TV", - "TitleServer": "Server", - "TitleSupport": "Support", - "Trailer": "Forfilm", "Trailers": "Forfilm", "Transcoding": "Omkodning", "Uniform": "Ensformig", @@ -1466,25 +1364,14 @@ "Up": "Op", "Upload": "Upload", "ValueCodec": "Codek: {0}", - "ValueLinks": "Link: {0}", "ValueMinutes": "{0} minutter", "ValueOneAlbum": "1 album", "ValueOneEpisode": "1 afsnit", - "ValueOneTrailer": "1 forfilm", "ValueSeconds": "{0} sekunder", "ValueSpecialEpisodeName": "Special - {0}", - "ValueStatus": "Status: {0}", "ValueVideoCodec": "Video Codek: {0}", - "VersionNumber": "Version {0}", "Vertical": "Vertikal", - "VideoBitDepthNotSupported": "Video bit dybde ikke understøttet", - "VideoCodecNotSupported": "Video codek ikke understøttet", - "VideoFramerateNotSupported": "Video billedrate ikke understøttet", - "VideoLevelNotSupported": "Video level ikke understøttet", - "VideoProfileNotSupported": "Video profil ikke understøttet", "VideoRange": "Video rækkevidde", - "VideoResolutionNotSupported": "Video opløsning ikke understøttet", - "ViewTypeTvShows": "TV", "Watched": "Set", "Whitelist": "Hvidliste", "Yes": "Ja", diff --git a/src/strings/de.json b/src/strings/de.json index 1f7374c4e3..837feb42b9 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -3,12 +3,10 @@ "AccessRestrictedTryAgainLater": "Der Zugriff ist derzeit eingeschränkt. Bitte versuche es später erneut.", "Actor": "Darsteller(in)", "Add": "Hinzufügen", - "AddGuideProviderHelp": "Fernsehprogrammquelle hinzufügen", "AddItemToCollectionHelp": "Fügen Sie Elemente zu Sammlungen hinzu, indem Sie sie suchen und deren Rechtsklick- oder Antippmenü benutzen.", "AddToCollection": "Zur Sammlung hinzufügen", "AddToPlayQueue": "Zur Warteschlange hinzufügen", "AddToPlaylist": "Zur Wiedergabeliste hinzufügen", - "AddUser": "Benutzer anlegen", "AddedOnValue": "{0} hinzugefügt", "AdditionalNotificationServices": "Durchsuchen sie den Pluginkatalog um weitere Benachrichtigungsdienste zu installieren.", "AirDate": "Erstausstrahlung", @@ -20,7 +18,6 @@ "AllEpisodes": "Alle Folgen", "AllLanguages": "Alle Sprachen", "AllLibraries": "Alle Bibliotheken", - "AllowDeletionFromAll": "Erlaube Medienlöschung in allen Bibliotheken", "AllowHWTranscodingHelp": "Dem Tuner erlauben, Streams in Echtzeit zu transkodieren. Das hilft eventuell, die Transkodierung durch den Jellyfin Server zu reduzieren.", "AllowMediaConversion": "Erlaube Medienkonvertierung", "AllowMediaConversionHelp": "Erlaube oder unterbinde Zugriff auf die Medienkonvertierung.", @@ -39,19 +36,12 @@ "Ascending": "Aufsteigend", "AspectRatio": "Seitenverhältnis", "AttributeNew": "Neu", - "AudioBitDepthNotSupported": "Audiobittiefe nicht unterstützt", - "AudioBitrateNotSupported": "Audiobitrate nicht unterstützt", - "AudioChannelsNotSupported": "Audiokanäle nicht unterstützt", - "AudioCodecNotSupported": "Audiocodec nicht unterstützt", - "AudioProfileNotSupported": "Audioprofil nicht unterstützt", - "AudioSampleRateNotSupported": "Tonabtastrate nicht unterstützt", "AutoBasedOnLanguageSetting": "Automatisch (basierend auf Spracheinstellung)", "Backdrop": "Hintergrund", "Backdrops": "Hintergründe", "BirthDateValue": "Geboren: {0}", "BirthLocation": "Geburtsort", "BirthPlaceValue": "Geburtsort: {0}", - "BobAndWeaveWithHelp": "Bob & Weave (höhere Qualität, aber langsamer)", "BookLibraryHelp": "Hörbücher und E-Books werden unterstützt. Schaue in den {0} Book Naming Guide {1}.", "Books": "Bücher", "BoxRear": "Box (Rückseite)", @@ -255,7 +245,6 @@ "H264CrfHelp": "Der Constant Rate Factor (CRF) bezeichnet die Einstellung für die Standardqualität des x264 Encoders. Setze einen Wert zwischen 0 und 51. Ein niedriger Wert resultiert in besserer Qualität (auf Kosten einer größeren Datei). Gängige Werte sind 18-28. Der Standard für x264 ist 23 und empfohlen als Startpunkt.", "EncoderPresetHelp": "Wähle einen schnelleren Wert um die Performance zu verbessern oder einen langsameren Wert um die Qualität zu verbessern.", "HDPrograms": "HD Programme", - "HandledByProxy": "Verwaltet vom Reverse Proxy", "HardwareAccelerationWarning": "Das Aktivieren der Hardwarebeschleunigung kann auf einigen Systemen zu Instabilität führen. Stellen Sie sicher, dass Ihr Betriebssystem sowie Ihre Grafikkarten-Treiber auf dem aktuellsten Stand sind. Wenn Sie nach der Aktivierung Probleme mit der Wiedergabe von Videos haben, müssen Sie diese Einstellung zurück auf \"Keine\" stellen.", "HeaderAccessSchedule": "Zugangsplan", "HeaderAccessScheduleHelp": "Erstelle einen Zugangsplan, um den Zugriff auf bestimmte Zeiten zu limitieren.", @@ -722,7 +711,6 @@ "LabelScheduledTaskLastRan": "Zuletzt ausgeführt vor: {0}. Benötigte Zeit: {1}.", "LabelScreensaver": "Bildschirmschoner:", "LabelSeasonNumber": "Staffelnummer:", - "LabelSecureConnectionsMode": "Sicherer Verbindungsmodus:", "LabelSelectFolderGroups": "Gruppiere Inhalte von folgenden Verzeichnissen automatisch zu Ansichten wie beispielsweise Filme, Musik und TV:", "LabelSelectFolderGroupsHelp": "Verzeichnisse die nicht markiert sind werden alleine mit ihren eigenen Ansichten angezeigt.", "LabelSelectUsers": "Wähle Benutzer:", @@ -845,7 +833,6 @@ "MessageCreateAccountAt": "Erstellen Sie ein Konto bei {0}", "MessageDeleteTaskTrigger": "Bist du dir sicher, dass du diesen Aufgabenauslöser entfernen möchtest?", "MessageDirectoryPickerBSDInstruction": "Für BSD müssen Sie ggf. Speicherplatz auf Ihrem FreeNAS Jail für Empby freigeben.", - "MessageDirectoryPickerInstruction": "Falls der Netzwerk Button deine Endgeräte nicht automatisch findet, kannst du deren Netzwerkpfade auch manuell eintragen. Zum Beispiel {0} oder {1}.", "MessageDirectoryPickerLinuxInstruction": "Für Linux auf Arch Linux, CentOS, Debian, Fedora, openSUSE oder Ubuntu muss der Service Benutzer mindestens lesenden Zugriff auf die Speicherorte der Medien besitzen.", "MessageDownloadQueued": "Download eingereiht.", "MessageEnablingOptionLongerScans": "Die Aktivierung dieser Option kann erheblich längere Bibliotheks-Scans verursachen.", @@ -1066,7 +1053,6 @@ "PreferEmbeddedTitlesOverFileNamesHelp": "Das bestimmt den Standard Displaytitel wenn keine lokale oder Internetmetadaten verfügbar sind.", "PreferEmbeddedEpisodeInfosOverFileNames": "Bevorzuge eingebettete Episodeninformationen vor Dateinamen", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Bevorzugt die in den Metadaten eingebetteten Episodeninformationen.", - "PreferredNotRequired": "Bevorzugt, aber nicht benötigt", "Premieres": "Premieren", "Previous": "Vorheriges", "Primary": "Primär", @@ -1103,7 +1089,6 @@ "RepeatOne": "Dieses wiederholen", "ReplaceAllMetadata": "Ersetze alle Metadaten", "ReplaceExistingImages": "Ersetze vorhandene Bilder", - "RequiredForAllRemoteConnections": "Benötigt für alle Remote Verbindungen", "ResumeAt": "Fortsetzen bei {0}", "Rewind": "Zurückspulen", "RunAtStartup": "Nach Hochfahren automatisch starten", @@ -1251,7 +1236,6 @@ "ValueTimeLimitSingleHour": "Zeitlimit: 1 Stunde", "Vertical": "Vertikal", "ViewAlbum": "Zeige Album", - "ViewArtist": "Zeige Darsteller", "ViewPlaybackInfo": "Abspielinfo ansehen", "Watched": "Gesehen", "Wednesday": "Mittwoch", @@ -1318,7 +1302,6 @@ "ColorTransfer": "Farbtransfer", "LabelTypeText": "Text", "LabelVersion": "Version:", - "LabelVersionNumber": "Version {0}", "LabelVideo": "Video", "LeaveBlankToNotSetAPassword": "Dieses Feld frei lassen, um kein Passwort zu setzen.", "LinksValue": "Links: {0}", @@ -1372,28 +1355,19 @@ "ValueCodec": "Codec: {0}", "ValueContainer": "Container: {0}", "ValueDiscNumber": "Disk {0}", - "ValueStatus": "Status: {0}", - "ValueStudio": "Studio: {0}", - "ValueStudios": "Studios: {0}", "ValueVideoCodec": "Videocodec: {0}", - "ViewTypeTvShows": "TV", - "HeaderClients": "Endgeräte", - "LabelLimit": "Limit:", "LabelTag": "Tag:", "LabelTagline": "Markierungen:", - "LinkCommunity": "Community", "OptionDownloadThumbImage": "Vorschau", "OptionMax": "Maximum", "OptionProfileVideoAudio": "Video Audio", "OptionSubstring": "Teilzeichenfolge", - "OptionTags": "Markierungen", "OptionThumb": "Miniaturansicht", "Premiere": "Premiere", "Smart": "Schlau", "Tags": "Markierungen", "TagsValue": "Markierungen: {0}", "Thumb": "Miniaturansicht", - "TitleSupport": "Hilfe", "Whitelist": "Erlaubt", "AuthProviderHelp": "Wähle einen Authentifizierungsanbieter, der zur Authentifizierung des Passworts dieses Benutzes verwendet werden soll.", "Features": "Funktionen", diff --git a/src/strings/el.json b/src/strings/el.json index 43caa0975c..a1fbf85613 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -692,7 +692,6 @@ "LabelValue": "Τιμή:", "LabelVersion": "Έκδοση:", "LabelVersionInstalled": "{0} εγκαταστήθηκε", - "LabelVersionNumber": "Έκδοση {0}", "LabelVideo": "Βίντεο", "LabelXDlnaCapHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.", "LabelXDlnaDocHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.", @@ -777,7 +776,6 @@ "MinutesBefore": "λεπτά πριν", "Mobile": "Κινητό/Τάμπλετ", "Monday": "Δευτέρα", - "More": "Περισσότερα", "MoreFromValue": "Περισσότερα από {0}", "MoreUsersCanBeAddedLater": "Περισσότεροι χρήστες μπορούν να προστεθούν αργότερα στον πίνακα ελέγχου.", "MoveLeft": "Κινήσου αριστερά", @@ -949,7 +947,6 @@ "PleaseRestartServerName": "Κάντε επανεκκίνηση του Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Επιλέξτε τουλάχιστον δύο στοιχεία.", "PluginInstalledMessage": "Η προσθήκη έχει εγκατασταθεί με επιτυχία. Θα πρέπει να γίνει επανεκκίνηση του διακομιστή Jellyfin για να εφαρμοστούν οι αλλαγές.", - "PreferredNotRequired": "Προτιμώμενο, αλλά δεν απαιτείται", "Premiere": "Πρεμιέρα", "Premieres": "Πρεμιέρες", "Previous": "Προηγούμενο", @@ -1137,7 +1134,6 @@ "ValueVideoCodec": "Κωδικοποιητής βίντεο : {0}", "Vertical": "Κάθετα", "ViewAlbum": "Προβολή άλμπουμ", - "ViewArtist": "Εμφάνιση Καλλιτέχνη", "ViewPlaybackInfo": "Προβολή πληροφοριών αναπαραγωγής", "Watched": "Έχει γίνει παρακολούθηση", "Wednesday": "Τετάρτη", @@ -1176,7 +1172,6 @@ "HeaderCodecProfile": "Προφίλ Κωδικοποιητή", "HeaderChapterImages": "Εικόνες Κεφαλαίων", "HeaderChannelAccess": "Πρόσβαση σε Κανάλια", - "HeaderAudioLanguages": "Γλώσσες Ήχου", "HeaderApp": "Εφαρμογή", "HeaderAlbums": "Άλμπουμ", "HeaderAccessScheduleHelp": "Δημιουργήστε ένα πρόγραμμα πρόσβασης για να περιορίσετε την πρόσβαση ορισμένες ώρες.", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 7a25a5a822..1947dc0c37 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -113,7 +113,6 @@ "ButtonAudioTracks": "Audio Tracks", "ButtonBack": "Back", "ButtonCancel": "Cancel", - "ButtonChangeContentType": "Change content type", "ButtonChangeServer": "Change Server", "ButtonConnect": "Connect", "ButtonDelete": "Delete", @@ -135,7 +134,6 @@ "ButtonLibraryAccess": "Library access", "ButtonManualLogin": "Manual Login", "ButtonMore": "More", - "ButtonMoreInformation": "More Information", "ButtonNetwork": "Network", "ButtonNew": "New", "ButtonNextTrack": "Next track", @@ -248,7 +246,6 @@ "EnableBackdrops": "Backdrops", "EnableBackdropsHelp": "Display backdrops in the background of some pages while browsing the library.", "EnableCinemaMode": "Cinema mode", - "EnableDebugLoggingHelp": "Debug logging should only be enabled as needed for troubleshooting purposes. The increased file system access may prevent the server machine from being able to sleep in some environments.", "EnableDisplayMirroring": "Display mirroring", "EnableExternalVideoPlayers": "External video players", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", @@ -307,7 +304,6 @@ "GuideProviderSelectListings": "Select Listings", "H264CrfHelp": "The Constant Rate Factor (CRF) is the default quality setting for the x264 encoder. You can set the values between 0 and 51, where lower values would result in better quality (at the expense of higher file sizes). Sane values are between 18 and 28. The default for x264 is 23, so you can use this as a starting point.", "EncoderPresetHelp": "Choose a faster value to improve performance, or a slower value to improve quality.", - "HandledByProxy": "Handled by reverse proxy", "HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. Ensure that your operating system and video drivers are fully up to date. If you have difficulty playing video after enabling this, you'll need to change the setting back to None.", "HeaderAccessSchedule": "Access Schedule", "HeaderAccessScheduleHelp": "Create an access schedule to limit access to certain hours.", @@ -338,8 +334,6 @@ "HeaderCancelSeries": "Cancel Series", "HeaderCastAndCrew": "Cast & Crew", "HeaderCastCrew": "Cast & Crew", - "HeaderChangeFolderType": "Change Content Type", - "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the library with the new type.", "HeaderChannelAccess": "Channel Access", "HeaderChannels": "Channels", "HeaderChapterImages": "Chapter Images", @@ -396,8 +390,6 @@ "HeaderFrequentlyPlayed": "Frequently Played", "HeaderGenres": "Genres", "HeaderGuideProviders": "TV Guide Data Providers", - "HeaderHomeScreen": "Home Screen", - "HeaderHomeScreenSettings": "Home Screen Settings", "HeaderHttpHeaders": "HTTP Headers", "HeaderIdentification": "Identification", "HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.", @@ -408,7 +400,6 @@ "HeaderInstall": "Install", "HeaderInstantMix": "Instant Mix", "HeaderItems": "Items", - "HeaderJellyfinServer": "Jellyfin Server", "HeaderKeepRecording": "Keep Recording", "HeaderKeepSeries": "Keep Series", "HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library in Jellyfin library setup and locate the metadata savers section.", @@ -560,7 +551,6 @@ "RunAtStartup": "Run at startup", "Rewind": "Rewind", "ResumeAt": "Resume from {0}", - "RequiredForAllRemoteConnections": "Required for all remote connections", "ReplaceExistingImages": "Replace existing images", "ReplaceAllMetadata": "Replace all metadata", "RepeatOne": "Repeat one", @@ -593,7 +583,6 @@ "Previous": "Previous", "Premieres": "Premieres", "Premiere": "Premiere", - "PreferredNotRequired": "Preferred, but not required", "PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.", "PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames", "PluginInstalledMessage": "The plugin has been successfully installed. Jellyfin Server will need to be restarted for changes to take effect.", @@ -729,7 +718,6 @@ "MessageImageFileTypeAllowed": "Only JPEG and PNG files are supported.", "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", - "MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.", "MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?", "MessageCreateAccountAt": "Create an account at {0}", "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.", @@ -832,7 +820,6 @@ "LabelSendNotificationToUsers": "Send the notification to:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", - "LabelSecureConnectionsMode": "Secure connection mode:", "LabelSeasonNumber": "Season number:", "LabelScreensaver": "Screensaver:", "EnableFasterAnimations": "Faster animations", @@ -1330,7 +1317,6 @@ "LabelMaxParentalRating": "Maximum allowed parental rating:", "LabelFolder": "Folder:", "LabelBaseUrl": "Base URL:", - "ViewArtist": "View artist", "Up": "Up", "SearchForCollectionInternetMetadata": "Search the internet for artwork and metadata", "MediaInfoStreamTypeSubtitle": "Subtitle", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 2b1dbd1a9e..e64f1e7c6e 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -87,23 +87,18 @@ "Art": "Arte", "AsManyAsPossible": "Tantos como sea posible", "AspectRatio": "Relación de aspecto", - "AudioBitrateNotSupported": "Tasa de bits de audio no soportado", - "AudioSampleRateNotSupported": "Frecuencia de muestreo de audio no soportada", "Backdrops": "Imágenes de fondo", "Banner": "Cartel", - "BestFit": "Mejor ajuste", "BirthDateValue": "Nacimiento: {0}", "BirthLocation": "Lugar de nacimiento", "BirthPlaceValue": "Lugar de nacimiento: {0}", "Blacklist": "Lista negra", - "BobAndWeaveWithHelp": "Bob and weave (mayor calidad, pero más lento)", "BookLibraryHelp": "Se admiten libros de audio y texto. Revise la {0}guía de nombres de libros {1}.", "Box": "Caja", "BoxRear": "Caja (lado opuesto)", "Browse": "Explorar", "BrowsePluginCatalogMessage": "Explore nuestro catálogo de complementos para ver los complementos disponibles.", "BurnSubtitlesHelp": "Determina si el servidor debe grabarse en subtítulos al transcodificar videos. Evitar esto mejorará en gran medida el rendimiento. Seleccione Automático para grabar formatos basados en imágenes (VOBSUB, PGS, SUB, IDX, ...) y ciertos subtítulos ASS o SSA.", - "ButtonAccept": "Aceptar", "ButtonAdd": "Agregar", "ButtonAddMediaLibrary": "Agregar biblioteca de medios", "ButtonAddScheduledTaskTrigger": "Agregar desencadenador", @@ -116,14 +111,8 @@ "ButtonAudioTracks": "Pistas de audio", "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", - "ButtonCancelSeries": "Cancelar serie", "ButtonChangeServer": "Cambiar servidor", - "ButtonClear": "Limpiar", - "ButtonClose": "Cerrar", - "ButtonConfigurePassword": "Configurar contraseña", - "ButtonConfigurePinCode": "Configurar clave PIN", "ButtonConnect": "Conectar", - "ButtonCreate": "Crear", "ButtonDelete": "Eliminar", "ButtonDeleteImage": "Eliminar imagen", "ButtonDown": "Abajo", @@ -131,119 +120,68 @@ "ButtonEdit": "Editar", "ButtonEditImages": "Editar imágenes", "ButtonEditOtherUserPreferences": "Editar perfil, imagen y preferencias personales del usuario.", - "ButtonExit": "Salir", "ButtonFilter": "Filtrar", "ButtonForgotPassword": "Olvidé mi contraseña", "ButtonFullscreen": "Pantalla completa", "ButtonGotIt": "Lo entendí", "ButtonGuide": "Guía", "ButtonHelp": "Ayuda", - "ButtonHide": "Ocultar", "ButtonHome": "Inicio", "ButtonInfo": "Información", - "ButtonInviteUser": "Invitar usuario", "ButtonLearnMore": "Aprender más", "ButtonLibraryAccess": "Acceso a la biblioteca", - "ButtonManageFolders": "Administrar carpetas", - "ButtonManageServer": "Administrar servidor", "ButtonManualLogin": "Inicio de sesión manual", - "ButtonMenu": "Menú", "ButtonMore": "Más", - "ButtonMute": "Silenciar", "ButtonNetwork": "Red", "ButtonNew": "Nuevo", - "ButtonNewServer": "Nuevo servidor", - "ButtonNext": "Siguiente", "ButtonNextTrack": "Pista siguiente", - "ButtonNo": "No", - "ButtonNowPlaying": "Reproduciendo ahora", "ButtonOff": "Desactivado", "ButtonOk": "Aceptar", "ButtonOpen": "Abrir", "ButtonParentalControl": "Control parental", "ButtonPause": "Pausar", "ButtonPlay": "Reproducir", - "ButtonPlayTrailer": "Tráiler", - "ButtonPlaylist": "Lista de reproducción", - "ButtonPreferences": "Preferencias", - "ButtonPrevious": "Anterior", "ButtonPreviousTrack": "Pista anterior", - "ButtonPrivacyPolicy": "Política de privacidad", "ButtonProfile": "Perfil", - "ButtonProfileHelp": "Definir imagen de perfil y contraseña", - "ButtonQuality": "Calidad", - "ButtonRecord": "Grabar", "ButtonRefresh": "Actualizar", "ButtonRefreshGuideData": "Actualizar datos de la guía", - "ButtonReject": "Rechazar", - "ButtonRemote": "Remoto", - "ButtonRemoteControl": "Control remoto", "ButtonRemove": "Quitar", "ButtonRename": "Renombrar", "ButtonRepeat": "Repetir", - "ButtonReports": "Reportes", - "ButtonReset": "Restablecer", "ButtonResetEasyPassword": "Restablecer código PIN", "ButtonResetPassword": "Restablecer contraseña", - "ButtonResetTuner": "Restablecer sintonizador", "ButtonRestart": "Reiniciar", - "ButtonRestartNow": "Reiniciar ahora", "ButtonResume": "Resumir", "ButtonRevoke": "Revocar", "ButtonSave": "Guardar", "ButtonScanAllLibraries": "Escanear todas las bibliotecas", - "ButtonScanLibrary": "Escanear biblioteca", - "ButtonScheduledTasks": "Tareas programadas", "ButtonSearch": "Buscar", - "ButtonSelect": "Seleccionar", "ButtonSelectDirectory": "Seleccionar directorio", "ButtonSelectServer": "Seleccionar servidor", "ButtonSelectView": "Seleccionar vista", "ButtonSend": "Enviar", - "ButtonSendInvitation": "Enviar invitación", - "ButtonServer": "Servidor", - "ButtonServerDashboard": "Panel del servidor", "ButtonSettings": "Configuraciones", - "ButtonShare": "Compartir", "ButtonShuffle": "Aleatorio", "ButtonShutdown": "Apagar", "ButtonSignIn": "Iniciar sesión", - "ButtonSkip": "Saltear", "ButtonSort": "Ordenar", "ButtonStart": "Iniciar", "ButtonStop": "Detener", - "ButtonStopRecording": "Detener grabación", "ButtonSubmit": "Enviar", "ButtonSubtitles": "Subtítulos", - "ButtonSync": "Sincronizar", "ButtonTrailer": "Avance", - "ButtonTryAgain": "Intentar de nuevo", "ButtonUninstall": "Desinstalar", - "ButtonUnmute": "Desilenciar", "ButtonUp": "Arriba", - "ButtonUpdateNow": "Actualizar ahora", - "ButtonView": "Ver", - "ButtonViewAlbum": "Ver álbum", - "ButtonViewArtist": "Ver artista", "ButtonViewWebsite": "Ver sitio web", "ButtonWebsite": "Sitio web", - "ButtonYes": "Si", - "CancelDownload": "Cancelar descarga", "CancelRecording": "Cancelar grabación", "CancelSeries": "Cancelar serie", "Categories": "Categorías", - "CategoryApplication": "Aplicación", - "CategoryPlugin": "Complemento", - "CategorySync": "Sincronización", - "CategorySystem": "Sistema", - "CategoryUser": "Usuario", "ChangingMetadataImageSettingsNewContent": "Cambiar la configuración de descarga de metadatos o arte solo aplicará al contenido nuevo que se agregue a tu biblioteca. Para aplicar los cambios a los títulos existentes, tendrás que actualizar sus metadatos manualmente.", "ChannelAccessHelp": "Selecciona los canales a compartir con este usuario. Los administradores podrán editar todos los canales con el administrador de metadatos.", "ChannelNameOnly": "Sólo canal {0}", "ChannelNumber": "Número del canal", "CinemaModeConfigurationHelp": "El modo cine trae la experiencia del cine directamente a tu living, con la posibilidad de reproducir avances e introducciones personalizadas antes de la función principal.", - "CinemaModeFeatureDescription": "El modo cine te da la verdadera experiencia del cine con tráilers e introducciones personalizadas antes de la función principal.", - "CloudSyncFeatureDescription": "Sincroniza tus medios a la nube para respaldos, archivados y conversiones más fáciles.", "ColorPrimaries": "Colores primarios", "ColorSpace": "Espacio de color", "ColorTransfer": "Transferencia de color", @@ -255,28 +193,14 @@ "ConfirmDeleteItems": "Eliminar estos elementos los eliminará tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?", "ConfirmDeletion": "Confirmar eliminación", "ConfirmEndPlayerSession": "¿Desea apagar Jellyfin en {0}?", - "ConfirmRemoveDownload": "¿Quitar descarga?", "Connect": "Conectar", - "ContainerBitrateExceedsLimit": "La tasa de bits del medio excede el límite.", - "ContainerNotSupported": "Contenedor no soportado", - "Continue": "Continuar", - "ContinueInSecondsValue": "Continuar en {0} segundos.", "ContinueWatching": "Seguir viendo", "Continuing": "Continuando", - "Convert": "Convertir", - "ConvertItemLimitHelp": "Opcional. Configure un límite en el número de elementos que serán convertidos.", - "ConvertUnwatchedVideosOnly": "Convertir sólo videos no vistos.", - "ConvertUnwatchedVideosOnlyHelp": "Unicamente los videos no visualizados van a ser convertidos.", - "ConvertingDots": "Convirtiendo...", - "Countries": "Paises", - "CoverArt": "Arte de portada", "CustomDlnaProfilesHelp": "Crear un perfil personalizado para apuntar un nuevo dispositivo o sobre-escribir el perfil del sistema.", "DateAdded": "Fecha agregada", "DatePlayed": "Fecha de reproducción", - "Days": "Dias", "DeathDateValue": "Muerte: {0}", "Default": "Predeterminado", - "DefaultCameraUploadPathHelp": "Selecciona un directorio personalizado. Si queda en blanco, una carpeta predeterminada va a ser usada. Si es una carpeta personalizada, esta va a necesitar ser agregada en la biblioteca, en la configuración de bibliotecas de Jellyfin.", "DefaultErrorMessage": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.", "DefaultMetadataLangaugeDescription": "Estos son tus predeterminados y pueden ser personalizados por librería únicamente.", "Delete": "Borrar", @@ -291,8 +215,6 @@ "Desktop": "Escritorio", "DetectingDevices": "Detectando dispositivos", "DeviceAccessHelp": "Esto aplica solo a dispositivos que pueden ser identificados y esto no va a prevenir el acceso con el navegador. Filtrar el acceso a los dispositivos del usuario va a prevenir el uso con nuevos dispositivos, hasta que estos sean aprobados.", - "DeviceLastUsedByUserName": "Usado ultima vez por {0}", - "DirectPlayError": "Error en la reproducción directa", "DirectPlaying": "Reproducción directa", "DirectStreamHelp1": "El medio es compatible con el dispositivo con respecto a la resolución y el tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivos incompatible (mkv, avi, wmv, etc.). El video se volverá a empaquetar sobre la marcha antes de transmitirlo al dispositivo.", "DirectStreamHelp2": "La transmisión directa de un archivo utiliza muy poca potencia de procesamiento sin pérdida de calidad de video.", @@ -311,16 +233,9 @@ "DoNotRecord": "No grabar", "Down": "Abajo", "Download": "Descargar", - "DownloadItemLimitHelp": "Opcional. Establecer un limite a los items por descargar.", - "Downloaded": "Descargado", - "Downloading": "Descargando", - "DownloadingDots": "Descargando...", - "Downloads": "Descargas", "DownloadsValue": "{0} descargas", "DrmChannelsNotImported": "Canales con DRM no van a ser importados.", "DropShadow": "Dejar sombra", - "DvrFeatureDescription": "Agendar grabaciones individuales de TV en vivo, grabaciones de series y mucho mas con Jellyfin DVR.", - "DvrSubscriptionRequired": "Jellyfin DVR requiere una suscripción a Jellyfin Premiere.", "EasyPasswordHelp": "Su código PIN fácil se usa para acceder sin conexión a clientes compatibles y también se puede usar para iniciar sesión fácilmente en la red.", "Edit": "Editar", "EditImages": "Editar imagenes", @@ -334,7 +249,6 @@ "CriticRating": "Valoración crítica", "DefaultSubtitlesHelp": "Los subtítulos se cargan según los indicadores predeterminados y forzados en los metadatos incrustados. Las preferencias de idioma se consideran cuando hay varias opciones disponibles.", "Dislike": "No me gusta", - "EnableDebugLoggingHelp": "El registro de depuración debería activarse solo a fin de solucionar problemas. El incremento en el acceso al sistema de archivos podría prevenir que el servidor entre en modo de suspensión en algunos entornos.", "EnableDisplayMirroring": "Habilitar duplicación de la pantalla", "EnableExternalVideoPlayers": "Habilitar reproductores de video externos", "EnableExternalVideoPlayersHelp": "Se mostrará un menú de reproductor externo al iniciar la reproducción de video.", @@ -431,7 +345,6 @@ "HeaderAccessScheduleHelp": "Cree un horario de acceso para limitar el acceso a ciertas horas.", "HeaderAccessSchedule": "Horario de acceso", "HardwareAccelerationWarning": "Habilitar la aceleración de hardware puede causar inestabilidad en algunos entornos. Asegúrese de que su sistema operativo y los controladores de vídeo estén completamente actualizados. Si tiene dificultades para reproducir el vídeo después de habilitarlo, deberá volver a cambiar la configuración a \"Nada\".", - "HandledByProxy": "Manejado por un proxy reverso", "HDPrograms": "Programas en HD", "EncoderPresetHelp": "Elige un valor más rápido para mejorar el desempeño, o elige un valor más lento para mejorar la calidad.", "FetchingData": "Obteniendo información adicional", @@ -1472,7 +1385,6 @@ "Wednesday": "Miércoles", "Watched": "Visto", "ViewPlaybackInfo": "Ver información de reproducción", - "ViewArtist": "Ver artista", "ViewAlbum": "Ver álbum", "VideoRange": "Rango de video", "Vertical": "Vertical", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 68e9136aff..5500a26ce6 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -1,6 +1,5 @@ { "Absolute": "Absoluto", - "Accept": "Aceptar", "AccessRestrictedTryAgainLater": "El acceso está restringido actualmente. Por favor, inténtalo más tarde.", "Add": "Agregar", "AddItemToCollectionHelp": "Agrega elementos a las colecciones buscándolos y utilizando sus menúes al hacer clic derecho o al tocarlos para agregarlos a una colección.", @@ -29,7 +28,6 @@ "AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP/máscaras de red para las redes a las que se les permitirá conectarse remotamente. Si se deja en blanco, se les permitirá a todas las direcciones remotas.", "AlwaysPlaySubtitles": "Siempre reproducir", "AlwaysPlaySubtitlesHelp": "Los subtítulos que coincidan con el idioma preferido serán cargados independientemente del idioma del audio.", - "AnamorphicVideoNotSupported": "Video anamorfico no soportado", "AnyLanguage": "Cualquier idioma", "Anytime": "En cualquier momento", "AroundTime": "Alrededor de", @@ -43,7 +41,6 @@ "Backdrop": "Imagen de fondo", "Backdrops": "Imágenes de fondo", "Banner": "Banner", - "BestFit": "Mejor ajuste", "BirthDateValue": "Nacimiento: {0}", "BirthLocation": "Lugar de nacimiento", "BirthPlaceValue": "Lugar de nacimiento: {0}", @@ -265,7 +262,6 @@ "H264CrfHelp": "El «Factor de transferencia constante» (CRF) es la configuración de calidad por defecto para el codificador x264. Puedes establecer valores entre 0 y 51, donde los valores más bajos dan como resultado mejor calidad (a expensas de archivos más grandes). Los valores comunes son entre 18 y 28. El valor por defecto para x264 es 23, así que puedes usar este valor como punto de referencia.", "EncoderPresetHelp": "Elige un valor más rápido para mejorar el rendimiento, o uno más lento para mejorar la calidad.", "HDPrograms": "Programas en HD", - "HandledByProxy": "Manejado por un proxy inverso", "HardwareAccelerationWarning": "Habilitar la aceleración por hardware podría causar inestabilidad en algunos entornos. Asegúrate de que tu sistema operativo y controladores de video están actualizados. Si tienes dificultades reproduciendo videos después de habilitar esto, necesitarás volver a cambiar la configuración a Ninguno.", "HeaderAccessSchedule": "Programación de acceso", "HeaderAccessScheduleHelp": "Crea una programación de acceso para limitar el acceso a ciertos horarios.", @@ -745,7 +741,6 @@ "LabelScheduledTaskLastRan": "Última ejecución {0}, tomando {1}.", "LabelScreensaver": "Protector de pantalla:", "LabelSeasonNumber": "Temporada número:", - "LabelSecureConnectionsMode": "Modo de conexión segura:", "LabelSelectFolderGroups": "Agrupar automáticamente el contenido de las siguientes carpetas a vistas como Películas, Música y TV:", "LabelSelectFolderGroupsHelp": "Las carpetas sin marcar serán mostradas individualmente en su propia vista.", "LabelSelectUsers": "Seleccionar usuarios:", @@ -816,7 +811,6 @@ "LabelValue": "Valor:", "LabelVersion": "Versión:", "LabelVersionInstalled": "{0} instalado", - "LabelVersionNumber": "Versión {0}", "LabelXDlnaCap": "X-DLNA límite:", "LabelXDlnaCapHelp": "Determina el contenido del elemento X_DLNACAP en el namespace urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDoc": "Documento X-DLNA:", @@ -885,7 +879,6 @@ "MessageCreateAccountAt": "Crear una cuenta en {0}", "MessageDeleteTaskTrigger": "¿Estás seguro de querer eliminar este disparador de tarea?", "MessageDirectoryPickerBSDInstruction": "Para BSD, quizás necesites configurar el almacenamiento dentro de tu «FreeNAS Jail» de manera que permita a Jellyfin accederlo.", - "MessageDirectoryPickerInstruction": "Las rutas de red pueden ser introducidas manualmente en caso de que el botón de Red no pueda localizar sus dispositivos. Por ejemplo, {0} o {1}.", "MessageDirectoryPickerLinuxInstruction": "Para Linux en Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, debes conceder al usuario del servicio al menos permisos de lectura a tus ubicaciones de almacenamiento.", "MessageDownloadQueued": "Descarga puesta en la cola.", "MessageEnablingOptionLongerScans": "Habilitar esta opción podría resultar en escaneos de bibliotecas significativamente más largos.", @@ -1119,7 +1112,6 @@ "PluginInstalledMessage": "El complemento ha sido instalado con éxito. El servidor Jellyfin necesitará ser reiniciado para que los cambios surtan efecto.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incrustados a los nombres de archivo", "PreferEmbeddedTitlesOverFileNamesHelp": "Esto determina el título mostrado por defecto cuando no hay disponibles metadatos en Internet o localmente.", - "PreferredNotRequired": "Preferido, más no es requerido", "Premiere": "Estreno", "Premieres": "Estrenos", "Previous": "Anterior", @@ -1157,7 +1149,6 @@ "RepeatOne": "Repetir uno", "ReplaceAllMetadata": "Reemplazar todos los metadatos", "ReplaceExistingImages": "Reemplazar imágenes existentes", - "RequiredForAllRemoteConnections": "Requerido para todas las conexiones remotas", "ResumeAt": "Reanudar desde {0}", "Rewind": "Rebobinar", "RunAtStartup": "Ejecutar al iniciar", @@ -1321,7 +1312,6 @@ "ValueVideoCodec": "Códec de video: {0}", "VideoRange": "Rango de video", "ViewAlbum": "Ver álbum", - "ViewArtist": "Ver artista", "ViewPlaybackInfo": "Ver información de reproducción", "Watched": "Visto", "Wednesday": "Miércoles", @@ -1341,7 +1331,6 @@ "Audio": "Audio", "Auto": "Auto", "ButtonInfo": "Info", - "ButtonNo": "No", "ButtonOk": "OK", "ButtonTrailer": "Trailer", "AuthProviderHelp": "Selecciona un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", diff --git a/src/strings/es.json b/src/strings/es.json index 038d34ea1e..23bc5c9330 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -217,7 +217,6 @@ "H264CrfHelp": "El factor de velocidad constante (CRF) es el ajuste de calidad predeterminado para el codificador x264. Puede establecer los valores entre 0 y 51, donde valores más bajos resultarían en una mejor calidad (a expensas de tamaños de archivo más altos). Los valores sanos están entre 18 y 28. El valor predeterminado para x264 es 23, por lo que puede utilizar esto como punto de partida.", "EncoderPresetHelp": "Elija un valor más rápido para mejorar el rendimiento o un valor más lento para mejorar la calidad.", "HDPrograms": "Programas en HD", - "HandledByProxy": "Gestionado por proxy inverso", "HardwareAccelerationWarning": "Activar la aceleración por hardware puede producir inestabilidades en algunos entornos. Asegúrate de que tu sistema operativo y tus controladores de vídeo están actualizados. Si tienes dificultades para reproducir los vídeos después de activar esto, tendrás que volver a poner este ajuste en None.", "HeaderAccessSchedule": "Horario de acceso", "HeaderAccessScheduleHelp": "Crea un horario de acceso para limitar el acceso a determinadas horas.", @@ -680,7 +679,6 @@ "LabelScheduledTaskLastRan": "Última ejecución {0}, tardando {1}.", "LabelScreensaver": "Salvapantallas:", "LabelSeasonNumber": "Número de temporada:", - "LabelSecureConnectionsMode": "Modo de conexión segura:", "LabelSelectFolderGroups": "Agrupar contenido automáticamente desde las siguientes carpetas en vistas como Películas, Música y Series:", "LabelSelectFolderGroupsHelp": "Las carpetas sin seleccionar se mostrarán ellas mismas en su propia vista.", "LabelSelectUsers": "Seleccionar usuarios:", @@ -741,7 +739,6 @@ "LabelVaapiDeviceHelp": "Este es el nodo de procesamiento que se utiliza para la aceleración de hardware.", "LabelValue": "Valor:", "LabelVersionInstalled": "{0} instalado", - "LabelVersionNumber": "Versión {0}", "LabelXDlnaCapHelp": "Determina el contenido del elemento X_DLNACAP en el espacio de nombre urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDocHelp": "Determina el contenido del elemento X_DLNADOC en el espacio de nombreurn:schemas-dlna-org:device-1-0.", "LabelYear": "Año:", @@ -804,7 +801,6 @@ "MessageCreateAccountAt": "Crear una cuenta en {0}", "MessageDeleteTaskTrigger": "¿Está seguro que desea eliminar esta tarea de activación?", "MessageDirectoryPickerBSDInstruction": "Para BSD, necesitarás configurar el almacenamiento del \"FreeNAS Jail\" para poder permitir a Jellyfin acceder a él.", - "MessageDirectoryPickerInstruction": "Rutas de red pueden ser introducidas manualmente en el caso de que el botón de la red no pueda localizar sus dispositivos. Por ejemplo, {0} o {1}.", "MessageDirectoryPickerLinuxInstruction": "Para Linux sobre Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, debe conceder al usuario del servicio permiso de lectura en las rutas de almacenamiento.", "MessageDownloadQueued": "Descarga en cola.", "MessageEnablingOptionLongerScans": "Activar esta opción implicará escaneos de la biblioteca más largos.", @@ -1024,7 +1020,6 @@ "PluginInstalledMessage": "El complemento se ha instalado correctamente. El servidor Jellyfin deberá reiniciarse para que los cambios surjan efecto.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incrustados sobre los nombres de archivo", "PreferEmbeddedTitlesOverFileNamesHelp": "Esto determina el título que se utilizará cuando un elemento no tenga etiquetas ni estas se hayan podido descargar de Internet.", - "PreferredNotRequired": "Preferido, pero no requerido", "Premieres": "Estrenos", "Previous": "Anterior", "Primary": "Principal", @@ -1059,7 +1054,6 @@ "RepeatOne": "Repetir uno", "ReplaceAllMetadata": "Reemplazar todas las etiquetas", "ReplaceExistingImages": "Reemplazar imágenes existentes", - "RequiredForAllRemoteConnections": "Requerido para todas las conexiones remotas", "ResumeAt": "Continuar desde {0}", "Rewind": "Rebobinar", "Runtime": "Tiempo de ejecución", @@ -1131,7 +1125,6 @@ "TabGenres": "Géneros", "TabGuide": "Guía", "TabLatest": "Novedades", - "TabLibrary": "Biblioteca", "TabLiveTV": "Televisión en directo", "TabMetadata": "Etiquetas", "TabMovies": "Películas", @@ -1328,14 +1321,11 @@ "Normal": "Normal", "Off": "Apagado", "Option3D": "3D", - "OptionActor": "Actor", "OptionAuto": "Automático", "OptionAutomatic": "Automático", "OptionBanner": "Cabecera", - "OptionBeta": "Beta", "OptionBlockTrailers": "Tráilers", "OptionBluray": "Blu-ray", - "OptionDirector": "Director", "OptionDownloadLogoImage": "Logo", "OptionDvd": "DVD", "OptionHasTrailer": "Tráiler", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 1cf6a3f07c..2e02dd6b3d 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -82,7 +82,6 @@ "Wednesday": "Miércoles", "Watched": "Visto", "ViewPlaybackInfo": "Ver información de reproducción", - "ViewArtist": "Ver artista", "ViewAlbum": "Ver álbum", "VideoRange": "Rango de video", "Vertical": "Vertical", @@ -689,8 +688,6 @@ "LabelSelectFolderGroupsHelp": "Las carpetas sin marcar serán mostradas individualmente en su propia vista.", "LabelSelectFolderGroups": "Agrupar automáticamente el contenido de las siguientes carpetas a vistas como Películas, Música y TV:", "LabelSeasonNumber": "Temporada número:", - "EnableFastImageFadeInHelp": "Habilita una animación más rápida de desvanecimiento para las imágenes cargadas.", - "EnableFastImageFadeIn": "Desvanecimiento rápido de animaciones", "LabelScreensaver": "Protector de pantalla:", "LabelScheduledTaskLastRan": "Última ejecución {0}, tomando {1}.", "LabelSaveLocalMetadataHelp": "Guardar ilustraciones en las carpetas de los medios los colocará en un lugar donde se pueden editar fácilmente.", diff --git a/src/strings/fa.json b/src/strings/fa.json index f2719b5be4..3b3cb07e00 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -61,7 +61,6 @@ "LabelProfileCodecsHelp": "جدا شده توسط کاما این می تواند برای همه کدک ها اعمال شود.", "LabelSaveLocalMetadata": "پوستر در پوشه مدیا ذخیره گردد", "LabelSaveLocalMetadataHelp": "ذخیره ی پوستر ها داخل پوشه های رسانه، امکان ویرایش آسان آنها را در یک مکان میسر میکند.", - "LabelSecureConnectionsMode": "حالت اتصال ایمن:", "LabelSelectUsers": "انتخاب کاربران:", "LabelTimeLimitHours": "محدودیت زمان (ساعت):", "LabelTypeMetadataDownloaders": "{0} دانلود کننده فراداده:", @@ -86,7 +85,6 @@ "OptionPlayed": "پخش شده", "OptionProfileVideo": "ویدیو", "OptionUnplayed": "پخش نشده", - "PreferredNotRequired": "ترجیح داده شده، اما الزامی نیست", "ShowAdvancedSettings": "نمایش تنظیمات پیشرفته", "TabAccess": "دسترسی", "TabAdvanced": "پیشرفته", @@ -441,7 +439,6 @@ "HeaderActiveDevices": "دستگاه‌های فعال", "HeaderAccessScheduleHelp": "یک زمان‌بندی دسترسی ایجاد کنید تا دسترسی به ساعاتی مشخص محدود شود.", "HeaderAccessSchedule": "زمان‌بندی دسترسی", - "HandledByProxy": "توسط reverse proxy مدیریت می‌شود", "HDPrograms": "برنامه‌های HD", "Filters": "صافی‌ها", "FileReadError": "خطایی هنگام خواندن فایل رخ داد.", @@ -547,7 +544,6 @@ "Wednesday": "چهارشنبه‌ها", "Watched": "مشاهده شده", "ViewPlaybackInfo": "مشاهده اطلاعات پخش", - "ViewArtist": "مشاهده هنرمند", "ViewAlbum": "مشاهده آلبوم", "VideoRange": "محدوده ویدیو", "Vertical": "عمودی", @@ -1297,7 +1293,6 @@ "HeaderResponseProfile": "Response Profile", "HeaderResponseProfileHelp": "Response profiles provide a way to customize information sent to the device when playing certain kinds of media.", "HeaderRestart": "Restart", - "HeaderRestartingServer": "Restarting Server", "HeaderRevisionHistory": "Revision History", "HeaderRunningTasks": "Running Tasks", "HeaderScenes": "Scenes", @@ -1443,7 +1438,6 @@ "PlayCount": "Play count", "ReplaceAllMetadata": "Replace all metadata", "ReplaceExistingImages": "Replace existing images", - "RestartPleaseWaitMessage": "Please wait while Jellyfin Server shuts down and restarts. This may take a minute or two.", "ResumeAt": "Resume from {0}", "Rewind": "Rewind", "RunAtStartup": "Run at startup", @@ -1549,8 +1543,6 @@ "TvLibraryHelp": "Review the {0}TV naming guide{1}.", "UserAgentHelp": "Supply a custom user-agent HTTP header.", "ValueContainer": "Container: {0}", - "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", "ButtonSyncPlay": "SyncPlay" diff --git a/src/strings/fi.json b/src/strings/fi.json index a6a072ea16..657f1a4c32 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1,5 +1,4 @@ { - "AddUser": "Lisää Käyttäjä", "BrowsePluginCatalogMessage": "Selaa lisäosakuvastoamme katsoaksesi saatavilla olevia lisäosia.", "ButtonAddUser": "Lisää Käyttäjä", "ButtonCancel": "Peruuta", @@ -16,18 +15,12 @@ "FileReadCancelled": "Tiedoston luku on peruutettu.", "FileReadError": "Virhe tiedoston luvun aikana.", "FolderTypeTvShows": "TV-sarjat", - "HeaderCreatePassword": "Luo Salasana:", - "HeaderParentalRating": "Parental Rating", "HeaderSeries": "Sarjat", - "HeaderYear": "Year:", "LabelAudioLanguagePreference": "Äänen ensisijainen kieli:", - "LabelConfigureSettings": "Muuta asetuksia", "LabelCountry": "Maa:", "LabelCurrentPassword": "Tämän hetkinen salsana:", "LabelDisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot kausien sisällä", - "LabelDownloadInternetMetadata": "Lataa kuvamateriaali ja metadata internetistä", "LabelFinish": "Valmis", - "LabelFolderType": "Kansion tyyppi:", "LabelLanguage": "Kieli:", "LabelMaxParentalRating": "Suurin sallittu ikäraja:", "LabelNewPassword": "Uusi salasana:", @@ -36,25 +29,18 @@ "LabelPrevious": "Edellinen", "LabelSaveLocalMetadata": "Tallenna kuvamateriaali mediakansioihin", "LabelSaveLocalMetadataHelp": "Kuvamateriaalin ja metadatan tallentaminen suoraan kansioihin missä niitä on helppo muuttaa.", - "LabelSubtitleLanguagePreference": "Tekstityksien ensisijainen kieli:", - "LabelUnairedMissingEpisodesWithinSeasons": "Näytä julkaisemattomat jaksot tuotantokausissa", "LabelYourFirstName": "Etunimesi:", "LabelYoureDone": "Valmista!", "LibraryAccessHelp": "Valitse kirjastot, jotka haluat jakaa tämän käyttäjän kanssa. Järjestelmänvalvoja pystyy muokkaamaan kaikkia kansioita käyttäen metadatan hallintatyökalua.", "MaxParentalRatingHelp": "Suuremman luokituksen sisältö piilotetaan käyttäjältä.", "MoreUsersCanBeAddedLater": "Käyttäjiä voidaan lisätä myöhemmin lisää päänäkymästä.", - "NoPluginsInstalledMessage": "Sinulla ei ole mitään lisäosia asennettuna.", - "OptionRelease": "Virallinen Julkaisu", "ParentalRating": "Ikäraja", - "Password": "Salasana", "PasswordMatchError": "Salasanan ja salasanan vahvistuksen on oltava samat.", "PasswordResetComplete": "Salasana on nollattu.", "PasswordResetConfirmation": "Haluatko varmasti nollata salasanan?", "PasswordSaved": "Salasana tallennettu.", "Save": "Tallenna", "SettingsSaved": "Asetukset tallennettu.", - "TabImage": "Kuva", - "TabLibraryAccess": "Kirjaston Pääsy", "TabPassword": "Salasana", "TabProfile": "Profiili", "TabProfiles": "Profiilit", @@ -62,9 +48,7 @@ "ThisWizardWillGuideYou": "Tämä työkalu auttaa sinua asennusprosessin aikana. Valitse kieli aloittaaksesi.", "UninstallPluginConfirmation": "Oletko varma, että haluat poistaa {0}?", "UninstallPluginHeader": "Poista Lisäosa", - "Users": "Käyttäjät", "Absolute": "Ehdoton", - "Accept": "Hyväksy", "Actor": "Näyttelijä", "Add": "Lisää", "AddToCollection": "Lisää kokoelmaan", @@ -81,10 +65,8 @@ "AllEpisodes": "Kaikki jaksot", "AllLanguages": "Kaikki kielet", "AllLibraries": "Kaikki kirjastot", - "AllowDeletionFromAll": "Salli tiedostojen poistaminen kaikista kirjastoista", "AllowOnTheFlySubtitleExtraction": "Salli tekstitysten purkaminen lennossa", "AccessRestrictedTryAgainLater": "Pääsy on toistaiseksi estetty. Yritä myöhemmin uudelleen.", - "AddGuideProviderHelp": "Lisää lähde ohjelmaoppaalle.", "AddItemToCollectionHelp": "Lisää nimikkeitä etsimällä niitä ja käyttämällä hiiren oikeaa nappia tai valikkoa lisätäksesi ne kokoelmaan.", "Aired": "Esityspäivä", "AllowHWTranscodingHelp": "Salli virittimen muuntaa bittivirtaa lennossa. Tämä voi vähentää muunnoksen tarvetta Jellyfin-palvelimella.", @@ -96,7 +78,6 @@ "AllowedRemoteAddressesHelp": "Pilkuilla eroteltu lista IP-osoitteista tai IP/verkonpeite merkinnöistä verkoille, joille sallitaan etäyhteys palvelimeen. Tyhjäksi jätetty lista tarkoittaa, että kaikki osoitteet sallitaan.", "AlwaysPlaySubtitles": "Näytä aina tekstitykset", "AlwaysPlaySubtitlesHelp": "Oletuskieliasetusta vastaava tekstitys otetaan käyttöön ääniraidan kielestä huolimatta.", - "AnamorphicVideoNotSupported": "Anamorfinen video ei ole tuettu", "AnyLanguage": "Mikä tahansa", "Anytime": "Milloin tahansa", "AroundTime": "Noin {0}", @@ -132,7 +113,6 @@ "ButtonArrowUp": "Ylös", "ButtonAudioTracks": "Ääniraidat", "ButtonBack": "Takaisin", - "ButtonChangeContentType": "Vaihda sisällön tyyppiä", "ButtonChangeServer": "Vaihda Palvelinta", "ButtonConnect": "Yhdistä", "ButtonDelete": "Poista", @@ -153,7 +133,6 @@ "ButtonLibraryAccess": "Kiraston pääsy", "ButtonManualLogin": "Manuaalinen kirjautuminen", "ButtonMore": "Lisää", - "ButtonMoreInformation": "Lisää tietoa", "ButtonNetwork": "Verkko", "ButtonNew": "Uusi", "ButtonNextTrack": "Seuraava raita", @@ -516,7 +495,6 @@ "HeaderAllowMediaDeletionFrom": "Salli median poisto", "HeaderAlert": "Hälytys", "HeaderActivity": "Toiminta", - "HandledByProxy": "Reverse proxyn hoitama", "HDPrograms": "HD-ohjelmat", "OptionDownloadArtImage": "Taide", "OptionDownloadDiscImage": "Levy", @@ -775,7 +753,6 @@ "SaveSubtitlesIntoMediaFolders": "Tallenna tekstitykset mediakansioihin", "Saturday": "Lauantai", "ResumeAt": "Jatka kohdasta {0}", - "RequiredForAllRemoteConnections": "Vaadittu kaikille etäyhteyksille", "ReplaceExistingImages": "Korvaa olemassaolevat kuvat", "ReplaceAllMetadata": "Korvaa kaikki metadata", "RepeatEpisodes": "Toista jaksot uudelleen", @@ -833,7 +810,6 @@ "Writer": "Kirjoittaja", "WelcomeToProject": "Tervetuloa Jellyfiniin!", "Wednesday": "Keskiviikko", - "ViewArtist": "Näytä artisti", "ViewAlbum": "Näytä albumi", "Vertical": "Vertikaalinen", "ValueSongCount": "{0} kappaletta", @@ -1150,7 +1126,6 @@ "PleaseRestartServerName": "Ole hyvä ja uudelleenkäynnistä Jellyfin-palvelin - {0}.", "PleaseEnterNameOrId": "Anna nimi tai ulkoinen ID.", "PreferEmbeddedTitlesOverFileNames": "Suosi upotettuja otsikoita tiedostonimien sijasta", - "PreferredNotRequired": "Suositeltava, mutta ei vaadittu", "Premieres": "Ensiesitys", "Primary": "Ensisijainen", "Previous": "Edellinen", diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 5f03a9d43f..00bc7320cd 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -141,7 +141,6 @@ "BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", "AllowHWTranscodingHelp": "Permets au syntonisateur 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", "ButtonAddScheduledTaskTrigger": "Ajouter un déclencheur", @@ -153,14 +152,8 @@ "ButtonArrowUp": "Haut", "ButtonAudioTracks": "Pistes Audio", "ButtonBack": "Retour arrière", - "ButtonCancelSeries": "Annuler séries", "ButtonChangeServer": "Changer de serveur", - "ButtonClear": "Effacer", - "ButtonClose": "Fermer", - "ButtonConfigurePassword": "Configurer le mot de passe", - "ButtonConfigurePinCode": "Configurer le code PIN", "ButtonConnect": "Connexion", - "ButtonCreate": "Créer", "ButtonDelete": "Supprimer", "ButtonDeleteImage": "Supprimer l'image", "ButtonDown": "Bas", @@ -168,22 +161,16 @@ "ButtonEdit": "Modifier", "ButtonEditImages": "Modifier les images", "ButtonEditOtherUserPreferences": "Modifier ce profil utilisateur, son avatar et ses préférences personnelles.", - "ButtonExit": "Quitter", "ButtonFilter": "Filtre", "ButtonForgotPassword": "Mot de passe oublié", "ButtonFullscreen": "Plein écran", "ButtonGuide": "Guide", "ButtonHelp": "Aide", - "ButtonHide": "Cacher", "ButtonHome": "Accueil", "ButtonInfo": "Informations", - "ButtonInviteUser": "Inviter un utilisateur", "ButtonLearnMore": "En savoir plus", "ButtonLibraryAccess": "Accès à la médiathèque", - "ButtonManageFolders": "Gérer les dossiers", - "ButtonManageServer": "Gérer le serveur", "ButtonManualLogin": "Connexion manuelle", - "ButtonMenu": "Menu", "ButtonMore": "Plus", "ButtonNetwork": "Réseau", "AspectRatio": "Format de visionnement", diff --git a/src/strings/fr.json b/src/strings/fr.json index 0b8a21470b..6d56752211 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -18,7 +18,6 @@ "AllEpisodes": "Tous les épisodes", "AllLanguages": "Toutes les langues", "AllLibraries": "Toutes les médiathèques", - "AllowDeletionFromAll": "Autoriser la suppression de média depuis toutes les médiathèques", "AllowHWTranscodingHelp": "Permet au tuner TV de transcoder les flux à la volée. Cela peut aider à réduire le transcodage requis par le serveur.", "AllowMediaConversion": "Autoriser la conversion des médias", "AllowMediaConversionHelp": "Autoriser ou refuser l'accès à la fonctionnalité de conversion des médias.", @@ -260,7 +259,6 @@ "H264CrfHelp": "Le facteur de débit constant (CRF) est le paramètre de qualité par défaut pour l'encodeur x264. Vous pouvez régler les valeurs entre 0 et 51, où des valeurs plus faibles se traduiraient par une meilleure qualité (en augmentant le taille des fichiers). De bonne valeurs se situent entre 18 et 28. La valeur par défaut pour le x264 est 23, vous pouvez l'utiliser comme point de départ.", "EncoderPresetHelp": "Choisissez une valeur plus rapide pour améliorer la performance, ou plus lente pour améliorer la qualité.", "HDPrograms": "Programmes HD", - "HandledByProxy": "Gérée par un proxy inverse", "HardwareAccelerationWarning": "L'activation de l'accélération matérielle peut provoquer une instabilité dans certains environnements. Assurez-vous que votre système d'exploitation et vos pilotes vidéo sont complètement à jour. Si vous avez des difficultés pour lire des vidéos après l'activation, vous devrez remettre ce paramètre sur Aucun.", "HeaderAccessSchedule": "Programme d'Accès", "HeaderAccessScheduleHelp": "Créez un programme d'accès pour limiter l'accès à certaines heures.", @@ -741,7 +739,6 @@ "LabelScheduledTaskLastRan": "Dernière exécution {0}, durée {1}.", "LabelScreensaver": "Économiseur d'écran :", "LabelSeasonNumber": "Numéro de saison :", - "LabelSecureConnectionsMode": "Mode de connexion sécurisée :", "LabelSelectFolderGroups": "Grouper automatiquement le contenu des dossiers suivants dans des catégories telles que Films, Musique et TV :", "LabelSelectFolderGroupsHelp": "Les dossiers qui ne sont pas cochés seront affichés tels quels, avec leur propre vue.", "LabelSelectUsers": "Sélectionner des utilisateurs :", @@ -879,7 +876,6 @@ "MessageCreateAccountAt": "Créer un compte sur {0}", "MessageDeleteTaskTrigger": "Voulez-vous vraiment supprimer ce déclencheur de tâche ?", "MessageDirectoryPickerBSDInstruction": "Sur BSD, vous devrez peut-être configurer le stockage de votre jail FreeNAS pour autoriser Jellyfin à y accéder.", - "MessageDirectoryPickerInstruction": "Les chemins réseaux peuvent être saisis manuellement dans le cas où l'utilisation du bouton Réseau ne parvient pas à localiser vos appareils. Par exemple, {0} ou {1}.", "MessageDirectoryPickerLinuxInstruction": "Pour Linux sur Arch Linux, CentOS, Debian, Fedora, openSUSE ou Ubuntu, vous devez au moins autoriser l'accès en lecture à vos répertoires de stockage pour l'utilisateur de service .", "MessageDownloadQueued": "Téléchargement mis en file d'attente.", "MessageEnablingOptionLongerScans": "Activer cette option peut accroître la durée d'actualisation de la médiathèque.", @@ -1110,7 +1106,6 @@ "PluginInstalledMessage": "Cette extension a été installée avec succès. Le serveur Jellyfin doit être redémarré afin que les modifications soient prises en compte.", "PreferEmbeddedTitlesOverFileNames": "Préférer les titres intégrés aux médias aux noms des fichiers", "PreferEmbeddedTitlesOverFileNamesHelp": "Cela détermine le titre affiché par défaut quand il n'y a pas de métadonnées en ligne ou locales disponibles.", - "PreferredNotRequired": "Préférée, mais pas obligatoire", "Premieres": "Inédits", "Previous": "Précédent", "Primary": "Principal", @@ -1147,7 +1142,6 @@ "RepeatOne": "Répéter un média", "ReplaceAllMetadata": "Remplacer toutes les métadonnées", "ReplaceExistingImages": "Remplacer les images existantes", - "RequiredForAllRemoteConnections": "Obligatoire pour toutes les connexions externes", "ResumeAt": "Reprendre à {0}", "Rewind": "Rembobiner", "RunAtStartup": "Exécuter au démarrage", @@ -1302,7 +1296,6 @@ "Vertical": "Verticale", "VideoRange": "Gamme vidéo", "ViewAlbum": "Voir l'album", - "ViewArtist": "Voir l'artiste", "ViewPlaybackInfo": "Voir les informations de lecture", "Watched": "Lu", "Wednesday": "Mercredi", @@ -1338,7 +1331,6 @@ "Horizontal": "Horizontal", "Images": "Images", "LabelAudio": "Audio", - "LabelVersionNumber": "Version {0}", "LeaveBlankToNotSetAPassword": "Laissez vide pour ne pas définir de mot de passe.", "Logo": "Logo", "MediaInfoCodec": "Codec", diff --git a/src/strings/gsw.json b/src/strings/gsw.json index d7cd980b80..dad75ae57d 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -26,12 +26,7 @@ "HeaderFrequentlyPlayed": "Vell gspellt", "HeaderLatestEpisodes": "Letschti Episode", "HeaderLatestMovies": "Letschti Film", - "HeaderLatestSongs": "Letschti Songs", - "HeaderLatestTrailers": "Letschti Trailer", - "HeaderManagement": "Verwaltig", "HeaderNextUp": "Als Nächstes", - "HeaderNowPlaying": "Jetz am spelle", - "HeaderParentalRating": "Parental Rating", "HeaderPaths": "Pfad", "HeaderRecentlyPlayed": "Erst grad dezue gfüegt", "HeaderSeries": "Series", @@ -147,22 +142,13 @@ "HeaderFavoriteShows": "Lieblingsserien", "HeaderFavoriteSongs": "Lieblingslieder", "HeaderLiveTV": "Live-Fernseh", - "HeaderRecordingGroups": "Ufnahmegruppe", - "LabelRunningTimeValue": "Loufziit: {0}", - "MessageApplicationUpdated": "Jellyfin Server esch aktualisiert worde", - "MessageNamedServerConfigurationUpdatedWithValue": "De Serveriistöuigsberiich {0} esch aktualisiert worde", "Movies": "Film", "Photos": "Fotis", "Playlists": "Wedergabeliste", - "PluginInstalledWithName": "{0} esch installiert worde", - "PluginUninstalledWithName": "{0} esch deinstalliert worde", - "PluginUpdatedWithName": "{0} esch updated worde", - "ProviderValue": "Aabieter: {0}", "Shows": "Serie", "Songs": "Lieder", "Sync": "Synchronisation", "ValueSpecialEpisodeName": "Extra - {0}", - "VersionNumber": "Version {0}", "Absolute": "Absolut", "Actor": "Schauspieler", "AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probiers bitte spöter nomol.", diff --git a/src/strings/he.json b/src/strings/he.json index 3231737657..4288b04762 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -502,7 +502,6 @@ "ValueSongCount": "{0} שירים", "ValueSpecialEpisodeName": "מיוחד- {0}", "ViewAlbum": "צפה באלבום", - "ViewArtist": "צפה באמן", "Wednesday": "רביעי", "WelcomeToProject": "ברוך הבא ל Jellyfin!", "Writer": "כותב", diff --git a/src/strings/hr.json b/src/strings/hr.json index f7f6978d39..db5c5499d2 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -594,7 +594,6 @@ "LabelVaapiDeviceHelp": "Ovo je čvor provođenja koji se koristi za hardversko ubrzanje.", "LabelValue": "Vrijednost:", "LabelVersionInstalled": "{0} instaliran", - "LabelVersionNumber": "Verzija {0}", "LabelXDlnaCapHelp": "Određuje sadržaj X_DLNACAP elementa u urn:shemas-dlna-org:device-1-0 namespace.", "LabelXDlnaDocHelp": "Određuje sadržaj X_DLNADOC elementa u urn:schemas-dlna-org:device-1-0 namespace.", "LabelYourFirstName": "Ime:", @@ -649,7 +648,6 @@ "MessageCreateAccountAt": "Otvori račun kod {0}", "MessageDeleteTaskTrigger": "Jeste li sigurni da želite izbrisati ovaj okidač zadatka?", "MessageDirectoryPickerBSDInstruction": "Za BSD možda ćete morati podesiti pohranu unutar vašega FreeNAS kako bi se omogućilo Jellyfin-u pristup.", - "MessageDirectoryPickerInstruction": "Mrežne putanje mogu se unijeti ručno u slučaju da gumb Mreže ne uspije locirati vaše uređaje. Na primjer, {0} ili {1}.", "MessageDirectoryPickerLinuxInstruction": "Za Linux na Arch Linux, CentOS, Debian, Fedora, OpenSuse ili Ubuntu morate dati korisniku Jellyfin sistema barem pristup čitanja vašim lokacijama za skladištenje.", "MessageDownloadQueued": "Preuzimanje na čekanju.", "MessageFileReadError": "Prilikom učitavanja datoteke desila se greška. Pokušajte ponovno.", @@ -990,7 +988,6 @@ "ValueTimeLimitSingleHour": "Vremensko ograničenje: 1 sat", "ValueVideoCodec": "Video koder: {0}", "ViewAlbum": "Pogledaj album", - "ViewArtist": "Pogledaj umjetnika", "Wednesday": "Srijeda", "WelcomeToProject": "Dobrodošli u Jellyfin!", "WizardCompleted": "To je sve što nam treba za sada. Jellyfin je počeo prikupljati podatke o vašoj medijskoj knjižnici. Provjerite neke od naših aplikacija, a zatim kliknite na Završi za prikaz Serverske kontrolne ploče.", diff --git a/src/strings/hu.json b/src/strings/hu.json index 7aa44d906e..ddf4cd9fe9 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -335,7 +335,6 @@ "LabelUser": "Felhasználó:", "LabelUsername": "Felhasználónév:", "LabelVersionInstalled": "{0} telepítve", - "LabelVersionNumber": "Verzió {0}", "LabelVideo": "Videó", "LabelYear": "Év:", "LabelYourFirstName": "Keresztneved:", @@ -699,7 +698,6 @@ "GuideProviderSelectListings": "Válassz listát", "EncoderPresetHelp": "Válassz egy gyorsabb értéket a teljesítmény javítása érdekében, vagy egy lassabb értéket a minőség javítása érdekében.", "HDPrograms": "HD programok", - "HandledByProxy": "Reverse proxy segítségével kezelhető", "HardwareAccelerationWarning": "A hardveres gyorsítás engedélyezése bizonyos környezetekben instabilitást okozhat. Győződj meg róla, hogy az operációs rendszer és a videó-illesztőprogramok teljesen naprakészek. Ha a beállítás után problémába ütközik a videólejátszás, akkor vissza kell állítani a beállítást Nincs-re.", "HeaderAccessSchedule": "Hozzáférési Ütemezés", "HeaderAccessScheduleHelp": "Hozz létre hozzáférési ütemezést, hogy korlátozd a hozzáférést bizonyos időben.", @@ -862,11 +860,7 @@ "LabelDisplayLanguage": "Megjelenítési nyelv:", "LabelDisplayLanguageHelp": "A Jellyfin fordítása egy folyamatos projekt.", "LabelDisplayMode": "Megjelenítési mód:", - "LabelDownloadInternetMetadata": "Artwork és a metaadatok letöltése az internetről", - "LabelDownloadInternetMetadataHelp": "A Jellyfin Szerver letöltheti a médiák adatait és látványos bemutatókat készít.", "LabelArtistsHelp": "Ha több van használd a következő elválasztót ;", - "LabelDisplayCollectionsView": "Jelenítse meg a Gyűjtemények menüpontot a filmgyűjtemények megjelenítéséhez", - "LabelDisplayCollectionsViewHelp": "Ez külön menüpontot hoz létre a filmgyűjtemények megjelenítéséhez. Gyűjtemény létrehozásához kattints jobb gombbal vagy kattints a három pontra bármelyik filmen, és válaszd a 'Hozzáadás gyűjteményhez' lehetőséget. ", "LabelEnableAutomaticPortMapHelp": "A szerver az UPnP segítségével a routeren megpróbálja automatikusan átirányítani a nyilvános portot a helyi portra. Előfordulhat, hogy egyes router modellek, vagy hálózati konfigurációk esetén ez nem működik. A módosítások újraindítás után lépnek életbe.", "LabelEnableBlastAliveMessagesHelp": "Engedélyezd ezt ha a szerver nem észleli megbízhatóan a hálózat más UPnP-eszközeit.", "LabelEnableDlnaClientDiscoveryInterval": "Kliens felderítési intervallum (másodperc)", @@ -954,7 +948,6 @@ "LabelSaveLocalMetadataHelp": "Az artwork fájlok médiamappákba történő mentése olyan helyre kerül, ahol könnyen szerkeszthető.", "LabelScheduledTaskLastRan": "Utoljára futtatva: {0}, Időtartam: {1}.", "LabelScreensaver": "Képernyővédő:", - "LabelSecureConnectionsMode": "Biztonságos kapcsolat módja:", "LabelSerialNumber": "Sorozatszám", "LabelSeriesRecordingPath": "Sorozatfelvétel útvonala (opcionális):", "LabelServerHost": "Kiszolgáló:", @@ -1050,7 +1043,6 @@ "LanNetworksHelp": "Vesszővel elválasztott lista az IP címekről vagy IP / netmask bejegyzésekről a hálózatokban, amelyeket a helyi hálózaton figyelembe kell venni a sávszélesség korlátozások végrehajtása során. Ha be van állítva, az összes többi IP cím külső hálózaton lesz, és a külső sávszélesség korlátozások szabálya alá tartozik. Ha üres marad, csak a szerver alhálózata tekinthető a helyi hálózatnak.", "LiveBroadcasts": "Élő adások", "MessageConfirmRevokeApiKey": "Biztosan visszavonod ezt az API kulcsot? Az alkalmazás csatlakozása a Jellyfin Szerverhez hirtelen megszűnik.", - "MessageDirectoryPickerInstruction": "A hálózati útvonalak manuálisan megadhatók abban az esetben, ha a Hálózati gomb nem találja meg a készülékeket. Például: {0} vagy {1}.", "MessageDirectoryPickerLinuxInstruction": "Az Arch Linux, CentOS, Debian, Fedora, openSUSE vagy Ubuntu Linux operációs rendszereken a Jellyfin szolgáltatás felhasználójának legalább olvasási hozzáférést kell biztosítania a tárolóhelyekhez.", "MessageForgotPasswordInNetworkRequired": "Kérlek próbáld meg újra a jelszó visszaállítási folyamatot az otthoni hálózatban.", "MessageNoMovieSuggestionsAvailable": "Jelenleg nincsenek filmajánlatok. Kezdj el nézni és értékelni a filmeket, majd térj vissza, hogy megtekinthesd az ajánlásokat.", @@ -1178,7 +1170,6 @@ "PluginInstalledMessage": "A bővítmény sikeresen telepítve lett. A módosítások életbelépéséhez újra kell indítani a Jellyfin Szerver programot.", "PreferEmbeddedTitlesOverFileNames": "A fájlnevek helyett előnyben részesíti a beépített címeket", "PreferEmbeddedTitlesOverFileNamesHelp": "Ez határozza meg az alapértelmezett megjelenítési címet, ha nem áll rendelkezésre internetes metaadat vagy helyi metaadat.", - "PreferredNotRequired": "Ajánlott, de nem szükséges", "Premiere": "Premier", "Premieres": "Premierek", "Previous": "Előző", @@ -1198,7 +1189,6 @@ "RemoveFromCollection": "Törlés a gyűjteményből", "RemoveFromPlaylist": "Lejátszási listáról eltávolítani", "RepeatEpisodes": "Epizódok ismétlése", - "RequiredForAllRemoteConnections": "Minden távoli kapcsolathoz szükséges", "ResumeAt": "Folytatás: {0}", "RunAtStartup": "Futtassa indításkor", "SaveSubtitlesIntoMediaFolders": "Mentse a feliratokat a média mappákba", @@ -1264,7 +1254,6 @@ "Vertical": "Függőleges", "VideoRange": "Videó tartomány", "ViewAlbum": "Album megtekintése", - "ViewArtist": "Előadó megtekintése", "Whitelist": "Fehérlista", "WizardCompleted": "Ez most minden amire szükség volt. A Jellyfin megkezdte a médiakönyvtáraddal kapcsolatos információk gyűjtését. Nézz meg néhány alkalmazásunkat, majd kattints a Befejezés gombra a Vezérlőpult megtekintéséhez.", "XmlTvKidsCategoriesHelp": "Az ilyen kategóriákkal rendelkező programok gyerekeknek szóló programokként jelennek meg. Válaszd el őket a '|' elválasztóval.", diff --git a/src/strings/is-is.json b/src/strings/is-is.json index ff8f924e22..fac582bad4 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -423,7 +423,6 @@ "Rewind": "Spóla til baka", "AlbumArtist": "Höfundur plötu", "OptionHasTrailer": "Sýnishorn", - "ViewArtist": "Skoða listamann", "ValueSongCount": "{0} lög", "ValueSeriesCount": "{0} Þáttaraðir", "ValueSeconds": "{0} sekúndur", diff --git a/src/strings/it.json b/src/strings/it.json index 854e5fa489..76d3971fa9 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -250,7 +250,6 @@ "H264CrfHelp": "Il fattore di frequenza costante (CRF) è l'impostazione di qualità predefinita per l'encoder x264. È possibile impostare i valori compresi tra 0 e 51, in cui valori inferiori potrebbero determinare una migliore qualità (a discapito delle dimensioni superiori dei file). I valori normali sono compresi tra 18 e 28. L'impostazione predefinita per x264 è 23, quindi è possibile utilizzare questo come punto di partenza.", "EncoderPresetHelp": "Scegli una velocità maggiore per migliorare le performance, o minore per incrementare la qualità.", "HDPrograms": "Programmi HD", - "HandledByProxy": "Gestito dal reverse proxy", "HardwareAccelerationWarning": "L'attivazione dell'accelerazione hardware potrebbe causare instabilità in qualche sistema. Assicurarsi che il sistema operativo e i driver video siano completamente aggiornati. Se hai difficoltà a riprodurre video dopo aver abilitato questa operazione, dovrai cambiare l'impostazione in None.", "HeaderAccessSchedule": "Orario di accesso", "HeaderAccessScheduleHelp": "Creare un programma di accesso per limitare l'accesso a determinate ore.", @@ -718,7 +717,6 @@ "LabelScheduledTaskLastRan": "Ultima esecuzione {0}, taking {1}.", "LabelScreensaver": "Salvaschermo:", "LabelSeasonNumber": "Numero stagione:", - "LabelSecureConnectionsMode": "Modalità connessione sicura:", "LabelSelectFolderGroups": "Raggruppa i contenuti delle seguenti cartelle in viste come Film, Musica e Serie TV:", "LabelSelectFolderGroupsHelp": "Le cartelle non selezionate verranno mostrate come se stesse nelle proprie viste.", "LabelSelectUsers": "Seleziona Utenti:", @@ -783,7 +781,6 @@ "LabelValue": "valore:", "LabelVersion": "Versione:", "LabelVersionInstalled": "{0} installato", - "LabelVersionNumber": "Versione {0}", "LabelXDlnaCapHelp": "Determina il contenuto dell'elemento X_DLNACAP in urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDocHelp": "Determina il contenuto dell'elemento X_DLNACAP nella urn: schemas-DLNA-org: dispositivo 1-0 namespace.", "LabelYear": "Anno:", @@ -844,7 +841,6 @@ "MessageCreateAccountAt": "Crea un account a {0}", "MessageDeleteTaskTrigger": "Sei sicuro di voler cancellare questo evento?", "MessageDirectoryPickerBSDInstruction": "Per BSD, potrebbe essere necessario per configurare le unità all'interno della vostra prigione FreeNAS al fine di permettere ricamato accedervi.", - "MessageDirectoryPickerInstruction": "Percorsi di rete possono essere inseriti manualmente nel caso in cui il pulsante Rete non riesce a individuare i vostri dispositivi. Ad esempio, {0} o {1}.", "MessageDirectoryPickerLinuxInstruction": "Per Linux su Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, è necessario concedere all'utente del servizio almeno l'accesso alle posizioni di archiviazione.", "MessageDownloadQueued": "Scaricamento programmato.", "MessageEnablingOptionLongerScans": "L'abilitazione di questa opzione può rallentare significativamente le scansioni della libreria.", @@ -1065,7 +1061,6 @@ "PluginInstalledMessage": "Il plugin è stato installato correttamente. Il server Jellyfin dovrà essere riavviato affinché le modifiche abbiano effetto.", "PreferEmbeddedTitlesOverFileNames": "Preferisci titoli integrati ai nomi dei file", "PreferEmbeddedTitlesOverFileNamesHelp": "Determina il titolo predefinito usato quando non sono disponibili metadati locali o da Internet.", - "PreferredNotRequired": "Preferito, ma non richiesto", "Premiere": "Prima visione", "Premieres": "Prime Visioni", "Previous": "Precedente", @@ -1103,7 +1098,6 @@ "RepeatOne": "Ripeti uno", "ReplaceAllMetadata": "Sostituisci tutti i metadati", "ReplaceExistingImages": "Sovrascrivi immagini esistenti", - "RequiredForAllRemoteConnections": "Richiesto per tutte le connessioni remote", "ResumeAt": "Riprendi da {0}", "Rewind": "Riavvolgi", "RunAtStartup": "Esegui all'avvio", @@ -1260,7 +1254,6 @@ "Vertical": "Verticale", "VideoRange": "Range del Video", "ViewAlbum": "Visualizza album", - "ViewArtist": "Visualizza artista", "ViewPlaybackInfo": "Vedi info sulla riproduzione", "Watched": "Visto", "Wednesday": "Mercoledì", diff --git a/src/strings/ja.json b/src/strings/ja.json index 118bd739e6..d41bea60b5 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -276,7 +276,6 @@ "H264CrfHelp": "固定レートファクタ(CRF)は、x264エンコーダのデフォルトの品質設定です。 0から51までの値を設定できます。値が小さいほど品質が高くなります(ファイルサイズが大きくなりますが)。 正しい値は18から28の間です。x264のデフォルトは23なので、これを出発点として使用できます。", "EncoderPresetHelp": "パフォーマンスを向上させるには小さい値を、品質を向上させるには大きい値を選択してください。", "HDPrograms": "HD番組", - "HandledByProxy": "リバースプロキシで処理", "HardwareAccelerationWarning": "ハードウェアアクセラレーションを有効にすると、環境によっては不安定になる可能性があります。 オペレーティングシステムとビデオドライバが完全に最新であることを確認してください。 これを有効にした後でビデオの再生が困難な場合は、設定を[なし]に戻す必要があります。", "HeaderAccessSchedule": "アクセススケジュール", "HeaderAccessScheduleHelp": "アクセススケジュールを作成して、アクセスを特定の時間に制限します。", @@ -806,7 +805,6 @@ "Vertical": "垂直", "VideoRange": "映像範囲", "ViewAlbum": "アルバムを見る", - "ViewArtist": "アーティストを見る", "ViewPlaybackInfo": "プレイバック情報を見る", "Watched": "視聴済み", "WelcomeToProject": "Jellyfinにようこそ!", @@ -927,7 +925,6 @@ "LabelRuntimeMinutes": "実行時間 (分):", "LabelScreensaver": "スクリーンセーバー:", "LabelSeasonNumber": "シーズン数:", - "LabelSecureConnectionsMode": "セキュア接続モード:", "LabelSelectUsers": "ユーザーを選択:", "LabelSelectVersionToInstall": "インストールするバージョンを選択:", "LabelSerialNumber": "シリアルナンバー", diff --git a/src/strings/kk.json b/src/strings/kk.json index 0757d71def..1396bcff34 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -29,7 +29,6 @@ "AllowedRemoteAddressesHelp": "Qashyqtan qosylýǵa ruqsat etiletin jeliler úshin útirlermen bólingen IP-mekenjaılarynyń tizbesi nemese IP/netmask jazbalar Eger bos qaldyrylsa, barlyq qashyqtaǵy mekenjaılarǵa ruqsat etiledi.", "AlwaysPlaySubtitles": "Árqashan oınatý", "AlwaysPlaySubtitlesHelp": "Til teńshelimine sáıkes kelgen sýbtıtrler dybys tiline qatyssyz júkteledi.", - "AnamorphicVideoNotSupported": "Anamorftyq beıne úshin qoldaý kórsetilmeıdi", "AnyLanguage": "Qaı-qaısy til", "Anytime": "Árkezde", "AroundTime": "Shamamen", @@ -131,10 +130,6 @@ "ButtonTrailer": "Treıler", "ButtonUninstall": "Ornatymdy joıý", "ButtonUp": "Joǵaryǵa", - "ButtonUpdateNow": "Qazir jańartý", - "ButtonView": "Qaraý", - "ButtonViewAlbum": "Álbomdy qaraý", - "ButtonViewArtist": "Oryndaýshyny qaraý", "ButtonViewWebsite": "Ýeb-saıtyn qaraý", "ButtonWebsite": "Ýeb-saıty", "CancelRecording": "Jazýdy boldyrmaý", @@ -166,7 +161,6 @@ "DatePlayed": "Oınatylǵan kúni", "DeathDateValue": "Ólgeni: {0}", "Default": "Ádepki", - "DefaultCameraUploadPathHelp": "Teńshelgen júktep salý joldy tańdańyz. Eger anyqtalmasa, ádepki qalta paıdalanylady. Eger teńsheletin jol paıdalanylsa, buny sondaı-aq Jellyfin tasyǵyshhanasyn ornatý jáne teńsheý aımaǵynda tasyǵyshhana sıaqty ústeý qajet.", "DefaultErrorMessage": "Saýal óńdelý kezinde qate oryn aldy. Áreketti keıin qaıtalańyz.", "DefaultMetadataLangaugeDescription": "Bular sizdiń ádepki maǵynalaryńyz jáne ár tasyǵyshhana negizinde teńsheýge bolady.", "DefaultSubtitlesHelp": "Sýbtıtrler engizilgen metaderekterdegi ádepki jáne májbúrli jalaýshalary negizinde júktelip alynady. Birneshe opsıa qoljetimdi bolǵanda til teńshelimi qarastyrylady.", @@ -276,7 +270,6 @@ "H264CrfHelp": "Baǵalaýdyń turaqty máni (Constant Rate Factor, CRF) x264 kodtaýyshy úshin ádepki sapa parametri bolyp tabylady. Siz 0 jáne 51 arasyndaǵy mánderin belgileı alasyz, onda tómen mánder (joǵary faıl ólshemderi esebinen) nátıjesinde jaqsy sapaǵa keltiredi. Taǵylyp mánder 18 jáne 28 arasynda bolady. x264 úshin ádepkisi 23 bolyp tabylady, sondyqtan bastaý núktesi retinde osyny paıdalanýyńyzǵa bolady.", "EncoderPresetHelp": "Ónimdilikti jaqsartý úshin jyldam mánin, nemese sapasyn jaqsartý úshin baıaý mánin tańdańyz.", "HDPrograms": "HD-kórsetimder", - "HandledByProxy": "Keri proksı arqyly óńdeldi", "HardwareAccelerationWarning": "Apparattyq jedeldetýdi qosý keıbir ortalarda turaqsyzdyq týdyrýy múmkin. Amaldyq júıeńiz ben beıne draıverlerińiz tolyq jańartylǵanyna kóz jetkizińiz. Eger osyny qosqannan keıin beıne oınatýda qıyndyq bolsa, parametrdi qaıta Eshqanadaǵa ózgertýińiz qajet.", "HeaderAccessSchedule": "Qatynaý kestesi", "HeaderAccessScheduleHelp": "Qatynaýdy belgili saǵattarǵa shekteý úshin qatynaý kestesin jasańyz.", @@ -305,9 +298,6 @@ "HeaderBlockItemsWithNoRating": "Jastas sanaty týraly aqparaty joq nemese ol tanylmaǵan mazmundy qursaýlaý:", "HeaderBooks": "Kitaptar", "HeaderBranding": "Bezendirý", - "HeaderBrandingHelp": "Tobyńyzdyń ne uıymyńyzdyń muqtajdyqtaryna úılesimdi Jellyfin bezendirýin teńsheý.", - "HeaderCameraUpload": "Kameradan júktep salý", - "HeaderCameraUploadHelp": "Utqyr qurylǵylaryńyzda túsirilgen fotosýretterdi Jellyfin qoldanbalary avtomatty Jellyfin Server ishine júktep salý múmkin.", "HeaderCancelRecording": "Jazýdy boldyrmaý", "HeaderCancelSeries": "Telehıkaıany boldyrmaý", "HeaderCastAndCrew": "Róldegiler men qyzmetkerler", @@ -446,7 +436,6 @@ "HeaderSelectServerCachePathHelp": "Serverdiń kesh faıldaryn paıdalaný úshin joldy sholyńyz nemese engizińiz. Osy qalta jazý úshin qol jetimdi bolýy qajet.", "HeaderSelectTranscodingPath": "Qaıta kodtaýdyń ýaqytsha faıldaryeyń jolyn tańdaý", "HeaderSelectTranscodingPathHelp": "Qaıta kodtaýdyń ýaqytsha faıldaryn paıdalaný úshin joldy sholyńyz nemese engizińiz. Osy qalta jazý úshin qol jetimdi bolýy qajet.", - "HeaderSelectUploadPath": "Júktep salý jolyn tańdaý", "HeaderSendMessage": "Habar jiberý", "HeaderSeries": "Telehıkaıalar", "HeaderSeriesOptions": "Telehıkaıa opsıalary", @@ -548,8 +537,6 @@ "LabelCache": "Kesh:", "LabelCachePath": "Keshke qaraı jol:", "LabelCachePathHelp": "Sýret sıaqty serverdiń kesh faıldary úshin teńshelgen jaıǵasymdy anyqtańyz. Serverdiń ádepkisin paıdalaný úshin bos qaldyryńyz.", - "LabelCameraUploadPath": "Kameradan júktep salý joly:", - "LabelCameraUploadPathHelp": "Teńshelgen júktep salý joldy tańdańyz. Bul Kameradan júktep salý bóliminde teńshelgen kezkelgen ádepki parametrlerdi qaıta anyqtaıdy. Eger anyqtalmasa, ádepki qalta paıdalanylady. Eger teńsheletin jol paıdalanylsa, buny sondaı-aq Jellyfin tasyǵyshhanasyn ornatý jáne teńsheý aımaǵynda tasyǵyshhana esebinde ústeý qajet.", "LabelCancelled": "Boldyrylmady", "LabelCertificatePassword": "Kýáliktiń paróli:", "LabelCertificatePasswordHelp": "Eger kýáligińizge paról qajet bolsa, ony munda engizińiz.", @@ -580,8 +567,6 @@ "LabelDeviceDescription": "Qurylǵy sıpattamasy", "LabelDidlMode": "DIDL rejimi:", "LabelDiscNumber": "Dıski nómiri:", - "LabelDisplayCollectionsView": "Fılmder jınaqtaryn kórsetý úshin Jıyntyqtar aspektin beıneleý", - "LabelDisplayCollectionsViewHelp": "Bul fılmdik jıyntyqtardy beıneleý úshin bólek aspektti jasaıdy. Jıyntyqty jasaý úshin, kezkelgen fılmniń ústinde tintýirdiń oń jaq túımeshign basyńyz nemese túrtińiz de ustap turyńyz jáne \"Jıyntyqqa ústeý\" túımeshigin tańdańyz. ", "LabelDisplayLanguage": "Beıneleý tili:", "LabelDisplayLanguageHelp": "Jellyfin tárjimeleýi aǵymdaǵy joba bolyp tabylady.", "LabelDisplayMissingEpisodesWithinSeasons": "Joq bólimderdi maýsym ishinde beıneleý", @@ -771,7 +756,6 @@ "LabelScheduledTaskLastRan": "Keıingi qosylǵany {0}, {1} aldy.", "LabelScreensaver": "Ekran qorǵaýysh:", "LabelSeasonNumber": "Maýsym nómiri:", - "LabelSecureConnectionsMode": "Qaýipsiz baılanysý rejimi:", "LabelSelectFolderGroups": "Kelesi qaltalardaǵy mazmundy Kıno, Mýzyka jáne TD sıaqty aspektterge avtomatty toptastyrý:", "LabelSelectFolderGroupsHelp": "Belgilenbegen qaltalar óz betimen óziniń aspektinde beınelenedi.", "LabelSelectUsers": "Paıdalanýshylardy tańdaý:", @@ -830,9 +814,6 @@ "LabelType": "Túri:", "LabelTypeMetadataDownloaders": "{0} metaderekter júkteýshileri:", "LabelTypeText": "Mátin", - "LabelUnairedMissingEpisodesWithinSeasons": "Kórsetilmegen bólimderdi maýsym ishinde beıneleý", - "LabelUnknownLanguage": "Belgisiz til", - "LabelUrl": "URL:", "LabelUseNotificationServices": "Kelesi qyzmetterdi paıdalaný:", "LabelUser": "Paıdalanýshy:", "LabelUserAgent": "Paıdalanýshy agenti:", @@ -845,7 +826,6 @@ "LabelValue": "Máni:", "LabelVersion": "Nusqa:", "LabelVersionInstalled": "{0} ornatylǵan", - "LabelVersionNumber": "Nýsqasy: {0}", "LabelVideo": "Beıne", "LabelXDlnaCap": "X-DLNA sıpattary:", "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ataýlar keńistigindegi X_DLNACAP elementi mazmunyn anyqtaıdy.", @@ -868,9 +848,6 @@ "Live": "Tikeleı", "LiveBroadcasts": "Tikeleı taratymdar", "LiveTV": "Efır", - "LiveTvFeatureDescription": "Jellyfin Server ornatylǵan úılesimdi TD-túner qurylǵysy arqyly kezkelgen Jellyfin-qoldanbaǵa TD-efırdi tikeleı jiberý.", - "LiveTvUpdateAvailable": "(Jańartý qoljetimdi)", - "LoginDisclaimer": "Jellyfin jeke tasyǵyshhanańyzdy (mysaly, úılik beıneler men fotosýretterdi) basqarýǵa kómektesý úshin arnalǵan. Bizdiń paıdalaný sharttaryn qarańyz. Kezkelgen Jellyfin baǵdarlamalyq jasaqtamasyn paıdalnǵanda osy sharttardyń qabyldaýyn bildiredi.", "Logo": "Logotıp", "ManageLibrary": "Tasyǵyshhanany retteý", "ManageRecording": "Jazýdy retteý", @@ -919,7 +896,6 @@ "MessageCreateAccountAt": "{0} janynda tirkelgi jasaý", "MessageDeleteTaskTrigger": "Shynymen osy tapsyrma trıggerin joıý qajet pe?", "MessageDirectoryPickerBSDInstruction": "BSD ortasynda, Jellyfin qol jetkizý maqsatynda, sizdiń FreeNAS Jail ishindegi jınaqtaýyshty teńsheý qajet bolýy múmkin.", - "MessageDirectoryPickerInstruction": "Jeli túımeshigi basylǵanda qurylǵylaryńyz orny tabylmasa, jelilik joldar qolmen engizilýi múmkin. Mysaly, {0} nemese {1}.", "MessageDirectoryPickerLinuxInstruction": "Arch Linux, CentOS, Debian, Fedora, openSUSE nemese Ubuntu júıelerindegi Linux úshin, Jqyzmet kórsetý paıdalanýshyǵa kem degende saqtaý jerlerińizge oqýǵa qatynas úshin ruqsat etýge tıissiz.", "MessageDownloadQueued": "Júktep alý kezekte.", "MessageEnablingOptionLongerScans": "Osy opsıa qoıylsa, tasyǵyshhana skanerleýleri edáýir uzyn bolýy múmkin.", @@ -932,8 +908,6 @@ "MessageItemSaved": "Tarmaq saqtaldy.", "MessageItemsAdded": "Tarmaqtar ústelgen.", "MessageLeaveEmptyToInherit": "Tektik tarmaqtan, nemese ǵalamdyq ádepki mánnen parametrlerdi muralaý úshin bos qaldyryńyz.", - "MessageLoggedOutParentalControl": "Aǵymda qatynaý shektelgen. Áreketti keıin qaıtalańyz.", - "MessageNamedServerConfigurationUpdatedWithValue": "Server konfıgýrasýasynyń {0} bólimi jańartyldy", "MessageNoAvailablePlugins": "Qol jetimdi plagınder joq.", "MessageNoMovieSuggestionsAvailable": "Eshqandaı fılm usynystary aǵymda qol jetimdi emes. Fılmderdi qaraýdy jáne baǵalaýdy bastańyz, sonda arnalǵan usynytaryńyzdy kórý úshin qaıta kelińiz.", "MessageNoPluginsInstalled": "Ornatylǵan plagınder joq.", @@ -991,9 +965,6 @@ "OnlyForcedSubtitles": "Tek qana májbúrli", "OnlyForcedSubtitlesHelp": "Tek qana májbúrli dep belgilengen sýbtıtrler júkteledi.", "OnlyImageFormats": "Tek keskin pishimder (VOBSUB, PGS jáne SUB)", - "Open": "Ashý", - "OptionActor": "Aktór", - "OptionActors": "Aktórler", "OptionAdminUsers": "Ákimshiler", "OptionAlbum": "Álbom", "OptionAlbumArtist": "Álbom oryndaýshysy", @@ -1165,7 +1136,6 @@ "PluginInstalledMessage": "Plagın sátti ornatyldy. Ózgertýler kúshine enýi úshin Jellyfin Server qaıta iske qosylý qajet.", "PreferEmbeddedTitlesOverFileNames": "Faıl ataýlary ornyna endirilgen ataýlardy qalaý", "PreferEmbeddedTitlesOverFileNamesHelp": "Internettegi metaderekter nemese jergilikti metaderekter qol jetimdi bolmaǵanda bul ádepki beıneletin ataýdy anyqtaıdy.", - "PreferredNotRequired": "Talap etiledi, biraq qajet emes", "Premiere": "Tusaýkeseri", "Premieres": "Premeralar", "Previous": "Aldyńǵy", @@ -1203,7 +1173,6 @@ "RepeatOne": "Bir ret qaıtalaý", "ReplaceAllMetadata": "Barlyq metaderekterdi aýystyrý", "ReplaceExistingImages": "Bar sýretterdi aýystyrý", - "RequiredForAllRemoteConnections": "Barlyq qashyqtaǵy qosylymdar úshin qajet", "ResumeAt": "{0} bastap jalǵastyrý", "Rewind": "Shegindirý", "RunAtStartup": "Iske qosylýdan bastap oryndaý", @@ -1222,7 +1191,6 @@ "SearchForMissingMetadata": "Joq metaderekterdi izdeý", "SearchForSubtitles": "Sýbtıtrlerdi izdeý", "SearchResults": "Izdeý nátıjeleri", - "SecondaryAudioNotSupported": "Dybys jolshyǵyn aýystyrý úshin qoldaý kórsetilmeıdi", "SendMessage": "Habar jiberý", "Series": "Telehıkaıa", "SeriesCancelled": "Telehıkaıa boldyrylmady.", @@ -1260,7 +1228,6 @@ "Sports": "Sport", "StopRecording": "Jazýdy toqtatý", "Studios": "Stýdıalar", - "Subscriptions": "Jazylymdar", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Bul parametrler osy qurylǵy arqyly iske qosylǵan kezkelgen Chromecast oınatýyna qoldanylady.", "SubtitleAppearanceSettingsDisclaimer": "Bul parametrler grafıkalyq sýbtıtrlerge (PGS, DVD j.t.b.) nemese óz máneri bar endirilgen ASS/SSA sýbtıtrlerine qoldanylmaıdy.", "SubtitleDownloadersHelp": "Teńshelgen sýbtıtrler júkteýshilerin qosyńyz jáne basymdylyq reti boıynsha dáreje berińiz.", @@ -1369,7 +1336,6 @@ "ValueOneSong": "1 áýen", "ValueSeconds": "{0} sek", "ValueSeriesCount": "{0} telehıkaıa", - "ValueSeriesYearToPresent": "{0} - Aǵymda", "ValueSongCount": "{0} áýen", "ValueSpecialEpisodeName": "Arnaıy - {0}", "ValueTimeLimitMultiHour": "Ýaqyt shegi: {0} saǵat", @@ -1378,7 +1344,6 @@ "Vertical": "Tiginen", "VideoRange": "Beıne aýqymy", "ViewAlbum": "Álbomdy qaraý", - "ViewArtist": "Oryndaýshyny qaraý", "ViewPlaybackInfo": "Oınatý týraly aqparat", "Watched": "Qaralǵan", "Wednesday": "sársenbi", diff --git a/src/strings/ko.json b/src/strings/ko.json index 8e68c4fb48..e587031bb5 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -466,7 +466,6 @@ "LabelUserLibraryHelp": "장치에 어떤 사용자 라이브러리를 보여줄 지 선택합니다. 기본 설정을 사용하려면 비워두십시오.", "LabelUsername": "사용자명:", "LabelVersionInstalled": "{0} 설치됨", - "LabelVersionNumber": "버전 {0}", "LabelYourFirstName": "이름:", "LabelYoureDone": "완료!", "LabelZipCode": "우편 번호:", @@ -776,7 +775,6 @@ "ValueTimeLimitSingleHour": "시간 제한: 1시간", "ValueVideoCodec": "비디오 코덱: {0}", "ViewAlbum": "앨범 보기", - "ViewArtist": "아티스트 보기", "Watched": "시청함", "Wednesday": "수요일", "WelcomeToProject": "Jellyfin에 오신 것을 환영합니다!", @@ -1051,7 +1049,6 @@ "LabelSimultaneousConnectionLimit": "동시 스트림 제한:", "LabelSize": "크기:", "LabelServerName": "서버 이름:", - "LabelSecureConnectionsMode": "보안 연결 모드:", "LabelScreensaver": "화면보호기:", "LabelRefreshMode": "새로고침 모드:", "LabelRecord": "녹화:", @@ -1105,7 +1102,6 @@ "MessageYouHaveVersionInstalled": "현재 버전 {0}이 설치되어있습니다.", "MessageNoServersAvailable": "자동 서버 탐색을 사용했지만, 서버가 발견되지 않았습니다.", "MessageDownloadQueued": "다운로드 대기 중.", - "MessageDirectoryPickerInstruction": "네트워크 버튼으로 장치를 찾지 못하면 네트워크 경로를 수동으로 입력할 수 있습니다. 예를 들어, {0} 또는 {1}.", "MessageDirectoryPickerLinuxInstruction": "Linux on Arch Linux, CentOS, Debian, Fedora, OpenSUSE, Ubuntu의 경우 서비스 사용자에게 최소한 저장 위치에 대한 읽기 권한을 부여해야 합니다.", "MessageDirectoryPickerBSDInstruction": "BSD의 경우, Jellyfin이 FreeNAS Jail에 액세스할 수 있도록 하려면 FreeNAS Jail 내에 스토리지를 구성해야 할 수도 있습니다.", "LinksValue": "링크: {0}", @@ -1162,7 +1158,6 @@ "SeriesYearToPresent": "{0} - 제공", "RemoveFromCollection": "콜렉션에서 제거", "RecentlyWatched": "최근 시청함", - "PreferredNotRequired": "추천하지만, 필수는 아닙니다", "PleaseAddAtLeastOneFolder": "추가 버튼을 클릭하여 하나 이상의 폴더를 라이브러리에 추가하십시오.", "PlaybackData": "재생 데이터", "PasswordResetProviderHelp": "비밀번호 재설정 제공자를 선택하십시오. 비밀번호 재설정이 요청될때 사용됩니다.", @@ -1284,7 +1279,6 @@ "HeaderContainerProfileHelp": "컨테이너 프로파일은 사용자의 디바이스에서 재생 가능한 파일 형식을 나타냅니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 형식이라면 트랜스코딩이 적용됩니다.", "HeaderCodecProfileHelp": "코덱 프로파일은 사용자의 디바이스에서 재생 가능한 코덱을 가리킵니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 코덱이라면 트랜스코딩이 적용됩니다.", "HeaderAppearsOn": "표시", - "HandledByProxy": "리버스 프록시로 처리", "Features": "기능", "ErrorPleaseSelectLineup": "라인업을 선택하고 다시 시도하십시오. 이용 가능한 라인업이 없으면 계정, 비밀번호, 우편번호가 정확한지 확인하십시오.", "ErrorAddingListingsToSchedulesDirect": "Schedules Direct 계정에 라인업을 추가하는 중에 오류가 발생했습니다. Schedules Direct는 계정 당 제한된 수의 라인업만이 허용됩니다. 계속하려면 Schedules Direct 웹사이트에 로그인하여 다른 항목을 삭제해야 할 수 있습니다.", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index af8962c474..c0b254251a 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -526,7 +526,6 @@ "ValueSongCount": "{0} dainų", "ValueSpecialEpisodeName": "Ypatinga - {0}", "ViewAlbum": "Žiūrėti albumą", - "ViewArtist": "Žiūrėti atlikėją", "Wednesday": "Trečiadienis", "WelcomeToProject": "Sveiki atvykę į Jellyfin!", "WizardCompleted": "Kol kas to užteks. Jellyfin pradėjo rinkti duomenis apie Jūsų medijos biblioteką. Peržiūrėkite programėles, o po to spauskite Baigti ir perkelsime jus į Serverio skydelį.", @@ -565,7 +564,6 @@ "ButtonLearnMore": "Sužinoti daugiau", "ButtonLibraryAccess": "Mediatekos prieiga", "ButtonMore": "Daugiau", - "ButtonMoreInformation": "Daugiau Informacijos", "ButtonNetwork": "Tinklas", "ButtonOff": "Išjungti", "ButtonOpen": "Atidaryti", @@ -925,7 +923,6 @@ "GroupBySeries": "Grupuoti pagal serialus", "Guide": "Gidas", "GuideProviderLogin": "Prisijungti", - "HandledByProxy": "Valdomas atvirkštiniu \"proxy\" serveriu", "HardwareAccelerationWarning": "Įjungus aparatinės įrangos spartinimą, kai kuriose diegimo aplinkose gali atsirasti nestabilumas. Įsitikinkite, kad jūsų operacinė sistema ir vaizdo tvarkyklės yra visiškai atnaujintos. Jei įjungus šį vaizdo įrašą kyla problemų, turite pakeisti nustatymą į \"Joks\".", "HeaderAdmin": "Administratorius", "HeaderAlbums": "Albumai", diff --git a/src/strings/lv.json b/src/strings/lv.json index 693d4e50cb..fd2d2d821e 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -108,7 +108,6 @@ "LabelSendNotificationToUsers": "Sūtīt paziņojumu uz:", "LabelSelectVersionToInstall": "Izvēlies versiju, ko uzstādīt:", "LabelSelectUsers": "Izvēlies lietotājus:", - "LabelSecureConnectionsMode": "Drošā savienojuma veids:", "LabelSeasonNumber": "Sezonas numurs:", "LabelScreensaver": "Ekrānsaudzētājs:", "LabelRuntimeMinutes": "Ilgums (minūtes):", @@ -664,7 +663,6 @@ "Wednesday": "Trešdiena", "Watched": "Skatīts", "ViewPlaybackInfo": "Skatīt atskaņošanas info", - "ViewArtist": "Skatīt izpildītāju", "ViewAlbum": "Skatīt albumu", "VideoRange": "Video platums", "Vertical": "Vertikāls", @@ -1015,7 +1013,6 @@ "LabelHardwareAccelerationTypeHelp": "Aparatūras paātrināšanai ir vajadzīga papildus konfigurācija.", "LabelEncoderPreset": "H264 un H265 kodēšanas noklusējumi:", "HardwareAccelerationWarning": "Iespējojot aparatūras paātrināšanu var veidot nestabilitāti dažās vidēs. Pārliecinies ka tava operētājsistēma un video draiveri it pilnībā atjaunināti. Ja tev ir problēmas ar video atskaņošanu pēc šī iestatījuma iespējošanas, tev vajadzēs pārmainīt to atpakaļ uz Neviens.", - "HandledByProxy": "Apstrādā reversais proxy", "LabelImageFetchersHelp": "Iespējo un sakārto savu attēlu sagādnieku prioritāti.", "HeaderFetcherSettings": "Sagādnieku Iestatījumi", "HeaderBranding": "Zīmols", diff --git a/src/strings/nb.json b/src/strings/nb.json index 96405b31e0..bba97f9da2 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -660,7 +660,6 @@ "LabelVaapiDeviceHelp": "Dette er enheten som brukes for maskinvareakselerasjon.", "LabelValue": "Verdi:", "LabelVersionInstalled": "{0} installert", - "LabelVersionNumber": "Versjon {0}", "LabelXDlnaCapHelp": "Bestemmer innholdet i X_DLNACAP-elementet i urn:schemas-dlna-org:device-1-0-domenet.", "LabelXDlnaDocHelp": "Bestemmer innholdet i X_DLNADOC-elementet i urn:schemas-dlna-org:device-1-0-domenet.", "LabelYourFirstName": "Fornavnet ditt:", @@ -712,7 +711,6 @@ "MessageCreateAccountAt": "Opprett en konto hos {0}", "MessageDeleteTaskTrigger": "Er du sikker på at du vil slette denne oppgaveutløseren?", "MessageDirectoryPickerBSDInstruction": "På BSD-systemer må du kanskje endre lagringsinnstillinger i FreeNAS Jail slik at Jellyfin har tilgang dit.", - "MessageDirectoryPickerInstruction": "Nettverksbaner kan skrives inn manuelt i tilfelle søke-knappen ikke klarer å lokalisere enhetene dine. For eksempel {0} eller {1}.", "MessageDirectoryPickerLinuxInstruction": "På Linux-systemer med Arch Linux, CentOS, Debian, Fedora, openSUSE eller Ubuntu må du minimum gi tjenestebrukeren lesetilgang til lagringsplassene dine.", "MessageDownloadQueued": "Nedlasting lagt i kø.", "MessageEnablingOptionLongerScans": "Aktivering av dette alternativet kan føre til at skanning av biblioteket tar betydelig lenger tid.", @@ -1078,7 +1076,6 @@ "ValueVideoCodec": "Videokodek: {0}", "VideoRange": "Videoområde", "ViewAlbum": "Vis album", - "ViewArtist": "Vis artist", "ViewPlaybackInfo": "Vis avspillingsinformasjon", "Watched": "Sett", "Wednesday": "Onsdag", @@ -1146,9 +1143,7 @@ "LabelPlayMethod": "Avspillingsmetode:", "LabelTranscodes": "Omkodede filer:", "MediaInfoLayout": "Oppsett", - "HandledByProxy": "Håndteres av en reverse proxy", "LabelRemoteClientBitrateLimitHelp": "En valgfri begrensning på bithastighet per strøm for alle enheter utenfor hjemmenettverket. Dette er nyttig for å hindre enheter fra å be om en høyere bithastighet enn internettilkoblingen din kan håndtere. Dette kan føre til økt CPU-bruk på serveren for å kunne omkode videoer fortløpende til en lavere bithastighet.", - "LabelSecureConnectionsMode": "Modus for sikker tilkobling:", "MediaInfoRefFrames": "Referanserammer", "MediaIsBeingConverted": "Mediet blir konvertert til et format som er kompatibelt med enheten som spiller av mediet.", "MediaInfoStreamTypeAudio": "Lyd", @@ -1401,10 +1396,8 @@ "PlaybackData": "Avspillingsdata", "PlayCount": "Antall avspillinger", "Playlists": "Spillelister", - "PreferredNotRequired": "Foretrukket, men ikke påkrevd", "Previous": "Forrige", "Primary": "Primær", - "RequiredForAllRemoteConnections": "Påkrevd for alle eksterne tilkoblinger", "RunAtStartup": "Kjør ved oppstart", "SaveSubtitlesIntoMediaFolders": "Lagre undertekster i mediemapper", "SaveSubtitlesIntoMediaFoldersHelp": "Lagring av undertekster ved siden av videofilene vil gjøre det lettere å behandle dem.", diff --git a/src/strings/nl.json b/src/strings/nl.json index c407f81680..e97578db4b 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -253,7 +253,6 @@ "H264CrfHelp": "De Constant Rate Factor (CRF) is de standaard kwaliteit instelling voor de x264-encoder. U kunt de waarden tussen 0 en 51, in voorkomend lagere waarden zou resulteren in een betere kwaliteit (ten koste van hogere bestandsgrootte). aanbevolen zijn waarden tussen de 18 en 28. De standaard voor de x264 is 23, zodat u deze kunt gebruiken als uitgangspunt.", "EncoderPresetHelp": "Kies een hogere waarde om de prestaties, of een tragere waarde om de kwaliteit te verbeteren.", "HDPrograms": "HD Programma's", - "HandledByProxy": "Behandeld door reverse proxy", "HardwareAccelerationWarning": "Hardwareversnelling inschakelen kan instabiliteit veroorzaken in sommige omgevingen. Zorg ervoor dat uw besturingssysteem en videostuurprogramma's volledig up-to-date zijn. Als u problemen ondervindt bij het afspelen van video, nadat u dit hebt ingeschakeld, moet u de instelling terugzetten naar geen.", "HeaderAccessSchedule": "Schema Toegang", "HeaderAccessScheduleHelp": "Maak een toegangsschema om de toegang tot bepaalde tijden te beperken.", @@ -711,7 +710,6 @@ "LabelScheduledTaskLastRan": "Laatste keer {0}, duur {1}.", "LabelScreensaver": "Schermbeveiliging:", "LabelSeasonNumber": "Seizoensnummer:", - "LabelSecureConnectionsMode": "Beveiligde verbinding modus:", "LabelSelectFolderGroups": "De inhoud van de volgende mappen automatisch groeperen in secties zoals Films, Muziek en TV:", "LabelSelectFolderGroupsHelp": "Mappen die niet aangevinkt zijn worden getoond in hun eigen weergave.", "LabelSelectUsers": "Selecteer gebruikers:", @@ -773,7 +771,6 @@ "LabelValue": "Waarde:", "LabelVersion": "Versie:", "LabelVersionInstalled": "{0} geïnstalleerd", - "LabelVersionNumber": "Versie {0}", "LabelXDlnaCapHelp": "Bepaalt de inhoud van het X_DLNACAP element in de urn: schemas-dlna-org:device-1-0 namespace.", "LabelXDlnaDocHelp": "Bepaalt de inhoud van het X_DLNADOC element in de urn:schemas-dlna-org:device-1-0 namespace.", "LabelYear": "Jaar:", @@ -829,7 +826,6 @@ "MessageCreateAccountAt": "Maak een account bij {0}", "MessageDeleteTaskTrigger": "Weet u zeker dat u deze signaal taak wilt verwijderen?", "MessageDirectoryPickerBSDInstruction": "Voor BSD kan het noodzakelijk zijn opslag op uw FreeNAS Jail te configureren voordat Jellyfin het kan benaderen.", - "MessageDirectoryPickerInstruction": "Netwerk paden kunnen handmatig worden ingevoerd in het geval de Netwerk knop faalt om uw apparatuur te lokaliseren. Bijvoorbeeld: {0} of {1}.", "MessageDirectoryPickerLinuxInstruction": "Voor Linux op Arch Linux, CentOS, Debian, Fedora, openSUSE, of Ubuntu, moet u de service-gebruiker ten minste leestoegang tot uw opslaglocaties verlenen.", "MessageDownloadQueued": "Download in de wachtrij geplaatst.", "MessageEnablingOptionLongerScans": "Het inschakelen van deze optie kan leiden tot langere doorlooptijd van bibliotheek scans.", @@ -1051,7 +1047,6 @@ "PluginInstalledMessage": "Het installeren van de plugin is gelukt. Jellyfin Server zal heropgestart moeten worden om de wijzigingen door te voeren.", "PreferEmbeddedTitlesOverFileNames": "Prefereer ingesloten titels boven bestandsnamen", "PreferEmbeddedTitlesOverFileNamesHelp": "Dit bepaalt de standaard weergavetitel wanneer er geen internet metagegevens of lokale metadata beschikbaar is.", - "PreferredNotRequired": "Gewenst, maar niet verplicht", "Premieres": "Premières", "Previous": "Vorige", "Primary": "Primair", @@ -1088,7 +1083,6 @@ "RepeatOne": "Eén herhalen", "ReplaceAllMetadata": "Alle metadata vervangen", "ReplaceExistingImages": "Bestaande afbeeldingen vervangen", - "RequiredForAllRemoteConnections": "Vereist voor alle externe verbindingen", "ResumeAt": "Hervatten vanaf {0}", "Rewind": "Terugspoelen", "RunAtStartup": "Uitvoeren bij opstarten", @@ -1236,7 +1230,6 @@ "Vertical": "Verticaal", "VideoRange": "Videobereik", "ViewAlbum": "Bekijk album", - "ViewArtist": "Bekijk artiest", "ViewPlaybackInfo": "Bekijk afspelen info", "Watched": "Bekeken", "Wednesday": "Woensdag", @@ -1273,19 +1266,10 @@ "HeaderCastCrew": "Acteurs & medewerkers", "Art": "Afbeeldingen", "HeaderLiveTV": "Live TV", - "HeaderDetails": "Details", - "HeaderExport": "Exporteer", "HeaderFilters": "Filters", "HeaderGenres": "Genres", "HeaderHttpHeaders": "HTTP Headers", - "HeaderImageLogo": "Logo", - "HeaderMenu": "Menu", - "HeaderResetTuner": "Ontvanger resetten", - "HeaderReviews": "Beoordelingen", "HeaderStatus": "Status", - "HeaderSync": "Synchronisatie", - "HeaderTV": "TV", - "HeaderTopPlugins": "Top Plugins", "AuthProviderHelp": "Selecteer een Authenticatie Provider om het wachtwoord van deze gebruiker te verifiëren.", "HeaderFavoriteMovies": "Favoriete Films", "HeaderFavoriteShows": "Favoriete shows", @@ -1296,7 +1280,6 @@ "HeaderFavoriteVideos": "Favoriete Films", "HeaderInstantMix": "Directe Mix", "HeaderItems": "Items", - "HeaderJellyfinServer": "Jellyfin Server", "HeaderLiveTv": "Live TV", "HeaderMedia": "Media", "HeaderTracks": "Nummers", diff --git a/src/strings/pl.json b/src/strings/pl.json index 9e21c5113d..a141b975cb 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -268,7 +268,6 @@ "H264CrfHelp": "Constant Rate Factor (CRF) to domyślna jakość kodowania x264. Możesz ją ustawić w zakresie 0-51, gdzie niższe wartości zwiększają jakość (kosztem większego rozmiaru pliku). Rozsądne wartości to zakres 18-28. Domyślnie jest to wartość 23 - możesz jej użyć jako wartości początkowej.", "EncoderPresetHelp": "Wybierz wartość faster, żeby zwiększyć wydajność, albo slower, żeby zwiększyć jakość.", "HDPrograms": "Programy w jakości HD", - "HandledByProxy": "Obsługiwane przez usługę pośredniczącą", "HardwareAccelerationWarning": "Aktywacja akceleracji sprzętowej może powodować niestabilność na niektórych środowiskach. Upewnij się, że system operacyjny i sterowniki karty graficznej są aktualne. Jeżeli masz problemy z odtwarzaniem wideo po aktywacji, przywróć to ustawienie do wartości Brak.", "HeaderAccessSchedule": "Harmonogram dostępu", "HeaderAccessScheduleHelp": "Utwórz dostęp do harmonogramu aby ograniczyć go do określonych godzin.", @@ -754,7 +753,6 @@ "LabelScheduledTaskLastRan": "Ostatnio uruchomiono {0}, czas trwania {1}.", "LabelScreensaver": "Wygaszacz ekranu:", "LabelSeasonNumber": "Numer sezonu:", - "LabelSecureConnectionsMode": "Tryb zabezpieczania połączenia:", "LabelSelectFolderGroups": "Grupuj zawartość z następujących folderów w widokach taki, jak Filmy, Muzyka i Seriale:", "LabelSelectFolderGroupsHelp": "Foldery, które nie zostały zaznaczone, będą wyświetlane w swoich własnych, osobnych widokach.", "LabelSelectUsers": "Wybierz użytkowników:", @@ -825,7 +823,6 @@ "LabelValue": "Wartość:", "LabelVersion": "Wersja:", "LabelVersionInstalled": "Zainstalowano {0}", - "LabelVersionNumber": "Wersja {0}", "LabelVideo": "Wideo", "LabelXDlnaCapHelp": "Określa zawartość elementu X_DLNACAP w przestrzeni nazw urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDocHelp": "Określa zawartość elementu X_DLNADOC w przestrzeni nazw urn:schemas-dlna-org:device-1-0.", @@ -892,7 +889,6 @@ "MessageCreateAccountAt": "Utwórz konto na {0}", "MessageDeleteTaskTrigger": "Czy na pewno chcesz usunąć ten wyzwalacz zadania?", "MessageDirectoryPickerBSDInstruction": "W wypadku BSD, należy skonfigurować oprogramowanie FreeNAS aby umożliwić serwerowi Jellyfin dostęp do danych.", - "MessageDirectoryPickerInstruction": "Udziały sieciowe mogą być wprowadzone manualnie, w przypadku niewykrycia wszystkich urządzeń za pomocą przycisku \"Sieć\". Na przykład: {0} lub {1}.", "MessageDirectoryPickerLinuxInstruction": "Dla Linuxa dystrybucji Arch Linux, CentOS, Debian, Fedora, openSUSE albo Ubuntu, musisz uzyskać dla użytkownika Jellyfin uprawnienia przynajmniej do odczytu pamięci masowej.", "MessageDownloadQueued": "Dodano do kolejki pobierania.", "MessageEnablingOptionLongerScans": "Aktywowanie tej opcji może spowodować znaczne wydłużenie czasu skanowania biblioteki.", @@ -1131,7 +1127,6 @@ "PluginInstalledMessage": "Wtyczka została poprawnie zainstalowana. Serwer Jellyfin będzie wymagała ponownego uruchomienia w celu zastosowania zmian.", "PreferEmbeddedTitlesOverFileNames": "Preferuj wbudowane tytuły zamiast nazw plików", "PreferEmbeddedTitlesOverFileNamesHelp": "Określa domyślnie wyświetlany tytuł, gdy brak dostępnych metadanych lokalnych i od dostawców internetowych.", - "PreferredNotRequired": "Preferowane, ale niewymagane", "Premiere": "Premiera", "Premieres": "Premiery", "Previous": "Poprzedni", @@ -1169,7 +1164,6 @@ "RepeatOne": "Powtarzaj jedno", "ReplaceAllMetadata": "Zastępuj wszystkie metadane", "ReplaceExistingImages": "Zastępuj istniejące obrazy", - "RequiredForAllRemoteConnections": "Wymagane dla wszystkich zdalnych połączeń", "ResumeAt": "Wznów odtwarzanie od {0}", "Rewind": "Do tyłu", "RunAtStartup": "Uruchamiaj po starcie", @@ -1339,7 +1333,6 @@ "Vertical": "Wertykalny", "VideoRange": "Zakres wideo", "ViewAlbum": "Podgląd albumu", - "ViewArtist": "Podgląd wykonawcy", "ViewPlaybackInfo": "Wyświetlaj informacje o odtwarzaniu", "Watched": "Obejrzany", "Wednesday": "Środa", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 5eff56b221..413abeea73 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -257,7 +257,6 @@ "H264CrfHelp": "O CRF (Constant Rate Factor) é a configuração padrão de qualidade para o codificador x264. Você pode definir valores entre 0 e 51, onde valores menores resultarão em melhor qualidade (ao custo de arquivos maiores). Valores saudáveis estão entre 18 e 28. O padrão para o x264 é 23, então você pode usar isso como um ponto de partida.", "EncoderPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho ou um valor mais lento para melhorar a qualidade.", "HDPrograms": "Programas em HD", - "HandledByProxy": "Tratado pelo proxy reverso", "HardwareAccelerationWarning": "Ativar a aceleração de hardware pode causar instabilidade em alguns sistemas. Verifique se seu sistema operacional e drivers de vídeo estão atualizados. Se tiver dificuldades em reproduzir vídeo depois de ativar, retorne a configuração para automático.", "HeaderAccessSchedule": "Agendamento de Acesso", "HeaderAccessScheduleHelp": "Cria um agendamento de acesso para limitar o acesso em certos horários.", @@ -735,7 +734,6 @@ "LabelScheduledTaskLastRan": "Última execução {0}, demorando {1}.", "LabelScreensaver": "Protetor de tela:", "LabelSeasonNumber": "Número da temporada:", - "LabelSecureConnectionsMode": "Modo de conexão segura:", "LabelSelectFolderGroups": "Agrupar automaticamente o conteúdo das seguintes pastas em visualizações como Filmes, Músicas e TV:", "LabelSelectFolderGroupsHelp": "Pastas que não estão marcadas serão exibidas em sua própria visualização.", "LabelSelectUsers": "Selecionar usuários:", @@ -802,7 +800,6 @@ "LabelValue": "Valor:", "LabelVersion": "Versão:", "LabelVersionInstalled": "{0} instalado", - "LabelVersionNumber": "Versão {0}", "LabelVideo": "Vídeo", "LabelXDlnaCapHelp": "Determina o conteúdo do elemento X_DLNACAP no namespace urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDocHelp": "Determina o conteúdo do elemento X_DLNADOC no namespace urn:schemas-dlna-org:device-1-0.", @@ -865,7 +862,6 @@ "MessageCreateAccountAt": "Criar uma conta em {0}", "MessageDeleteTaskTrigger": "Deseja realmente excluir este disparador de tarefa?", "MessageDirectoryPickerBSDInstruction": "Para BSD, você precisará configurar o armazenamento dentro de seu Jail do FreeNAS para permitir que o Jellyfin tenha acesso a ele.", - "MessageDirectoryPickerInstruction": "Os locais de rede podem ser inseridos manualmente caso o botão de rede falhe em localizar seus dispositivos. Por exemplo, {0} ou {1}.", "MessageDirectoryPickerLinuxInstruction": "Sistemas operacionais Arch Linux, CentOS, Debian, Fedora, openSUSE ou Ubuntu, devem permitir que a conta de serviço tenha ao menos acesso de leitura nos locais de armazenamento.", "MessageDownloadQueued": "Download enfileirado.", "MessageEnablingOptionLongerScans": "Ativar esta opção pode resultar em rastreamentos de biblioteca significativamente mais demorados.", @@ -1093,7 +1089,6 @@ "PluginInstalledMessage": "O plugin foi instalado com sucesso. O Servidor Jellyfin precisa ser reiniciado para que as alterações sejam aplicadas.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incorporados ao invés de nomes de arquivos", "PreferEmbeddedTitlesOverFileNamesHelp": "Isto determina a exibição padrão do título quando não houverem metadados da internet ou locais disponíveis.", - "PreferredNotRequired": "Preferível, mas não necessário", "Premieres": "Estreias", "Previous": "Anterior", "Primary": "Principal", @@ -1130,7 +1125,6 @@ "RepeatOne": "Repetir uma vez", "ReplaceAllMetadata": "Substituir todos os metadados", "ReplaceExistingImages": "Substituir imagens existentes", - "RequiredForAllRemoteConnections": "Necessário para todas as conexões remotas", "ResumeAt": "Retomar de {0}", "Rewind": "Retroceder", "RunAtStartup": "Executar ao iniciar", @@ -1286,7 +1280,6 @@ "ValueVideoCodec": "Codec de Vídeo: {0}", "VideoRange": "Faixa de vídeo", "ViewAlbum": "Exibir álbum", - "ViewArtist": "Exibir artista", "ViewPlaybackInfo": "Exibir informação de reprodução", "Watched": "Assistido", "Wednesday": "Quarta-feira", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 07b1f1aceb..4243a4869c 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -488,7 +488,6 @@ "LabelUsername": "Nome de Utilizador:", "LabelValue": "Valor:", "LabelVersionInstalled": "{0} instalado", - "LabelVersionNumber": "Versão {0}", "LabelXDlnaCapHelp": "Determina o conteúdo do elemento X_DLNACAP no namespace urn:schemas-dlna-org:device-1-0.", "LabelXDlnaDocHelp": "Determina o conteúdo do elemento X_DLNADOC no namespace urn:schemas-dlna-org:device-1-0.", "LabelYourFirstName": "O seu primeiro nome:", @@ -505,7 +504,6 @@ "MessageConfirmShutdown": "Tem a certeza de que deseja encerrar o servidor?", "MessageDeleteTaskTrigger": "Tem a certeza de que deseja remover o agendamento desta tarefa?", "MessageDirectoryPickerBSDInstruction": "Num sistema operativo BSD, é necessário configurar o disco Jail FreeNAS para permitir o acesso do Servidor Jellyfin.", - "MessageDirectoryPickerInstruction": "As localizações de rede podem ser escritas manualmente caso o botão \"Rede\" não consiga encontrar os dispositivos. Por exemplo, {0} ou {1}.", "MessageDirectoryPickerLinuxInstruction": "Em sistemas operativos como Arch Linux, CentOS, Debian, Fedora, openSUSE, ou Ubuntu, é necessário dar permissão ao utilizador que executa o processo Jellyfin para ter, no mínimo, acesso de leitura à pasta.", "MessageEnablingOptionLongerScans": "Ativar esta opção pode aumentar significativamente a duração da análise da biblioteca.", "MessageFileReadError": "Ocorreu um erro ao ler este ficheiro.", @@ -865,7 +863,6 @@ "HeaderAlert": "Alerta", "HeaderAlbums": "Álbuns", "HeaderAddToPlaylist": "Adicionar à Lista de Reprodução", - "HandledByProxy": "Gerido pelo proxy inverso", "HDPrograms": "Programas HD", "EncoderPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho, ou um valor mais lento para melhorar a qualidade.", "Guide": "Programação", @@ -996,7 +993,6 @@ "Runtime": "Duração", "RunAtStartup": "Executar no arranque", "ResumeAt": "Retomar a partir de {0}", - "RequiredForAllRemoteConnections": "Necessário para todas as ligações externas", "ReplaceAllMetadata": "Substituir todos os metadados", "RepeatOne": "Repetir este", "RepeatMode": "Modo de Repetição", @@ -1147,7 +1143,6 @@ "LabelProfileCodecs": "Codecs:", "LabelReasonForTranscoding": "Razão para transcodificação:", "LabelScreensaver": "Proteção de Ecrã:", - "LabelSecureConnectionsMode": "Modo de ligação segura:", "LabelSeriesRecordingPath": "Caminho para gravação de séries (opcional):", "ColorPrimaries": "Cores primárias", "MessageInvalidForgotPasswordPin": "Foi inserido um código PIN inválido ou expirado. Por favor, tente de novo.", @@ -1254,7 +1249,6 @@ "Studios": "Estúdios", "Watched": "Visto", "ViewPlaybackInfo": "Ver informação de reprodução", - "ViewArtist": "Ver artista", "ViewAlbum": "Ver álbum", "Vertical": "Vertical", "ValueSongCount": "{0} músicas", @@ -1400,7 +1394,6 @@ "Previous": "Anterior", "Premieres": "Estreias", "Premiere": "Estreia", - "PreferredNotRequired": "Prefiro, mas não obrigatório", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos embutidos a nomes de ficheiro", "PictureInPicture": "Imagem em imagem", "OptionThumbCard": "Miniatura cartão", diff --git a/src/strings/pt.json b/src/strings/pt.json index dba5a7ab52..e6d21f584d 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -120,7 +120,6 @@ "RunAtStartup": "Executar no arranque", "Rewind": "Retroceder", "ResumeAt": "Retomar a partir de {0}", - "RequiredForAllRemoteConnections": "Necessário para todas as ligações externas", "ReplaceExistingImages": "Substituir imagens existentes", "ReplaceAllMetadata": "Substituir todos os metadados", "RepeatOne": "Repetir este", @@ -716,7 +715,6 @@ "MessageEnablingOptionLongerScans": "Activar esta opção pode aumentar significativamente a duração da análise da biblioteca.", "MessageDownloadQueued": "Transferência pendente.", "MessageDirectoryPickerLinuxInstruction": "Em sistemas operativos como Arch Linux, CentOS, Debian, Fedora, OpenSuse ou Ubuntu, é necessário dar permissão ao utilizador que executa o processo Jellyfin para ter, no mínimo, acesso de leitura à pasta.", - "MessageDirectoryPickerInstruction": "As localizações de rede podem ser introduzidas manualmente caso o botão \"Rede\" não consiga encontrar os dispositivos. Por exemplo, {0} ou {1}.", "MessageDirectoryPickerBSDInstruction": "Num sistema operativo BSD, é necessário configurar o disco FreeNAS Jail para permitir o acesso do Servidor Jellyfin.", "MessageDeleteTaskTrigger": "Tem a certeza que deseja remover o agendamento desta tarefa?", "MessageCreateAccountAt": "Criar uma conta em {0}", @@ -810,7 +808,6 @@ "LabelSelectUsers": "Seleccionar utilizadores:", "LabelSelectFolderGroupsHelp": "Pastas não selecionadas serão apresentadas sozinhas, na sua própria vista.", "LabelSelectFolderGroups": "Agrupar automaticamente o conteúdo das pastas seguintes em vistas como Filmes, Música e TV:", - "LabelSecureConnectionsMode": "Modo de ligação segura:", "LabelSeasonNumber": "Número da temporada:", "LabelScreensaver": "Proteção de Ecrã:", "LabelScheduledTaskLastRan": "Última execução há {0}. Tempo de execução {1}.", @@ -1173,7 +1170,6 @@ "HeaderAccessScheduleHelp": "Crie uma restrição horária de acesso para limitar o acesso ao Jellyfin a determinadas horas.", "HeaderAccessSchedule": "Restrição Horária de Acesso", "HardwareAccelerationWarning": "A ativação da aceleração de hardware pode causar instabilidade em alguns ambientes. Verifique se o sistema operacional e os drivers de vídeo estão totalmente atualizados. Se você tiver dificuldade em reproduzir o vídeo depois de ativar isso, precisará alterar a configuração novamente para Nenhum.", - "HandledByProxy": "Gerido pelo proxy inverso", "HDPrograms": "Programas HD", "EncoderPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho, ou um valor mais lento para melhorar a qualidade.", "H264CrfHelp": "O parâmetro \\\"Constant Rate Factor (CRF)\\\" define o nível de qualidade usadoi por omissão pelo codificador x264. Os valores variam entre 0 e 51, em que valores mais baixos resultam em maior qualidade (com o custo de ficheiros maiores). Valores entre 18 e 28 são habitualmente considerados aceitáveis. O valor por omissão é 23, sendo um bom ponto de partida para ajustes.", @@ -1361,7 +1357,6 @@ "AlbumArtist": "Álbum do Artista", "Quality": "Qualidade", "Previous": "Anterior", - "PreferredNotRequired": "Preferível, mas não obrigatório", "PictureInPicture": "vídeo destacado", "OptionThumb": "Miniatura", "OptionRequirePerfectSubtitleMatchHelp": "Solicitar a \"correspondência perfeita\" filtrará as legendas incluindo apenas aquelas que foram testadas com o arquivo de vídeo. Desmarcar isto aumentará a probabilidade de baixar legendas, mas poderá obter legendas incorretas ou não sincronizadas.", diff --git a/src/strings/ro.json b/src/strings/ro.json index ff443fae68..ccb91f0a50 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -409,7 +409,6 @@ "General": "General", "GuideProviderLogin": "Autentificare", "HDPrograms": "Programe HD", - "HandledByProxy": "Gestionat de proxy invers", "HeaderApiKeys": "Chei API", "HeaderApp": "Aplicație", "HeaderCastCrew": "Distribuție și echipă", @@ -684,7 +683,6 @@ "LabelSelectVersionToInstall": "Alegeți versiunea pentru instalare:", "LabelSelectFolderGroupsHelp": "Dosarele care nu sunt bifate vor fi afișate de singure în propria vizualizare.", "LabelSelectFolderGroups": "Grupați automat conținutul din următoarele foldere în vizualizări, cum ar fi Filme, Muzică și TV:", - "LabelSecureConnectionsMode": "Mod de conectare securizat:", "LabelSeasonNumber": "Numărul sezonului:", "LabelScreensaver": "Protector de ecran:", "LabelScheduledTaskLastRan": "Ultima redare{0}, cu durata {1}.", @@ -1066,7 +1064,6 @@ "MessageFileReadError": "S-a întâmpinat o eroare în timpul citirii fișierului. Vă rugăm să încercați din nou.", "MessageDownloadQueued": "Descărcare adăugata în coadă.", "MessageDirectoryPickerLinuxInstruction": "Pentru Linux pe Arch Linux, CentOS, Debian, Fedora, openSUSE sau Ubuntu, trebuie să acordați utilizatorului serverului Jellyfin cel puțin permisiunea de citire la locațiile de stocare.", - "MessageDirectoryPickerInstruction": "Căile de rețea pot fi introduse manual în cazul în care butonul Network nu reușește să localizeze dispozitivele. De exemplu, {0} sau {1}.", "MessageDirectoryPickerBSDInstruction": "Pentru BSD, poate fi necesar să configurați stocarea în FreeNAS jail pentru a permite serverului Jellyfin să o acceseze.", "MessageDeleteTaskTrigger": "Sigur doriți să ștergeți acest declanșator de activitate?", "MessageCreateAccountAt": "Crează un cont la {0}", @@ -1225,7 +1222,6 @@ "RunAtStartup": "Rulați la pornire", "Rewind": "Derulează", "ResumeAt": "Reluați de la {0}", - "RequiredForAllRemoteConnections": "Obligatoriu pentru toate conexiunile distante", "ReplaceExistingImages": "Înlocuiți toate imaginile", "ReplaceAllMetadata": "Înlocuiți toate metadatele", "RepeatOne": "Repetă una singură", @@ -1263,7 +1259,6 @@ "Previous": "Anteriorul", "Premieres": "Premiere", "Premiere": "Premieră", - "PreferredNotRequired": "Preferat, dar nu este necesar", "PreferEmbeddedTitlesOverFileNamesHelp": "Aceasta determină titlul afișat implicit atunci când nu sunt disponibile metadate din internet sau metadate locale.", "PreferEmbeddedTitlesOverFileNames": "Preferă titlurile incluse decât numele fișierelor", "PluginInstalledMessage": "Pluginul a fost instalat cu succes. Jellyfin Server va trebui să fie repornit pentru ca modificările să intre în vigoare.", @@ -1375,7 +1370,6 @@ "Whitelist": "Listă agreată", "Watched": "Vizionat", "ViewPlaybackInfo": "Vizualizați informațiile despre redare", - "ViewArtist": "Vezi artist", "ViewAlbum": "Vizualizați albumul", "VideoRange": "Interval video", "Vertical": "Vertical", diff --git a/src/strings/ru.json b/src/strings/ru.json index 29fb03210a..0a471bca0c 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -272,7 +272,6 @@ "H264CrfHelp": "Постоянное значение оценки (Constant Rate Factor, CRF) - параметр качества по умолчанию для кодёра x264. Возможно задавать значения от 0 до 51, где меньшие значения привели бы к улучшению качества (за счёт увеличения размеров файлов). Приемлемыми являются значения от 18 до 28. Стандартно для x264 - 23, так что вы можете использовать это в качестве отправной точки.", "EncoderPresetHelp": "Выберите значение быстрее для улучшения производительности, или значение медленнее для улучшения качества.", "HDPrograms": "HD-передачи", - "HandledByProxy": "Обрабатывается обратным прокси", "HardwareAccelerationWarning": "Включение аппаратного ускорения может привести к нестабильности в некоторых средах. Убедитесь в том, что ваша операционная система и видеодрайверы полностью актуализированы. Если имеются проблемы с воспроизведением видео после включения этого, необходимо сменить параметр назад на Ничего.", "HeaderAccessSchedule": "Расписание доступа", "HeaderAccessScheduleHelp": "Создайте расписание доступа, чтобы лимитировать доступ определёнными часами.", @@ -759,7 +758,6 @@ "LabelScheduledTaskLastRan": "Последний запуск был {0}, занял {1}.", "LabelScreensaver": "Хранитель экрана:", "LabelSeasonNumber": "Номер сезона:", - "LabelSecureConnectionsMode": "Режим безопасного соединения:", "LabelSelectFolderGroups": "Автоматическое группирование внутрь аспектов (например: Кино, Музыка и ТВ) содержания из следующих папок:", "LabelSelectFolderGroupsHelp": "Папки, при которых сняты флажки, будут отображаться самостоятельно в их собственных аспектах.", "LabelSelectUsers": "Выбранные пользователи:", @@ -830,7 +828,6 @@ "LabelValue": "Значение:", "LabelVersion": "Версия:", "LabelVersionInstalled": "Установлена: {0}", - "LabelVersionNumber": "Версия {0}", "LabelVideo": "Видео", "LabelXDlnaCap": "Свойства X-Dlna:", "LabelXDlnaCapHelp": "Определяется содержание из элемента X_DLNACAP во пространстве имён urn:schemas-dlna-org:device-1-0.", @@ -902,7 +899,6 @@ "MessageCreateAccountAt": "Создайте учётную запись на {0}", "MessageDeleteTaskTrigger": "Вы действительно хотите удалить данный триггер задачи?", "MessageDirectoryPickerBSDInstruction": "Касаемо BSD, возможно, потребуется конфигурировать хранилище в вашем FreeNAS Jail для того, чтобы разрешить Jellyfin получить к нему доступ.", - "MessageDirectoryPickerInstruction": "Сетевые пути возможно ввести вручную, в том случае, если при нажатии кнопки «Сеть» происходит сбой обнаружения устройств. Например: {0} или {1}.", "MessageDirectoryPickerLinuxInstruction": "Для Linux на Arch Linux, CentOS, Debian, Fedora, openSUSE или Ubuntu, вы должны предоставить пользователю службы, по крайней мере, доступ для чтения к расположениям хранилища.", "MessageDownloadQueued": "Загрузка в очереди.", "MessageEnablingOptionLongerScans": "Включение этой опции может привести к значительному увеличению времени сканирования медиатеки.", @@ -1143,7 +1139,6 @@ "PluginInstalledMessage": "Плагин установлен успешно. Чтобы изменения вступили в силу, будет необходимо перезапустить Jellyfin Server.", "PreferEmbeddedTitlesOverFileNames": "Предпочитать внедрённые названия, чем имена файлов", "PreferEmbeddedTitlesOverFileNamesHelp": "Этим определяется отображаемое название по умолчанию, когда нет метаданных с интернета или локальные метаданные недоступны.", - "PreferredNotRequired": "Предпочтительно, но не требуется", "Premiere": "Премьера", "Premieres": "Премьеры", "Previous": "Предыдущее", @@ -1181,7 +1176,6 @@ "RepeatOne": "Повторить раз", "ReplaceAllMetadata": "Замена всех метаданных", "ReplaceExistingImages": "Замена имеющихся изображений", - "RequiredForAllRemoteConnections": "Требуется для всех внешних подключений", "ResumeAt": "Возобновить с {0}", "Rewind": "Отмотать", "RunAtStartup": "Запускать при старте системы", @@ -1355,7 +1349,6 @@ "Vertical": "Вертикально", "VideoRange": "Диапазон видео", "ViewAlbum": "Посмотреть альбом", - "ViewArtist": "Посмотреть исполнителя", "ViewPlaybackInfo": "Сведения о воспроизводимом", "Watched": "Просмотрено", "Wednesday": "среда", diff --git a/src/strings/sk.json b/src/strings/sk.json index 581bd128ff..dc754fdff2 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -492,7 +492,6 @@ "LabelValue": "Hodnota:", "LabelVersion": "Verzia:", "LabelVersionInstalled": "{0} nainštalovaný", - "LabelVersionNumber": "Verzia {0}", "LabelYear": "Rok:", "LabelYourFirstName": "Meno:", "LabelYoureDone": "Hotovo!", @@ -850,7 +849,6 @@ "ValueVideoCodec": "Video kodeky: {0}", "Vertical": "Vertikálne", "ViewAlbum": "Zobraziť album", - "ViewArtist": "Zobraziť umelca", "Wednesday": "Streda", "WelcomeToProject": "Vitajte v Jellyfin!", "WizardCompleted": "To je zatiaľ všetko, čo potrebujeme. Jellyfin začal zhromažďovať údaje o vašej multimediálnej knižnici. Pozrite si niektoré z našich aplikácií a potom kliknite na Dokončiť pre zobrazenie Dashboardu.", @@ -987,7 +985,6 @@ "Recordings": "Nahrávky", "RemoveFromPlaylist": "Odobrať z playlistu", "RepeatMode": "Režim opakovania", - "RequiredForAllRemoteConnections": "Vyžadované pre všetky vzdialené pripojenia", "Rewind": "Pretočiť späť", "Runtime": "Dĺžka", "Schedule": "Naplánovné úlohy", @@ -1028,7 +1025,6 @@ "SimultaneousConnectionLimitHelp": "Maximálny povolený počet súčasných streamov. Zadajte 0 pre vypnutie obmedzenia.", "RepeatEpisodes": "Opakovanie epizód", "Record": "Nahrávať", - "PreferredNotRequired": "Preferované, ale nevyžadované", "OptionRegex": "Regex", "OptionEstimateContentLength": "Odhadnúť dĺžku obsahu pri prekódovávaní", "OptionEnableForAllTuners": "Povoliť pre všetky tunery", @@ -1045,7 +1041,6 @@ "HeaderSeriesOptions": "Nastavenia seriálov", "HeaderParentalRatings": "Rodičovské hodnotenia", "HeaderEnabledFields": "Povolené polia", - "HeaderAudioLanguages": "Jazyk zvuku", "HeaderAllowMediaDeletionFrom": "Povoliť zmazanie médií z", "HeaderAdmin": "Admin", "EnableThemeVideos": "Videá úvodných zvučiek", @@ -1140,7 +1135,6 @@ "HeaderAdditionalParts": "Dodatočné časti", "HardwareAccelerationWarning": "Povolenie hardvérovej akcelerácie môže spôsobiť nestabilitu v niektorých podmienkach. Uistite sa, že váš operačný systém a grafické ovládače sú plne aktualizované. Pokiaľ máte po zapnutí problémy s prehrávaním videa, budete musieť zmeniť nastavenie späť na Žiadne.", "AddItemToCollectionHelp": "Pridať položku do kolekcie jej vyhľadaním a použitím pravého tlačítka myši alebo kliknutím na tlačidlo ponuky a pridať do kolekcie.", - "HandledByProxy": "Spracované pomocou reverznej proxy", "EncoderPresetHelp": "Vyberte hodnotu faster pre zlepšenie výkonu alebo hodnotu slower pre zlepšenie kvality.", "H264CrfHelp": "Constant Rate Factor (CRF) je východzím nastavením kvality pre x264 enkodér. Môžete mu nadstaviť hodnotu medzi 0 a 51, kde nižšia hodnota vedie k vyššej kvalite (za cenu väčšieho súboru). Rozumné hodnoty sú medzi 18 a 28. Východzia hodnota pre x264 je 23, ktorú môžete použiť ako začiatočný bod.", "GuideProviderSelectListings": "Výber zobrazenia", @@ -1297,7 +1291,6 @@ "MessageForgotPasswordFileCreated": "Nasledujúci súbor bol vytvorený na vašom serveri a obsahuje inštrukcie, ako postupovať:", "MessageDownloadQueued": "Sťahovanie zaradené do fronty.", "MessageDirectoryPickerLinuxInstruction": "Pre Linuxové distribúcie Arch Linux, CentOS, Debian, Fedora, openSUSE alebo Ubuntu, je potrebné udeliť používateľovi služby oprávnenie aspoň na čítanie.", - "MessageDirectoryPickerInstruction": "Sieťové cesty môžu byť zadané manuálne v prípade, že tlačítko pre Sieť nedokáže lokalizovať vaše zariadenie. Napríklad, {0} alebo {1}.", "MessageDirectoryPickerBSDInstruction": "Pre BSD možno budete potrebovať nakonfigurovať úložisko priamo vo vašom FreeNAS Jail aby k nim mohol pristupovať Jellyfin.", "MessageDeleteTaskTrigger": "Naozaj chcete vymazať tento trigger úlohy?", "MessageCreateAccountAt": "Vytvoriť účet v {0}", @@ -1362,7 +1355,6 @@ "LabelSendNotificationToUsers": "Odoslať oznámenie pre:", "LabelSelectFolderGroupsHelp": "Priečinky, ktoré nie sú zaškrtnuté, budú zobrazené vo vlastnom zobrazení.", "LabelSelectFolderGroups": "Automaticky zoskupiť obsah z nasledujúcich priečinkov do zobrazenia, ako sú Filmy, Hudba a TV:", - "LabelSecureConnectionsMode": "Režim zabezpečeného pripojenia:", "LabelScheduledTaskLastRan": "Naposledy pustené {0}, trvalo {1}.", "LabelSaveLocalMetadataHelp": "Ukladanie artworkov do priečinkov s médiami umožní ich jednoduchšiu úpravu.", "LabelRemoteClientBitrateLimitHelp": "Voliteľný limit dátových tokov jednotlivých streamov pre všetky sieťové zariadenia. Toto je užitočné ako prevencia voči požiadavkám zariadení o vyšší dátový tok ako dokáže zvládnuť internetové pripojenie. To môže mať za následok zvýšenie nárokov na CPU vášho servera, aby bolo možné transkódovať videá za behu na nižší dátový tok.", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index b5404b8480..16d8472546 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -99,15 +99,11 @@ "HeaderContinueWatching": "Nadaljuj gledanje", "HeaderLiveTV": "TV v živo", "HeaderNextUp": "Sledi", - "HeaderRecordingGroups": "Zbirke posnetkov", - "LabelRunningTimeValue": "Čas trajanja: {0}", - "MessageApplicationUpdated": "Jellyfin Server je bil posodobljen", "Movies": "Filmi", "AddItemToCollectionHelp": "Dodajte elemente v zbirke tako, da jih poiščete in jih z desnim klikom ali dotikom menija dodate v zbirko.", "AllowedRemoteAddressesHelp": "Z vejico ločen seznam IP naslovov ali IP/maska omrežij, ki jim je dovoljen oddaljeni dostop. Če pustite prazno, bodo dovoljeni vsi oddaljeni naslovi.", "AlwaysPlaySubtitles": "Vedno prikaži", "AlwaysPlaySubtitlesHelp": "Podnapisi, ki se ujemajo s prednostnim jezikom bodo naloženi ne glede na jezik zvoka.", - "AnamorphicVideoNotSupported": "Anamorfni video ni podprt", "AnyLanguage": "Poljubni jezik", "Anytime": "Kadarkoli", "AroundTime": "Okrog", @@ -117,17 +113,10 @@ "AspectRatio": "Razmerje stranic", "AttributeNew": "Novo", "Audio": "Zvok", - "AudioBitDepthNotSupported": "Bitna globina zvoka ni podprta", - "AudioBitrateNotSupported": "Bitna hitrost zvoka ni podprta", - "AudioChannelsNotSupported": "Zvočni kanali niso podprti", - "AudioCodecNotSupported": "Zvočni kodek ni podprt", - "AudioProfileNotSupported": "Zvočni profil ni podprt", - "AudioSampleRateNotSupported": "Frekvenca vzorčenja zvoka ni podprta", "Auto": "Samodejno", "AutoBasedOnLanguageSetting": "Samodejno (na podlagi nastavitve jezika)", "Backdrop": "Ozadje", "Backdrops": "Ozadja", - "BestFit": "Najboljše prileganje", "BirthDateValue": "Rojen: {0}", "BirthLocation": "Kraj rojstva", "BirthPlaceValue": "Kraj rojstva: {0}", @@ -137,14 +126,9 @@ "Browse": "Brskaj", "BrowsePluginCatalogMessage": "Poiščite razpoložljive dodatke v našem katalogu.", "BurnSubtitlesHelp": "Določi ali naj strežnik vžge podnapise pri prekodiranju videa. Izogibanje temu lahko občutno izboljša delovanje strežnika. Izberite Samodejno za vžig slikovnih formatov podnapisov (VOBSUB, PGS, SUB, IDX, ...) in nekaterih ASS oziroma SSA podnapisov.", - "ButtonAccept": "Sprejmi", "ButtonAdd": "Dodaj", - "MessageNamedServerConfigurationUpdatedWithValue": "Oddelek nastavitve strežnika {0} je bil posodobljen", "Photos": "Fotografije", "Playlists": "Seznami predvajanja", - "PluginInstalledWithName": "{0} je bil nameščen", - "PluginUninstalledWithName": "{0} je bil odstranjen", - "PluginUpdatedWithName": "{0} je bil posodobljen", "Songs": "Pesmi", "Sync": "Sinhroniziraj", "AuthProviderHelp": "Izberi ponudnika preverjanja pristnosti za preverjanje gesla tega uporabnika.", @@ -160,7 +144,6 @@ "ButtonAudioTracks": "Zvočna sled", "ButtonBack": "Nazaj", "ButtonCancel": "Prekliči", - "ButtonChangeContentType": "Spremeni tip vsebine", "ButtonChangeServer": "Spremeni strežnik", "ButtonConnect": "Poveži", "ButtonDelete": "Izbriši", @@ -181,7 +164,6 @@ "ButtonLibraryAccess": "Dostop do knjižnic", "ButtonManualLogin": "Ročna prijava", "ButtonMore": "Več", - "ButtonMoreInformation": "Več informacij", "ButtonNetwork": "Omrežje", "ButtonNew": "Novo", "ButtonNextTrack": "Naslednja skladba", @@ -443,7 +425,6 @@ "HeaderAccessScheduleHelp": "Ustvarite urnik dostopa in omejite dostop v določenih urah.", "HeaderAccessSchedule": "Urnik dostopa", "HardwareAccelerationWarning": "Omogočanje strojnega pospeševanja lahko povzroči nestabilnost v določenih okoljih. Zagotovite, da so vaš operacijski sistem in gonilniki posodobljeni. Če imate po omogočanju te nastavitve težave s predvajanjem videa, jo nastavite nazaj na brez.", - "HandledByProxy": "Upravlja reverse proxy", "HDPrograms": "HD programi", "EncoderPresetHelp": "Izberite hitrejšo vrednost za boljšo zmogljivost ali počasnejšo vrednost za boljšo kakovost.", "H264CrfHelp": "Faktor stalne hitrosti (CRF) je privzeta nastavitev kakovosti za kodirnik x264. Vrednosti lahko nastavite med 0 in 51, pri čemer nižje vrednosti dosežejo boljšo kakovost (na račun večjih velikosti datotek). Razumne vrednosti so med 18 in 28. Privzeta vrednost za x264 je 23, zato lahko to uporabite kot izhodišče.", @@ -458,7 +439,6 @@ "Fullscreen": "Celoten zaslon", "Friday": "Petek", "FormatValue": "Format: {0}", - "ForAdditionalLiveTvOptions": "Za dodatne ponudnike TV v živo kliknite zavihek storitve in poglejte možnosti, ki so na voljo.", "FolderTypeUnset": "Mešane vsebine", "FolderTypeMusicVideos": "Videospoti", "FolderTypeMusic": "Glasba", @@ -824,7 +804,6 @@ "NewCollectionHelp": "Zbirke vam omogočajo ustvarjanje prilagojenih skupin filmov in drugih vsebin.", "TheseSettingsAffectSubtitlesOnThisDevice": "Te nastavitve vplivajo na podnapise na tej napravi", "PlaybackData": "Podatki o predvajanju", - "PreferredNotRequired": "Prednostno, vendar ni potrebno", "PlayNext": "Predvajaj naslednje", "PlayNextEpisodeAutomatically": "Samodejno predvajaj naslednjo epizodo", "Smaller": "Manjše", @@ -855,7 +834,6 @@ "LabelOptionalNetworkPathHelp": "V primeru, da je mapa deljena v vašem omrežju, lahko Jellyfin deli omrežno pot z ostalimi napravami in jim omogoči neposreden dostop do vsebin. Na primer {0} ali {1}.", "LabelRemoteClientBitrateLimitHelp": "Neobvezna omejitev bitne hitrosti na posamezno predvajanje za vse naprave izven domačega omrežja. S tem lahko preprečite, da bi naprave zahtevale višjo bitno hitrost predvajanja, kot jo lahko prenese vaše omrežje. To lahko poveča obremenitev CPU-ja, saj bo morda potrebno sprotno prekodiranje za zmanjšanje bitne hitrosti.", "LanNetworksHelp": "Z vejico ločen seznam IP naslovov ali IP/maska omrežji, ki bodo upoštevana kot lokalna pri uveljavljanju omejitev pasovne širine. Če nastavite, se bodo vsi ostali naslovi upoštevali kot zunanji in bodo predmet omejitve pasovne širine. Če pustite prazno, bo kot lokalno omrežje upoštevano zgolj omrežje strežnika.", - "MessageDirectoryPickerInstruction": "Omrežne poti lahko vnesete ročno, v kolikor gumb Omrežje ne uspe najti vaših naprav. Primer {0} ali {1}.", "MessageForgotPasswordInNetworkRequired": "Za začetek ponastavitve gesla prosimo poskusite znova v vašem domačem omrežju.", "OptionReportByteRangeSeekingWhenTranscodingHelp": "To je potrebno za nekatere naprave, ki slabo iščejo po času.", "OptionRequirePerfectSubtitleMatch": "Prenesi zgolj podnapise, ki se popolnoma ujemajo z mojimi video datotekami", @@ -1080,7 +1058,6 @@ "OptionHasTrailer": "Napovednik", "OptionFriday": "Petek", "OptionEveryday": "Vsak dan", - "OptionEnableAutomaticServerUpdates": "Omogoči samodejno posodabljanje strežnika", "OptionDvd": "DVD", "OptionDownloadMenuImage": "Meni", "OptionDownloadLogoImage": "Logotip", @@ -1118,7 +1095,6 @@ "LabelSeriesRecordingPath": "Pot za snemanje serij (neobvezno):", "LabelSerialNumber": "Serijska številka", "LabelSendNotificationToUsers": "Pošlji obvestilo na:", - "LabelSecureConnectionsMode": "Način varne povezave:", "LabelSeasonNumber": "Številka sezone:", "LabelScreensaver": "Ohranjevalnik zaslona:", "LabelSaveLocalMetadataHelp": "Shranjevanje slik v mape predstavnosti omogoča lažji dostop in urejanje slik.", @@ -1259,8 +1235,6 @@ "LabelSyncPlayPlaybackDiff": "Razlika v času predvajanja:", "MillisecondsUnit": "ms", "LabelSyncPlayTimeOffset": "Zamik časa na strežniku:", - "EnableFastImageFadeInHelp": "Uporabi hitrejše animacije in prehode", - "EnableFastImageFadeIn": "Hitrejše animacije", "LabelRequireHttpsHelp": "Če je označeno, bo strežnik samodejno preusmeril vse HTTP zahteva na HTTPS. Nima vpliva, če strežnik ne posluša na HTTPS.", "LabelRequireHttps": "Zahtevaj HTTPS", "HeaderInstantMix": "Hitri miks", diff --git a/src/strings/sv.json b/src/strings/sv.json index af2f88919b..dfc0fa6826 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -242,7 +242,6 @@ "H264CrfHelp": "Constant Rate Factor (CRF) är kvalitetsinställningen för x264-kodeken. Du kan använda värden mellan 0 och 51, där lägre värden resulterar i bättre kvalitet (på bekostnad av större filstorlekar). Rimliga värden ligger mellan 18 och 28. Det förvalda värdet är 23, som du kan använda som utgångspunkt.", "EncoderPresetHelp": "Välj ett snabbare värde för öka prestandan, eller ett långsammare värde för att utöka kvaliten.", "HDPrograms": "HD-program", - "HandledByProxy": "Hanteras av reverse proxy", "HardwareAccelerationWarning": "Aktivering av hårdvaruacceleration kan innebära instabilitet i vissa miljöer. Säkerställ att ditt operativsystem och dina grafikdrivrutiner är helt uppdaterade. Om du har problem med uppspelning när detta är på behöver du ändra tillbaka inställningen till Auto.", "HeaderAccessSchedule": "Schema för åtkomst", "HeaderAccessScheduleHelp": "Skapa ett schema för att begränsa åtkomsten till vissa tider.", @@ -834,7 +833,6 @@ "MessageCreateAccountAt": "Skapa ett konto på {0}", "MessageDeleteTaskTrigger": "Vill du ta bort denna aktivitetsutlösare?", "MessageDirectoryPickerBSDInstruction": "Om du kör BSD kan du behöva konfiguerara din lagring inom FreeNAS Jail för att ge Jellyfin åtkomst till det.", - "MessageDirectoryPickerInstruction": "Nätverkssökvägar kan anges manuellt om \"Nätverk\" inte hittar dina enheter. T ex {0} eller {1}.", "MessageDirectoryPickerLinuxInstruction": "För Linux på ArchLinux, CentOS, Debian, Fedora, OpenSuse, eller Ubuntu, behöver du ge systemanvändaren för Jellyfin minst läsrättigheter till dina lagringsplatser.", "MessageDownloadQueued": "Nedladdning köad.", "MessageEnablingOptionLongerScans": "Aktivering av detta alternativ kan innebära att biblioteksskanningar tar längre tid.", @@ -1248,7 +1246,6 @@ "ValueVideoCodec": "Videokodning: {0}", "Vertical": "Vertikal", "ViewAlbum": "Bläddra album", - "ViewArtist": "Bläddra artist", "ViewPlaybackInfo": "Visa uppspelningsinfo", "Watched": "Sedd", "Wednesday": "Onsdag", @@ -1264,7 +1261,6 @@ "Yes": "Ja", "Yesterday": "Igår", "HeaderFavoriteMovies": "Favoritfilmer", - "HeaderAudioLanguages": "Ljudspråk", "HeaderAppearsOn": "Medverkar i", "HeaderApp": "Applikation", "HeaderAdmin": "Administratör", @@ -1340,7 +1336,6 @@ "LabelStatus": "Status:", "LabelSize": "Storlek:", "LabelServerName": "Servernamn:", - "LabelSecureConnectionsMode": "Säker uppkopplings läge:", "LabelPostProcessorArgumentsHelp": "Använd {path} som sökväg till inspelade filen.", "LabelPostProcessorArguments": "Post-processor kommandoradsargument:", "LabelDroppedFrames": "Tappade ramar:", @@ -1380,9 +1375,7 @@ "SelectAdminUsername": "Vänligen välj ett användarnamn för admin kontot.", "SaveSubtitlesIntoMediaFoldersHelp": "Spara undertexter vid video filer kommer göra det mer enklare att hantera.", "Rewind": "Spola tillbaka", - "RequiredForAllRemoteConnections": "Krävs för alla fjärr kopplingar", "RecordingPathChangeMessage": "Ändring av din inspelnings mapp kommer inte migrera existerande inspelningar från gamla platsen till den nya. Du behöver flytta dom manuellt om så önskas.", - "PreferredNotRequired": "Föredragen, men inte krävande", "PlaybackData": "Uppspelnings Data", "PasswordResetProviderHelp": "Välj en Lösenords Återställnings Provider att använda när denna användare begär att återställa lösenordet", "OptionThumbCard": "Miniatyr kort", diff --git a/src/strings/tr.json b/src/strings/tr.json index 169a71cea8..f6ea6c7188 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -510,7 +510,6 @@ "HeaderAccessScheduleHelp": "Belirli saatlerle erişimi sınırlamak için bir erişim programı oluşturun.", "HeaderAccessSchedule": "Erişim Takvimi", "HardwareAccelerationWarning": "Donanım ivmesini etkinleştirmek bazı ortamlarda dengesizliğe neden olabilir. İşletim sisteminizin ve video sürücülerinizin tamamen güncel olduğundan emin olun. Bunu etkinleştirdikten sonra video oynatmakta zorluk çekiyorsanız, ayarı tekrar \"Hiçbiri\" olarak değiştirmeniz gerekecektir.", - "HandledByProxy": "Ters proxy tarafından kullanılır", "HDPrograms": "HD programlar", "EncoderPresetHelp": "Performansı artırmak için daha hızlı bir değer veya kaliteyi artırmak için daha yavaş bir değer seçin.", "H264CrfHelp": "Sabit Hız Faktörü (CRF), x264 kodlayıcı için varsayılan kalite ayarıdır. Değerleri 0 ile 51 arasında ayarlayabilirsiniz, burada daha düşük değerler daha iyi kaliteyle sonuçlanır (daha yüksek dosya boyutları pahasına). Aklı başında değerleri 18 ila 28 arasındadır. X264 için varsayılan 23, bu nedenle bunu başlangıç noktası olarak kullanabilirsiniz.", diff --git a/src/strings/vi.json b/src/strings/vi.json index 7ca2832ea8..4481559761 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -369,7 +369,6 @@ "HeaderActiveDevices": "Thiết Bị Đang Hoạt Động", "HeaderAccessScheduleHelp": "Tạo một thời gian biểu để giới hạn quyền truy cập vào một số khung giờ nhất định.", "HeaderAccessSchedule": "Thời Gian Truy Cập", - "HandledByProxy": "Được xử lý bằng phương thức đảo ngược proxy", "HDPrograms": "Chương trình chất lượng cao (HD)", "EncoderPresetHelp": "Chọn một giá trị nhanh hơn để cải thiện hiệu suất máy chủ, hoặc một giá trị chậm hơn để tăng chất lượng video.", "H264CrfHelp": "Hệ Số Tỉ Lệ Cố Định (Constant Rate Factor (CRF)) là thiết lập chất lượng mặc định dành cho bộ mã hoá x264. Bạn có thể điều chỉnh giá trị trong khoảng 0 đến 51, trong đó giá trị càng nhỏ thì chất lượng càng tốt (đồng nghĩa với việc dung lượng tập tin lớn hơn). Giá trị vừa phải nằm trong khoảng từ 18 đến 28. Giá trị mặc định dành cho x264 là 23, vì thế bạn có thể sử dụng nó để bắt đầu điều chỉnh cho phù hợp.", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index c19bdf3611..c496ab54d0 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -246,7 +246,6 @@ "H264CrfHelp": "The Constant Rate Factor (CRF) 是 x264 编码器的默认质量设置。您可以设置介于0和51之间的值, 其中较低的值将导致更好的质量 (以更高的文件大小为代价)。正常值介于18和28之间。x264 的默认值为 23, 因此可以将其用作起始点。", "EncoderPresetHelp": "选择一个更快的值以提升性能,或者选择一个更慢的值以提升质量。", "HDPrograms": "高清节目", - "HandledByProxy": "由反向代理处理", "HardwareAccelerationWarning": "启动硬件加速可能在某些环境下导致系统不稳定。请确认你的操作系统和显卡驱动程序是最新的。如果你在开启此项后播放视频时遇到困难,那么你需要将此选项设置回“没有”。", "HeaderAccessSchedule": "访问计划", "HeaderAccessScheduleHelp": "创建一个访问计划以限制可访问的时间段。", @@ -719,7 +718,6 @@ "LabelScheduledTaskLastRan": "最后运行 {0}, 花费时间 {1}.", "LabelScreensaver": "屏幕保护:", "LabelSeasonNumber": "季号:", - "LabelSecureConnectionsMode": "安全连接模式:", "LabelSelectUsers": "选择用户:", "LabelSelectVersionToInstall": "选择安装版本:", "LabelSendNotificationToUsers": "发送通知至:", @@ -789,7 +787,6 @@ "LabelValue": "数值:", "LabelVersion": "版本:", "LabelVersionInstalled": "{0} 已安装", - "LabelVersionNumber": "版本 {0}", "LabelVideoResolution": "视频分辨率:", "LabelXDlnaCap": "X-DLNA CAP:", "LabelXDlnaCapHelp": "决定在 urn:schemas-dlna-org:device-1-0 namespace 中的 X_DLNACAP 元素的内容。", @@ -854,7 +851,6 @@ "MessageCreateAccountAt": "在 {0} 创建帐户", "MessageDeleteTaskTrigger": "你确定删除这个任务触发条件?", "MessageDirectoryPickerBSDInstruction": "对于 BSD 系统,你需要设置包含你的 FreeNAS Jail 虚拟机的存储以允许 Jellyfin 访问它。", - "MessageDirectoryPickerInstruction": "网络按钮无法找到你的设备的情况下,网络路径可以手动输入。 例如, {0} 或者 {1}。", "MessageDirectoryPickerLinuxInstruction": "对于Arch Linux、 CentOS、Debian、Fedora、OpenSuse、Ubuntu上的Linux系统,你必须授权系统服务用户访问你存储位置。", "MessageDownloadQueued": "下载已列队。", "MessageEnablingOptionLongerScans": "启用此选项可能会大大延长媒体库扫描时间。", @@ -1094,7 +1090,6 @@ "PluginInstalledMessage": "这个插件已经被成功安装。Jellyfin 服务器需要重启以使该插件生效。", "PreferEmbeddedTitlesOverFileNames": "优先使用内置的标题而不是文件名", "PreferEmbeddedTitlesOverFileNamesHelp": "这将在没有 internet 元数据或本地元数据可用时确定默认显示标题。", - "PreferredNotRequired": "首选,但不是必需的", "Premiere": "首映", "Previous": "上一个", "Primary": "封面图", @@ -1127,7 +1122,6 @@ "RepeatOne": "单项循环", "ReplaceAllMetadata": "覆盖所有元数据", "ReplaceExistingImages": "替换现有图片", - "RequiredForAllRemoteConnections": "所有远程连接都需要", "ResumeAt": "恢复播放于{0}", "Rewind": "倒回", "RunAtStartup": "开机时启动", @@ -1285,7 +1279,6 @@ "ValueTimeLimitSingleHour": "时间限制:1 小时", "ValueVideoCodec": "视频编解码器: {0}", "ViewAlbum": "查看专辑", - "ViewArtist": "查看艺术家", "ViewPlaybackInfo": "查看播放信息", "Watched": "已观看", "Wednesday": "星期三", @@ -1389,8 +1382,6 @@ "PlaceFavoriteChannelsAtBeginning": "将最喜爱的频道置顶", "PlayNext": "播放下一个", "PlayNextEpisodeAutomatically": "自动播放下一集", - "PlaybackSettings": "播放设置", - "PlaybackSettingsIntro": "为了修改默认播放设置,请先停止视频播放,然后在应用的右上角点击个人头像。", "Premieres": "首映", "Raised": "提高", "Recordings": "录音", @@ -1404,8 +1395,6 @@ "Shows": "节目", "SkipEpisodesAlreadyInMyLibraryHelp": "将使用季和剧集编号对剧集进行比较。", "Smaller": "更小", - "SubtitleSettings": "字幕设置", - "SubtitleSettingsIntro": "要配置默认字幕外观和语言设置,请停止视频播放,然后单击应用程序右上角的用户图标。", "TagsValue": "标签:{0}", "Vertical": "垂直", "VideoRange": "视频范围", @@ -1540,8 +1529,6 @@ "HeaderSyncPlayEnabled": "同步播放已启用", "HeaderSyncPlaySelectGroup": "加入群组", "EnableDetailsBannerHelp": "在项目详细信息页面的顶部显示横幅图片。", - "EnableDecodingColorDepth10": "启用 10-Bit 硬件解码", - "EnableDecodingColorDepth10Help": "在支持的硬件上启用 10-Bit 硬件解码。仅对 HEVC 和 VP9 格式起作用。如果你遇到了播放问题,请关闭这个选项。", "LabelSyncPlayLeaveGroupDescription": "关闭同步播放", "EnableDetailsBanner": "详细信息页面的横幅", "ButtonCast": "投射", diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 551f6ec1ae..b52dcbc1ef 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -173,7 +173,6 @@ "LabelTriggerType": "觸發類型:", "LabelUser": "用戶:", "LabelVersionInstalled": "已安裝 {0}", - "LabelVersionNumber": "版本 {0}", "LabelYourFirstName": "您的名字是:", "LabelYoureDone": "大功告成!", "LibraryAccessHelp": "選擇與此用戶共享媒體文件夾。管理員將能夠使用媒體資料瀏覽器而編輯所有文件夾。", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 18b4a9f097..22a40d3247 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -76,18 +76,11 @@ "HeaderLatestEpisodes": "最新劇集", "HeaderLatestMovies": "最新電影", "HeaderLatestRecordings": "最新錄影的節目", - "HeaderLatestSongs": "最新歌曲", - "HeaderLatestTrailers": "最新預告", - "HeaderLinks": "鏈接", "HeaderLiveTV": "電視直播", "HeaderLiveTv": "電視", "HeaderMediaFolders": "媒體資料夾", "HeaderMusicVideos": "MV", - "HeaderNewRecording": "新錄製", - "HeaderNewUsers": "新使用者", "HeaderNextUp": "接下來", - "HeaderNowPlaying": "正在播放", - "HeaderParentalRating": "Parental Rating", "HeaderPaths": "路徑", "HeaderPlayAll": "全部播放", "HeaderPleaseSignIn": "請登入", @@ -299,8 +292,6 @@ "UninstallPluginConfirmation": "你確定要解除安裝 {0}?", "UninstallPluginHeader": "解除安裝插件", "UserProfilesIntro": "Jellyfin 可單獨對使用者進行設定,所有使用者擁有自己的顯示設置,播放狀態和家長控制。", - "Users": "使用者", - "VersionNumber": "版本 {0}", "Wednesday": "星期三", "WelcomeToProject": "歡迎使用 Jellyfin!", "WizardCompleted": "這就是我們所需的全部資訊,Jellyfin 現在正在收集你的媒體櫃的資料,在這段時間內,不妨參考我們推出的應用程式。按一下完成進入控制台。", @@ -342,7 +333,6 @@ "BirthPlaceValue": "出生地:{0}", "Blacklist": "黑名單", "Books": "圖書", - "ButtonAccept": "接受", "ButtonAddMediaLibrary": "新增媒體櫃", "ButtonArrowLeft": "左", "ButtonArrowRight": "右", @@ -413,8 +403,6 @@ "ChannelNumber": "頻道號碼", "Channels": "頻道", "CinemaModeConfigurationHelp": "劇院模式直接為您的客廳帶來劇院級體驗,同時還可以播放預告片和自定開場白。", - "CinemaModeFeatureDescription": "劇院模式用預告片和自定開場白帶給您最真實的劇院體驗。", - "CloudSyncFeatureDescription": "將您的媒體備份到雲端當作簡單的備份,收藏和轉檔。", "Collections": "合輯", "Composer": "作曲家", "ConfigureDateAdded": "調整伺服器如何判定媒體庫的「新增日期」", @@ -429,12 +417,10 @@ "DeathDateValue": "死於: {0}", "Default": "預設", "ButtonAddScheduledTaskTrigger": "新增觸發器", - "CategoryPlugin": "外掛元件", "ColorPrimaries": "三原色", "ColorSpace": "色彩空間", "ColorTransfer": "色彩傳輸", "CommunityRating": "社群評分", - "DefaultCameraUploadPathHelp": "請選擇自訂上傳路徑。若留白, 將會使用預設資料夾。如果使用自訂路徑,則還需要在Jellyfin庫設置中作為“媒體庫”添加。", "DefaultErrorMessage": "處理請求時發生錯誤。請稍後再試。", "DefaultMetadataLangaugeDescription": "這些預設設定可以在你的媒體庫中單獨設定。", "DefaultSubtitlesHelp": "字幕將基於中繼資料中的「預設」標記和「強制」標記來載入,當有多個選項可用時,將根據語言偏好決定。", @@ -445,8 +431,6 @@ "Desktop": "桌面", "DetectingDevices": "正在偵測裝置", "DeviceAccessHelp": "只適用於用唯一辨識方法的裝置,並不會阻止瀏覽器存取。已過濾的使用者裝置會被拒絕存取,直到他們被批准。", - "DeviceLastUsedByUserName": "最後被 {0} 使用", - "DirectPlayError": "直接播放錯誤", "DirectPlaying": "直接播放", "DirectStreamHelp1": "媒體在畫質和媒體類型(H.264、AC3 等)方面與裝置相容。但是在不相容的檔案格式(.mkv、.avi、.wmv 等)中,在影片傳輸到裝置之前,將會重新轉檔。", "DirectStreamHelp2": "直接串流檔案會占用非常少的處理效能並且影片的品質不會有任何損失。", @@ -464,15 +448,9 @@ "DisplayModeHelp": "選擇您想要的介面樣式。", "DoNotRecord": "不錄製", "Down": "下", - "DownloadItemLimitHelp": "非必要。 設置要下載的項目數限制。", - "Downloaded": "已下載", - "Downloading": "下載中", - "DownloadingDots": "下載中…", - "Downloads": "下載", "DownloadsValue": "{0} 個下載", "DrmChannelsNotImported": "受 DMR 保護的頻道將不會被導入。", "DropShadow": "背景投影", - "DvrFeatureDescription": "使用Jellyfin DVR安排個人直播電視錄製,系列錄製等。", "EasyPasswordHelp": "你的簡易 PIN 碼將會用於在支援的 Jellyfin 應用上進行離線存取,同時也可被用於區域網路的登入。", "EditMetadata": "編輯中繼資料", "EditSubtitles": "編輯字幕", @@ -494,21 +472,14 @@ "EnableThemeSongsHelp": "瀏覽媒體庫時主題曲將作為背景音樂播放。", "EnableThemeVideos": "啟用主題影片", "EnableThemeVideosHelp": "瀏覽媒體庫時主題影片將作為背景影片播放。", - "EnterFFmpegLocation": "輸入 FFmpeg 路徑", "Episodes": "劇集", - "Error": "錯誤", "ErrorAddingListingsToSchedulesDirect": "在將電視節目時間表新增到您的 Schedules Direct 帳號時出現錯誤。每個 Schedules Direct 帳號只允許有限的時間表。您在繼續前可能需要登入 Schedules Direct 網站並刪除帳號中的其它列表。", - "ErrorAddingGuestAccount1": "新增Jellyfin Connect時發生錯誤。你的賓客有建立Jellyfin帳號嗎?他們可以在 {0} 創建帳號。", - "ErrorAddingGuestAccount2": "若你還是遇到問題,請發送email至 {0} 並附上你和他們的email帳號。", "ErrorAddingMediaPathToVirtualFolder": "新增媒體路徑時發生錯誤,請確認路徑是否有效,且你的 Jellyfin 伺服器有對該位置的存取權。", "ErrorAddingTunerDevice": "新增調諧器設備時發生錯誤,請確認它是否可被存取後再試一次。", "ErrorAddingXmlTvFile": "存取 XMLTV 檔案時發生錯誤,請確認該檔案是否存在後再試一次。", - "ErrorConnectServerUnreachable": "處理請求時發生錯誤。您的伺服器無法與我們位於 {0} 的 Jellyfin Connect伺服器溝通。請確認你的伺服器有網路連結且防火牆或其他安全性程式允許這個程式對外溝通。", "ErrorDeletingItem": "從 Jellyfin 伺服器刪除項目時發生錯誤,請確認伺服器對該磁碟有寫入權限並再試一次。", "ErrorGettingTvLineups": "下載電視節目表時發生錯誤,請確認你的資訊是否正確並重試。", - "ErrorMessagePasswordNotMatchConfirm": "密碼和密碼確認必須吻合。", "ErrorMessageStartHourGreaterThanEnd": "結束時間必須在開始時間後。", - "ErrorMessageUsernameInUse": "用戶名已存在。請重新選個名稱再試。", "ErrorPleaseSelectLineup": "請選擇節目表,然後再試一次。如果沒有可用的節目表,請檢查您的使用者名稱、密碼和郵遞區號是否正確。", "ErrorSavingTvProvider": "儲存電視供應商時發生錯誤,請確認是否可存取並重試。", "EveryNDays": "每 {0} 天", @@ -521,11 +492,8 @@ "Favorites": "我的最愛", "Features": "功能", "FileReadCancelled": "檔案讀取已取消。", - "Fill": "填滿", "Filters": "濾鏡", "FolderTypeBooks": "書籍", - "FolderTypeInherit": "延用", - "FolderTypeMixed": "混合媒體", "FolderTypeUnset": "混合內容", "Folders": "資料夾", "FormatValue": "格式:{0}", @@ -536,27 +504,20 @@ "GroupBySeries": "按系列分組", "GroupVersions": "按版本分組", "GuestStar": "客串", - "GuestUserNotFound": "未找到用戶。請確保用戶名稱正確後重試,或者嘗試輸入他們的電子郵件地址。", "Guide": "指南", "GuideProviderSelectListings": "選擇列表", "H264CrfHelp": "CRF 是 x264 編碼器的預設畫質設置。此方法允許編碼器自動分配位元速率來試著達到一定輸出品質。讓每個畫格得到它需要的位元數來保持所需的品質等級。CRF 會得到最佳的位元速率分配結果。", "EncoderPresetHelp": "速度越慢則會得到更好的壓縮編碼效率。", "HDPrograms": "HD 節目", - "HandledByProxy": "由反向代理處理", "HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後難以播放影片,那麼你需要將此選項設回「無」。", "HeaderAccessSchedule": "存取時程", "HeaderAccessScheduleHelp": "建立一個存取時程以限制可存取的時段。", "HeaderActiveDevices": "運行中裝置", "HeaderActivity": "活動", - "HeaderAddDevice": "新增裝置", - "HeaderAddLocalUser": "新增本機使用者", "HeaderAddScheduledTaskTrigger": "新增觸發", - "HeaderAddTag": "加標籤", "HeaderAddToCollection": "加到收藏", "HeaderAddToPlaylist": "加到播放列表", "HeaderAddUpdateImage": "新增/更新圖片", - "HeaderAdvanced": "進階", - "HeaderAirDays": "播出天數", "HeaderAlbumArtists": "專輯演出者", "HeaderAlbums": "專輯", "HeaderAlert": "通知", @@ -566,83 +527,50 @@ "HeaderApiKeysHelp": "外部應用程式需要有一個 API 金鑰以用於和 Jellyfin 伺服器溝通。金鑰會在 Jellyfin 使用者登入時自動發行,或者你可以手動為應用程式產生一個金鑰。", "HeaderApp": "應用程式", "HeaderAppearsOn": "同時出現於", - "HeaderAudio": "音訊", "HeaderAudioBooks": "有聲書", "HeaderAudioSettings": "音訊設定", - "HeaderAudioTracks": "音軌", - "HeaderBackdrops": "背景", "HeaderBlockItemsWithNoRating": "封鎖沒有評級或設置不允許的內容:", "HeaderBooks": "書籍", "HeaderBranding": "品牌", - "HeaderBrandingHelp": "選擇外觀,滿足您和團體的要求。", - "HeaderCameraUpload": "相片上傳", - "HeaderCameraUploadHelp": "Jellyfin 應用程式能自動上傳你通過裝置拍攝的照片至你的 Jellyfin 伺服器。", "HeaderCancelRecording": "取消錄製", "HeaderCancelSeries": "取消系列", - "HeaderCancelSyncJob": "取消同步", "HeaderCastAndCrew": "演員與工作人員", "HeaderChannelAccess": "節目存取", "HeaderChapterImages": "章節圖片", - "HeaderChapters": "章節", - "HeaderCinemaMode": "劇院模式", - "HeaderClients": "客戶端", - "HeaderCloudSync": "雲端同步", "HeaderCodecProfile": "編碼設定檔", "HeaderCodecProfileHelp": "編碼器的設定檔標明了設備播放特定編碼時的限制;如果在限制之內則媒體將被轉碼,否則編碼器將被設定為直接播放。", - "HeaderCollections": "收藏", - "HeaderColumns": "列", "HeaderConfigureRemoteAccess": "設定遠端控制", - "HeaderConfirm": "確認", - "HeaderConfirmDeletion": "確認刪除", "HeaderConfirmPluginInstallation": "確認插件安裝", "HeaderConfirmProfileDeletion": "確認刪除個人資料", - "HeaderConfirmRecordingCancellation": "確認取消錄製", - "HeaderConfirmRecordingDeletion": "確認刪除錄影", - "HeaderConfirmRemoveUser": "移除用戶", "HeaderConfirmRevokeApiKey": "重置 API 金鑰", - "HeaderConfirmSeriesCancellation": "確認系列取消", - "HeaderConfirmation": "確認", "HeaderConnectToServer": "連結至伺服器", "HeaderConnectionFailure": "連結失敗", "HeaderContainerProfile": "影片載體設定", "HeaderContainerProfileHelp": "影片容器的設定檔標明了設備播放特定媒體格式時的限制。如果在限制之內則媒體將被轉碼,否則媒體格式將被設定為直接播放。", "HeaderContinueListening": "繼續聆聽", "HeaderContinueWatching": "繼續觀賞", - "HeaderCredits": "製作人員名單", - "HeaderDashboardUserPassword": "用戶的密碼被管理在每個用戶的私人配置設置中。", - "HeaderDate": "日期", "HeaderDateIssued": "發布日期", "HeaderDefaultRecordingSettings": "預設錄製設定", "HeaderDeleteDevice": "刪除裝置", - "HeaderDeleteImage": "刪除圖片", "HeaderDeleteItems": "刪除項目", "HeaderDeleteProvider": "刪除供應者", "HeaderDeleteTaskTrigger": "刪除任務觸發條件", - "HeaderDestination": "目的地", "HeaderDetectMyDevices": "偵測我的設備", "HeaderDeveloperInfo": "開發者資訊", - "HeaderDevice": "裝置", "HeaderDeviceAccess": "允許裝置存取", "HeaderDevices": "裝置", "HeaderDirectPlayProfile": "直接播放設定檔", "HeaderDirectPlayProfileHelp": "新增直接播放設定檔,標明哪些媒體格式設備可以自己處理。", "HeaderDisplay": "顯示", - "HeaderDownloadSettings": "下載設定", - "HeaderDownloadSubtitlesFor": "下載字幕:", "HeaderDownloadSync": "下載與同步", "HeaderEditImages": "編輯圖片", - "HeaderEmbeddedImage": "內嵌圖片", "HeaderEnabledFields": "已啟用的欄位", "HeaderEnabledFieldsHelp": "反選欄位以鎖定並不讓其數據被更改。", "HeaderEpisodes": "集數", "HeaderError": "錯誤", - "HeaderExport": "輸出", "HeaderExternalIds": "外部 ID:", - "HeaderExternalPlayerPlayback": "外部播放器播放", - "HeaderExternalServices": "外部服務", "HeaderFavoriteAlbums": "最愛專輯", "HeaderFavoriteArtists": "最愛演出者", - "HeaderFavoriteCollections": "最愛收藏", "HeaderFavoriteEpisodes": "最愛影集", "HeaderFavoriteMovies": "最愛電影", "HeaderFavoritePlaylists": "最愛播放列表", @@ -653,168 +581,86 @@ "HeaderFetcherSettings": "擷取器設置", "HeaderFilters": "篩選條件", "HeaderForKids": "給兒童", - "HeaderForgotKey": "忘記金鑰", - "HeaderFreeApps": "免費Jellyfin應用程式", "HeaderGenres": "類型", - "HeaderGuests": "賓客", - "HeaderHomePage": "主畫面", - "HeaderHomeScreen": "主畫面", - "HeaderHomeScreenSettings": "主畫面設定", "HeaderHttpHeaders": "HTTP 標頭", "HeaderIdentification": "身份識別", "HeaderIdentificationCriteriaHelp": "至少輸入一個識別標準。", "HeaderIdentificationHeader": "身份識別標題", "HeaderIdentifyItemHelp": "輸入一個或多個搜索條件。刪除條件可得到更多搜索結果。", - "HeaderImageBackdrop": "背景", - "HeaderImageLogo": "商標", "HeaderImageOptions": "圖片選項", - "HeaderImagePrimary": "主要", - "HeaderImages": "圖片", "HeaderInstall": "安裝", "HeaderItems": "項目", "HeaderKeepRecording": "繼續錄製", "HeaderKeepSeries": "保存系列", "HeaderKodiMetadataHelp": "要啟用或停用 NFO 中繼資料,請在 Jellyfin「建立媒體庫」頁面中編輯該媒體庫「中繼資料儲存」部分。", - "HeaderLanguage": "語言", - "HeaderLatestChannelItems": "最近節目項目", - "HeaderLatestChannelMedia": "最近節目項目", - "HeaderLatestDownloadedVideos": "最近下載影片", - "HeaderLatestFrom": "最新發行:{0}", - "HeaderLatestFromChannel": "最新的 {0}", - "HeaderLatestItems": "最新項目", "HeaderLatestMedia": "最新媒體", "HeaderLatestMusic": "最新音樂", - "HeaderLatestTvRecordings": "最新錄製", - "HeaderLearnMore": "知道更多", "HeaderLibraries": "媒體庫", - "HeaderLibrary": "媒體庫", "HeaderLibraryAccess": "媒體庫存取", "HeaderLibraryFolders": "媒體庫資料夾", "HeaderLibraryOrder": "媒體庫排序", "HeaderLibrarySettings": "媒體庫設定", "HeaderLiveTvTunerSetup": "電視直播調諧器安裝", "HeaderLoginFailure": "登入失敗", - "HeaderManagement": "管理", "HeaderMedia": "媒體", "HeaderMediaInfo": "媒體資訊", - "HeaderMediaLocations": "媒體位址", - "HeaderMenu": "目錄", "HeaderMetadataSettings": "中繼資料設定", - "HeaderMissing": "不見了", "HeaderMoreLikeThis": "更多類似的", "HeaderMovies": "電影", "HeaderMusicQuality": "音質", "HeaderMyDevice": "我的裝置", "HeaderMyMedia": "我的媒體", "HeaderMyMediaSmall": "我的媒體", - "HeaderMyViews": "我的觀看記錄", - "HeaderName": "名字", "HeaderNavigation": "導覽", - "HeaderNetwork": "網路", "HeaderNewApiKey": "新 API 金鑰", - "HeaderNewApiKeyHelp": "允許一個應用程式存取Jellyfin伺服器。", "HeaderNewDevices": "新裝置", - "HeaderNewServer": "新伺服器", "HeaderNextEpisodePlayingInValue": "下一集在 {0} 後播放", "HeaderNextVideoPlayingInValue": "下一部影片在 {0} 後播放", - "HeaderNotifications": "通知", - "HeaderNumberOfPlayers": "播放器", "HeaderOnNow": "現正播放", - "HeaderOptions": "選項", - "HeaderOtherDisplaySettings": "顯示設定", "HeaderOtherItems": "其他項目", - "HeaderOverview": "綜覽", "HeaderPassword": "密碼", "HeaderPasswordReset": "重設密碼", "HeaderPeople": "使用者", - "HeaderPersonInfo": "使用者資訊", "HeaderPhotoAlbums": "相簿", - "HeaderPhotoInfo": "相片資訊", "HeaderPinCodeReset": "重設PIN碼", - "HeaderPlayMyMedia": "播放我的媒體", "HeaderPlayOn": "播放在", "HeaderPlayback": "媒體播放", "HeaderPlaybackError": "播放錯誤", - "HeaderPlaylists": "播放列表", "HeaderPluginInstallation": "插件安裝", - "HeaderProgram": "程式", - "HeaderRecentActivity": "最近活動", - "HeaderRecordingGroups": "錄影群", "HeaderRecordingOptions": "錄影選項", "HeaderRecordingPostProcessing": "錄影後製", - "HeaderReleaseDate": "發行日期", "HeaderRemoteControl": "遙控", "HeaderRemoveMediaFolder": "刪除媒體資料夾", "HeaderRemoveMediaLocation": "刪除媒體位址", - "HeaderRequireManualLogin": "需要手動輸入帳號:", - "HeaderRequireManualLoginHelp": "停用時,Jellyfin應用程式將呈現圖像式使用者選單", - "HeaderResetTuner": "重設調諧器", - "HeaderResolution": "畫質", "HeaderRestart": "重新啟動", - "HeaderRestartingJellyfinServer": "重新啟動Jellyfin伺服器", - "HeaderResult": "結果", - "HeaderResume": "續播", - "HeaderResumeSettings": "續播設定", - "HeaderReviews": "評價", "HeaderRevisionHistory": "更改紀錄", "HeaderRunningTasks": "正在進行的工作", - "HeaderScreenSavers": "螢幕保護程式", - "HeaderSeason": "季", - "HeaderSeasonNumber": "季數", "HeaderSeasons": "季數", "HeaderSecondsValue": "{0} 秒", - "HeaderSelectAudio": "選擇音軌", - "HeaderSelectDevices": "選擇裝置", - "HeaderSelectExternalPlayer": "選擇外接播放器", - "HeaderSelectMediaPath": "選擇媒體位址", "HeaderSelectPath": "選擇位址", - "HeaderSelectSubtitles": "選擇字幕", "HeaderSelectTranscodingPath": "選擇轉碼暫放位址", "HeaderSelectTranscodingPathHelp": "瀏覽或輸入轉碼用來存暫時資料的位址。資料夾需可讀取。", - "HeaderSelectUploadPath": "選擇上傳位址", "HeaderSendMessage": "傳送訊息", "HeaderSeriesOptions": "系列選項", - "HeaderSeriesRecordings": "系列錄影", "HeaderSeriesStatus": "系列狀態", "HeaderServerSettings": "伺服器設定", - "HeaderServices": "服務", "HeaderSettings": "設定", "HeaderSetupLibrary": "設置你的媒體庫", - "HeaderShareMediaFolders": "分享媒體資料夾", "HeaderShutdown": "關機", "HeaderSortBy": "分類", "HeaderSortOrder": "分類順序", - "HeaderSource": "來源", "HeaderSpecialEpisodeInfo": "特集資訊", - "HeaderSpecials": "特機", - "HeaderSplitMedia": "分隔媒體", "HeaderStartNow": "開始播放", "HeaderStopRecording": "停止錄影", "HeaderSubtitleAppearance": "字幕外觀", "HeaderSubtitleDownloads": "字幕下載", - "HeaderSubtitles": "字幕", - "HeaderSupportTheTeam": "支持Jellyfin團隊", "HeaderTags": "標籤", "HeaderThisUserIsCurrentlyDisabled": "這個使用者目前停用", - "HeaderTime": "時間", - "HeaderToAccessPleaseEnterEasyPinCode": "請輸入您的簡易PIN碼", - "HeaderTopPlugins": "熱門插件", - "HeaderTrack": "軌", "HeaderTracks": "軌", - "HeaderTrailers": "預告片", - "HeaderTryPlayback": "嘗試播放", "HeaderTunerDevices": "調諧器裝置", - "BobAndWeaveWithHelp": "Bob and weave (高品質,轉檔慢)", - "LabelRunningTimeValue": "運行時間: {0}", - "MessageApplicationUpdated": "Jellyfin Server 已經更新", - "MessageNamedServerConfigurationUpdatedWithValue": "伺服器設定 {0} 部分已經更新", "Movies": "電影", "Photos": "相片", "Playlists": "播放清單", - "PluginInstalledWithName": "{0} 已安裝", - "PluginUninstalledWithName": "{0} 已移除", - "PluginUpdatedWithName": "{0} 已更新", - "ProviderValue": "提供商: {0}", "Shows": "節目", "Songs": "歌曲", "Sync": "同步", @@ -1219,7 +1065,6 @@ "ValueOneSong": "1 首歌", "ValueSeconds": "{0} 秒", "ValueTimeLimitSingleHour": "時間限制:1 小時", - "ViewArtist": "查看演出者", "Watched": "已看過", "Whitelist": "白名單", "Tags": "標記", @@ -1250,7 +1095,6 @@ "LabelMoviePrefix": "電影前綴:", "LabelProfileContainer": "影片容器:", "LabelDropShadow": "陰影:", - "LabelSecureConnectionsMode": "安全連接模式:", "LabelTVHomeScreen": "電視模式主畫面:", "LabelTranscodingContainer": "影片容器:", "MovieLibraryHelp": "查看 {0}Jellyfin 電影命名指南{1}。", @@ -1368,7 +1212,6 @@ "MessageCreateAccountAt": "在 {0} 建立使用者", "MessageDeleteTaskTrigger": "您確定要刪除這個任務觸發器嗎?", "MessageDirectoryPickerBSDInstruction": "對於 BSD 系統,您需要設定包含您 FreeNAS Jail 虛擬機的儲存以便 Jellyfin 存取。", - "MessageDirectoryPickerInstruction": "在網路按鈕無法找到您的裝置的情況下,網路路徑可被手動輸入。例如:{0} 或 {1}。", "MessageDirectoryPickerLinuxInstruction": "使用 Linux on Arch Linux、CentOS、Debian、Fedora、openSUSE 或 Ubuntu 作業系統,您必須授權使用者至少讀取權限來存取您的儲存路徑。", "MessageEnablingOptionLongerScans": "啟用這個選項可能會延長媒體庫的掃描時間。", "MessageFileReadError": "讀取檔案時發生錯誤。", @@ -1424,7 +1267,6 @@ "PleaseSelectTwoItems": "請至少選擇 2 個項目。", "PreferEmbeddedTitlesOverFileNames": "優先使用內建的標題而不是檔案名稱", "PreferEmbeddedTitlesOverFileNamesHelp": "這將在沒有網路上的中繼資料或本地中繼資料可用時顯示預設標題。", - "PreferredNotRequired": "首選,但非必需", "Premiere": "首映", "Premieres": "首映", "Previous": "上一個", @@ -1564,7 +1406,6 @@ "MessageImageTypeNotSelected": "在下拉選單中選取圖片類型。", "RemoveFromCollection": "從收藏移除", "RepeatEpisodes": "重複劇集", - "RequiredForAllRemoteConnections": "所有遠端連接都需要", "SaveSubtitlesIntoMediaFolders": "保存字幕到媒體所在資料夾", "SaveSubtitlesIntoMediaFoldersHelp": "將字幕存儲在影片檔案旁邊可以讓管理更方便。", "ScanForNewAndUpdatedFiles": "掃描新的和有修改的文件", From d14ac4b2e1f656832ae384269c234da9ea8d33a7 Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Fri, 31 Jul 2020 16:58:53 +0200 Subject: [PATCH 069/463] removed --- src/controllers/livetvstatus.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 1c04990634..be6cb1c738 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -1,5 +1,3 @@ -'use strict'; - import $ from 'jQuery'; import globalize from 'globalize'; import taskButton from 'scripts/taskbutton'; From 997054ab12572c52000cc1ec0186bfbf4f609679 Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 15:54:47 +0100 Subject: [PATCH 070/463] remove require This reverts commit bef8a4509d0b151e7a2e85f549bfca49ce952341. --- src/controllers/home.js | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/controllers/home.js b/src/controllers/home.js index f3e9e8e22b..392da0e2d2 100644 --- a/src/controllers/home.js +++ b/src/controllers/home.js @@ -1,6 +1,5 @@ import TabbedView from 'tabbedView'; import globalize from 'globalize'; -import require from 'require'; import 'emby-tabs'; import 'emby-button'; import 'emby-scroller'; @@ -17,30 +16,24 @@ function getDefaultTabIndex() { return 0; } -function getRequirePromise(deps) { - return new Promise(function (resolve, reject) { - require(deps, resolve); - }); -} - function getTabController(index) { if (null == index) { throw new Error('index cannot be null'); } - const depends = []; + let depends = ''; switch (index) { case 0: - depends.push('controllers/hometab'); + depends = 'controllers/hometab'; break; case 1: - depends.push('controllers/favorites'); + depends = 'controllers/favorites'; } const instance = this; - return getRequirePromise(depends).then(function (controllerFactory) { + return import(depends).then(({ default: controllerFactory }) => { let controller = instance.tabControllers[index]; if (!controller) { From 37740083432c1bb24fbaf75d35bf4f96a45c4987 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sat, 1 Aug 2020 00:18:24 +0900 Subject: [PATCH 071/463] standardize key prefixes for translations --- .../accessSchedule/accessSchedule.js | 2 +- src/components/imageeditor/imageeditor.js | 2 +- .../mediaLibraryEditor/mediaLibraryEditor.js | 2 +- src/controllers/dashboard/encodingsettings.js | 2 +- src/controllers/dashboard/general.js | 2 +- .../dashboard/plugins/add/index.js | 2 +- .../dashboard/plugins/installed/index.js | 8 ++--- src/controllers/dashboard/users/usernew.js | 2 +- .../dashboard/users/userpasswordpage.js | 4 +-- src/controllers/livetvsettings.js | 2 +- src/strings/af.json | 2 +- src/strings/ar.json | 16 +++++----- src/strings/bg-bg.json | 18 +++++------ src/strings/ca.json | 10 +++---- src/strings/cs.json | 18 +++++------ src/strings/da.json | 18 +++++------ src/strings/de.json | 18 +++++------ src/strings/el.json | 16 +++++----- src/strings/en-gb.json | 18 +++++------ src/strings/en-us.json | 30 +++++++++---------- src/strings/es-ar.json | 18 +++++------ src/strings/es-mx.json | 18 +++++------ src/strings/es.json | 18 +++++------ src/strings/es_419.json | 18 +++++------ src/strings/fa.json | 18 +++++------ src/strings/fi.json | 12 ++++---- src/strings/fr-ca.json | 2 +- src/strings/fr.json | 18 +++++------ src/strings/gsw.json | 2 +- src/strings/he.json | 10 +++---- src/strings/hi-in.json | 2 +- src/strings/hr.json | 16 +++++----- src/strings/hu.json | 18 +++++------ src/strings/id.json | 4 +-- src/strings/is-is.json | 8 ++--- src/strings/it.json | 18 +++++------ src/strings/ja.json | 10 +++---- src/strings/kk.json | 18 +++++------ src/strings/ko.json | 16 +++++----- src/strings/lt-lt.json | 8 ++--- src/strings/lv.json | 12 ++++---- src/strings/ms.json | 2 +- src/strings/nb.json | 18 +++++------ src/strings/nl.json | 18 +++++------ src/strings/pl.json | 18 +++++------ src/strings/pt-br.json | 18 +++++------ src/strings/pt-pt.json | 18 +++++------ src/strings/pt.json | 16 +++++----- src/strings/ro.json | 18 +++++------ src/strings/ru.json | 18 +++++------ src/strings/sk.json | 18 +++++------ src/strings/sl-si.json | 14 ++++----- src/strings/sr.json | 2 +- src/strings/sv.json | 18 +++++------ src/strings/tr.json | 8 ++--- src/strings/vi.json | 8 ++--- src/strings/zh-cn.json | 18 +++++------ src/strings/zh-hk.json | 6 ++-- src/strings/zh-tw.json | 18 +++++------ src/tv.html | 2 +- 60 files changed, 356 insertions(+), 356 deletions(-) diff --git a/src/components/accessSchedule/accessSchedule.js b/src/components/accessSchedule/accessSchedule.js index 6b96aad1d4..b513766d0b 100644 --- a/src/components/accessSchedule/accessSchedule.js +++ b/src/components/accessSchedule/accessSchedule.js @@ -49,7 +49,7 @@ import 'formDialogStyle'; }; if (parseFloat(updatedSchedule.StartHour) >= parseFloat(updatedSchedule.EndHour)) { - return void alert(globalize.translate('ErrorMessageStartHourGreaterThanEnd')); + return void alert(globalize.translate('ErrorStartHourGreaterThanEnd')); } context.submitted = true; diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 78c35bb15f..bb8bce269e 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -217,7 +217,7 @@ import 'css!./imageeditor'; reload(context, null, focusContext); }, function () { import('alert').then(({default: alert}) => { - alert(globalize.translate('DefaultErrorMessage')); + alert(globalize.translate('MessageDefaultError')); }); }); } diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js index b04f632055..66e7253401 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js @@ -85,7 +85,7 @@ import 'flexStyles'; refreshLibraryFromServer(dom.parentWithClass(button, 'dlg-libraryeditor')); }, () => { import('toast').then(({default: toast}) => { - toast(globalize.translate('DefaultErrorMessage')); + toast(globalize.translate('MessageDefaultError')); }); }); }); diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index 9995577ba8..2c133526bc 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -81,7 +81,7 @@ import libraryMenu from 'libraryMenu'; updateEncoder(form); }, function () { import('alert').then(({default: alert}) => { - alert(globalize.translate('DefaultErrorMessage')); + alert(globalize.translate('MessageDefaultError')); }); Dashboard.processServerConfigurationUpdateResult(); diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index 8e30749aba..9cf4092b5c 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -52,7 +52,7 @@ import 'emby-button'; }); }, function () { import('alert').then(({default: alert}) => { - alert(globalize.translate('DefaultErrorMessage')); + alert(globalize.translate('MessageDefaultError')); }); Dashboard.processServerConfigurationUpdateResult(); diff --git a/src/controllers/dashboard/plugins/add/index.js b/src/controllers/dashboard/plugins/add/index.js index a3c450dd79..89984ec397 100644 --- a/src/controllers/dashboard/plugins/add/index.js +++ b/src/controllers/dashboard/plugins/add/index.js @@ -79,7 +79,7 @@ define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'connectionManager', 'e page.querySelector('#btnInstall').disabled = true; ApiClient.installPlugin(name, guid, version).then(function () { loading.hide(); - alertText(globalize.translate('PluginInstalledMessage')); + alertText(globalize.translate('MessagePluginInstalled')); }); }; diff --git a/src/controllers/dashboard/plugins/installed/index.js b/src/controllers/dashboard/plugins/installed/index.js index d28a04cb2b..9c411538ed 100644 --- a/src/controllers/dashboard/plugins/installed/index.js +++ b/src/controllers/dashboard/plugins/installed/index.js @@ -6,10 +6,10 @@ define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button' require(['confirm'], function (confirm) { confirm.default({ - title: globalize.translate('UninstallPluginHeader'), + title: globalize.translate('HeaderUninstallPlugin'), text: msg, primary: 'delete', - confirmText: globalize.translate('UninstallPluginHeader') + confirmText: globalize.translate('HeaderUninstallPlugin') }).then(function () { loading.show(); ApiClient.uninstallPlugin(uniqueid).then(function () { @@ -21,7 +21,7 @@ define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button' function showNoConfigurationMessage() { Dashboard.alert({ - message: globalize.translate('NoPluginConfigurationMessage') + message: globalize.translate('MessageNoPluginConfiguration') }); } @@ -95,7 +95,7 @@ define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button' html += '
'; html += '

' + globalize.translate('MessageNoPluginsInstalled') + '

'; html += '

'; - html += globalize.translate('BrowsePluginCatalogMessage'); + html += globalize.translate('MessageBrowsePluginCatalog'); html += '

'; html += '
'; } diff --git a/src/controllers/dashboard/users/usernew.js b/src/controllers/dashboard/users/usernew.js index f45cbf8ca8..ae3ac0baa9 100644 --- a/src/controllers/dashboard/users/usernew.js +++ b/src/controllers/dashboard/users/usernew.js @@ -89,7 +89,7 @@ import 'emby-checkbox'; }); }, function (response) { import('toast').then(({default: toast}) => { - toast(globalize.translate('DefaultErrorMessage')); + toast(globalize.translate('MessageDefaultError')); }); loading.hide(); diff --git a/src/controllers/dashboard/users/userpasswordpage.js b/src/controllers/dashboard/users/userpasswordpage.js index db91c7bce7..d399804d3e 100644 --- a/src/controllers/dashboard/users/userpasswordpage.js +++ b/src/controllers/dashboard/users/userpasswordpage.js @@ -145,14 +145,14 @@ import 'emby-button'; function resetPassword() { const msg = globalize.translate('PasswordResetConfirmation'); import('confirm').then(({default: confirm}) => { - confirm(msg, globalize.translate('PasswordResetHeader')).then(function () { + confirm(msg, globalize.translate('HeaderResetPassword')).then(function () { const userId = params.userId; loading.show(); ApiClient.resetUserPassword(userId).then(function () { loading.hide(); Dashboard.alert({ message: globalize.translate('PasswordResetComplete'), - title: globalize.translate('PasswordResetHeader') + title: globalize.translate('HeaderResetPassword') }); loadUser(view, params); }); diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index 715eb06214..129d99311f 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -44,7 +44,7 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading, var msg = ''; if (recordingPathChanged) { - msg += globalize.translate('RecordingPathChangeMessage'); + msg += globalize.translate('MessageChangeRecordingPath'); } if (msg) { diff --git a/src/strings/af.json b/src/strings/af.json index bab716af49..a0df4fc037 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -112,7 +112,7 @@ "Up": "Op", "Unplayed": "Ongespeel", "Unmute": "Ontstom", - "UninstallPluginHeader": "Oninstalleer Plugin", + "HeaderUninstallPlugin": "Oninstalleer Plugin", "UninstallPluginConfirmation": "Is jy seker jy wil voortgaan met die oninstallasie {0}?", "Uniform": "Uniform", "TvLibraryHelp": "Hersien die {0}TV benamings gids{1}.", diff --git a/src/strings/ar.json b/src/strings/ar.json index 216cbf7074..744ac928f0 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -11,7 +11,7 @@ "BirthDateValue": "وُلد: {0}", "BirthPlaceValue": "مكان الميلاد: {0}", "Browse": "تصفح", - "BrowsePluginCatalogMessage": "تصفح قائمتنا للملحق لترى المتوفر من الملاحق.", + "MessageBrowsePluginCatalog": "تصفح قائمتنا للملحق لترى المتوفر من الملاحق.", "ButtonAdd": "إضافة", "ButtonAddMediaLibrary": "إضافة مكتبة وسائط", "ButtonAddScheduledTaskTrigger": "إضافة زناد", @@ -92,7 +92,7 @@ "CinemaModeConfigurationHelp": "الطور السينمائي يوفر أجواء سينمائية إلى قلب صالتك مع إمكانية تشغيل عروض إعلانية لأفلام أخرى وعرض مقدمات أخرى من انتقاءاتك قبل تشغيل الفيلم الرئيسي.", "CustomDlnaProfilesHelp": "إنشاء عرائض مخصوصه تستهدف جهازاً جديداً أو يمتطي حساباً نظامياً.", "DeathDateValue": "توفي: {0}", - "DefaultErrorMessage": "كان هناك خطأ في معالجة الطلب. الرجاء المحاولة لاحقاً.", + "MessageDefaultError": "كان هناك خطأ في معالجة الطلب. الرجاء المحاولة لاحقاً.", "Delete": "حذف", "DeleteDeviceConfirmation": "هل أنت متأكد أنك تريد حذف هذا الجهاز؟ سيظهر الجهاز من جديد في المرة القادمة التي يسجل فها مستخدم دخوله عبره.", "DeleteImage": "حذف صورة", @@ -110,7 +110,7 @@ "ErrorAddingTunerDevice": "كان هناك خطأ في إضافة جهاز المولف. الرجاء التأكد من صلاحية الوصول إليه ثم عاود المحاولة.", "ErrorAddingXmlTvFile": "كان هناك خطأ في محاولة الوصول إلى ملف XMLTV. الرجاء التأكد من وجود الملف ثم حاول مرة أخرى.", "ErrorGettingTvLineups": "كان هناك خطأ في إنزال اصطفافات التلفاز. الرجاء التأكد من أن بياناتك صحيحة ثم عاود المحاولة.", - "ErrorMessageStartHourGreaterThanEnd": "وقت النهاية يجب أن يكون أكبر من وقت البداية.", + "ErrorStartHourGreaterThanEnd": "وقت النهاية يجب أن يكون أكبر من وقت البداية.", "ErrorPleaseSelectLineup": "الرجاء اختيار اصطفاف ثم المحاولة مرة أخرى. إن لم تتوفر أية اصطفافات، فالرجاء التأكد من اسم المستخدم وكلمة المرور الخاصة بك، وتأكد من صحة رمزك البريدي.", "ErrorSavingTvProvider": "كان هناك خطأ في حفظ مزود التلفزة. الرجاء التأكد من صلاحية الوصول إليه ثم عاود المحاولة.", "ExitFullscreen": "الخروج من الشاشة الكاملة", @@ -632,8 +632,8 @@ "MoreUsersCanBeAddedLater": "يمكن اضافة المستخدمين لاحقا من لوحة العدادات.", "Mute": "صامت", "NextUp": "التالي", - "NoNextUpItemsMessage": "لم يتم ايجاد شيء، إبدأ بمشاهدة برامجك!", - "NoPluginConfigurationMessage": "هذا الملحق ليس له إعدادات تضبط.", + "MessageNoNextUpItems": "لم يتم ايجاد شيء، إبدأ بمشاهدة برامجك!", + "MessageNoPluginConfiguration": "هذا الملحق ليس له إعدادات تضبط.", "NumLocationsValue": "{0} مجلد(ات)", "Option3D": "ثلاثي أبعاد", "OptionAdminUsers": "المدراء", @@ -772,7 +772,7 @@ "PasswordMatchError": "كلمة السر وتاكيدها يجب ان يتطابقان.", "PasswordResetComplete": "لقد تم اعادة تعيين كلمة السر.", "PasswordResetConfirmation": "هل انت متاكد من انك تريد اعادة تعيين كلمة السر؟", - "PasswordResetHeader": "إعادة تهيئة كلمة السر", + "HeaderResetPassword": "إعادة تهيئة كلمة السر", "PasswordSaved": "تم حفظ كلمة السر.", "PictureInPicture": "صورة داخل صورة", "PinCodeResetComplete": "تمت إعادة تهيئة الرمز الشخصي", @@ -783,7 +783,7 @@ "RecommendationBecauseYouWatched": "لأنك شاهدت {0}", "RecommendationDirectedBy": "إخراج {0}", "RecommendationStarring": "بطولة {0}", - "RecordingPathChangeMessage": "إن تغيير مجلد التسجيل لم يهجّر التسجيلات الموجودة من الموقع القديم إلى الموقع الجديد. سيتعين عليك أن تنقلهم بنفسك لو شئت.", + "MessageChangeRecordingPath": "إن تغيير مجلد التسجيل لم يهجّر التسجيلات الموجودة من الموقع القديم إلى الموقع الجديد. سيتعين عليك أن تنقلهم بنفسك لو شئت.", "RememberMe": "تذكرني", "Rewind": "الترجيع", "Saturday": "السبت", @@ -862,7 +862,7 @@ "TitlePlayback": "تشغيل", "Tuesday": "الثلاثاء", "UninstallPluginConfirmation": "هل انت متاكد انك تريد إزالة تثبيت {0}؟", - "UninstallPluginHeader": "الغاء الملحق", + "HeaderUninstallPlugin": "الغاء الملحق", "Unmute": "غير صامت", "UserProfilesIntro": "إمبي يتضمن الدعم التلقائي حسابات المستخدمين، ما يتيح لكل مستخدم أن يحفظ إعدادات العرض الخاصة وحالات تشغيل الوسائط وخواص الرقابة الأبوية.", "ValueAlbumCount": "{0} ألبومـ(ات)", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index 9af8c54435..3afd904af3 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -508,7 +508,7 @@ "NewEpisodes": "Нови епизоди", "NewEpisodesOnly": "Само нови епизоди", "News": "Новини", - "NoNextUpItemsMessage": "Нищо не е намерено. Започнете да гледате вашите предавания!", + "MessageNoNextUpItems": "Нищо не е намерено. Започнете да гледате вашите предавания!", "NoSubtitleSearchResultsFound": "Няма намерени резултати.", "NoSubtitles": "Без", "None": "Нищо", @@ -613,7 +613,7 @@ "OriginalAirDateValue": "Дата на първоначално излъчване: {0}", "Overview": "Обобщение", "ParentalRating": "Родителска оценка", - "PasswordResetHeader": "Зануляване на паролата", + "HeaderResetPassword": "Зануляване на паролата", "People": "Хора", "Photos": "Снимки", "PictureInPicture": "Картина в картина", @@ -748,7 +748,7 @@ "TrackCount": "{0} песни", "Trailers": "Трейлъри", "Tuesday": "Вторник", - "UninstallPluginHeader": "Деинсталиране на приставката", + "HeaderUninstallPlugin": "Деинсталиране на приставката", "Unmute": "Без заглушаване", "Unplayed": "Непускано", "Upload": "Качване", @@ -841,7 +841,7 @@ "OptionResElement": "рес. елемент", "ButtonChangeServer": "Смяна на сървър", "ButtonAddImage": "Добавяне на изображение", - "BrowsePluginCatalogMessage": "За да видите наличните добавки, прегледайте каталога с добавките.", + "MessageBrowsePluginCatalog": "За да видите наличните добавки, прегледайте каталога с добавките.", "Box": "Кутия", "AlwaysPlaySubtitlesHelp": "Поднадписите, съвпадащи с езика от настройките, ще се зареждат, независимо от езика на аудио то.", "BookLibraryHelp": "Поддържат се аудио книги такива съдържащи текст. Проверете ръководството за наименуване {1} на книги {0}.", @@ -882,7 +882,7 @@ "CinemaModeConfigurationHelp": "Режимът на кино носи театрално изживяване направо във вашата всекидневна с възможност за пускане на трейлъри и персонализирани интродукции преди основния филм.", "ChangingMetadataImageSettingsNewContent": "Промените в настройките за изтегляне на метаданни или изображения ще се прилагат само за ново съдържание, добавено към вашата библиотека. За да приложите промените към съществуващите заглавия, ще трябва да обновите метаданните им ръчно.", "DefaultMetadataLangaugeDescription": "Това са настройки по подразбиране и могат да се променят на база библиотека.", - "DefaultErrorMessage": "Възникна грешка при изпълнение на заявката. Моля опитайте по-късно.", + "MessageDefaultError": "Възникна грешка при изпълнение на заявката. Моля опитайте по-късно.", "CustomDlnaProfilesHelp": "Създаване на персонализиран профил за целево устройство или заменяне на системния профил.", "CopyStreamURL": "Копиране URL на стрийма", "CopyStreamURLError": "Възникна грешка при копиране на URL.", @@ -903,7 +903,7 @@ "ButtonToggleContextMenu": "Повече", "ErrorSavingTvProvider": "Има проблем със запазването на ТВ доставчика.Убедете се ,че е достъпен и опитайте отново.", "ErrorPleaseSelectLineup": "Моля изберете списък и опитайте отново.Ако няма налични списъци се убедете ,че името,паролата и пощенския код са точни.", - "ErrorMessageStartHourGreaterThanEnd": "Времето за край трябва да бъде по-голямо от началното време.", + "ErrorStartHourGreaterThanEnd": "Времето за край трябва да бъде по-голямо от началното време.", "ErrorGettingTvLineups": "Има проблем при опита да бъдат свалени списъци с ТВ.Убедете се ,че информацията е правилна и опитайте отново.", "ErrorDeletingItem": "Има проблем при опита да бъде изтрит файла от сървъра.Убедете се ,че сървъра има право да трие папки и опитайте отново.", "ErrorAddingXmlTvFile": "Има проблем при достъпа на XMLTV файла.Уверете се ,че е наличен и пробвайте отново.", @@ -1423,7 +1423,7 @@ "RefreshDialogHelp": "Метаданните се обновяват въз основа на настройките и интернет услугите, които са активирани от таблото за управление на сървъра.", "Recordings": "Записи", "RecordingScheduled": "Записът е насрочен.", - "RecordingPathChangeMessage": "Промяната на вашата папка за запис няма да мигрира съществуващите записи от старото местоположение към новото.Необходимо е да направите това ръчно.", + "MessageChangeRecordingPath": "Промяната на вашата папка за запис няма да мигрира съществуващите записи от старото местоположение към новото.Необходимо е да направите това ръчно.", "RecordSeries": "Запиши сериал", "RecommendationStarring": "В главните роли {0}", "RecommendationDirectedBy": "Режисьор {0}", @@ -1434,7 +1434,7 @@ "PreferEmbeddedEpisodeInfosOverFileNames": "Предпочитай \"вградената\" информация за епизода вместо името на файла", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Това използва информацията за епизода от вградените метаданни, ако е налична.", "PreferEmbeddedTitlesOverFileNamesHelp": "Това определя заглавието по подразбиране, когато няма интернет метаданни или локални метаданни.", - "PluginInstalledMessage": "Добавката е успешно инсталирана. Джелифин ще трябва да бъде рестартиран, за да влязат в сила промените.", + "MessagePluginInstalled": "Добавката е успешно инсталирана. Джелифин ще трябва да бъде рестартиран, за да влязат в сила промените.", "PleaseSelectTwoItems": "Моля, изберете поне два елемента.", "PleaseEnterNameOrId": "Моля, въведете име или външен идентификатор.", "PleaseConfirmPluginInstallation": "Моля, щракнете върху OK, за да потвърдите, че сте прочели горното и искате да продължите с инсталирането на добавката.", @@ -1519,7 +1519,7 @@ "OnlyForcedSubtitles": "Само принудително", "OneChannel": "Един канал", "NoSubtitlesHelp": "Субтитрите няма да бъдат заредени по подразбиране. Те все още могат да бъдат включени ръчно по време на възпроизвеждане.", - "NoPluginConfigurationMessage": "Тази добавка няма настройки за конфигуриране.", + "MessageNoPluginConfiguration": "Тази добавка няма настройки за конфигуриране.", "NoNewDevicesFound": "Не са намерени нови устройства. За да добавите нов тунер, затворете този диалогов прозорец и въведете ръчно информацията за устройството.", "NoCreatedLibraries": "Изглежда, че все още не сте създали библиотеки. {0} Искате ли да ги създадете сега? {1}", "NextUp": "Следващ по ред", diff --git a/src/strings/ca.json b/src/strings/ca.json index 2324c31e4c..90f5ce8930 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -14,7 +14,7 @@ "AspectRatio": "Relació d'aspecte", "AttributeNew": "Nou", "Audio": "Àudio", - "BrowsePluginCatalogMessage": "Consulta el nostre catàleg per veure els complements disponibles.", + "MessageBrowsePluginCatalog": "Consulta el nostre catàleg per veure els complements disponibles.", "ButtonAdd": "Afegeix", "ButtonAddMediaLibrary": "Afegir Biblioteca Multimèdia", "ButtonAddScheduledTaskTrigger": "Afegir Disparador", @@ -84,7 +84,7 @@ "ConfirmDeletion": "Confirma supressió", "Connect": "Connecta", "Continuing": "Continuant", - "DefaultErrorMessage": "Hi ha hagut un error processant la petició. Intenta-ho més tard si et plau.", + "MessageDefaultError": "Hi ha hagut un error processant la petició. Intenta-ho més tard si et plau.", "Delete": "Esborra", "DeleteImage": "Esborra Imatge", "DeleteImageConfirmation": "Esteu segur que voleu suprimir aquesta imatge?", @@ -490,8 +490,8 @@ "NewCollectionNameExample": "Exemple: Col·leció Star Wars", "NewEpisodes": "Nous episodis", "NewEpisodesOnly": "Només nous episodis", - "NoNextUpItemsMessage": "Cap trobat. Comença a mirar els teus programes!", - "NoPluginConfigurationMessage": "Aquest complement no té opcions de configuració.", + "MessageNoNextUpItems": "Cap trobat. Comença a mirar els teus programes!", + "MessageNoPluginConfiguration": "Aquest complement no té opcions de configuració.", "NoSubtitleSearchResultsFound": "No s'han trobat resultats.", "NoSubtitles": "Sense subtítols", "None": "Cap", @@ -708,7 +708,7 @@ "TrackCount": "{0} pistes", "Tuesday": "Dimarts", "UninstallPluginConfirmation": "Estàs segur que vols desinstal·lar {0}?", - "UninstallPluginHeader": "Desinstal·lar Complement.", + "HeaderUninstallPlugin": "Desinstal·lar Complement.", "Unmute": "De-silencia", "Unrated": "Sense valorar", "Up": "Amunt", diff --git a/src/strings/cs.json b/src/strings/cs.json index fcabe3f3b3..c00b177548 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -34,7 +34,7 @@ "Books": "Knihy", "Box": "Pouzdro", "BoxRear": "Zadní část pouzdra", - "BrowsePluginCatalogMessage": "Prohlédněte si náš katalog, kde najdete dostupné zásuvné moduly.", + "MessageBrowsePluginCatalog": "Prohlédněte si náš katalog, kde najdete dostupné zásuvné moduly.", "ButtonAdd": "Přidat", "ButtonAddMediaLibrary": "Přidat knihovnu médií", "ButtonAddScheduledTaskTrigger": "Přidat Spouštěč", @@ -131,7 +131,7 @@ "DatePlayed": "Datum přehrání", "DeathDateValue": "Zemřel: {0}", "Default": "Výchozí", - "DefaultErrorMessage": "Došlo k chybě při zpracování požadavku. Prosím zkuste to znovu později.", + "MessageDefaultError": "Došlo k chybě při zpracování požadavku. Prosím zkuste to znovu později.", "DefaultMetadataLangaugeDescription": "Toto jsou vaše výchozí hodnoty a lze je přizpůsobit na základě jednotlivých knihoven.", "DefaultSubtitlesHelp": "Titulky jsou načteny na základě výchozích a vynucených nastavení ve vložených metadatech. Jazykové preference jsou vzaty v úvahu, pokud je k dispozici více možností.", "Delete": "Odstranit", @@ -185,7 +185,7 @@ "ErrorAddingXmlTvFile": "Nastala chyba při přístupu k XMLTV souboru. Ujistěte se, že soubor existuje a zkuste jej znovu otevřít.", "ErrorDeletingItem": "Při odstranění položky ze serveru Jellyfin došlo k chybě. Zkontrolujte prosím, zda má server Jellyfin oprávnění k zápisu do složky médií, a zkuste to prosím znovu.", "ErrorGettingTvLineups": "Došlo k chybě při stahování TV sestav. Ujistěte se prosím, že zadané informace jsou správné a zkuste to znovu.", - "ErrorMessageStartHourGreaterThanEnd": "Čas ukončení musí být větší než čas startu.", + "ErrorStartHourGreaterThanEnd": "Čas ukončení musí být větší než čas startu.", "ErrorPleaseSelectLineup": "Vyberte prosím sestavu a zkuste to znovu. Pokud nejsou k dispozici žádné sestavy, zkontrolujte, zda je vaše uživatelské jméno, heslo a poštovní směrovací číslo správné.", "ErrorSavingTvProvider": "Při ukládání poskytovatele TV došlo k chybě. Prosím, ujistěte se, že je přístupný a zkuste to znovu.", "ExitFullscreen": "Opustit celou obrazovku", @@ -819,8 +819,8 @@ "News": "Zpravodajství", "Next": "Další", "No": "Ne", - "NoNextUpItemsMessage": "Nic nenalezeno. Začněte sledovat Vaše oblíbené seriály!", - "NoPluginConfigurationMessage": "Tento zásuvný modul nemá žádné nastavení.", + "MessageNoNextUpItems": "Nic nenalezeno. Začněte sledovat Vaše oblíbené seriály!", + "MessageNoPluginConfiguration": "Tento zásuvný modul nemá žádné nastavení.", "NoSubtitleSearchResultsFound": "Žádné výsledky.", "NoSubtitles": "Žádné", "NoSubtitlesHelp": "Ve výchozím nastavení nebudou titulky načteny. Během přehrávání však mohou být manuálně zapnuty.", @@ -964,7 +964,7 @@ "PasswordMatchError": "Heslo a potvrzení hesla musí souhlasit.", "PasswordResetComplete": "Heslo bylo obnoveno.", "PasswordResetConfirmation": "Jste si jisti, že chcete obnovit heslo?", - "PasswordResetHeader": "Obnovit heslo", + "HeaderResetPassword": "Obnovit heslo", "PasswordSaved": "Heslo uloženo.", "People": "Lidé", "PerfectMatch": "Přesná shoda", @@ -1004,7 +1004,7 @@ "Record": "Nahrávat", "RecordSeries": "Nahrát série", "RecordingCancelled": "Nahrávání zrušeno.", - "RecordingPathChangeMessage": "Změna záznamové složky automaticky nepřesune stávající záznamy ze starého umístění do nového. Budete muset přesunout ručně, pokud je to žádoucí.", + "MessageChangeRecordingPath": "Změna záznamové složky automaticky nepřesune stávající záznamy ze starého umístění do nového. Budete muset přesunout ručně, pokud je to žádoucí.", "RecordingScheduled": "Plán nahrávání.", "Recordings": "Nahrávky", "Refresh": "Obnovit", @@ -1131,7 +1131,7 @@ "Transcoding": "Překódování", "Tuesday": "Úterý", "UninstallPluginConfirmation": "Jste si jisti, že chcete odinstalovat {0}?", - "UninstallPluginHeader": "Odinstalovat zásuvný modul", + "HeaderUninstallPlugin": "Odinstalovat zásuvný modul", "Unmute": "Povolit zvuk", "Unrated": "Nehodnoceno", "Up": "Nahoru", @@ -1358,7 +1358,7 @@ "OptionProtocolHttp": "HTTP", "OptionRequirePerfectSubtitleMatchHelp": "Vyžadování dokonalé shody filtruje titulky tak, aby obsahovaly pouze ty, které byly testovány a ověřeny s vaším přesným videosouborem. Zrušení zaškrtnutí tohoto políčka zvýší pravděpodobnost stahování titulků, ale zvýší pravděpodobnost chybného nebo nesprávného textu titulků.", "PasswordResetProviderHelp": "Zvolte poskytovatele resetování hesla, který bude použit, když tento uživatel o něj požádá", - "PluginInstalledMessage": "Zásuvný modul byl úspěšně nainstalován. Server Jellyfin bude nutné restartovat, aby se změny projevily.", + "MessagePluginInstalled": "Zásuvný modul byl úspěšně nainstalován. Server Jellyfin bude nutné restartovat, aby se změny projevily.", "PreferEmbeddedTitlesOverFileNames": "Preferovat vložené názvy nad názvy souborů", "PreferEmbeddedTitlesOverFileNamesHelp": "Toto určuje výchozí název zobrazení, pokud nejsou k dispozici žádná metadata z internetu nebo místní metadata.", "Raised": "Vystupující", diff --git a/src/strings/da.json b/src/strings/da.json index 9965294f4c..265d322fc5 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -31,7 +31,7 @@ "BirthPlaceValue": "Fødselssted: {0}", "BookLibraryHelp": "Lyd- og tekstbøger er understøttet. Se {0}guiden til navngivning af bøger{1}.", "Browse": "Gennemse", - "BrowsePluginCatalogMessage": "Gennemse vores plugin-katalog for at se tilgængelige plugins.", + "MessageBrowsePluginCatalog": "Gennemse vores plugin-katalog for at se tilgængelige plugins.", "ButtonAdd": "Tilføj", "ButtonAddMediaLibrary": "Tilføj Mediebibliotek", "ButtonAddScheduledTaskTrigger": "Tilføj udløser", @@ -119,7 +119,7 @@ "Continuing": "Forsættes", "CustomDlnaProfilesHelp": "Lav brugerdefinerede profiler til nye enheder eller for at overstyre en systemprofil.", "DeathDateValue": "Dødsdato: {0}", - "DefaultErrorMessage": "Det opstod en fejl ved behandlingen af forespørgslen. Prøv igen senere.", + "MessageDefaultError": "Det opstod en fejl ved behandlingen af forespørgslen. Prøv igen senere.", "DefaultMetadataLangaugeDescription": "Dette er dine standarder og kan brugerdefineres på per-biblioteks basis.", "Delete": "Slet", "DeleteDeviceConfirmation": "Er du sikker på du ønsker at slette denne enhed? Den vil dukke op igen næste gang en bruger logger ind med den.", @@ -154,7 +154,7 @@ "ErrorAddingTunerDevice": "Der opstod en fejl under tilføjelse af tuner-enhed. Kontroller venligst at den er tilgængelig og prøv igen.", "ErrorAddingXmlTvFile": "Der opstod en fejl under tilgang til XMLTV-filen. Kontroller venligst at filen findes og prøv igen.", "ErrorGettingTvLineups": "Der opstod en fejl under download af TV-opstillinger. Kontroller venligst at dine informationer er korrekte og prøv igen.", - "ErrorMessageStartHourGreaterThanEnd": "Slut tid skal være større end start tid.", + "ErrorStartHourGreaterThanEnd": "Slut tid skal være større end start tid.", "ErrorPleaseSelectLineup": "Vælg venligst en opstilling og prøv igen. Hvis ingen opstillinger er tilgængelige, så kontroller venligst at dit brugernavn, adgangskode og postnummer er korrekt.", "ErrorSavingTvProvider": "Der opstod en fejl i forsøget på at gemme udbyder. Kontroller venligst at den er tilgængelig og prøv igen.", "EveryNDays": "Hver {0} dage", @@ -754,8 +754,8 @@ "News": "Nyheder", "NextUp": "Næste", "NoNewDevicesFound": "Ingen nye enheder fundet. For at tilføje en ny tuner, luk denne dialog og skriv enhedens informationer manuelt.", - "NoNextUpItemsMessage": "Ingen fundet. Se dine serier!", - "NoPluginConfigurationMessage": "Dette plugin har ingen indstillinger at konfigurere.", + "MessageNoNextUpItems": "Ingen fundet. Se dine serier!", + "MessageNoPluginConfiguration": "Dette plugin har ingen indstillinger at konfigurere.", "NoSubtitleSearchResultsFound": "Ingen resultater fundet.", "NumLocationsValue": "{0} mapper", "OneChannel": "En kanal", @@ -890,7 +890,7 @@ "PasswordMatchError": "Adgangskode og bekræft adgangskode skal være ens.", "PasswordResetComplete": "Adgangskoden er blevet nulstillet.", "PasswordResetConfirmation": "Er du sikker på at adgangskoden skal nulstilles?", - "PasswordResetHeader": "Nulstil adgangskode", + "HeaderResetPassword": "Nulstil adgangskode", "PasswordSaved": "Adgangskoden er gemt.", "People": "Personer", "PictureInPicture": "Billede i billede", @@ -906,7 +906,7 @@ "PleaseEnterNameOrId": "Indtast venligst et navn eller eksternt ID.", "PleaseRestartServerName": "Genstart venligst Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Vælg venligst mindst to elementer.", - "PluginInstalledMessage": "Plugin blev installeret med success. Jellyfin serveren skal genstartes for at aktivere det.", + "MessagePluginInstalled": "Plugin blev installeret med success. Jellyfin serveren skal genstartes for at aktivere det.", "PreferEmbeddedTitlesOverFileNames": "Foretræk indlejrede titler over filnavne", "PreferEmbeddedTitlesOverFileNamesHelp": "Dette bestemmer standard visnings titel når ingen internet metadata eller lokal metadata er tilgængelig.", "Premieres": "Premiere", @@ -923,7 +923,7 @@ "Record": "Optag", "RecordSeries": "Optag serie", "RecordingCancelled": "Optagelse annulleret.", - "RecordingPathChangeMessage": "Ændring af optagelsesmappe migrerer ikke eksisterende optagelser fra den gamle lokation til den nye. Du bliver nød til at flytte dem manuelt, hvis det ønskes.", + "MessageChangeRecordingPath": "Ændring af optagelsesmappe migrerer ikke eksisterende optagelser fra den gamle lokation til den nye. Du bliver nød til at flytte dem manuelt, hvis det ønskes.", "RecordingScheduled": "Optagelse planlagt.", "Refresh": "Opdater", "RefreshDialogHelp": "Metadata opdateres alt efter hvilke indstillinger og internet-servicer der er aktiveret i Jellyfin Server-kontrolpanelet.", @@ -1034,7 +1034,7 @@ "Tuesday": "Tirsdag", "TvLibraryHelp": "Gennemgå {0} TV-navneguiden {1}.", "UninstallPluginConfirmation": "Er du sikker på du vil afinstallere {0}?", - "UninstallPluginHeader": "Afinstaller plugin", + "HeaderUninstallPlugin": "Afinstaller plugin", "Unmute": "Genoptag lyd", "Unrated": "Ingen bedømmelse", "UserAgentHelp": "Angiv en brugerdefineret bruger-agent HTTP-header.", diff --git a/src/strings/de.json b/src/strings/de.json index 837feb42b9..0c25bb9c29 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -46,7 +46,7 @@ "Books": "Bücher", "BoxRear": "Box (Rückseite)", "Browse": "Blättern", - "BrowsePluginCatalogMessage": "Durchsuche unsere Bibliothek, um alle verfügbaren Plugins anzuzeigen.", + "MessageBrowsePluginCatalog": "Durchsuche unsere Bibliothek, um alle verfügbaren Plugins anzuzeigen.", "BurnSubtitlesHelp": "Legt fest, ob der Server die Untertitel während der Videotranskodierung einbrennen soll. Deaktivieren verbessert die Serverperformance immens. Wähle Auto, um bildbasierte Formate (z.B. VOBSUB, PGS, SUB, IDX, ...) sowie bestimmte ASS- oder SSA-Untertitel einbrennen zu lassen.", "ButtonAdd": "Hinzufügen", "ButtonAddMediaLibrary": "Füge Medienbibliothek hinzu", @@ -143,7 +143,7 @@ "DatePlayed": "Abgespielt am", "DeathDateValue": "Gestorben: {0}", "Default": "Standard", - "DefaultErrorMessage": "Es gab einen Fehler beim verarbeiten der Anfrage. Bitte versuche es später erneut.", + "MessageDefaultError": "Es gab einen Fehler beim verarbeiten der Anfrage. Bitte versuche es später erneut.", "DefaultMetadataLangaugeDescription": "Das sind deine Default-Werte, die bibliotheksspezifisch verändert werden können.", "DefaultSubtitlesHelp": "Untertitel werden gemäß der Standard- und Erzwungen-Ansicht aus den eingebetteten Metadaten geladen. Spracheinstellungen werden zur Verfügung gestellt, wenn mehrere Sprachen verfügbar sind.", "Delete": "Löschen", @@ -210,7 +210,7 @@ "ErrorAddingXmlTvFile": "Fehler beim Zugriff auf die XMLTV Datei. Stelle bitte sicher, dass die Datei existiert und versuche es nochmal.", "ErrorDeletingItem": "Fehler beim Löschen des Mediums vom Jellyfin Server. Bitte stelle sicher dass der Jellyfin Server Schreibzugriff auf den Dateiordner hat und versuche es erneut.", "ErrorGettingTvLineups": "Ein Fehler trat beim Herunterladen des Fernsehprogramms auf. Bitte stellen Sie sicher, dass Ihre Informationen korrekt sind und versuchen Sie es erneut.", - "ErrorMessageStartHourGreaterThanEnd": "Die Endzeit muss größer als die Startzeit sein.", + "ErrorStartHourGreaterThanEnd": "Die Endzeit muss größer als die Startzeit sein.", "ErrorPleaseSelectLineup": "Bitte wählen Sie ein TV Programm und versuchen Sie es erneut. Wenn keine Programme verfügbar sind prüfen Sie bitte Benutzername, Passwort und Ihre Postleitzahl.", "ErrorSavingTvProvider": "Ein Fehler beim speichern des TV Verzeichnisses trat auf. Bitte stellen Sie sicher das dieser erreichbar ist und versuchen Sie es erneut.", "EveryNDays": "Alle {0} Tage", @@ -888,8 +888,8 @@ "NextUp": "Es folgt", "No": "Nein", "NoNewDevicesFound": "Keine neuen Geräte gefunden. Um einen neuen Tuner hinzuzufügen, schließe diesen Dialog und gebe die Geräteinformationen manuell ein.", - "NoNextUpItemsMessage": "Es wurde nichts gefunden. Schau dir deine Shows an!", - "NoPluginConfigurationMessage": "Dieses Plugin hat keine konfigurierbaren Einstellungen.", + "MessageNoNextUpItems": "Es wurde nichts gefunden. Schau dir deine Shows an!", + "MessageNoPluginConfiguration": "Dieses Plugin hat keine konfigurierbaren Einstellungen.", "NoSubtitleSearchResultsFound": "Keine Ergebnisse gefunden.", "NoSubtitles": "Keine", "NoSubtitlesHelp": "Untertitel werden standardmäßig nicht geladen. Sie können aber während der Wiedergabe manuell aktiviert werden.", @@ -1026,7 +1026,7 @@ "PasswordMatchError": "Die Passwörter müssen übereinstimmen.", "PasswordResetComplete": "Das Passwort wurde zurückgesetzt.", "PasswordResetConfirmation": "Möchtest du das Passwort wirklich zurücksetzen?", - "PasswordResetHeader": "Passwort zurücksetzen", + "HeaderResetPassword": "Passwort zurücksetzen", "PasswordSaved": "Passwort gespeichert.", "People": "Personen", "PerfectMatch": "Perfektes Ergbnis", @@ -1048,7 +1048,7 @@ "PleaseEnterNameOrId": "Bitte gib einen Namen oder eine externe ID an.", "PleaseRestartServerName": "Bitte starte Jellyfin Server - {0} neu.", "PleaseSelectTwoItems": "Bitte wähle mindestens zwei Optionen aus.", - "PluginInstalledMessage": "Das Plugin wurde erfolgreich installiert. Der Jellyfin-Server muss neu gestartet werden, um die Änderungen zu übernehmen.", + "MessagePluginInstalled": "Das Plugin wurde erfolgreich installiert. Der Jellyfin-Server muss neu gestartet werden, um die Änderungen zu übernehmen.", "PreferEmbeddedTitlesOverFileNames": "Bevorzuge eingebettete Titel vor Dateinamen", "PreferEmbeddedTitlesOverFileNamesHelp": "Das bestimmt den Standard Displaytitel wenn keine lokale oder Internetmetadaten verfügbar sind.", "PreferEmbeddedEpisodeInfosOverFileNames": "Bevorzuge eingebettete Episodeninformationen vor Dateinamen", @@ -1071,7 +1071,7 @@ "Record": "Aufnehmen", "RecordSeries": "Serie aufnehmen", "RecordingCancelled": "Aufnahme abgebrochen.", - "RecordingPathChangeMessage": "Das Ändern des Aufnahmeverzeichnisses wird alte Aufnahmen nicht automatisch verschieben. Wenn Du das möchtest, musst Du das selber machen.", + "MessageChangeRecordingPath": "Das Ändern des Aufnahmeverzeichnisses wird alte Aufnahmen nicht automatisch verschieben. Wenn Du das möchtest, musst Du das selber machen.", "RecordingScheduled": "Aufnahme geplant.", "Recordings": "Aufnahmen", "Refresh": "Aktualisieren", @@ -1209,7 +1209,7 @@ "TvLibraryHelp": "Überprüfe den {0}Serienbenennungsleitfaden{1}.", "Uniform": "Einheitlich", "UninstallPluginConfirmation": "Möchtest du {0} wirklich deinstallieren?", - "UninstallPluginHeader": "Plugin deinstallieren", + "HeaderUninstallPlugin": "Plugin deinstallieren", "Unmute": "Ton ein", "Unplayed": "Ungesehen", "Unrated": "Nicht bewertet", diff --git a/src/strings/el.json b/src/strings/el.json index a1fbf85613..5b3f1afc22 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -43,7 +43,7 @@ "Books": "Βιβλία", "Box": "Κουτί", "Browse": "Αναζήτηση", - "BrowsePluginCatalogMessage": "Πλοηγηθείτε στον κατάλογο plugin μας για να δείτε τα διαθέσιμα plugins.", + "MessageBrowsePluginCatalog": "Πλοηγηθείτε στον κατάλογο plugin μας για να δείτε τα διαθέσιμα plugins.", "BurnSubtitlesHelp": "Καθορίζει αν ο διακομιστής πρέπει να εγγράψει τους υπότιτλους κατά τη μετατροπή βίντεο ανάλογα με τη μορφή των υπότιτλων. Η αποφυγή της εγγραφής στους υπότιτλους θα βελτιώσει την απόδοση του διακομιστή. Επιλέξτε Αυτόματα για να εγγράψετε μορφές βασισμένες σε εικόνες (VOBSUB, PGS, SUB / IDX κ.λπ.) και ορισμένους υπότιτλους ASS / SSA.", "ButtonAdd": "Πρόσθεσε", "ButtonAddMediaLibrary": "Προσθήκη βιβλιοθήκης πολυμέσων", @@ -146,7 +146,7 @@ "DatePlayed": "Ημερομηνία Αναπαραγωγής", "DeathDateValue": "Πέθανε: {0}", "Default": "Προεπιλογή", - "DefaultErrorMessage": "Παρουσιάστηκε σφάλμα κατά την επεξεργασία του αιτήματός σας. Παρακαλώ δοκιμάστε ξανά αργότερα.", + "MessageDefaultError": "Παρουσιάστηκε σφάλμα κατά την επεξεργασία του αιτήματός σας. Παρακαλώ δοκιμάστε ξανά αργότερα.", "DefaultMetadataLangaugeDescription": "Αυτές είναι οι προεπιλογές σας και μπορούν να προσαρμοστούν σε βάση ανά βιβλιοθήκη.", "DefaultSubtitlesHelp": "Οι υπότιτλοι φορτώνονται με βάση τις προεπιλεγμένες και αναγκασμένες σημαίες στα ενσωματωμένα μεταδεδομένα. Οι προτιμήσεις γλώσσας εξετάζονται όταν υπάρχουν πολλές επιλογές.", "Delete": "Διαγραφή", @@ -206,7 +206,7 @@ "Episodes": "Επεισόδια", "ErrorAddingMediaPathToVirtualFolder": "Παρουσιάστηκε σφάλμα κατά την προσθήκη της διαδρομής πολυμέσων. Βεβαιωθείτε ότι η διαδρομή είναι έγκυρη και ότι η διαδικασία του διακομιστή Jellyfin έχει πρόσβαση σε αυτήν τη θέση.", "ErrorDeletingItem": "Παρουσιάστηκε σφάλμα κατά τη διαγραφή του στοιχείου από τον διακομιστή Jellyfin. Βεβαιωθείτε ότι ο διακομιστής Jellyfin έχει πρόσβαση εγγραφής στο φάκελο πολυμέσων και προσπαθήστε ξανά.", - "ErrorMessageStartHourGreaterThanEnd": "Η ώρα λήξης πρέπει να είναι μεγαλύτερη από την ώρα έναρξης.", + "ErrorStartHourGreaterThanEnd": "Η ώρα λήξης πρέπει να είναι μεγαλύτερη από την ώρα έναρξης.", "EveryNDays": "Κάθε {0} μέρες", "ExitFullscreen": "Έξοδος από τη πλήρη οθόνη", "ExtraLarge": "Πολύ Μεγάλο", @@ -794,8 +794,8 @@ "Next": "Επόμενο", "NextUp": "Επόμενο", "No": "Οχι", - "NoNextUpItemsMessage": "Δεν βρέθηκε κανένα. Ξεκινήστε παρακολουθώντας τις εκπομπές σας!", - "NoPluginConfigurationMessage": "Αυτό το plugin δεν απαιτεί ρυθμίσεις.", + "MessageNoNextUpItems": "Δεν βρέθηκε κανένα. Ξεκινήστε παρακολουθώντας τις εκπομπές σας!", + "MessageNoPluginConfiguration": "Αυτό το plugin δεν απαιτεί ρυθμίσεις.", "NoSubtitleSearchResultsFound": "Δεν βρέθηκαν αποτελέσματα.", "NoSubtitles": "Χωρίς Υπότιτλους", "NoSubtitlesHelp": "Οι υπότιτλοι δεν θα φορτωθούν από προεπιλογή.Μπορούν ακόμα να ενεργοποιούνται χειροκίνητα κατά την αναπαραγωγή.", @@ -925,7 +925,7 @@ "PasswordMatchError": "Ο κωδικός πρόσβασης και ο κωδικός επιβεβαίωσης πρέπει να είναι ίδιοι.", "PasswordResetComplete": "Ο κωδικός πρόσβασης επαναφέρθηκε.", "PasswordResetConfirmation": "Είστε σίγουροι ότι θέλετε να επαναφέρετε τον κωδικό πρόσβασης;", - "PasswordResetHeader": "Επαναφορά του κωδικού πρόσβασης", + "HeaderResetPassword": "Επαναφορά του κωδικού πρόσβασης", "PasswordSaved": "Ο κωδικός πρόσβασης αποθηκεύτηκε.", "People": "Πρόσωπα", "PerfectMatch": "Τέλεια αντιστοίχιση", @@ -946,7 +946,7 @@ "PleaseEnterNameOrId": "Εισαγάγετε ένα όνομα ή ένα εξωτερικό αναγνωριστικό.", "PleaseRestartServerName": "Κάντε επανεκκίνηση του Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Επιλέξτε τουλάχιστον δύο στοιχεία.", - "PluginInstalledMessage": "Η προσθήκη έχει εγκατασταθεί με επιτυχία. Θα πρέπει να γίνει επανεκκίνηση του διακομιστή Jellyfin για να εφαρμοστούν οι αλλαγές.", + "MessagePluginInstalled": "Η προσθήκη έχει εγκατασταθεί με επιτυχία. Θα πρέπει να γίνει επανεκκίνηση του διακομιστή Jellyfin για να εφαρμοστούν οι αλλαγές.", "Premiere": "Πρεμιέρα", "Premieres": "Πρεμιέρες", "Previous": "Προηγούμενο", @@ -1103,7 +1103,7 @@ "Tuesday": "Τρίτη", "Uniform": "ομοειδής", "UninstallPluginConfirmation": "Είστε σίγουροι ότι θέλετε να απεγκαταστήσετε;", - "UninstallPluginHeader": "απεγκατάστησετε το plugin", + "HeaderUninstallPlugin": "απεγκατάστησετε το plugin", "Unmute": "Με ήχο", "Unplayed": "Δεν παίχθηκε", "Unrated": "Χωρίς Βαθμολογία", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 1947dc0c37..43269a507f 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1,6 +1,6 @@ { "AdditionalNotificationServices": "Browse the plugin catalogue to install additional notification services.", - "BrowsePluginCatalogMessage": "Browse our plugin catalogue to view available plugins.", + "MessageBrowsePluginCatalog": "Browse our plugin catalogue to view available plugins.", "CinemaModeConfigurationHelp": "Cinema mode brings the theatre experience straight to your living room with the ability to play trailers and custom intros before the main feature.", "ColorPrimaries": "Colour primaries", "ColorSpace": "Colour space", @@ -202,7 +202,7 @@ "DatePlayed": "Date played", "DeathDateValue": "Died: {0}", "Default": "Default", - "DefaultErrorMessage": "There was an error processing the request. Please try again later.", + "MessageDefaultError": "There was an error processing the request. Please try again later.", "DefaultSubtitlesHelp": "Subtitles are loaded based on the default and forced flags in the embedded metadata. Language preferences are considered when multiple options are available.", "Delete": "Delete", "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", @@ -269,7 +269,7 @@ "ErrorAddingXmlTvFile": "There was an error accessing the XMLTV file. Please ensure the file exists and try again.", "ErrorDeletingItem": "There was an error deleting the item from Jellyfin Server. Please check that Jellyfin Server has write access to the media folder and try again.", "ErrorGettingTvLineups": "There was an error downloading TV lineups. Please ensure your information is correct and try again.", - "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", + "ErrorStartHourGreaterThanEnd": "End time must be greater than the start time.", "ErrorPleaseSelectLineup": "Please select a lineup and try again. If no lineups are available, then please check that your username, password, and postal code is correct.", "ErrorSavingTvProvider": "There was an error saving the TV provider. Please ensure it is accessible and try again.", "EveryNDays": "Every {0} days", @@ -466,7 +466,7 @@ "Unrated": "Unrated", "Unplayed": "Unplayed", "Unmute": "Unmute", - "UninstallPluginHeader": "Uninstall Plugin", + "HeaderUninstallPlugin": "Uninstall Plugin", "Trailers": "Trailers", "TrackCount": "{0} tracks", "TitlePlayback": "Playback", @@ -567,7 +567,7 @@ "Refresh": "Refresh", "Recordings": "Recordings", "RecordingScheduled": "Recording scheduled.", - "RecordingPathChangeMessage": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired.", + "MessageChangeRecordingPath": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired.", "RecordingCancelled": "Recording cancelled.", "RecordSeries": "Record series", "Record": "Record", @@ -585,7 +585,7 @@ "Premiere": "Premiere", "PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.", "PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames", - "PluginInstalledMessage": "The plugin has been successfully installed. Jellyfin Server will need to be restarted for changes to take effect.", + "MessagePluginInstalled": "The plugin has been successfully installed. Jellyfin Server will need to be restarted for changes to take effect.", "PleaseSelectTwoItems": "Please select at least two items.", "PleaseRestartServerName": "Please restart Jellyfin Server - {0}.", "PleaseConfirmPluginInstallation": "Please click OK to confirm you've read the above and wish to proceed with the plugin installation.", @@ -602,7 +602,7 @@ "PictureInPicture": "Picture in picture", "PerfectMatch": "Perfect match", "PasswordSaved": "Password saved.", - "PasswordResetHeader": "Reset Password", + "HeaderResetPassword": "Reset Password", "PasswordResetConfirmation": "Are you sure you wish to reset the password?", "PasswordResetComplete": "The password has been reset.", "PasswordMatchError": "Password and password confirmation must match.", @@ -686,8 +686,8 @@ "None": "None", "NoSubtitlesHelp": "Subtitles will not be loaded by default. They can still be turned on manually during playback.", "NoSubtitles": "None", - "NoPluginConfigurationMessage": "This plugin has no settings to configure.", - "NoNextUpItemsMessage": "None found. Start watching your shows!", + "MessageNoPluginConfiguration": "This plugin has no settings to configure.", + "MessageNoNextUpItems": "None found. Start watching your shows!", "No": "No", "NextUp": "Next Up", "NewEpisodesOnly": "New episodes only", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index a148ef061f..ea190351ce 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -61,7 +61,7 @@ "BoxSet": "Box Set", "BoxRear": "Box (rear)", "Browse": "Browse", - "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins.", + "MessageBrowsePluginCatalog": "Browse our plugin catalog to view available plugins.", "BurnSubtitlesHelp": "Determines if the server should burn in subtitles when transcoding videos. Avoiding this will greatly improve performance. Select Auto to burn image based formats (VOBSUB, PGS, SUB, IDX, …) and certain ASS or SSA subtitles.", "ButtonAdd": "Add", "ButtonAddImage": "Add Image", @@ -178,7 +178,7 @@ "DatePlayed": "Date played", "DeathDateValue": "Died: {0}", "Default": "Default", - "DefaultErrorMessage": "There was an error processing the request. Please try again later.", + "MessageDefaultError": "There was an error processing the request. Please try again later.", "DefaultMetadataLangaugeDescription": "These are your defaults and can be customized on a per-library basis.", "DefaultSubtitlesHelp": "Subtitles are loaded based on the default and forced flags in the embedded metadata. Language preferences are considered when multiple options are available.", "DeinterlaceMethodHelp": "Select the deinterlacing method to use when transcoding interlaced content.", @@ -253,7 +253,7 @@ "ErrorAddingXmlTvFile": "There was an error accessing the XMLTV file. Please ensure the file exists and try again.", "ErrorDeletingItem": "There was an error deleting the item from Jellyfin Server. Please check that Jellyfin Server has write access to the media folder and try again.", "ErrorGettingTvLineups": "There was an error downloading TV lineups. Please ensure your information is correct and try again.", - "ErrorMessageStartHourGreaterThanEnd": "End time must be greater than the start time.", + "ErrorStartHourGreaterThanEnd": "End time must be greater than the start time.", "ErrorPleaseSelectLineup": "Please select a lineup and try again. If no lineups are available, then please check that your username, password, and postal code is correct.", "ErrorSavingTvProvider": "There was an error saving the TV provider. Please ensure it is accessible and try again.", "EveryNDays": "Every {0} days", @@ -576,11 +576,11 @@ "LabelAuthProvider": "Authentication Provider:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Automatically refresh metadata from the internet:", "LabelBindToLocalNetworkAddress": "Bind to local network address:", - "LabelBindToLocalNetworkAddressHelp": "Optional. Override the local IP address to bind the http server to. If left empty, the server will bind to all availabile addresses. Changing this value requires restarting Jellyfin Server.", + "LabelBindToLocalNetworkAddressHelp": "Override the local IP address to bind the http server to. If left empty, the server will bind to all availabile addresses. Changing this value requires restarting Jellyfin Server.", "LabelBirthDate": "Birth date:", "LabelBirthYear": "Birth year:", "LabelBitrate": "Bitrate:", - "LabelBlastMessageInterval": "Alive message interval (seconds)", + "LabelBlastMessageInterval": "Alive message interval", "LabelBlastMessageIntervalHelp": "Determines the duration in seconds between blast alive messages.", "LabelBlockContentWithTags": "Block items with tags:", "LabelBurnSubtitles": "Burn subtitles:", @@ -753,7 +753,7 @@ "LabelMovieCategories": "Movie categories:", "LabelMoviePrefix": "Movie prefix:", "LabelMoviePrefixHelp": "If a prefix is applied to movie titles, enter it here so the server can handle it properly.", - "LabelMovieRecordingPath": "Movie recording path (optional):", + "LabelMovieRecordingPath": "Movie recording path:", "LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:", "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music.", "LabelName": "Name:", @@ -770,7 +770,7 @@ "LabelNumber": "Number:", "LabelNumberOfGuideDays": "Number of days of guide data to download:", "LabelNumberOfGuideDaysHelp": "Downloading more days worth of guide data provides the ability to schedule out further in advance and view more listings, but it will also take longer to download. Auto will choose based on the number of channels.", - "LabelOptionalNetworkPath": "(Optional) Shared network folder:", + "LabelOptionalNetworkPath": "Shared network folder:", "LabelOptionalNetworkPathHelp": "If this folder is shared on your network, supplying the network share path can allow Jellyfin apps on other devices to access media files directly. For example, {0} or {1}.", "LabelOriginalAspectRatio": "Original aspect ratio:", "LabelOriginalTitle": "Original title:", @@ -836,7 +836,7 @@ "LabelSelectVersionToInstall": "Select version to install:", "LabelSendNotificationToUsers": "Send the notification to:", "LabelSerialNumber": "Serial number", - "LabelSeriesRecordingPath": "Series recording path (optional):", + "LabelSeriesRecordingPath": "Series recording path:", "LabelServerHost": "Host:", "LabelServerHostHelp": "192.168.1.100:8096 or https://myserver.com", "LabelServerName": "Server name:", @@ -1100,8 +1100,8 @@ "No": "No", "NoCreatedLibraries": "Seems like you haven't created any libraries yet. {0}Would you like to create one now?{1}", "NoNewDevicesFound": "No new devices found. To add a new tuner, close this dialog and enter the device information manually.", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "NoPluginConfigurationMessage": "This plugin has no settings to configure.", + "MessageNoNextUpItems": "None found. Start watching your shows!", + "MessageNoPluginConfiguration": "This plugin has no settings to configure.", "NoSubtitleSearchResultsFound": "No results found.", "NoSubtitles": "None", "NoSubtitlesHelp": "Subtitles will not be loaded by default. They can still be turned on manually during playback.", @@ -1275,7 +1275,7 @@ "PasswordMatchError": "Password and password confirmation must match.", "PasswordResetComplete": "The password has been reset.", "PasswordResetConfirmation": "Are you sure you wish to reset the password?", - "PasswordResetHeader": "Reset Password", + "HeaderResetPassword": "Reset Password", "PasswordResetProviderHelp": "Choose a Password Reset Provider to be used when this user requests a password reset", "PasswordSaved": "Password saved.", "People": "People", @@ -1301,7 +1301,7 @@ "PleaseEnterNameOrId": "Please enter a name or an external ID.", "PleaseRestartServerName": "Please restart Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Please select at least two items.", - "PluginInstalledMessage": "The plugin has been successfully installed. Jellyfin Server will need to be restarted for changes to take effect.", + "MessagePluginInstalled": "The plugin has been successfully installed. Jellyfin Server will need to be restarted for changes to take effect.", "PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames", "PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "This uses the episode information from the embedded metadata if available.", @@ -1326,7 +1326,7 @@ "Record": "Record", "RecordSeries": "Record series", "RecordingCancelled": "Recording cancelled.", - "RecordingPathChangeMessage": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired.", + "ChangeRecordingPath": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired.", "RecordingScheduled": "Recording scheduled.", "Recordings": "Recordings", "Refresh": "Refresh", @@ -1366,7 +1366,7 @@ "SearchResults": "Search Results", "Season": "Season", "SelectAdminUsername": "Please select a username for the admin account.", - "SendMessage": "Send message", + "Send": "Send ", "Series": "Series", "SeriesCancelled": "Series cancelled.", "SeriesDisplayOrderHelp": "Order episodes by air date, DVD order, or absolute numbering.", @@ -1495,7 +1495,7 @@ "TvLibraryHelp": "Review the {0}TV naming guide{1}.", "Uniform": "Uniform", "UninstallPluginConfirmation": "Are you sure you wish to uninstall {0}?", - "UninstallPluginHeader": "Uninstall Plugin", + "HeaderUninstallPlugin": "Uninstall Plugin", "Unmute": "Unmute", "Unplayed": "Unplayed", "Unrated": "Unrated", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index e64f1e7c6e..23ce44b56a 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -97,7 +97,7 @@ "Box": "Caja", "BoxRear": "Caja (lado opuesto)", "Browse": "Explorar", - "BrowsePluginCatalogMessage": "Explore nuestro catálogo de complementos para ver los complementos disponibles.", + "MessageBrowsePluginCatalog": "Explore nuestro catálogo de complementos para ver los complementos disponibles.", "BurnSubtitlesHelp": "Determina si el servidor debe grabarse en subtítulos al transcodificar videos. Evitar esto mejorará en gran medida el rendimiento. Seleccione Automático para grabar formatos basados en imágenes (VOBSUB, PGS, SUB, IDX, ...) y ciertos subtítulos ASS o SSA.", "ButtonAdd": "Agregar", "ButtonAddMediaLibrary": "Agregar biblioteca de medios", @@ -201,7 +201,7 @@ "DatePlayed": "Fecha de reproducción", "DeathDateValue": "Muerte: {0}", "Default": "Predeterminado", - "DefaultErrorMessage": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.", + "MessageDefaultError": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.", "DefaultMetadataLangaugeDescription": "Estos son tus predeterminados y pueden ser personalizados por librería únicamente.", "Delete": "Borrar", "DeleteDeviceConfirmation": "Estas seguro que quieres borrar este dispositivo? Este va a volver a aparecer cuando una persona se registre.", @@ -271,7 +271,7 @@ "ErrorAddingXmlTvFile": "Ocurrió un error al acceder al archivo de XmlTV. Por favor asegúrate de que el archivo existe e intenta de nuevo.", "ErrorDeletingItem": "Ocurrió un error al eliminar el ítem del servidor Jellyfin. Por favor verifica que el servidor Jellyfin tiene permiso de escritura a la carpeta de medios e intenta de nuevo.", "ErrorGettingTvLineups": "Ocurrió un error al descargar la guía de programación de TV. Por favor asegúrate que tu información es correcta e intenta de nuevo.", - "ErrorMessageStartHourGreaterThanEnd": "La hora de fin tiene que ser mayor que la de inicio.", + "ErrorStartHourGreaterThanEnd": "La hora de fin tiene que ser mayor que la de inicio.", "ErrorPleaseSelectLineup": "Por favor selecciona un alineamiento e intenta de nuevo. Si no existen alineamientos disponibles, asegúrate de que tu nombre de usuario, contraseña y código postal son correctos.", "ErrorSavingTvProvider": "Ocurrió un error al guardar el proveedor de TV. Por favor asegúrate de que está disponible e intenta de nuevo.", "EveryNDays": "Cada {0} días", @@ -918,8 +918,8 @@ "NoSubtitlesHelp": "Los subtítulos no se cargarán de manera predeterminada. Todavía se pueden activar manualmente durante la reproducción.", "NoSubtitles": "Ninguno", "NoSubtitleSearchResultsFound": "No se han encontrado resultados.", - "NoPluginConfigurationMessage": "Este complemento no tiene opciones para configurar.", - "NoNextUpItemsMessage": "Nada encontrado. ¡Comienza a ver tus shows!", + "MessageNoPluginConfiguration": "Este complemento no tiene opciones para configurar.", + "MessageNoNextUpItems": "Nada encontrado. ¡Comienza a ver tus shows!", "NoNewDevicesFound": "No se encontraron nuevos dispositivos. Para agregar un nuevo sintonizador, cierre este cuadro de diálogo e ingrese la información del dispositivo manualmente.", "NoCreatedLibraries": "Parece que todavía no has creado ninguna biblioteca. {0}¿Te gustaría crear una ahora?{1}", "No": "No", @@ -1208,7 +1208,7 @@ "Refresh": "Actualizar", "Recordings": "Grabaciones", "RecordingScheduled": "Grabación programada.", - "RecordingPathChangeMessage": "Cambiar su carpeta de grabación no migrará las grabaciones existentes de la ubicación anterior a la nueva. Tendrá que moverlos manualmente si lo desea.", + "MessageChangeRecordingPath": "Cambiar su carpeta de grabación no migrará las grabaciones existentes de la ubicación anterior a la nueva. Tendrá que moverlos manualmente si lo desea.", "RecordingCancelled": "Grabación cancelada.", "RecordSeries": "Grabar series", "Record": "Grabar", @@ -1232,7 +1232,7 @@ "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Esto usa la información de los metadatos incrustados del capítulo si está disponible.", "PreferEmbeddedTitlesOverFileNamesHelp": "Esto determina el título de visualización predeterminado cuando no hay metadatos de Internet o metadatos locales disponibles.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incrustados sobre nombres de archivo", - "PluginInstalledMessage": "El complemento se ha instalado correctamente. El servidor Jellyfin deberá reiniciarse para que los cambios surtan efecto.", + "MessagePluginInstalled": "El complemento se ha instalado correctamente. El servidor Jellyfin deberá reiniciarse para que los cambios surtan efecto.", "PleaseSelectTwoItems": "Seleccione al menos dos elementos.", "PleaseRestartServerName": "Reinicie el servidor Jellyfin - {0}.", "PleaseEnterNameOrId": "Por favor, introduzca un nombre o una ID externa.", @@ -1256,7 +1256,7 @@ "People": "Personas", "PasswordSaved": "Contraseña guardada.", "PasswordResetProviderHelp": "Elija un proveedor de restablecimiento de contraseña para usar cuando este usuario solicite un restablecimiento de contraseña", - "PasswordResetHeader": "Restablecer contraseña", + "HeaderResetPassword": "Restablecer contraseña", "PasswordResetConfirmation": "¿Estás seguro de que deseas restablecer la contraseña?", "PasswordResetComplete": "La contraseña ha sido restablecida.", "PasswordMatchError": "La contraseña y la confirmación de la contraseña deben coincidir.", @@ -1412,7 +1412,7 @@ "Unrated": "Sin calificación", "Unplayed": "No reproducido", "Unmute": "Dejar de silenciar", - "UninstallPluginHeader": "Desinstalar complemento", + "HeaderUninstallPlugin": "Desinstalar complemento", "UninstallPluginConfirmation": "¿Estás seguro de que deseas desinstalar {0}?", "Uniform": "Uniforme", "TvLibraryHelp": "Revise la {0}guía de nombres de TV{1}.", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 5500a26ce6..af2e2b5d4b 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -50,7 +50,7 @@ "Box": "Caja", "BoxRear": "Caja (parte trasera)", "Browse": "Explorar", - "BrowsePluginCatalogMessage": "Explora nuestro catálogo de complementos para ver los complementos disponibles.", + "MessageBrowsePluginCatalog": "Explora nuestro catálogo de complementos para ver los complementos disponibles.", "BurnSubtitlesHelp": "Determina si el servidor debería quemar los subtítulos al transcodificar videos. Evitar esto mejorará altamente el rendimiento del servidor. Seleccione Auto para grabar formatos basados en imágenes (VOBSUB, PGS, SUB, IDX...) y ciertos subtítulos ASS o SSA.", "ButtonAdd": "Agregar", "ButtonAddMediaLibrary": "Agregar biblioteca de medios", @@ -156,7 +156,7 @@ "DatePlayed": "Fecha de reproducción", "DeathDateValue": "Falleció: {0}", "Default": "Por defecto", - "DefaultErrorMessage": "Ha ocurrido un error al procesar la solicitud. Por favor, inténtalo de nuevo más tarde.", + "MessageDefaultError": "Ha ocurrido un error al procesar la solicitud. Por favor, inténtalo de nuevo más tarde.", "DefaultMetadataLangaugeDescription": "Estos son sus valores por defecto y pueden ser personalizados en cada biblioteca.", "DefaultSubtitlesHelp": "Los subtítulos se cargan basados en los indicadores «por defecto» y «forzado» incluidos en los metadatos. Las preferencias de idioma son consideradas cuando hay múltiples opciones disponibles.", "Delete": "Eliminar", @@ -224,7 +224,7 @@ "ErrorAddingXmlTvFile": "Hubo un error accediendo al archivo XMLTV. Por favor, asegúrate de que el archivo existe e inténtalo de nuevo.", "ErrorDeletingItem": "Hubo un error eliminando el elemento del servidor Jellyfin. Por favor, verifica que el servidor Jellyfin tiene permisos de escritura en la carpeta del medio e inténtalo de nuevo.", "ErrorGettingTvLineups": "Hubo un error al descargar la programación de TV. Por favor, asegúrate de que tu información sea correcta e inténtalo de nuevo.", - "ErrorMessageStartHourGreaterThanEnd": "La hora de finalización debe ser mayor que la hora de inicio.", + "ErrorStartHourGreaterThanEnd": "La hora de finalización debe ser mayor que la hora de inicio.", "ErrorPleaseSelectLineup": "Por favor, selecciona una programación e inténtalo de nuevo. Si no hay disponible ninguna, entonces, por favor, verifica que tu nombre de usuario, contraseña, y código postal sean correctos.", "ErrorSavingTvProvider": "Hubo un error al guardar el proveedor de TV. Por favor, asegúrate de que sea accesible e inténtalo de nuevo.", "EveryNDays": "Cada {0} días", @@ -934,8 +934,8 @@ "Next": "Siguiente", "NextUp": "A continuación", "NoNewDevicesFound": "No se encontraron nuevos dispositivos. Para agregar un sintonizador nuevo, cierra este diálogo e introduce la información del dispositivo manualmente.", - "NoNextUpItemsMessage": "No se encontró nada. ¡Comienza a ver tus programas!", - "NoPluginConfigurationMessage": "Este complemento no tiene configuraciones disponibles.", + "MessageNoNextUpItems": "No se encontró nada. ¡Comienza a ver tus programas!", + "MessageNoPluginConfiguration": "Este complemento no tiene configuraciones disponibles.", "NoSubtitleSearchResultsFound": "No se encontraron resultados.", "NoSubtitles": "Ninguno", "NoSubtitlesHelp": "Los subtítulos no serán cargados por defecto. Pueden ser activados manualmente durante la reproducción.", @@ -1087,7 +1087,7 @@ "PasswordMatchError": "La contraseña y la confirmación de la contraseña deben coincidir.", "PasswordResetComplete": "La contraseña ha sido restablecida.", "PasswordResetConfirmation": "¿Estás seguro de querer restablecer la contraseña?", - "PasswordResetHeader": "Restablecer contraseña", + "HeaderResetPassword": "Restablecer contraseña", "PasswordSaved": "Contraseña guardada.", "People": "Personas", "PerfectMatch": "Coincidencia perfecta", @@ -1109,7 +1109,7 @@ "PleaseEnterNameOrId": "Por favor, introduce un nombre o ID externo.", "PleaseRestartServerName": "Por favor, reinicia el servidor Jellyfin - {0}.", "PleaseSelectTwoItems": "Por favor, selecciona al menos dos elementos.", - "PluginInstalledMessage": "El complemento ha sido instalado con éxito. El servidor Jellyfin necesitará ser reiniciado para que los cambios surtan efecto.", + "MessagePluginInstalled": "El complemento ha sido instalado con éxito. El servidor Jellyfin necesitará ser reiniciado para que los cambios surtan efecto.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incrustados a los nombres de archivo", "PreferEmbeddedTitlesOverFileNamesHelp": "Esto determina el título mostrado por defecto cuando no hay disponibles metadatos en Internet o localmente.", "Premiere": "Estreno", @@ -1131,7 +1131,7 @@ "Record": "Grabar", "RecordSeries": "Grabar series", "RecordingCancelled": "Grabación cancelada.", - "RecordingPathChangeMessage": "Cambiar la carpeta de grabaciones no moverá las grabaciones existentes de la antigua ubicación a la nueva. Necesitan moverse manualmente si se desea.", + "MessageChangeRecordingPath": "Cambiar la carpeta de grabaciones no moverá las grabaciones existentes de la antigua ubicación a la nueva. Necesitan moverse manualmente si se desea.", "RecordingScheduled": "Grabación programada.", "Recordings": "Grabaciones", "Refresh": "Actualizar", @@ -1281,7 +1281,7 @@ "TvLibraryHelp": "Revisa la {0}guía de nombrado de series de TV{1}.", "Uniform": "Uniforme", "UninstallPluginConfirmation": "¿Estás seguro de querer desinstalar {0}?", - "UninstallPluginHeader": "Desinstalar complemento", + "HeaderUninstallPlugin": "Desinstalar complemento", "Unmute": "Activar sonido", "Unplayed": "No reproducido", "Unrated": "Sin clasificar", diff --git a/src/strings/es.json b/src/strings/es.json index 23bc5c9330..45c9b1f452 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -40,7 +40,7 @@ "Box": "Caja", "BoxRear": "Caja (trasera)", "Browse": "Explorar", - "BrowsePluginCatalogMessage": "Explore el catálogo de extensiones para ver las extensiones disponibles.", + "MessageBrowsePluginCatalog": "Explore el catálogo de extensiones para ver las extensiones disponibles.", "ButtonAdd": "Añadir", "ButtonAddMediaLibrary": "Añadir biblioteca de medios", "ButtonAddScheduledTaskTrigger": "Agregar Activador", @@ -138,7 +138,7 @@ "CustomDlnaProfilesHelp": "Crear un perfil personalizado para un nuevo dispositivo o reemplazar un perfil del sistema.", "DeathDateValue": "Murió: {0}", "Default": "Por defecto", - "DefaultErrorMessage": "Ha habido un error procesando la solicitud. Por favor inténtalo más tarde.", + "MessageDefaultError": "Ha habido un error procesando la solicitud. Por favor inténtalo más tarde.", "DefaultMetadataLangaugeDescription": "Estos son tus ajustes y se pueden personalizar para cada biblioteca.", "DefaultSubtitlesHelp": "Los subtítulos que se utilizarán dependerán de como estén etiquetadas las pistas de los archivos (si \"por defecto\" o \"forzado\"). Los ajustes de idioma se tienen en cuenta cuando hay varias opciones disponibles.", "Delete": "Borrar", @@ -185,7 +185,7 @@ "ErrorAddingTunerDevice": "Ha habido un error añadiendo el dispositivo sintonizador. Por favor, asegúrate de que es accesible e inténtalo otra vez.", "ErrorAddingXmlTvFile": "Ha sucedido un error accediendo al archivo XML. Por favor, asegúrate que el archivo existe e inténtalo de nuevo.", "ErrorGettingTvLineups": "Ha habido un error descargando la programación de TV. Por favor, asegúrese que la información es correcta e inténtalo de nuevo.", - "ErrorMessageStartHourGreaterThanEnd": "La hora de finalización tiene que ser mayor que la de inicio.", + "ErrorStartHourGreaterThanEnd": "La hora de finalización tiene que ser mayor que la de inicio.", "ErrorPleaseSelectLineup": "Por favor selecciona una alineación e inténtalo otra vez. Si no hay alineaciones disponibles, revisa que tu nombre de usuario, contraseña y código postal son correctos.", "ErrorSavingTvProvider": "Ha habido un error guardando el proveedor de TV. Por favor, asegúrate de que es accesible e inténtalo otra vez.", "EveryNDays": "Cada {0} días", @@ -854,8 +854,8 @@ "Next": "Siguiente", "NextUp": "Seguidamente", "NoNewDevicesFound": "No se han encontrado nuevos dispositivos. Para añadir un sintonizador cierra este diálogo e introduce la información del dispositivo manualmente.", - "NoNextUpItemsMessage": "Nada encontrado. ¡Comienza a ver tus programas!", - "NoPluginConfigurationMessage": "Este complemento no tiene opciones que configurar.", + "MessageNoNextUpItems": "Nada encontrado. ¡Comienza a ver tus programas!", + "MessageNoPluginConfiguration": "Este complemento no tiene opciones que configurar.", "NoSubtitleSearchResultsFound": "No se han encontrado resultados.", "NoSubtitles": "Sin subtítulos", "NoSubtitlesHelp": "Los subtítulos no se cargarán de forma predeterminada. Tienen que ser activados manualmente durante la reproducción.", @@ -1000,7 +1000,7 @@ "PasswordMatchError": "La contraseña y la confirmación de la contraseña deben de ser iguales.", "PasswordResetComplete": "La contraseña se ha restablecido.", "PasswordResetConfirmation": "¿Esta seguro de que desea restablecer la contraseña?", - "PasswordResetHeader": "Restablecer contraseña", + "HeaderResetPassword": "Restablecer contraseña", "PasswordSaved": "Contraseña guardada.", "People": "Gente", "PinCodeResetComplete": "El código PIN se ha restablecido.", @@ -1017,7 +1017,7 @@ "PleaseEnterNameOrId": "Introduzca un nombre o un identificador externo.", "PleaseRestartServerName": "Por favor, reinicie el Servidor de Jellyfin - {0}.", "PleaseSelectTwoItems": "Seleccione al menos dos elementos.", - "PluginInstalledMessage": "El complemento se ha instalado correctamente. El servidor Jellyfin deberá reiniciarse para que los cambios surjan efecto.", + "MessagePluginInstalled": "El complemento se ha instalado correctamente. El servidor Jellyfin deberá reiniciarse para que los cambios surjan efecto.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incrustados sobre los nombres de archivo", "PreferEmbeddedTitlesOverFileNamesHelp": "Esto determina el título que se utilizará cuando un elemento no tenga etiquetas ni estas se hayan podido descargar de Internet.", "Premieres": "Estrenos", @@ -1037,7 +1037,7 @@ "Record": "Grabar", "RecordSeries": "Grabar serie", "RecordingCancelled": "Grabación cancelada.", - "RecordingPathChangeMessage": "Cambiar la carpeta de grabación no migrará las grabaciones existentes de la ubicación antigua a la nueva. Tendrá que moverlos manualmente si lo desea.", + "MessageChangeRecordingPath": "Cambiar la carpeta de grabación no migrará las grabaciones existentes de la ubicación antigua a la nueva. Tendrá que moverlos manualmente si lo desea.", "RecordingScheduled": "Grabación programada.", "Recordings": "Grabaciones", "Refresh": "Refrescar", @@ -1169,7 +1169,7 @@ "Tuesday": "Martes", "TvLibraryHelp": "Revisar la {0}guía de nombres de los programas de TV{1}.", "UninstallPluginConfirmation": "¿Esta seguro que desea desinstalar {0}?", - "UninstallPluginHeader": "Desinstalar complemento", + "HeaderUninstallPlugin": "Desinstalar complemento", "Unmute": "Activar audio", "Unrated": "Sin clasificar", "Up": "Arriba", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 2e02dd6b3d..71ae83d24f 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -114,7 +114,7 @@ "Unrated": "Sin clasificar", "Unplayed": "No reproducido", "Unmute": "Activar sonido", - "UninstallPluginHeader": "Desinstalar complemento", + "HeaderUninstallPlugin": "Desinstalar complemento", "UninstallPluginConfirmation": "¿Estás seguro de querer desinstalar {0}?", "Uniform": "Uniforme", "TvLibraryHelp": "Revisa la {0}guía de nombrado de series de TV{1}.", @@ -306,8 +306,8 @@ "NoSubtitlesHelp": "Los subtítulos no serán cargados por defecto. Pueden ser activados manualmente durante la reproducción.", "NoSubtitles": "Ninguno", "NoSubtitleSearchResultsFound": "No se encontraron resultados.", - "NoPluginConfigurationMessage": "Este complemento no tiene configuraciones disponibles.", - "NoNextUpItemsMessage": "No se encontró nada. ¡Comienza a ver tus programas!", + "MessageNoPluginConfiguration": "Este complemento no tiene configuraciones disponibles.", + "MessageNoNextUpItems": "No se encontró nada. ¡Comienza a ver tus programas!", "NoNewDevicesFound": "No se encontraron nuevos dispositivos. Para agregar un sintonizador nuevo, cierra este diálogo e introduce la información del dispositivo manualmente.", "NoCreatedLibraries": "Parece que no has creado ninguna biblioteca todavía. {0}¿Quisieras crear una ahora?{1}", "No": "No", @@ -580,7 +580,7 @@ "Refresh": "Actualizar", "Recordings": "Grabaciones", "RecordingScheduled": "Grabación programada.", - "RecordingPathChangeMessage": "Cambiar la carpeta de grabaciones no moverá las grabaciones existentes de la antigua ubicación a la nueva. Necesitan moverse manualmente si se desea.", + "MessageChangeRecordingPath": "Cambiar la carpeta de grabaciones no moverá las grabaciones existentes de la antigua ubicación a la nueva. Necesitan moverse manualmente si se desea.", "RecordingCancelled": "Grabación cancelada.", "RecordSeries": "Grabar series", "Record": "Grabar", @@ -604,7 +604,7 @@ "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Esto utiliza la información del episodio desde los metadatos incrustados si están disponibles.", "PreferEmbeddedTitlesOverFileNamesHelp": "Esto determina el título mostrado por defecto cuando no hay disponibles metadatos en Internet o localmente.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incrustados a los nombres de archivo", - "PluginInstalledMessage": "El complemento ha sido instalado con éxito. El servidor Jellyfin necesitará ser reiniciado para que los cambios surtan efecto.", + "MessagePluginInstalled": "El complemento ha sido instalado con éxito. El servidor Jellyfin necesitará ser reiniciado para que los cambios surtan efecto.", "PleaseSelectTwoItems": "Por favor, selecciona al menos dos elementos.", "PleaseRestartServerName": "Por favor, reinicia el servidor Jellyfin - {0}.", "PleaseEnterNameOrId": "Por favor, introduce un nombre o ID externo.", @@ -628,7 +628,7 @@ "People": "Personas", "PasswordSaved": "Contraseña guardada.", "PasswordResetProviderHelp": "Elige un proveedor de restablecimiento de contraseña para usar cuando este usuario solicite un restablecimiento de contraseña", - "PasswordResetHeader": "Restablecer contraseña", + "HeaderResetPassword": "Restablecer contraseña", "PasswordResetConfirmation": "¿Estás seguro de querer restablecer la contraseña?", "PasswordResetComplete": "La contraseña ha sido restablecida.", "PasswordMatchError": "La contraseña y la confirmación de la contraseña deben coincidir.", @@ -1303,7 +1303,7 @@ "EveryNDays": "Cada {0} días", "ErrorSavingTvProvider": "Hubo un error al guardar el proveedor de TV. Por favor, asegúrate de que sea accesible e inténtalo de nuevo.", "ErrorPleaseSelectLineup": "Por favor, selecciona una programación e inténtalo de nuevo. Si no hay disponible ninguna, entonces, por favor, verifica que tu nombre de usuario, contraseña, y código postal sean correctos.", - "ErrorMessageStartHourGreaterThanEnd": "La hora de finalización debe ser mayor que la hora de inicio.", + "ErrorStartHourGreaterThanEnd": "La hora de finalización debe ser mayor que la hora de inicio.", "ErrorGettingTvLineups": "Hubo un error al descargar la programación de TV. Por favor, asegúrate de que tu información sea correcta e inténtalo de nuevo.", "ErrorDeletingItem": "Hubo un error eliminando el elemento del servidor Jellyfin. Por favor, verifica que el servidor Jellyfin tiene permisos de escritura en la carpeta del medio e inténtalo de nuevo.", "ErrorAddingXmlTvFile": "Hubo un error accediendo al archivo XMLTV. Por favor, asegúrate de que el archivo existe e inténtalo de nuevo.", @@ -1374,7 +1374,7 @@ "DeinterlaceMethodHelp": "Seleccione el método de desentrelazado que se usará al transcodificar contenido entrelazado.", "DefaultSubtitlesHelp": "Los subtítulos se cargan basados en los indicadores «por defecto» y «forzado» incluidos en los metadatos. Las preferencias de idioma son consideradas cuando hay múltiples opciones disponibles.", "DefaultMetadataLangaugeDescription": "Estos son sus valores por defecto y pueden ser personalizados en cada biblioteca.", - "DefaultErrorMessage": "Ha ocurrido un error al procesar la solicitud. Por favor, inténtalo de nuevo más tarde.", + "MessageDefaultError": "Ha ocurrido un error al procesar la solicitud. Por favor, inténtalo de nuevo más tarde.", "Default": "Por defecto", "DeathDateValue": "Falleció: {0}", "DatePlayed": "Fecha de reproducción", @@ -1496,7 +1496,7 @@ "ButtonAddImage": "Agregar imagen", "ButtonAdd": "Agregar", "BurnSubtitlesHelp": "Determina si el servidor debería quemar los subtítulos al transcodificar videos. Evitar esto mejorará altamente el rendimiento del servidor. Seleccione Auto para grabar formatos basados en imágenes (VOBSUB, PGS, SUB, IDX...) y ciertos subtítulos ASS o SSA.", - "BrowsePluginCatalogMessage": "Explora nuestro catálogo de complementos para ver los complementos disponibles.", + "MessageBrowsePluginCatalog": "Explora nuestro catálogo de complementos para ver los complementos disponibles.", "Browse": "Explorar", "BoxRear": "Caja (parte trasera)", "Box": "Caja", diff --git a/src/strings/fa.json b/src/strings/fa.json index 3b3cb07e00..32e083685f 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -73,7 +73,7 @@ "MessagePleaseEnsureInternetMetadata": "لطفا مطمئن شوید دانلود متاداده از اینترنت فعال است.", "MoreUsersCanBeAddedLater": "بعدا میتوانید کاربران بیشتری را در داشبورد اضافه کنید.", "NextUp": "بعدی چیه", - "NoNextUpItemsMessage": "چیزی یافت نشد. دیدن سریال ها یتان را شروع کنید!", + "MessageNoNextUpItems": "چیزی یافت نشد. دیدن سریال ها یتان را شروع کنید!", "OptionAscending": "صعودی", "OptionDescending": "نزولی", "OptionDislikes": "پسندیده نشده ها", @@ -225,7 +225,7 @@ "AddToCollection": "افزودن به مجموعه", "ExitFullscreen": "خروج از تمام صفحه", "EveryNDays": "هر {0} روز", - "ErrorMessageStartHourGreaterThanEnd": "زمان پایان باید پس از زمان شروع باشد.", + "ErrorStartHourGreaterThanEnd": "زمان پایان باید پس از زمان شروع باشد.", "Episodes": "قسمت‌ها", "EndsAtValue": "تمام شده در {0}", "Ended": "تمام شده", @@ -272,7 +272,7 @@ "DeleteDeviceConfirmation": "آیا از حذف این دستگاه اطمینان دارید؟ هنگامی که یک کاربر دوباره با آن دستگاه وارد شود، دوباره نمایش داده می‌شود.", "Delete": "حذف", "DefaultMetadataLangaugeDescription": "این موارد پیشفرض‌های شماست و می‌توانید برای هر کتابخانه آن را شخصی سازی کنید.", - "DefaultErrorMessage": "خطایی در پردازش درخواست رخ داد. لطفا اندکی بعد دوباره تلاش کنید.", + "MessageDefaultError": "خطایی در پردازش درخواست رخ داد. لطفا اندکی بعد دوباره تلاش کنید.", "Default": "پیشفرض", "DeathDateValue": "تلف شد: {0}", "DatePlayed": "تاریخ پخش شده", @@ -312,7 +312,7 @@ "ButtonShutdown": "خاموش", "ButtonSelectDirectory": "انتخاب مسیر", "ButtonEditOtherUserPreferences": "نمایه، تصویر و ترجیحات شخصی این کاربر را ویرایش کنید.", - "BrowsePluginCatalogMessage": "برای مرور کردن افزونه‌های موجود، به فروشگاه افزونه‌های ما سر بزنید.", + "MessageBrowsePluginCatalog": "برای مرور کردن افزونه‌های موجود، به فروشگاه افزونه‌های ما سر بزنید.", "AuthProviderHelp": "ارائه دهنده تأیید اعتبار را انتخاب کنید تا برای تأیید اعتبار گذرواژه این کاربر استفاده شود.", "HeaderRecordingPostProcessing": "در حال ضبط پس پردازش", "HeaderRecordingOptions": "گزینه‌های ضبط", @@ -520,7 +520,7 @@ "Unrated": "بدون امتیاز", "Unplayed": "پخش نشده", "Unmute": "صدادار", - "UninstallPluginHeader": "حذف نصب افزونه", + "HeaderUninstallPlugin": "حذف نصب افزونه", "UninstallPluginConfirmation": "آیا اطمینان دارید که می‌خواهید {0} را حذف نصب کنید؟", "Uniform": "یکپارچه", "Tuesday": "سه‌شنبه", @@ -698,7 +698,7 @@ "MessageInvalidUser": "نام کاربری یا گذرواژه نامعتبر است. لطفا دوباره تلاش کنید.", "MessageInvalidForgotPasswordPin": "کد پین نامعتبر یا منقضی شده وارد شد. لطفا دوباره تلاش کنید.", "MessageInstallPluginFromApp": "این افزونه باید از داخل برنامه‌ای که قصد استفاده از آن را دارید نصب شود.", - "PasswordResetHeader": "بازنشانی گذرواژه", + "HeaderResetPassword": "بازنشانی گذرواژه", "PasswordResetConfirmation": "آیا واقعا تمایل به بازنشانی گذرواژه دارید؟", "PasswordResetComplete": "گذرواژه بازنشانی شد.", "PasswordMatchError": "گذرواژه و تکرار گذرواژه باید یکسان باشند.", @@ -743,7 +743,7 @@ "Refresh": "به‌روز‌رسانی", "Recordings": "ضبط شده ها", "RecordingScheduled": "ضبط برنامه ریزی شد.", - "RecordingPathChangeMessage": "با تغییر محل ذخیره فایل های ضبط شده، فایل های موجود به صورت خودکار منتقل نمی شوند. در صورت نیاز، شما باید خودتان این کار را انجام دهید.", + "MessageChangeRecordingPath": "با تغییر محل ذخیره فایل های ضبط شده، فایل های موجود به صورت خودکار منتقل نمی شوند. در صورت نیاز، شما باید خودتان این کار را انجام دهید.", "RecordingCancelled": "ضبط شدن لغو شد.", "RecordSeries": "ضبط کردن سریال ها", "Record": "ضبط کردن", @@ -767,7 +767,7 @@ "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "این از اطلاعات قسمت در فراداده های تعبیه شده در صورت موجود استفاده می کند.", "PreferEmbeddedTitlesOverFileNamesHelp": "این عنوان نمایش را به صورت پیش فرض تعیین می کند، زمانی که فراداده اینترنتی یا محلی موجود نباشند.", "PreferEmbeddedTitlesOverFileNames": "عنوان های تعبیه شده را به نام فایل ترجیح بده", - "PluginInstalledMessage": "افزونه با موفقیت نصب شد. برای اعمال تغییرات سرور جلیفین نیاز به بارگذاری مجدد دارد.", + "MessagePluginInstalled": "افزونه با موفقیت نصب شد. برای اعمال تغییرات سرور جلیفین نیاز به بارگذاری مجدد دارد.", "PleaseSelectTwoItems": "لطفا حداقل دو مورد را انتخاب کنید.", "PleaseRestartServerName": "لطفا سرور جلیفین را دوباره بارگذاری کنید - {0}.", "PleaseEnterNameOrId": "لطفا یک نام یا شناسه خارجی را وارد کنید.", @@ -797,7 +797,7 @@ "LaunchWebAppOnStartup": "نمای وب هنگامی که سرور آغاز به کار می‌کند باز بشود", "NoSubtitles": "خالی", "NoSubtitleSearchResultsFound": "نتیجه‌ای یافت نشد.", - "NoPluginConfigurationMessage": "این افزونه هیچ تنظیماتی برای پیکربندی ندارد.", + "MessageNoPluginConfiguration": "این افزونه هیچ تنظیماتی برای پیکربندی ندارد.", "No": "خیر", "Next": "بعدی", "News": "اخبار", diff --git a/src/strings/fi.json b/src/strings/fi.json index 657f1a4c32..147d501f46 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -1,5 +1,5 @@ { - "BrowsePluginCatalogMessage": "Selaa lisäosakuvastoamme katsoaksesi saatavilla olevia lisäosia.", + "MessageBrowsePluginCatalog": "Selaa lisäosakuvastoamme katsoaksesi saatavilla olevia lisäosia.", "ButtonAddUser": "Lisää Käyttäjä", "ButtonCancel": "Peruuta", "ButtonDeleteImage": "Poista Kuva", @@ -47,7 +47,7 @@ "TellUsAboutYourself": "Kerro meille itsestäsi", "ThisWizardWillGuideYou": "Tämä työkalu auttaa sinua asennusprosessin aikana. Valitse kieli aloittaaksesi.", "UninstallPluginConfirmation": "Oletko varma, että haluat poistaa {0}?", - "UninstallPluginHeader": "Poista Lisäosa", + "HeaderUninstallPlugin": "Poista Lisäosa", "Absolute": "Ehdoton", "Actor": "Näyttelijä", "Add": "Lisää", @@ -201,7 +201,7 @@ "DateAdded": "Lisäyspäivämäärä", "DatePlayed": "Toistopäivämäärä", "Default": "Oletus", - "DefaultErrorMessage": "Pyynnön käsittelyssä tapahtui virhe. Yritä myöhemmin uudelleen.", + "MessageDefaultError": "Pyynnön käsittelyssä tapahtui virhe. Yritä myöhemmin uudelleen.", "DefaultMetadataLangaugeDescription": "Nämä ovat sinun oletuksetasetukset ja niitä voidaan muokata kirjastokohtaisesti.", "DefaultSubtitlesHelp": "Tekstitykset ladataan pakotettu- ja oletusmäärityksien upotetun metadatan mukaan. Kieliasetukset otetaan huomioon, kun on enemmän kuin yksi tekstitys josta valita.", "DeleteDeviceConfirmation": "Oletko varma, että haluat positaa tämän laitteen? Se ilmaantuu uudelleen seuraavan kerran, kun jokin käyttäjä kirjautuu sillä.", @@ -303,7 +303,7 @@ "Play": "Toista", "PinCodeResetConfirmation": "Haluatko varmasti nollata PIN-koodin?", "People": "Ihmiset", - "PasswordResetHeader": "Nollaa salasana", + "HeaderResetPassword": "Nollaa salasana", "OriginalAirDateValue": "Alkuperäinen esityspäivä: {0}", "OptionWeekly": "Viikottainen", "OptionWeekends": "Viikonloput", @@ -831,7 +831,7 @@ "OnApplicationStartup": "Käynnistyksen yhteydessä", "NumLocationsValue": "{0} kansiota", "NoSubtitleSearchResultsFound": "Ei tuloksia.", - "NoPluginConfigurationMessage": "Tällä liitännäisellä ei ole asetuksia muokattavaksi.", + "MessageNoPluginConfiguration": "Tällä liitännäisellä ei ole asetuksia muokattavaksi.", "NoCreatedLibraries": "Vaikuttaa siltä, ettet ole luonut vielä yhtään kirjastoa. {0} Haluaisitko luoda sellaisen nyt?{1}", "No": "Ei", "NextUp": "Seuraavana", @@ -1216,7 +1216,7 @@ "FolderTypeUnset": "Sekalainen sisältö", "FetchingData": "Noudetaan lisätietoja", "Features": "Ominaisuudet", - "ErrorMessageStartHourGreaterThanEnd": "Loppumisajan on oltava myöhemmin kuin aloitusaika.", + "ErrorStartHourGreaterThanEnd": "Loppumisajan on oltava myöhemmin kuin aloitusaika.", "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.", diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index 00bc7320cd..2e3b99b946 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -138,7 +138,7 @@ "Box": "Boîtier", "BoxRear": "Dos de boîtier", "Browse": "Parcourir", - "BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", + "MessageBrowsePluginCatalog": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", "AllowHWTranscodingHelp": "Permets au syntonisateur 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.", "ButtonAdd": "Ajouter", diff --git a/src/strings/fr.json b/src/strings/fr.json index 6d56752211..c5ef0d5615 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -49,7 +49,7 @@ "Box": "Boîtier", "BoxRear": "Dos de boîtier", "Browse": "Parcourir", - "BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", + "MessageBrowsePluginCatalog": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", "BurnSubtitlesHelp": "Détermine si le serveur doit incruster les sous-titres lors du transcodage de la vidéo. Les performances seront grandement améliorées sans incrustation. Sélectionnez Auto pour incruster par image les formats (VOBSUB, PGS, SUB, IDX etc) et certains sous-titres ASS ou SSA.", "ButtonAdd": "Ajouter", "ButtonAddMediaLibrary": "Ajouter une médiathèque", @@ -155,7 +155,7 @@ "DatePlayed": "Date de lecture", "DeathDateValue": "Décédé(e) le {0}", "Default": "Par défaut", - "DefaultErrorMessage": "Il y a eu une erreur lors de l'exécution de la requête. Veuillez réessayer plus tard.", + "MessageDefaultError": "Il y a eu une erreur lors de l'exécution de la requête. Veuillez réessayer plus tard.", "DefaultMetadataLangaugeDescription": "Ce sont vos réglages par défaut. Ils peuvent être personnalisés pour chaque médiathèque.", "DefaultSubtitlesHelp": "Les sous-titres seront chargés selon les marqueurs par défaut et forcé dans les métadonnées intégrées. Les langues préférées seront utilisées quand plusieurs options seront disponibles.", "Delete": "Supprimer", @@ -224,7 +224,7 @@ "ErrorAddingXmlTvFile": "Une erreur est survenue lors de l'accès au fichier XMLTV. Assurez-vous que le fichier existe et réessayez.", "ErrorDeletingItem": "Une erreur s'est produite lors de la suppression de l'élément du serveur Jellyfin. Vérifiez que le serveur Jellyfin a un accès en écriture au dossier multimédia et réessayez.", "ErrorGettingTvLineups": "Une erreur est survenue pendant le téléchargement des programmes TV. Assurez-vous que vos informations sont correctes et réessayez.", - "ErrorMessageStartHourGreaterThanEnd": "La date de fin doit être postérieure à la date de début.", + "ErrorStartHourGreaterThanEnd": "La date de fin doit être postérieure à la date de début.", "ErrorPleaseSelectLineup": "Veuillez sélectionner une programmation et réessayer. Si aucune programmation n'est disponible, veuillez vérifier que vos identifiant, mot de passe et code postal sont corrects.", "ErrorSavingTvProvider": "Une erreur est survenue lors de la sauvegarde du fournisseur TV. Assurez-vous qu'il est accessible et réessayez.", "EveryNDays": "Tous les {0} jours", @@ -932,8 +932,8 @@ "NextUp": "A Suivre", "No": "Non", "NoNewDevicesFound": "Aucun nouvel appareil détecté. Pour en ajouter un, fermez cette fenêtre et saisissez les informations de l'appareil manuellement.", - "NoNextUpItemsMessage": "Aucun élément trouvé. Commencez à regarder vos émissions !", - "NoPluginConfigurationMessage": "Cette extension n'a aucun paramètre à configurer.", + "MessageNoNextUpItems": "Aucun élément trouvé. Commencez à regarder vos émissions !", + "MessageNoPluginConfiguration": "Cette extension n'a aucun paramètre à configurer.", "NoSubtitleSearchResultsFound": "Aucun résultat trouvé.", "NoSubtitles": "Pas de sous-titres", "NoSubtitlesHelp": "Les sous-titres ne seront pas chargés par défaut. Ils peuvent toujours être activés manuellement pendant la lecture.", @@ -1082,7 +1082,7 @@ "PasswordMatchError": "Le mot de passe et sa confirmation doivent correspondre.", "PasswordResetComplete": "Le mot de passe a été réinitialisé.", "PasswordResetConfirmation": "Êtes-vous sûr de vouloir réinitialiser le mot de passe ?", - "PasswordResetHeader": "Réinitialiser le mot de passe", + "HeaderResetPassword": "Réinitialiser le mot de passe", "PasswordSaved": "Mot de passe sauvegardé.", "People": "Personnes", "PerfectMatch": "Correspondance parfaite", @@ -1103,7 +1103,7 @@ "PleaseEnterNameOrId": "Veuillez saisir un nom ou un identifiant externe.", "PleaseRestartServerName": "Veuillez redémarrer le serveur Jellyfin - {0}.", "PleaseSelectTwoItems": "Veuillez sélectionner au moins deux éléments.", - "PluginInstalledMessage": "Cette extension a été installée avec succès. Le serveur Jellyfin doit être redémarré afin que les modifications soient prises en compte.", + "MessagePluginInstalled": "Cette extension a été installée avec succès. Le serveur Jellyfin doit être redémarré afin que les modifications soient prises en compte.", "PreferEmbeddedTitlesOverFileNames": "Préférer les titres intégrés aux médias aux noms des fichiers", "PreferEmbeddedTitlesOverFileNamesHelp": "Cela détermine le titre affiché par défaut quand il n'y a pas de métadonnées en ligne ou locales disponibles.", "Premieres": "Inédits", @@ -1124,7 +1124,7 @@ "Record": "Enregistrer", "RecordSeries": "Enregistrer la série", "RecordingCancelled": "Enregistrement annulé.", - "RecordingPathChangeMessage": "Modifier votre dossier d'enregistrement ne déplacera pas les enregistrements existants de l'ancien emplacement vers le nouveau. Vous devrez les déplacer manuellement si vous le souhaitez.", + "MessageChangeRecordingPath": "Modifier votre dossier d'enregistrement ne déplacera pas les enregistrements existants de l'ancien emplacement vers le nouveau. Vous devrez les déplacer manuellement si vous le souhaitez.", "RecordingScheduled": "Enregistrement planifié.", "Recordings": "Enregistrements", "Refresh": "Actualiser", @@ -1265,7 +1265,7 @@ "TvLibraryHelp": "Consultez le {0}guide de nommage des émissions{1}.", "Uniform": "Uniforme", "UninstallPluginConfirmation": "Êtes-vous sûr de vouloir désinstaller {0} ?", - "UninstallPluginHeader": "Désinstaller Plug-in", + "HeaderUninstallPlugin": "Désinstaller Plug-in", "Unmute": "Rétablir le son", "Unplayed": "Non lu", "Unrated": "Non noté", diff --git a/src/strings/gsw.json b/src/strings/gsw.json index dad75ae57d..231cb131e5 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -58,7 +58,7 @@ "Monday": "Mäntig", "MoreUsersCanBeAddedLater": "Meh User chönt spöter im Dashboard hinzuegfüegt werde.", "NewCollectionNameExample": "Biispell: Star Wars Sammlig", - "NoNextUpItemsMessage": "Nix da. Fang mal a Serie luege!", + "MessageNoNextUpItems": "Nix da. Fang mal a Serie luege!", "OptionAlbumArtist": "Album-Artist", "OptionAscending": "Ufstiigend", "OptionBluray": "BluRay", diff --git a/src/strings/he.json b/src/strings/he.json index 4288b04762..7624080423 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -15,7 +15,7 @@ "AttributeNew": "חדש", "Backdrops": "תמונות רקע", "BirthLocation": "מיקום לידה", - "BrowsePluginCatalogMessage": "עבור לקטלוג התוספים לראות אילו זמינים.", + "MessageBrowsePluginCatalog": "עבור לקטלוג התוספים לראות אילו זמינים.", "ButtonAdd": "הוסף", "ButtonAddUser": "הוסף משתמש", "ButtonCancel": "בטל", @@ -53,7 +53,7 @@ "ConfirmDeletion": "אשר מחיקה", "Continuing": "ממשיך", "CustomDlnaProfilesHelp": "צור פרופיל מותאם אישית למכשיר חדש או לעקיפת פרופיל מערכת.", - "DefaultErrorMessage": "אירעה שגיאה בעיבוד הבקשה. בבקשה נסה שוב מאוחר יותר.", + "MessageDefaultError": "אירעה שגיאה בעיבוד הבקשה. בבקשה נסה שוב מאוחר יותר.", "Delete": "מחק", "DeleteImage": "מחק תמונה", "DeleteImageConfirmation": "האם אתה בטוח שברצונך למחוק תמונה זו?", @@ -298,7 +298,7 @@ "NewEpisodes": "פרקים חדשים", "NewEpisodesOnly": "פרקים חדשים בלבד", "News": "חדשות", - "NoNextUpItemsMessage": "לא נמצא כלום. התחלת לצפות בסדרות שלך!", + "MessageNoNextUpItems": "לא נמצא כלום. התחלת לצפות בסדרות שלך!", "NoSubtitleSearchResultsFound": "לא נמצאו תוצאות.", "Option3D": "תלת מימד", "OptionAdminUsers": "מנהלים", @@ -484,7 +484,7 @@ "TrackCount": "שירים {0}", "Tuesday": "שלישי", "UninstallPluginConfirmation": "האם אתה בטוח שברצונך להסיר {0}?", - "UninstallPluginHeader": "הסר תוסף", + "HeaderUninstallPlugin": "הסר תוסף", "Unrated": "אין דירוג", "ValueAlbumCount": "{0} אלבומים", "ValueDiscNumber": "דיסק {0}", @@ -675,7 +675,7 @@ "ExtraLarge": "גדול מאוד", "ExitFullscreen": "צא ממסך מלא", "EveryNDays": "כל {0} ימים", - "ErrorMessageStartHourGreaterThanEnd": "שעת הסיום חייבת להיות לאחר שעת ההתחלה.", + "ErrorStartHourGreaterThanEnd": "שעת הסיום חייבת להיות לאחר שעת ההתחלה.", "Episodes": "פרקים", "EnableThemeSongsHelp": "נגן שירי פתיח ברגע בעת העיון בספרייה.", "ThemeSongs": "שירי פתיח", diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index 48b82c601f..7e9bb01563 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -114,7 +114,7 @@ "Album": "एल्बम", "AddItemToCollectionHelp": "उनके लिए खोज करके संग्रह में आइटम जोड़ें और उन्हें संग्रह में जोड़ने के लिए उनके राइट-क्लिक या टैप मेनू का उपयोग करें।", "ButtonSyncPlay": "SyncPlay", - "BrowsePluginCatalogMessage": "उपलब्ध प्लगिन्स देखने के लिए हमारे कैटलॉग को ब्राउज़ करें।", + "MessageBrowsePluginCatalog": "उपलब्ध प्लगिन्स देखने के लिए हमारे कैटलॉग को ब्राउज़ करें।", "Browse": "ब्राउज़", "BoxSet": "बॉक्स सेट", "BurnSubtitlesHelp": "निर्धारित करता है कि वीडियो ट्रांसकोडिंग करते समय सर्वर को उपशीर्षक बर्न-इन करना चाहिए। इससे बचने से प्रदर्शन में बहुत सुधार होगा। छवि आधारित उपशीर्षक (VOBSUB, PGS, SUB, IDX, …) एवं ASS अथवा SSA जैसे उपशीर्षक बर्न-इन करने के लिए ऑटो का चयन करें।" diff --git a/src/strings/hr.json b/src/strings/hr.json index db5c5499d2..50e8f7ffaa 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -16,7 +16,7 @@ "BirthDateValue": "Rođen: {0}", "BirthLocation": "Lokacija rođenja", "BirthPlaceValue": "Mjesto rođenja: {0}", - "BrowsePluginCatalogMessage": "Pregledajte dostupne dodatke u našem katalogu.", + "MessageBrowsePluginCatalog": "Pregledajte dostupne dodatke u našem katalogu.", "ButtonAdd": "Dodaj", "ButtonAddMediaLibrary": "Dodaj medijsku bibilioteku", "ButtonAddScheduledTaskTrigger": "Dodaj okidač", @@ -106,7 +106,7 @@ "Continuing": "Nastavlja se", "CustomDlnaProfilesHelp": "Kreiraj prilagođeni profili za novi uređaj ili doradi neki od sistemskih profila.", "DeathDateValue": "Umro: {0}", - "DefaultErrorMessage": "Došlo je do pogreške prilikom obrade zahtjeva. Molimo pokušajte ponovo kasnije.", + "MessageDefaultError": "Došlo je do pogreške prilikom obrade zahtjeva. Molimo pokušajte ponovo kasnije.", "Delete": "Izbriši", "DeleteDeviceConfirmation": "Jeste li sigurni da želite izbrisati ovaj uređaj? Pojavit će se sljedeći put kad se korisnik prijavi s njim.", "DeleteImage": "Izbriši sliku", @@ -133,7 +133,7 @@ "ErrorAddingMediaPathToVirtualFolder": "Došlo je do pogreške prilikom dodavanja putanje medija. Provjerite dali je putanja valjana i da proces Jellyfin Server-a ima pristup tom mjestu.", "ErrorAddingTunerDevice": "Došlo je do pogreške prilikom dodavanja uređaja TV/radio pretraživača. Provjerite da je dostupan i pokušajte ponovno.", "ErrorGettingTvLineups": "Došlo je do pogreške prilikom preuzimanja TV postave. Provjerite dali su vaše informacije točne i pokušajte ponovno.", - "ErrorMessageStartHourGreaterThanEnd": "Vrijeme završetka mora biti veće od početka.", + "ErrorStartHourGreaterThanEnd": "Vrijeme završetka mora biti veće od početka.", "ErrorPleaseSelectLineup": "Odaberite postavu i pokušajte ponovno. Ako niti jedna postava nije dostupna provjerite dali su korisničko ime, lozinka i poštanski broj točni.", "ErrorSavingTvProvider": "Došlo je do pogreške prilikom snimanja TV pružatelja. Provjerite da je dostupan i pokušajte ponovno.", "ExtractChapterImagesHelp": "Izdvajanje slika poglavlja omogućiti će klijentima prikaz grafičkih izbornika za odabir scena. Proces može biti spor, resursi intenzivno korišteni i može zahtijevati nekoliko gigabajta prostora. Ono se pokreće kad je otkriven video, a također i kao noćni zadatak. Raspored je podesiv u području rasporeda zadataka. Ne preporučuje se za pokretanje ovog zadatka tijekom sati čestog korištenja.", @@ -692,8 +692,8 @@ "NewEpisodes": "Nove epizode", "NewEpisodesOnly": "Samo nove epizode", "News": "Vijesti", - "NoNextUpItemsMessage": "Nije pronađeno. Krenite sa gledanjem vaše emisije!", - "NoPluginConfigurationMessage": "Ovaj dodatak nema postavke za podesiti.", + "MessageNoNextUpItems": "Nije pronađeno. Krenite sa gledanjem vaše emisije!", + "MessageNoPluginConfiguration": "Ovaj dodatak nema postavke za podesiti.", "NoSubtitleSearchResultsFound": "Nije ništa pronađeno.", "NumLocationsValue": "{0} mape", "OptionAdminUsers": "Administratori", @@ -828,7 +828,7 @@ "PasswordMatchError": "Lozinka i lozinka potvrde moraju biti identične.", "PasswordResetComplete": "Lozinka je resetirana.", "PasswordResetConfirmation": "Da li ste sigurni da želite resetirati lozinku?", - "PasswordResetHeader": "Poništi lozinku", + "HeaderResetPassword": "Poništi lozinku", "PasswordSaved": "Lozinka snimljena.", "People": "Ljudi", "PinCodeResetComplete": "PIN je resetiran.", @@ -855,7 +855,7 @@ "Record": "Snimi", "RecordSeries": "Snimi serije", "RecordingCancelled": "Snimka je otkazana.", - "RecordingPathChangeMessage": "Promjena mape za snimanje neće migrirati postojeće snimke iz stare lokacije na novu. Morat ćete ih pomicati ručno, ako to želite.", + "MessageChangeRecordingPath": "Promjena mape za snimanje neće migrirati postojeće snimke iz stare lokacije na novu. Morat ćete ih pomicati ručno, ako to želite.", "RecordingScheduled": "Snimka je zakazana.", "Refresh": "Osviježi", "RefreshDialogHelp": "Meta-podaci se osvježavaju na temelju postavki i internet usluga koje su omogućene u nadzornoj ploči Jellyfin Server-a.", @@ -963,7 +963,7 @@ "TrackCount": "{0} pjesme", "Tuesday": "Utorak", "UninstallPluginConfirmation": "Da li ste sigurni da želite ukloniti {0}?", - "UninstallPluginHeader": "Ukloni dodatak", + "HeaderUninstallPlugin": "Ukloni dodatak", "Unrated": "Neocijenjeno", "UserProfilesIntro": "Jellyfin uključuje ugrađenu podršku za korisničke profile što omogućuje svakom korisniku da ima svoje vlastite postavke prikaza, PlayStation i roditeljski nadzor.", "ValueAlbumCount": "{0} albuma", diff --git a/src/strings/hu.json b/src/strings/hu.json index ddf4cd9fe9..8dd52462aa 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -554,7 +554,7 @@ "TitlePlayback": "Lejátszás", "Tuesday": "Kedd", "UninstallPluginConfirmation": "Biztosan el szeretnéd távolítani a következőt: {0} ?", - "UninstallPluginHeader": "Bővítmény Eltávolítása", + "HeaderUninstallPlugin": "Bővítmény Eltávolítása", "Unmute": "Hangosít", "Up": "Fel", "ValueAudioCodec": "Audió Kódek: {0}", @@ -604,7 +604,7 @@ "Artists": "Előadók", "Blacklist": "Feketelista", "BookLibraryHelp": "Lehetőség van audió és hangoskönyvek visszajátszására. Nézd meg a {0} könyvelnevezési útmutatót {1}.", - "BrowsePluginCatalogMessage": "Böngéssz a Bővítmény katalógusunkban a rendelkezésre álló bővítmények megtekintéséhez.", + "MessageBrowsePluginCatalog": "Böngéssz a Bővítmény katalógusunkban a rendelkezésre álló bővítmények megtekintéséhez.", "AddItemToCollectionHelp": "Adj elemeket a gyűjteményekhez, ehhez keresed meg őket, majd kattints jobb egérgombbal, vagy kattints a menüre és add hozzá a gyűjteményhez.", "AllowedRemoteAddressesHelp": "Vesszővel válaszd el az IP-címek vagy IP / netmask címek listáját annak a hálózatnak amelyből távolról csatlakozhatnak. Ha üresen marad, az összes távoli cím megengedett.", "BoxRear": "Box (hátsó)", @@ -645,7 +645,7 @@ "CustomDlnaProfilesHelp": "Hozz létre egyéni profilt az új eszközhöz, vagy módosítsd a rendszerprofilt.", "DeathDateValue": "Elhunyt: {0}", "Default": "Alapértelmezett", - "DefaultErrorMessage": "Hiba történt a kérés feldolgozása során. Kérlek próbáld újra később.", + "MessageDefaultError": "Hiba történt a kérés feldolgozása során. Kérlek próbáld újra később.", "DefaultMetadataLangaugeDescription": "Ezek az alapértelmezettek, és könyvtáranként testre szabhatók.", "DeleteDeviceConfirmation": "Biztosan törölni szeretnéd ezt az eszközt? Legközelebb akkor jelenik meg, amikor a felhasználó bejelentkezik róla.", "DeleteImage": "Kép törlése", @@ -682,7 +682,7 @@ "ErrorAddingTunerDevice": "Hiba történt a tuner eszköz hozzáadásakor. Kérlek győződj meg róla, hogy az eszköz elérhető és próbáld meg újra.", "ErrorAddingXmlTvFile": "Hiba történt az XMLTV fájl elérésekor. Győződj meg róla, hogy a fájl létezik és próbáld meg újra.", "ErrorDeletingItem": "Hiba történt az elem törlése során a Jellyfin Szerverről. Ellenőrizd, hogy a Jellyfin Szerver rendelkezik-e írási jogosultsággal a média mappához és próbálja újra.", - "ErrorMessageStartHourGreaterThanEnd": "A befejezési időnek nagyobbnak kell lennie mint a kezdési idő.", + "ErrorStartHourGreaterThanEnd": "A befejezési időnek nagyobbnak kell lennie mint a kezdési idő.", "ErrorSavingTvProvider": "Hiba történt a TV szolgáltató mentésekor. Kérlek győződj meg róla, hogy elérhető és próbálkozz meg újra.", "EveryNDays": "Minden {0} nap", "ExtraLarge": "Extra NAGY", @@ -1069,8 +1069,8 @@ "NextUp": "Következik", "No": "Nem", "NoNewDevicesFound": "Nem található új eszköz. Új tuner hozzáadásához zárd be ezt a párbeszédablakot és add meg kézzel az eszköz adatait.", - "NoNextUpItemsMessage": "Nem található. Kezdj el nézni műsorokat!", - "NoPluginConfigurationMessage": "Ez a bővítmény nem rendelkezik konfigurációs beállításokkal.", + "MessageNoNextUpItems": "Nem található. Kezdj el nézni műsorokat!", + "MessageNoPluginConfiguration": "Ez a bővítmény nem rendelkezik konfigurációs beállításokkal.", "NoSubtitles": "Nincs", "NoSubtitlesHelp": "A feliratok alapértelmezés szerint nem lesznek betöltve. Lejátszás közben kézzel is bekapcsolhatók.", "Off": "Ki", @@ -1154,7 +1154,7 @@ "PasswordMatchError": "A jelszónak és a jelszó megerősítésének meg kell egyeznie.", "PasswordResetComplete": "A jelszó visszaállítva.", "PasswordResetConfirmation": "Biztosan vissza szeretnéd állítani a jelszót?", - "PasswordResetHeader": "Jelszó visszaállítása", + "HeaderResetPassword": "Jelszó visszaállítása", "PasswordSaved": "Jelszó mentve.", "PerfectMatch": "Tökéletes párosítás", "PictureInPicture": "Kép a képen", @@ -1167,7 +1167,7 @@ "PleaseConfirmPluginInstallation": "Kérlek kattints az OK gombra, hogy megerősítsd, hogy elolvastad a fentieket és folytatni kívánod a bővítmény telepítését.", "PleaseEnterNameOrId": "Kérlek adj meg egy nevet vagy egy külső ID-t.", "PleaseSelectTwoItems": "Kérlek válassz legalább két elemet.", - "PluginInstalledMessage": "A bővítmény sikeresen telepítve lett. A módosítások életbelépéséhez újra kell indítani a Jellyfin Szerver programot.", + "MessagePluginInstalled": "A bővítmény sikeresen telepítve lett. A módosítások életbelépéséhez újra kell indítani a Jellyfin Szerver programot.", "PreferEmbeddedTitlesOverFileNames": "A fájlnevek helyett előnyben részesíti a beépített címeket", "PreferEmbeddedTitlesOverFileNamesHelp": "Ez határozza meg az alapértelmezett megjelenítési címet, ha nem áll rendelkezésre internetes metaadat vagy helyi metaadat.", "Premiere": "Premier", @@ -1182,7 +1182,7 @@ "RecentlyWatched": "Nemrég nézett", "RecordSeries": "Sorozatok rögzítése", "RecordingCancelled": "Felvétel törölve.", - "RecordingPathChangeMessage": "A felvételi mappa módosítása nem fogja áthelyezni a meglévő felvételeket a régi helyről az újra. Szükség esetén manuálisan kell mozgatni őket.", + "MessageChangeRecordingPath": "A felvételi mappa módosítása nem fogja áthelyezni a meglévő felvételeket a régi helyről az újra. Szükség esetén manuálisan kell mozgatni őket.", "RecordingScheduled": "A rögzítés ütemezett.", "Recordings": "Felvételek", "RefreshQueued": "Frissítés sorba állítva.", diff --git a/src/strings/id.json b/src/strings/id.json index 9d347b7dcc..71641a435a 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -56,7 +56,7 @@ "Actor": "Aktor", "Delete": "Hapus", "DefaultMetadataLangaugeDescription": "Berikut ini adalah standar Anda dan dapat dikustomisasi pada tiap pustakanya.", - "DefaultErrorMessage": "Terdapat galat dalam memproses permintaan. Silakan coba kembali nanti.", + "MessageDefaultError": "Terdapat galat dalam memproses permintaan. Silakan coba kembali nanti.", "Default": "Standar", "DeathDateValue": "Meninggal: {0}", "DatePlayed": "Tanggal dimainkan", @@ -150,7 +150,7 @@ "ButtonAddMediaLibrary": "Tambah Pustaka Media", "ButtonAddImage": "Tamba gambar", "ButtonAdd": "Tambah", - "BrowsePluginCatalogMessage": "Jelajahi katalog plugin kamu untuk melihat plugin yang tersedia.", + "MessageBrowsePluginCatalog": "Jelajahi katalog plugin kamu untuk melihat plugin yang tersedia.", "Browse": "Jelajah", "BoxRear": "Kotak (belakang)", "Box": "Kotak", diff --git a/src/strings/is-is.json b/src/strings/is-is.json index fac582bad4..21dfe6a472 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -53,7 +53,7 @@ "Add": "Bæta við", "AddToCollection": "Bæta í safn", "AutoBasedOnLanguageSetting": "Sjálfkrafa (byggt á tungumálastillingum)", - "BrowsePluginCatalogMessage": "Skoða viðbætur sem eru í boði í viðbóta safninu okkar.", + "MessageBrowsePluginCatalog": "Skoða viðbætur sem eru í boði í viðbóta safninu okkar.", "BurnSubtitlesHelp": "Ákveður hvort þjónninn eigi að brenna textann inn í myndaskránna þegar verið er að umbreyta skrársniðinu. Með því að forðast að brenna inn textann er hægt að minnka álag á þjóninn (tölvuna). Veljið sjálfkrafa til þess að brenna texta byggðan á myndum (VOBSUB, PGS, SUB/IDX, ofl) og ákveðna ASS/SSA texta.", "OptionSaveMetadataAsHidden": "Geyma gagnagögn (metadata) og myndir sem leynilegar skrár", "PasswordMatchError": "Lykilorð og ítrekun lykilorðs þarf að passa.", @@ -145,7 +145,7 @@ "Overview": "Yfirlit", "PackageInstallCompleted": "{0} lokið við uppsetningu.", "PasswordResetComplete": "Lykilorðið hefur verið endurstillt.", - "PasswordResetHeader": "Endurstilla lykilorð", + "HeaderResetPassword": "Endurstilla lykilorð", "PasswordResetProviderHelp": "Veldu þjónustu til þess að endurstilla lykilorð þegar notandi biður um það", "PictureInPicture": "Brot úr ramma", "PinCodeResetComplete": "Pinnið þitt hefur verið endursett.", @@ -380,7 +380,7 @@ "DirectStreamHelp2": "Beint streymi á skrá notar mjög litið vinnsluafl án þess að tapa myndgæðum.", "Descending": "Niður", "DeleteImageConfirmation": "Ertu viss um að þú viljir eyða þessari mynd?", - "DefaultErrorMessage": "Villa varð við vinnslu beiðninnar. Reyndu aftur síðar.", + "MessageDefaultError": "Villa varð við vinnslu beiðninnar. Reyndu aftur síðar.", "DeathDateValue": "Dó: {0}", "DatePlayed": "Dagsetning spilað", "DateAdded": "Dagsetning bætt við", @@ -433,7 +433,7 @@ "ValueOneEpisode": "1 þáttur", "Up": "Upp", "Unplayed": "Óspilað", - "UninstallPluginHeader": "Fjarlægja Viðbót", + "HeaderUninstallPlugin": "Fjarlægja Viðbót", "Tuesday": "Þriðjudagur", "Transcoding": "Umkóðun", "Trailers": "Sýnishorn", diff --git a/src/strings/it.json b/src/strings/it.json index 76d3971fa9..437e9d2ffc 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -44,7 +44,7 @@ "Books": "Libri", "BoxRear": "Box (retro)", "Browse": "Esplora", - "BrowsePluginCatalogMessage": "Sfoglia il catalogo dei Plugins.", + "MessageBrowsePluginCatalog": "Sfoglia il catalogo dei Plugins.", "BurnSubtitlesHelp": "Determina se il server deve imprimere i sottotitoli quando i video vengono convertiti. Evitare ciò migliorerà di molto le prestazioni. Selezionare Auto per imprimere formati basati sull'immagine (VOBSUB, PGS, SUB, IDX, ...) e alcuni sottotitoli ASS o SSA.", "ButtonAdd": "Aggiungi", "ButtonAddMediaLibrary": "Aggiungi raccolta multimediale", @@ -145,7 +145,7 @@ "DatePlayed": "Visto il", "DeathDateValue": "Morto: {0}", "Default": "Predefinito", - "DefaultErrorMessage": "Si è verificato un errore durante l'elaborazione della richiesta. Si prega di riprovare più tardi.", + "MessageDefaultError": "Si è verificato un errore durante l'elaborazione della richiesta. Si prega di riprovare più tardi.", "DefaultMetadataLangaugeDescription": "Queste sono le tue impostazioni predefinite e possono essere personalizzate per ogni libreria.", "DefaultSubtitlesHelp": "I sottotitoli vengono letti in base agli attributi predefiniti e forzati dai metadati integrati. Le preferenze di lingua sono prese in considerazione quando sono disponibili più opzioni.", "Delete": "Elimina", @@ -213,7 +213,7 @@ "ErrorAddingXmlTvFile": "Si è verificato un errore durante l'accesso al file XMLTV. Si prega di assicurarsi che il file esista e riprovare.", "ErrorDeletingItem": "Si è verificato un errore durante l'eliminazione dell'elemento da Jellyfin Server. Verifica che Jellyfin Server abbia accesso in scrittura sulla cartella multimediale e riprova.", "ErrorGettingTvLineups": "Si è verificato un errore durante il download delle formazioni TV. Assicurarsi che le vostre informazioni siano corrette e riprovare.", - "ErrorMessageStartHourGreaterThanEnd": "Il tempo della fine deve essere maggiore del tempo di avvio.", + "ErrorStartHourGreaterThanEnd": "Il tempo della fine deve essere maggiore del tempo di avvio.", "ErrorPleaseSelectLineup": "Si prega di selezionare una scaletta e riprovare. Se non ci sono formazioni disponibili, si prega allora di verificare che il vostro nome utente, password, e il codice postale siano corretti.", "ErrorSavingTvProvider": "Si è verificato un errore durante il salvataggio del fornitore di TV. Si prega di assicurarsi che sia accessibile e riprovare.", "EveryNDays": "Ogni {0} giorni", @@ -893,8 +893,8 @@ "News": "Notizie", "Next": "Prossimo", "NoNewDevicesFound": "Non sono stati trovati nuovi dispositivi. Per aggiungere un nuovo sintonizzatore, chiudere questa finestra di dialogo e immettere manualmente le informazioni sul dispositivo.", - "NoNextUpItemsMessage": "Trovato niente. Inizia a guardare i tuoi programmi!", - "NoPluginConfigurationMessage": "Questo Plugin non ha impostazioni da configurare.", + "MessageNoNextUpItems": "Trovato niente. Inizia a guardare i tuoi programmi!", + "MessageNoPluginConfiguration": "Questo Plugin non ha impostazioni da configurare.", "NoSubtitleSearchResultsFound": "Nessun risultato.", "NoSubtitles": "Nessuno", "NoSubtitlesHelp": "I sottotitoli non verranno caricati per impostazione predefinita.Possono essere ancora caricati manualmente durante la riproduzione.", @@ -1037,7 +1037,7 @@ "PasswordMatchError": "Le password non coincidono.", "PasswordResetComplete": "Reset della password eseguito.", "PasswordResetConfirmation": "Sicuro di voler eseguire il reset della password?", - "PasswordResetHeader": "Reset Password", + "HeaderResetPassword": "Reset Password", "PasswordSaved": "Password salvata.", "People": "Attori", "PerfectMatch": "Corrispondenza perfetta", @@ -1058,7 +1058,7 @@ "PleaseEnterNameOrId": "Per favore inserisci un nome o un ID esterno.", "PleaseRestartServerName": "Per favore riavvia Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Seleziona almeno due elementi.", - "PluginInstalledMessage": "Il plugin è stato installato correttamente. Il server Jellyfin dovrà essere riavviato affinché le modifiche abbiano effetto.", + "MessagePluginInstalled": "Il plugin è stato installato correttamente. Il server Jellyfin dovrà essere riavviato affinché le modifiche abbiano effetto.", "PreferEmbeddedTitlesOverFileNames": "Preferisci titoli integrati ai nomi dei file", "PreferEmbeddedTitlesOverFileNamesHelp": "Determina il titolo predefinito usato quando non sono disponibili metadati locali o da Internet.", "Premiere": "Prima visione", @@ -1080,7 +1080,7 @@ "Record": "Registra", "RecordSeries": "Registra serie TV", "RecordingCancelled": "Registrazione annullata.", - "RecordingPathChangeMessage": "La modifica della cartella di registrazione non migrerà le registrazioni esistenti dalla vecchia posizione al nuovo. Sarà necessario spostarli manualmente, se lo si desidera.", + "MessageChangeRecordingPath": "La modifica della cartella di registrazione non migrerà le registrazioni esistenti dalla vecchia posizione al nuovo. Sarà necessario spostarli manualmente, se lo si desidera.", "RecordingScheduled": "Registrazione pianificata.", "Recordings": "Registrazioni", "Refresh": "Aggiorna", @@ -1223,7 +1223,7 @@ "TvLibraryHelp": "Rivedere la {0} guida di denominazione TV{1}.", "Uniform": "Uniforme", "UninstallPluginConfirmation": "Sei sicuro di voler Disinstallare {0}?", - "UninstallPluginHeader": "Disinstalla Plugin", + "HeaderUninstallPlugin": "Disinstalla Plugin", "Unmute": "Togli muto", "Unplayed": "Non visto", "Unrated": "Non votato", diff --git a/src/strings/ja.json b/src/strings/ja.json index d41bea60b5..0ea7eeb250 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -52,7 +52,7 @@ "Box": "ボックス", "BoxRear": "ボックス(後)", "Browse": "ブラウズ", - "BrowsePluginCatalogMessage": "利用可能なプラグインを表示するには、プラグインカタログを参照してください。", + "MessageBrowsePluginCatalog": "利用可能なプラグインを表示するには、プラグインカタログを参照してください。", "BurnSubtitlesHelp": "ビデオのトランスコード時にサーバーが字幕を焼付けるかどうかを決定します。 この字幕焼付けを避けると、サーバーのパフォーマンスが非常に向上します。 画像ベースの形式 (VOBSUB, PGS, SUB, IDX など) と特定の ASS または SSA 字幕でだけ焼付けを行うには、自動を選んでください。", "ButtonAdd": "追加", "ButtonAddMediaLibrary": "メディアライブラリを追加", @@ -157,7 +157,7 @@ "DateAdded": "追加日時", "DatePlayed": "再生日時", "Default": "デフォルト", - "DefaultErrorMessage": "要求の処理中にエラーが発生しました。 後でもう一度やり直してください。", + "MessageDefaultError": "要求の処理中にエラーが発生しました。 後でもう一度やり直してください。", "DefaultMetadataLangaugeDescription": "これらはデフォルトであり、ライブラリごとにカスタマイズすることができます。", "DefaultSubtitlesHelp": "字幕は、埋め込みメタデータのデフォルトフラグと強制フラグに基づいてロードされます。 複数のオプションが利用可能な場合は、言語設定が考慮されます。", "Delete": "削除", @@ -236,7 +236,7 @@ "ErrorAddingXmlTvFile": "XMLTV ファイルへのアクセス中にエラーが発生しました。 ファイルが存在することを確認して、やり直してください。", "ErrorDeletingItem": "Jellyfin サーバーからアイテムを削除中にエラーが発生しました。 Jellyfin サーバーがメディアフォルダーへの書き込みアクセス権を持っていることを確認して、もう一度やり直してください。", "ErrorGettingTvLineups": "TV ラインナップ のダウンロード中にエラーが発生しました。 あなたの情報が正しいことを確認してもう一度やり直してください。", - "ErrorMessageStartHourGreaterThanEnd": "終了時間は開始時間より長くなければなりません。", + "ErrorStartHourGreaterThanEnd": "終了時間は開始時間より長くなければなりません。", "ErrorPleaseSelectLineup": "ラインナップを選択してもう一度やり直してください。 ラインナップが利用できない場合は、あなたのユーザー名、パスワード、および郵便番号が正しいことを確認してください。", "ErrorSavingTvProvider": "TV プロバイダの保存中にエラーが発生しました。 アクセス可能であることを確認して、もう一度やり直してください。", "EveryNDays": "{0}日ごと", @@ -594,7 +594,7 @@ "OptionWeekdays": "平日", "ParentalRating": "個人評価", "PasswordResetConfirmation": "本当にパスワードを再設定しますか?", - "PasswordResetHeader": "パスワード再設定", + "HeaderResetPassword": "パスワード再設定", "PasswordSaved": "パスワードが保存されました。", "People": "ピープル", "PerfectMatch": "完全に一致", @@ -786,7 +786,7 @@ "TitlePlayback": "プレイバック", "TrackCount": "{0} トラック", "Transcoding": "トランスコーディング", - "UninstallPluginHeader": "プラグインをアンインストール", + "HeaderUninstallPlugin": "プラグインをアンインストール", "Unmute": "ミュート解除", "Unrated": "未評価", "Up": "上へ", diff --git a/src/strings/kk.json b/src/strings/kk.json index 1396bcff34..521dcfad5e 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -53,7 +53,7 @@ "Box": "Qorap", "BoxRear": "Qorap arty", "Browse": "Sharlaý", - "BrowsePluginCatalogMessage": "Qoljetimdi plagındermen tanysý úshin plagın tizimdemesin sholyńyz.", + "MessageBrowsePluginCatalog": "Qoljetimdi plagındermen tanysý úshin plagın tizimdemesin sholyńyz.", "BurnSubtitlesHelp": "Beıneni qaıta kodtaǵan kezde server sýbtıtrlerdi jazyýyn anyqtaıdy. Onan qashqaqtaý serverdiń ónimdiligin biraz jaqsartady. Sýretke negizdelgen pishimderdi (VOBSUB, PGS, SUB, IDX, j.t.b.) jáne keıbir ASS nemese SSA sýbtıtrlerin jazý úshin Avtomattyny tańdańyz.", "ButtonAdd": "Ústeý", "ButtonAddMediaLibrary": "Tasyǵyshhana ústeý", @@ -161,7 +161,7 @@ "DatePlayed": "Oınatylǵan kúni", "DeathDateValue": "Ólgeni: {0}", "Default": "Ádepki", - "DefaultErrorMessage": "Saýal óńdelý kezinde qate oryn aldy. Áreketti keıin qaıtalańyz.", + "MessageDefaultError": "Saýal óńdelý kezinde qate oryn aldy. Áreketti keıin qaıtalańyz.", "DefaultMetadataLangaugeDescription": "Bular sizdiń ádepki maǵynalaryńyz jáne ár tasyǵyshhana negizinde teńsheýge bolady.", "DefaultSubtitlesHelp": "Sýbtıtrler engizilgen metaderekterdegi ádepki jáne májbúrli jalaýshalary negizinde júktelip alynady. Birneshe opsıa qoljetimdi bolǵanda til teńshelimi qarastyrylady.", "Delete": "Joıý", @@ -230,7 +230,7 @@ "ErrorAddingXmlTvFile": "XMLTV-faılyna qatynaý kezinde qate oryn aldy. Faıl bar bolýyna kóz jetkizińiz de áreketti qaıtalańyz.", "ErrorDeletingItem": "Jellyfin Server elementin joıý kezinde qate oryn aldy. Jellyfin Server tasyǵysh qaltasyna jazýǵa ruqsaty bar ekenin tekserip, qaıtalap kórińiz.", "ErrorGettingTvLineups": "TD kezekterin júktep alý kezinde qate oryn aldy. Málimetterińiz durys ekenine kóz jetkizińiz de áreketti qaıtalańyz.", - "ErrorMessageStartHourGreaterThanEnd": "Aıaqtalý ýaqyty bastaý ýaqytynan keıinrek bolýy qajet etedi.", + "ErrorStartHourGreaterThanEnd": "Aıaqtalý ýaqyty bastaý ýaqytynan keıinrek bolýy qajet etedi.", "ErrorPleaseSelectLineup": "Tizbekti tańdańyz jáne áreketti qaıtalańyz. Eger eshqandaı tizbek qoljetimdi bolmasa, onda paıdalanýshy atyńyzdy, parólińizdi jáne poshta kodyn durys ekenin tekserińiz.", "ErrorSavingTvProvider": "TD jetkizýshisin saqtaý kezinde qate oryn aldy. Bul qatynaýly ekenine kóz jetkizińiz de áreketti qaıtalańyz.", "EveryNDays": "{0} kún saıyn", @@ -952,8 +952,8 @@ "NextUp": "Kezekti", "No": "Joq", "NoNewDevicesFound": "Jańa qurylǵylar tabylmady. Jańa túner ústeý úshin, osy tilqatysý terezesin jaýyp, qurylǵy aqparatyn qolmen engizińiz.", - "NoNextUpItemsMessage": "Eshteńe tabylmady. Kórsetimderińizdi qaraı bastańyz!", - "NoPluginConfigurationMessage": "Osy plagınde teńsheletin parametrler joq.", + "MessageNoNextUpItems": "Eshteńe tabylmady. Kórsetimderińizdi qaraı bastańyz!", + "MessageNoPluginConfiguration": "Osy plagınde teńsheletin parametrler joq.", "NoSubtitleSearchResultsFound": "Eshqandaı nátıjeler tabylmady.", "NoSubtitles": "Eshqandaı", "NoSubtitlesHelp": "Ádepkide sýbtıtrler júktelmeıdi. Olardy oınatý kezinde áli de qolmen qosýǵa bolady.", @@ -1111,7 +1111,7 @@ "PasswordMatchError": "Paróli men Paróldi rastaý óristeri sáıkes bolý kerek.", "PasswordResetComplete": "Paról ysyryldy.", "PasswordResetConfirmation": "Shynymen paróldi ysyrý qajet pe?", - "PasswordResetHeader": "Paróldi ysyrý", + "HeaderResetPassword": "Paróldi ysyrý", "PasswordSaved": "Paról saqtaldy.", "People": "Adamdar", "PerfectMatch": "Úzdik teń", @@ -1133,7 +1133,7 @@ "PleaseEnterNameOrId": "Atyn nemese syrtqy ID engizińiz.", "PleaseRestartServerName": "Jellyfin Server úshin qaıta iske qosyńyz - {0}.", "PleaseSelectTwoItems": "Eń keminde eki tarmaqty tańdańyz.", - "PluginInstalledMessage": "Plagın sátti ornatyldy. Ózgertýler kúshine enýi úshin Jellyfin Server qaıta iske qosylý qajet.", + "MessagePluginInstalled": "Plagın sátti ornatyldy. Ózgertýler kúshine enýi úshin Jellyfin Server qaıta iske qosylý qajet.", "PreferEmbeddedTitlesOverFileNames": "Faıl ataýlary ornyna endirilgen ataýlardy qalaý", "PreferEmbeddedTitlesOverFileNamesHelp": "Internettegi metaderekter nemese jergilikti metaderekter qol jetimdi bolmaǵanda bul ádepki beıneletin ataýdy anyqtaıdy.", "Premiere": "Tusaýkeseri", @@ -1155,7 +1155,7 @@ "Record": "Jazý", "RecordSeries": "Telehıkaıany jazý", "RecordingCancelled": "Jazba boldyrylmady.", - "RecordingPathChangeMessage": "Jazý qaltasyn ózgertkende, bar jazbalar eski ornynan jańasyna tasymaldanbaıdy. Talap etseńiz, olardy qolmen jyljytýyńyzǵa qajet bolady.", + "MessageChangeRecordingPath": "Jazý qaltasyn ózgertkende, bar jazbalar eski ornynan jańasyna tasymaldanbaıdy. Talap etseńiz, olardy qolmen jyljytýyńyzǵa qajet bolady.", "RecordingScheduled": "Jazý josparlaǵan.", "Recordings": "Jazbalar", "Refresh": "Jańǵyrtý", @@ -1310,7 +1310,7 @@ "TvLibraryHelp": "{0}TD-kórsetimdi ataý nusqaýlyǵyn{1} qarap shyǵý.", "Uniform": "Biryńǵaı", "UninstallPluginConfirmation": "Shynymen {0} ornatýyn boldyrmaý qajet pe?", - "UninstallPluginHeader": "Plagın ornatýyn boldyrmaý", + "HeaderUninstallPlugin": "Plagın ornatýyn boldyrmaý", "Unmute": "Dybysty qosý", "Unplayed": "Oınatylmaǵan", "Unrated": "Baǵalanbaǵan", diff --git a/src/strings/ko.json b/src/strings/ko.json index e587031bb5..68f963dea7 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -13,7 +13,7 @@ "Backdrops": "배경", "BirthDateValue": "출생: {0}", "BirthPlaceValue": "출생지: {0}", - "BrowsePluginCatalogMessage": "사용 가능한 플러그인을 보려면 플러그인 카탈로그를 참고하십시오.", + "MessageBrowsePluginCatalog": "사용 가능한 플러그인을 보려면 플러그인 카탈로그를 참고하십시오.", "ButtonAdd": "추가", "ButtonAddScheduledTaskTrigger": "트리거 추가", "ButtonAddServer": "서버 추가", @@ -86,7 +86,7 @@ "Connect": "접속", "CustomDlnaProfilesHelp": "새 장치를 대상으로 하거나 시스템 프로필을 재정의 할 사용자 지정 프로필을 만듭니다.", "DeathDateValue": "사망: {0}", - "DefaultErrorMessage": "요청을 처리하는 중에 오류가 발생했습니다. 나중에 다시 시도하십시오.", + "MessageDefaultError": "요청을 처리하는 중에 오류가 발생했습니다. 나중에 다시 시도하십시오.", "DefaultMetadataLangaugeDescription": "이는 기본값이며 라이브러리별로 사용자 정의될 수 있습니다.", "Delete": "제거", "DeleteImage": "이미지 제거", @@ -525,7 +525,7 @@ "MoreUsersCanBeAddedLater": "나중에 대시보드에서 사용자를 더 추가할 수 있습니다.", "Mute": "음소거", "NewCollection": "새 컬렉션", - "NoNextUpItemsMessage": "아무도 찾지 못했어요. 여러분의 쇼를 보기 시작하세요!", + "MessageNoNextUpItems": "아무도 찾지 못했어요. 여러분의 쇼를 보기 시작하세요!", "OptionAdminUsers": "관리자", "OptionAlbum": "앨범", "OptionAlbumArtist": "앨범 아티스트", @@ -648,7 +648,7 @@ "PasswordMatchError": "비밀번호와 비밀번호 확인이 일치해야 합니다.", "PasswordResetComplete": "비밀번호가 재설정되었습니다.", "PasswordResetConfirmation": "비밀번호를 재설정하겠습니까?", - "PasswordResetHeader": "비밀번호 재설정", + "HeaderResetPassword": "비밀번호 재설정", "PasswordSaved": "비밀번호가 저장되었습니다.", "PictureInPicture": "Picture in picture", "PinCodeResetComplete": "PIN 코드가 초기화되었습니다.", @@ -749,7 +749,7 @@ "TrackCount": "{0} 트랙", "Tuesday": "화요일", "UninstallPluginConfirmation": "{0} 을(를) 설치 제거하겠습니까?", - "UninstallPluginHeader": "플러그인 제거", + "HeaderUninstallPlugin": "플러그인 제거", "Unmute": "음소거 취소", "UserProfilesIntro": "Jellyfin은 세분화된 디스플레이 설정, 재생 상태, 자녀 보호 기능을 갖춘 사용자 프로필을 지원합니다.", "ValueAlbumCount": "{0} 앨범", @@ -953,7 +953,7 @@ "Programs": "프로그램", "Previous": "이전", "PreferEmbeddedTitlesOverFileNames": "파일 이름보다 내장된 제목 선호", - "PluginInstalledMessage": "플러그인이 성공적으로 설치되었습니다. 변경사항을 적용하려면 Jellyfin 서버를 재시작하십시오.", + "MessagePluginInstalled": "플러그인이 성공적으로 설치되었습니다. 변경사항을 적용하려면 Jellyfin 서버를 재시작하십시오.", "PleaseRestartServerName": "Jellyfin 서버를 재시작하십시오 - {0}.", "PleaseEnterNameOrId": "이름 또는 외부 ID를 입력하십시오.", "PlayNextEpisodeAutomatically": "자동으로 다음 에피소드 재생", @@ -1143,7 +1143,7 @@ "FileReadCancelled": "파일 읽기 작업이 취소되었습니다.", "FetchingData": "추가 데이터를 가져오는 중", "ExtraLarge": "매우 큼", - "ErrorMessageStartHourGreaterThanEnd": "종료 시간은 시작 시간보다 커야 합니다.", + "ErrorStartHourGreaterThanEnd": "종료 시간은 시작 시간보다 커야 합니다.", "Display": "디스플레이", "DirectStreamHelp1": "이 미디어는 해상도 및 미디어 유형(H.264, AC3 등)과 관련하여 장치와 호환되지만, 파일 컨테이너(mkv, avi, wmv 등)와는 호환되지 않습니다. 비디오는 장치로 스트리밍 되기 전에 즉각 재포장됩니다.", "Descending": "내림차순", @@ -1258,7 +1258,7 @@ "MediaInfoBitDepth": "비트뎁스", "LabelPostProcessor": "후처리 애플리케이션:", "RefreshQueued": "새로 고침 대기 중", - "NoPluginConfigurationMessage": "이 플러그인은 설정할 것이 없습니다.", + "MessageNoPluginConfiguration": "이 플러그인은 설정할 것이 없습니다.", "OptionExtractChapterImage": "챕터 이미지 추출 활성화", "Up": "위", "EasyPasswordHelp": "쉬운 핀 코드는 지원되는 기기에서 오프라인 접근을 할 때나 내부 내트워크 로그인에서 사용됩니다.", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index c0b254251a..6726c85291 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -65,7 +65,7 @@ "ConfirmDeletion": "Patvirtinti trynimą", "Continuing": "Tęsiamas", "CustomDlnaProfilesHelp": "Sukurti kitą profilį naujam įrenginiui ar pakeisti sistemos profilį.", - "DefaultErrorMessage": "Įvyko klaida vykdant užklausą. Pabandykite vėliau.", + "MessageDefaultError": "Įvyko klaida vykdant užklausą. Pabandykite vėliau.", "Delete": "Ištrinti", "DeleteMedia": "Trinti mediją", "DeviceAccessHelp": "Tai taikoma tik įrenginiams, kurie gali būti identifikuojami, ir neuždraus prieigos per naršyklę. Vartotojo įrenginio prieigos filtravimas neleis jiems naudotis naujais įrenginiais kol jie nepatvirtinti čia.", @@ -322,7 +322,7 @@ "NewEpisodes": "Naujoms serijoms", "NewEpisodesOnly": "Tik naujas serijas", "News": "Naujienos", - "NoNextUpItemsMessage": "Nieko neradau. Pradėkite žiūrėti laidas!", + "MessageNoNextUpItems": "Nieko neradau. Pradėkite žiūrėti laidas!", "NoSubtitleSearchResultsFound": "Nieko neradau.", "OptionAdminUsers": "Administratoriai", "OptionAlbum": "Albumas", @@ -655,7 +655,7 @@ "AllowRemoteAccessHelp": "Jei nepažymėta, visi nuotoliniai prisijungimai bus blokuojami.", "Banner": "Juosta", "HeaderDeleteDevice": "Ištrinti prietaisą", - "BrowsePluginCatalogMessage": "Peržiūrėti įskiepių katalogą.", + "MessageBrowsePluginCatalog": "Peržiūrėti įskiepių katalogą.", "EnableBackdrops": "Fonai", "EnableCinemaMode": "Kino režimas", "EnableDisplayMirroring": "Ekrano dubliavimas", @@ -831,7 +831,7 @@ "HeaderAccessSchedule": "Prieigos tvarkaraštis", "HeaderAccessScheduleHelp": "Sukurkite prieigos tvarkaraštį, kad apribotumėte prieigą tam tikromis valandomis.", "HeaderContainerProfile": "Konteinerio profilis", - "ErrorMessageStartHourGreaterThanEnd": "Pabaigos laikas turi būti didesnis nei pradžios laikas.", + "ErrorStartHourGreaterThanEnd": "Pabaigos laikas turi būti didesnis nei pradžios laikas.", "HeaderFeatures": "Medžiagos", "ErrorSavingTvProvider": "Išsaugant TV teikėją įvyko klaida. Įsitikinkite, kad jis prieinamas, ir bandykite dar kartą.", "HeaderKodiMetadataHelp": "Norėdami įjungti arba išjungti NFO metaduomenis, redaguokite biblioteką Jellyfin bibliotekos nustatymuose, metaduomenų išsaugojimo skyriuje.", diff --git a/src/strings/lv.json b/src/strings/lv.json index fd2d2d821e..329354d93b 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -556,7 +556,7 @@ "ButtonAddMediaLibrary": "Pievienot Multimēdiju Bibliotēku", "ButtonAddImage": "Pievienot attēlu", "ButtonAdd": "Pievienot", - "BrowsePluginCatalogMessage": "Pārlūko mūsu paplašinājumu katalogu, lai redzētu pieejamos paplašinājumus.", + "MessageBrowsePluginCatalog": "Pārlūko mūsu paplašinājumu katalogu, lai redzētu pieejamos paplašinājumus.", "Browse": "Pārlūkot", "BoxRear": "Kaste (aizmugure)", "Box": "Kaste", @@ -692,7 +692,7 @@ "Unrated": "Nevērtēts", "Unplayed": "Neatskaņots", "Unmute": "Ieslēgt skaņu", - "UninstallPluginHeader": "Noņemt Paplašinājumu", + "HeaderUninstallPlugin": "Noņemt Paplašinājumu", "UninstallPluginConfirmation": "Vai tu tiešām vēlies noņemt {0}?", "Tuesday": "Otrdiena", "Transcoding": "Trans-kodēšana", @@ -830,7 +830,7 @@ "OptionAutomatic": "Auto", "OptionAuto": "Auto", "OptionArtist": "Izpildītājs", - "NoPluginConfigurationMessage": "Šim paplašinājumam nav konfigurējamu iestatījumu.", + "MessageNoPluginConfiguration": "Šim paplašinājumam nav konfigurējamu iestatījumu.", "NoCreatedLibraries": "Izskatās ka tu vēl neesi izveidojis nevienu bibliotēku. {0}Vai tu vēlies izveidot vienu tagad?{1}", "NextUp": "Nākamais", "Mute": "Apklusināt", @@ -881,7 +881,7 @@ "LabelCustomCertificatePathHelp": "Ceļš uz PKCS #12 datni, kas satur sertifikātu un privāto atslēgu lai iespējotu TLS atbalstu uz sava domēna.", "FolderTypeUnset": "Jaukts Saturs", "ErrorSavingTvProvider": "Kļūda saglabājot TV sniedzēju. Pārliecinies ka tas ir pieejams un mēģini vēlreiz.", - "ErrorMessageStartHourGreaterThanEnd": "Beigu laikam jābūt vēlākam par sākuma laiku.", + "ErrorStartHourGreaterThanEnd": "Beigu laikam jābūt vēlākam par sākuma laiku.", "ErrorAddingXmlTvFile": "Kļūda atverot XMLTV datni. Lūdzu pārliecinies ka datne eksistē un mēģini vēlreiz.", "LabelCustomCssHelp": "Izmanto pats savu pielāgoto silu web interfeisam.", "LabelCustomCss": "Pielāgots CSS:", @@ -975,7 +975,7 @@ "DeleteMedia": "Dzēst mediju", "DeleteImageConfirmation": "Vai tu tiešām vēlies izdzēst šo attēlu?", "DeleteDeviceConfirmation": "Vai tu tiešām vēlies noņemt šo ierīci? Tā parādīsies atkārtoti nākamo reizi, kad lietotājs ieiet ar to.", - "DefaultErrorMessage": "Apstrādājot pieprasījumu notika kļūda. Pēc brītiņa lūdzu mēģini vēlreiz.", + "MessageDefaultError": "Apstrādājot pieprasījumu notika kļūda. Pēc brītiņa lūdzu mēģini vēlreiz.", "DeathDateValue": "Miris: {0}", "ConfirmEndPlayerSession": "Vai jūs gribat izslēgt Jellyfin uz {0}?", "ConfirmDeleteItems": "Dzēšot šos vienumus, tie tiks izdzēsti gan no jūsu failu sistēmas, gan mediju bibliotēkas. Vai tiešām turpināt?", @@ -1137,7 +1137,7 @@ "PlaybackData": "Atskaņošanas Dati", "Person": "Persona", "PerfectMatch": "Ideāla saderība", - "PasswordResetHeader": "Atiestatīt Paroli", + "HeaderResetPassword": "Atiestatīt Paroli", "PasswordResetConfirmation": "Vai tu tiešām gribi atiestatīt paroli?", "PasswordResetComplete": "Parole ir atiestatīta.", "PasswordMatchError": "Parolei un paroles pārbaudei ir jāsakrīt.", diff --git a/src/strings/ms.json b/src/strings/ms.json index d5f9259c21..db01453815 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -92,7 +92,7 @@ "ButtonAddScheduledTaskTrigger": "Tambah Pencetus", "ButtonAddImage": "Tambah gambar", "BurnSubtitlesHelp": "Menentukan sama ada pelayan perlu membakar subtitle ke skrin apabila menukar video bergantung kepada format sarikata. Menghindari pembakaran sari kata ke skrin akan meningkatkan prestasi pelayan. Pilih Auto untuk membakar format berasaskan imej (VOBSUB, PGS, SUB / IDX, dll) dan subtitle ASS / SSA tertentu.", - "BrowsePluginCatalogMessage": "Semak imbas katalog plugin kami untuk melihat plugin yang tersedia.", + "MessageBrowsePluginCatalog": "Semak imbas katalog plugin kami untuk melihat plugin yang tersedia.", "BoxRear": "Kotak (belakang)", "BookLibraryHelp": "Buku audio dan teks disokong. Semak {0}panduan penamaan buku{1}.", "Banner": "Sepanduk", diff --git a/src/strings/nb.json b/src/strings/nb.json index bba97f9da2..dbd94366ad 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -33,7 +33,7 @@ "BirthPlaceValue": "Fødested: {0}", "BookLibraryHelp": "Lyd- og tekstbøker støttes. Se igjennom {0} navneguiden for bøker {1}.", "Books": "Bøker", - "BrowsePluginCatalogMessage": "Bla i tilleggskatalogen vår for å se tilgjengelige applikasjonstillegg.", + "MessageBrowsePluginCatalog": "Bla i tilleggskatalogen vår for å se tilgjengelige applikasjonstillegg.", "ButtonAdd": "Legg til", "ButtonAddMediaLibrary": "Legg til bibliotek", "ButtonAddScheduledTaskTrigger": "Legg til utløser", @@ -126,7 +126,7 @@ "Continuing": "Fortsetter", "CustomDlnaProfilesHelp": "Lag en tilpasset profil til en ny enhet eller for å overstyre en system-profil.", "DeathDateValue": "Døde: {0}", - "DefaultErrorMessage": "Det oppstod en feil under behandling av forespørselen. Vennligst prøv igjen senere.", + "MessageDefaultError": "Det oppstod en feil under behandling av forespørselen. Vennligst prøv igjen senere.", "DefaultMetadataLangaugeDescription": "Dette er standardverdiene dine, de kan også tilpasses per biblioteksbasis.", "Delete": "Slett", "DeleteDeviceConfirmation": "Er du sikker på at du ønsker å slette denne enheten? Den vil gjenoppstå neste gang en bruker logger inn med den.", @@ -164,7 +164,7 @@ "ErrorAddingTunerDevice": "Det oppstod en feil når tuneren skulle legges til. Vennligst sørg for at den er tilgjengelig og prøv på nytt.", "ErrorAddingXmlTvFile": "Det oppstod en feil under lesing av XMLTV-filen. Vennligst sørg for at filen finnes og prøv igjen.", "ErrorGettingTvLineups": "Det oppstod en feil under nedlastning av TV-oversikten. Vennligst sørg for at informasjonen er korrekt og prøv igjen.", - "ErrorMessageStartHourGreaterThanEnd": "Sluttid må være senere enn starttid.", + "ErrorStartHourGreaterThanEnd": "Sluttid må være senere enn starttid.", "ErrorPleaseSelectLineup": "Velg et programoppsett og prøv igjen. Hvis ingen oppsett er tilgjengelig, sjekk at brukernavn, passord og postnummer er riktig.", "ErrorSavingTvProvider": "Det oppstod en feil ved lagring av TV-leverandør. Vennligst forsikre deg om at den er tilgjengelig, og prøv på nytt.", "EveryNDays": "Hver {0}. dag", @@ -763,7 +763,7 @@ "NextUp": "Neste", "No": "Nei", "NoNewDevicesFound": "Ingen nye enheter funnet. For å legge til en ny tuner, lukk denne dialogboksen og skriv inn enhetens informasjon manuelt.", - "NoNextUpItemsMessage": "Ingen funnet. Begynn å se det du har!", + "MessageNoNextUpItems": "Ingen funnet. Begynn å se det du har!", "NoSubtitleSearchResultsFound": "Ingen resultater funnet.", "None": "Ingen", "NumLocationsValue": "{0} mapper", @@ -895,7 +895,7 @@ "PasswordMatchError": "Passord og passordbekreftelsen må matche.", "PasswordResetComplete": "Passordet har blitt tilbakestilt.", "PasswordResetConfirmation": "Er du sikker på at du vil tilbakestille passordet?", - "PasswordResetHeader": "Tilbakestill passord", + "HeaderResetPassword": "Tilbakestill passord", "PasswordSaved": "Passord lagret.", "People": "Mennesker", "PictureInPicture": "Bilde i bilde", @@ -913,7 +913,7 @@ "PleaseEnterNameOrId": "Vennligst skriv et navn eller en ekstern ID.", "PleaseRestartServerName": "Vennligst start Jellyfin-serveren på nytt - {0}.", "PleaseSelectTwoItems": "Vennligst velg minst to elementer.", - "PluginInstalledMessage": "Programtillegget ble installert. Jellyfin-serveren må startes på nytt for at endringene skal tre i kraft.", + "MessagePluginInstalled": "Programtillegget ble installert. Jellyfin-serveren må startes på nytt for at endringene skal tre i kraft.", "PreferEmbeddedTitlesOverFileNames": "Foretrekk integrerte titler fremfor filnavn", "PreferEmbeddedTitlesOverFileNamesHelp": "Dette avgjør standard visningstittel når det ikke er noen metadata eller lokale metadata tilgjengelige.", "Premieres": "Premierer", @@ -931,7 +931,7 @@ "Record": "Ta opp", "RecordSeries": "Ta opp serien", "RecordingCancelled": "Opptak er avbrutt.", - "RecordingPathChangeMessage": "Endring av mappen for opptak vil ikke flytte eksisterende opptak fra den gamle plasseringen til den nye. Du må flytte dem manuelt hvis ønskelig.", + "MessageChangeRecordingPath": "Endring av mappen for opptak vil ikke flytte eksisterende opptak fra den gamle plasseringen til den nye. Du må flytte dem manuelt hvis ønskelig.", "RecordingScheduled": "Opptak planlagt.", "Recordings": "Opptak", "Refresh": "Oppdater", @@ -1050,7 +1050,7 @@ "Tuesday": "Tirsdag", "TvLibraryHelp": "Gå igjennom {0}veiledning for navngivelse av TV-programmer{1}.", "UninstallPluginConfirmation": "Er du sikker på at du ønsker å avinstallere {0}?", - "UninstallPluginHeader": "Avinstaller programtillegg", + "HeaderUninstallPlugin": "Avinstaller programtillegg", "Unrated": "Ikke vurdert", "Up": "Opp", "UserProfilesIntro": "Jellyfin har støtte for brukerprofiler med finjusterbare innstillinger, avspillingsstatus og foreldrekontroll.", @@ -1207,7 +1207,7 @@ "LabelLanNetworks": "Lokale nettverk:", "MediaInfoCodecTag": "Kodektagg", "Metadata": "Metadata", - "NoPluginConfigurationMessage": "Dette programtillegget har ingen innstillinger å konfigurere.", + "MessageNoPluginConfiguration": "Dette programtillegget har ingen innstillinger å konfigurere.", "TabGuide": "Guide", "Unmute": "Skru på lyd", "OptionIsHD": "HD", diff --git a/src/strings/nl.json b/src/strings/nl.json index e97578db4b..0ee710db7f 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -48,7 +48,7 @@ "Books": "Boeken", "BoxRear": "Hoes (achterkant)", "Browse": "Bladeren", - "BrowsePluginCatalogMessage": "Bekijk de Plugin catalogus voor beschikbare Plug-ins.", + "MessageBrowsePluginCatalog": "Bekijk de Plugin catalogus voor beschikbare Plug-ins.", "BurnSubtitlesHelp": "Bepaalt of de server ondertitels moet branden bij het transcoderen van video's. Als u dit vermijd, worden de prestaties aanzienlijk verbeterd. Selecteer Auto om op afbeeldingen gebaseerde formaten (VOBSUB, PGS, SUB/IDX etc.) en bepaalde ASS/SSA ondertitels te branden.", "ButtonAdd": "Toevoegen", "ButtonAddMediaLibrary": "Voeg Media Bibliotheek toe", @@ -149,7 +149,7 @@ "DatePlayed": "Datum afgespeeld", "DeathDateValue": "Overleden: {0}", "Default": "Standaard", - "DefaultErrorMessage": "Er is een fout opgetreden. Probeer later opnieuw.", + "MessageDefaultError": "Er is een fout opgetreden. Probeer later opnieuw.", "DefaultMetadataLangaugeDescription": "Dit zijn uw standaardinstellingen en kunnen per bibliotheek worden aangepast.", "DefaultSubtitlesHelp": "Ondertitels worden geladen op basis van de standaard en geforceerd markeringen in de ingesloten metadata. Indien meerdere opties aanwezig zijn zal rekening worden gehouden met de taalvoorkeuren.", "Delete": "Verwijderen", @@ -216,7 +216,7 @@ "ErrorAddingXmlTvFile": "Er is een fout opgetreden met de toegang tot XMLTV bestand. Zorg ervoor dat het bestand bestaat en probeer het opnieuw.", "ErrorDeletingItem": "Er was een probleem bij het verwijderen van het item in Jellyfin Server. Controleer dat Jellyfin Server schrijfrechten op de map heeft en probeer het opnieuw.", "ErrorGettingTvLineups": "Er was een fout bij het downloaden van de TV lineup. Controleer of uw gegevens correct zijn en probeer het opnieuw.", - "ErrorMessageStartHourGreaterThanEnd": "Eind tijd moet na de start tijd liggen.", + "ErrorStartHourGreaterThanEnd": "Eind tijd moet na de start tijd liggen.", "ErrorPleaseSelectLineup": "Selecteer een lineup en probeer het opnieuw. Als er geen lineups beschibaar zijn, controleer dan of uw gebruikersnaam, wachtwoord en postcode correct zijn.", "ErrorSavingTvProvider": "Er was een fout bij het opslaan van de TV aanbieder. Controleer of deze toegankelijk is en probeer het opnieuw.", "EveryNDays": "Elke {0} dagen", @@ -880,8 +880,8 @@ "NextUp": "Hierna", "No": "Nee", "NoNewDevicesFound": "Er zijn geen nieuwe apparaten gevonden. Sluit dit melding en voer handmatig de apparaat gegevens in om een nieuwe tuner toe te voegen.", - "NoNextUpItemsMessage": "Niets gevonden. Start met kijken!", - "NoPluginConfigurationMessage": "Deze plugin heeft geen instellingen te configureren.", + "MessageNoNextUpItems": "Niets gevonden. Start met kijken!", + "MessageNoPluginConfiguration": "Deze plugin heeft geen instellingen te configureren.", "NoSubtitleSearchResultsFound": "Geen resultaten gevonden.", "NoSubtitles": "Geen ondertiteling", "NoSubtitlesHelp": "Ondertitels worden niet standaard weergegeven. Deze kunnen tijdens het afspelen handmatig worden ingeschakeld.", @@ -1022,7 +1022,7 @@ "PasswordMatchError": "Wachtwoord en wachtwoord bevestiging moeten hetzelfde zijn.", "PasswordResetComplete": "Het wachtwoord is opnieuw ingesteld.", "PasswordResetConfirmation": "Weet u zeker dat u het wachtwoord opnieuw in wilt stellen?", - "PasswordResetHeader": "Reset Wachtwoord", + "HeaderResetPassword": "Reset Wachtwoord", "PasswordSaved": "Wachtwoord opgeslagen.", "People": "Personen", "PerfectMatch": "Perfecte match", @@ -1044,7 +1044,7 @@ "PleaseEnterNameOrId": "Voer een naam of een externe ID in.", "PleaseRestartServerName": "Herstart Jellyfin Server - {0} aub.", "PleaseSelectTwoItems": "Selecteer ten minste twee items.", - "PluginInstalledMessage": "Het installeren van de plugin is gelukt. Jellyfin Server zal heropgestart moeten worden om de wijzigingen door te voeren.", + "MessagePluginInstalled": "Het installeren van de plugin is gelukt. Jellyfin Server zal heropgestart moeten worden om de wijzigingen door te voeren.", "PreferEmbeddedTitlesOverFileNames": "Prefereer ingesloten titels boven bestandsnamen", "PreferEmbeddedTitlesOverFileNamesHelp": "Dit bepaalt de standaard weergavetitel wanneer er geen internet metagegevens of lokale metadata beschikbaar is.", "Premieres": "Premières", @@ -1065,7 +1065,7 @@ "Record": "Opnemen", "RecordSeries": "Series Opnemen", "RecordingCancelled": "Opname geannuleerd.", - "RecordingPathChangeMessage": "Bij het wijzigen van uw opnamemap zullen bestaande opnamen niet migreren van de oude locatie naar de nieuwe. U moet deze desgewenst handmatig verplaatsen.", + "MessageChangeRecordingPath": "Bij het wijzigen van uw opnamemap zullen bestaande opnamen niet migreren van de oude locatie naar de nieuwe. U moet deze desgewenst handmatig verplaatsen.", "RecordingScheduled": "Opname schema.", "Recordings": "Opnames", "Refresh": "Vernieuwen", @@ -1204,7 +1204,7 @@ "Tuesday": "Dinsdag", "TvLibraryHelp": "Bekijk de {0}TV naamgeving gids {1}.", "UninstallPluginConfirmation": "Weet u zeker dat u {0} wilt deïnstalleren?", - "UninstallPluginHeader": "Plug-in deïnstalleren", + "HeaderUninstallPlugin": "Plug-in deïnstalleren", "Unmute": "Dempen opheffen", "Unplayed": "Niet afgespeeld", "Unrated": "Geen rating", diff --git a/src/strings/pl.json b/src/strings/pl.json index a141b975cb..9d3ec0b2f3 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -53,7 +53,7 @@ "Box": "Pudełko", "BoxRear": "Pudełko (tył)", "Browse": "Przeglądaj", - "BrowsePluginCatalogMessage": "Przejrzyj nasz katalog wtyczek żeby zobaczyć dostępne wtyczki.", + "MessageBrowsePluginCatalog": "Przejrzyj nasz katalog wtyczek żeby zobaczyć dostępne wtyczki.", "BurnSubtitlesHelp": "Określa czy serwer powinien wypalać napisy podczas konwersji wideo, w zależności od formatu napisów. Unikanie wypalania napisów znacząco poprawia wydajność serwera. Wybierz Automatycznie, w celu wypalania zarówno napisów w formatach graficznych (np. VOBSUB, PGS, SUB, IDX, ...), jak i pewnych napisów ASS lub SSA.", "ButtonAdd": "Dodaj", "ButtonAddMediaLibrary": "Dodaj media do biblioteki", @@ -160,7 +160,7 @@ "DatePlayed": "Data odtwarzania", "DeathDateValue": "Zmarły: {0}", "Default": "Domyślny", - "DefaultErrorMessage": "Wystąpił błąd podczas przetwarzania żądania. Proszę spróbować ponownie później.", + "MessageDefaultError": "Wystąpił błąd podczas przetwarzania żądania. Proszę spróbować ponownie później.", "DefaultMetadataLangaugeDescription": "To są twoje ustawienia domyślne. Możesz je zmienić dla każdej biblioteki osobno.", "DefaultSubtitlesHelp": "Napisy będą wczytywane w oparciu o znaczniki metadanych ścieżek dźwiękowych. Preferencje językowe brane są pod uwagę, gdy dostępnych jest wiele możliwości.", "Delete": "Usuń", @@ -229,7 +229,7 @@ "ErrorAddingXmlTvFile": "Podczas próby dostępu do pliku XMLTV wystąpił błąd. Upewnij się, że plik istnieje i spróbuj ponownie.", "ErrorDeletingItem": "Podczas usuwania pozycji z serwera Jellyfin wystąpił błąd. Upewnij się, że serwer ma uprawnienia do zapisu w folderze mediów i spróbuj ponownie.", "ErrorGettingTvLineups": "Podczas pobierania programu telewizyjnego wystąpił błąd. Upewnij się, że informacje są poprawne i spróbuj ponownie.", - "ErrorMessageStartHourGreaterThanEnd": "Czas końcowy musi być większy niż czas początkowy.", + "ErrorStartHourGreaterThanEnd": "Czas końcowy musi być większy niż czas początkowy.", "ErrorPleaseSelectLineup": "Wybierz program i spróbuj ponownie, jeśli żadne programy nie są dostępne, sprawdź czy twój login, hasło i kod pocztowy jest poprawny.", "ErrorSavingTvProvider": "Wystąpił błąd podczas dodawania dostawcy telewizji. Upewnij się, że jest on dostępny i spróbuj ponownie.", "EveryNDays": "Co {0} dni", @@ -945,8 +945,8 @@ "NextUp": "Do obejrzenia", "No": "Nie", "NoNewDevicesFound": "Nie znaleziono żadnych nowych urządzeń. Aby dodać tuner, zamknij ten dialog i wprowadź informacje o urządzeniu ręcznie.", - "NoNextUpItemsMessage": "Nie znaleziono niczego. Zacznij oglądać swoje seriale!", - "NoPluginConfigurationMessage": "Ta wtyczka nie ma żadnych ustawień.", + "MessageNoNextUpItems": "Nie znaleziono niczego. Zacznij oglądać swoje seriale!", + "MessageNoPluginConfiguration": "Ta wtyczka nie ma żadnych ustawień.", "NoSubtitleSearchResultsFound": "Brak wyników wyszukiwania.", "NoSubtitles": "Brak", "NoSubtitlesHelp": "Domyślnie napisy nie będą wczytywane. Można je ciągle włączyć ręcznie podczas odtwarzania.", @@ -1102,7 +1102,7 @@ "PasswordMatchError": "Hasło i potwierdzenie hasła muszą się zgadzać.", "PasswordResetComplete": "Hasło zostało zresetowane.", "PasswordResetConfirmation": "Czy na pewno chcesz wyczyścić hasło?", - "PasswordResetHeader": "Wyczyść hasło", + "HeaderResetPassword": "Wyczyść hasło", "PasswordSaved": "Hasło zapisane.", "People": "Osoby", "PerfectMatch": "Perfekcyjne dopasowanie", @@ -1124,7 +1124,7 @@ "PleaseEnterNameOrId": "Proszę wprowadź nazwę lub zewnętrzne ID.", "PleaseRestartServerName": "Uruchom ponownie serwer Jellyfin - {0}.", "PleaseSelectTwoItems": "Proszę wybierz przynajmniej dwie pozycje.", - "PluginInstalledMessage": "Wtyczka została poprawnie zainstalowana. Serwer Jellyfin będzie wymagała ponownego uruchomienia w celu zastosowania zmian.", + "MessagePluginInstalled": "Wtyczka została poprawnie zainstalowana. Serwer Jellyfin będzie wymagała ponownego uruchomienia w celu zastosowania zmian.", "PreferEmbeddedTitlesOverFileNames": "Preferuj wbudowane tytuły zamiast nazw plików", "PreferEmbeddedTitlesOverFileNamesHelp": "Określa domyślnie wyświetlany tytuł, gdy brak dostępnych metadanych lokalnych i od dostawców internetowych.", "Premiere": "Premiera", @@ -1146,7 +1146,7 @@ "Record": "Nagrywaj", "RecordSeries": "Nagraj seryjnie", "RecordingCancelled": "Anulowano nagranie.", - "RecordingPathChangeMessage": "Zmiana folderu z nagraniami nie spowoduje przeniesienia już istniejących nagrań, ze starej lokalizacji do nowej. Jeśli jest to wymagane, należy to zrobić manualnie.", + "MessageChangeRecordingPath": "Zmiana folderu z nagraniami nie spowoduje przeniesienia już istniejących nagrań, ze starej lokalizacji do nowej. Jeśli jest to wymagane, należy to zrobić manualnie.", "RecordingScheduled": "Zaplanowano nagranie.", "Recordings": "Nagrania", "Refresh": "Odśwież", @@ -1301,7 +1301,7 @@ "TvLibraryHelp": "Zapoznaj się z instrukcją{1} nazewnictwa seriali {0}.", "Uniform": "Jednolity", "UninstallPluginConfirmation": "Czy na pewno chcesz usunąć {0}?", - "UninstallPluginHeader": "Usuń wtyczkę", + "HeaderUninstallPlugin": "Usuń wtyczkę", "Unmute": "Dezaktywuj wyciszenie", "Unplayed": "Nieodtwarzane", "Unrated": "Nieokreślone", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 413abeea73..6c7c49718a 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -49,7 +49,7 @@ "Box": "Caixa", "BoxRear": "Caixa (traseira)", "Browse": "Navegar", - "BrowsePluginCatalogMessage": "Navegue pelo nosso catálogo de plugins para ver os plugins disponíveis.", + "MessageBrowsePluginCatalog": "Navegue pelo nosso catálogo de plugins para ver os plugins disponíveis.", "BurnSubtitlesHelp": "Determina se o servidor deveria gravar as legendas no vídeo ao convertê-lo, dependendo do formato da legenda. Evitar a gravação da legenda irá melhorar a performance do servidor. Selecione Auto para gravar legendas baseados em imagem dos tipos (ex. VOBSUB, PGS, SUB/IDX, etc.) e algumas legendas ASS/SSA.", "ButtonAdd": "Adicionar", "ButtonAddMediaLibrary": "Adicionar Biblioteca de Mídia", @@ -153,7 +153,7 @@ "DatePlayed": "Data de reprodução", "DeathDateValue": "Morte: {0}", "Default": "Padrão", - "DefaultErrorMessage": "Ocorreu um erro ao processar o pedido. Por favor, tente novamente mais tarde.", + "MessageDefaultError": "Ocorreu um erro ao processar o pedido. Por favor, tente novamente mais tarde.", "DefaultMetadataLangaugeDescription": "Estas são suas configurações padrão e podem ser personalizadas por biblioteca.", "DefaultSubtitlesHelp": "Legendas são carregadas com base nas configurações padrão e de legendas forçadas nos metadados incorporados. As preferências de idioma são consideradas quando existem múltiplas opções disponíveis.", "Delete": "Excluir", @@ -219,7 +219,7 @@ "ErrorAddingXmlTvFile": "Ocorreu um erro ao acessar o arquivo XmlTV. Por favor, verifique se o arquivo existe e tente novamente.", "ErrorDeletingItem": "Ocorreu um erro ao excluir o item do Servidor Jellyfin. Por favor, verifique se o Servidor Jellyfin possui acesso de gravação na pasta de mídia e tente novamente.", "ErrorGettingTvLineups": "Ocorreu um erro ao fazer download da programação de TV. Por favor, certifique-se que sua informação esteja correta e tente novamente.", - "ErrorMessageStartHourGreaterThanEnd": "A hora final deve ser maior que a hora inicial.", + "ErrorStartHourGreaterThanEnd": "A hora final deve ser maior que a hora inicial.", "ErrorPleaseSelectLineup": "Por favor, selecione a programação e tente novamente. Se não houver programações disponíveis, verifique se o seu nome de usuário, senha e código postal estão corretos.", "ErrorSavingTvProvider": "Um erro ocorreu ao salvar o provedor de TV. Por favor, verifique se está acessível e tente novamente.", "EveryNDays": "A cada {0} dias", @@ -918,8 +918,8 @@ "NextUp": "A Seguir", "No": "Não", "NoNewDevicesFound": "Nenhum novo dispositivo encontrado. Para adicionar um novo sintonizador, feche esta mensagem e digite as informações do dispositivo manualmente.", - "NoNextUpItemsMessage": "Nada encontrado. Comece a assistir suas séries!", - "NoPluginConfigurationMessage": "Este plugin não permite alterar configurações.", + "MessageNoNextUpItems": "Nada encontrado. Comece a assistir suas séries!", + "MessageNoPluginConfiguration": "Este plugin não permite alterar configurações.", "NoSubtitleSearchResultsFound": "Nenhum resultado encontrado.", "NoSubtitles": "Não há legendas", "NoSubtitlesHelp": "Legendas não serão carregadas por padrão. Elas podem ser carregadas manualmente durante a reprodução.", @@ -1065,7 +1065,7 @@ "PasswordMatchError": "A senha e a confirmação da senha devem ser iguais.", "PasswordResetComplete": "A senha foi redefinida.", "PasswordResetConfirmation": "Deseja realmente redefinir a senha?", - "PasswordResetHeader": "Redefinir Senha", + "HeaderResetPassword": "Redefinir Senha", "PasswordSaved": "Senha salva.", "People": "Pessoas", "PerfectMatch": "Combinação perfeita", @@ -1086,7 +1086,7 @@ "PleaseEnterNameOrId": "Por favor, digite um nome ou ID externa.", "PleaseRestartServerName": "Por favor, reinicie o Servidor Jellyfin - {0}.", "PleaseSelectTwoItems": "Por favor, selecione pelo menos dois itens.", - "PluginInstalledMessage": "O plugin foi instalado com sucesso. O Servidor Jellyfin precisa ser reiniciado para que as alterações sejam aplicadas.", + "MessagePluginInstalled": "O plugin foi instalado com sucesso. O Servidor Jellyfin precisa ser reiniciado para que as alterações sejam aplicadas.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incorporados ao invés de nomes de arquivos", "PreferEmbeddedTitlesOverFileNamesHelp": "Isto determina a exibição padrão do título quando não houverem metadados da internet ou locais disponíveis.", "Premieres": "Estreias", @@ -1107,7 +1107,7 @@ "Record": "Gravar", "RecordSeries": "Gravar série", "RecordingCancelled": "Gravação cancelada.", - "RecordingPathChangeMessage": "Alterar a sua pasta de gravações não migrará as gravações existentes do local anterior para o novo. Se desejar, você necessitará movê-los manualmente.", + "MessageChangeRecordingPath": "Alterar a sua pasta de gravações não migrará as gravações existentes do local anterior para o novo. Se desejar, você necessitará movê-los manualmente.", "RecordingScheduled": "Gravação agendada.", "Recordings": "Gravações", "Refresh": "Atualizar", @@ -1250,7 +1250,7 @@ "TvLibraryHelp": "Verifique o {0}guia de nomes de séries{1}.", "Uniform": "Uniforme", "UninstallPluginConfirmation": "Deseja realmente desinstalar {0}?", - "UninstallPluginHeader": "Desinstalar Plugin", + "HeaderUninstallPlugin": "Desinstalar Plugin", "Unmute": "Sair do Mudo", "Unplayed": "Não reproduzido", "Unrated": "Não avaliado", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 4243a4869c..5f51f56763 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -7,7 +7,7 @@ "AttributeNew": "Novo", "Audio": "Áudio", "Backdrops": "Imagens de Fundo", - "BrowsePluginCatalogMessage": "Procure extensões disponíveis no nosso catálogo.", + "MessageBrowsePluginCatalog": "Procure extensões disponíveis no nosso catálogo.", "ButtonAdd": "Adicionar", "ButtonAddMediaLibrary": "Adicionar Biblioteca de Multimédia", "ButtonAddScheduledTaskTrigger": "Adicionar tarefa agendada", @@ -527,7 +527,7 @@ "Mute": "Desativar Som", "NewCollection": "Nova Coleção", "NewCollectionNameExample": "Exemplo: Coleção Guerra das Estrelas", - "NoNextUpItemsMessage": "Nenhum encontrado. Comece a ver os seus programas!", + "MessageNoNextUpItems": "Nenhum encontrado. Comece a ver os seus programas!", "OptionAdminUsers": "Administradores", "OptionAlbum": "Álbum", "OptionAlbumArtist": "Artista do Álbum", @@ -643,7 +643,7 @@ "PasswordMatchError": "A palavra-passe e a confirmação devem coincidir.", "PasswordResetComplete": "A palavra-passe foi redefinida.", "PasswordResetConfirmation": "Tem a certeza de que deseja redefinir a palavra-passe?", - "PasswordResetHeader": "Redefinir Palavra-Passe", + "HeaderResetPassword": "Redefinir Palavra-Passe", "PasswordSaved": "Palavra-passe guardada.", "PinCodeResetComplete": "O código PIN foi redefinido.", "PinCodeResetConfirmation": "Tem a certeza de que devia repôr o código PIN?", @@ -734,7 +734,7 @@ "TrackCount": "{0} faixas", "Tuesday": "Terça", "UninstallPluginConfirmation": "Tem a certeza de que deseja desinstalar {0}?", - "UninstallPluginHeader": "Desinstalar Extensão", + "HeaderUninstallPlugin": "Desinstalar Extensão", "Unmute": "Ativar som", "UserProfilesIntro": "O Jellyfin suporta perfis de utilizadores, permitindo que cada utilizador tenha as suas configurações de visualização, estado da reprodução e controlos parentais.", "ValueAudioCodec": "Codec de Áudio: {0}", @@ -881,7 +881,7 @@ "ExtraLarge": "Extra Grande", "EveryNDays": "A cada {0} dias", "ErrorSavingTvProvider": "Ocorreu um erro ao guardar o provedor do serviços de TV. Por favor, garanta que está acessível e tente de novo.", - "ErrorMessageStartHourGreaterThanEnd": "A hora de fim deve ser superior à hora de início.", + "ErrorStartHourGreaterThanEnd": "A hora de fim deve ser superior à hora de início.", "ErrorDeletingItem": "Ocorreu um erro ao apagar o item do Servidor Jellyfin. Por favor, verifique o acesso de escrita do Servidor Jellyfin à pasta e tente de novo.", "ErrorAddingTunerDevice": "Ocorreu um erro ao adicionar o dispositivo de sintonização. Por favor, garanta que está acessível e tente de novo.", "ErrorAddingXmlTvFile": "Ocorreu um erro ao aceder ao ficheiro XMLTV. Por favor, certifique-se que o ficheiro está acessível e tente de novo.", @@ -915,7 +915,7 @@ "DirectStreamHelp2": "Reprodução direta de um ficheiro requer pouco processamento e não implica perda de qualidade num vídeo.", "DefaultSubtitlesHelp": "As legendas são carregadas com base nas definições por defeito ou forçado nos metadados. As preferências de idioma são consideradas quando existem múltiplas opções disponíveis.", "DefaultMetadataLangaugeDescription": "Estes são os valores por defeito que podem ser customizados para cada uma das bibliotecas.", - "DefaultErrorMessage": "Ocorreu um erro a processar o pedido. Por favor, tente novamente mais tarde.", + "MessageDefaultError": "Ocorreu um erro a processar o pedido. Por favor, tente novamente mais tarde.", "Default": "Por defeito", "DeathDateValue": "Faleceu: {0}", "DatePlayed": "Reproduzido a", @@ -997,12 +997,12 @@ "RepeatOne": "Repetir este", "RepeatMode": "Modo de Repetição", "ServerRestartNeededAfterPluginInstall": "O Servidor Jellyfin necessitará de reiniciar depois de instalar uma extensão.", - "NoPluginConfigurationMessage": "Esta extensão não é configurável.", + "MessageNoPluginConfiguration": "Esta extensão não é configurável.", "MessagePluginInstallDisclaimer": "As extensões desenvolvidas pela comunidade Jellyfin são uma ótima forma de melhorar a experiência de utilização do Jellyfin, adicionando novas funcionalidades e benefícios. Antes de proceder à instalação, tenha em atenção que estas podem alterar determinados comportamentos no Servidor Jellyfin e provocar efeitos como tempos de atualização da Biblioteca mais longos, processamento adicional em segundo plano e estabilidade do sistema reduzida.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar esta extensão, inicie sessão localmente no servidor.", "MessageInstallPluginFromApp": "Esta extensão deverá ser instalada a partir da aplicação onde tem intenção de a utilizar.", "HeaderPluginInstallation": "Instalação de Extensão", - "PluginInstalledMessage": "A extensão foi instalada com sucesso. O Servidor Jellyfin necessitará de reiniciar para aplicar as alterações.", + "MessagePluginInstalled": "A extensão foi instalada com sucesso. O Servidor Jellyfin necessitará de reiniciar para aplicar as alterações.", "PleaseRestartServerName": "Por favor, reinicie o Servidor Jellyfin - {0}.", "PleaseConfirmPluginInstallation": "Por favor clique em OK para confirmar que leu o conteúdo acima, e que deseja prosseguir com a instalação da extensão.", "PleaseAddAtLeastOneFolder": "Por favor, adicione pelo menos uma pasta a esta Biblioteca, utilizando para isso o botão Adicionar.", @@ -1207,7 +1207,7 @@ "StopRecording": "Parar gravação", "SeriesRecordingScheduled": "Gravação da série agendada.", "Recordings": "Gravações", - "RecordingPathChangeMessage": "Alterar a localização das gravações não irá migrar as gravações existentes da localização atual para a nova. Os ficheiros deverão ser movidos manualmente, se necessário.", + "MessageChangeRecordingPath": "Alterar a localização das gravações não irá migrar as gravações existentes da localização atual para a nova. Os ficheiros deverão ser movidos manualmente, se necessário.", "ManageRecording": "Gerir gravação", "OptionLoginAttemptsBeforeLockout": "Determina quantas falhas de início de sessão são admitidas antes de a conta ser bloqueada.", "OptionList": "Lista", diff --git a/src/strings/pt.json b/src/strings/pt.json index e6d21f584d..0640f82870 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -24,7 +24,7 @@ "UserAgentHelp": "Forneça um user-agent HTTP personalizado.", "Unplayed": "Por reproduzir", "Unmute": "Activar som", - "UninstallPluginHeader": "Desinstalar Extensão", + "HeaderUninstallPlugin": "Desinstalar Extensão", "UninstallPluginConfirmation": "Tem a certeza que deseja desinstalar {0}?", "Uniform": "Uniforme", "Tuesday": "Terça", @@ -138,7 +138,7 @@ "Raised": "Alto relevo", "Programs": "Programas", "Producer": "Produtor", - "PluginInstalledMessage": "A extensão foi instalada com sucesso. O Servidor Jellyfin necessitará de reiniciar para aplicar as alterações.", + "MessagePluginInstalled": "A extensão foi instalada com sucesso. O Servidor Jellyfin necessitará de reiniciar para aplicar as alterações.", "PleaseSelectTwoItems": "Por favor seleccione pelo menos dois itens.", "PleaseRestartServerName": "Por favor, reinicie o Servidor Jellyfin - {0}.", "PleaseEnterNameOrId": "Por favor, digite um nome ou Id externo.", @@ -161,7 +161,7 @@ "People": "Pessoas", "PasswordSaved": "Palavra-passe guardada.", "PasswordResetProviderHelp": "Seleccione um provedor de reposição de palavra-passe a ser usado quando um utilizador requisitar uma reposição de palavra-passe", - "PasswordResetHeader": "Redefinir Palavra-Passe", + "HeaderResetPassword": "Redefinir Palavra-Passe", "PasswordResetConfirmation": "Tem a certeza que deseja redefinir a palavra-passe?", "PasswordResetComplete": "A palavra-passe foi redefinida.", "PasswordMatchError": "A palavra-passe e a confirmação devem coincidir.", @@ -678,8 +678,8 @@ "OptionAlbum": "Álbum", "OptionAdminUsers": "Administradores", "OneChannel": "Um canal", - "NoPluginConfigurationMessage": "Esta extensão não é configurável.", - "NoNextUpItemsMessage": "Nenhum encontrado. Comece a ver os seus programas!", + "MessageNoPluginConfiguration": "Esta extensão não é configurável.", + "MessageNoNextUpItems": "Nenhum encontrado. Comece a ver os seus programas!", "News": "Notícias", "NewCollectionNameExample": "Exemplo: Colecção Guerra das Estrelas", "NewCollection": "Nova Colecção", @@ -855,7 +855,7 @@ "EveryNDays": "A cada {0} dias", "ErrorSavingTvProvider": "Ocorreu um erro ao guardar o provedor do serviços de TV. Por favor, garanta que está acessível e tente de novo.", "ErrorPleaseSelectLineup": "Por favor selecione a programação e tente novamente. Se não houver programações disponíveis, verifique se o seu nome de utilizador, senha e código postal estão correctos.", - "ErrorMessageStartHourGreaterThanEnd": "A hora de fim deve ser superior à hora de início.", + "ErrorStartHourGreaterThanEnd": "A hora de fim deve ser superior à hora de início.", "ErrorGettingTvLineups": "Ocorreu um erro ao transferir a programação de TV. Por favor, certifique-se que a sua informação está correcta e tente novamente.", "ErrorDeletingItem": "Ocorreu um erro ao apagar o item do Servidor Jellyfin. Por favor, verifique o acesso de escrita do Servidor Jellyfin à pasta e tente de novo.", "ErrorAddingXmlTvFile": "Ocorreu um erro ao aceder ao ficheiro XmlTV. Por favor, garanta que o ficheiro está acessível e tente de novo.", @@ -919,7 +919,7 @@ "DeleteDeviceConfirmation": "Tem a certeza que deseja remover este dispositivo? Reaparecerá na próxima vez que o utilizador inicie sessão a partir dele.", "Delete": "Remover", "DefaultSubtitlesHelp": "As legendas são carregadas com base nas definições por omissão ou forçado nos metadados. As preferências de idioma são consideradas quando existem múltiplas opções disponíveis.", - "DefaultErrorMessage": "Ocorreu um erro ao processar o pedido. Por favor, tente novamente mais tarde.", + "MessageDefaultError": "Ocorreu um erro ao processar o pedido. Por favor, tente novamente mais tarde.", "Default": "Por omissão", "DeathDateValue": "Faleceu: {0}", "DatePlayed": "Reproduzido a", @@ -1068,7 +1068,7 @@ "ButtonAddImage": "Adicionar Imagem", "ButtonAdd": "Adicionar", "BurnSubtitlesHelp": "Determina se o servidor deve integrar as legendas durante a conversão de vídeo, dependendo do formato da legenda. Evitar a integração de legendas melhora o desempenho do servidor. Selecione Automático para que legendas baseadas em imagem (VOBSUB, PGS, SUB/IDX) e certos formatos ASS/SSA sejam integrados.", - "BrowsePluginCatalogMessage": "Explore as extensões disponíveis no nosso catálogo.", + "MessageBrowsePluginCatalog": "Explore as extensões disponíveis no nosso catálogo.", "Browse": "Explorar", "BoxRear": "Caixa (verso)", "Box": "Caixa", diff --git a/src/strings/ro.json b/src/strings/ro.json index ccb91f0a50..f341a1699d 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -117,7 +117,7 @@ "Monday": "Luni", "MoreUsersCanBeAddedLater": "Mai mulți utilizatori pot fi adăugați mai târziu din Tabloul de Bord.", "NewCollectionNameExample": "Exemplu: Star Wars Collection", - "NoNextUpItemsMessage": "Nu s-a gasit nimic. Începe să vizionezi seriale!", + "MessageNoNextUpItems": "Nu s-a gasit nimic. Începe să vizionezi seriale!", "OptionAllowBrowsingLiveTv": "Permite accessul la Live TV", "OptionAllowLinkSharing": "Permite partajarea pe rețelele de socializare", "OptionAllowLinkSharingHelp": "Doar paginile wev ce contin informații despre conținutul media va fi partajat. Fișierele media nu vor fi partajate niciodată pentru public. Partajările sunt limitate ca timp și vor expira după {0} zile.", @@ -275,7 +275,7 @@ "Audio": "Audio", "BoxRear": "Cutie (spate)", "Browse": "Răsfoire", - "BrowsePluginCatalogMessage": "Răsfoiți catalogul de pluginuri pentru a vedea ce este disponibil.", + "MessageBrowsePluginCatalog": "Răsfoiți catalogul de pluginuri pentru a vedea ce este disponibil.", "ButtonAddMediaLibrary": "Adaugă Librărie Media", "ButtonAddServer": "Adaugă Server", "ButtonArrowDown": "Jos", @@ -345,7 +345,7 @@ "DatePlayed": "Data redării", "DeathDateValue": "Mort: {0}", "Default": "Implicit", - "DefaultErrorMessage": "A fost o eroare în procesarea cererii. Vă rugam încercați din nou mai târziu.", + "MessageDefaultError": "A fost o eroare în procesarea cererii. Vă rugam încercați din nou mai târziu.", "DeleteImageConfirmation": "Sigur doriți să ștergeți această imagine?", "ButtonRename": "Redenumește", "ButtonRepeat": "Repetă", @@ -562,7 +562,7 @@ "EnableStreamLoopingHelp": "Activați acestă opțiune dacă fluxurile live conțin doar câteva secunde de date și trebuie solicitate în mod continuu. Activarea acestei opțiuni atunci când nu este necesar poate provoca probleme.", "ErrorAddingListingsToSchedulesDirect": "A apărut o eroare la adăugarea liniei în contul dvs. Schedules Direct. Schedules Direct permite doar un număr limitat de linii pentru fiecare cont. Este posibil să fie nevoie să vă conectați la site-ul web Schedules Direct și să eliminați alte înregistrări din cont înainte de a continua.", "ErrorAddingMediaPathToVirtualFolder": "A apărut o eroare la adăugarea căii de acces la fișierul media. Vă rugăm să vă asigurați că ruta este validă și procesul Jellyfin Server are acces la locația respectivă.", - "ErrorMessageStartHourGreaterThanEnd": "Timpul de oprire trebuie să fie mai mare decât cel de pornire.", + "ErrorStartHourGreaterThanEnd": "Timpul de oprire trebuie să fie mai mare decât cel de pornire.", "ErrorPleaseSelectLineup": "Selectați o linie și încercați din nou. Dacă nu sunt disponibile linii, atunci vă rugăm să verificați dacă numele dvs. de utilizator, parola și codul poștal sunt corecte.", "ExitFullscreen": "Ieșiți din modul ecran complet", "H264CrfHelp": "Factorul de Rată Constantă (CRF) este setarea implicită a calității pentru codificatorul x264. Puteți seta valorile între 0 și 51, unde valorile mai mici ar avea ca rezultat o calitate mai bună (în detrimentul dimensiunilor mai mari de fișiere). Valorile recomandate sunt cuprinse între 18 și 28. Valoarea implicită pentru x264 este 23, deci puteți utiliza acest lucru ca punct de plecare.", @@ -1007,7 +1007,7 @@ "NoSubtitlesHelp": "Subtitrările nu vor fi încărcate în mod implicit. Acestea pot fi însă activate manual în timpul redării.", "NoSubtitles": "Fără", "NoSubtitleSearchResultsFound": "Nici un rezultat găsit.", - "NoPluginConfigurationMessage": "Acest plugin nu are setări de configurat.", + "MessageNoPluginConfiguration": "Acest plugin nu are setări de configurat.", "NoNewDevicesFound": "Nu s-au găsit dispozitive noi. Pentru a adăuga un nou tuner, închideți acest dialog și introduceți informațiile dispozitivului manual.", "No": "Nu", "NextUp": "Urmează", @@ -1239,7 +1239,7 @@ "Refresh": "Reîmprospătează", "Recordings": "Înregistrări", "RecordingScheduled": "Înregistrare programată.", - "RecordingPathChangeMessage": "Modificarea dosarului dvs. de înregistrare nu va migra înregistrările existente din vechea locație la cea nouă. Dacă doriți, trebuie să le mutați manual.", + "MessageChangeRecordingPath": "Modificarea dosarului dvs. de înregistrare nu va migra înregistrările existente din vechea locație la cea nouă. Dacă doriți, trebuie să le mutați manual.", "RecordingCancelled": "Înregistrare anulată.", "RecordSeries": "Înregistrează serialele", "Record": "Înregistrează", @@ -1261,7 +1261,7 @@ "Premiere": "Premieră", "PreferEmbeddedTitlesOverFileNamesHelp": "Aceasta determină titlul afișat implicit atunci când nu sunt disponibile metadate din internet sau metadate locale.", "PreferEmbeddedTitlesOverFileNames": "Preferă titlurile incluse decât numele fișierelor", - "PluginInstalledMessage": "Pluginul a fost instalat cu succes. Jellyfin Server va trebui să fie repornit pentru ca modificările să intre în vigoare.", + "MessagePluginInstalled": "Pluginul a fost instalat cu succes. Jellyfin Server va trebui să fie repornit pentru ca modificările să intre în vigoare.", "PleaseSelectTwoItems": "Vă rugăm să selectați cel puțin două elemente.", "PleaseRestartServerName": "Vă rugăm să reporniți Jellyfin Server - {0}.", "PleaseEnterNameOrId": "Vă rugăm să introduceți un nume sau un ID extern.", @@ -1283,7 +1283,7 @@ "People": "Oameni", "PasswordSaved": "Parolă salvată.", "PasswordResetProviderHelp": "Alegeți un furnizor de resetare a parolei pentru a fi utilizat atunci când acest utilizator solicită o resetare a parolei", - "PasswordResetHeader": "Resetează parola", + "HeaderResetPassword": "Resetează parola", "PasswordResetConfirmation": "Sigur doriți să resetați parola?", "PasswordResetComplete": "Parola a fost resetată.", "PasswordMatchError": "Confirmarea parolei și parola trebuie să corespundă.", @@ -1401,7 +1401,7 @@ "Unrated": "Neevaluat", "Unplayed": "Nerulat", "Unmute": "Activați sunetul", - "UninstallPluginHeader": "Dezinstalați pluginul", + "HeaderUninstallPlugin": "Dezinstalați pluginul", "UninstallPluginConfirmation": "Sigur doriți să dezinstalați {0}?", "Uniform": "Constant", "TvLibraryHelp": "Examinați {0}ghidul de denumire TV{1}.", diff --git a/src/strings/ru.json b/src/strings/ru.json index 0a471bca0c..0ba5eeac27 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -53,7 +53,7 @@ "Box": "Коробка", "BoxRear": "Коробка (задняя часть)", "Browse": "Навигация", - "BrowsePluginCatalogMessage": "Просмотрите каталог плагинов, чтобы ознакомиться с имеющимися плагинами.", + "MessageBrowsePluginCatalog": "Просмотрите каталог плагинов, чтобы ознакомиться с имеющимися плагинами.", "BurnSubtitlesHelp": "Определяется, должен ли сервер внедрять субтитры при перекодировании. Избежание этого значительно улучшит производительность. Выберите «Авто» для записи основанных на графике форматов (VOBSUB, PGS, SUB, IDX и др.) и некоторых субтитров ASS или SSA.", "ButtonAdd": "Добавить", "ButtonAddMediaLibrary": "Добавить медиатеку", @@ -163,7 +163,7 @@ "DatePlayed": "Дата воспроизведения", "DeathDateValue": "Дата смерти: {0}", "Default": "По умолчанию", - "DefaultErrorMessage": "Произошла ошибка при обработке запроса. Повторите попытку позже.", + "MessageDefaultError": "Произошла ошибка при обработке запроса. Повторите попытку позже.", "DefaultMetadataLangaugeDescription": "Они являются значениями по умолчанию и могут быть подстроены индивидуально для каждой медиатеки.", "DefaultSubtitlesHelp": "Загрузки субтитров определяются флагами \"По умолчанию\" и \"Форсированные\" во внедрённых метаданных. Языковые настройки учитываются при наличии нескольких опций.", "Delete": "Удалить", @@ -232,7 +232,7 @@ "ErrorAddingXmlTvFile": "Произошла ошибка при доступе к XMLTV-файлу. Убедитесь, что файл существует и повторите попытку.", "ErrorDeletingItem": "Произошла ошибка при удалении элемента с Jellyfin Server. Проверьте, что у Jellyfin Server имеется доступ на запись в медиапапку и повторите попытку.", "ErrorGettingTvLineups": "Произошла ошибка при загрузке списков сопоставления. Убедитесь, что ваши данные правильны и повторите попытку.", - "ErrorMessageStartHourGreaterThanEnd": "Конечное время должно быть позже, чем начальное время.", + "ErrorStartHourGreaterThanEnd": "Конечное время должно быть позже, чем начальное время.", "ErrorPleaseSelectLineup": "Выделите список сопоставления и повторите попытку. Если списков сопоставления не имеется, то проверьте, что ваше имя пользователя, пароль и почтовый код являются верными.", "ErrorSavingTvProvider": "Произошла ошибка при сохранении поставщика ТВ. Убедитесь, что он доступен и повторите попытку.", "EveryNDays": "Каждые {0} дней", @@ -955,8 +955,8 @@ "NextUp": "Очередное", "No": "Нет", "NoNewDevicesFound": "Новых устройств не обнаружено. Чтобы добавить новый тюнер, закройте данный диалог и введите сведения об устройстве вручную.", - "NoNextUpItemsMessage": "Ничего не найдено. Начните смотреть свои ТВ-передачи!", - "NoPluginConfigurationMessage": "В данном плагине нет параметров конфигурирования.", + "MessageNoNextUpItems": "Ничего не найдено. Начните смотреть свои ТВ-передачи!", + "MessageNoPluginConfiguration": "В данном плагине нет параметров конфигурирования.", "NoSubtitleSearchResultsFound": "Результатов не найдено.", "NoSubtitles": "Ничего", "NoSubtitlesHelp": "По умолчанию, субтитры не будут загружаться. Они могут быть все ещё включены вручную во время воспроизведения.", @@ -1114,7 +1114,7 @@ "PasswordMatchError": "Пароль и подтверждение пароля должны совпадать.", "PasswordResetComplete": "Пароль был сброшен.", "PasswordResetConfirmation": "Вы действительно хотите сбросить пароль?", - "PasswordResetHeader": "Сброс пароля", + "HeaderResetPassword": "Сброс пароля", "PasswordSaved": "Пароль был сохранён.", "People": "Люди", "PerfectMatch": "Полное соответствие", @@ -1136,7 +1136,7 @@ "PleaseEnterNameOrId": "Введите название или внешний ID.", "PleaseRestartServerName": "Перезапустите Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Выберите хотя бы два элемента.", - "PluginInstalledMessage": "Плагин установлен успешно. Чтобы изменения вступили в силу, будет необходимо перезапустить Jellyfin Server.", + "MessagePluginInstalled": "Плагин установлен успешно. Чтобы изменения вступили в силу, будет необходимо перезапустить Jellyfin Server.", "PreferEmbeddedTitlesOverFileNames": "Предпочитать внедрённые названия, чем имена файлов", "PreferEmbeddedTitlesOverFileNamesHelp": "Этим определяется отображаемое название по умолчанию, когда нет метаданных с интернета или локальные метаданные недоступны.", "Premiere": "Премьера", @@ -1158,7 +1158,7 @@ "Record": "Записать", "RecordSeries": "Записать сериал", "RecordingCancelled": "Запись отменена.", - "RecordingPathChangeMessage": "Изменение папки для записи не приведёт к переносу существующих записей со старого места на новое. Вам нужно переместить их вручную, если это необходимо.", + "MessageChangeRecordingPath": "Изменение папки для записи не приведёт к переносу существующих записей со старого места на новое. Вам нужно переместить их вручную, если это необходимо.", "RecordingScheduled": "Запись назначена.", "Recordings": "Записи", "Refresh": "Обновить", @@ -1315,7 +1315,7 @@ "TvLibraryHelp": "Просмотрите {0}руководство по именованию передач{1}.", "Uniform": "Однородная", "UninstallPluginConfirmation": "Вы действительно хотите удалить {0}?", - "UninstallPluginHeader": "Удаление плагина", + "HeaderUninstallPlugin": "Удаление плагина", "Unmute": "Вкл. звук", "Unplayed": "Невоспроизведённое", "Unrated": "Без категории", diff --git a/src/strings/sk.json b/src/strings/sk.json index dc754fdff2..760722a9d3 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -110,7 +110,7 @@ "DateAdded": "Dátum pridania", "DatePlayed": "Dátum prehrania", "DeathDateValue": "Zomrel/a: {0}", - "DefaultErrorMessage": "Pri spracovaní požiadavky došlo k chybe. Prosím, skúste to neskôr znova.", + "MessageDefaultError": "Pri spracovaní požiadavky došlo k chybe. Prosím, skúste to neskôr znova.", "Delete": "Zmazať", "DeleteDeviceConfirmation": "Ste si istý, že chcete odstrániť toto zariadenie? Objaví sa znovu, keď sa ním používateľ nabudúce prihlási.", "DeleteImage": "Zmazať obrázok", @@ -143,7 +143,7 @@ "EnablePhotos": "Zobraziť fotky", "EndsAtValue": "Končí o {0}", "Episodes": "Epizódy", - "ErrorMessageStartHourGreaterThanEnd": "Čas ukončenia musí byť väčší ako čas štartu.", + "ErrorStartHourGreaterThanEnd": "Čas ukončenia musí byť väčší ako čas štartu.", "EveryNDays": "Každých {0} dní", "ExitFullscreen": "Opustiť celú obrazovku", "ExtraLarge": "Veľmi veľké", @@ -573,8 +573,8 @@ "Next": "Ďalšie", "NextUp": "Nasleduje", "No": "Nie", - "NoNextUpItemsMessage": "Nič nenájdené. Začnite pozerať vaše seriály!", - "NoPluginConfigurationMessage": "Tento zásuvný modul nemá žiadne nastavenia.", + "MessageNoNextUpItems": "Nič nenájdené. Začnite pozerať vaše seriály!", + "MessageNoPluginConfiguration": "Tento zásuvný modul nemá žiadne nastavenia.", "NoSubtitleSearchResultsFound": "Žiadne výsledky.", "NoSubtitles": "Žiadne", "None": "Žiadne", @@ -682,7 +682,7 @@ "PasswordMatchError": "Heslo a potvrdenie hesla sa musia zhodovať.", "PasswordResetComplete": "Heslo bolo obnovené.", "PasswordResetConfirmation": "Naozaj chcete obnoviť heslo?", - "PasswordResetHeader": "Obnoviť heslo", + "HeaderResetPassword": "Obnoviť heslo", "PasswordSaved": "Heslo uložené.", "People": "Ľudia", "PerfectMatch": "Perfektná zhoda", @@ -701,7 +701,7 @@ "PleaseEnterNameOrId": "Prosím, zadajte meno alebo externé ID.", "PleaseRestartServerName": "Prosím reštartujte Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Vyberte prosím aspoň dve položky.", - "PluginInstalledMessage": "Rozšírenie bolo úspešne nainštalované. Je potrebný reštart Jellyfin Server aby sa prejavili zmeny.", + "MessagePluginInstalled": "Rozšírenie bolo úspešne nainštalované. Je potrebný reštart Jellyfin Server aby sa prejavili zmeny.", "Premiere": "Premiéra", "Premieres": "Premiéry", "Previous": "Predchádzajúce", @@ -819,7 +819,7 @@ "Trailers": "Trailery", "Tuesday": "Utorok", "UninstallPluginConfirmation": "Ste si istý, že chcete odinštalovať {0}?", - "UninstallPluginHeader": "Odinštalovať rozšírenie", + "HeaderUninstallPlugin": "Odinštalovať rozšírenie", "Unmute": "Zapnúť zvuk", "Unplayed": "Neprehrané", "Unrated": "Nehodnotené", @@ -1172,7 +1172,7 @@ "ButtonSplit": "Rozdeliť", "ButtonAddImage": "Pridať obrázok", "BurnSubtitlesHelp": "Určuje, či má server vpáliť titulky počas transkódovania videa. Vynechanie tejto možnosti výrazne zvýši výkon. Vyberte možnosť Auto, pokiaľ chcete vpáliť do obrazu titulky v grafickom formáte (VOBSUB, PGS, SUB, IDX, …) a niektoré ASS alebo SSA titulky.", - "BrowsePluginCatalogMessage": "Prehliadnite si náš katalóg dostupných zásuvných modulov.", + "MessageBrowsePluginCatalog": "Prehliadnite si náš katalóg dostupných zásuvných modulov.", "Browse": "Prechádzať", "Blacklist": "Blacklist", "Banner": "Banner", @@ -1215,7 +1215,7 @@ "SelectAdminUsername": "Prosím, vyberte si používateľské meno pre účet administrátora.", "RefreshQueued": "Obnovenie zaradené do fronty.", "RefreshDialogHelp": "Metadáta sa obnovujú na základe nastavení a internetových služieb, ktoré sú povolené v dashboarde Jellyfin Serveru.", - "RecordingPathChangeMessage": "Zmenou priečinku pre nahrávanie sa existujúce nahrávky automaticky nepresunú zo starej lokácie na na novú. Budete ich musieť presunúť ručne, pokiaľ budete chcieť.", + "MessageChangeRecordingPath": "Zmenou priečinku pre nahrávanie sa existujúce nahrávky automaticky nepresunú zo starej lokácie na na novú. Budete ich musieť presunúť ručne, pokiaľ budete chcieť.", "RecordSeries": "Nahrať sériu", "Raised": "Vystupujúce", "QueueAllFromHere": "Všetko odtiaľto zaradiť do fronty", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 16d8472546..fd9dde8302 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -124,7 +124,7 @@ "Box": "Ovitek", "BoxRear": "Ovitek (zadnja stran)", "Browse": "Brskaj", - "BrowsePluginCatalogMessage": "Poiščite razpoložljive dodatke v našem katalogu.", + "MessageBrowsePluginCatalog": "Poiščite razpoložljive dodatke v našem katalogu.", "BurnSubtitlesHelp": "Določi ali naj strežnik vžge podnapise pri prekodiranju videa. Izogibanje temu lahko občutno izboljša delovanje strežnika. Izberite Samodejno za vžig slikovnih formatov podnapisov (VOBSUB, PGS, SUB, IDX, ...) in nekaterih ASS oziroma SSA podnapisov.", "ButtonAdd": "Dodaj", "Photos": "Fotografije", @@ -257,7 +257,7 @@ "DeleteImage": "Izbriši sliko", "Delete": "Izbiši", "DefaultMetadataLangaugeDescription": "To so vaše privzete nastavitve, ki jih lahko spreminjate za posamezno knjižnico.", - "DefaultErrorMessage": "Prišlo je do težave pri obdelavi zahteve. Poskusite ponovno kasneje.", + "MessageDefaultError": "Prišlo je do težave pri obdelavi zahteve. Poskusite ponovno kasneje.", "Default": "Privzeto", "DeathDateValue": "Smrt: {0}", "DatePlayed": "Predvajano", @@ -466,7 +466,7 @@ "EnableStreamLooping": "Samodejno ponavljaj prenose v živo", "DropShadow": "Senca", "EveryNDays": "Vsakih {0} dni", - "ErrorMessageStartHourGreaterThanEnd": "Čas konca mora biti večji od časa začetka.", + "ErrorStartHourGreaterThanEnd": "Čas konca mora biti večji od časa začetka.", "ErrorDeletingItem": "Prišlo je do težave pri brisanju predstavnosti s strežnika. Preverite ali ima Jellyfin strežnik dovoljenje za pisanje v mapi s predstavnostjo in poskusite znova.", "ErrorAddingXmlTvFile": "Prišlo je do težave pri dostopu do XMLTV datoteke. Preverite ali datoteka obstaja in poskusite znova.", "ErrorAddingMediaPathToVirtualFolder": "Prišlo je do težave pri dodajanju poti predstavnosti. Preverite ali je pot veljavna in da ima Jellyfin strežnik dovoljenja za dostop.", @@ -756,7 +756,7 @@ "Small": "Majhno", "SmartSubtitlesHelp": "Podnapisi, ki se ujemajo z želenim jezikom, bodo naloženi, ko je zvok v tujem jeziku.", "SubtitleAppearanceSettingsDisclaimer": "Te nastavitve ne vplivajo na grafične podnapise (PGS, DVD, itd.) ali ASS/SSA podnapise, ki imajo vdelan svoj lasten slog.", - "PluginInstalledMessage": "Dodatek je bil uspešno nameščen. Za uveljavitev sprememb je potreben ponovni zagon Jellyfin strežnika.", + "MessagePluginInstalled": "Dodatek je bil uspešno nameščen. Za uveljavitev sprememb je potreben ponovni zagon Jellyfin strežnika.", "MessageNoMovieSuggestionsAvailable": "Trenutno ni na voljo nobenih predlogov za filme. Začnite gledati in ocenjevati vaše filme, ter se nato vrnite sem in si oglejte predloge.", "LabelSelectFolderGroups": "Samodejno združi vsebine iz spodnjih map v poglede kot so Filmi, Glasba in TV:", "TabPlayback": "Predvajanje", @@ -864,7 +864,7 @@ "PasswordMatchError": "Geslo in potrditev gesla se moreta ujemati.", "PasswordResetComplete": "Geslo je bilo ponastavljeno.", "PasswordResetConfirmation": "Ali ste prepričani, da želite ponastaviti geslo?", - "PasswordResetHeader": "Ponastavi geslo", + "HeaderResetPassword": "Ponastavi geslo", "PasswordResetProviderHelp": "Izberite ponudnika ponastavitve gesla, ki bo uporabljen, ko bo ta uporabnik zahteval ponastavitev gesla", "PasswordSaved": "Geslo shranjeno.", "PerfectMatch": "Popolno ujemanje", @@ -1074,7 +1074,7 @@ "OptionAdminUsers": "Skrbniki", "Option3D": "3D", "NumLocationsValue": "{0} mape", - "NoPluginConfigurationMessage": "Ta dodatek nima nobenih nastavitev.", + "MessageNoPluginConfiguration": "Ta dodatek nima nobenih nastavitev.", "No": "Ne", "News": "Novice", "NewEpisodesOnly": "Samo nove epizode", @@ -1389,7 +1389,7 @@ "TabSeries": "Serije", "TabScheduledTasks": "Načrtovana opravila", "TabResumeSettings": "Nadaljuj", - "UninstallPluginHeader": "Odstrani dodatek", + "HeaderUninstallPlugin": "Odstrani dodatek", "UninstallPluginConfirmation": "Ali ste prepričan, da želite odstraniti {0}?", "ServerRestartNeededAfterPluginInstall": "Po namestitvi dodatka bo potreben ponoven zagon jellyfin strežnika.", "TabResponses": "Odzivi", diff --git a/src/strings/sr.json b/src/strings/sr.json index d1ed50e87b..df90a3c0f8 100644 --- a/src/strings/sr.json +++ b/src/strings/sr.json @@ -70,7 +70,7 @@ "ButtonAddMediaLibrary": "Додај каталог медија", "ButtonAddImage": "Додај слику", "ButtonAdd": "Додај", - "BrowsePluginCatalogMessage": "Претражуј наш каталог доступних додатака", + "MessageBrowsePluginCatalog": "Претражуј наш каталог доступних додатака", "Browse": "Изабери", "BoxRear": "Омот (позади)", "Box": "Омот", diff --git a/src/strings/sv.json b/src/strings/sv.json index dfc0fa6826..f12e7eff47 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -45,7 +45,7 @@ "Box": "Omslag", "BoxRear": "Omslag (baksida)", "Browse": "Bläddra", - "BrowsePluginCatalogMessage": "Besök katalogen för att se tillgängliga tillägg.", + "MessageBrowsePluginCatalog": "Besök katalogen för att se tillgängliga tillägg.", "BurnSubtitlesHelp": "Avgör ifall servern ska \"bränna in\" undertexterna under transkodning. Att undvika detta förbättrar prestandan avsevärt. Välj \"Automatisk\" för att bränna bild-baserade format (ex. VOBSUB, PGS, SUB/IDX, ...) och vissa ASS/SSA-undertexter.", "ButtonAdd": "Lägg till", "ButtonAddMediaLibrary": "Lägg till mediabibliotek", @@ -145,7 +145,7 @@ "DatePlayed": "Senast visad", "DeathDateValue": "Död: {0}", "Default": "Standard", - "DefaultErrorMessage": "Ett fel uppstd vid begäran. Försök igen senare.", + "MessageDefaultError": "Ett fel uppstd vid begäran. Försök igen senare.", "DefaultSubtitlesHelp": "Undertexter visas baserat på standardspråk och tvingande undertexter i den inbäddade metadatan. Förvalsspråk kommer väljas när fler val är möjliga.", "Delete": "Ta bort", "DeleteDeviceConfirmation": "Är du säker på att du vill ta bort den här enheten? Den kommer att dyka upp igen nästa gång en användare kopplar upp sig med den.", @@ -208,7 +208,7 @@ "ErrorAddingTunerDevice": "Det gick inte att lågga till den här TV-mottagaren. Säkerställ att den går att nå och försök igen.", "ErrorDeletingItem": "Det gick inte att ta bort det här objektet från Jellyfin-servern. Kontrollera att Jellyfin-servern har skrivrättigheter till media-mappen och försök igen.", "ErrorGettingTvLineups": "Ett fel uppstod vid nedladdningen utav TV-sortimentet. Se till så att uppgifterna stämmer och försök igen.", - "ErrorMessageStartHourGreaterThanEnd": "Sluttiden måste vara senare än starttiden.", + "ErrorStartHourGreaterThanEnd": "Sluttiden måste vara senare än starttiden.", "ErrorPleaseSelectLineup": "Välj en lineup och försök igen. Om inga lineups finns tillgängliga, kolla så att användarnamn, lösenord och postnummer stämmer.", "ErrorSavingTvProvider": "Ett fel uppstod när TV-tjänsten skulle sparas. Se till att den går att nå och försök igen senare.", "EveryNDays": "Var {0}:e dag", @@ -886,8 +886,8 @@ "Next": "Nästa", "No": "Nej", "NoNewDevicesFound": "Inga nya enheter hittades. För att lägga tilll en ny tuner, stäng denna rutan och mata in enhetsinformation manuellt.", - "NoNextUpItemsMessage": "Hittade inget. Sätt igång och titta!", - "NoPluginConfigurationMessage": "Detta tillägg har inga inställningar att konfigurera.", + "MessageNoNextUpItems": "Hittade inget. Sätt igång och titta!", + "MessageNoPluginConfiguration": "Detta tillägg har inga inställningar att konfigurera.", "NoSubtitleSearchResultsFound": "Inga resultat hittades.", "NoSubtitles": "Inga", "NoSubtitlesHelp": "Undertexter kommer inte visas per standard. Det kan fortfarande sättas på manuellt under uppspelning.", @@ -1033,7 +1033,7 @@ "PasswordMatchError": "Lösenordet och bekräftelsen måste överensstämma.", "PasswordResetComplete": "Lösenordet har återställts.", "PasswordResetConfirmation": "Är du säker på att du vill återställa lösenordet?", - "PasswordResetHeader": "Återställ lösenord", + "HeaderResetPassword": "Återställ lösenord", "PasswordSaved": "Lösenordet har sparats.", "People": "Personer", "PerfectMatch": "Perfekt matchning", @@ -1055,7 +1055,7 @@ "PleaseEnterNameOrId": "Ange ett namn eller externt id.", "PleaseRestartServerName": "Vänligen starta om Jellyfin Server - {0}.", "PleaseSelectTwoItems": "Var god välj minst två objekt.", - "PluginInstalledMessage": "Tillägget har installerats. Jellyfin Server behöver startas om för att verkställa ändringarna.", + "MessagePluginInstalled": "Tillägget har installerats. Jellyfin Server behöver startas om för att verkställa ändringarna.", "PreferEmbeddedTitlesOverFileNames": "Föredra inbäddade titlar över filnamnen", "PreferEmbeddedTitlesOverFileNamesHelp": "Det här bestämmer visningstiteln när ingen internet metadata eller lokal metadata finns att tillgå.", "Premiere": "Premiär", @@ -1217,7 +1217,7 @@ "Tuesday": "Tisdag", "TvLibraryHelp": "Läs om {0} namngivningsguide för TV-serier{1}.", "UninstallPluginConfirmation": "Är du säker på att du vill avinstallera {0}?", - "UninstallPluginHeader": "Avinstallera tillägg", + "HeaderUninstallPlugin": "Avinstallera tillägg", "Unmute": "Muting av", "Unplayed": "Inte spelad", "Unrated": "Ej klassad", @@ -1375,7 +1375,7 @@ "SelectAdminUsername": "Vänligen välj ett användarnamn för admin kontot.", "SaveSubtitlesIntoMediaFoldersHelp": "Spara undertexter vid video filer kommer göra det mer enklare att hantera.", "Rewind": "Spola tillbaka", - "RecordingPathChangeMessage": "Ändring av din inspelnings mapp kommer inte migrera existerande inspelningar från gamla platsen till den nya. Du behöver flytta dom manuellt om så önskas.", + "MessageChangeRecordingPath": "Ändring av din inspelnings mapp kommer inte migrera existerande inspelningar från gamla platsen till den nya. Du behöver flytta dom manuellt om så önskas.", "PlaybackData": "Uppspelnings Data", "PasswordResetProviderHelp": "Välj en Lösenords Återställnings Provider att använda när denna användare begär att återställa lösenordet", "OptionThumbCard": "Miniatyr kort", diff --git a/src/strings/tr.json b/src/strings/tr.json index f6ea6c7188..eb89293759 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -5,7 +5,7 @@ "AllowRemoteAccess": "Bu Jellyfin sunucusuna uzaktan bağlanmaya izin ver.", "AllowRemoteAccessHelp": "Eğer işaretlenmemişse, bütün uzak bağlantılar bloke edilicek.", "AttributeNew": "Yeni", - "BrowsePluginCatalogMessage": "Mevcut eklentileri görebilmek için eklenti katologuna göz atın.", + "MessageBrowsePluginCatalog": "Mevcut eklentileri görebilmek için eklenti katologuna göz atın.", "ButtonAdd": "Ekle", "ButtonAddUser": "Kullanıcı Ekle", "ButtonArrowRight": "Sağ", @@ -245,7 +245,7 @@ "Thursday": "Perşembe", "Tuesday": "Salı", "UninstallPluginConfirmation": "Kaldırmak İstediginizden Eminmisiniz {0} ?", - "UninstallPluginHeader": "Eklenti Kaldır", + "HeaderUninstallPlugin": "Eklenti Kaldır", "Wednesday": "Çarşamba", "WelcomeToProject": "Jellyfin'ye Hoş Geldiniz!", "Absolute": "Mutlak", @@ -421,7 +421,7 @@ "DatePlayed": "Oynanan tarih", "DeathDateValue": "Öldü: {0}", "Default": "Varsayılan", - "DefaultErrorMessage": "İsteğin işlenmesi sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.", + "MessageDefaultError": "İsteğin işlenmesi sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.", "DefaultMetadataLangaugeDescription": "Bunlar varsayılan ayarlarınızdır ve kitaplık bazında özelleştirilebilir.", "DeleteUserConfirmation": "Bu kullanıcıyı silmek istediğinden emin misin?", "Depressed": "Bunalımlı", @@ -538,7 +538,7 @@ "EveryNDays": "Her {0} günde", "ErrorSavingTvProvider": "TV sağlayıcısını kaydederken bir hata oluştu. Lütfen erişilebilir olduğundan emin olun ve tekrar deneyin.", "ErrorPleaseSelectLineup": "Lütfen bir grup seçin ve tekrar deneyin. Hiç bir sıralama yoksa, lütfen kullanıcı adınızın, şifrenizin ve posta kodunuzun doğru olup olmadığını kontrol edin.", - "ErrorMessageStartHourGreaterThanEnd": "Bitiş saati, başlangıç saatinden büyük olmalıdır.", + "ErrorStartHourGreaterThanEnd": "Bitiş saati, başlangıç saatinden büyük olmalıdır.", "ErrorGettingTvLineups": "TV dizilimini indirirken bir hata oluştu. Lütfen bilgilerinizin doğru olduğundan emin olun ve tekrar deneyin.", "ErrorDeletingItem": "Öğe Jellyfin Sunucusundan silinirken bir hata oluştu. Lütfen Jellyfin Server'ın medya klasörüne yazma erişimi olup olmadığını kontrol edin ve tekrar deneyin.", "ErrorAddingXmlTvFile": "XmlTV dosyasına erişilirken bir hata oluştu. Lütfen dosyanın var olduğundan emin olun ve tekrar deneyin.", diff --git a/src/strings/vi.json b/src/strings/vi.json index 4481559761..d4b120c61c 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -1,7 +1,7 @@ { "Add": "Thêm", "All": "Tất cả", - "BrowsePluginCatalogMessage": "Duyệt qua các danh mục plugin của chúng tôi để xem các plugin có sẵn.", + "MessageBrowsePluginCatalog": "Duyệt qua các danh mục plugin của chúng tôi để xem các plugin có sẵn.", "ButtonAdd": "Thêm", "ButtonAddUser": "Thêm người dùng", "ButtonCancel": "Thoát", @@ -115,7 +115,7 @@ "TellUsAboutYourself": "Nói cho chúng tôi biết đôi điều về Bạn", "ThisWizardWillGuideYou": "Thủ thuật này sẽ hướng dẫn quá trình cài đặt cho bạn. Để bắt đầu, vui lòng lựa chọn ngôn ngữ bạn ưa thích.", "UninstallPluginConfirmation": "Bạn có chắc muốn gỡ bỏ{0}?", - "UninstallPluginHeader": "Gỡ bỏ Plugin", + "HeaderUninstallPlugin": "Gỡ bỏ Plugin", "AccessRestrictedTryAgainLater": "Truy cập hiện đang bị hạn chế. Hãy thử lại sau.", "AddToCollection": "Thêm vào bộ sưu tập", "Actor": "Diễn viên", @@ -237,7 +237,7 @@ "ButtonSignIn": "Đăng nhập", "ButtonShutdown": "Tắt", "ButtonSettings": "Cài đặt", - "DefaultErrorMessage": "Có lỗi xảy ra trong lúc xử lý yêu cầu của bạn. Xin hãy thử lại sau.", + "MessageDefaultError": "Có lỗi xảy ra trong lúc xử lý yêu cầu của bạn. Xin hãy thử lại sau.", "Default": "Mặc định", "DeathDateValue": "Không hoạt động: {0}", "DatePlayed": "Ngày phát", @@ -405,7 +405,7 @@ "EveryNDays": "Mỗi {0} ngày", "ErrorSavingTvProvider": "Có lỗi xảy ra khi lưu thông tin của nhà cung cấp TV này. Hãy thử lại khi chắc chắn rằng nó có thể truy cập.", "ErrorPleaseSelectLineup": "Hãy chọn một danh sách và thử lại. Nếu không có danh sách nào sẵn sàng, hãy chắc chắn rằng thông tin tài khoản, mật khẩu, và mã bưu điện đều chính xác.", - "ErrorMessageStartHourGreaterThanEnd": "Thời gian kết thúc phải lớn hơn thời gian bắt đầu.", + "ErrorStartHourGreaterThanEnd": "Thời gian kết thúc phải lớn hơn thời gian bắt đầu.", "ErrorGettingTvLineups": "Có lỗi xảy ra khi tải danh sách TV này. Hãy thử lại khi chắc chắn rằng thông tin của bạn chính xác.", "ErrorDeletingItem": "Có lỗi xảy ra khi xoá mục này khỏi máy chủ Jellyfin. Hãy thử lại sau khi kiểm tra chắc chắn rằng máy chủ Jellyfin có quyền ghi/xoá vào thư mục nội dung.", "ErrorAddingXmlTvFile": "Có lỗi xảy ra khi truy cập tài liệu XMLTV. Hãy thử lại khi chắc chắn rằng tài liệu này tồn tại.", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index c496ab54d0..b593772f9a 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -47,7 +47,7 @@ "BookLibraryHelp": "现已支持音频和文本书籍。浏览{0}有声读物命名指南{1}。", "Books": "书籍", "Browse": "浏览", - "BrowsePluginCatalogMessage": "浏览我们的插件目录来查看现有插件。", + "MessageBrowsePluginCatalog": "浏览我们的插件目录来查看现有插件。", "BurnSubtitlesHelp": "服务器在转换视频时是否应压制字幕。避免压制字幕会提高服务器性能。选择“自动”以压制基于图像的字幕格式(如 VOBSUB, PGS, SUB, IDX 等)和一些复杂的 ASS/SSA 字幕。", "ButtonAdd": "添加", "ButtonAddMediaLibrary": "添加媒体库", @@ -148,7 +148,7 @@ "DatePlayed": "播放日期", "DeathDateValue": "去世:{0}", "Default": "默认", - "DefaultErrorMessage": "处理请求时发生错误。请稍后尝试。", + "MessageDefaultError": "处理请求时发生错误。请稍后尝试。", "DefaultMetadataLangaugeDescription": "这些是你的默认设置并且可以在你的每个媒体库中被单独自定义。", "DefaultSubtitlesHelp": "字幕将基于内嵌元数据中的“默认”标志和“强制”标志来载入。当多个选项可用时,将根据语言偏好决定。", "Delete": "删除", @@ -211,7 +211,7 @@ "ErrorAddingTunerDevice": "添加协调器设备时发生错误。请确认它是可访问的然后再试一次。", "ErrorAddingXmlTvFile": "访问 XmlTV 文件时发生错误。请确认该文件是否存在然后再试一次。", "ErrorGettingTvLineups": "下载 TV 节目表 时发生错误。请确认你的信息是否正确,然后再试。", - "ErrorMessageStartHourGreaterThanEnd": "结束时间必须在开始时间后。", + "ErrorStartHourGreaterThanEnd": "结束时间必须在开始时间后。", "ErrorPleaseSelectLineup": "请选择一个阵容, 然后再试一次。如果没有可用的阵容, 请检查您的用户名、密码和邮政编码是否正确。", "ErrorSavingTvProvider": "保存 TV 提供商时发生错误。请确认它是可访问的然后再试一次。", "EveryNDays": "每 {0} 天", @@ -907,8 +907,8 @@ "NextUp": "下一步", "No": "否", "NoNewDevicesFound": "找不到新设备。要添加新调谐器, 请关闭此对话框并手动输入设备信息。", - "NoNextUpItemsMessage": "没有发现。开始看你的节目!", - "NoPluginConfigurationMessage": "此插件没有配置选项。", + "MessageNoNextUpItems": "没有发现。开始看你的节目!", + "MessageNoPluginConfiguration": "此插件没有配置选项。", "NoSubtitleSearchResultsFound": "未找到结果。", "NoSubtitles": "无字幕", "NoSubtitlesHelp": "字幕将默认不被加载,但你仍然可以在播放时手动打开字幕。", @@ -1068,7 +1068,7 @@ "PasswordMatchError": "密码和确认密码必须匹配。", "PasswordResetComplete": "密码已重置。", "PasswordResetConfirmation": "你确定要重置密码?", - "PasswordResetHeader": "密码重置", + "HeaderResetPassword": "密码重置", "PasswordSaved": "密码已保存。", "People": "人物", "PerfectMatch": "最佳匹配", @@ -1087,7 +1087,7 @@ "PleaseEnterNameOrId": "请输入一个名称或一个外部ID。", "PleaseRestartServerName": "请重启 Jellyfin 服务器 - {0}。", "PleaseSelectTwoItems": "请至少选择2个项目。", - "PluginInstalledMessage": "这个插件已经被成功安装。Jellyfin 服务器需要重启以使该插件生效。", + "MessagePluginInstalled": "这个插件已经被成功安装。Jellyfin 服务器需要重启以使该插件生效。", "PreferEmbeddedTitlesOverFileNames": "优先使用内置的标题而不是文件名", "PreferEmbeddedTitlesOverFileNamesHelp": "这将在没有 internet 元数据或本地元数据可用时确定默认显示标题。", "Premiere": "首映", @@ -1107,7 +1107,7 @@ "Record": "录制", "RecordSeries": "录制电视剧", "RecordingCancelled": "录制已取消。", - "RecordingPathChangeMessage": "更改录制文件夹不会将现有录制从旧位置迁移到新的。您需要手动移动它们 (如果需要)。", + "MessageChangeRecordingPath": "更改录制文件夹不会将现有录制从旧位置迁移到新的。您需要手动移动它们 (如果需要)。", "RecordingScheduled": "录制预设。", "Refresh": "刷新", "RefreshMetadata": "刷新元数据", @@ -1248,7 +1248,7 @@ "Tuesday": "星期二", "TvLibraryHelp": "回顾{0}电视节目命名指南{1}。", "UninstallPluginConfirmation": "你确定要卸载 {0}?", - "UninstallPluginHeader": "卸载插件", + "HeaderUninstallPlugin": "卸载插件", "Unmute": "取消静音", "Unplayed": "未播放", "Unrated": "未分级", diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index b52dcbc1ef..da68975e7d 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -186,7 +186,7 @@ "MoreUsersCanBeAddedLater": "稍後在控制台可以添加更多用戶。", "NewCollection": "新收藏庫", "NewCollectionNameExample": "例如:星球大戰收藏庫", - "NoNextUpItemsMessage": "未有發現。開始欣賞您的節目!", + "MessageNoNextUpItems": "未有發現。開始欣賞您的節目!", "OptionAdminUsers": "管理員", "OptionAlbum": "唱片", "OptionAlbumArtist": "唱片歌手", @@ -419,7 +419,7 @@ "DeleteMedia": "刪除媒體", "DeleteImageConfirmation": "你確定要刪除此圖片嗎?", "DeleteImage": "刪除圖片", - "DefaultErrorMessage": "處理此請求時發生錯誤,請稍後再嘗試。", + "MessageDefaultError": "處理此請求時發生錯誤,請稍後再嘗試。", "Default": "預設", "DateAdded": "日期已新增", "CopyStreamURLError": "複製URL時發生錯誤。", @@ -499,7 +499,7 @@ "ButtonSyncPlay": "SyncPlay", "ButtonDown": "向下", "BurnSubtitlesHelp": "確定若服務器對視頻進行轉碼時是否嵌入字幕。 關閉這功能將使用更少時間。 選擇'自動'可嵌入基於圖像的格式字幕(VOBSUB,PGS,SUB,IDX等)和某些ASS或SSA字幕。", - "BrowsePluginCatalogMessage": "瀏覽我們的插件目錄以查看可用的插件。", + "MessageBrowsePluginCatalog": "瀏覽我們的插件目錄以查看可用的插件。", "BoxRear": "盒裝(背面)", "BoxSet": "套裝", "Box": "盒裝", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 22a40d3247..e8a05e081e 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -3,7 +3,7 @@ "All": "全部", "AllowRemoteAccessHelp": "如果未勾選,所有連線都將被阻擋。", "Browse": "瀏覽", - "BrowsePluginCatalogMessage": "瀏覽我們的模組目錄來查看可用的模組。", + "MessageBrowsePluginCatalog": "瀏覽我們的模組目錄來查看可用的模組。", "ButtonAdd": "新增", "ButtonAddServer": "新增伺服器", "ButtonAddUser": "新增使用者", @@ -160,7 +160,7 @@ "NewCollection": "新合集", "NewCollectionHelp": "收藏櫃讓您能夠建立個人化的影音及其他媒體的分類。", "NewCollectionNameExample": "例子:星球大戰合集", - "NoNextUpItemsMessage": "沒有找到。開始看你的節目!", + "MessageNoNextUpItems": "沒有找到。開始看你的節目!", "NoSubtitleSearchResultsFound": "無結果。", "OptionAlbum": "專輯", "OptionAlbumArtist": "專輯歌手", @@ -290,7 +290,7 @@ "TrackCount": "{0} 個曲目", "Tuesday": "星期二", "UninstallPluginConfirmation": "你確定要解除安裝 {0}?", - "UninstallPluginHeader": "解除安裝插件", + "HeaderUninstallPlugin": "解除安裝插件", "UserProfilesIntro": "Jellyfin 可單獨對使用者進行設定,所有使用者擁有自己的顯示設置,播放狀態和家長控制。", "Wednesday": "星期三", "WelcomeToProject": "歡迎使用 Jellyfin!", @@ -421,7 +421,7 @@ "ColorSpace": "色彩空間", "ColorTransfer": "色彩傳輸", "CommunityRating": "社群評分", - "DefaultErrorMessage": "處理請求時發生錯誤。請稍後再試。", + "MessageDefaultError": "處理請求時發生錯誤。請稍後再試。", "DefaultMetadataLangaugeDescription": "這些預設設定可以在你的媒體庫中單獨設定。", "DefaultSubtitlesHelp": "字幕將基於中繼資料中的「預設」標記和「強制」標記來載入,當有多個選項可用時,將根據語言偏好決定。", "DeleteDeviceConfirmation": "你確定你要刪除這個裝置嗎?當有使用者用這個裝置登入時,這個裝置會再次出現。", @@ -479,7 +479,7 @@ "ErrorAddingXmlTvFile": "存取 XMLTV 檔案時發生錯誤,請確認該檔案是否存在後再試一次。", "ErrorDeletingItem": "從 Jellyfin 伺服器刪除項目時發生錯誤,請確認伺服器對該磁碟有寫入權限並再試一次。", "ErrorGettingTvLineups": "下載電視節目表時發生錯誤,請確認你的資訊是否正確並重試。", - "ErrorMessageStartHourGreaterThanEnd": "結束時間必須在開始時間後。", + "ErrorStartHourGreaterThanEnd": "結束時間必須在開始時間後。", "ErrorPleaseSelectLineup": "請選擇節目表,然後再試一次。如果沒有可用的節目表,請檢查您的使用者名稱、密碼和郵遞區號是否正確。", "ErrorSavingTvProvider": "儲存電視供應商時發生錯誤,請確認是否可存取並重試。", "EveryNDays": "每 {0} 天", @@ -824,7 +824,7 @@ "ThemeSongs": "主題曲", "ThemeVideos": "主題曲影片", "Upload": "上傳", - "PasswordResetHeader": "重設密碼", + "HeaderResetPassword": "重設密碼", "ScanLibrary": "掃描媒體庫", "ValueAudioCodec": "音訊編碼:{0}", "ValueCodec": "編碼:{0}", @@ -993,7 +993,7 @@ "MediaInfoStreamTypeVideo": "影片", "Menu": "選單", "MetadataManager": "中繼資料管理器", - "NoPluginConfigurationMessage": "這個模組沒有設定選項可供更改。", + "MessageNoPluginConfiguration": "這個模組沒有設定選項可供更改。", "NoSubtitlesHelp": "字幕不會自動讀取,但可於播放時手動選取。", "Normal": "正常", "OptionAllowContentDownloading": "允許下載及同步媒體", @@ -1303,8 +1303,8 @@ "OptionIgnoreTranscodeByteRangeRequestsHelp": "如果啟用,這些請求會被兌現,但會忽略的位元組範圍標頭。", "OptionLoginAttemptsBeforeLockoutHelp": "若值為 0,則表示將允許普通使用者嘗試三次、管理員嘗試五次的預設值,設定為 -1 來停用此功能。", "OptionRequirePerfectSubtitleMatchHelp": "僅下載經過測試並確認跟此影片檔案完美匹配的字幕。取消勾選這個項目可以增加找到並下載字幕的可能性,但可能會下載時間軸、翻譯不正確的字幕。", - "PluginInstalledMessage": "這個模組安裝成功,但 Jellyfin 伺服器需要重啟以使模組生效。", - "RecordingPathChangeMessage": "更改錄製資料夾不會將現有錄製從舊位置遷移到新的,您需要手動移動它們。", + "MessagePluginInstalled": "這個模組安裝成功,但 Jellyfin 伺服器需要重啟以使模組生效。", + "MessageChangeRecordingPath": "更改錄製資料夾不會將現有錄製從舊位置遷移到新的,您需要手動移動它們。", "LabelEmbedAlbumArtDidl": "於 Didl 中嵌入專輯封面", "LabelEnableAutomaticPortMapHelp": "透過 UPnP 自動將路由器上的公共埠轉發到伺服器上的本地埠。這可能不適用於某些路由器型號或網路設定。在伺服器重新啟動後才會進行更改。", "LabelEmbedAlbumArtDidlHelp": "有些裝置使用這個方式來取得專輯封面,啟用這個選項可能導致其他設備播放失敗。", diff --git a/src/tv.html b/src/tv.html index ceb5c51b44..035f1db6a3 100644 --- a/src/tv.html +++ b/src/tv.html @@ -31,7 +31,7 @@
- +
From 1811c7d5f68ab68848144a96eede302dac2f4785 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sat, 1 Aug 2020 00:21:25 +0900 Subject: [PATCH 072/463] revert accidental string change --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index ea190351ce..76e5fe22ee 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1366,7 +1366,7 @@ "SearchResults": "Search Results", "Season": "Season", "SelectAdminUsername": "Please select a username for the admin account.", - "Send": "Send ", + "SendMessage": "Send message", "Series": "Series", "SeriesCancelled": "Series cancelled.", "SeriesDisplayOrderHelp": "Order episodes by air date, DVD order, or absolute numbering.", From f163f83dae6fa7e3153d61fb41684ea183385918 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sat, 1 Aug 2020 00:24:53 +0900 Subject: [PATCH 073/463] fix another minor string issue --- src/strings/en-us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 76e5fe22ee..aa07591079 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1326,7 +1326,7 @@ "Record": "Record", "RecordSeries": "Record series", "RecordingCancelled": "Recording cancelled.", - "ChangeRecordingPath": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired.", + "MessageChangeRecordingPath": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired.", "RecordingScheduled": "Recording scheduled.", "Recordings": "Recordings", "Refresh": "Refresh", From 39627f364a52bd1103ca72496a3a3a4e1fd0340e Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 16:12:49 +0100 Subject: [PATCH 074/463] Migration of tabbedview to ES6 module --- package.json | 1 + src/components/tabbedview/tabbedview.js | 60 +++++++++++++------------ 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 2fd4b90ce5..07ac3f4b54 100644 --- a/package.json +++ b/package.json @@ -158,6 +158,7 @@ "src/components/syncPlay/playbackPermissionManager.js", "src/components/syncPlay/syncPlayManager.js", "src/components/syncPlay/timeSyncManager.js", + "src/components/tabbedview/tabbedview.js", "src/controllers/session/addServer/index.js", "src/controllers/session/forgotPassword/index.js", "src/controllers/session/redeemPassword/index.js", diff --git a/src/components/tabbedview/tabbedview.js b/src/components/tabbedview/tabbedview.js index 8bd3afd372..710a0e3c40 100644 --- a/src/components/tabbedview/tabbedview.js +++ b/src/components/tabbedview/tabbedview.js @@ -1,30 +1,33 @@ -define(['backdrop', 'mainTabsManager', 'layoutManager', 'emby-tabs'], function (backdrop, mainTabsManager, layoutManager) { - 'use strict'; +import backdrop from 'backdrop'; +import * as mainTabsManager from 'mainTabsManager'; +import layoutManager from 'layoutManager'; +import 'emby-tabs'; - function onViewDestroy(e) { - var tabControllers = this.tabControllers; +function onViewDestroy(e) { + var tabControllers = this.tabControllers; - if (tabControllers) { - tabControllers.forEach(function (t) { - if (t.destroy) { - t.destroy(); - } - }); + if (tabControllers) { + tabControllers.forEach(function (t) { + if (t.destroy) { + t.destroy(); + } + }); - this.tabControllers = null; - } - - this.view = null; - this.params = null; - this.currentTabController = null; - this.initialTabIndex = null; + this.tabControllers = null; } - function onBeforeTabChange() { + this.view = null; + this.params = null; + this.currentTabController = null; + this.initialTabIndex = null; +} - } +function onBeforeTabChange() { - function TabbedView(view, params) { +} + +class TabbedView { + constructor(view, params) { this.tabControllers = []; this.view = view; this.params = params; @@ -85,7 +88,7 @@ define(['backdrop', 'mainTabsManager', 'layoutManager', 'emby-tabs'], function ( view.addEventListener('viewdestroy', onViewDestroy.bind(this)); } - TabbedView.prototype.onResume = function (options) { + onResume(options) { this.setTitle(); backdrop.clearBackdrop(); @@ -96,19 +99,18 @@ define(['backdrop', 'mainTabsManager', 'layoutManager', 'emby-tabs'], function ( } else if (currentTabController && currentTabController.onResume) { currentTabController.onResume({}); } - }; + } - TabbedView.prototype.onPause = function () { + onPause() { var currentTabController = this.currentTabController; if (currentTabController && currentTabController.onPause) { currentTabController.onPause(); } - }; - - TabbedView.prototype.setTitle = function () { + } + setTitle() { Emby.Page.setTitle(''); - }; + } +} - return TabbedView; -}); +export default TabbedView; From 38d25172d5def42c19de33153fed8e7accaee286 Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 17:06:04 +0100 Subject: [PATCH 075/463] Fix type and applysuggestions to home.js --- .../dashboard/plugins/available/index.js | 2 +- .../dashboard/plugins/installed/index.js | 2 +- src/controllers/home.js | 98 +++++++++---------- src/controllers/itemDetails/index.js | 2 +- src/controllers/movies/moviesrecommended.js | 2 +- 5 files changed, 52 insertions(+), 54 deletions(-) diff --git a/src/controllers/dashboard/plugins/available/index.js b/src/controllers/dashboard/plugins/available/index.js index 473b1b8961..274cde8824 100644 --- a/src/controllers/dashboard/plugins/available/index.js +++ b/src/controllers/dashboard/plugins/available/index.js @@ -1,7 +1,7 @@ define(['loading', 'libraryMenu', 'globalize', 'cardStyle', 'emby-button', 'emby-checkbox', 'emby-select'], function (loading, libraryMenu, globalize) { 'use strict'; - libraryMenu = LibraryMenu.default || libraryMenu; + libraryMenu = libraryMenu.default || libraryMenu; function reloadList(page) { loading.show(); diff --git a/src/controllers/dashboard/plugins/installed/index.js b/src/controllers/dashboard/plugins/installed/index.js index 014fbf16c2..02fd954620 100644 --- a/src/controllers/dashboard/plugins/installed/index.js +++ b/src/controllers/dashboard/plugins/installed/index.js @@ -1,7 +1,7 @@ define(['loading', 'libraryMenu', 'dom', 'globalize', 'cardStyle', 'emby-button'], function (loading, libraryMenu, dom, globalize) { 'use strict'; - libraryMenu = LibraryMenu.default || libraryMenu; + libraryMenu = libraryMenu.default || libraryMenu; function deletePlugin(page, uniqueid, name) { var msg = globalize.translate('UninstallPluginConfirmation', name); diff --git a/src/controllers/home.js b/src/controllers/home.js index 392da0e2d2..bfee2c50fb 100644 --- a/src/controllers/home.js +++ b/src/controllers/home.js @@ -4,67 +4,65 @@ import 'emby-tabs'; import 'emby-button'; import 'emby-scroller'; -function getTabs() { - return [{ - name: globalize.translate('Home') - }, { - name: globalize.translate('Favorites') - }]; -} - -function getDefaultTabIndex() { - return 0; -} - -function getTabController(index) { - if (null == index) { - throw new Error('index cannot be null'); - } - - let depends = ''; - - switch (index) { - case 0: - depends = 'controllers/hometab'; - break; - - case 1: - depends = 'controllers/favorites'; - } - - const instance = this; - return import(depends).then(({ default: controllerFactory }) => { - let controller = instance.tabControllers[index]; - - if (!controller) { - controller = new controllerFactory(instance.view.querySelector(".tabContent[data-index='" + index + "']"), instance.params); - instance.tabControllers[index] = controller; - } - - return controller; - }); -} - -class HomeView { +class HomeView extends TabbedView { constructor(view, params) { - TabbedView.call(this, view, params); + super(view, params); } + setTitle() { Emby.Page.setTitle(null); } + onPause() { - TabbedView.prototype.onPause.call(this); + super.onPause(this); document.querySelector('.skinHeader').classList.remove('noHomeButtonHeader'); } + onResume(options) { - TabbedView.prototype.onResume.call(this, options); + super.onResume(this, options); document.querySelector('.skinHeader').classList.add('noHomeButtonHeader'); } + + getDefaultTabIndex() { + return 0; + } + + getTabs() { + return [{ + name: globalize.translate('Home') + }, { + name: globalize.translate('Favorites') + }]; + } + + getTabController(index) { + if (null == index) { + throw new Error('index cannot be null'); + } + + let depends = ''; + + switch (index) { + case 0: + depends = 'controllers/hometab'; + break; + + case 1: + depends = 'controllers/favorites'; + } + + const instance = this; + return import(depends).then(({ default: controllerFactory }) => { + let controller = instance.tabControllers[index]; + + if (!controller) { + controller = new controllerFactory(instance.view.querySelector(".tabContent[data-index='" + index + "']"), instance.params); + instance.tabControllers[index] = controller; + } + + return controller; + }); + } } -Object.assign(HomeView.prototype, TabbedView.prototype); -HomeView.prototype.getTabs = getTabs; -HomeView.prototype.getDefaultTabIndex = getDefaultTabIndex; -HomeView.prototype.getTabController = getTabController; - export default HomeView; diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 49412c4ac4..d02268b9d4 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1,7 +1,7 @@ define(['loading', 'appRouter', 'layoutManager', 'connectionManager', 'userSettings', 'cardBuilder', 'datetime', 'mediaInfo', 'backdrop', 'listView', 'itemContextMenu', 'itemHelper', 'dom', 'indicators', 'imageLoader', 'libraryMenu', 'globalize', 'browser', 'events', 'playbackManager', 'scrollStyles', 'emby-itemscontainer', 'emby-checkbox', 'emby-button', 'emby-playstatebutton', 'emby-ratingbutton', 'emby-scroller', 'emby-select'], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, imageLoader, libraryMenu, globalize, browser, events, playbackManager) { 'use strict'; - libraryMenu = LibraryMenu.default || libraryMenu; + libraryMenu = libraryMenu.default || libraryMenu; function getPromise(apiClient, params) { var id = params.id; diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 96e98452db..09ecd3c034 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -1,7 +1,7 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu', 'mainTabsManager', 'cardBuilder', 'dom', 'imageLoader', 'playbackManager', 'globalize', 'emby-scroller', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager, globalize) { 'use strict'; - libraryMenu = LibraryMenu.default || libraryMenu; + libraryMenu = libraryMenu.default || libraryMenu; function enableScrollX() { return !layoutManager.desktop; From 889b9a3d738324cca79c6173f4957bd551d56e3b Mon Sep 17 00:00:00 2001 From: dkanada Date: Sat, 1 Aug 2020 01:26:45 +0900 Subject: [PATCH 076/463] update a few more strings --- .../displaySettings.template.html | 4 +- src/strings/bg-bg.json | 4 +- src/strings/cs.json | 4 +- src/strings/de.json | 4 +- src/strings/en-gb.json | 4 +- src/strings/en-us.json | 78 +++++++++---------- src/strings/es-ar.json | 4 +- src/strings/es-mx.json | 4 +- src/strings/es.json | 4 +- src/strings/es_419.json | 4 +- src/strings/fa.json | 4 +- src/strings/fr.json | 4 +- src/strings/hu.json | 4 +- src/strings/it.json | 4 +- src/strings/nb.json | 4 +- src/strings/nl.json | 4 +- src/strings/pl.json | 4 +- src/strings/pt-br.json | 4 +- src/strings/ro.json | 4 +- src/strings/ru.json | 4 +- src/strings/sk.json | 4 +- src/strings/sv.json | 4 +- src/strings/zh-cn.json | 4 +- src/strings/zh-tw.json | 4 +- 24 files changed, 85 insertions(+), 85 deletions(-) diff --git a/src/components/displaySettings/displaySettings.template.html b/src/components/displaySettings/displaySettings.template.html index ab01b4b6ae..7258edf208 100644 --- a/src/components/displaySettings/displaySettings.template.html +++ b/src/components/displaySettings/displaySettings.template.html @@ -159,9 +159,9 @@
-
${EnableBlurhashHelp}
+
${EnableBlurHashHelp}
diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index 3afd904af3..ccdc906a9f 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -1197,8 +1197,8 @@ "LabelProtocolInfo": "Информация за протокола:", "LabelPostProcessorArgumentsHelp": "Използвай {path},като път за записване на файла.", "LabelPostProcessorArguments": "Аргументи на командния ред след обработка:", - "EnableBlurhashHelp": "Изображенията, които все още се зареждат, ще се показват чрез функцията\"размито запълване\"", - "EnableBlurhash": "Активиране на функцията \"размито запълване\" за изображения", + "EnableBlurHashHelp": "Изображенията, които все още се зареждат, ще се показват чрез функцията\"размито запълване\"", + "EnableBlurHash": "Активиране на функцията \"размито запълване\" за изображения", "UnsupportedPlayback": "Джелифин не може да дешифрира съдържание, защитено с DRM, но въпреки това цялото съдържание ще бъде обработено, включително защитените заглавия. Някои файлове могат да изглеждат напълно черни поради криптиране или други неподдържани функции, например интерактивни заглавия.", "OnApplicationStartup": "При стартиране на приложението", "EveryXHours": "На всеки {0} часа", diff --git a/src/strings/cs.json b/src/strings/cs.json index c00b177548..13ce07b62d 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1543,8 +1543,8 @@ "EnableDetailsBanner": "Obrázek detailu", "ShowMore": "Zobrazit více", "ShowLess": "Zobrazit méně", - "EnableBlurhashHelp": "Nenačtené obrázky budou zobrazeny pomocí neurčitých zástupných obrázků", - "EnableBlurhash": "Povolit zástupné obrázky", + "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": "SyncPlay", "MessageNoGenresAvailable": "Povolit některým poskytovatelům metadat stahovat informace o žánrech z Internetu.", diff --git a/src/strings/de.json b/src/strings/de.json index 0c25bb9c29..f88361c1d2 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1543,8 +1543,8 @@ "EnableDetailsBanner": "Detailbanner", "ShowMore": "Mehr anzeigen", "ShowLess": "Weniger anzeigen", - "EnableBlurhashHelp": "Bilder, die noch nicht fertig geladen wurden, werden mit einem verschwommenen Platzhalter dargestellt", - "EnableBlurhash": "Verschwommene Platzhalter für Bilder erlauben", + "EnableBlurHashHelp": "Bilder, die noch nicht fertig geladen wurden, werden mit einem verschwommenen Platzhalter dargestellt", + "EnableBlurHash": "Verschwommene Platzhalter für Bilder erlauben", "EnableFasterAnimations": "Schnellere Animationen", "EnableDecodingColorDepth10Vp9": "Aktiviere 10-Bit-Hardware-Dekodierung für VP9", "EnableDecodingColorDepth10Hevc": "Aktiviere 10-Bit-Hardware-Dekodierung für HEVC", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 43269a507f..58bd67426e 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1501,8 +1501,8 @@ "ApiKeysCaption": "List of the currently enabled API keys", "ButtonCast": "Cast", "ButtonSyncPlay": "SyncPlay", - "EnableBlurhashHelp": "Images that are still being loaded will be displayed with a blurred placeholder", - "EnableBlurhash": "Enable blurred placeholders for images", + "EnableBlurHashHelp": "Images that are still being loaded will be displayed with a blurred placeholder", + "EnableBlurHash": "Enable blurred placeholders for images", "TabDVR": "DVR", "TabRepositories": "Repositories", "SyncPlayAccessHelp": "Select the level of access this user has to the SyncPlay feature. SyncPlay enables to sync playback with other devices.", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index aa07591079..f0e24d63ab 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -45,7 +45,7 @@ "AspectRatio": "Aspect Ratio", "AttributeNew": "New", "Audio": "Audio", - "AuthProviderHelp": "Select an Authentication Provider to be used to authenticate this user's password.", + "AuthProviderHelp": "Select an authentication provider to be used to authenticate this user's password.", "Auto": "Auto", "AutoBasedOnLanguageSetting": "Auto (based on language setting)", "Backdrop": "Backdrop", @@ -195,8 +195,8 @@ "DetectingDevices": "Detecting devices", "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", "DirectPlaying": "Direct playing", - "DirectStreamHelp1": "The media is compatible with the device regarding resolution and media type (H.264, AC3, etc), but is in an incompatible file container (mkv, avi, wmv, etc). The video will be re-packaged on the fly before streaming it to the device.", - "DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.", + "DirectStreamHelp1": "The media is compatible with the device regarding resolution and media type (H.264, AC3, etc), but in an incompatible file container (mkv, avi, wmv, etc). The video will be re-packaged on the fly before being sent to the device.", + "DirectStreamHelp2": "Direct stream uses very little processing power with a minimal loss in video quality.", "DirectStreaming": "Direct streaming", "Director": "Director", "Directors": "Directors", @@ -313,7 +313,7 @@ "HeaderAllowMediaDeletionFrom": "Allow Media Deletion From", "HeaderApiKey": "API Key", "HeaderApiKeys": "API Keys", - "HeaderApiKeysHelp": "External applications are required to have an API key in order to communicate with Jellyfin Server. Keys are issued by logging in with a Jellyfin account, or by manually granting the application a key.", + "HeaderApiKeysHelp": "External applications are required to have an API key in order to communicate with the server. Keys are issued by logging in with a normal user account or manually granting the application a key.", "ApiKeysCaption": "List of the currently enabled API keys", "HeaderApp": "App", "HeaderAppearsOn": "Appears On", @@ -400,7 +400,7 @@ "HeaderItems": "Items", "HeaderKeepRecording": "Keep Recording", "HeaderKeepSeries": "Keep Series", - "HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library in Jellyfin library setup and locate the metadata savers section.", + "HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and locate the metadata savers section.", "HeaderLatestEpisodes": "Latest Episodes", "HeaderLatestMedia": "Latest Media", "HeaderLatestMovies": "Latest Movies", @@ -450,7 +450,7 @@ "HeaderPreferredMetadataLanguage": "Preferred Metadata Language", "HeaderProfile": "Profile", "HeaderProfileInformation": "Profile Information", - "HeaderProfileServerSettingsHelp": "These values control how Jellyfin Server will present itself to the device.", + "HeaderProfileServerSettingsHelp": "These values control how the server will present itself to clients.", "HeaderRecentlyPlayed": "Recently Played", "HeaderRecordingOptions": "Recording Options", "HeaderRecordingPostProcessing": "Recording Post Processing", @@ -469,13 +469,13 @@ "HeaderSecondsValue": "{0} Seconds", "HeaderSelectCertificatePath": "Select Certificate Path", "HeaderSelectMetadataPath": "Select Metadata Path", - "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.", + "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to use for metadata. The folder must be writeable.", "HeaderSelectPath": "Select Path", "HeaderSelectServer": "Select Server", "HeaderSelectServerCachePath": "Select Server Cache Path", "HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable.", "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", - "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", + "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcode files. The folder must be writeable.", "HeaderSendMessage": "Send Message", "HeaderSeries": "Series", "HeaderSeriesOptions": "Series Options", @@ -531,8 +531,8 @@ "HttpsRequiresCert": "To enable secure connections, you will need to supply a trusted SSL certificate, such as Let's Encrypt. Please either supply a certificate, or disable secure connections.", "Identify": "Identify", "Images": "Images", - "ImportFavoriteChannelsHelp": "If enabled, only channels that are marked as favorite on the tuner device will be imported.", - "ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Jellyfin database and displayed within seasons and series. This may cause significantly longer library scans.", + "ImportFavoriteChannelsHelp": "Only channels that are marked as favorite on the tuner device will be imported.", + "ImportMissingEpisodesHelp": "Information about missing episodes will be imported into your database and displayed within seasons and series. This may cause significantly longer library scans.", "InstallingPackage": "Installing {0} (version {1})", "InstantMix": "Instant mix", "ItemCount": "{0} items", @@ -565,7 +565,7 @@ "LabelAppName": "App name", "LabelAppNameExample": "Example: Sickbeard, Sonarr", "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", + "LabelArtistsHelp": "Separate multiple artists with a semicolon.", "LabelAudio": "Audio", "LabelAudioBitDepth": "Audio bit depth:", "LabelAudioBitrate": "Audio bitrate:", @@ -576,7 +576,7 @@ "LabelAuthProvider": "Authentication Provider:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Automatically refresh metadata from the internet:", "LabelBindToLocalNetworkAddress": "Bind to local network address:", - "LabelBindToLocalNetworkAddressHelp": "Override the local IP address to bind the http server to. If left empty, the server will bind to all availabile addresses. Changing this value requires restarting Jellyfin Server.", + "LabelBindToLocalNetworkAddressHelp": "Override the local IP address for the HTTP server. If left empty, the server will bind to all availabile addresses. Changing this value requires restarting Jellyfin Server.", "LabelBirthDate": "Birth date:", "LabelBirthYear": "Birth year:", "LabelBitrate": "Bitrate:", @@ -601,14 +601,14 @@ "LabelCustomCertificatePath": "Custom SSL certificate path:", "LabelCustomCertificatePathHelp": "Path to a PKCS #12 file containing a certificate and private key to enable TLS support on a custom domain.", "LabelCustomCss": "Custom CSS:", - "LabelCustomCssHelp": "Apply your own custom styling to the web interface.", + "LabelCustomCssHelp": "Apply your own custom styles on the web interface.", "LabelCustomDeviceDisplayName": "Display name:", "LabelCustomDeviceDisplayNameHelp": "Supply a custom display name or leave empty to use the name reported by the device.", "LabelCustomRating": "Custom rating:", "LabelDashboardTheme": "Server dashboard theme:", "LabelDateAdded": "Date added:", "LabelDateAddedBehavior": "Date added behavior for new content:", - "LabelDateAddedBehaviorHelp": "If a metadata value is present it will always be used before either of these options.", + "LabelDateAddedBehaviorHelp": "If a metadata value is present, it will always be used before either of these options.", "LabelDateTimeLocale": "Date time locale:", "LabelDay": "Day:", "LabelDeathDate": "Death date:", @@ -640,19 +640,19 @@ "LabelEnableAutomaticPortMapHelp": "Automatically forward public ports on your router to local ports on your server via UPnP. This may not work with some router models or network configurations. Changes will not apply until after a server restart.", "LabelEnableBlastAliveMessages": "Blast alive messages", "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", - "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval (seconds)", + "LabelEnableDlnaClientDiscoveryInterval": "Client discovery interval", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Jellyfin.", "LabelEnableDlnaDebugLogging": "Enable DLNA debug logging", "LabelEnableDlnaDebugLoggingHelp": "Create large log files and should only be used as needed for troubleshooting purposes.", "LabelEnableDlnaPlayTo": "Enable DLNA Play To", - "LabelEnableDlnaPlayToHelp": "Detect devices within your network and offer the ability to remote control them.", + "LabelEnableDlnaPlayToHelp": "Detect devices within your network and offer the ability to control them remotely.", "LabelEnableDlnaServer": "Enable DLNA server", "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play content.", "LabelEnableHardwareDecodingFor": "Enable hardware decoding for:", "LabelEnableHttps": "Enable HTTPS", - "LabelEnableHttpsHelp": "Enables the server to listen on the configured HTTPS port. A valid certificate must also be configured in order for this to take effect.", + "LabelEnableHttpsHelp": "Listen on the configured HTTPS port. A valid certificate must also be supplied for this to take effect.", "LabelEnableRealtimeMonitor": "Enable real time monitoring", - "LabelEnableRealtimeMonitorHelp": "Changes to files will be processed immediately, on supported file systems.", + "LabelEnableRealtimeMonitorHelp": "Changes to files will be processed immediately on supported file systems.", "LabelEnableSingleImageInDidlLimit": "Limit to single embedded image", "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.", "LabelEndDate": "End date:", @@ -660,7 +660,7 @@ "LabelEvent": "Event:", "LabelEveryXMinutes": "Every:", "LabelBaseUrl": "Base URL:", - "LabelBaseUrlHelp": "Adds a custom subdirectory to the server URL. For example: http://example.com/<baseurl>", + "LabelBaseUrlHelp": "Add a custom subdirectory to the server URL. For example: http://example.com/<baseurl>", "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", "LabelExtractChaptersDuringLibraryScanHelp": "Generate chapter images when videos are imported during the library scan. Otherwise, they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", "LabelFailed": "Failed", @@ -671,9 +671,9 @@ "LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.", "LabelFormat": "Format:", "LabelFriendlyName": "Friendly name:", - "LabelServerNameHelp": "This name will be used to identify the server and will default to the server's computer name.", + "LabelServerNameHelp": "This name will be used to identify the server and will default to the server's hostname.", "LabelGroupMoviesIntoCollections": "Group movies into collections", - "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", + "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies in a collection will be displayed as one grouped item.", "LabelH264Crf": "H264 encoding CRF:", "LabelEncoderPreset": "H264 and H265 encoding preset:", "LabelHardwareAccelerationType": "Hardware acceleration:", @@ -681,7 +681,7 @@ "LabelHomeNetworkQuality": "Home network quality:", "LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHttpsPort": "Local HTTPS port number:", - "LabelHttpsPortHelp": "The TCP port number that Jellyfin's HTTPS server should bind to.", + "LabelHttpsPortHelp": "The TCP port number for the HTTPS server.", "LabelIconMaxHeight": "Icon maximum height:", "LabelIconMaxHeightHelp": "Maximum resolution of icons exposed via upnp:icon.", "LabelIconMaxWidth": "Icon maximum width:", @@ -711,7 +711,7 @@ "LabelLibraryPageSizeHelp": "Sets the amount of items to show on a library page. Set to 0 in order to disable paging.", "LabelLineup": "Lineup:", "LabelLocalHttpServerPortNumber": "Local HTTP port number:", - "LabelLocalHttpServerPortNumberHelp": "The TCP port number that Jellyfin's HTTP server should bind to.", + "LabelLocalHttpServerPortNumberHelp": "The TCP port number for the HTTP server.", "LabelLockItemToPreventChanges": "Lock this item to prevent future changes", "LabelLoginDisclaimer": "Login disclaimer:", "LabelLoginDisclaimerHelp": "A message that will be displayed at the bottom of the login page.", @@ -737,7 +737,7 @@ "LabelMetadataReaders": "Metadata readers:", "LabelMetadataReadersHelp": "Rank your preferred local metadata sources in order of priority. The first file found will be read.", "LabelMetadataSavers": "Metadata savers:", - "LabelMetadataSaversHelp": "Choose the file formats to save your metadata to.", + "LabelMetadataSaversHelp": "Choose the file formats to use when saving your metadata.", "LabelMethod": "Method:", "LabelMinBackdropDownloadWidth": "Minimum backdrop download width:", "LabelMinResumeDuration": "Minimum resume duration:", @@ -755,7 +755,7 @@ "LabelMoviePrefixHelp": "If a prefix is applied to movie titles, enter it here so the server can handle it properly.", "LabelMovieRecordingPath": "Movie recording path:", "LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:", - "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music.", + "LabelMusicStreamingTranscodingBitrateHelp": "Specify a maximum bitrate when streaming music.", "LabelName": "Name:", "LabelChromecastVersion": "Chromecast Version", "LabelStable": "Stable", @@ -822,7 +822,7 @@ "LabelRemoteClientBitrateLimitHelp": "An optional per-stream bitrate limit for all out of network devices. This is useful to prevent devices from requesting a higher bitrate than your internet connection can handle. This may result in increased CPU load on your server in order to transcode videos on the fly to a lower bitrate.", "LabelRequireHttps": "Require HTTPS", "LabelRequireHttpsHelp": "If checked, the server will automatically redirect all requests over HTTP to HTTPS. This has no effect if the server is not listening on HTTPS.", - "LabelRuntimeMinutes": "Run time (minutes):", + "LabelRuntimeMinutes": "Runtime:", "LabelSaveLocalMetadata": "Save artwork into media folders", "LabelSaveLocalMetadataHelp": "Saving artwork into media folders will put them in a place where they can be easily edited.", "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", @@ -938,7 +938,7 @@ "LabelYoureDone": "You're Done!", "LabelZipCode": "Zip Code:", "LabelffmpegPath": "FFmpeg path:", - "LabelffmpegPathHelp": "The path to the ffmpeg application file, or folder containing ffmpeg.", + "LabelffmpegPathHelp": "The path to the ffmpeg application file or folder containing ffmpeg.", "LanNetworksHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be considered on local network when enforcing bandwidth restrictions. If set, all other IP addresses will be considered to be on the external network and will be subject to the external bandwidth restrictions. If left blank, only the server's subnet is considered to be on the local network.", "Large": "Large", "LatestFromLibrary": "Latest {0}", @@ -1067,7 +1067,7 @@ "MessageSyncPlayErrorMedia": "Failed to enable SyncPlay! Media error.", "Metadata": "Metadata", "MetadataManager": "Metadata Manager", - "MetadataSettingChangeHelp": "Changing metadata settings will affect new content that is added going forward. To refresh existing content, open the detail screen and click the refresh button, or perform bulk refreshes using the metadata manager.", + "MetadataSettingChangeHelp": "Changing metadata settings will affect new content added going forward. To refresh existing content, open the detail screen and click the refresh button, or perform bulk refreshes using the metadata manager.", "MinutesAfter": "minutes after", "MinutesBefore": "minutes before", "Mobile": "Mobile", @@ -1126,7 +1126,7 @@ "OptionAllowLinkSharingHelp": "Only web pages containing media information are shared. Media files are never shared publicly. Shares are time-limited and will expire after {0} days.", "OptionAllowManageLiveTv": "Allow Live TV recording management", "OptionAllowMediaPlayback": "Allow media playback", - "OptionAllowMediaPlaybackTranscodingHelp": "Restricting access to transcoding may cause playback failures in Jellyfin apps due to unsupported media formats.", + "OptionAllowMediaPlaybackTranscodingHelp": "Restricting access to transcoding may cause playback failures in clients due to unsupported media formats.", "OptionAllowRemoteControlOthers": "Allow remote control of other users", "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", "OptionAllowRemoteSharedDevicesHelp": "DLNA devices are considered shared until a user begins controlling them.", @@ -1139,7 +1139,7 @@ "OptionAuto": "Auto", "OptionAutomatic": "Auto", "OptionAutomaticallyGroupSeries": "Automatically merge series that are spread across multiple folders", - "OptionAutomaticallyGroupSeriesHelp": "If enabled, series that are spread across multiple folders within this library will be automatically merged into a single series.", + "OptionAutomaticallyGroupSeriesHelp": "Series that are spread across multiple folders within this library will be automatically merged into a single series.", "OptionBanner": "Banner", "OptionBlockBooks": "Books", "OptionBlockChannelContent": "Internet Channel Content", @@ -1161,7 +1161,7 @@ "OptionDatePlayed": "Date Played", "OptionDescending": "Descending", "OptionDisableUser": "Disable this user", - "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", + "OptionDisableUserHelp": "The server will not allow any connections from this user. Existing connections will be abruptly terminated.", "OptionDislikes": "Dislikes", "OptionDisplayFolderView": "Display a folder view to show plain media folders", "OptionDisplayFolderViewHelp": "Display folders alongside your other media libraries. This can be useful if you'd like to have a plain folder view.", @@ -1171,7 +1171,7 @@ "OptionDownloadBoxImage": "Box", "OptionDownloadDiscImage": "Disc", "OptionDownloadImagesInAdvance": "Download images in advance", - "OptionDownloadImagesInAdvanceHelp": "By default, most images are only downloaded when requested by a Jellyfin app. Enable this option to download all images in advance, as new media is imported. This may cause significantly longer library scans.", + "OptionDownloadImagesInAdvanceHelp": "By default, most images are only downloaded when requested by a client. Enable this option to download all images in advance, as new media is imported. This may cause significantly longer library scans.", "OptionDownloadLogoImage": "Logo", "OptionDownloadMenuImage": "Menu", "OptionDownloadPrimaryImage": "Primary", @@ -1204,7 +1204,7 @@ "OptionHlsSegmentedSubtitles": "HLS segmented subtitles", "OptionHomeVideos": "Photos", "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "These requests will be honored but will ignore the byte range header.", "OptionImdbRating": "IMDb Rating", "OptionIsHD": "HD", "OptionIsSD": "SD", @@ -1222,9 +1222,9 @@ "OptionOnInterval": "On an interval", "OptionParentalRating": "Parental Rating", "OptionPlainStorageFolders": "Display all folders as plain storage folders", - "OptionPlainStorageFoldersHelp": "If enabled, all folders are represented in DIDL as \"object.container.storageFolder\" instead of a more specific type, such as \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "All folders are represented in DIDL as \"object.container.storageFolder\" instead of a more specific type, such as \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Display all videos as plain video items", - "OptionPlainVideoItemsHelp": "If enabled, all videos are represented in DIDL as \"object.item.videoItem\" instead of a more specific type, such as \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "All videos are represented in DIDL as \"object.item.videoItem\" instead of a more specific type, such as \"object.item.videoItem.movie\".", "OptionPlayCount": "Play Count", "OptionPlayed": "Played", "OptionPoster": "Poster", @@ -1276,7 +1276,7 @@ "PasswordResetComplete": "The password has been reset.", "PasswordResetConfirmation": "Are you sure you wish to reset the password?", "HeaderResetPassword": "Reset Password", - "PasswordResetProviderHelp": "Choose a Password Reset Provider to be used when this user requests a password reset", + "PasswordResetProviderHelp": "Choose a password reset provider to be used when this user requests a password reset.", "PasswordSaved": "Password saved.", "People": "People", "PerfectMatch": "Perfect match", @@ -1330,7 +1330,7 @@ "RecordingScheduled": "Recording scheduled.", "Recordings": "Recordings", "Refresh": "Refresh", - "RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the Jellyfin Server dashboard.", + "RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the dashboard.", "RefreshMetadata": "Refresh metadata", "RefreshQueued": "Refresh queued.", "ReleaseDate": "Release date", @@ -1561,8 +1561,8 @@ "EveryXHours": "Every {0} hours", "OnApplicationStartup": "On application startup", "UnsupportedPlayback": "Jellyfin cannot decrypt content protected by DRM but all content will be attempted regardless, including protected titles. Some files may appear completely black due to encryption or other unsupported features, such as interactive titles.", - "EnableBlurhash": "Enable blurred placeholders for images", - "EnableBlurhashHelp": "Images that are still being loaded will be displayed with a blurred placeholder", + "EnableBlurHash": "Enable blurred placeholders for images", + "EnableBlurHashHelp": "Images that are still being loaded will be displayed with a unique placeholder.", "ButtonSyncPlay": "SyncPlay", "ButtonCast": "Cast", "ButtonPlayer": "Player", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 23ce44b56a..c39e873be7 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1357,8 +1357,8 @@ "ReleaseGroup": "Grupo de lanzamiento", "ButtonCast": "Transmitir", "ButtonSyncPlay": "SyncPlay", - "EnableBlurhashHelp": "Las imágenes que aún se están cargando se mostrarán con un marcador de posición borroso", - "EnableBlurhash": "Habilitar marcadores de posición borrosos para imágenes", + "EnableBlurHashHelp": "Las imágenes que aún se están cargando se mostrarán con un marcador de posición borroso", + "EnableBlurHash": "Habilitar marcadores de posición borrosos para imágenes", "OnApplicationStartup": "En el inicio de la aplicación", "EveryXHours": "Cada {0} horas", "EveryHour": "Cada hora", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index af2e2b5d4b..ef23d21528 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -1544,8 +1544,8 @@ "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", + "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", diff --git a/src/strings/es.json b/src/strings/es.json index 45c9b1f452..1aebb394ab 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1511,8 +1511,8 @@ "LabelEnableHttps": "Activar HTTPS", "TabDVR": "DVR", "SaveChanges": "Guardar cambios", - "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", + "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 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.", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 71ae83d24f..3ce724f19b 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -1541,10 +1541,10 @@ "AllChannels": "Todos los canales", "All": "Todo", "Alerts": "Alertas", - "EnableBlurhash": "Habilitar marcadores de posición borrosos para imágenes", + "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", "MessageNoGenresAvailable": "Permitir a algunos proveedores de metadatos obtener géneros desde Internet.", "MessageAddRepository": "Si desea agregar un repositorio, haga clic en el botón al lado del encabezado y complete la información solicitada.", diff --git a/src/strings/fa.json b/src/strings/fa.json index 32e083685f..3535a3693d 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -1543,7 +1543,7 @@ "TvLibraryHelp": "Review the {0}TV naming guide{1}.", "UserAgentHelp": "Supply a custom user-agent HTTP header.", "ValueContainer": "Container: {0}", - "EnableBlurhash": "Enable blurred placeholders for images", - "EnableBlurhashHelp": "Images that are still being loaded will be displayed with a blurred placeholder", + "EnableBlurHash": "Enable blurred placeholders for images", + "EnableBlurHashHelp": "Images that are still being loaded will be displayed with a blurred placeholder", "ButtonSyncPlay": "SyncPlay" } diff --git a/src/strings/fr.json b/src/strings/fr.json index c5ef0d5615..8d9c0818bc 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1543,8 +1543,8 @@ "MessageSyncPlayErrorAccessingGroups": "Une erreur s'est produite pendant l'accès à la liste de groupes.", "ShowMore": "Voir plus", "ShowLess": "Voir moins", - "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", + "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": "SyncPlay", "TabRepositories": "Dépôts", diff --git a/src/strings/hu.json b/src/strings/hu.json index 8dd52462aa..f05472601f 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1541,8 +1541,8 @@ "LabelSyncPlayTimeOffset": "Időeltolás a szerverhez képest:", "EnableDetailsBannerHelp": "Megjelenít egy banner képet a részletes információoldal tetején.", "EnableDetailsBanner": "Banner a részletes oldalon", - "EnableBlurhashHelp": "A még betöltés alatt álló képek helyén egy elmosódott helyettesítő képet jelenít meg", - "EnableBlurhash": "Elmosódott helyettesítőképek engedélyezése", + "EnableBlurHashHelp": "A még betöltés alatt álló képek helyén egy elmosódott helyettesítő képet jelenít meg", + "EnableBlurHash": "Elmosódott helyettesítőképek engedélyezése", "ShowMore": "Továbbiak megtekintése", "ShowLess": "Kevesebb mutatása", "ButtonCast": "Vetítés", diff --git a/src/strings/it.json b/src/strings/it.json index 437e9d2ffc..d3d5f93578 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1541,8 +1541,8 @@ "HeaderSyncPlaySelectGroup": "Unisciti a un gruppo", "EnableDetailsBannerHelp": "Mostra il banner nella parte superiore della pagina di dettaglio dell'elemento.", "EnableDetailsBanner": "Banner Dettagli", - "EnableBlurhashHelp": "Le immagini ancora da caricare saranno mostrate inizialmente sfocate", - "EnableBlurhash": "Abilita i segnaposto sfocati per le immagini", + "EnableBlurHashHelp": "Le immagini ancora da caricare saranno mostrate inizialmente sfocate", + "EnableBlurHash": "Abilita i segnaposto sfocati per le immagini", "ShowMore": "Mostra di più", "ShowLess": "Mostra meno", "ButtonCast": "Cast", diff --git a/src/strings/nb.json b/src/strings/nb.json index dbd94366ad..ee1905b7e2 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -1469,8 +1469,8 @@ "DeinterlaceMethodHelp": "Velg deinterlacing metoden som skal bli brukt når man transkoder interlaced innhold.", "ButtonTogglePlaylist": "Spilleliste", "ButtonToggleContextMenu": "Mer", - "EnableBlurhashHelp": "Bilder som fortsatt lastes inn vil vises med en tåkete plassholder", - "EnableBlurhash": "Aktiver tåkete plassholdere for bilder", + "EnableBlurHashHelp": "Bilder som fortsatt lastes inn vil vises med en tåkete plassholder", + "EnableBlurHash": "Aktiver tåkete plassholdere for bilder", "UnsupportedPlayback": "Jellyfin kan ikke dekryptere innhold beskyttet med DRM, men alt innhold vil bli forsøkt uansett, inkludert beskyttede titler. Noen filer kan fremstå helt svarte grunnet kryptering eller andre ikke støttede funksjoner, som interaktive titler.", "OnApplicationStartup": "Ved oppstart av applikasjonen", "EveryXHours": "Hver {0}. time", diff --git a/src/strings/nl.json b/src/strings/nl.json index 0ee710db7f..c185c429b8 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1552,8 +1552,8 @@ "ClearQueue": "Leeg wachtrij", "StopPlayback": "Stop afspelen", "ButtonPlayer": "Speler", - "EnableBlurhashHelp": "Afbeeldingen die nog laden worden getoond als een wazige placeholder", - "EnableBlurhash": "Schakel wazige placeholders voor plaatjes in", + "EnableBlurHashHelp": "Afbeeldingen die nog laden worden getoond als een wazige placeholder", + "EnableBlurHash": "Schakel wazige placeholders voor plaatjes in", "Writers": "Schrijvers", "ViewAlbumArtist": "Bekijk album artiest", "MessageAddRepository": "Om een repository toe te voegen klik je op de knop naast de kop, en vul je benodigde informatie in.", diff --git a/src/strings/pl.json b/src/strings/pl.json index 9d3ec0b2f3..cf82877cc4 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1477,8 +1477,8 @@ "StopPlayback": "Zatrzymaj odtwarzanie", "ButtonPlayer": "Odtwarzacz", "ButtonCast": "Obsada", - "EnableBlurhashHelp": "Obrazy które wciąż się ładują zostaną zastąpione rozmazanym symbolem", - "EnableBlurhash": "Włącz rozmazane zamienniki dla obrazów", + "EnableBlurHashHelp": "Obrazy które wciąż się ładują zostaną zastąpione rozmazanym symbolem", + "EnableBlurHash": "Włącz rozmazane zamienniki dla obrazów", "UnsupportedPlayback": "Jellyfin nie może odszyfrować zawartości zabezpieczonej przy pomocy DRM, ale spróbuje pomimo tego. Niektóre pliki mogą pojawiać się jako zupełnie czarne z powodu szyfrowania lub innych nie wspieranych funkcji jak np. interaktywne tytuły.", "OnApplicationStartup": "Przy starcie aplikacji", "EveryXHours": "Co {0} godzin", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 6c7c49718a..b86508e9db 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1541,8 +1541,8 @@ "HeaderSyncPlaySelectGroup": "Entrar em um grupo", "EnableDetailsBanner": "Banner de detalhes", "EnableDetailsBannerHelp": "Exibe um banner na parte superior da página de detalhes do item.", - "EnableBlurhashHelp": "Imagens que ainda estão carregando vão mostrar em seu lugar representações", - "EnableBlurhash": "Habilitar efeito borrado para imagens previas", + "EnableBlurHashHelp": "Imagens que ainda estão carregando vão mostrar em seu lugar representações", + "EnableBlurHash": "Habilitar efeito borrado para imagens previas", "ShowMore": "Mostrar mais", "ShowLess": "Mostrar menos", "ButtonSyncPlay": "SyncPlay", diff --git a/src/strings/ro.json b/src/strings/ro.json index f341a1699d..9996a8fe70 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1541,8 +1541,8 @@ "HeaderSyncPlaySelectGroup": "Alăturați-vă unui grup", "EnableDetailsBannerHelp": "Afișați o imagine de bandou în partea de sus a paginii cu detalii ale articolului.", "EnableDetailsBanner": "Detalii Bandou", - "EnableBlurhashHelp": "Imaginile care sunt în curs de încărcare vor fi afișate cu un marcaj întinat", - "EnableBlurhash": "Activați marcatoarele întinate pentru imagini", + "EnableBlurHashHelp": "Imaginile care sunt în curs de încărcare vor fi afișate cu un marcaj întinat", + "EnableBlurHash": "Activați marcatoarele întinate pentru imagini", "ShowMore": "Arată mai mult", "ShowLess": "Arată mai puțin", "ButtonCast": "Proiectează", diff --git a/src/strings/ru.json b/src/strings/ru.json index 0ba5eeac27..edc7acdd4f 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -1543,8 +1543,8 @@ "MessageSyncPlayErrorNoActivePlayer": "Активный проигрыватель не найден. SyncPlay был отключен.", "ShowMore": "Показать больше", "ShowLess": "Показать меньше", - "EnableBlurhashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с размытым заполнением", - "EnableBlurhash": "Включить размытые заполнители для изображений", + "EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с размытым заполнением", + "EnableBlurHash": "Включить размытые заполнители для изображений", "ButtonSyncPlay": "SyncPlay", "ButtonCast": "В ролях", "TabRepositories": "Репозитории", diff --git a/src/strings/sk.json b/src/strings/sk.json index 760722a9d3..579420920b 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1541,8 +1541,8 @@ "SyncPlayAccessHelp": "Vyberte úroveň prístupu pre tohto používateľa k funkcií SyncPlay. SyncPlay umožňuje zosynchronizovať prehrávanie s ostatnými zariadeniami.", "EnableDetailsBannerHelp": "Zobrazí banner na vrchnej časti detailu položky.", "EnableDetailsBanner": "Detail banneru", - "EnableBlurhashHelp": "Obrázky, ktoré sa stále načítavajú budú zobrazené ako dočasný obrázok s rozmazaným pozadím", - "EnableBlurhash": "Povoliť obrázok s rozmazaným pozadím pre chýbajúce obrázky", + "EnableBlurHashHelp": "Obrázky, ktoré sa stále načítavajú budú zobrazené ako dočasný obrázok s rozmazaným pozadím", + "EnableBlurHash": "Povoliť obrázok s rozmazaným pozadím pre chýbajúce obrázky", "ShowMore": "Zobraziť viac", "ShowLess": "Zobraziť menej", "ButtonCast": "Prenášať", diff --git a/src/strings/sv.json b/src/strings/sv.json index f12e7eff47..7ab2afc867 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -1538,8 +1538,8 @@ "StopPlayback": "Stoppa uppspelning", "ButtonPlayer": "Spelare", "ButtonCast": "Roller", - "EnableBlurhashHelp": "Bilder som fortfarande laddas kommer visas med en suddig platshållare", - "EnableBlurhash": "Aktivera suddiga platshållare för bilder", + "EnableBlurHashHelp": "Bilder som fortfarande laddas kommer visas med en suddig platshållare", + "EnableBlurHash": "Aktivera suddiga platshållare för bilder", "Writers": "Skribenter", "ViewAlbumArtist": "Visa albums artist", "TabRepositories": "Förvaringsplatser", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index b593772f9a..dd2ea6be7d 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1533,8 +1533,8 @@ "EnableDetailsBanner": "详细信息页面的横幅", "ButtonCast": "投射", "ButtonSyncPlay": "SyncPlay", - "EnableBlurhashHelp": "仍在加载的图片将显示带有模糊的占位符", - "EnableBlurhash": "为图片启用模糊的占位符", + "EnableBlurHashHelp": "仍在加载的图片将显示带有模糊的占位符", + "EnableBlurHash": "为图片启用模糊的占位符", "SyncPlayAccessHelp": "为此用户选择对同步播放功能的访问级别。同步播放让你可以和其他设备同步播放进度。", "ShowMore": "显示更多", "ShowLess": "显示更少", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index e8a05e081e..4a05bb9ee8 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -1525,8 +1525,8 @@ "ShowLess": "顯示更少", "ShowMore": "顯示更多", "SyncPlayAccessHelp": "選取該使用者對同步播放的存取權。此功能能讓你與其他裝置同步播放進度。", - "EnableBlurhash": "啟用模糊的占位圖片", - "EnableBlurhashHelp": "尚未讀取完畢的圖片會先顯示模糊的版本", + "EnableBlurHash": "啟用模糊的占位圖片", + "EnableBlurHashHelp": "尚未讀取完畢的圖片會先顯示模糊的版本", "ClearQueue": "清空佇列", "StopPlayback": "停止播放", "ButtonPlayer": "播放器", From 620f9cd30fb14f3cd5fd7a78b1732e1c4d926c5d Mon Sep 17 00:00:00 2001 From: Matjaz Zavski Date: Fri, 31 Jul 2020 18:41:31 +0200 Subject: [PATCH 077/463] Update src/controllers/livetvstatus.js Co-authored-by: Cameron --- src/controllers/livetvstatus.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index be6cb1c738..2b7a1ee730 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -265,7 +265,7 @@ function showDeviceMenu(button, tunerDeviceId) { id: 'edit' }); - require(['actionsheet'], function (actionsheet) { + import('actionsheet').then(({default: actionsheet}) => { actionsheet.show({ items: items, positionTo: button From 8b1c80c4fb2c00dfd75478a45c3c6470347bd402 Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Fri, 31 Jul 2020 18:44:37 +0200 Subject: [PATCH 078/463] more fixes --- src/controllers/livetvstatus.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/livetvstatus.js b/src/controllers/livetvstatus.js index 2b7a1ee730..f37760808a 100644 --- a/src/controllers/livetvstatus.js +++ b/src/controllers/livetvstatus.js @@ -131,7 +131,7 @@ function renderProviders(page, providers) { const elem = $('.providerList', page).html(html); $('.btnOptions', elem).on('click', function () { - var id = this.getAttribute('data-id'); + const id = this.getAttribute('data-id'); showProviderOptions(page, id, this); }); } @@ -255,7 +255,7 @@ function addDevice(button) { } function showDeviceMenu(button, tunerDeviceId) { - var items = []; + const items = []; items.push({ name: globalize.translate('ButtonDelete'), id: 'delete' From 1fd6f7124fb02adbf9298e03f85fef3ad04b76e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Fri, 31 Jul 2020 14:39:37 +0000 Subject: [PATCH 079/463] Translated using Weblate (Czech) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/cs/ --- src/strings/cs.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/cs.json b/src/strings/cs.json index fcabe3f3b3..8cb6bc39ac 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1495,7 +1495,7 @@ "New": "Nové", "ButtonTogglePlaylist": "Playlist", "ButtonToggleContextMenu": "Více", - "LabelNightly": "Nightly", + "LabelNightly": "Aktualizace každou noc", "LabelStable": "Stabilní", "LabelChromecastVersion": "Verze Chromecastu", "ApiKeysCaption": "Seznam povolených API klíčů", @@ -1566,5 +1566,6 @@ "StopPlayback": "Zastavit přehrávání", "ViewAlbumArtist": "Zobrazit interpreta alba", "PreviousTrack": "Předchozí", - "NextTrack": "Další" + "NextTrack": "Další", + "LabelUnstable": "Nestabilní" } From 90ace62db6148f44210c62e3883bef98443f9613 Mon Sep 17 00:00:00 2001 From: millallo Date: Fri, 31 Jul 2020 16:05:18 +0000 Subject: [PATCH 080/463] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index 76d3971fa9..be5af2f812 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1520,7 +1520,7 @@ "MessageSyncPlayGroupDoesNotExist": "Impossibile unirsi al gruppo perchè non esiste.", "MessageSyncPlayPlaybackPermissionRequired": "Permesso di riproduzione necessario.", "MessageSyncPlayNoGroupsAvailable": "Nessun gruppo disponibile. Inizia a riprodurre qualcosa.", - "MessageSyncPlayGroupWait": "{0} sta bufferizzando...", + "MessageSyncPlayGroupWait": "{0} sta bufferizzando…", "MessageSyncPlayUserLeft": "{0} ha lasciato il gruppo.", "MessageSyncPlayUserJoined": "{0} si è unito al gruppo.", "MessageSyncPlayDisabled": "SyncPlay disabilitato.", @@ -1564,5 +1564,6 @@ "ViewAlbumArtist": "Visualizza artista dell'album", "Writers": "Scrittori", "ClearQueue": "Svuota la coda", - "StopPlayback": "Interrompi riproduzione" + "StopPlayback": "Interrompi riproduzione", + "LabelUnstable": "Unstable" } From 35065208969b572b3c764e8cc17ebac4c04f1ea6 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 31 Jul 2020 13:44:51 +0000 Subject: [PATCH 081/463] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index d41bea60b5..691df651c0 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -76,7 +76,7 @@ "ButtonEditImages": "イメージを編集", "ButtonEditOtherUserPreferences": "ユーザーのアバターイメージやプロフィールなどの個人設定を編集。", "ButtonFilter": "フィルタ", - "ButtonForgotPassword": "パスワードを忘れました", + "ButtonForgotPassword": "パスワードを忘れた", "ButtonFullscreen": "フルスクリーン", "ButtonGotIt": "了解", "ButtonGuide": "ガイド", @@ -502,7 +502,7 @@ "ButtonAddImage": "イメージの追加", "List": "リスト", "MediaInfoTimestamp": "タイムスタンプ", - "NoSubtitles": "字幕がありません", + "NoSubtitles": "無し", "TabCollections": "コレクション", "Thursday": "木曜日", "TitleHardwareAcceleration": "ハードウェアアクセラレーション", From dd0e47a70efa89cd4f3f748cfc705575885546cb Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 21:35:01 +0100 Subject: [PATCH 082/463] Apply suggestions --- src/components/appRouter.js | 12 +++++++----- src/controllers/music/musicrecommended.js | 2 -- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 7f4976424c..8c9b953d39 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -1,6 +1,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdrop', 'browser', 'page', 'appSettings', 'apphost', 'connectionManager'], function (loading, globalize, events, viewManager, skinManager, backdrop, browser, page, appSettings, appHost, connectionManager) { 'use strict'; + loading = loading.default || loading; + var appRouter = { showLocalLogin: function (serverId, manualLogin) { var pageName = manualLogin ? 'manuallogin' : 'login'; @@ -22,7 +24,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro function beginConnectionWizard() { backdrop.clearBackdrop(); - loading.default.show(); + loading.show(); connectionManager.connect({ enableAutoLogin: appSettings.enableAutoLogin() }).then(function (result) { @@ -33,7 +35,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro function handleConnectionResult(result) { switch (result.State) { case 'SignedIn': - loading.default.hide(); + loading.hide(); skinManager.loadUserSkin(); break; case 'ServerSignIn': @@ -276,7 +278,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro var firstConnectionResult; function start(options) { - loading.default.show(); + loading.show(); initApiClients(); @@ -296,7 +298,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro hashbang: options.hashbang !== false }); }).catch().then(function() { - loading.default.hide(); + loading.hide(); }); } @@ -511,7 +513,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro if (currentRouteInfo && currentRouteInfo.path === path) { // can't use this with home right now due to the back menu if (currentRouteInfo.route.type !== 'home') { - loading.default.hide(); + loading.hide(); return Promise.resolve(); } } diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index e06f865a27..82041c5a56 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -17,8 +17,6 @@ import 'flexStyles'; /* eslint-disable indent */ - loading = loading.default || loading; - function itemsPerRow() { const screenWidth = dom.getWindowSize().innerWidth; From 0acf8534bb94e987603c8497a6705418534389bb Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 21:39:31 +0100 Subject: [PATCH 083/463] Apply suggestions from code review Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/loading/loading.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/loading/loading.js b/src/components/loading/loading.js index 08271d4635..8237611373 100644 --- a/src/components/loading/loading.js +++ b/src/components/loading/loading.js @@ -8,7 +8,7 @@ let layer4; let circleLefts; let circleRights; -function show() { +export function show() { let elem = loadingElem; if (!elem) { @@ -47,7 +47,7 @@ function show() { } } -function hide() { +export function hide() { const elem = loadingElem; if (elem) { From c5c11279b877152fdca2569953edae751b2d26f0 Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Fri, 31 Jul 2020 23:27:51 +0200 Subject: [PATCH 084/463] Migrated to es6 module --- package.json | 1 + src/controllers/livetvsettings.js | 123 +++++++++++++++--------------- 2 files changed, 64 insertions(+), 60 deletions(-) diff --git a/package.json b/package.json index a9e269f5ef..c1b1ab5ae2 100644 --- a/package.json +++ b/package.json @@ -207,6 +207,7 @@ "src/controllers/searchpage.js", "src/controllers/livetvtuner.js", "src/controllers/livetvstatus.js", + "src/controllers/livetvsettings.js", "src/controllers/shows/episodes.js", "src/controllers/shows/tvgenres.js", "src/controllers/shows/tvlatest.js", diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index 715eb06214..0adf8f18b5 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -1,65 +1,68 @@ -define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading, globalize) { - 'use strict'; +import $ from 'jQuery'; +import loading from 'loading'; +import globalize from 'globalize'; +import 'emby-button'; - function loadPage(page, config) { - $('.liveTvSettingsForm', page).show(); - $('.noLiveTvServices', page).hide(); - $('#selectGuideDays', page).val(config.GuideDays || ''); - $('#txtPrePaddingMinutes', page).val(config.PrePaddingSeconds / 60); - $('#txtPostPaddingMinutes', page).val(config.PostPaddingSeconds / 60); - page.querySelector('#txtRecordingPath').value = config.RecordingPath || ''; - page.querySelector('#txtMovieRecordingPath').value = config.MovieRecordingPath || ''; - page.querySelector('#txtSeriesRecordingPath').value = config.SeriesRecordingPath || ''; - page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || ''; - page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || ''; - loading.hide(); - } +function loadPage(page, config) { + $('.liveTvSettingsForm', page).show(); + $('.noLiveTvServices', page).hide(); + $('#selectGuideDays', page).val(config.GuideDays || ''); + $('#txtPrePaddingMinutes', page).val(config.PrePaddingSeconds / 60); + $('#txtPostPaddingMinutes', page).val(config.PostPaddingSeconds / 60); + page.querySelector('#txtRecordingPath').value = config.RecordingPath || ''; + page.querySelector('#txtMovieRecordingPath').value = config.MovieRecordingPath || ''; + page.querySelector('#txtSeriesRecordingPath').value = config.SeriesRecordingPath || ''; + page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || ''; + page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || ''; + loading.hide(); +} - function onSubmit() { - loading.show(); - var form = this; - ApiClient.getNamedConfiguration('livetv').then(function (config) { - config.GuideDays = $('#selectGuideDays', form).val() || null; - var recordingPath = form.querySelector('#txtRecordingPath').value || null; - var movieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null; - var seriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null; - var recordingPathChanged = recordingPath != config.RecordingPath || movieRecordingPath != config.MovieRecordingPath || seriesRecordingPath != config.SeriesRecordingPath; - config.RecordingPath = recordingPath; - config.MovieRecordingPath = movieRecordingPath; - config.SeriesRecordingPath = seriesRecordingPath; - config.RecordingEncodingFormat = 'mkv'; - config.PrePaddingSeconds = 60 * $('#txtPrePaddingMinutes', form).val(); - config.PostPaddingSeconds = 60 * $('#txtPostPaddingMinutes', form).val(); - config.RecordingPostProcessor = $('#txtPostProcessor', form).val(); - config.RecordingPostProcessorArguments = $('#txtPostProcessorArguments', form).val(); - ApiClient.updateNamedConfiguration('livetv', config).then(function () { - Dashboard.processServerConfigurationUpdateResult(); - showSaveMessage(recordingPathChanged); - }); +function onSubmit() { + loading.show(); + const form = this; + ApiClient.getNamedConfiguration('livetv').then(function (config) { + config.GuideDays = $('#selectGuideDays', form).val() || null; + const recordingPath = form.querySelector('#txtRecordingPath').value || null; + const movieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null; + const seriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null; + const recordingPathChanged = recordingPath != config.RecordingPath || movieRecordingPath != config.MovieRecordingPath || seriesRecordingPath != config.SeriesRecordingPath; + config.RecordingPath = recordingPath; + config.MovieRecordingPath = movieRecordingPath; + config.SeriesRecordingPath = seriesRecordingPath; + config.RecordingEncodingFormat = 'mkv'; + config.PrePaddingSeconds = 60 * $('#txtPrePaddingMinutes', form).val(); + config.PostPaddingSeconds = 60 * $('#txtPostPaddingMinutes', form).val(); + config.RecordingPostProcessor = $('#txtPostProcessor', form).val(); + config.RecordingPostProcessorArguments = $('#txtPostProcessorArguments', form).val(); + ApiClient.updateNamedConfiguration('livetv', config).then(function () { + Dashboard.processServerConfigurationUpdateResult(); + showSaveMessage(recordingPathChanged); }); - return false; + }); + return false; +} + +function showSaveMessage(recordingPathChanged) { + let msg = ''; + + if (recordingPathChanged) { + msg += globalize.translate('RecordingPathChangeMessage'); } - function showSaveMessage(recordingPathChanged) { - var msg = ''; - - if (recordingPathChanged) { - msg += globalize.translate('RecordingPathChangeMessage'); - } - - if (msg) { - require(['alert'], function (alert) { - alert(msg); - }); - } + if (msg) { } + import('alert').then(({default: alert}) => { + alert(msg); + }); +} +export default function () { $(document).on('pageinit', '#liveTvSettingsPage', function () { - var page = this; + const page = this; $('.liveTvSettingsForm').off('submit', onSubmit).on('submit', onSubmit); $('#btnSelectRecordingPath', page).on('click.selectDirectory', function () { - require(['directorybrowser'], function (directoryBrowser) { - var picker = new directoryBrowser.default(); + import('directorybrowser').then(({default: directoryBrowser}) => { + const picker = new directoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -73,8 +76,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading, }); }); $('#btnSelectMovieRecordingPath', page).on('click.selectDirectory', function () { - require(['directorybrowser'], function (directoryBrowser) { - var picker = new directoryBrowser.default(); + import('directorybrowser').then(({default: directoryBrowser}) => { + const picker = new directoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -88,8 +91,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading, }); }); $('#btnSelectSeriesRecordingPath', page).on('click.selectDirectory', function () { - require(['directorybrowser'], function (directoryBrowser) { - var picker = new directoryBrowser.default(); + import('directorybrowser').then(({default: directoryBrowser}) => { + const picker = new directoryBrowser(); picker.show({ callback: function (path) { if (path) { @@ -103,8 +106,8 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading, }); }); $('#btnSelectPostProcessorPath', page).on('click.selectDirectory', function () { - require(['directorybrowser'], function (directoryBrowser) { - var picker = new directoryBrowser.default(); + import('directorybrowser').then(({default: directoryBrowser}) => { + const picker = new directoryBrowser(); picker.show({ includeFiles: true, callback: function (path) { @@ -119,9 +122,9 @@ define(['jQuery', 'loading', 'globalize', 'emby-button'], function ($, loading, }); }).on('pageshow', '#liveTvSettingsPage', function () { loading.show(); - var page = this; + const page = this; ApiClient.getNamedConfiguration('livetv').then(function (config) { loadPage(page, config); }); }); -}); +} From caeba288aa91b05d1232197d82d848f1f81f97ba Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2020 21:30:52 +0000 Subject: [PATCH 085/463] Bump css-loader from 4.1.1 to 4.2.0 Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 4.1.1 to 4.2.0. - [Release notes](https://github.com/webpack-contrib/css-loader/releases) - [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/css-loader/compare/v4.1.1...v4.2.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a9e269f5ef..17d175b7e7 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "babel-loader": "^8.0.6", "browser-sync": "^2.26.12", "copy-webpack-plugin": "^5.1.1", - "css-loader": "^4.1.1", + "css-loader": "^4.2.0", "cssnano": "^4.1.10", "del": "^5.1.0", "eslint": "^6.8.0", diff --git a/yarn.lock b/yarn.lock index fdba5328dd..09181bfc78 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3025,10 +3025,10 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.1.1.tgz#48342f098784e75bbfc0933dea2853314fb737d8" - integrity sha512-nZ4OC2g88+wOOdkVQ0yYy7T6uXSkb7I7UyMNnaevQQvVWskTSDRAz08ETl91et4ghVL6jfnzWUt0o2XaY0gyRg== +css-loader@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.2.0.tgz#b57efb92ac8f0cd85bf92d89df9634ef1f51b8bf" + integrity sha512-ko7a9b0iFpWtk9eSI/C8IICvZeGtYnjxYjw45rJprokXj/+kBd/siX4vAIBq9Uij8Jubc4jL1EvSnTjCEwaHSw== dependencies: camelcase "^6.0.0" cssesc "^3.0.0" From 7e5e429625d89b2187963b4b4a96ca744d3d79ed Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Fri, 31 Jul 2020 23:31:32 +0200 Subject: [PATCH 086/463] small fix --- src/controllers/livetvsettings.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index 0adf8f18b5..a9c597a2be 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -50,10 +50,10 @@ function showSaveMessage(recordingPathChanged) { } if (msg) { + import('alert').then(({default: alert}) => { + alert(msg); + }); } - import('alert').then(({default: alert}) => { - alert(msg); - }); } export default function () { From af93c4a798376f89bb089bcf1226420767e31408 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 1 Aug 2020 05:36:36 +0200 Subject: [PATCH 087/463] Migrate routes.js to ES6 --- package.json | 2 + src/components/viewContainer.js | 104 +++++++++++++------------- src/scripts/routes.js | 126 ++++++++++++++++++++++---------- 3 files changed, 142 insertions(+), 90 deletions(-) diff --git a/package.json b/package.json index a9e269f5ef..74cf0ad5e9 100644 --- a/package.json +++ b/package.json @@ -163,6 +163,7 @@ "src/components/syncPlay/playbackPermissionManager.js", "src/components/syncPlay/syncPlayManager.js", "src/components/syncPlay/timeSyncManager.js", + "src/components/viewContainer.js", "src/controllers/session/addServer/index.js", "src/controllers/session/forgotPassword/index.js", "src/controllers/session/redeemPassword/index.js", @@ -267,6 +268,7 @@ "src/scripts/libraryBrowser.js", "src/scripts/multiDownload.js", "src/scripts/playlists.js", + "src/scripts/routes.js", "src/scripts/settings/appSettings.js", "src/scripts/settings/userSettings.js", "src/scripts/settings/webSettings.js", diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index d1b0df6fbb..766a12b9ce 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -1,12 +1,11 @@ -define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewContainer'], function (browser, dom, layoutManager) { - 'use strict'; +/* eslint-disable indent */ function setControllerClass(view, options) { if (options.controllerFactory) { return Promise.resolve(); } - var controllerUrl = view.getAttribute('data-controller'); + let controllerUrl = view.getAttribute('data-controller'); if (controllerUrl) { if (controllerUrl.indexOf('__plugin/') === 0) { @@ -14,7 +13,7 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta } controllerUrl = Dashboard.getConfigurationResourceUrl(controllerUrl); - return getRequirePromise([controllerUrl]).then(function (ControllerFactory) { + return getRequirePromise([controllerUrl]).then((ControllerFactory) => { options.controllerFactory = ControllerFactory; }); } @@ -23,35 +22,35 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta } function getRequirePromise(deps) { - return new Promise(function (resolve, reject) { + return new Promise((resolve, reject) => { require(deps, resolve); }); } - function loadView(options) { + export function loadView(options) { if (!options.cancel) { - var selected = selectedPageIndex; - var previousAnimatable = selected === -1 ? null : allPages[selected]; - var pageIndex = selected + 1; + const selected = selectedPageIndex; + const previousAnimatable = selected === -1 ? null : allPages[selected]; + let pageIndex = selected + 1; if (pageIndex >= pageContainerCount) { pageIndex = 0; } - var isPluginpage = options.url.toLowerCase().indexOf('/configurationpage') !== -1; - var newViewInfo = normalizeNewView(options, isPluginpage); - var newView = newViewInfo.elem; - var modulesToLoad = []; + const isPluginpage = options.url.toLowerCase().indexOf('/configurationpage') !== -1; + const newViewInfo = normalizeNewView(options, isPluginpage); + const newView = newViewInfo.elem; + const modulesToLoad = []; - return new Promise(function (resolve) { - require(modulesToLoad, function () { - var currentPage = allPages[pageIndex]; + return new Promise((resolve) => { + require(modulesToLoad, () => { + const currentPage = allPages[pageIndex]; if (currentPage) { triggerDestroy(currentPage); } - var view = newView; + let view = newView; if (typeof view == 'string') { view = document.createElement('div'); @@ -79,7 +78,7 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta view.setAttribute('data-type', options.type); } - var properties = []; + const properties = []; if (options.fullscreen) { properties.push('fullscreen'); @@ -90,7 +89,7 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta } allPages[pageIndex] = view; - setControllerClass(view, options).then(function () { + setControllerClass(view, options).then(() => { if (onBeforeChange) { onBeforeChange(view, false, options); } @@ -125,28 +124,28 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta html = replaceAll(html, '<\/script>--\x3e', '<\/script>'); } - var wrapper = document.createElement('div'); + const wrapper = document.createElement('div'); wrapper.innerHTML = html; return wrapper.querySelector('div[data-role="page"]'); } function normalizeNewView(options, isPluginpage) { - var viewHtml = options.view; + const viewHtml = options.view; if (viewHtml.indexOf('data-role="page"') === -1) { return viewHtml; } - var hasScript = viewHtml.indexOf(' { if (onBeforeChange) { onBeforeChange(view, true, options); } @@ -228,25 +227,28 @@ define(['browser', 'dom', 'layoutManager', 'css!components/viewManager/viewConta view.dispatchEvent(new CustomEvent('viewdestroy', {})); } - function reset() { + export function reset() { allPages = []; currentUrls = []; mainAnimatedPages.innerHTML = ''; selectedPageIndex = -1; } - var onBeforeChange; - var mainAnimatedPages = document.querySelector('.mainAnimatedPages'); - var allPages = []; - var currentUrls = []; - var pageContainerCount = 3; - var selectedPageIndex = -1; + let onBeforeChange; + const mainAnimatedPages = document.querySelector('.mainAnimatedPages'); + let allPages = []; + let currentUrls = []; + const pageContainerCount = 3; + let selectedPageIndex = -1; reset(); mainAnimatedPages.classList.remove('hide'); - return { - loadView: loadView, - tryRestoreView: tryRestoreView, - reset: reset, - setOnBeforeChange: setOnBeforeChange - }; -}); + +/* eslint-enable indent */ + +export default { + loadView: loadView, + tryRestoreView: tryRestoreView, + reset: reset, + setOnBeforeChange: setOnBeforeChange +}; + diff --git a/src/scripts/routes.js b/src/scripts/routes.js index 1d735e3018..4094a2552f 100644 --- a/src/scripts/routes.js +++ b/src/scripts/routes.js @@ -1,18 +1,21 @@ -define([ - 'jQuery', - 'emby-button', - 'emby-input', - 'scripts/livetvcomponents', - 'paper-icon-button-light', - 'emby-itemscontainer', - 'emby-collapse', - 'emby-select', - 'livetvcss', - 'emby-checkbox', - 'emby-slider', - 'listViewStyle', - 'dashboardcss', - 'detailtablecss'], function () { +import 'emby-button'; +import 'emby-input'; +import 'scripts/livetvcomponents'; +import 'paper-icon-button-light'; +import 'emby-itemscontainer'; +import 'emby-collapse'; +import 'emby-select'; +import 'livetvcss'; +import 'emby-checkbox'; +import 'emby-slider'; +import 'listViewStyle'; +import 'dashboardcss'; +import 'detailtablecss'; + +/* eslint-disable indent */ + + console.groupCollapsed('defining core routes'); + function defineRoute(newRoute) { var path = newRoute.alias ? newRoute.alias : newRoute.path; console.debug('defining route: ' + path); @@ -20,8 +23,6 @@ define([ Emby.Page.addRoute(path, newRoute); } - console.debug('defining core routes'); - defineRoute({ alias: '/addserver.html', path: '/controllers/session/addServer/index.html', @@ -30,6 +31,7 @@ define([ startup: true, controller: 'session/addServer/index' }); + defineRoute({ alias: '/selectserver.html', path: '/controllers/session/selectServer/index.html', @@ -39,6 +41,7 @@ define([ controller: 'session/selectServer/index', type: 'selectserver' }); + defineRoute({ alias: '/login.html', path: '/controllers/session/login/index.html', @@ -48,6 +51,7 @@ define([ controller: 'session/login/index', type: 'login' }); + defineRoute({ alias: '/forgotpassword.html', path: '/controllers/session/forgotPassword/index.html', @@ -55,6 +59,7 @@ define([ startup: true, controller: 'session/forgotPassword/index' }); + defineRoute({ alias: '/forgotpasswordpin.html', path: '/controllers/session/redeemPassword/index.html', @@ -68,42 +73,41 @@ define([ alias: '/mypreferencesmenu.html', path: '/controllers/user/menu/index.html', autoFocus: false, - transition: 'fade', controller: 'user/menu/index' }); + defineRoute({ alias: '/myprofile.html', path: '/controllers/user/profile/index.html', autoFocus: false, - transition: 'fade', controller: 'user/profile/index' }); + defineRoute({ alias: '/mypreferencesdisplay.html', path: '/controllers/user/display/index.html', autoFocus: false, - transition: 'fade', controller: 'user/display/index' }); + defineRoute({ alias: '/mypreferenceshome.html', path: '/controllers/user/home/index.html', autoFocus: false, - transition: 'fade', controller: 'user/home/index' }); + defineRoute({ alias: '/mypreferencesplayback.html', path: '/controllers/user/playback/index.html', autoFocus: false, - transition: 'fade', controller: 'user/playback/index' }); + defineRoute({ alias: '/mypreferencessubtitles.html', path: '/controllers/user/subtitles/index.html', autoFocus: false, - transition: 'fade', controller: 'user/subtitles/index' }); @@ -113,42 +117,49 @@ define([ roles: 'admin', controller: 'dashboard/dashboard' }); + defineRoute({ path: '/dashboardgeneral.html', controller: 'dashboard/general', autoFocus: false, roles: 'admin' }); + defineRoute({ path: '/networking.html', autoFocus: false, roles: 'admin', controller: 'dashboard/networking' }); + defineRoute({ path: '/devices.html', autoFocus: false, roles: 'admin', controller: 'dashboard/devices/devices' }); + defineRoute({ path: '/device.html', autoFocus: false, roles: 'admin', controller: 'dashboard/devices/device' }); + defineRoute({ path: '/dlnaprofile.html', autoFocus: false, roles: 'admin', controller: 'dashboard/dlna/profile' }); + defineRoute({ path: '/dlnaprofiles.html', autoFocus: false, roles: 'admin', controller: 'dashboard/dlna/profiles' }); + defineRoute({ alias: '/addplugin.html', path: '/controllers/dashboard/plugins/add/index.html', @@ -156,52 +167,61 @@ define([ roles: 'admin', controller: 'dashboard/plugins/add/index' }); + defineRoute({ path: '/library.html', autoFocus: false, roles: 'admin', controller: 'dashboard/mediaLibrary' }); + defineRoute({ path: '/librarydisplay.html', autoFocus: false, roles: 'admin', controller: 'dashboard/librarydisplay' }); + defineRoute({ path: '/dlnasettings.html', autoFocus: false, roles: 'admin', controller: 'dashboard/dlna/settings' }); + defineRoute({ path: '/edititemmetadata.html', controller: 'edititemmetadata', autoFocus: false }); + defineRoute({ path: '/encodingsettings.html', autoFocus: false, roles: 'admin', controller: 'dashboard/encodingsettings' }); + defineRoute({ path: '/log.html', roles: 'admin', controller: 'dashboard/logs' }); + defineRoute({ path: '/metadataimages.html', autoFocus: false, roles: 'admin', controller: 'dashboard/metadataImages' }); + defineRoute({ path: '/metadatanfo.html', autoFocus: false, roles: 'admin', controller: 'dashboard/metadatanfo' }); + defineRoute({ alias: '/notificationsetting.html', path: '/controllers/dashboard/notifications/notification/index.html', @@ -209,6 +229,7 @@ define([ roles: 'admin', controller: 'dashboard/notifications/notification/index' }); + defineRoute({ alias: '/notificationsettings.html', path: '/controllers/dashboard/notifications/notifications/index.html', @@ -216,12 +237,14 @@ define([ autoFocus: false, roles: 'admin' }); + defineRoute({ path: '/playbackconfiguration.html', autoFocus: false, roles: 'admin', controller: 'dashboard/playback' }); + defineRoute({ alias: '/availableplugins.html', path: '/controllers/dashboard/plugins/available/index.html', @@ -229,6 +252,7 @@ define([ roles: 'admin', controller: 'dashboard/plugins/available/index' }); + defineRoute({ alias: '/repositories.html', path: '/controllers/dashboard/plugins/repositories/index.html', @@ -241,67 +265,72 @@ define([ path: '/home.html', autoFocus: false, controller: 'home', - transition: 'fade', type: 'home' }); + defineRoute({ path: '/search.html', controller: 'searchpage' }); + defineRoute({ path: '/list.html', autoFocus: false, - controller: 'list', - transition: 'fade' + controller: 'list' }); + defineRoute({ alias: '/details', path: '/controllers/itemDetails/index.html', controller: 'itemDetails/index', - autoFocus: false, - transition: 'fade' + autoFocus: false }); + defineRoute({ path: '/livetv.html', controller: 'livetv/livetvsuggested', - autoFocus: false, - transition: 'fade' + autoFocus: false }); + defineRoute({ path: '/livetvguideprovider.html', autoFocus: false, roles: 'admin', controller: 'livetvguideprovider' }); + defineRoute({ path: '/livetvsettings.html', autoFocus: false, controller: 'livetvsettings' }); + defineRoute({ path: '/livetvstatus.html', autoFocus: false, roles: 'admin', controller: 'livetvstatus' }); + defineRoute({ path: '/livetvtuner.html', autoFocus: false, roles: 'admin', controller: 'livetvtuner' }); + defineRoute({ path: '/movies.html', autoFocus: false, - controller: 'movies/moviesrecommended', - transition: 'fade' + controller: 'movies/moviesrecommended' }); + defineRoute({ path: '/music.html', controller: 'music/musicrecommended', - autoFocus: false, - transition: 'fade' + autoFocus: false }); + defineRoute({ alias: '/installedplugins.html', path: '/controllers/dashboard/plugins/installed/index.html', @@ -309,41 +338,46 @@ define([ roles: 'admin', controller: 'dashboard/plugins/installed/index' }); + defineRoute({ path: '/scheduledtask.html', autoFocus: false, roles: 'admin', controller: 'dashboard/scheduledtasks/scheduledtask' }); + defineRoute({ path: '/scheduledtasks.html', autoFocus: false, roles: 'admin', controller: 'dashboard/scheduledtasks/scheduledtasks' }); + defineRoute({ path: '/serveractivity.html', autoFocus: false, roles: 'admin', controller: 'dashboard/serveractivity' }); + defineRoute({ path: '/apikeys.html', autoFocus: false, roles: 'admin', controller: 'dashboard/apikeys' }); + defineRoute({ path: '/streamingsettings.html', autoFocus: false, roles: 'admin', controller: 'dashboard/streaming' }); + defineRoute({ path: '/tv.html', autoFocus: false, - controller: 'shows/tvrecommended', - transition: 'fade' + controller: 'shows/tvrecommended' }); defineRoute({ @@ -352,29 +386,34 @@ define([ roles: 'admin', controller: 'dashboard/users/useredit' }); + defineRoute({ path: '/userlibraryaccess.html', autoFocus: false, roles: 'admin', controller: 'dashboard/users/userlibraryaccess' }); + defineRoute({ path: '/usernew.html', autoFocus: false, roles: 'admin', controller: 'dashboard/users/usernew' }); + defineRoute({ path: '/userparentalcontrol.html', autoFocus: false, roles: 'admin', controller: 'dashboard/users/userparentalcontrol' }); + defineRoute({ path: '/userpassword.html', autoFocus: false, controller: 'dashboard/users/userpasswordpage' }); + defineRoute({ path: '/userprofiles.html', autoFocus: false, @@ -389,6 +428,7 @@ define([ anonymous: true, controller: 'wizard/remote/index' }); + defineRoute({ alias: '/wizardfinish.html', path: '/controllers/wizard/finish/index.html', @@ -396,12 +436,14 @@ define([ anonymous: true, controller: 'wizard/finish/index' }); + defineRoute({ path: '/wizardlibrary.html', autoFocus: false, anonymous: true, controller: 'dashboard/mediaLibrary' }); + defineRoute({ alias: '/wizardsettings.html', path: '/controllers/wizard/settings/index.html', @@ -409,6 +451,7 @@ define([ anonymous: true, controller: 'wizard/settings/index' }); + defineRoute({ alias: '/wizardstart.html', path: '/controllers/wizard/start/index.html', @@ -416,6 +459,7 @@ define([ anonymous: true, controller: 'wizard/start/index' }); + defineRoute({ alias: '/wizarduser.html', path: '/controllers/wizard/user/index.html', @@ -427,7 +471,6 @@ define([ defineRoute({ alias: '/video', path: '/controllers/playback/video/index.html', - transition: 'fade', controller: 'playback/video/index', autoFocus: false, type: 'video-osd', @@ -435,16 +478,17 @@ define([ fullscreen: true, enableMediaControl: false }); + defineRoute({ alias: '/queue', path: '/controllers/playback/queue/index.html', controller: 'playback/queue/index', autoFocus: false, - transition: 'fade', fullscreen: true, supportsThemeMedia: true, enableMediaControl: false }); + defineRoute({ path: '/configurationpage', autoFocus: false, @@ -458,9 +502,13 @@ define([ isDefaultRoute: true, autoFocus: false }); + defineRoute({ path: '/index.html', autoFocus: false, isDefaultRoute: true }); -}); + + console.groupEnd('defining core routes'); + +/* eslint-enable indent */ From 5d2d8d2855d2b8173f9eb04c86a1f81724cc2b13 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 1 Aug 2020 05:37:07 +0200 Subject: [PATCH 088/463] Fix typo in imageLoader --- src/components/images/imageLoader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/images/imageLoader.js b/src/components/images/imageLoader.js index c9d3e6fdb2..0effcc7a57 100644 --- a/src/components/images/imageLoader.js +++ b/src/components/images/imageLoader.js @@ -205,7 +205,7 @@ import 'css!./style'; /* eslint-enable indent */ export default { - serLazyImage: setLazyImage, + setLazyImage: setLazyImage, fillImages: fillImages, fillImage: fillImage, lazyImage: lazyImage, From 1f3bc8a4272df1d03af6dd4f3dee5aab1ed65df5 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 1 Aug 2020 05:46:31 +0200 Subject: [PATCH 089/463] Migrate mouseManager to es6 --- package.json | 1 + src/scripts/mouseManager.js | 49 +++++++++++++++++++++---------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 74cf0ad5e9..4695eb155a 100644 --- a/package.json +++ b/package.json @@ -266,6 +266,7 @@ "src/scripts/inputManager.js", "src/scripts/keyboardNavigation.js", "src/scripts/libraryBrowser.js", + "src/scripts/mouseManager.js", "src/scripts/multiDownload.js", "src/scripts/playlists.js", "src/scripts/routes.js", diff --git a/src/scripts/mouseManager.js b/src/scripts/mouseManager.js index d801d82393..40253fb91c 100644 --- a/src/scripts/mouseManager.js +++ b/src/scripts/mouseManager.js @@ -1,10 +1,15 @@ -define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'dom'], function (inputManager, focusManager, browser, layoutManager, events, dom) { - 'use strict'; +import inputManager from 'inputManager'; +import focusManager from 'focusManager'; +import browser from 'browser'; +import layoutManager from 'layoutManager'; +import events from 'events'; +import dom from 'dom'; +/* eslint-disable indent */ - var self = {}; + const self = {}; - var lastMouseInputTime = new Date().getTime(); - var isMouseIdle; + let lastMouseInputTime = new Date().getTime(); + let isMouseIdle; function mouseIdleTime() { return new Date().getTime() - lastMouseInputTime; @@ -15,14 +20,14 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd } function removeIdleClasses() { - var classList = document.body.classList; + const classList = document.body.classList; classList.remove('mouseIdle'); classList.remove('mouseIdle-tv'); } function addIdleClasses() { - var classList = document.body.classList; + const classList = document.body.classList; classList.add('mouseIdle'); @@ -31,7 +36,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd } } - function showCursor() { + export function showCursor() { if (isMouseIdle) { isMouseIdle = false; removeIdleClasses(); @@ -39,7 +44,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd } } - function hideCursor() { + export function hideCursor() { if (!isMouseIdle) { isMouseIdle = true; addIdleClasses(); @@ -47,17 +52,17 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd } } - var lastPointerMoveData; + let lastPointerMoveData; function onPointerMove(e) { - var eventX = e.screenX; - var eventY = e.screenY; + const eventX = e.screenX; + const eventY = e.screenY; // if coord don't exist how could it move if (typeof eventX === 'undefined' && typeof eventY === 'undefined') { return; } - var obj = lastPointerMoveData; + const obj = lastPointerMoveData; if (!obj) { lastPointerMoveData = { x: eventX, @@ -81,11 +86,11 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd } function onPointerEnter(e) { - var pointerType = e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'); + const pointerType = e.pointerType || (layoutManager.mobile ? 'touch' : 'mouse'); if (pointerType === 'mouse') { if (!isMouseIdle) { - var parent = focusManager.focusableParent(e.target); + const parent = focusManager.focusableParent(e.target); if (parent) { focusManager.focus(parent); } @@ -115,7 +120,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd } } - var mouseInterval; + let mouseInterval; function startMouseInterval() { if (!mouseInterval) { mouseInterval = setInterval(onMouseInterval, 5000); @@ -123,7 +128,7 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd } function stopMouseInterval() { - var interval = mouseInterval; + const interval = mouseInterval; if (interval) { clearInterval(interval); @@ -167,8 +172,10 @@ define(['inputManager', 'focusManager', 'browser', 'layoutManager', 'events', 'd events.on(layoutManager, 'modechange', initMouse); - self.hideCursor = hideCursor; - self.showCursor = showCursor; +/* eslint-enable indent */ + +export default { + hideCursor, + showCursor +}; - return self; -}); From 4ee939a762ad6be34fa025a60ad52c64a0f1b79a Mon Sep 17 00:00:00 2001 From: Thomas Schwery Date: Sat, 1 Aug 2020 07:49:32 +0000 Subject: [PATCH 090/463] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/fr/ --- src/strings/fr.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/fr.json b/src/strings/fr.json index 6d56752211..63cf6b95f9 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -1564,5 +1564,8 @@ "StopPlayback": "Arrêter", "ButtonPlayer": "Démarrer", "Writers": "Écrivains", - "ViewAlbumArtist": "Voir l'album de l'artiste" + "ViewAlbumArtist": "Voir l'album de l'artiste", + "PreviousTrack": "Revenir au précédent", + "NextTrack": "Passer au prochain", + "LabelUnstable": "Instable" } From a609e3e2b4bc5dbca9b661f77e0a9d53a2222919 Mon Sep 17 00:00:00 2001 From: Vitorvlv Date: Sat, 1 Aug 2020 03:05:39 +0000 Subject: [PATCH 091/463] 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 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 413abeea73..e2f61129f5 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -1521,7 +1521,7 @@ "MessageSyncPlayGroupDoesNotExist": "Falha ao participar de grupo pois o mesmo não existe.", "MessageSyncPlayPlaybackPermissionRequired": "É necessária permissão de reprodução.", "MessageSyncPlayNoGroupsAvailable": "Nenhum grupo disponível. Comece a reproduzir algo primeiro.", - "MessageSyncPlayGroupWait": "{0} está carregando. . .", + "MessageSyncPlayGroupWait": "{0} está carregando…", "MessageSyncPlayUserLeft": "{0} deixou o grupo.", "MessageSyncPlayUserJoined": "{0} se juntou ao grupo.", "MessageSyncPlayDisabled": "SyncPlay desativado.", @@ -1564,5 +1564,8 @@ "Writers": "Escritores", "ClearQueue": "Limpar fila", "StopPlayback": "Parar reprodução", - "ViewAlbumArtist": "Ver artista do álbum" + "ViewAlbumArtist": "Ver artista do álbum", + "PreviousTrack": "Ir para o anterior", + "NextTrack": "Ir para o próximo", + "LabelUnstable": "Instável" } From c159d4f6011b4851d7893645949749b1433ace75 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 1 Aug 2020 13:50:37 +0200 Subject: [PATCH 092/463] Update ESLint to 7.6.0 --- .eslintrc.js | 4 +- package.json | 2 +- yarn.lock | 351 +++++++++++++++++++++------------------------------ 3 files changed, 145 insertions(+), 212 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 98fa2b817f..ff12e198c3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -29,7 +29,7 @@ module.exports = { ], rules: { 'block-spacing': ['error'], - 'brace-style': ['error', "1tbs", { "allowSingleLine": true }], + 'brace-style': ['error', '1tbs', { 'allowSingleLine': true }], 'comma-dangle': ['error', 'never'], 'comma-spacing': ['error'], 'eol-last': ['error'], @@ -41,7 +41,7 @@ module.exports = { 'no-multiple-empty-lines': ['error', { 'max': 1 }], 'no-trailing-spaces': ['error'], 'no-unused-expressions': ['error', { 'allowShortCircuit': true, 'allowTernary': true, 'allowTaggedTemplates': true }], - "no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": true }], + 'no-unused-vars': ['error', { 'vars': 'all', 'args': 'none', 'ignoreRestSiblings': true }], 'one-var': ['error', 'never'], 'padded-blocks': ['error', 'never'], 'quotes': ['error', 'single', { 'avoidEscape': true, 'allowTemplateLiterals': false }], diff --git a/package.json b/package.json index 17d175b7e7..a18eb8e0fb 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "css-loader": "^4.2.0", "cssnano": "^4.1.10", "del": "^5.1.0", - "eslint": "^6.8.0", + "eslint": "^7.6.0", "eslint-plugin-compat": "^3.5.1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.21.2", diff --git a/yarn.lock b/yarn.lock index 09181bfc78..94d714872d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1265,10 +1265,10 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +acorn@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== after@0.8.2: version "0.8.2" @@ -1293,7 +1293,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5: +ajv@^6.1.0, ajv@^6.12.2, ajv@^6.5.5: version "6.12.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== @@ -1303,6 +1303,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.10.0, ajv@^6.10.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" + integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + alameda@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/alameda/-/alameda-1.4.0.tgz#ca53cad0feb5e24994a9be859e0593e8c2d8f58c" @@ -1335,13 +1345,6 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - ansi-gray@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" @@ -2375,7 +2378,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2420,11 +2423,6 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - chokidar@^2.0.0, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -2505,18 +2503,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -2969,7 +2955,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -2980,6 +2966,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -3354,7 +3349,7 @@ decompress@^4.0.0, decompress@^4.2.0: pify "^2.3.0" strip-dirs "^2.0.0" -deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -3804,6 +3799,13 @@ enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -4014,7 +4016,7 @@ eslint-rule-composer@^0.3.0: resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== -eslint-scope@5.1.0: +eslint-scope@5.1.0, eslint-scope@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== @@ -4030,47 +4032,35 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== - -eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint@^7.6.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.6.0.tgz#522d67cfaea09724d96949c70e7a0550614d64d6" + integrity sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.2.0" + esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" @@ -4079,40 +4069,38 @@ eslint@^6.8.0: ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash "^4.17.19" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" table "^5.2.3" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== +espree@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" + integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== dependencies: - acorn "^7.1.1" + acorn "^7.3.1" acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" + eslint-visitor-keys "^1.3.0" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: +esquery@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== @@ -4292,15 +4280,6 @@ extend@3.0.2, extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -4336,9 +4315,9 @@ fancy-log@^1.1.0, fancy-log@^1.3.2, fancy-log@^1.3.3: time-stamp "^1.0.0" fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^2.2.6: version "2.2.7" @@ -4369,7 +4348,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -4406,13 +4385,6 @@ figures@^1.3.5: escape-string-regexp "^1.0.5" object-assign "^4.1.0" -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-4.0.0.tgz#633567d15364aefe0b299e1e217735e8f3a9f6e8" @@ -5653,7 +5625,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5860,25 +5832,6 @@ ini@^1.3.4, ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" - integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - interpret@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" @@ -6395,9 +6348,9 @@ js-base64@^2.1.8, js-base64@^2.1.9: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -6599,13 +6552,13 @@ levenary@^1.1.1: dependencies: leven "^3.1.0" -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + prelude-ls "^1.2.1" + type-check "~0.4.0" "libass-wasm@https://github.com/jellyfin/JavascriptSubtitlesOctopus#4.0.0-jf-smarttv": version "4.0.0" @@ -7275,11 +7228,6 @@ mime@1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -7412,11 +7360,6 @@ mute-stdout@^1.0.0: resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - nan@^2.12.1, nan@^2.13.2: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -7815,13 +7758,6 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - openurl@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" @@ -7834,17 +7770,17 @@ opn@5.3.0: dependencies: is-wsl "^1.1.0" -optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" optipng-bin@^6.0.0: version "6.0.0" @@ -7886,7 +7822,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -8208,6 +8144,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -9118,10 +9059,10 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.1 source-map "^0.6.1" supports-color "^6.1.0" -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prepend-http@^1.0.1: version "1.0.4" @@ -9514,10 +9455,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== regexpu-core@^4.7.0: version "4.7.0" @@ -9831,14 +9772,6 @@ responselike@1.0.2: dependencies: lowercase-keys "^1.0.0" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -9888,11 +9821,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" @@ -9917,13 +9845,6 @@ rxjs@^5.5.6: dependencies: symbol-observable "1.0.1" -rxjs@^6.5.3: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -10038,12 +9959,12 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.2, semver@^7.3.2: +semver@7.3.2, semver@^7.2.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -10162,11 +10083,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -10774,10 +10707,10 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" - integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== +strip-json-comments@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-outer@^1.0.0: version "1.0.1" @@ -11185,7 +11118,7 @@ through2@^4.0.2: dependencies: readable-stream "3" -through@^2.3.6, through@^2.3.8, through@~2.3.4: +through@^2.3.8, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -11220,13 +11153,6 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - to-absolute-glob@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" @@ -11361,11 +11287,16 @@ tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.9.0: +tslib@^1.10.0: version "1.11.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== +tslib@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -11383,17 +11314,12 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + prelude-ls "^1.2.1" type-fest@^0.13.1: version "0.13.1" @@ -12084,6 +12010,13 @@ which@1, which@^1.2.14, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -12091,7 +12024,7 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== From 39a1d94c500134b45591a6d48fca02013cf8e159 Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Sat, 1 Aug 2020 14:52:15 +0200 Subject: [PATCH 093/463] Migrated to es6 module --- package.json | 1 + src/controllers/livetvguideprovider.js | 50 +++++++++++++------------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 17d175b7e7..efe1fcc2fa 100644 --- a/package.json +++ b/package.json @@ -207,6 +207,7 @@ "src/controllers/searchpage.js", "src/controllers/livetvtuner.js", "src/controllers/livetvstatus.js", + "src/controllers/livetvguideprovider.js", "src/controllers/shows/episodes.js", "src/controllers/shows/tvgenres.js", "src/controllers/shows/tvlatest.js", diff --git a/src/controllers/livetvguideprovider.js b/src/controllers/livetvguideprovider.js index 8f8b9f91c7..6ab195a088 100644 --- a/src/controllers/livetvguideprovider.js +++ b/src/controllers/livetvguideprovider.js @@ -1,30 +1,30 @@ -define(['events', 'loading', 'globalize'], function (events, loading, globalize) { - 'use strict'; +import events from 'events'; +import loading from 'loading'; +import globalize from 'globalize'; - function onListingsSubmitted() { - Dashboard.navigate('livetvstatus.html'); - } +function onListingsSubmitted() { + Dashboard.navigate('livetvstatus.html'); +} - function init(page, type, providerId) { - var url = 'components/tvproviders/' + type + '.js'; +function init(page, type, providerId) { + const url = 'components/tvproviders/' + type + '.js'; - require([url], function (factory) { - var instance = new factory(page, providerId, {}); - events.on(instance, 'submitted', onListingsSubmitted); - instance.init(); - }); - } - - function loadTemplate(page, type, providerId) { - require(['text!./components/tvproviders/' + type + '.template.html'], function (html) { - page.querySelector('.providerTemplate').innerHTML = globalize.translateHtml(html); - init(page, type, providerId); - }); - } - - pageIdOn('pageshow', 'liveTvGuideProviderPage', function () { - loading.show(); - var providerId = getParameterByName('id'); - loadTemplate(this, getParameterByName('type'), providerId); + import(url).then(({default: factory}) => { + const instance = new factory(page, providerId, {}); + events.on(instance, 'submitted', onListingsSubmitted); + instance.init(); }); +} + +function loadTemplate(page, type, providerId) { + import('text!./../components/tvproviders/' + type + '.template.html').then(({default: html}) => { + page.querySelector('.providerTemplate').innerHTML = globalize.translateHtml(html); + init(page, type, providerId); + }); +} + +pageIdOn('pageshow', 'liveTvGuideProviderPage', function () { + loading.show(); + const providerId = getParameterByName('id'); + loadTemplate(this, getParameterByName('type'), providerId); }); From 716c9d71b2aac67af0f37efd57583040a68b94e6 Mon Sep 17 00:00:00 2001 From: Larvitar Date: Sat, 1 Aug 2020 12:52:26 +0000 Subject: [PATCH 094/463] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index a141b975cb..3c4c9b3160 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -90,7 +90,7 @@ "ButtonMore": "Więcej", "ButtonNetwork": "Sieć", "ButtonNew": "Nowe", - "ButtonNextTrack": "Następna utwór", + "ButtonNextTrack": "Następny utwór", "ButtonOff": "Wyłącz", "ButtonOpen": "Otwórz", "ButtonParentalControl": "Kontrola rodzicielska", @@ -1564,5 +1564,8 @@ "EnableDetailsBanner": "Baner w szczegółach", "EnableDecodingColorDepth10Vp9": "Włącz 10-bitowe dekodowanie sprzętowe dla VP9", "EnableDecodingColorDepth10Hevc": "Włącz 10-bitowe dekodowanie sprzętowe dla HEVC", - "BoxSet": "Kolekcja" + "BoxSet": "Kolekcja", + "PreviousTrack": "Poprzedni", + "NextTrack": "Następny", + "LabelUnstable": "Niestabilny" } From 9da6f2d6bca7de2b3170fc1528c4eef2b44d4ed4 Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Sat, 1 Aug 2020 15:21:25 +0200 Subject: [PATCH 095/463] Migrated livetvsuggested.js to es6 module --- package.json | 1 + src/controllers/livetv/livetvsuggested.js | 711 +++++++++++----------- 2 files changed, 361 insertions(+), 351 deletions(-) diff --git a/package.json b/package.json index 17d175b7e7..2c6eccb75e 100644 --- a/package.json +++ b/package.json @@ -206,6 +206,7 @@ "src/controllers/playback/video/index.js", "src/controllers/searchpage.js", "src/controllers/livetvtuner.js", + "src/controllers/livetvsuggested.js", "src/controllers/livetvstatus.js", "src/controllers/shows/episodes.js", "src/controllers/shows/tvgenres.js", diff --git a/src/controllers/livetv/livetvsuggested.js b/src/controllers/livetv/livetvsuggested.js index 36ba825a34..8e8fe0c3c6 100644 --- a/src/controllers/livetv/livetvsuggested.js +++ b/src/controllers/livetv/livetvsuggested.js @@ -1,393 +1,402 @@ -define(['layoutManager', 'userSettings', 'inputManager', 'loading', 'globalize', 'libraryBrowser', 'mainTabsManager', 'cardBuilder', 'apphost', 'imageLoader', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (layoutManager, userSettings, inputManager, loading, globalize, libraryBrowser, mainTabsManager, cardBuilder, appHost, imageLoader) { - 'use strict'; +import layoutManager from 'layoutManager'; +import * as userSettings from 'userSettings'; +import inputManager from 'inputManager'; +import loading from 'loading'; +import globalize from 'globalize'; +import * as mainTabsManager from 'mainTabsManager'; +import cardBuilder from 'cardBuilder'; +import imageLoader from 'imageLoader'; +import 'scrollStyles'; +import 'emby-itemscontainer'; +import 'emby-tabs'; +import 'emby-button'; - function enableScrollX() { - return !layoutManager.desktop; +function enableScrollX() { + return !layoutManager.desktop; +} + +function getBackdropShape() { + if (enableScrollX()) { + return 'overflowBackdrop'; + } + return 'backdrop'; +} + +function getPortraitShape() { + if (enableScrollX()) { + return 'overflowPortrait'; + } + return 'portrait'; +} + +function getLimit() { + if (enableScrollX()) { + return 12; } - function getBackdropShape() { - if (enableScrollX()) { - return 'overflowBackdrop'; - } - return 'backdrop'; + return 9; +} + +function loadRecommendedPrograms(page) { + loading.show(); + let limit = getLimit(); + + if (enableScrollX()) { + limit *= 2; } - function getPortraitShape() { - if (enableScrollX()) { - return 'overflowPortrait'; - } - return 'portrait'; - } + ApiClient.getLiveTvRecommendedPrograms({ + userId: Dashboard.getCurrentUserId(), + IsAiring: true, + limit: limit, + ImageTypeLimit: 1, + EnableImageTypes: 'Primary,Thumb,Backdrop', + EnableTotalRecordCount: false, + Fields: 'ChannelInfo,PrimaryImageAspectRatio' + }).then(function (result) { + renderItems(page, result.Items, 'activeProgramItems', 'play', { + showAirDateTime: false, + showAirEndTime: true + }); + loading.hide(); - function getLimit() { - if (enableScrollX()) { - return 12; - } + import('autoFocuser').then(({default: autoFocuser}) => { + autoFocuser.autoFocus(page); + }); + }); +} - return 9; - } - - function loadRecommendedPrograms(page) { - loading.show(); - var limit = getLimit(); - - if (enableScrollX()) { - limit *= 2; - } - - ApiClient.getLiveTvRecommendedPrograms({ +function reload(page, enableFullRender) { + if (enableFullRender) { + loadRecommendedPrograms(page); + ApiClient.getLiveTvPrograms({ userId: Dashboard.getCurrentUserId(), - IsAiring: true, - limit: limit, - ImageTypeLimit: 1, - EnableImageTypes: 'Primary,Thumb,Backdrop', + HasAired: false, + limit: getLimit(), + IsMovie: false, + IsSports: false, + IsKids: false, + IsNews: false, + IsSeries: true, EnableTotalRecordCount: false, - Fields: 'ChannelInfo,PrimaryImageAspectRatio' + Fields: 'ChannelInfo,PrimaryImageAspectRatio', + EnableImageTypes: 'Primary,Thumb' }).then(function (result) { - renderItems(page, result.Items, 'activeProgramItems', 'play', { - showAirDateTime: false, - showAirEndTime: true + renderItems(page, result.Items, 'upcomingEpisodeItems'); + }); + ApiClient.getLiveTvPrograms({ + userId: Dashboard.getCurrentUserId(), + HasAired: false, + limit: getLimit(), + IsMovie: true, + EnableTotalRecordCount: false, + Fields: 'ChannelInfo', + EnableImageTypes: 'Primary,Thumb' + }).then(function (result) { + renderItems(page, result.Items, 'upcomingTvMovieItems', null, { + shape: getPortraitShape(), + preferThumb: null, + showParentTitle: false }); - loading.hide(); - - require(['autoFocuser'], function (autoFocuser) { - autoFocuser.autoFocus(page); + }); + ApiClient.getLiveTvPrograms({ + userId: Dashboard.getCurrentUserId(), + HasAired: false, + limit: getLimit(), + IsSports: true, + EnableTotalRecordCount: false, + Fields: 'ChannelInfo,PrimaryImageAspectRatio', + EnableImageTypes: 'Primary,Thumb' + }).then(function (result) { + renderItems(page, result.Items, 'upcomingSportsItems'); + }); + ApiClient.getLiveTvPrograms({ + userId: Dashboard.getCurrentUserId(), + HasAired: false, + limit: getLimit(), + IsKids: true, + EnableTotalRecordCount: false, + Fields: 'ChannelInfo,PrimaryImageAspectRatio', + EnableImageTypes: 'Primary,Thumb' + }).then(function (result) { + renderItems(page, result.Items, 'upcomingKidsItems'); + }); + ApiClient.getLiveTvPrograms({ + userId: Dashboard.getCurrentUserId(), + HasAired: false, + limit: getLimit(), + IsNews: true, + EnableTotalRecordCount: false, + Fields: 'ChannelInfo,PrimaryImageAspectRatio', + EnableImageTypes: 'Primary,Thumb' + }).then(function (result) { + renderItems(page, result.Items, 'upcomingNewsItems', null, { + showParentTitleOrTitle: true, + showTitle: false, + showParentTitle: false }); }); } +} - function reload(page, enableFullRender) { - if (enableFullRender) { - loadRecommendedPrograms(page); - ApiClient.getLiveTvPrograms({ - userId: Dashboard.getCurrentUserId(), - HasAired: false, - limit: getLimit(), - IsMovie: false, - IsSports: false, - IsKids: false, - IsNews: false, - IsSeries: true, - EnableTotalRecordCount: false, - Fields: 'ChannelInfo,PrimaryImageAspectRatio', - EnableImageTypes: 'Primary,Thumb' - }).then(function (result) { - renderItems(page, result.Items, 'upcomingEpisodeItems'); - }); - ApiClient.getLiveTvPrograms({ - userId: Dashboard.getCurrentUserId(), - HasAired: false, - limit: getLimit(), - IsMovie: true, - EnableTotalRecordCount: false, - Fields: 'ChannelInfo', - EnableImageTypes: 'Primary,Thumb' - }).then(function (result) { - renderItems(page, result.Items, 'upcomingTvMovieItems', null, { - shape: getPortraitShape(), - preferThumb: null, - showParentTitle: false - }); - }); - ApiClient.getLiveTvPrograms({ - userId: Dashboard.getCurrentUserId(), - HasAired: false, - limit: getLimit(), - IsSports: true, - EnableTotalRecordCount: false, - Fields: 'ChannelInfo,PrimaryImageAspectRatio', - EnableImageTypes: 'Primary,Thumb' - }).then(function (result) { - renderItems(page, result.Items, 'upcomingSportsItems'); - }); - ApiClient.getLiveTvPrograms({ - userId: Dashboard.getCurrentUserId(), - HasAired: false, - limit: getLimit(), - IsKids: true, - EnableTotalRecordCount: false, - Fields: 'ChannelInfo,PrimaryImageAspectRatio', - EnableImageTypes: 'Primary,Thumb' - }).then(function (result) { - renderItems(page, result.Items, 'upcomingKidsItems'); - }); - ApiClient.getLiveTvPrograms({ - userId: Dashboard.getCurrentUserId(), - HasAired: false, - limit: getLimit(), - IsNews: true, - EnableTotalRecordCount: false, - Fields: 'ChannelInfo,PrimaryImageAspectRatio', - EnableImageTypes: 'Primary,Thumb' - }).then(function (result) { - renderItems(page, result.Items, 'upcomingNewsItems', null, { - showParentTitleOrTitle: true, - showTitle: false, - showParentTitle: false - }); - }); +function renderItems(page, items, sectionClass, overlayButton, cardOptions) { + const html = cardBuilder.getCardsHtml(Object.assign({ + items: items, + preferThumb: 'auto', + inheritThumb: false, + shape: enableScrollX() ? 'autooverflow' : 'auto', + defaultShape: getBackdropShape(), + showParentTitle: true, + showTitle: true, + centerText: true, + coverImage: true, + overlayText: false, + lazy: true, + overlayPlayButton: overlayButton === 'play', + overlayMoreButton: overlayButton === 'more', + overlayInfoButton: overlayButton === 'info', + allowBottomPadding: !enableScrollX(), + showAirTime: true, + showAirDateTime: true + }, cardOptions || {})); + const elem = page.querySelector('.' + sectionClass); + elem.innerHTML = html; + imageLoader.lazyChildren(elem); +} + +function getTabs() { + return [{ + name: globalize.translate('Programs') + }, { + name: globalize.translate('TabGuide') + }, { + name: globalize.translate('TabChannels') + }, { + name: globalize.translate('TabRecordings') + }, { + name: globalize.translate('HeaderSchedule') + }, { + name: globalize.translate('TabSeries') + }, { + name: globalize.translate('ButtonSearch'), + cssClass: 'searchTabButton' + }]; +} + +function setScrollClasses(elem, scrollX) { + if (scrollX) { + elem.classList.add('hiddenScrollX'); + + if (layoutManager.tv) { + elem.classList.add('smoothScrollX'); } + + elem.classList.add('scrollX'); + elem.classList.remove('vertical-wrap'); + } else { + elem.classList.remove('hiddenScrollX'); + elem.classList.remove('smoothScrollX'); + elem.classList.remove('scrollX'); + elem.classList.add('vertical-wrap'); + } +} + +function getDefaultTabIndex(folderId) { + if (userSettings.get('landing-' + folderId) === 'guide') { + return 1; } - function renderItems(page, items, sectionClass, overlayButton, cardOptions) { - var html = cardBuilder.getCardsHtml(Object.assign({ - items: items, - preferThumb: 'auto', - inheritThumb: false, - shape: enableScrollX() ? 'autooverflow' : 'auto', - defaultShape: getBackdropShape(), - showParentTitle: true, - showTitle: true, - centerText: true, - coverImage: true, - overlayText: false, - lazy: true, - overlayPlayButton: overlayButton === 'play', - overlayMoreButton: overlayButton === 'more', - overlayInfoButton: overlayButton === 'info', - allowBottomPadding: !enableScrollX(), - showAirTime: true, - showAirDateTime: true - }, cardOptions || {})); - var elem = page.querySelector('.' + sectionClass); - elem.innerHTML = html; - imageLoader.lazyChildren(elem); + return 0; +} + +export default function (view, params) { + function enableFullRender() { + return new Date().getTime() - lastFullRender > 3e5; } - function getTabs() { - return [{ - name: globalize.translate('Programs') - }, { - name: globalize.translate('TabGuide') - }, { - name: globalize.translate('TabChannels') - }, { - name: globalize.translate('TabRecordings') - }, { - name: globalize.translate('HeaderSchedule') - }, { - name: globalize.translate('TabSeries') - }, { - name: globalize.translate('ButtonSearch'), - cssClass: 'searchTabButton' - }]; + function onBeforeTabChange(evt) { + preLoadTab(view, parseInt(evt.detail.selectedTabIndex)); } - function setScrollClasses(elem, scrollX) { - if (scrollX) { - elem.classList.add('hiddenScrollX'); + function onTabChange(evt) { + const previousTabController = tabControllers[parseInt(evt.detail.previousIndex)]; - if (layoutManager.tv) { - elem.classList.add('smoothScrollX'); + if (previousTabController && previousTabController.onHide) { + previousTabController.onHide(); + } + + loadTab(view, parseInt(evt.detail.selectedTabIndex)); + } + + function getTabContainers() { + return view.querySelectorAll('.pageTabContent'); + } + + function initTabs() { + mainTabsManager.setTabs(view, currentTabIndex, getTabs, getTabContainers, onBeforeTabChange, onTabChange); + } + + function getTabController(page, index, callback) { + const depends = []; + + // TODO int is a little hard to read + switch (index) { + case 0: + break; + + case 1: + depends.push('controllers/livetv/livetvguide'); + break; + + case 2: + depends.push('controllers/livetv/livetvchannels'); + break; + + case 3: + depends.push('controllers/livetv/livetvrecordings'); + break; + + case 4: + depends.push('controllers/livetv/livetvschedule'); + break; + + case 5: + depends.push('controllers/livetv/livetvseriestimers'); + break; + + case 6: + depends.push('scripts/searchtab'); + } + + import(depends).then(({default: controllerFactory}) => { + let tabContent; + + if (index === 0) { + tabContent = view.querySelector('.pageTabContent[data-index=\'' + index + '\']'); + self.tabContent = tabContent; } - elem.classList.add('scrollX'); - elem.classList.remove('vertical-wrap'); - } else { - elem.classList.remove('hiddenScrollX'); - elem.classList.remove('smoothScrollX'); - elem.classList.remove('scrollX'); - elem.classList.add('vertical-wrap'); - } - } + let controller = tabControllers[index]; - function getDefaultTabIndex(folderId) { - if (userSettings.get('landing-' + folderId) === 'guide') { - return 1; - } + if (!controller) { + tabContent = view.querySelector('.pageTabContent[data-index=\'' + index + '\']'); - return 0; - } - - return function (view, params) { - function enableFullRender() { - return new Date().getTime() - lastFullRender > 3e5; - } - - function onBeforeTabChange(evt) { - preLoadTab(view, parseInt(evt.detail.selectedTabIndex)); - } - - function onTabChange(evt) { - var previousTabController = tabControllers[parseInt(evt.detail.previousIndex)]; - - if (previousTabController && previousTabController.onHide) { - previousTabController.onHide(); - } - - loadTab(view, parseInt(evt.detail.selectedTabIndex)); - } - - function getTabContainers() { - return view.querySelectorAll('.pageTabContent'); - } - - function initTabs() { - mainTabsManager.setTabs(view, currentTabIndex, getTabs, getTabContainers, onBeforeTabChange, onTabChange); - } - - function getTabController(page, index, callback) { - var depends = []; - - // TODO int is a little hard to read - switch (index) { - case 0: - break; - - case 1: - depends.push('controllers/livetv/livetvguide'); - break; - - case 2: - depends.push('controllers/livetv/livetvchannels'); - break; - - case 3: - depends.push('controllers/livetv/livetvrecordings'); - break; - - case 4: - depends.push('controllers/livetv/livetvschedule'); - break; - - case 5: - depends.push('controllers/livetv/livetvseriestimers'); - break; - - case 6: - depends.push('scripts/searchtab'); - } - - require(depends, function (controllerFactory) { - var tabContent; - - if (index == 0) { - tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"); - self.tabContent = tabContent; + if (index === 0) { + controller = self; + } else if (index === 6) { + controller = new controllerFactory(view, tabContent, { + collectionType: 'livetv' + }); + } else { + controller = new controllerFactory(view, params, tabContent); } - var controller = tabControllers[index]; + tabControllers[index] = controller; - if (!controller) { - tabContent = view.querySelector(".pageTabContent[data-index='" + index + "']"); + if (controller.initTab) { + controller.initTab(); + } + } - if (index === 0) { - controller = self; - } else if (index === 6) { - controller = new controllerFactory(view, tabContent, { - collectionType: 'livetv' - }); - } else { - controller = new controllerFactory(view, params, tabContent); - } + callback(controller); + }); + } - tabControllers[index] = controller; + function preLoadTab(page, index) { + getTabController(page, index, function (controller) { + if (renderedTabs.indexOf(index) === -1 && controller.preRender) { + controller.preRender(); + } + }); + } - if (controller.initTab) { - controller.initTab(); - } + function loadTab(page, index) { + currentTabIndex = index; + getTabController(page, index, function (controller) { + initialTabIndex = null; + + if (renderedTabs.indexOf(index) === -1) { + if (index === 1) { + renderedTabs.push(index); } - callback(controller); - }); + controller.renderTab(); + } else if (controller.onShow) { + controller.onShow(); + } + + currentTabController = controller; + }); + } + + function onInputCommand(evt) { + if (evt.detail.command === 'search') { + evt.preventDefault(); + Dashboard.navigate('search.html?collectionType=livetv'); } + } - function preLoadTab(page, index) { - getTabController(page, index, function (controller) { - if (renderedTabs.indexOf(index) === -1 && controller.preRender) { - controller.preRender(); - } - }); + let isViewRestored; + const self = this; + let currentTabIndex = parseInt(params.tab || getDefaultTabIndex('livetv')); + let initialTabIndex = currentTabIndex; + let lastFullRender = 0; + [].forEach.call(view.querySelectorAll('.sectionTitleTextButton-programs'), function (link) { + const href = link.href; + + if (href) { + link.href = href + '&serverId=' + ApiClient.serverId(); } + }); - function loadTab(page, index) { - currentTabIndex = index; - getTabController(page, index, function (controller) { - initialTabIndex = null; + self.initTab = function () { + const tabContent = view.querySelector('.pageTabContent[data-index=\'0\']'); + const containers = tabContent.querySelectorAll('.itemsContainer'); - if (renderedTabs.indexOf(index) == -1) { - if (index === 1) { - renderedTabs.push(index); - } - - controller.renderTab(); - } else if (controller.onShow) { - controller.onShow(); - } - - currentTabController = controller; - }); + for (let i = 0, length = containers.length; i < length; i++) { + setScrollClasses(containers[i], enableScrollX()); } - - function onInputCommand(evt) { - if (evt.detail.command === 'search') { - evt.preventDefault(); - Dashboard.navigate('search.html?collectionType=livetv'); - } - } - - var isViewRestored; - var self = this; - var currentTabIndex = parseInt(params.tab || getDefaultTabIndex('livetv')); - var initialTabIndex = currentTabIndex; - var lastFullRender = 0; - [].forEach.call(view.querySelectorAll('.sectionTitleTextButton-programs'), function (link) { - var href = link.href; - - if (href) { - link.href = href + '&serverId=' + ApiClient.serverId(); - } - }); - - self.initTab = function () { - var tabContent = view.querySelector(".pageTabContent[data-index='0']"); - var containers = tabContent.querySelectorAll('.itemsContainer'); - - for (var i = 0, length = containers.length; i < length; i++) { - setScrollClasses(containers[i], enableScrollX()); - } - }; - - self.renderTab = function () { - var tabContent = view.querySelector(".pageTabContent[data-index='0']"); - - if (enableFullRender()) { - reload(tabContent, true); - lastFullRender = new Date().getTime(); - } else { - reload(tabContent); - } - }; - - var currentTabController; - var tabControllers = []; - var renderedTabs = []; - view.addEventListener('viewbeforeshow', function (evt) { - isViewRestored = evt.detail.isRestored; - initTabs(); - }); - view.addEventListener('viewshow', function (evt) { - isViewRestored = evt.detail.isRestored; - - if (!isViewRestored) { - mainTabsManager.selectedTabIndex(initialTabIndex); - } - - inputManager.on(window, onInputCommand); - }); - view.addEventListener('viewbeforehide', function (e) { - if (currentTabController && currentTabController.onHide) { - currentTabController.onHide(); - } - - inputManager.off(window, onInputCommand); - }); - view.addEventListener('viewdestroy', function (evt) { - tabControllers.forEach(function (tabController) { - if (tabController.destroy) { - tabController.destroy(); - } - }); - }); }; -}); + + self.renderTab = function () { + const tabContent = view.querySelector('.pageTabContent[data-index=\'0\']'); + + if (enableFullRender()) { + reload(tabContent, true); + lastFullRender = new Date().getTime(); + } else { + reload(tabContent); + } + }; + + let currentTabController; + const tabControllers = []; + const renderedTabs = []; + view.addEventListener('viewbeforeshow', function (evt) { + isViewRestored = evt.detail.isRestored; + initTabs(); + }); + view.addEventListener('viewshow', function (evt) { + isViewRestored = evt.detail.isRestored; + + if (!isViewRestored) { + mainTabsManager.selectedTabIndex(initialTabIndex); + } + + inputManager.on(window, onInputCommand); + }); + view.addEventListener('viewbeforehide', function () { + if (currentTabController && currentTabController.onHide) { + currentTabController.onHide(); + } + + inputManager.off(window, onInputCommand); + }); + view.addEventListener('viewdestroy', function () { + tabControllers.forEach(function (tabController) { + if (tabController.destroy) { + tabController.destroy(); + } + }); + }); +} From ab52727254019450db9a9fab25bc5eb4cddc504a Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Sat, 1 Aug 2020 15:32:57 +0200 Subject: [PATCH 096/463] Migrated livetvseriestimer to es6 module --- src/controllers/livetv/livetvseriestimers.js | 90 ++++++++++---------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/src/controllers/livetv/livetvseriestimers.js b/src/controllers/livetv/livetvseriestimers.js index c5d0da60d7..d645a66370 100644 --- a/src/controllers/livetv/livetvseriestimers.js +++ b/src/controllers/livetv/livetvseriestimers.js @@ -1,50 +1,52 @@ -define(['datetime', 'cardBuilder', 'imageLoader', 'apphost', 'loading', 'paper-icon-button-light', 'emby-button'], function (datetime, cardBuilder, imageLoader, appHost, loading) { - 'use strict'; +import cardBuilder from 'cardBuilder'; +import imageLoader from 'imageLoader'; +import loading from 'loading'; +import 'paper-icon-button-light'; +import 'emby-button'; - function renderTimers(context, timers) { - var html = ''; - html += cardBuilder.getCardsHtml({ - items: timers, - shape: 'auto', - defaultShape: 'portrait', - showTitle: true, - cardLayout: false, - preferThumb: 'auto', - coverImage: true, - overlayText: false, - showSeriesTimerTime: true, - showSeriesTimerChannel: true, - centerText: true, - overlayMoreButton: true, - lines: 3 - }); - var elem = context.querySelector('#items'); - elem.innerHTML = html; - imageLoader.lazyChildren(elem); - loading.hide(); - } +function renderTimers(context, timers) { + const html = cardBuilder.getCardsHtml({ + items: timers, + shape: 'auto', + defaultShape: 'portrait', + showTitle: true, + cardLayout: false, + preferThumb: 'auto', + coverImage: true, + overlayText: false, + showSeriesTimerTime: true, + showSeriesTimerChannel: true, + centerText: true, + overlayMoreButton: true, + lines: 3 + }); + const elem = context.querySelector('#items'); + elem.innerHTML = html; + imageLoader.lazyChildren(elem); + loading.hide(); +} - function reload(context, promise) { - loading.show(); - promise.then(function (result) { - renderTimers(context, result.Items); - }); - } +function reload(context, promise) { + loading.show(); + promise.then(function (result) { + renderTimers(context, result.Items); + }); +} - var query = { - SortBy: 'SortName', - SortOrder: 'Ascending' +const query = { + SortBy: 'SortName', + SortOrder: 'Ascending' +}; + +export default function (view, params, tabContent) { + let timersPromise; + const self = this; + + self.preRender = function () { + timersPromise = ApiClient.getLiveTvSeriesTimers(query); }; - return function (view, params, tabContent) { - var timersPromise; - var self = this; - self.preRender = function () { - timersPromise = ApiClient.getLiveTvSeriesTimers(query); - }; - - self.renderTab = function () { - reload(tabContent, timersPromise); - }; + self.renderTab = function () { + reload(tabContent, timersPromise); }; -}); +}; From 0c8e1994b79eebee5056c03bc1056b3d658c94ca Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Sat, 1 Aug 2020 15:36:16 +0200 Subject: [PATCH 097/463] fixed linting errors --- src/controllers/livetv/livetvseriestimers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/livetv/livetvseriestimers.js b/src/controllers/livetv/livetvseriestimers.js index d645a66370..4f6bfaaa6a 100644 --- a/src/controllers/livetv/livetvseriestimers.js +++ b/src/controllers/livetv/livetvseriestimers.js @@ -49,4 +49,4 @@ export default function (view, params, tabContent) { self.renderTab = function () { reload(tabContent, timersPromise); }; -}; +} From 891f54563ba84b72e3b7c451fe331b949de85426 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 2 Aug 2020 01:23:57 +0900 Subject: [PATCH 098/463] change error message key --- src/components/imageeditor/imageeditor.js | 2 +- src/components/mediaLibraryEditor/mediaLibraryEditor.js | 2 +- src/controllers/dashboard/encodingsettings.js | 2 +- src/controllers/dashboard/general.js | 2 +- src/controllers/dashboard/users/usernew.js | 2 +- src/strings/ar.json | 2 +- src/strings/bg-bg.json | 2 +- src/strings/ca.json | 2 +- src/strings/cs.json | 2 +- src/strings/da.json | 2 +- src/strings/de.json | 2 +- src/strings/el.json | 2 +- src/strings/en-gb.json | 2 +- src/strings/en-us.json | 2 +- src/strings/es-ar.json | 2 +- src/strings/es-mx.json | 2 +- src/strings/es.json | 2 +- src/strings/es_419.json | 2 +- src/strings/fa.json | 2 +- src/strings/fi.json | 2 +- src/strings/fr.json | 2 +- src/strings/he.json | 2 +- src/strings/hr.json | 2 +- src/strings/hu.json | 2 +- src/strings/id.json | 2 +- src/strings/is-is.json | 2 +- src/strings/it.json | 2 +- src/strings/ja.json | 2 +- src/strings/kk.json | 2 +- src/strings/ko.json | 2 +- src/strings/lt-lt.json | 2 +- src/strings/lv.json | 2 +- src/strings/nb.json | 2 +- src/strings/nl.json | 2 +- src/strings/pl.json | 2 +- src/strings/pt-br.json | 2 +- src/strings/pt-pt.json | 2 +- src/strings/pt.json | 2 +- src/strings/ro.json | 2 +- src/strings/ru.json | 2 +- src/strings/sk.json | 2 +- src/strings/sl-si.json | 2 +- src/strings/sv.json | 2 +- src/strings/tr.json | 2 +- src/strings/vi.json | 2 +- src/strings/zh-cn.json | 2 +- src/strings/zh-hk.json | 2 +- src/strings/zh-tw.json | 2 +- 48 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index bb8bce269e..46e2dae999 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -217,7 +217,7 @@ import 'css!./imageeditor'; reload(context, null, focusContext); }, function () { import('alert').then(({default: alert}) => { - alert(globalize.translate('MessageDefaultError')); + alert(globalize.translate('ErrorDefault')); }); }); } diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.js b/src/components/mediaLibraryEditor/mediaLibraryEditor.js index 66e7253401..0e68c6a289 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.js +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.js @@ -85,7 +85,7 @@ import 'flexStyles'; refreshLibraryFromServer(dom.parentWithClass(button, 'dlg-libraryeditor')); }, () => { import('toast').then(({default: toast}) => { - toast(globalize.translate('MessageDefaultError')); + toast(globalize.translate('ErrorDefault')); }); }); }); diff --git a/src/controllers/dashboard/encodingsettings.js b/src/controllers/dashboard/encodingsettings.js index 2c133526bc..3a0ad24430 100644 --- a/src/controllers/dashboard/encodingsettings.js +++ b/src/controllers/dashboard/encodingsettings.js @@ -81,7 +81,7 @@ import libraryMenu from 'libraryMenu'; updateEncoder(form); }, function () { import('alert').then(({default: alert}) => { - alert(globalize.translate('MessageDefaultError')); + alert(globalize.translate('ErrorDefault')); }); Dashboard.processServerConfigurationUpdateResult(); diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index 9cf4092b5c..eb819dc415 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -52,7 +52,7 @@ import 'emby-button'; }); }, function () { import('alert').then(({default: alert}) => { - alert(globalize.translate('MessageDefaultError')); + alert(globalize.translate('ErrorDefault')); }); Dashboard.processServerConfigurationUpdateResult(); diff --git a/src/controllers/dashboard/users/usernew.js b/src/controllers/dashboard/users/usernew.js index ae3ac0baa9..d3ff449d02 100644 --- a/src/controllers/dashboard/users/usernew.js +++ b/src/controllers/dashboard/users/usernew.js @@ -89,7 +89,7 @@ import 'emby-checkbox'; }); }, function (response) { import('toast').then(({default: toast}) => { - toast(globalize.translate('MessageDefaultError')); + toast(globalize.translate('ErrorDefault')); }); loading.hide(); diff --git a/src/strings/ar.json b/src/strings/ar.json index 744ac928f0..d4ff757824 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -92,7 +92,7 @@ "CinemaModeConfigurationHelp": "الطور السينمائي يوفر أجواء سينمائية إلى قلب صالتك مع إمكانية تشغيل عروض إعلانية لأفلام أخرى وعرض مقدمات أخرى من انتقاءاتك قبل تشغيل الفيلم الرئيسي.", "CustomDlnaProfilesHelp": "إنشاء عرائض مخصوصه تستهدف جهازاً جديداً أو يمتطي حساباً نظامياً.", "DeathDateValue": "توفي: {0}", - "MessageDefaultError": "كان هناك خطأ في معالجة الطلب. الرجاء المحاولة لاحقاً.", + "ErrorDefault": "كان هناك خطأ في معالجة الطلب. الرجاء المحاولة لاحقاً.", "Delete": "حذف", "DeleteDeviceConfirmation": "هل أنت متأكد أنك تريد حذف هذا الجهاز؟ سيظهر الجهاز من جديد في المرة القادمة التي يسجل فها مستخدم دخوله عبره.", "DeleteImage": "حذف صورة", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index ccdc906a9f..f24c10d980 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -882,7 +882,7 @@ "CinemaModeConfigurationHelp": "Режимът на кино носи театрално изживяване направо във вашата всекидневна с възможност за пускане на трейлъри и персонализирани интродукции преди основния филм.", "ChangingMetadataImageSettingsNewContent": "Промените в настройките за изтегляне на метаданни или изображения ще се прилагат само за ново съдържание, добавено към вашата библиотека. За да приложите промените към съществуващите заглавия, ще трябва да обновите метаданните им ръчно.", "DefaultMetadataLangaugeDescription": "Това са настройки по подразбиране и могат да се променят на база библиотека.", - "MessageDefaultError": "Възникна грешка при изпълнение на заявката. Моля опитайте по-късно.", + "ErrorDefault": "Възникна грешка при изпълнение на заявката. Моля опитайте по-късно.", "CustomDlnaProfilesHelp": "Създаване на персонализиран профил за целево устройство или заменяне на системния профил.", "CopyStreamURL": "Копиране URL на стрийма", "CopyStreamURLError": "Възникна грешка при копиране на URL.", diff --git a/src/strings/ca.json b/src/strings/ca.json index 90f5ce8930..cf6031e240 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -84,7 +84,7 @@ "ConfirmDeletion": "Confirma supressió", "Connect": "Connecta", "Continuing": "Continuant", - "MessageDefaultError": "Hi ha hagut un error processant la petició. Intenta-ho més tard si et plau.", + "ErrorDefault": "Hi ha hagut un error processant la petició. Intenta-ho més tard si et plau.", "Delete": "Esborra", "DeleteImage": "Esborra Imatge", "DeleteImageConfirmation": "Esteu segur que voleu suprimir aquesta imatge?", diff --git a/src/strings/cs.json b/src/strings/cs.json index 13ce07b62d..f35c368a50 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -131,7 +131,7 @@ "DatePlayed": "Datum přehrání", "DeathDateValue": "Zemřel: {0}", "Default": "Výchozí", - "MessageDefaultError": "Došlo k chybě při zpracování požadavku. Prosím zkuste to znovu později.", + "ErrorDefault": "Došlo k chybě při zpracování požadavku. Prosím zkuste to znovu později.", "DefaultMetadataLangaugeDescription": "Toto jsou vaše výchozí hodnoty a lze je přizpůsobit na základě jednotlivých knihoven.", "DefaultSubtitlesHelp": "Titulky jsou načteny na základě výchozích a vynucených nastavení ve vložených metadatech. Jazykové preference jsou vzaty v úvahu, pokud je k dispozici více možností.", "Delete": "Odstranit", diff --git a/src/strings/da.json b/src/strings/da.json index 265d322fc5..0f4433baff 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -119,7 +119,7 @@ "Continuing": "Forsættes", "CustomDlnaProfilesHelp": "Lav brugerdefinerede profiler til nye enheder eller for at overstyre en systemprofil.", "DeathDateValue": "Dødsdato: {0}", - "MessageDefaultError": "Det opstod en fejl ved behandlingen af forespørgslen. Prøv igen senere.", + "ErrorDefault": "Det opstod en fejl ved behandlingen af forespørgslen. Prøv igen senere.", "DefaultMetadataLangaugeDescription": "Dette er dine standarder og kan brugerdefineres på per-biblioteks basis.", "Delete": "Slet", "DeleteDeviceConfirmation": "Er du sikker på du ønsker at slette denne enhed? Den vil dukke op igen næste gang en bruger logger ind med den.", diff --git a/src/strings/de.json b/src/strings/de.json index f88361c1d2..b5c52588c9 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -143,7 +143,7 @@ "DatePlayed": "Abgespielt am", "DeathDateValue": "Gestorben: {0}", "Default": "Standard", - "MessageDefaultError": "Es gab einen Fehler beim verarbeiten der Anfrage. Bitte versuche es später erneut.", + "ErrorDefault": "Es gab einen Fehler beim verarbeiten der Anfrage. Bitte versuche es später erneut.", "DefaultMetadataLangaugeDescription": "Das sind deine Default-Werte, die bibliotheksspezifisch verändert werden können.", "DefaultSubtitlesHelp": "Untertitel werden gemäß der Standard- und Erzwungen-Ansicht aus den eingebetteten Metadaten geladen. Spracheinstellungen werden zur Verfügung gestellt, wenn mehrere Sprachen verfügbar sind.", "Delete": "Löschen", diff --git a/src/strings/el.json b/src/strings/el.json index 5b3f1afc22..fe22f110c3 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -146,7 +146,7 @@ "DatePlayed": "Ημερομηνία Αναπαραγωγής", "DeathDateValue": "Πέθανε: {0}", "Default": "Προεπιλογή", - "MessageDefaultError": "Παρουσιάστηκε σφάλμα κατά την επεξεργασία του αιτήματός σας. Παρακαλώ δοκιμάστε ξανά αργότερα.", + "ErrorDefault": "Παρουσιάστηκε σφάλμα κατά την επεξεργασία του αιτήματός σας. Παρακαλώ δοκιμάστε ξανά αργότερα.", "DefaultMetadataLangaugeDescription": "Αυτές είναι οι προεπιλογές σας και μπορούν να προσαρμοστούν σε βάση ανά βιβλιοθήκη.", "DefaultSubtitlesHelp": "Οι υπότιτλοι φορτώνονται με βάση τις προεπιλεγμένες και αναγκασμένες σημαίες στα ενσωματωμένα μεταδεδομένα. Οι προτιμήσεις γλώσσας εξετάζονται όταν υπάρχουν πολλές επιλογές.", "Delete": "Διαγραφή", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 58bd67426e..e1c2e52a30 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -202,7 +202,7 @@ "DatePlayed": "Date played", "DeathDateValue": "Died: {0}", "Default": "Default", - "MessageDefaultError": "There was an error processing the request. Please try again later.", + "ErrorDefault": "There was an error processing the request. Please try again later.", "DefaultSubtitlesHelp": "Subtitles are loaded based on the default and forced flags in the embedded metadata. Language preferences are considered when multiple options are available.", "Delete": "Delete", "DeleteDeviceConfirmation": "Are you sure you wish to delete this device? It will reappear the next time a user signs in with it.", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index f0e24d63ab..82d2d796f1 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -178,7 +178,7 @@ "DatePlayed": "Date played", "DeathDateValue": "Died: {0}", "Default": "Default", - "MessageDefaultError": "There was an error processing the request. Please try again later.", + "ErrorDefault": "There was an error processing the request. Please try again later.", "DefaultMetadataLangaugeDescription": "These are your defaults and can be customized on a per-library basis.", "DefaultSubtitlesHelp": "Subtitles are loaded based on the default and forced flags in the embedded metadata. Language preferences are considered when multiple options are available.", "DeinterlaceMethodHelp": "Select the deinterlacing method to use when transcoding interlaced content.", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index c39e873be7..52c98fbc52 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -201,7 +201,7 @@ "DatePlayed": "Fecha de reproducción", "DeathDateValue": "Muerte: {0}", "Default": "Predeterminado", - "MessageDefaultError": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.", + "ErrorDefault": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.", "DefaultMetadataLangaugeDescription": "Estos son tus predeterminados y pueden ser personalizados por librería únicamente.", "Delete": "Borrar", "DeleteDeviceConfirmation": "Estas seguro que quieres borrar este dispositivo? Este va a volver a aparecer cuando una persona se registre.", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index ef23d21528..98b9fd4ab0 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -156,7 +156,7 @@ "DatePlayed": "Fecha de reproducción", "DeathDateValue": "Falleció: {0}", "Default": "Por defecto", - "MessageDefaultError": "Ha ocurrido un error al procesar la solicitud. Por favor, inténtalo de nuevo más tarde.", + "ErrorDefault": "Ha ocurrido un error al procesar la solicitud. Por favor, inténtalo de nuevo más tarde.", "DefaultMetadataLangaugeDescription": "Estos son sus valores por defecto y pueden ser personalizados en cada biblioteca.", "DefaultSubtitlesHelp": "Los subtítulos se cargan basados en los indicadores «por defecto» y «forzado» incluidos en los metadatos. Las preferencias de idioma son consideradas cuando hay múltiples opciones disponibles.", "Delete": "Eliminar", diff --git a/src/strings/es.json b/src/strings/es.json index 1aebb394ab..44456fb83e 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -138,7 +138,7 @@ "CustomDlnaProfilesHelp": "Crear un perfil personalizado para un nuevo dispositivo o reemplazar un perfil del sistema.", "DeathDateValue": "Murió: {0}", "Default": "Por defecto", - "MessageDefaultError": "Ha habido un error procesando la solicitud. Por favor inténtalo más tarde.", + "ErrorDefault": "Ha habido un error procesando la solicitud. Por favor inténtalo más tarde.", "DefaultMetadataLangaugeDescription": "Estos son tus ajustes y se pueden personalizar para cada biblioteca.", "DefaultSubtitlesHelp": "Los subtítulos que se utilizarán dependerán de como estén etiquetadas las pistas de los archivos (si \"por defecto\" o \"forzado\"). Los ajustes de idioma se tienen en cuenta cuando hay varias opciones disponibles.", "Delete": "Borrar", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 3ce724f19b..fad50d979a 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -1374,7 +1374,7 @@ "DeinterlaceMethodHelp": "Seleccione el método de desentrelazado que se usará al transcodificar contenido entrelazado.", "DefaultSubtitlesHelp": "Los subtítulos se cargan basados en los indicadores «por defecto» y «forzado» incluidos en los metadatos. Las preferencias de idioma son consideradas cuando hay múltiples opciones disponibles.", "DefaultMetadataLangaugeDescription": "Estos son sus valores por defecto y pueden ser personalizados en cada biblioteca.", - "MessageDefaultError": "Ha ocurrido un error al procesar la solicitud. Por favor, inténtalo de nuevo más tarde.", + "ErrorDefault": "Ha ocurrido un error al procesar la solicitud. Por favor, inténtalo de nuevo más tarde.", "Default": "Por defecto", "DeathDateValue": "Falleció: {0}", "DatePlayed": "Fecha de reproducción", diff --git a/src/strings/fa.json b/src/strings/fa.json index 3535a3693d..fa2e67474c 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -272,7 +272,7 @@ "DeleteDeviceConfirmation": "آیا از حذف این دستگاه اطمینان دارید؟ هنگامی که یک کاربر دوباره با آن دستگاه وارد شود، دوباره نمایش داده می‌شود.", "Delete": "حذف", "DefaultMetadataLangaugeDescription": "این موارد پیشفرض‌های شماست و می‌توانید برای هر کتابخانه آن را شخصی سازی کنید.", - "MessageDefaultError": "خطایی در پردازش درخواست رخ داد. لطفا اندکی بعد دوباره تلاش کنید.", + "ErrorDefault": "خطایی در پردازش درخواست رخ داد. لطفا اندکی بعد دوباره تلاش کنید.", "Default": "پیشفرض", "DeathDateValue": "تلف شد: {0}", "DatePlayed": "تاریخ پخش شده", diff --git a/src/strings/fi.json b/src/strings/fi.json index 147d501f46..ab385484f0 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -201,7 +201,7 @@ "DateAdded": "Lisäyspäivämäärä", "DatePlayed": "Toistopäivämäärä", "Default": "Oletus", - "MessageDefaultError": "Pyynnön käsittelyssä tapahtui virhe. Yritä myöhemmin uudelleen.", + "ErrorDefault": "Pyynnön käsittelyssä tapahtui virhe. Yritä myöhemmin uudelleen.", "DefaultMetadataLangaugeDescription": "Nämä ovat sinun oletuksetasetukset ja niitä voidaan muokata kirjastokohtaisesti.", "DefaultSubtitlesHelp": "Tekstitykset ladataan pakotettu- ja oletusmäärityksien upotetun metadatan mukaan. Kieliasetukset otetaan huomioon, kun on enemmän kuin yksi tekstitys josta valita.", "DeleteDeviceConfirmation": "Oletko varma, että haluat positaa tämän laitteen? Se ilmaantuu uudelleen seuraavan kerran, kun jokin käyttäjä kirjautuu sillä.", diff --git a/src/strings/fr.json b/src/strings/fr.json index 8d9c0818bc..9122b1861d 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -155,7 +155,7 @@ "DatePlayed": "Date de lecture", "DeathDateValue": "Décédé(e) le {0}", "Default": "Par défaut", - "MessageDefaultError": "Il y a eu une erreur lors de l'exécution de la requête. Veuillez réessayer plus tard.", + "ErrorDefault": "Il y a eu une erreur lors de l'exécution de la requête. Veuillez réessayer plus tard.", "DefaultMetadataLangaugeDescription": "Ce sont vos réglages par défaut. Ils peuvent être personnalisés pour chaque médiathèque.", "DefaultSubtitlesHelp": "Les sous-titres seront chargés selon les marqueurs par défaut et forcé dans les métadonnées intégrées. Les langues préférées seront utilisées quand plusieurs options seront disponibles.", "Delete": "Supprimer", diff --git a/src/strings/he.json b/src/strings/he.json index 7624080423..29824e4c3e 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -53,7 +53,7 @@ "ConfirmDeletion": "אשר מחיקה", "Continuing": "ממשיך", "CustomDlnaProfilesHelp": "צור פרופיל מותאם אישית למכשיר חדש או לעקיפת פרופיל מערכת.", - "MessageDefaultError": "אירעה שגיאה בעיבוד הבקשה. בבקשה נסה שוב מאוחר יותר.", + "ErrorDefault": "אירעה שגיאה בעיבוד הבקשה. בבקשה נסה שוב מאוחר יותר.", "Delete": "מחק", "DeleteImage": "מחק תמונה", "DeleteImageConfirmation": "האם אתה בטוח שברצונך למחוק תמונה זו?", diff --git a/src/strings/hr.json b/src/strings/hr.json index 50e8f7ffaa..ed534a8d95 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -106,7 +106,7 @@ "Continuing": "Nastavlja se", "CustomDlnaProfilesHelp": "Kreiraj prilagođeni profili za novi uređaj ili doradi neki od sistemskih profila.", "DeathDateValue": "Umro: {0}", - "MessageDefaultError": "Došlo je do pogreške prilikom obrade zahtjeva. Molimo pokušajte ponovo kasnije.", + "ErrorDefault": "Došlo je do pogreške prilikom obrade zahtjeva. Molimo pokušajte ponovo kasnije.", "Delete": "Izbriši", "DeleteDeviceConfirmation": "Jeste li sigurni da želite izbrisati ovaj uređaj? Pojavit će se sljedeći put kad se korisnik prijavi s njim.", "DeleteImage": "Izbriši sliku", diff --git a/src/strings/hu.json b/src/strings/hu.json index f05472601f..31a26935ef 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -645,7 +645,7 @@ "CustomDlnaProfilesHelp": "Hozz létre egyéni profilt az új eszközhöz, vagy módosítsd a rendszerprofilt.", "DeathDateValue": "Elhunyt: {0}", "Default": "Alapértelmezett", - "MessageDefaultError": "Hiba történt a kérés feldolgozása során. Kérlek próbáld újra később.", + "ErrorDefault": "Hiba történt a kérés feldolgozása során. Kérlek próbáld újra később.", "DefaultMetadataLangaugeDescription": "Ezek az alapértelmezettek, és könyvtáranként testre szabhatók.", "DeleteDeviceConfirmation": "Biztosan törölni szeretnéd ezt az eszközt? Legközelebb akkor jelenik meg, amikor a felhasználó bejelentkezik róla.", "DeleteImage": "Kép törlése", diff --git a/src/strings/id.json b/src/strings/id.json index 71641a435a..b0eb49d9df 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -56,7 +56,7 @@ "Actor": "Aktor", "Delete": "Hapus", "DefaultMetadataLangaugeDescription": "Berikut ini adalah standar Anda dan dapat dikustomisasi pada tiap pustakanya.", - "MessageDefaultError": "Terdapat galat dalam memproses permintaan. Silakan coba kembali nanti.", + "ErrorDefault": "Terdapat galat dalam memproses permintaan. Silakan coba kembali nanti.", "Default": "Standar", "DeathDateValue": "Meninggal: {0}", "DatePlayed": "Tanggal dimainkan", diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 21dfe6a472..f46de26e59 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -380,7 +380,7 @@ "DirectStreamHelp2": "Beint streymi á skrá notar mjög litið vinnsluafl án þess að tapa myndgæðum.", "Descending": "Niður", "DeleteImageConfirmation": "Ertu viss um að þú viljir eyða þessari mynd?", - "MessageDefaultError": "Villa varð við vinnslu beiðninnar. Reyndu aftur síðar.", + "ErrorDefault": "Villa varð við vinnslu beiðninnar. Reyndu aftur síðar.", "DeathDateValue": "Dó: {0}", "DatePlayed": "Dagsetning spilað", "DateAdded": "Dagsetning bætt við", diff --git a/src/strings/it.json b/src/strings/it.json index d3d5f93578..dc1340efe6 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -145,7 +145,7 @@ "DatePlayed": "Visto il", "DeathDateValue": "Morto: {0}", "Default": "Predefinito", - "MessageDefaultError": "Si è verificato un errore durante l'elaborazione della richiesta. Si prega di riprovare più tardi.", + "ErrorDefault": "Si è verificato un errore durante l'elaborazione della richiesta. Si prega di riprovare più tardi.", "DefaultMetadataLangaugeDescription": "Queste sono le tue impostazioni predefinite e possono essere personalizzate per ogni libreria.", "DefaultSubtitlesHelp": "I sottotitoli vengono letti in base agli attributi predefiniti e forzati dai metadati integrati. Le preferenze di lingua sono prese in considerazione quando sono disponibili più opzioni.", "Delete": "Elimina", diff --git a/src/strings/ja.json b/src/strings/ja.json index 0ea7eeb250..ea0fccedfa 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -157,7 +157,7 @@ "DateAdded": "追加日時", "DatePlayed": "再生日時", "Default": "デフォルト", - "MessageDefaultError": "要求の処理中にエラーが発生しました。 後でもう一度やり直してください。", + "ErrorDefault": "要求の処理中にエラーが発生しました。 後でもう一度やり直してください。", "DefaultMetadataLangaugeDescription": "これらはデフォルトであり、ライブラリごとにカスタマイズすることができます。", "DefaultSubtitlesHelp": "字幕は、埋め込みメタデータのデフォルトフラグと強制フラグに基づいてロードされます。 複数のオプションが利用可能な場合は、言語設定が考慮されます。", "Delete": "削除", diff --git a/src/strings/kk.json b/src/strings/kk.json index 521dcfad5e..e4eb57a72d 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -161,7 +161,7 @@ "DatePlayed": "Oınatylǵan kúni", "DeathDateValue": "Ólgeni: {0}", "Default": "Ádepki", - "MessageDefaultError": "Saýal óńdelý kezinde qate oryn aldy. Áreketti keıin qaıtalańyz.", + "ErrorDefault": "Saýal óńdelý kezinde qate oryn aldy. Áreketti keıin qaıtalańyz.", "DefaultMetadataLangaugeDescription": "Bular sizdiń ádepki maǵynalaryńyz jáne ár tasyǵyshhana negizinde teńsheýge bolady.", "DefaultSubtitlesHelp": "Sýbtıtrler engizilgen metaderekterdegi ádepki jáne májbúrli jalaýshalary negizinde júktelip alynady. Birneshe opsıa qoljetimdi bolǵanda til teńshelimi qarastyrylady.", "Delete": "Joıý", diff --git a/src/strings/ko.json b/src/strings/ko.json index 68f963dea7..53edeed17a 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -86,7 +86,7 @@ "Connect": "접속", "CustomDlnaProfilesHelp": "새 장치를 대상으로 하거나 시스템 프로필을 재정의 할 사용자 지정 프로필을 만듭니다.", "DeathDateValue": "사망: {0}", - "MessageDefaultError": "요청을 처리하는 중에 오류가 발생했습니다. 나중에 다시 시도하십시오.", + "ErrorDefault": "요청을 처리하는 중에 오류가 발생했습니다. 나중에 다시 시도하십시오.", "DefaultMetadataLangaugeDescription": "이는 기본값이며 라이브러리별로 사용자 정의될 수 있습니다.", "Delete": "제거", "DeleteImage": "이미지 제거", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 6726c85291..8599c332c5 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -65,7 +65,7 @@ "ConfirmDeletion": "Patvirtinti trynimą", "Continuing": "Tęsiamas", "CustomDlnaProfilesHelp": "Sukurti kitą profilį naujam įrenginiui ar pakeisti sistemos profilį.", - "MessageDefaultError": "Įvyko klaida vykdant užklausą. Pabandykite vėliau.", + "ErrorDefault": "Įvyko klaida vykdant užklausą. Pabandykite vėliau.", "Delete": "Ištrinti", "DeleteMedia": "Trinti mediją", "DeviceAccessHelp": "Tai taikoma tik įrenginiams, kurie gali būti identifikuojami, ir neuždraus prieigos per naršyklę. Vartotojo įrenginio prieigos filtravimas neleis jiems naudotis naujais įrenginiais kol jie nepatvirtinti čia.", diff --git a/src/strings/lv.json b/src/strings/lv.json index 329354d93b..4a0addb70c 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -975,7 +975,7 @@ "DeleteMedia": "Dzēst mediju", "DeleteImageConfirmation": "Vai tu tiešām vēlies izdzēst šo attēlu?", "DeleteDeviceConfirmation": "Vai tu tiešām vēlies noņemt šo ierīci? Tā parādīsies atkārtoti nākamo reizi, kad lietotājs ieiet ar to.", - "MessageDefaultError": "Apstrādājot pieprasījumu notika kļūda. Pēc brītiņa lūdzu mēģini vēlreiz.", + "ErrorDefault": "Apstrādājot pieprasījumu notika kļūda. Pēc brītiņa lūdzu mēģini vēlreiz.", "DeathDateValue": "Miris: {0}", "ConfirmEndPlayerSession": "Vai jūs gribat izslēgt Jellyfin uz {0}?", "ConfirmDeleteItems": "Dzēšot šos vienumus, tie tiks izdzēsti gan no jūsu failu sistēmas, gan mediju bibliotēkas. Vai tiešām turpināt?", diff --git a/src/strings/nb.json b/src/strings/nb.json index ee1905b7e2..8df80afaa8 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -126,7 +126,7 @@ "Continuing": "Fortsetter", "CustomDlnaProfilesHelp": "Lag en tilpasset profil til en ny enhet eller for å overstyre en system-profil.", "DeathDateValue": "Døde: {0}", - "MessageDefaultError": "Det oppstod en feil under behandling av forespørselen. Vennligst prøv igjen senere.", + "ErrorDefault": "Det oppstod en feil under behandling av forespørselen. Vennligst prøv igjen senere.", "DefaultMetadataLangaugeDescription": "Dette er standardverdiene dine, de kan også tilpasses per biblioteksbasis.", "Delete": "Slett", "DeleteDeviceConfirmation": "Er du sikker på at du ønsker å slette denne enheten? Den vil gjenoppstå neste gang en bruker logger inn med den.", diff --git a/src/strings/nl.json b/src/strings/nl.json index c185c429b8..c27ea0ef96 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -149,7 +149,7 @@ "DatePlayed": "Datum afgespeeld", "DeathDateValue": "Overleden: {0}", "Default": "Standaard", - "MessageDefaultError": "Er is een fout opgetreden. Probeer later opnieuw.", + "ErrorDefault": "Er is een fout opgetreden. Probeer later opnieuw.", "DefaultMetadataLangaugeDescription": "Dit zijn uw standaardinstellingen en kunnen per bibliotheek worden aangepast.", "DefaultSubtitlesHelp": "Ondertitels worden geladen op basis van de standaard en geforceerd markeringen in de ingesloten metadata. Indien meerdere opties aanwezig zijn zal rekening worden gehouden met de taalvoorkeuren.", "Delete": "Verwijderen", diff --git a/src/strings/pl.json b/src/strings/pl.json index cf82877cc4..11822afb8e 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -160,7 +160,7 @@ "DatePlayed": "Data odtwarzania", "DeathDateValue": "Zmarły: {0}", "Default": "Domyślny", - "MessageDefaultError": "Wystąpił błąd podczas przetwarzania żądania. Proszę spróbować ponownie później.", + "ErrorDefault": "Wystąpił błąd podczas przetwarzania żądania. Proszę spróbować ponownie później.", "DefaultMetadataLangaugeDescription": "To są twoje ustawienia domyślne. Możesz je zmienić dla każdej biblioteki osobno.", "DefaultSubtitlesHelp": "Napisy będą wczytywane w oparciu o znaczniki metadanych ścieżek dźwiękowych. Preferencje językowe brane są pod uwagę, gdy dostępnych jest wiele możliwości.", "Delete": "Usuń", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index b86508e9db..9c227f8809 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -153,7 +153,7 @@ "DatePlayed": "Data de reprodução", "DeathDateValue": "Morte: {0}", "Default": "Padrão", - "MessageDefaultError": "Ocorreu um erro ao processar o pedido. Por favor, tente novamente mais tarde.", + "ErrorDefault": "Ocorreu um erro ao processar o pedido. Por favor, tente novamente mais tarde.", "DefaultMetadataLangaugeDescription": "Estas são suas configurações padrão e podem ser personalizadas por biblioteca.", "DefaultSubtitlesHelp": "Legendas são carregadas com base nas configurações padrão e de legendas forçadas nos metadados incorporados. As preferências de idioma são consideradas quando existem múltiplas opções disponíveis.", "Delete": "Excluir", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 5f51f56763..f48f47befd 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -915,7 +915,7 @@ "DirectStreamHelp2": "Reprodução direta de um ficheiro requer pouco processamento e não implica perda de qualidade num vídeo.", "DefaultSubtitlesHelp": "As legendas são carregadas com base nas definições por defeito ou forçado nos metadados. As preferências de idioma são consideradas quando existem múltiplas opções disponíveis.", "DefaultMetadataLangaugeDescription": "Estes são os valores por defeito que podem ser customizados para cada uma das bibliotecas.", - "MessageDefaultError": "Ocorreu um erro a processar o pedido. Por favor, tente novamente mais tarde.", + "ErrorDefault": "Ocorreu um erro a processar o pedido. Por favor, tente novamente mais tarde.", "Default": "Por defeito", "DeathDateValue": "Faleceu: {0}", "DatePlayed": "Reproduzido a", diff --git a/src/strings/pt.json b/src/strings/pt.json index 0640f82870..6b6f793ffb 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -919,7 +919,7 @@ "DeleteDeviceConfirmation": "Tem a certeza que deseja remover este dispositivo? Reaparecerá na próxima vez que o utilizador inicie sessão a partir dele.", "Delete": "Remover", "DefaultSubtitlesHelp": "As legendas são carregadas com base nas definições por omissão ou forçado nos metadados. As preferências de idioma são consideradas quando existem múltiplas opções disponíveis.", - "MessageDefaultError": "Ocorreu um erro ao processar o pedido. Por favor, tente novamente mais tarde.", + "ErrorDefault": "Ocorreu um erro ao processar o pedido. Por favor, tente novamente mais tarde.", "Default": "Por omissão", "DeathDateValue": "Faleceu: {0}", "DatePlayed": "Reproduzido a", diff --git a/src/strings/ro.json b/src/strings/ro.json index 9996a8fe70..3ea72217bd 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -345,7 +345,7 @@ "DatePlayed": "Data redării", "DeathDateValue": "Mort: {0}", "Default": "Implicit", - "MessageDefaultError": "A fost o eroare în procesarea cererii. Vă rugam încercați din nou mai târziu.", + "ErrorDefault": "A fost o eroare în procesarea cererii. Vă rugam încercați din nou mai târziu.", "DeleteImageConfirmation": "Sigur doriți să ștergeți această imagine?", "ButtonRename": "Redenumește", "ButtonRepeat": "Repetă", diff --git a/src/strings/ru.json b/src/strings/ru.json index edc7acdd4f..b24b8ab3ef 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -163,7 +163,7 @@ "DatePlayed": "Дата воспроизведения", "DeathDateValue": "Дата смерти: {0}", "Default": "По умолчанию", - "MessageDefaultError": "Произошла ошибка при обработке запроса. Повторите попытку позже.", + "ErrorDefault": "Произошла ошибка при обработке запроса. Повторите попытку позже.", "DefaultMetadataLangaugeDescription": "Они являются значениями по умолчанию и могут быть подстроены индивидуально для каждой медиатеки.", "DefaultSubtitlesHelp": "Загрузки субтитров определяются флагами \"По умолчанию\" и \"Форсированные\" во внедрённых метаданных. Языковые настройки учитываются при наличии нескольких опций.", "Delete": "Удалить", diff --git a/src/strings/sk.json b/src/strings/sk.json index 579420920b..7b6331aa4d 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -110,7 +110,7 @@ "DateAdded": "Dátum pridania", "DatePlayed": "Dátum prehrania", "DeathDateValue": "Zomrel/a: {0}", - "MessageDefaultError": "Pri spracovaní požiadavky došlo k chybe. Prosím, skúste to neskôr znova.", + "ErrorDefault": "Pri spracovaní požiadavky došlo k chybe. Prosím, skúste to neskôr znova.", "Delete": "Zmazať", "DeleteDeviceConfirmation": "Ste si istý, že chcete odstrániť toto zariadenie? Objaví sa znovu, keď sa ním používateľ nabudúce prihlási.", "DeleteImage": "Zmazať obrázok", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index fd9dde8302..f0f7509010 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -257,7 +257,7 @@ "DeleteImage": "Izbriši sliko", "Delete": "Izbiši", "DefaultMetadataLangaugeDescription": "To so vaše privzete nastavitve, ki jih lahko spreminjate za posamezno knjižnico.", - "MessageDefaultError": "Prišlo je do težave pri obdelavi zahteve. Poskusite ponovno kasneje.", + "ErrorDefault": "Prišlo je do težave pri obdelavi zahteve. Poskusite ponovno kasneje.", "Default": "Privzeto", "DeathDateValue": "Smrt: {0}", "DatePlayed": "Predvajano", diff --git a/src/strings/sv.json b/src/strings/sv.json index 7ab2afc867..16357498af 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -145,7 +145,7 @@ "DatePlayed": "Senast visad", "DeathDateValue": "Död: {0}", "Default": "Standard", - "MessageDefaultError": "Ett fel uppstd vid begäran. Försök igen senare.", + "ErrorDefault": "Ett fel uppstd vid begäran. Försök igen senare.", "DefaultSubtitlesHelp": "Undertexter visas baserat på standardspråk och tvingande undertexter i den inbäddade metadatan. Förvalsspråk kommer väljas när fler val är möjliga.", "Delete": "Ta bort", "DeleteDeviceConfirmation": "Är du säker på att du vill ta bort den här enheten? Den kommer att dyka upp igen nästa gång en användare kopplar upp sig med den.", diff --git a/src/strings/tr.json b/src/strings/tr.json index eb89293759..194ff3c1c5 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -421,7 +421,7 @@ "DatePlayed": "Oynanan tarih", "DeathDateValue": "Öldü: {0}", "Default": "Varsayılan", - "MessageDefaultError": "İsteğin işlenmesi sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.", + "ErrorDefault": "İsteğin işlenmesi sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.", "DefaultMetadataLangaugeDescription": "Bunlar varsayılan ayarlarınızdır ve kitaplık bazında özelleştirilebilir.", "DeleteUserConfirmation": "Bu kullanıcıyı silmek istediğinden emin misin?", "Depressed": "Bunalımlı", diff --git a/src/strings/vi.json b/src/strings/vi.json index d4b120c61c..823eca0a9d 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -237,7 +237,7 @@ "ButtonSignIn": "Đăng nhập", "ButtonShutdown": "Tắt", "ButtonSettings": "Cài đặt", - "MessageDefaultError": "Có lỗi xảy ra trong lúc xử lý yêu cầu của bạn. Xin hãy thử lại sau.", + "ErrorDefault": "Có lỗi xảy ra trong lúc xử lý yêu cầu của bạn. Xin hãy thử lại sau.", "Default": "Mặc định", "DeathDateValue": "Không hoạt động: {0}", "DatePlayed": "Ngày phát", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index dd2ea6be7d..eaf358a6ce 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -148,7 +148,7 @@ "DatePlayed": "播放日期", "DeathDateValue": "去世:{0}", "Default": "默认", - "MessageDefaultError": "处理请求时发生错误。请稍后尝试。", + "ErrorDefault": "处理请求时发生错误。请稍后尝试。", "DefaultMetadataLangaugeDescription": "这些是你的默认设置并且可以在你的每个媒体库中被单独自定义。", "DefaultSubtitlesHelp": "字幕将基于内嵌元数据中的“默认”标志和“强制”标志来载入。当多个选项可用时,将根据语言偏好决定。", "Delete": "删除", diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index da68975e7d..97e7b5633a 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -419,7 +419,7 @@ "DeleteMedia": "刪除媒體", "DeleteImageConfirmation": "你確定要刪除此圖片嗎?", "DeleteImage": "刪除圖片", - "MessageDefaultError": "處理此請求時發生錯誤,請稍後再嘗試。", + "ErrorDefault": "處理此請求時發生錯誤,請稍後再嘗試。", "Default": "預設", "DateAdded": "日期已新增", "CopyStreamURLError": "複製URL時發生錯誤。", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index 4a05bb9ee8..0bb3504023 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -421,7 +421,7 @@ "ColorSpace": "色彩空間", "ColorTransfer": "色彩傳輸", "CommunityRating": "社群評分", - "MessageDefaultError": "處理請求時發生錯誤。請稍後再試。", + "ErrorDefault": "處理請求時發生錯誤。請稍後再試。", "DefaultMetadataLangaugeDescription": "這些預設設定可以在你的媒體庫中單獨設定。", "DefaultSubtitlesHelp": "字幕將基於中繼資料中的「預設」標記和「強制」標記來載入,當有多個選項可用時,將根據語言偏好決定。", "DeleteDeviceConfirmation": "你確定你要刪除這個裝置嗎?當有使用者用這個裝置登入時,這個裝置會再次出現。", From 01fd2e056dfb116263c36d1bc0daecaf405d5f43 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sat, 1 Aug 2020 19:18:03 +0200 Subject: [PATCH 099/463] Fix suggestions --- src/components/viewContainer.js | 116 +++++++++++++++----------------- 1 file changed, 54 insertions(+), 62 deletions(-) diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index 766a12b9ce..4e11ebc7ba 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -1,3 +1,4 @@ +import 'css!components/viewManager/viewContainer'; /* eslint-disable indent */ function setControllerClass(view, options) { @@ -13,7 +14,7 @@ } controllerUrl = Dashboard.getConfigurationResourceUrl(controllerUrl); - return getRequirePromise([controllerUrl]).then((ControllerFactory) => { + return import(controllerUrl).then((ControllerFactory) => { options.controllerFactory = ControllerFactory; }); } @@ -21,12 +22,6 @@ return Promise.resolve(); } - function getRequirePromise(deps) { - return new Promise((resolve, reject) => { - require(deps, resolve); - }); - } - export function loadView(options) { if (!options.cancel) { const selected = selectedPageIndex; @@ -40,75 +35,72 @@ const isPluginpage = options.url.toLowerCase().indexOf('/configurationpage') !== -1; const newViewInfo = normalizeNewView(options, isPluginpage); const newView = newViewInfo.elem; - const modulesToLoad = []; return new Promise((resolve) => { - require(modulesToLoad, () => { - const currentPage = allPages[pageIndex]; + const currentPage = allPages[pageIndex]; - if (currentPage) { - triggerDestroy(currentPage); - } + if (currentPage) { + triggerDestroy(currentPage); + } - let view = newView; + let view = newView; - if (typeof view == 'string') { - view = document.createElement('div'); - view.innerHTML = newView; - } + if (typeof view == 'string') { + view = document.createElement('div'); + view.innerHTML = newView; + } - view.classList.add('mainAnimatedPage'); + view.classList.add('mainAnimatedPage'); - if (currentPage) { - if (newViewInfo.hasScript && window.$) { - view = $(view).appendTo(mainAnimatedPages)[0]; - mainAnimatedPages.removeChild(currentPage); - } else { - mainAnimatedPages.replaceChild(view, currentPage); - } + if (currentPage) { + if (newViewInfo.hasScript && window.$) { + view = $(view).appendTo(mainAnimatedPages)[0]; + mainAnimatedPages.removeChild(currentPage); } else { - if (newViewInfo.hasScript && window.$) { - view = $(view).appendTo(mainAnimatedPages)[0]; - } else { - mainAnimatedPages.appendChild(view); - } + mainAnimatedPages.replaceChild(view, currentPage); + } + } else { + if (newViewInfo.hasScript && window.$) { + view = $(view).appendTo(mainAnimatedPages)[0]; + } else { + mainAnimatedPages.appendChild(view); + } + } + + if (options.type) { + view.setAttribute('data-type', options.type); + } + + const properties = []; + + if (options.fullscreen) { + properties.push('fullscreen'); + } + + if (properties.length) { + view.setAttribute('data-properties', properties.join(',')); + } + + allPages[pageIndex] = view; + setControllerClass(view, options).then(() => { + if (onBeforeChange) { + onBeforeChange(view, false, options); } - if (options.type) { - view.setAttribute('data-type', options.type); + beforeAnimate(allPages, pageIndex, selected); + selectedPageIndex = pageIndex; + currentUrls[pageIndex] = options.url; + + if (!options.cancel && previousAnimatable) { + afterAnimate(allPages, pageIndex); } - const properties = []; - - if (options.fullscreen) { - properties.push('fullscreen'); + if (window.$) { + $.mobile = $.mobile || {}; + $.mobile.activePage = view; } - if (properties.length) { - view.setAttribute('data-properties', properties.join(',')); - } - - allPages[pageIndex] = view; - setControllerClass(view, options).then(() => { - if (onBeforeChange) { - onBeforeChange(view, false, options); - } - - beforeAnimate(allPages, pageIndex, selected); - selectedPageIndex = pageIndex; - currentUrls[pageIndex] = options.url; - - if (!options.cancel && previousAnimatable) { - afterAnimate(allPages, pageIndex); - } - - if (window.$) { - $.mobile = $.mobile || {}; - $.mobile.activePage = view; - } - - resolve(view); - }); + resolve(view); }); }); } From 60ca2d5bd149d412e5e9bdc5ea6b35fd21b86806 Mon Sep 17 00:00:00 2001 From: schbal Date: Sun, 2 Aug 2020 00:27:41 +0000 Subject: [PATCH 100/463] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index e587031bb5..d78042298f 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -813,7 +813,7 @@ "AllowOnTheFlySubtitleExtraction": "실시간 자막 추출 허용", "AllowOnTheFlySubtitleExtractionHelp": "비디오 트랜스코딩을 방지하기 위해 내장된 자막을 비디오에서 추출하여 텍스트로 클라이언트에 전송할 수 있습니다. 다만, 일부 시스템에서 추출 과정은 긴 시간이 걸리고 비디오 재생을 멈출 수 있습니다. 클라이언트에서 트랜스코딩을 사용할 수 없는 경우 이 기능을 비활성화하여 트랜스코딩 시 자막을 영상에 삽입하십시오.", "AllowRemoteAccess": "이 Jellyfin 서버에 원격 접속을 허용합니다.", - "AllowRemoteAccessHelp": "체크 해제 시 모든 외부 접속은 차단됩니다.", + "AllowRemoteAccessHelp": "비 활성화할 시, 모든 외부 접속은 차단됩니다.", "AllowedRemoteAddressesHelp": "외부 접속을 허용할 IP 혹은 IP 넷마스크를 반점(,)으로 구분하여 입력하십시오. 공란일시, 모든 외부 접속이 허용됩니다.", "AlwaysPlaySubtitles": "항상 표시", "AlwaysPlaySubtitlesHelp": "오디오 언어를 불문하고 언어 설정에 적합한 자막을 불러옵니다.", From a72c843b13453a4c9020d18adc46c9337cdcaf75 Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 09:12:30 +0100 Subject: [PATCH 101/463] Migration of playbackmanager to ES6 module --- package.json | 1 + src/components/playback/playbackmanager.js | 2080 ++++++++++---------- 2 files changed, 1036 insertions(+), 1045 deletions(-) diff --git a/package.json b/package.json index a18eb8e0fb..e785ae2ebd 100644 --- a/package.json +++ b/package.json @@ -138,6 +138,7 @@ "src/components/playback/mediasession.js", "src/components/playback/nowplayinghelper.js", "src/components/playback/playbackorientation.js", + "src/components/playback/playbackmanager.js", "src/components/playback/playerSelectionMenu.js", "src/components/playback/playersettingsmenu.js", "src/components/playback/playmethodhelper.js", diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 1d74cd69f5..99a21dd3e2 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1,729 +1,738 @@ -define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'playQueueManager', 'userSettings', 'globalize', 'connectionManager', 'loading', 'apphost', 'screenfull'], function (events, datetime, appSettings, itemHelper, pluginManager, PlayQueueManager, userSettings, globalize, connectionManager, loading, apphost, screenfull) { - 'use strict'; - - PlayQueueManager = PlayQueueManager.default || PlayQueueManager; - - function enableLocalPlaylistManagement(player) { - if (player.getPlaylist) { - return false; - } - - if (player.isLocalPlayer) { - return true; - } +import events from 'events'; +import datetime from 'datetime'; +import appSettings from 'appSettings'; +import itemHelper from 'itemHelper'; +import pluginManager from 'pluginManager'; +import PlayQueueManager from 'playQueueManager'; +import * as userSettings from 'userSettings'; +import globalize from 'globalize'; +import connectionManager from 'connectionManager'; +import loading from 'loading'; +import apphost from 'apphost'; +import screenfull from 'screenfull'; +function enableLocalPlaylistManagement(player) { + if (player.getPlaylist) { return false; } - function bindToFullscreenChange(player) { - if (screenfull.isEnabled) { - screenfull.on('change', function () { - events.trigger(player, 'fullscreenchange'); - }); - } else { - // iOS Safari - document.addEventListener('webkitfullscreenchange', function () { - events.trigger(player, 'fullscreenchange'); - }, false); - } - } - - function triggerPlayerChange(playbackManagerInstance, newPlayer, newTarget, previousPlayer, previousTargetInfo) { - if (!newPlayer && !previousPlayer) { - return; - } - - if (newTarget && previousTargetInfo) { - if (newTarget.id === previousTargetInfo.id) { - return; - } - } - - events.trigger(playbackManagerInstance, 'playerchange', [newPlayer, newTarget, previousPlayer]); - } - - function reportPlayback(playbackManagerInstance, state, player, reportPlaylist, serverId, method, progressEventName) { - if (!serverId) { - // Not a server item - // We can expand on this later and possibly report them - events.trigger(playbackManagerInstance, 'reportplayback', [false]); - return; - } - - var info = Object.assign({}, state.PlayState); - info.ItemId = state.NowPlayingItem.Id; - - if (progressEventName) { - info.EventName = progressEventName; - } - - if (reportPlaylist) { - addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId); - } - - var apiClient = connectionManager.getApiClient(serverId); - var reportPlaybackPromise = apiClient[method](info); - // Notify that report has been sent - reportPlaybackPromise.then(() => { - events.trigger(playbackManagerInstance, 'reportplayback', [true]); - }); - } - - function getPlaylistSync(playbackManagerInstance, player) { - player = player || playbackManagerInstance._currentPlayer; - if (player && !enableLocalPlaylistManagement(player)) { - return player.getPlaylistSync(); - } - - return playbackManagerInstance._playQueueManager.getPlaylist(); - } - - function addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId) { - info.NowPlayingQueue = getPlaylistSync(playbackManagerInstance, player).map(function (i) { - var itemInfo = { - Id: i.Id, - PlaylistItemId: i.PlaylistItemId - }; - - if (i.ServerId !== serverId) { - itemInfo.ServerId = i.ServerId; - } - - return itemInfo; - }); - } - - function normalizeName(t) { - return t.toLowerCase().replace(' ', ''); - } - - function getItemsForPlayback(serverId, query) { - var apiClient = connectionManager.getApiClient(serverId); - - if (query.Ids && query.Ids.split(',').length === 1) { - var itemId = query.Ids.split(','); - - return apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { - return { - Items: [item], - TotalRecordCount: 1 - }; - }); - } else { - query.Limit = query.Limit || 300; - query.Fields = 'Chapters'; - query.ExcludeLocationTypes = 'Virtual'; - query.EnableTotalRecordCount = false; - query.CollapseBoxSetItems = false; - - return apiClient.getItems(apiClient.getCurrentUserId(), query); - } - } - - function createStreamInfoFromUrlItem(item) { - // Check item.Path for games - return { - url: item.Url || item.Path, - playMethod: 'DirectPlay', - item: item, - textTracks: [], - mediaType: item.MediaType - }; - } - - function mergePlaybackQueries(obj1, obj2) { - var query = Object.assign(obj1, obj2); - - var filters = query.Filters ? query.Filters.split(',') : []; - if (filters.indexOf('IsNotFolder') === -1) { - filters.push('IsNotFolder'); - } - query.Filters = filters.join(','); - return query; - } - - function backdropImageUrl(apiClient, item, options) { - options = options || {}; - options.type = options.type || 'Backdrop'; - - // If not resizing, get the original image - if (!options.maxWidth && !options.width && !options.maxHeight && !options.height) { - options.quality = 100; - } - - if (item.BackdropImageTags && item.BackdropImageTags.length) { - options.tag = item.BackdropImageTags[0]; - return apiClient.getScaledImageUrl(item.Id, options); - } - - if (item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { - options.tag = item.ParentBackdropImageTags[0]; - return apiClient.getScaledImageUrl(item.ParentBackdropItemId, options); - } - - return null; - } - - function getMimeType(type, container) { - container = (container || '').toLowerCase(); - - if (type === 'audio') { - if (container === 'opus') { - return 'audio/ogg'; - } - if (container === 'webma') { - return 'audio/webm'; - } - if (container === 'm4a') { - return 'audio/mp4'; - } - } else if (type === 'video') { - if (container === 'mkv') { - return 'video/x-matroska'; - } - if (container === 'm4v') { - return 'video/mp4'; - } - if (container === 'mov') { - return 'video/quicktime'; - } - if (container === 'mpg') { - return 'video/mpeg'; - } - if (container === 'flv') { - return 'video/x-flv'; - } - } - - return type + '/' + container; - } - - function getParam(name, url) { - name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); - var regexS = '[\\?&]' + name + '=([^&#]*)'; - var regex = new RegExp(regexS, 'i'); - - var results = regex.exec(url); - if (results == null) { - return ''; - } else { - return decodeURIComponent(results[1].replace(/\+/g, ' ')); - } - } - - function isAutomaticPlayer(player) { - if (player.isLocalPlayer) { - return true; - } - - return false; - } - - function getAutomaticPlayers(instance, forceLocalPlayer) { - if (!forceLocalPlayer) { - var player = instance._currentPlayer; - if (player && !isAutomaticPlayer(player)) { - return [player]; - } - } - - return instance.getPlayers().filter(isAutomaticPlayer); - } - - function isServerItem(item) { - if (!item.Id) { - return false; - } + if (player.isLocalPlayer) { return true; } - function enableIntros(item) { - if (item.MediaType !== 'Video') { - return false; - } - if (item.Type === 'TvChannel') { - return false; - } - // disable for in-progress recordings - if (item.Status === 'InProgress') { - return false; - } + return false; +} - return isServerItem(item); +function bindToFullscreenChange(player) { + if (screenfull.isEnabled) { + screenfull.on('change', function () { + events.trigger(player, 'fullscreenchange'); + }); + } else { + // iOS Safari + document.addEventListener('webkitfullscreenchange', function () { + events.trigger(player, 'fullscreenchange'); + }, false); + } +} + +function triggerPlayerChange(playbackManagerInstance, newPlayer, newTarget, previousPlayer, previousTargetInfo) { + if (!newPlayer && !previousPlayer) { + return; } - function getIntros(firstItem, apiClient, options) { - if (options.startPositionTicks || options.startIndex || options.fullscreen === false || !enableIntros(firstItem) || !userSettings.enableCinemaMode()) { - return Promise.resolve({ - Items: [] - }); + if (newTarget && previousTargetInfo) { + if (newTarget.id === previousTargetInfo.id) { + return; } - - return apiClient.getIntros(firstItem.Id).then(function (result) { - return result; - }, function (err) { - return Promise.resolve({ - Items: [] - }); - }); } - function getAudioMaxValues(deviceProfile) { - // TODO - this could vary per codec and should be done on the server using the entire profile - var maxAudioSampleRate = null; - var maxAudioBitDepth = null; - var maxAudioBitrate = null; + events.trigger(playbackManagerInstance, 'playerchange', [newPlayer, newTarget, previousPlayer]); +} - deviceProfile.CodecProfiles.map(function (codecProfile) { - if (codecProfile.Type === 'Audio') { - (codecProfile.Conditions || []).map(function (condition) { - if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioBitDepth') { - return maxAudioBitDepth = condition.Value; - } else if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioSampleRate') { - return maxAudioSampleRate = condition.Value; - } else if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioBitrate') { - return maxAudioBitrate = condition.Value; - } - }); - } - }); +function reportPlayback(playbackManagerInstance, state, player, reportPlaylist, serverId, method, progressEventName) { + if (!serverId) { + // Not a server item + // We can expand on this later and possibly report them + events.trigger(playbackManagerInstance, 'reportplayback', [false]); + return; + } - return { - maxAudioSampleRate: maxAudioSampleRate, - maxAudioBitDepth: maxAudioBitDepth, - maxAudioBitrate: maxAudioBitrate + const info = Object.assign({}, state.PlayState); + info.ItemId = state.NowPlayingItem.Id; + + if (progressEventName) { + info.EventName = progressEventName; + } + + if (reportPlaylist) { + addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId); + } + + const apiClient = connectionManager.getApiClient(serverId); + const reportPlaybackPromise = apiClient[method](info); + // Notify that report has been sent + reportPlaybackPromise.then(() => { + events.trigger(playbackManagerInstance, 'reportplayback', [true]); + }); +} + +function getPlaylistSync(playbackManagerInstance, player) { + player = player || playbackManagerInstance._currentPlayer; + if (player && !enableLocalPlaylistManagement(player)) { + return player.getPlaylistSync(); + } + + return playbackManagerInstance._playQueueManager.getPlaylist(); +} + +function addPlaylistToPlaybackReport(playbackManagerInstance, info, player, serverId) { + info.NowPlayingQueue = getPlaylistSync(playbackManagerInstance, player).map(function (i) { + const itemInfo = { + Id: i.Id, + PlaylistItemId: i.PlaylistItemId }; + + if (i.ServerId !== serverId) { + itemInfo.ServerId = i.ServerId; + } + + return itemInfo; + }); +} + +function normalizeName(t) { + return t.toLowerCase().replace(' ', ''); +} + +function getItemsForPlayback(serverId, query) { + const apiClient = connectionManager.getApiClient(serverId); + + if (query.Ids && query.Ids.split(',').length === 1) { + const itemId = query.Ids.split(','); + + return apiClient.getItem(apiClient.getCurrentUserId(), itemId).then(function (item) { + return { + Items: [item], + TotalRecordCount: 1 + }; + }); + } else { + query.Limit = query.Limit || 300; + query.Fields = 'Chapters'; + query.ExcludeLocationTypes = 'Virtual'; + query.EnableTotalRecordCount = false; + query.CollapseBoxSetItems = false; + + return apiClient.getItems(apiClient.getCurrentUserId(), query); + } +} + +function createStreamInfoFromUrlItem(item) { + // Check item.Path for games + return { + url: item.Url || item.Path, + playMethod: 'DirectPlay', + item: item, + textTracks: [], + mediaType: item.MediaType + }; +} + +function mergePlaybackQueries(obj1, obj2) { + const query = Object.assign(obj1, obj2); + + const filters = query.Filters ? query.Filters.split(',') : []; + if (filters.indexOf('IsNotFolder') === -1) { + filters.push('IsNotFolder'); + } + query.Filters = filters.join(','); + return query; +} + +function backdropImageUrl(apiClient, item, options) { + options = options || {}; + options.type = options.type || 'Backdrop'; + + // If not resizing, get the original image + if (!options.maxWidth && !options.width && !options.maxHeight && !options.height) { + options.quality = 100; } - var startingPlaySession = new Date().getTime(); - function getAudioStreamUrl(item, transcodingProfile, directPlayContainers, maxBitrate, apiClient, maxAudioSampleRate, maxAudioBitDepth, maxAudioBitrate, startPosition) { - var url = 'Audio/' + item.Id + '/universal'; + if (item.BackdropImageTags && item.BackdropImageTags.length) { + options.tag = item.BackdropImageTags[0]; + return apiClient.getScaledImageUrl(item.Id, options); + } - startingPlaySession++; - return apiClient.getUrl(url, { - UserId: apiClient.getCurrentUserId(), - DeviceId: apiClient.deviceId(), - MaxStreamingBitrate: maxAudioBitrate || maxBitrate, - Container: directPlayContainers, - TranscodingContainer: transcodingProfile.Container || null, - TranscodingProtocol: transcodingProfile.Protocol || null, - AudioCodec: transcodingProfile.AudioCodec, - MaxAudioSampleRate: maxAudioSampleRate, - MaxAudioBitDepth: maxAudioBitDepth, - api_key: apiClient.accessToken(), - PlaySessionId: startingPlaySession, - StartTimeTicks: startPosition || 0, - EnableRedirection: true, - EnableRemoteMedia: apphost.supports('remoteaudio') + if (item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { + options.tag = item.ParentBackdropImageTags[0]; + return apiClient.getScaledImageUrl(item.ParentBackdropItemId, options); + } + + return null; +} + +function getMimeType(type, container) { + container = (container || '').toLowerCase(); + + if (type === 'audio') { + if (container === 'opus') { + return 'audio/ogg'; + } + if (container === 'webma') { + return 'audio/webm'; + } + if (container === 'm4a') { + return 'audio/mp4'; + } + } else if (type === 'video') { + if (container === 'mkv') { + return 'video/x-matroska'; + } + if (container === 'm4v') { + return 'video/mp4'; + } + if (container === 'mov') { + return 'video/quicktime'; + } + if (container === 'mpg') { + return 'video/mpeg'; + } + if (container === 'flv') { + return 'video/x-flv'; + } + } + + return type + '/' + container; +} + +function getParam(name, url) { + name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); + const regexS = '[\\?&]' + name + '=([^&#]*)'; + const regex = new RegExp(regexS, 'i'); + + const results = regex.exec(url); + if (results == null) { + return ''; + } else { + return decodeURIComponent(results[1].replace(/\+/g, ' ')); + } +} + +function isAutomaticPlayer(player) { + if (player.isLocalPlayer) { + return true; + } + + return false; +} + +function getAutomaticPlayers(instance, forceLocalPlayer) { + if (!forceLocalPlayer) { + const player = instance._currentPlayer; + if (player && !isAutomaticPlayer(player)) { + return [player]; + } + } + + return instance.getPlayers().filter(isAutomaticPlayer); +} + +function isServerItem(item) { + if (!item.Id) { + return false; + } + return true; +} + +function enableIntros(item) { + if (item.MediaType !== 'Video') { + return false; + } + if (item.Type === 'TvChannel') { + return false; + } + // disable for in-progress recordings + if (item.Status === 'InProgress') { + return false; + } + + return isServerItem(item); +} + +function getIntros(firstItem, apiClient, options) { + if (options.startPositionTicks || options.startIndex || options.fullscreen === false || !enableIntros(firstItem) || !userSettings.enableCinemaMode()) { + return Promise.resolve({ + Items: [] }); } - function getAudioStreamUrlFromDeviceProfile(item, deviceProfile, maxBitrate, apiClient, startPosition) { - var transcodingProfile = deviceProfile.TranscodingProfiles.filter(function (p) { - return p.Type === 'Audio' && p.Context === 'Streaming'; + return apiClient.getIntros(firstItem.Id).then(function (result) { + return result; + }, function (err) { + return Promise.resolve({ + Items: [] + }); + }); +} + +function getAudioMaxValues(deviceProfile) { + // TODO - this could vary per codec and should be done on the server using the entire profile + let maxAudioSampleRate = null; + let maxAudioBitDepth = null; + let maxAudioBitrate = null; + + deviceProfile.CodecProfiles.map(function (codecProfile) { + if (codecProfile.Type === 'Audio') { + (codecProfile.Conditions || []).map(function (condition) { + if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioBitDepth') { + return maxAudioBitDepth = condition.Value; + } else if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioSampleRate') { + return maxAudioSampleRate = condition.Value; + } else if (condition.Condition === 'LessThanEqual' && condition.Property === 'AudioBitrate') { + return maxAudioBitrate = condition.Value; + } + }); + } + }); + + return { + maxAudioSampleRate: maxAudioSampleRate, + maxAudioBitDepth: maxAudioBitDepth, + maxAudioBitrate: maxAudioBitrate + }; +} + +let startingPlaySession = new Date().getTime(); +function getAudioStreamUrl(item, transcodingProfile, directPlayContainers, maxBitrate, apiClient, maxAudioSampleRate, maxAudioBitDepth, maxAudioBitrate, startPosition) { + const url = 'Audio/' + item.Id + '/universal'; + + startingPlaySession++; + return apiClient.getUrl(url, { + UserId: apiClient.getCurrentUserId(), + DeviceId: apiClient.deviceId(), + MaxStreamingBitrate: maxAudioBitrate || maxBitrate, + Container: directPlayContainers, + TranscodingContainer: transcodingProfile.Container || null, + TranscodingProtocol: transcodingProfile.Protocol || null, + AudioCodec: transcodingProfile.AudioCodec, + MaxAudioSampleRate: maxAudioSampleRate, + MaxAudioBitDepth: maxAudioBitDepth, + api_key: apiClient.accessToken(), + PlaySessionId: startingPlaySession, + StartTimeTicks: startPosition || 0, + EnableRedirection: true, + EnableRemoteMedia: apphost.supports('remoteaudio') + }); +} + +function getAudioStreamUrlFromDeviceProfile(item, deviceProfile, maxBitrate, apiClient, startPosition) { + const transcodingProfile = deviceProfile.TranscodingProfiles.filter(function (p) { + return p.Type === 'Audio' && p.Context === 'Streaming'; + })[0]; + + let directPlayContainers = ''; + + deviceProfile.DirectPlayProfiles.map(function (p) { + if (p.Type === 'Audio') { + if (directPlayContainers) { + directPlayContainers += ',' + p.Container; + } else { + directPlayContainers = p.Container; + } + + if (p.AudioCodec) { + directPlayContainers += '|' + p.AudioCodec; + } + } + }); + + const maxValues = getAudioMaxValues(deviceProfile); + + return getAudioStreamUrl(item, transcodingProfile, directPlayContainers, maxBitrate, apiClient, maxValues.maxAudioSampleRate, maxValues.maxAudioBitDepth, maxValues.maxAudioBitrate, startPosition); +} + +function getStreamUrls(items, deviceProfile, maxBitrate, apiClient, startPosition) { + const audioTranscodingProfile = deviceProfile.TranscodingProfiles.filter(function (p) { + return p.Type === 'Audio' && p.Context === 'Streaming'; + })[0]; + + let audioDirectPlayContainers = ''; + + deviceProfile.DirectPlayProfiles.map(function (p) { + if (p.Type === 'Audio') { + if (audioDirectPlayContainers) { + audioDirectPlayContainers += ',' + p.Container; + } else { + audioDirectPlayContainers = p.Container; + } + + if (p.AudioCodec) { + audioDirectPlayContainers += '|' + p.AudioCodec; + } + } + }); + + const maxValues = getAudioMaxValues(deviceProfile); + + const streamUrls = []; + + for (let i = 0, length = items.length; i < length; i++) { + const item = items[i]; + let streamUrl; + + if (item.MediaType === 'Audio' && !itemHelper.isLocalItem(item)) { + streamUrl = getAudioStreamUrl(item, audioTranscodingProfile, audioDirectPlayContainers, maxBitrate, apiClient, maxValues.maxAudioSampleRate, maxValues.maxAudioBitDepth, maxValues.maxAudioBitrate, startPosition); + } + + streamUrls.push(streamUrl || ''); + + if (i === 0) { + startPosition = 0; + } + } + + return Promise.resolve(streamUrls); +} + +function setStreamUrls(items, deviceProfile, maxBitrate, apiClient, startPosition) { + return getStreamUrls(items, deviceProfile, maxBitrate, apiClient, startPosition).then(function (streamUrls) { + for (let i = 0, length = items.length; i < length; i++) { + const item = items[i]; + const streamUrl = streamUrls[i]; + + if (streamUrl) { + item.PresetMediaSource = { + StreamUrl: streamUrl, + Id: item.Id, + MediaStreams: [], + RunTimeTicks: item.RunTimeTicks + }; + } + } + }); +} + +function getPlaybackInfo(player, + apiClient, + item, + deviceProfile, + maxBitrate, + startPosition, + isPlayback, + mediaSourceId, + audioStreamIndex, + subtitleStreamIndex, + liveStreamId, + enableDirectPlay, + enableDirectStream, + allowVideoStreamCopy, + allowAudioStreamCopy) { + if (!itemHelper.isLocalItem(item) && item.MediaType === 'Audio') { + return Promise.resolve({ + MediaSources: [ + { + StreamUrl: getAudioStreamUrlFromDeviceProfile(item, deviceProfile, maxBitrate, apiClient, startPosition), + Id: item.Id, + MediaStreams: [], + RunTimeTicks: item.RunTimeTicks + }] + }); + } + + if (item.PresetMediaSource) { + return Promise.resolve({ + MediaSources: [item.PresetMediaSource] + }); + } + + const itemId = item.Id; + + const query = { + UserId: apiClient.getCurrentUserId(), + StartTimeTicks: startPosition || 0 + }; + + if (isPlayback) { + query.IsPlayback = true; + query.AutoOpenLiveStream = true; + } else { + query.IsPlayback = false; + query.AutoOpenLiveStream = false; + } + + if (audioStreamIndex != null) { + query.AudioStreamIndex = audioStreamIndex; + } + if (subtitleStreamIndex != null) { + query.SubtitleStreamIndex = subtitleStreamIndex; + } + if (enableDirectPlay != null) { + query.EnableDirectPlay = enableDirectPlay; + } + + if (enableDirectStream != null) { + query.EnableDirectStream = enableDirectStream; + } + if (allowVideoStreamCopy != null) { + query.AllowVideoStreamCopy = allowVideoStreamCopy; + } + if (allowAudioStreamCopy != null) { + query.AllowAudioStreamCopy = allowAudioStreamCopy; + } + if (mediaSourceId) { + query.MediaSourceId = mediaSourceId; + } + if (liveStreamId) { + query.LiveStreamId = liveStreamId; + } + if (maxBitrate) { + query.MaxStreamingBitrate = maxBitrate; + } + if (player.enableMediaProbe && !player.enableMediaProbe(item)) { + query.EnableMediaProbe = false; + } + + // lastly, enforce player overrides for special situations + if (query.EnableDirectStream !== false) { + if (player.supportsPlayMethod && !player.supportsPlayMethod('DirectStream', item)) { + query.EnableDirectStream = false; + } + } + + if (player.getDirectPlayProtocols) { + query.DirectPlayProtocols = player.getDirectPlayProtocols(); + } + + return apiClient.getPlaybackInfo(itemId, query, deviceProfile); +} + +function getOptimalMediaSource(apiClient, item, versions) { + const promises = versions.map(function (v) { + return supportsDirectPlay(apiClient, item, v); + }); + + if (!promises.length) { + return Promise.reject(); + } + + return Promise.all(promises).then(function (results) { + for (let i = 0, length = versions.length; i < length; i++) { + versions[i].enableDirectPlay = results[i] || false; + } + let optimalVersion = versions.filter(function (v) { + return v.enableDirectPlay; })[0]; - var directPlayContainers = ''; + if (!optimalVersion) { + optimalVersion = versions.filter(function (v) { + return v.SupportsDirectStream; + })[0]; + } - deviceProfile.DirectPlayProfiles.map(function (p) { - if (p.Type === 'Audio') { - if (directPlayContainers) { - directPlayContainers += ',' + p.Container; - } else { - directPlayContainers = p.Container; - } - - if (p.AudioCodec) { - directPlayContainers += '|' + p.AudioCodec; - } - } - }); - - var maxValues = getAudioMaxValues(deviceProfile); - - return getAudioStreamUrl(item, transcodingProfile, directPlayContainers, maxBitrate, apiClient, maxValues.maxAudioSampleRate, maxValues.maxAudioBitDepth, maxValues.maxAudioBitrate, startPosition); - } - - function getStreamUrls(items, deviceProfile, maxBitrate, apiClient, startPosition) { - var audioTranscodingProfile = deviceProfile.TranscodingProfiles.filter(function (p) { - return p.Type === 'Audio' && p.Context === 'Streaming'; + optimalVersion = optimalVersion || versions.filter(function (s) { + return s.SupportsTranscoding; })[0]; - var audioDirectPlayContainers = ''; + return optimalVersion || versions[0]; + }); +} - deviceProfile.DirectPlayProfiles.map(function (p) { - if (p.Type === 'Audio') { - if (audioDirectPlayContainers) { - audioDirectPlayContainers += ',' + p.Container; - } else { - audioDirectPlayContainers = p.Container; - } +function getLiveStream(player, apiClient, item, playSessionId, deviceProfile, maxBitrate, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex) { + const postData = { + DeviceProfile: deviceProfile, + OpenToken: mediaSource.OpenToken + }; - if (p.AudioCodec) { - audioDirectPlayContainers += '|' + p.AudioCodec; + const query = { + UserId: apiClient.getCurrentUserId(), + StartTimeTicks: startPosition || 0, + ItemId: item.Id, + PlaySessionId: playSessionId + }; + + if (maxBitrate) { + query.MaxStreamingBitrate = maxBitrate; + } + if (audioStreamIndex != null) { + query.AudioStreamIndex = audioStreamIndex; + } + if (subtitleStreamIndex != null) { + query.SubtitleStreamIndex = subtitleStreamIndex; + } + + // lastly, enforce player overrides for special situations + if (query.EnableDirectStream !== false) { + if (player.supportsPlayMethod && !player.supportsPlayMethod('DirectStream', item)) { + query.EnableDirectStream = false; + } + } + + return apiClient.ajax({ + url: apiClient.getUrl('LiveStreams/Open', query), + type: 'POST', + data: JSON.stringify(postData), + contentType: 'application/json', + dataType: 'json' + + }); +} + +function isHostReachable(mediaSource, apiClient) { + if (mediaSource.IsRemote) { + return Promise.resolve(true); + } + + return apiClient.getEndpointInfo().then(function (endpointInfo) { + if (endpointInfo.IsInNetwork) { + if (!endpointInfo.IsLocal) { + const path = (mediaSource.Path || '').toLowerCase(); + if (path.indexOf('localhost') !== -1 || path.indexOf('127.0.0.1') !== -1) { + // This will only work if the app is on the same machine as the server + return Promise.resolve(false); } } - }); - var maxValues = getAudioMaxValues(deviceProfile); - - var streamUrls = []; - - for (var i = 0, length = items.length; i < length; i++) { - var item = items[i]; - var streamUrl; - - if (item.MediaType === 'Audio' && !itemHelper.isLocalItem(item)) { - streamUrl = getAudioStreamUrl(item, audioTranscodingProfile, audioDirectPlayContainers, maxBitrate, apiClient, maxValues.maxAudioSampleRate, maxValues.maxAudioBitDepth, maxValues.maxAudioBitrate, startPosition); - } - - streamUrls.push(streamUrl || ''); - - if (i === 0) { - startPosition = 0; - } - } - - return Promise.resolve(streamUrls); - } - - function setStreamUrls(items, deviceProfile, maxBitrate, apiClient, startPosition) { - return getStreamUrls(items, deviceProfile, maxBitrate, apiClient, startPosition).then(function (streamUrls) { - for (var i = 0, length = items.length; i < length; i++) { - var item = items[i]; - var streamUrl = streamUrls[i]; - - if (streamUrl) { - item.PresetMediaSource = { - StreamUrl: streamUrl, - Id: item.Id, - MediaStreams: [], - RunTimeTicks: item.RunTimeTicks - }; - } - } - }); - } - - function getPlaybackInfo(player, - apiClient, - item, - deviceProfile, - maxBitrate, - startPosition, - isPlayback, - mediaSourceId, - audioStreamIndex, - subtitleStreamIndex, - liveStreamId, - enableDirectPlay, - enableDirectStream, - allowVideoStreamCopy, - allowAudioStreamCopy) { - if (!itemHelper.isLocalItem(item) && item.MediaType === 'Audio') { - return Promise.resolve({ - MediaSources: [ - { - StreamUrl: getAudioStreamUrlFromDeviceProfile(item, deviceProfile, maxBitrate, apiClient, startPosition), - Id: item.Id, - MediaStreams: [], - RunTimeTicks: item.RunTimeTicks - }] - }); - } - - if (item.PresetMediaSource) { - return Promise.resolve({ - MediaSources: [item.PresetMediaSource] - }); - } - - var itemId = item.Id; - - var query = { - UserId: apiClient.getCurrentUserId(), - StartTimeTicks: startPosition || 0 - }; - - if (isPlayback) { - query.IsPlayback = true; - query.AutoOpenLiveStream = true; - } else { - query.IsPlayback = false; - query.AutoOpenLiveStream = false; - } - - if (audioStreamIndex != null) { - query.AudioStreamIndex = audioStreamIndex; - } - if (subtitleStreamIndex != null) { - query.SubtitleStreamIndex = subtitleStreamIndex; - } - if (enableDirectPlay != null) { - query.EnableDirectPlay = enableDirectPlay; - } - - if (enableDirectStream != null) { - query.EnableDirectStream = enableDirectStream; - } - if (allowVideoStreamCopy != null) { - query.AllowVideoStreamCopy = allowVideoStreamCopy; - } - if (allowAudioStreamCopy != null) { - query.AllowAudioStreamCopy = allowAudioStreamCopy; - } - if (mediaSourceId) { - query.MediaSourceId = mediaSourceId; - } - if (liveStreamId) { - query.LiveStreamId = liveStreamId; - } - if (maxBitrate) { - query.MaxStreamingBitrate = maxBitrate; - } - if (player.enableMediaProbe && !player.enableMediaProbe(item)) { - query.EnableMediaProbe = false; - } - - // lastly, enforce player overrides for special situations - if (query.EnableDirectStream !== false) { - if (player.supportsPlayMethod && !player.supportsPlayMethod('DirectStream', item)) { - query.EnableDirectStream = false; - } - } - - if (player.getDirectPlayProtocols) { - query.DirectPlayProtocols = player.getDirectPlayProtocols(); - } - - return apiClient.getPlaybackInfo(itemId, query, deviceProfile); - } - - function getOptimalMediaSource(apiClient, item, versions) { - var promises = versions.map(function (v) { - return supportsDirectPlay(apiClient, item, v); - }); - - if (!promises.length) { - return Promise.reject(); - } - - return Promise.all(promises).then(function (results) { - for (var i = 0, length = versions.length; i < length; i++) { - versions[i].enableDirectPlay = results[i] || false; - } - var optimalVersion = versions.filter(function (v) { - return v.enableDirectPlay; - })[0]; - - if (!optimalVersion) { - optimalVersion = versions.filter(function (v) { - return v.SupportsDirectStream; - })[0]; - } - - optimalVersion = optimalVersion || versions.filter(function (s) { - return s.SupportsTranscoding; - })[0]; - - return optimalVersion || versions[0]; - }); - } - - function getLiveStream(player, apiClient, item, playSessionId, deviceProfile, maxBitrate, startPosition, mediaSource, audioStreamIndex, subtitleStreamIndex) { - var postData = { - DeviceProfile: deviceProfile, - OpenToken: mediaSource.OpenToken - }; - - var query = { - UserId: apiClient.getCurrentUserId(), - StartTimeTicks: startPosition || 0, - ItemId: item.Id, - PlaySessionId: playSessionId - }; - - if (maxBitrate) { - query.MaxStreamingBitrate = maxBitrate; - } - if (audioStreamIndex != null) { - query.AudioStreamIndex = audioStreamIndex; - } - if (subtitleStreamIndex != null) { - query.SubtitleStreamIndex = subtitleStreamIndex; - } - - // lastly, enforce player overrides for special situations - if (query.EnableDirectStream !== false) { - if (player.supportsPlayMethod && !player.supportsPlayMethod('DirectStream', item)) { - query.EnableDirectStream = false; - } - } - - return apiClient.ajax({ - url: apiClient.getUrl('LiveStreams/Open', query), - type: 'POST', - data: JSON.stringify(postData), - contentType: 'application/json', - dataType: 'json' - - }); - } - - function isHostReachable(mediaSource, apiClient) { - if (mediaSource.IsRemote) { return Promise.resolve(true); } - return apiClient.getEndpointInfo().then(function (endpointInfo) { - if (endpointInfo.IsInNetwork) { - if (!endpointInfo.IsLocal) { - var path = (mediaSource.Path || '').toLowerCase(); - if (path.indexOf('localhost') !== -1 || path.indexOf('127.0.0.1') !== -1) { - // This will only work if the app is on the same machine as the server - return Promise.resolve(false); - } - } + // media source is in network, but connection is out of network + return Promise.resolve(false); + }); +} - return Promise.resolve(true); - } +function supportsDirectPlay(apiClient, item, mediaSource) { + // folder rip hacks due to not yet being supported by the stream building engine + const isFolderRip = mediaSource.VideoType === 'BluRay' || mediaSource.VideoType === 'Dvd' || mediaSource.VideoType === 'HdDvd'; - // media source is in network, but connection is out of network + if (mediaSource.SupportsDirectPlay || isFolderRip) { + if (mediaSource.IsRemote && !apphost.supports('remotevideo')) { return Promise.resolve(false); - }); - } + } - function supportsDirectPlay(apiClient, item, mediaSource) { - // folder rip hacks due to not yet being supported by the stream building engine - var isFolderRip = mediaSource.VideoType === 'BluRay' || mediaSource.VideoType === 'Dvd' || mediaSource.VideoType === 'HdDvd'; - - if (mediaSource.SupportsDirectPlay || isFolderRip) { - if (mediaSource.IsRemote && !apphost.supports('remotevideo')) { - return Promise.resolve(false); + if (mediaSource.Protocol === 'Http' && !mediaSource.RequiredHttpHeaders.length) { + // If this is the only way it can be played, then allow it + if (!mediaSource.SupportsDirectStream && !mediaSource.SupportsTranscoding) { + return Promise.resolve(true); + } else { + return isHostReachable(mediaSource, apiClient); } + } else if (mediaSource.Protocol === 'File') { + return new Promise(function (resolve, reject) { + // Determine if the file can be accessed directly + import('filesystem').then(({ default: filesystem }) => { + const method = isFolderRip ? + 'directoryExists' : + 'fileExists'; - if (mediaSource.Protocol === 'Http' && !mediaSource.RequiredHttpHeaders.length) { - // If this is the only way it can be played, then allow it - if (!mediaSource.SupportsDirectStream && !mediaSource.SupportsTranscoding) { - return Promise.resolve(true); - } else { - return isHostReachable(mediaSource, apiClient); - } - } else if (mediaSource.Protocol === 'File') { - return new Promise(function (resolve, reject) { - // Determine if the file can be accessed directly - require(['filesystem'], function (filesystem) { - var method = isFolderRip ? - 'directoryExists' : - 'fileExists'; - - filesystem[method](mediaSource.Path).then(function () { - resolve(true); - }, function () { - resolve(false); - }); + filesystem[method](mediaSource.Path).then(function () { + resolve(true); + }, function () { + resolve(false); }); }); - } - } - - return Promise.resolve(false); - } - - function validatePlaybackInfoResult(instance, result) { - if (result.ErrorCode) { - showPlaybackInfoErrorMessage(instance, result.ErrorCode); - return false; - } - - return true; - } - - function showPlaybackInfoErrorMessage(instance, errorCode, playNextTrack) { - require(['alert'], function (alert) { - alert.default({ - text: globalize.translate('PlaybackError' + errorCode), - title: globalize.translate('HeaderPlaybackError') - }).then(function () { - if (playNextTrack) { - instance.nextTrack(); - } }); + } + } + + return Promise.resolve(false); +} + +function validatePlaybackInfoResult(instance, result) { + if (result.ErrorCode) { + showPlaybackInfoErrorMessage(instance, result.ErrorCode); + return false; + } + + return true; +} + +function showPlaybackInfoErrorMessage(instance, errorCode, playNextTrack) { + import('alert').then(({ default: alert }) => { + alert({ + text: globalize.translate('PlaybackError' + errorCode), + title: globalize.translate('HeaderPlaybackError') + }).then(function () { + if (playNextTrack) { + instance.nextTrack(); + } }); + }); +} + +function normalizePlayOptions(playOptions) { + playOptions.fullscreen = playOptions.fullscreen !== false; +} + +function truncatePlayOptions(playOptions) { + return { + fullscreen: playOptions.fullscreen, + mediaSourceId: playOptions.mediaSourceId, + audioStreamIndex: playOptions.audioStreamIndex, + subtitleStreamIndex: playOptions.subtitleStreamIndex, + startPositionTicks: playOptions.startPositionTicks + }; +} + +function getNowPlayingItemForReporting(player, item, mediaSource) { + const nowPlayingItem = Object.assign({}, item); + + if (mediaSource) { + nowPlayingItem.RunTimeTicks = mediaSource.RunTimeTicks; + nowPlayingItem.MediaStreams = mediaSource.MediaStreams; + + // not needed + nowPlayingItem.MediaSources = null; } - function normalizePlayOptions(playOptions) { - playOptions.fullscreen = playOptions.fullscreen !== false; + nowPlayingItem.RunTimeTicks = nowPlayingItem.RunTimeTicks || player.duration() * 10000; + + return nowPlayingItem; +} + +function displayPlayerIndividually(player) { + return !player.isLocalPlayer; +} + +function createTarget(instance, player) { + return { + name: player.name, + id: player.id, + playerName: player.name, + playableMediaTypes: ['Audio', 'Video', 'Photo', 'Book'].map(player.canPlayMediaType), + isLocalPlayer: player.isLocalPlayer, + supportedCommands: instance.getSupportedCommands(player) + }; +} + +function getPlayerTargets(player) { + if (player.getTargets) { + return player.getTargets(); } - function truncatePlayOptions(playOptions) { - return { - fullscreen: playOptions.fullscreen, - mediaSourceId: playOptions.mediaSourceId, - audioStreamIndex: playOptions.audioStreamIndex, - subtitleStreamIndex: playOptions.subtitleStreamIndex, - startPositionTicks: playOptions.startPositionTicks - }; - } + return Promise.resolve([createTarget(player)]); +} - function getNowPlayingItemForReporting(player, item, mediaSource) { - var nowPlayingItem = Object.assign({}, item); +function sortPlayerTargets(a, b) { + let aVal = a.isLocalPlayer ? 0 : 1; + let bVal = b.isLocalPlayer ? 0 : 1; - if (mediaSource) { - nowPlayingItem.RunTimeTicks = mediaSource.RunTimeTicks; - nowPlayingItem.MediaStreams = mediaSource.MediaStreams; + aVal = aVal.toString() + a.name; + bVal = bVal.toString() + b.name; - // not needed - nowPlayingItem.MediaSources = null; - } + return aVal.localeCompare(bVal); +} - nowPlayingItem.RunTimeTicks = nowPlayingItem.RunTimeTicks || player.duration() * 10000; +class PlaybackManager { + constructor() { + const self = this; - return nowPlayingItem; - } - - function displayPlayerIndividually(player) { - return !player.isLocalPlayer; - } - - function createTarget(instance, player) { - return { - name: player.name, - id: player.id, - playerName: player.name, - playableMediaTypes: ['Audio', 'Video', 'Photo', 'Book'].map(player.canPlayMediaType), - isLocalPlayer: player.isLocalPlayer, - supportedCommands: instance.getSupportedCommands(player) - }; - } - - function getPlayerTargets(player) { - if (player.getTargets) { - return player.getTargets(); - } - - return Promise.resolve([createTarget(player)]); - } - - function sortPlayerTargets(a, b) { - var aVal = a.isLocalPlayer ? 0 : 1; - var bVal = b.isLocalPlayer ? 0 : 1; - - aVal = aVal.toString() + a.name; - bVal = bVal.toString() + b.name; - - return aVal.localeCompare(bVal); - } - - function PlaybackManager() { - var self = this; - - var players = []; - var currentTargetInfo; - var currentPairingId = null; + const players = []; + let currentTargetInfo; + let currentPairingId = null; this._playNextAfterEnded = true; - var playerStates = {}; + const playerStates = {}; this._playQueueManager = new PlayQueueManager(); @@ -736,7 +745,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.currentItem(); } - var data = getPlayerData(player); + const data = getPlayerData(player); return data.streamInfo ? data.streamInfo.item : null; }; @@ -749,7 +758,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.currentMediaSource(); } - var data = getPlayerData(player); + const data = getPlayerData(player); return data.streamInfo ? data.streamInfo.mediaSource : null; }; @@ -762,7 +771,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.playMethod(); } - var data = getPlayerData(player); + const data = getPlayerData(player); return data.streamInfo ? data.streamInfo.playMethod : null; }; @@ -775,21 +784,20 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.playSessionId(); } - var data = getPlayerData(player); + const data = getPlayerData(player); return data.streamInfo ? data.streamInfo.playSessionId : null; }; self.getPlayerInfo = function () { - var player = self._currentPlayer; + const player = self._currentPlayer; if (!player) { return null; } - var target = currentTargetInfo || {}; + const target = currentTargetInfo || {}; return { - name: player.name, isLocalPlayer: player.isLocalPlayer, id: target.id, @@ -845,7 +853,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla currentPairingId = targetInfo.id; - var promise = player.tryPair ? + const promise = player.tryPair ? player.tryPair(targetInfo) : Promise.resolve(); @@ -863,11 +871,11 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }; self.getTargets = function () { - var promises = players.filter(displayPlayerIndividually).map(getPlayerTargets); + const promises = players.filter(displayPlayerIndividually).map(getPlayerTargets); return Promise.all(promises).then(function (responses) { return connectionManager.currentApiClient().getCurrentUser().then(function (user) { - var targets = []; + const targets = []; targets.push({ name: globalize.translate('HeaderMyDevice'), @@ -881,10 +889,10 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla user: user }); - for (var i = 0; i < responses.length; i++) { - var subTargets = responses[i]; + for (let i = 0; i < responses.length; i++) { + const subTargets = responses[i]; - for (var j = 0; j < subTargets.length; j++) { + for (let j = 0; j < subTargets.length; j++) { targets.push(subTargets[j]); } } @@ -899,7 +907,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla throw new Error('player cannot be null'); } - var index = getPlayerData(player).subtitleStreamIndex; + const index = getPlayerData(player).subtitleStreamIndex; if (index == null || index === -1) { return null; @@ -928,7 +936,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }; function removeCurrentPlayer(player) { - var previousPlayer = self._currentPlayer; + const previousPlayer = self._currentPlayer; if (!previousPlayer || player.id === previousPlayer.id) { setCurrentPlayerInternal(null); @@ -936,8 +944,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function setCurrentPlayerInternal(player, targetInfo) { - var previousPlayer = self._currentPlayer; - var previousTargetInfo = currentTargetInfo; + const previousPlayer = self._currentPlayer; + const previousTargetInfo = currentTargetInfo; if (player && !targetInfo && player.isLocalPlayer) { targetInfo = createTarget(self, player); @@ -988,7 +996,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } if (self.isPlaying(player)) { - var playerData = getPlayerData(player); + const playerData = getPlayerData(player); return playerData.streamInfo.mediaType === mediaType; } @@ -1027,7 +1035,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } self.canPlay = function (item) { - var itemType = item.Type; + const itemType = item.Type; if (itemType === 'PhotoAlbum' || itemType === 'MusicGenre' || itemType === 'Season' || itemType === 'Series' || itemType === 'BoxSet' || itemType === 'MusicAlbum' || itemType === 'MusicArtist' || itemType === 'Playlist') { return true; @@ -1057,12 +1065,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla player = player || self._currentPlayer; if (player) { - var current = self.getAspectRatio(player); + const current = self.getAspectRatio(player); - var supported = self.getSupportedAspectRatios(player); + const supported = self.getSupportedAspectRatios(player); - var index = -1; - for (var i = 0, length = supported.length; i < length; i++) { + let index = -1; + for (let i = 0, length = supported.length; i < length; i++) { if (supported[i].id === current) { index = i; break; @@ -1104,7 +1112,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } }; - var brightnessOsdLoaded; + let brightnessOsdLoaded; self.setBrightness = function (val, player) { player = player || self._currentPlayer; @@ -1112,7 +1120,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (!brightnessOsdLoaded) { brightnessOsdLoaded = true; // TODO: Have this trigger an event instead to get the osd out of here - require(['brightnessOsd']); + import('brightnessOsd').then(); } player.setBrightness(val); } @@ -1168,11 +1176,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return; } - var currentMediaSource = self.currentMediaSource(player); - var mediaStreams = []; - var i; - var length; - for (i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) { + const currentMediaSource = self.currentMediaSource(player); + const mediaStreams = []; + for (let i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) { if (currentMediaSource.MediaStreams[i].Type === 'Audio') { mediaStreams.push(currentMediaSource.MediaStreams[i]); } @@ -1183,16 +1189,16 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return; } - var currentStreamIndex = self.getAudioStreamIndex(player); - var indexInList = -1; - for (i = 0, length = mediaStreams.length; i < length; i++) { + const currentStreamIndex = self.getAudioStreamIndex(player); + let indexInList = -1; + for (let i = 0, length = mediaStreams.length; i < length; i++) { if (mediaStreams[i].Index === currentStreamIndex) { indexInList = i; break; } } - var nextIndex = indexInList + 1; + let nextIndex = indexInList + 1; if (nextIndex >= mediaStreams.length) { nextIndex = 0; } @@ -1212,11 +1218,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return; } - var currentMediaSource = self.currentMediaSource(player); - var mediaStreams = []; - var i; - var length; - for (i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) { + const currentMediaSource = self.currentMediaSource(player); + const mediaStreams = []; + for (let i = 0, length = currentMediaSource.MediaStreams.length; i < length; i++) { if (currentMediaSource.MediaStreams[i].Type === 'Subtitle') { mediaStreams.push(currentMediaSource.MediaStreams[i]); } @@ -1227,16 +1231,16 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return; } - var currentStreamIndex = self.getSubtitleStreamIndex(player); - var indexInList = -1; - for (i = 0, length = mediaStreams.length; i < length; i++) { + const currentStreamIndex = self.getSubtitleStreamIndex(player); + let indexInList = -1; + for (let i = 0, length = mediaStreams.length; i < length; i++) { if (mediaStreams[i].Index === currentStreamIndex) { indexInList = i; break; } } - var nextIndex = indexInList + 1; + let nextIndex = indexInList + 1; if (nextIndex >= mediaStreams.length) { nextIndex = -1; } @@ -1256,12 +1260,10 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }; function isAudioStreamSupported(mediaSource, index, deviceProfile) { - var mediaStream; - var i; - var length; - var mediaStreams = mediaSource.MediaStreams; + let mediaStream; + const mediaStreams = mediaSource.MediaStreams; - for (i = 0, length = mediaStreams.length; i < length; i++) { + for (let i = 0, length = mediaStreams.length; i < length; i++) { if (mediaStreams[i].Type === 'Audio' && mediaStreams[i].Index === index) { mediaStream = mediaStreams[i]; break; @@ -1272,13 +1274,13 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return false; } - var codec = (mediaStream.Codec || '').toLowerCase(); + const codec = (mediaStream.Codec || '').toLowerCase(); if (!codec) { return false; } - var profiles = deviceProfile.DirectPlayProfiles || []; + const profiles = deviceProfile.DirectPlayProfiles || []; return profiles.filter(function (p) { if (p.Type === 'Video') { @@ -1327,7 +1329,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla apiClient = connectionManager.currentApiClient(); } - var endpointInfo = apiClient.getSavedEndpointInfo() || {}; + const endpointInfo = apiClient.getSavedEndpointInfo() || {}; return appSettings.maxStreamingBitrate(endpointInfo.IsInNetwork, mediaType); } @@ -1338,16 +1340,16 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.getMaxStreamingBitrate(); } - var playerData = getPlayerData(player); + const playerData = getPlayerData(player); if (playerData.maxStreamingBitrate) { return playerData.maxStreamingBitrate; } - var mediaType = playerData.streamInfo ? playerData.streamInfo.mediaType : null; - var currentItem = self.currentItem(player); + const mediaType = playerData.streamInfo ? playerData.streamInfo.mediaType : null; + const currentItem = self.currentItem(player); - var apiClient = currentItem ? connectionManager.getApiClient(currentItem.ServerId) : connectionManager.currentApiClient(); + const apiClient = currentItem ? connectionManager.getApiClient(currentItem.ServerId) : connectionManager.currentApiClient(); return getSavedMaxStreamingBitrate(apiClient, mediaType); }; @@ -1357,12 +1359,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.enableAutomaticBitrateDetection(); } - var playerData = getPlayerData(player); - var mediaType = playerData.streamInfo ? playerData.streamInfo.mediaType : null; - var currentItem = self.currentItem(player); + const playerData = getPlayerData(player); + const mediaType = playerData.streamInfo ? playerData.streamInfo.mediaType : null; + const currentItem = self.currentItem(player); - var apiClient = currentItem ? connectionManager.getApiClient(currentItem.ServerId) : connectionManager.currentApiClient(); - var endpointInfo = apiClient.getSavedEndpointInfo() || {}; + const apiClient = currentItem ? connectionManager.getApiClient(currentItem.ServerId) : connectionManager.currentApiClient(); + const endpointInfo = apiClient.getSavedEndpointInfo() || {}; return appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork, mediaType); }; @@ -1373,13 +1375,13 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.setMaxStreamingBitrate(options); } - var apiClient = connectionManager.getApiClient(self.currentItem(player).ServerId); + const apiClient = connectionManager.getApiClient(self.currentItem(player).ServerId); apiClient.getEndpointInfo().then(function (endpointInfo) { - var playerData = getPlayerData(player); - var mediaType = playerData.streamInfo ? playerData.streamInfo.mediaType : null; + const playerData = getPlayerData(player); + const mediaType = playerData.streamInfo ? playerData.streamInfo.mediaType : null; - var promise; + let promise; if (options.enableAutomaticBitrateDetection) { appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork, mediaType, true); promise = apiClient.detectBitrate(true); @@ -1472,17 +1474,17 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.setSubtitleStreamIndex(index); } - var currentStream = getCurrentSubtitleStream(player); + const currentStream = getCurrentSubtitleStream(player); - var newStream = getSubtitleStream(player, index); + const newStream = getSubtitleStream(player, index); if (!currentStream && !newStream) { return; } - var selectedTrackElementIndex = -1; + let selectedTrackElementIndex = -1; - var currentPlayMethod = self.playMethod(player); + const currentPlayMethod = self.playMethod(player); if (currentStream && !newStream) { if (getDeliveryMethod(currentStream) === 'Encode' || (getDeliveryMethod(currentStream) === 'Embed' && currentPlayMethod === 'Transcode')) { @@ -1519,30 +1521,30 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla getPlayerData(player).subtitleStreamIndex = index; }; - self.supportSubtitleOffset = function(player) { + self.supportSubtitleOffset = function (player) { player = player || self._currentPlayer; return player && 'setSubtitleOffset' in player; }; - self.enableShowingSubtitleOffset = function(player) { + self.enableShowingSubtitleOffset = function (player) { player = player || self._currentPlayer; player.enableShowingSubtitleOffset(); }; - self.disableShowingSubtitleOffset = function(player) { + self.disableShowingSubtitleOffset = function (player) { player = player || self._currentPlayer; if (player.disableShowingSubtitleOffset) { player.disableShowingSubtitleOffset(); } }; - self.isShowingSubtitleOffsetEnabled = function(player) { + self.isShowingSubtitleOffsetEnabled = function (player) { player = player || self._currentPlayer; return player.isShowingSubtitleOffsetEnabled(); }; - self.isSubtitleStreamExternal = function(index, player) { - var stream = getSubtitleStream(player, index); + self.isSubtitleStreamExternal = function (index, player) { + const stream = getSubtitleStream(player, index); return stream ? getDeliveryMethod(stream) === 'External' : false; }; @@ -1553,15 +1555,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } }; - self.getPlayerSubtitleOffset = function(player) { + self.getPlayerSubtitleOffset = function (player) { player = player || self._currentPlayer; if (player.getSubtitleOffset) { return player.getSubtitleOffset(); } }; - self.canHandleOffsetOnCurrentSubtitle = function(player) { - var index = self.getSubtitleStreamIndex(player); + self.canHandleOffsetOnCurrentSubtitle = function (player) { + const index = self.getSubtitleStreamIndex(player); return index !== -1 && self.isSubtitleStreamExternal(index, player); }; @@ -1590,7 +1592,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } } - var ticks = getCurrentTicks(player) + offsetTicks; + const ticks = getCurrentTicks(player) + offsetTicks; return this.seek(ticks, player); }; @@ -1600,9 +1602,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla throw new Error('player cannot be null'); } - var playerData = getPlayerData(player); + const playerData = getPlayerData(player); - var currentSrc = (playerData.streamInfo.url || '').toLowerCase(); + const currentSrc = (playerData.streamInfo.url || '').toLowerCase(); if (currentSrc.indexOf('.m3u8') !== -1) { return true; @@ -1612,7 +1614,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.seekable(); } - var isPlayMethodTranscode = self.playMethod(player) === 'Transcode'; + const isPlayMethodTranscode = self.playMethod(player) === 'Transcode'; if (isPlayMethodTranscode) { return false; @@ -1629,37 +1631,35 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla params = params || {}; - var liveStreamId = getPlayerData(player).streamInfo.liveStreamId; - var lastMediaInfoQuery = getPlayerData(player).streamInfo.lastMediaInfoQuery; + const liveStreamId = getPlayerData(player).streamInfo.liveStreamId; + const lastMediaInfoQuery = getPlayerData(player).streamInfo.lastMediaInfoQuery; - var playSessionId = self.playSessionId(player); + const playSessionId = self.playSessionId(player); - var currentItem = self.currentItem(player); + const currentItem = self.currentItem(player); player.getDeviceProfile(currentItem, { - isRetry: params.EnableDirectPlay === false - }).then(function (deviceProfile) { - var audioStreamIndex = params.AudioStreamIndex == null ? getPlayerData(player).audioStreamIndex : params.AudioStreamIndex; - var subtitleStreamIndex = params.SubtitleStreamIndex == null ? getPlayerData(player).subtitleStreamIndex : params.SubtitleStreamIndex; + const audioStreamIndex = params.AudioStreamIndex == null ? getPlayerData(player).audioStreamIndex : params.AudioStreamIndex; + const subtitleStreamIndex = params.SubtitleStreamIndex == null ? getPlayerData(player).subtitleStreamIndex : params.SubtitleStreamIndex; - var currentMediaSource = self.currentMediaSource(player); - var apiClient = connectionManager.getApiClient(currentItem.ServerId); + let currentMediaSource = self.currentMediaSource(player); + const apiClient = connectionManager.getApiClient(currentItem.ServerId); if (ticks) { ticks = parseInt(ticks); } - var maxBitrate = params.MaxStreamingBitrate || self.getMaxStreamingBitrate(player); + const maxBitrate = params.MaxStreamingBitrate || self.getMaxStreamingBitrate(player); - var currentPlayOptions = currentItem.playOptions || getDefaultPlayOptions(); + const currentPlayOptions = currentItem.playOptions || getDefaultPlayOptions(); getPlaybackInfo(player, apiClient, currentItem, deviceProfile, maxBitrate, ticks, true, currentMediaSource.Id, audioStreamIndex, subtitleStreamIndex, liveStreamId, params.EnableDirectPlay, params.EnableDirectStream, params.AllowVideoStreamCopy, params.AllowAudioStreamCopy).then(function (result) { if (validatePlaybackInfoResult(self, result)) { currentMediaSource = result.MediaSources[0]; - var streamInfo = createStreamInfo(apiClient, currentItem.MediaType, currentItem, currentMediaSource, ticks); + const streamInfo = createStreamInfo(apiClient, currentItem.MediaType, currentItem, currentMediaSource, ticks); streamInfo.fullscreen = currentPlayOptions.fullscreen; streamInfo.lastMediaInfoQuery = lastMediaInfoQuery; @@ -1679,14 +1679,14 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function changeStreamToUrl(apiClient, player, playSessionId, streamInfo, newPositionTicks) { - var playerData = getPlayerData(player); + const playerData = getPlayerData(player); playerData.isChangingStream = true; if (playerData.streamInfo && playSessionId) { apiClient.stopActiveEncodings(playSessionId).then(function () { // Stop the first transcoding afterwards because the player may still send requests to the original url - var afterSetSrc = function () { + const afterSetSrc = function () { apiClient.stopActiveEncodings(playSessionId); }; setSrcIntoPlayer(apiClient, player, streamInfo).then(afterSetSrc, afterSetSrc); @@ -1698,7 +1698,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla function setSrcIntoPlayer(apiClient, player, streamInfo) { return player.play(streamInfo).then(function () { - var playerData = getPlayerData(player); + const playerData = getPlayerData(player); playerData.isChangingStream = false; playerData.streamInfo = streamInfo; @@ -1707,7 +1707,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla sendProgressUpdate(player, 'timeupdate'); }, function (e) { - var playerData = getPlayerData(player); + const playerData = getPlayerData(player); playerData.isChangingStream = false; onPlaybackError.call(player, e, { @@ -1725,12 +1725,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }); } - var firstItem = items[0]; - var promise; + const firstItem = items[0]; + let promise; - var serverId = firstItem.ServerId; + const serverId = firstItem.ServerId; - var queryOptions = options.queryOptions || {}; + const queryOptions = options.queryOptions || {}; if (firstItem.Type === 'Program') { promise = getItemsForPlayback(serverId, { @@ -1758,9 +1758,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla SortBy: options.shuffle ? 'Random' : 'SortName', MediaTypes: 'Photo,Video' }).then(function (result) { - var items = result.Items; + const items = result.Items; - var index = items.map(function (i) { + let index = items.map(function (i) { return i.Id; }).indexOf(firstItem.Id); @@ -1781,7 +1781,6 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla SortBy: options.shuffle ? 'Random' : 'SortName', MediaTypes: 'Photo,Video', Limit: 1000 - }); } else if (firstItem.Type === 'MusicGenre') { promise = getItemsForPlayback(serverId, { @@ -1793,18 +1792,16 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }); } else if (firstItem.IsFolder) { promise = getItemsForPlayback(serverId, mergePlaybackQueries({ - ParentId: firstItem.Id, Filters: 'IsNotFolder', Recursive: true, // These are pre-sorted SortBy: options.shuffle ? 'Random' : (['BoxSet'].indexOf(firstItem.Type) === -1 ? 'SortName' : null), MediaTypes: 'Audio,Video' - }, queryOptions)); } else if (firstItem.Type === 'Episode' && items.length === 1 && getPlayer(firstItem, options).supportsProgress !== false) { promise = new Promise(function (resolve, reject) { - var apiClient = connectionManager.getApiClient(firstItem.ServerId); + const apiClient = connectionManager.getApiClient(firstItem.ServerId); apiClient.getCurrentUser().then(function (user) { if (!user.Configuration.EnableNextEpisodeAutoPlay || !firstItem.SeriesId) { @@ -1817,9 +1814,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla IsMissing: false, UserId: apiClient.getCurrentUserId(), Fields: 'Chapters' - }).then(function (episodesResult) { - var foundItem = false; + let foundItem = false; episodesResult.Items = episodesResult.Items.filter(function (e) { if (foundItem) { return true; @@ -1874,9 +1870,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } return getItemsForPlayback(options.serverId, { - Ids: options.ids.join(',') - }).then(function (result) { return translateItemsForPlayback(result.Items, options).then(function (items) { return playWithIntros(items, options); @@ -1892,7 +1886,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (!player.name) { throw new Error('player name cannot be null'); } - var state = playerStates[player.name]; + let state = playerStates[player.name]; if (!state) { playerStates[player.name] = {}; @@ -1916,7 +1910,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla item = item || self.currentItem(player); mediaSource = mediaSource || self.currentMediaSource(player); - var state = { + const state = { PlayState: {} }; @@ -1974,13 +1968,13 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla throw new Error('player cannot be null'); } - var mediaSource = self.currentMediaSource(player); + const mediaSource = self.currentMediaSource(player); if (mediaSource && mediaSource.RunTimeTicks) { return mediaSource.RunTimeTicks; } - var playerDuration = player.duration(); + let playerDuration = player.duration(); if (playerDuration) { playerDuration *= 10000; @@ -1994,9 +1988,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla throw new Error('player cannot be null'); } - var playerTime = Math.floor(10000 * (player || self._currentPlayer).currentTime()); + let playerTime = Math.floor(10000 * (player || self._currentPlayer).currentTime()); - var streamInfo = getPlayerData(player).streamInfo; + const streamInfo = getPlayerData(player).streamInfo; if (streamInfo) { playerTime += getPlayerData(player).streamInfo.transcodingOffsetTicks || 0; } @@ -2008,8 +2002,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla self.getCurrentTicks = getCurrentTicks; function playOther(items, options, user) { - var playStartIndex = options.startIndex || 0; - var player = getPlayer(items[playStartIndex], options); + const playStartIndex = options.startIndex || 0; + const player = getPlayer(items[playStartIndex], options); loading.hide(); @@ -2019,8 +2013,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function playWithIntros(items, options, user) { - var playStartIndex = options.startIndex || 0; - var firstItem = items[playStartIndex]; + let playStartIndex = options.startIndex || 0; + let firstItem = items[playStartIndex]; // If index was bad, reset it if (!firstItem) { @@ -2038,11 +2032,11 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return playOther(items, options, user); } - var apiClient = connectionManager.getApiClient(firstItem.ServerId); + const apiClient = connectionManager.getApiClient(firstItem.ServerId); return getIntros(firstItem, apiClient, options).then(function (introsResult) { - var introItems = introsResult.Items; - var introPlayOptions; + const introItems = introsResult.Items; + let introPlayOptions; firstItem.playOptions = truncatePlayOptions(options); @@ -2098,9 +2092,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } // TODO: This should be the media type requested, not the original media type - var mediaType = item.MediaType; + const mediaType = item.MediaType; - var onBitrateDetectionFailure = function () { + const onBitrateDetectionFailure = function () { return playAfterBitrateDetect(getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId), mediaType), item, playOptions, onPlaybackStartedFn); }; @@ -2108,7 +2102,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return onBitrateDetectionFailure(); } - var apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = connectionManager.getApiClient(item.ServerId); apiClient.getEndpointInfo().then(function (endpointInfo) { if ((mediaType === 'Video' || mediaType === 'Audio') && appSettings.enableAutomaticBitrateDetection(endpointInfo.IsInNetwork, mediaType)) { return apiClient.detectBitrate().then(function (bitrate) { @@ -2124,7 +2118,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function onInterceptorRejection() { - var player = self._currentPlayer; + const player = self._currentPlayer; if (player) { destroyPlayer(player); @@ -2142,7 +2136,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla function runInterceptors(item, playOptions) { return new Promise(function (resolve, reject) { - var interceptors = pluginManager.ofType('preplayintercept'); + const interceptors = pluginManager.ofType('preplayintercept'); interceptors.sort(function (a, b) { return (a.order || 0) - (b.order || 0); @@ -2155,7 +2149,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla loading.hide(); - var options = Object.assign({}, playOptions); + const options = Object.assign({}, playOptions); options.mediaType = item.MediaType; options.item = item; @@ -2170,7 +2164,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return; } - var interceptor = interceptors[index]; + const interceptor = interceptors[index]; interceptor.intercept(options).then(function () { runNextPrePlay(interceptors, index + 1, options, resolve, reject); @@ -2193,12 +2187,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function playAfterBitrateDetect(maxBitrate, item, playOptions, onPlaybackStartedFn) { - var startPosition = playOptions.startPositionTicks; + const startPosition = playOptions.startPositionTicks; - var player = getPlayer(item, playOptions); - var activePlayer = self._currentPlayer; + const player = getPlayer(item, playOptions); + const activePlayer = self._currentPlayer; - var promise; + let promise; if (activePlayer) { // TODO: if changing players within the same playlist, this will cause nextItem to be null @@ -2210,7 +2204,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla if (!isServerItem(item) || item.MediaType === 'Book') { return promise.then(function () { - var streamInfo = createStreamInfoFromUrlItem(item); + const streamInfo = createStreamInfoFromUrlItem(item); streamInfo.fullscreen = playOptions.fullscreen; getPlayerData(player).isChangingStream = false; return player.play(streamInfo).then(function () { @@ -2225,13 +2219,13 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } return Promise.all([promise, player.getDeviceProfile(item)]).then(function (responses) { - var deviceProfile = responses[1]; + const deviceProfile = responses[1]; - var apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = connectionManager.getApiClient(item.ServerId); - var mediaSourceId = playOptions.mediaSourceId; - var audioStreamIndex = playOptions.audioStreamIndex; - var subtitleStreamIndex = playOptions.subtitleStreamIndex; + const mediaSourceId = playOptions.mediaSourceId; + const audioStreamIndex = playOptions.audioStreamIndex; + const subtitleStreamIndex = playOptions.subtitleStreamIndex; if (player && !enableLocalPlaylistManagement(player)) { return sendPlaybackListToPlayer(player, playOptions.items, deviceProfile, maxBitrate, apiClient, startPosition, mediaSourceId, audioStreamIndex, subtitleStreamIndex, playOptions.startIndex); @@ -2241,7 +2235,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla playOptions.items = null; return getPlaybackMediaSource(player, apiClient, deviceProfile, maxBitrate, item, startPosition, mediaSourceId, audioStreamIndex, subtitleStreamIndex).then(function (mediaSource) { - var streamInfo = createStreamInfo(apiClient, item.MediaType, item, mediaSource, startPosition); + const streamInfo = createStreamInfo(apiClient, item.MediaType, item, mediaSource, startPosition); streamInfo.fullscreen = playOptions.fullscreen; @@ -2269,14 +2263,14 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla self.getPlaybackInfo = function (item, options) { options = options || {}; - var startPosition = options.startPositionTicks || 0; - var mediaType = options.mediaType || item.MediaType; - var player = getPlayer(item, options); - var apiClient = connectionManager.getApiClient(item.ServerId); + const startPosition = options.startPositionTicks || 0; + const mediaType = options.mediaType || item.MediaType; + const player = getPlayer(item, options); + const apiClient = connectionManager.getApiClient(item.ServerId); // Call this just to ensure the value is recorded, it is needed with getSavedMaxStreamingBitrate return apiClient.getEndpointInfo().then(function () { - var maxBitrate = getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId), mediaType); + const maxBitrate = getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId), mediaType); return player.getDeviceProfile(item).then(function (deviceProfile) { return getPlaybackMediaSource(player, apiClient, deviceProfile, maxBitrate, item, startPosition, options.mediaSourceId, options.audioStreamIndex, options.subtitleStreamIndex).then(function (mediaSource) { @@ -2288,15 +2282,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla self.getPlaybackMediaSources = function (item, options) { options = options || {}; - var startPosition = options.startPositionTicks || 0; - var mediaType = options.mediaType || item.MediaType; + const startPosition = options.startPositionTicks || 0; + const mediaType = options.mediaType || item.MediaType; // TODO: Remove the true forceLocalPlayer hack - var player = getPlayer(item, options, true); - var apiClient = connectionManager.getApiClient(item.ServerId); + const player = getPlayer(item, options, true); + const apiClient = connectionManager.getApiClient(item.ServerId); // Call this just to ensure the value is recorded, it is needed with getSavedMaxStreamingBitrate return apiClient.getEndpointInfo().then(function () { - var maxBitrate = getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId), mediaType); + const maxBitrate = getSavedMaxStreamingBitrate(connectionManager.getApiClient(item.ServerId), mediaType); return player.getDeviceProfile(item).then(function (deviceProfile) { return getPlaybackInfo(player, apiClient, item, deviceProfile, maxBitrate, startPosition, false, null, null, null, null).then(function (playbackInfoResult) { @@ -2307,16 +2301,16 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }; function createStreamInfo(apiClient, type, item, mediaSource, startPosition) { - var mediaUrl; - var contentType; - var transcodingOffsetTicks = 0; - var playerStartPositionTicks = startPosition; - var liveStreamId = mediaSource.LiveStreamId; + let mediaUrl; + let contentType; + let transcodingOffsetTicks = 0; + const playerStartPositionTicks = startPosition; + const liveStreamId = mediaSource.LiveStreamId; - var playMethod = 'Transcode'; + let playMethod = 'Transcode'; - var mediaSourceContainer = (mediaSource.Container || '').toLowerCase(); - var directOptions; + const mediaSourceContainer = (mediaSource.Container || '').toLowerCase(); + let directOptions; if (type === 'Video' || type === 'Audio') { contentType = getMimeType(type.toLowerCase(), mediaSourceContainer); @@ -2345,7 +2339,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla directOptions.LiveStreamId = mediaSource.LiveStreamId; } - var prefix = type === 'Video' ? 'Videos' : 'Audio'; + const prefix = type === 'Video' ? 'Videos' : 'Audio'; mediaUrl = apiClient.getUrl(prefix + '/' + item.Id + '/stream.' + mediaSourceContainer, directOptions); playMethod = 'DirectStream'; @@ -2374,7 +2368,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla playMethod = 'DirectPlay'; } - var resultInfo = { + const resultInfo = { url: mediaUrl, mimeType: contentType, transcodingOffsetTicks: transcodingOffsetTicks, @@ -2391,7 +2385,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla title: item.Name }; - var backdropUrl = backdropImageUrl(apiClient, item, {}); + const backdropUrl = backdropImageUrl(apiClient, item, {}); if (backdropUrl) { resultInfo.backdropUrl = backdropUrl; } @@ -2400,19 +2394,19 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function getTextTracks(apiClient, item, mediaSource) { - var subtitleStreams = mediaSource.MediaStreams.filter(function (s) { + const subtitleStreams = mediaSource.MediaStreams.filter(function (s) { return s.Type === 'Subtitle'; }); - var textStreams = subtitleStreams.filter(function (s) { + const textStreams = subtitleStreams.filter(function (s) { return s.DeliveryMethod === 'External'; }); - var tracks = []; + const tracks = []; - for (var i = 0, length = textStreams.length; i < length; i++) { - var textStream = textStreams[i]; - var textStreamUrl; + for (let i = 0, length = textStreams.length; i < length; i++) { + const textStream = textStreams[i]; + let textStreamUrl; if (itemHelper.isLocalItem(item)) { textStreamUrl = textStream.Path; @@ -2459,7 +2453,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function getPlayer(item, playOptions, forceLocalPlayers) { - var serverItem = isServerItem(item); + const serverItem = isServerItem(item); return getAutomaticPlayers(self, forceLocalPlayers).filter(function (p) { if (p.canPlayMediaType(item.MediaType)) { if (serverItem) { @@ -2482,11 +2476,11 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.setCurrentPlaylistItem(playlistItemId); } - var newItem; - var newItemIndex; - var playlist = self._playQueueManager.getPlaylist(); + let newItem; + let newItemIndex; + const playlist = self._playQueueManager.getPlaylist(); - for (var i = 0, length = playlist.length; i < length; i++) { + for (let i = 0, length = playlist.length; i < length; i++) { if (playlist[i].PlaylistItemId === playlistItemId) { newItem = playlist[i]; newItemIndex = i; @@ -2495,7 +2489,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } if (newItem) { - var newItemPlayOptions = newItem.playOptions || getDefaultPlayOptions(); + const newItemPlayOptions = newItem.playOptions || getDefaultPlayOptions(); playInternal(newItem, newItemPlayOptions, function () { setPlaylistState(newItem.PlaylistItemId, newItemIndex); @@ -2513,18 +2507,19 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.removeFromPlaylist(playlistItemIds); } - var removeResult = self._playQueueManager.removeFromPlaylist(playlistItemIds); + const removeResult = self._playQueueManager.removeFromPlaylist(playlistItemIds); if (removeResult.result === 'empty') { return self.stop(player); } - var isCurrentIndex = removeResult.isCurrentIndex; + const isCurrentIndex = removeResult.isCurrentIndex; events.trigger(player, 'playlistitemremove', [ { playlistItemIds: playlistItemIds - }]); + } + ]); if (isCurrentIndex) { return self.setCurrentPlaylistItem(self._playQueueManager.getPlaylist()[0].PlaylistItemId, player); @@ -2539,7 +2534,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.movePlaylistItem(playlistItemId, newIndex); } - var moveResult = self._playQueueManager.movePlaylistItem(playlistItemId, newIndex); + const moveResult = self._playQueueManager.movePlaylistItem(playlistItemId, newIndex); if (moveResult.result === 'noop') { return; @@ -2549,7 +2544,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla { playlistItemId: moveResult.playlistItemId, newIndex: moveResult.newIndex - }]); + } + ]); }; self.getCurrentPlaylistIndex = function (player) { @@ -2586,12 +2582,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.nextTrack(); } - var newItemInfo = self._playQueueManager.getNextItemInfo(); + const newItemInfo = self._playQueueManager.getNextItemInfo(); if (newItemInfo) { console.debug('playing next track'); - var newItemPlayOptions = newItemInfo.item.playOptions || getDefaultPlayOptions(); + const newItemPlayOptions = newItemInfo.item.playOptions || getDefaultPlayOptions(); playInternal(newItemInfo.item, newItemPlayOptions, function () { setPlaylistState(newItemInfo.item.PlaylistItemId, newItemInfo.index); @@ -2605,13 +2601,13 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.previousTrack(); } - var newIndex = self.getCurrentPlaylistIndex(player) - 1; + const newIndex = self.getCurrentPlaylistIndex(player) - 1; if (newIndex >= 0) { - var playlist = self._playQueueManager.getPlaylist(); - var newItem = playlist[newIndex]; + const playlist = self._playQueueManager.getPlaylist(); + const newItem = playlist[newIndex]; if (newItem) { - var newItemPlayOptions = newItem.playOptions || getDefaultPlayOptions(); + const newItemPlayOptions = newItem.playOptions || getDefaultPlayOptions(); newItemPlayOptions.startPositionTicks = 0; playInternal(newItem, newItemPlayOptions, function () { @@ -2647,9 +2643,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } return getItemsForPlayback(options.serverId, { - Ids: options.ids.join(',') - }).then(function (result) { return translateItemsForPlayback(result.Items, options).then(function (items) { // TODO: Handle options.startIndex for photos @@ -2677,10 +2671,10 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return; } - var queueDirectToPlayer = player && !enableLocalPlaylistManagement(player); + const queueDirectToPlayer = player && !enableLocalPlaylistManagement(player); if (queueDirectToPlayer) { - var apiClient = connectionManager.getApiClient(items[0].ServerId); + const apiClient = connectionManager.getApiClient(items[0].ServerId); player.getDeviceProfile(items[0]).then(function (profile) { setStreamUrls(items, profile, self.getMaxStreamingBitrate(player), apiClient, 0).then(function () { @@ -2704,7 +2698,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function onPlayerProgressInterval() { - var player = this; + const player = this; sendProgressUpdate(player, 'timeupdate'); } @@ -2728,7 +2722,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla setCurrentPlayerInternal(player); - var playerData = getPlayerData(player); + const playerData = getPlayerData(player); playerData.streamInfo = streamInfo; @@ -2743,10 +2737,10 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } self._playNextAfterEnded = true; - var isFirstItem = playOptions.isFirstItem; - var fullscreen = playOptions.fullscreen; + const isFirstItem = playOptions.isFirstItem; + const fullscreen = playOptions.fullscreen; - var state = self.getPlayerState(player, streamInfo.item, streamInfo.mediaSource); + const state = self.getPlayerState(player, streamInfo.item, streamInfo.mediaSource); reportPlayback(self, state, player, true, state.NowPlayingItem.ServerId, 'reportPlaybackStart'); @@ -2762,22 +2756,22 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function onPlaybackStartedFromSelfManagingPlayer(e, item, mediaSource) { - var player = this; + const player = this; setCurrentPlayerInternal(player); - var playOptions = item.playOptions || getDefaultPlayOptions(); - var isFirstItem = playOptions.isFirstItem; - var fullscreen = playOptions.fullscreen; + const playOptions = item.playOptions || getDefaultPlayOptions(); + const isFirstItem = playOptions.isFirstItem; + const fullscreen = playOptions.fullscreen; playOptions.isFirstItem = false; - var playerData = getPlayerData(player); + const playerData = getPlayerData(player); playerData.streamInfo = {}; - var streamInfo = playerData.streamInfo; + const streamInfo = playerData.streamInfo; streamInfo.playbackStartTimeTicks = new Date().getTime() * 10000; - var state = self.getPlayerState(player, item, mediaSource); + const state = self.getPlayerState(player, item, mediaSource); reportPlayback(self, state, player, true, state.NowPlayingItem.ServerId, 'reportPlaybackStart'); @@ -2793,15 +2787,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function onPlaybackStoppedFromSelfManagingPlayer(e, playerStopInfo) { - var player = this; + const player = this; stopPlaybackProgressTimer(player); - var state = self.getPlayerState(player, playerStopInfo.item, playerStopInfo.mediaSource); + const state = self.getPlayerState(player, playerStopInfo.item, playerStopInfo.mediaSource); - var nextItem = playerStopInfo.nextItem; - var nextMediaType = playerStopInfo.nextMediaType; + const nextItem = playerStopInfo.nextItem; + const nextMediaType = playerStopInfo.nextMediaType; - var playbackStopInfo = { + const playbackStopInfo = { player: player, state: state, nextItem: (nextItem ? nextItem.item : null), @@ -2810,7 +2804,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla state.NextMediaType = nextMediaType; - var streamInfo = getPlayerData(player).streamInfo; + const streamInfo = getPlayerData(player).streamInfo; // only used internally as a safeguard to avoid reporting other events to the server after playback stopped streamInfo.ended = true; @@ -2826,8 +2820,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla events.trigger(player, 'playbackstop', [state]); events.trigger(self, 'playbackstop', [playbackStopInfo]); - var nextItemPlayOptions = nextItem ? (nextItem.item.playOptions || getDefaultPlayOptions()) : getDefaultPlayOptions(); - var newPlayer = nextItem ? getPlayer(nextItem.item, nextItemPlayOptions) : null; + const nextItemPlayOptions = nextItem ? (nextItem.item.playOptions || getDefaultPlayOptions()) : getDefaultPlayOptions(); + const newPlayer = nextItem ? getPlayer(nextItem.item, nextItemPlayOptions) : null; if (newPlayer !== player) { destroyPlayer(player); @@ -2837,7 +2831,6 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla function enablePlaybackRetryWithTranscoding(streamInfo, errorType, currentlyPreventsVideoStreamCopy, currentlyPreventsAudioStreamCopy) { // mediadecodeerror, medianotsupported, network, servererror - if (streamInfo.mediaSource.SupportsTranscoding && (!currentlyPreventsVideoStreamCopy || !currentlyPreventsAudioStreamCopy)) { return true; } @@ -2846,46 +2839,44 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function onPlaybackError(e, error) { - var player = this; + const player = this; error = error || {}; // network // mediadecodeerror // medianotsupported - var errorType = error.type; + const errorType = error.type; console.debug('playbackmanager playback error type: ' + (errorType || '')); - var streamInfo = error.streamInfo || getPlayerData(player).streamInfo; + const streamInfo = error.streamInfo || getPlayerData(player).streamInfo; if (streamInfo) { - var currentlyPreventsVideoStreamCopy = streamInfo.url.toLowerCase().indexOf('allowvideostreamcopy=false') !== -1; - var currentlyPreventsAudioStreamCopy = streamInfo.url.toLowerCase().indexOf('allowaudiostreamcopy=false') !== -1; + const currentlyPreventsVideoStreamCopy = streamInfo.url.toLowerCase().indexOf('allowvideostreamcopy=false') !== -1; + const currentlyPreventsAudioStreamCopy = streamInfo.url.toLowerCase().indexOf('allowaudiostreamcopy=false') !== -1; // Auto switch to transcoding if (enablePlaybackRetryWithTranscoding(streamInfo, errorType, currentlyPreventsVideoStreamCopy, currentlyPreventsAudioStreamCopy)) { - var startTime = getCurrentTicks(player) || streamInfo.playerStartPositionTicks; + const startTime = getCurrentTicks(player) || streamInfo.playerStartPositionTicks; changeStream(player, startTime, { - // force transcoding EnableDirectPlay: false, EnableDirectStream: false, AllowVideoStreamCopy: false, AllowAudioStreamCopy: currentlyPreventsAudioStreamCopy || currentlyPreventsVideoStreamCopy ? false : null - }); return; } } - var displayErrorCode = 'NoCompatibleStream'; + const displayErrorCode = 'NoCompatibleStream'; onPlaybackStopped.call(player, e, displayErrorCode); } function onPlaybackStopped(e, displayErrorCode) { - var player = this; + const player = this; if (getPlayerData(player).isChangingStream) { return; @@ -2894,15 +2885,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla stopPlaybackProgressTimer(player); // User clicked stop or content ended - var state = self.getPlayerState(player); - var data = getPlayerData(player); - var streamInfo = data.streamInfo; + const state = self.getPlayerState(player); + const data = getPlayerData(player); + const streamInfo = data.streamInfo; - var nextItem = self._playNextAfterEnded ? self._playQueueManager.getNextItemInfo() : null; + const nextItem = self._playNextAfterEnded ? self._playQueueManager.getNextItemInfo() : null; - var nextMediaType = (nextItem ? nextItem.item.MediaType : null); + const nextMediaType = (nextItem ? nextItem.item.MediaType : null); - var playbackStopInfo = { + const playbackStopInfo = { player: player, state: state, nextItem: (nextItem ? nextItem.item : null), @@ -2931,8 +2922,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla events.trigger(player, 'playbackstop', [state]); events.trigger(self, 'playbackstop', [playbackStopInfo]); - var nextItemPlayOptions = nextItem ? (nextItem.item.playOptions || getDefaultPlayOptions()) : getDefaultPlayOptions(); - var newPlayer = nextItem ? getPlayer(nextItem.item, nextItemPlayOptions) : null; + const nextItemPlayOptions = nextItem ? (nextItem.item.playOptions || getDefaultPlayOptions()) : getDefaultPlayOptions(); + const newPlayer = nextItem ? getPlayer(nextItem.item, nextItemPlayOptions) : null; if (newPlayer !== player) { destroyPlayer(player); @@ -2950,12 +2941,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function onPlaybackChanging(activePlayer, newPlayer, newItem) { - var state = self.getPlayerState(activePlayer); + const state = self.getPlayerState(activePlayer); - var serverId = self.currentItem(activePlayer).ServerId; + const serverId = self.currentItem(activePlayer).ServerId; // User started playing something new while existing content is playing - var promise; + let promise; stopPlaybackProgressTimer(activePlayer); unbindStopped(activePlayer); @@ -2992,47 +2983,47 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } function onPlaybackTimeUpdate(e) { - var player = this; + const player = this; sendProgressUpdate(player, 'timeupdate'); } function onPlaybackPause(e) { - var player = this; + const player = this; sendProgressUpdate(player, 'pause'); } function onPlaybackUnpause(e) { - var player = this; + const player = this; sendProgressUpdate(player, 'unpause'); } function onPlaybackVolumeChange(e) { - var player = this; + const player = this; sendProgressUpdate(player, 'volumechange'); } function onRepeatModeChange(e) { - var player = this; + const player = this; sendProgressUpdate(player, 'repeatmodechange'); } function onShuffleQueueModeChange() { - var player = this; + const player = this; sendProgressUpdate(player, 'shufflequeuemodechange'); } function onPlaylistItemMove(e) { - var player = this; + const player = this; sendProgressUpdate(player, 'playlistitemmove', true); } function onPlaylistItemRemove(e) { - var player = this; + const player = this; sendProgressUpdate(player, 'playlistitemremove', true); } function onPlaylistItemAdd(e) { - var player = this; + const player = this; sendProgressUpdate(player, 'playlistitemadd', true); } @@ -3109,12 +3100,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla throw new Error('player cannot be null'); } - var state = self.getPlayerState(player); + const state = self.getPlayerState(player); if (state.NowPlayingItem) { - var serverId = state.NowPlayingItem.ServerId; + const serverId = state.NowPlayingItem.ServerId; - var streamInfo = getPlayerData(player).streamInfo; + const streamInfo = getPlayerData(player).streamInfo; if (streamInfo && streamInfo.started && !streamInfo.ended) { reportPlayback(self, state, player, reportPlaylist, serverId, 'reportPlaybackProgress', progressEventName); @@ -3133,7 +3124,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla streamInfo.lastMediaInfoQuery = new Date().getTime(); - var apiClient = connectionManager.getApiClient(serverId); + const apiClient = connectionManager.getApiClient(serverId); if (!apiClient.isMinServerVersion('3.2.70.7')) { return; @@ -3143,12 +3134,11 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla mediaSource.MediaStreams = info.MediaStreams; events.trigger(player, 'mediastreamschange'); }, function () { - }); } self.onAppClose = function () { - var player = this._currentPlayer; + const player = this._currentPlayer; // Try to report playback stopped before the app closes if (player && this.isPlaying(player)) { @@ -3163,64 +3153,64 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return player.playbackStartTime(); } - var streamInfo = getPlayerData(player).streamInfo; + const streamInfo = getPlayerData(player).streamInfo; return streamInfo ? streamInfo.playbackStartTimeTicks : null; }; if (apphost.supports('remotecontrol')) { - require(['serverNotifications'], function (serverNotifications) { + import('serverNotifications').then(({ default: serverNotifications }) => { events.on(serverNotifications, 'ServerShuttingDown', self.setDefaultPlayerActive.bind(self)); events.on(serverNotifications, 'ServerRestarting', self.setDefaultPlayerActive.bind(self)); }); } } - PlaybackManager.prototype.getCurrentPlayer = function () { + getCurrentPlayer() { return this._currentPlayer; - }; + } - PlaybackManager.prototype.currentTime = function (player) { + currentTime(player) { player = player || this._currentPlayer; if (player && !enableLocalPlaylistManagement(player) && !player.isLocalPlayer) { return player.currentTime(); } return this.getCurrentTicks(player); - }; + } - PlaybackManager.prototype.nextItem = function (player) { + nextItem(player) { player = player || this._currentPlayer; if (player && !enableLocalPlaylistManagement(player)) { return player.nextItem(); } - var nextItem = this._playQueueManager.getNextItemInfo(); + const nextItem = this._playQueueManager.getNextItemInfo(); if (!nextItem || !nextItem.item) { return Promise.reject(); } - var apiClient = connectionManager.getApiClient(nextItem.item.ServerId); + const apiClient = connectionManager.getApiClient(nextItem.item.ServerId); return apiClient.getItem(apiClient.getCurrentUserId(), nextItem.item.Id); - }; + } - PlaybackManager.prototype.canQueue = function (item) { + canQueue(item) { if (item.Type === 'MusicAlbum' || item.Type === 'MusicArtist' || item.Type === 'MusicGenre') { return this.canQueueMediaType('Audio'); } return this.canQueueMediaType(item.MediaType); - }; + } - PlaybackManager.prototype.canQueueMediaType = function (mediaType) { + canQueueMediaType(mediaType) { if (this._currentPlayer) { return this._currentPlayer.canPlayMediaType(mediaType); } return false; - }; + } - PlaybackManager.prototype.isMuted = function (player) { + isMuted(player) { player = player || this._currentPlayer; if (player) { @@ -3228,17 +3218,17 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } return false; - }; + } - PlaybackManager.prototype.setMute = function (mute, player) { + setMute(mute, player) { player = player || this._currentPlayer; if (player) { player.setMute(mute); } - }; + } - PlaybackManager.prototype.toggleMute = function (mute, player) { + toggleMute(mute, player) { player = player || this._currentPlayer; if (player) { if (player.toggleMute) { @@ -3247,29 +3237,29 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla player.setMute(!player.isMuted()); } } - }; + } - PlaybackManager.prototype.toggleDisplayMirroring = function () { + toggleDisplayMirroring() { this.enableDisplayMirroring(!this.enableDisplayMirroring()); - }; + } - PlaybackManager.prototype.enableDisplayMirroring = function (enabled) { + enableDisplayMirroring(enabled) { if (enabled != null) { - var val = enabled ? '1' : '0'; + const val = enabled ? '1' : '0'; appSettings.set('displaymirror', val); return; } return (appSettings.get('displaymirror') || '') !== '0'; - }; + } - PlaybackManager.prototype.nextChapter = function (player) { + nextChapter(player) { player = player || this._currentPlayer; - var item = this.currentItem(player); + const item = this.currentItem(player); - var ticks = this.getCurrentTicks(player); + const ticks = this.getCurrentTicks(player); - var nextChapter = (item.Chapters || []).filter(function (i) { + const nextChapter = (item.Chapters || []).filter(function (i) { return i.StartPositionTicks > ticks; })[0]; @@ -3278,13 +3268,13 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } else { this.nextTrack(player); } - }; + } - PlaybackManager.prototype.previousChapter = function (player) { + previousChapter(player) { player = player || this._currentPlayer; - var item = this.currentItem(player); + const item = this.currentItem(player); - var ticks = this.getCurrentTicks(player); + let ticks = this.getCurrentTicks(player); // Go back 10 seconds ticks -= 100000000; @@ -3294,7 +3284,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla ticks = Math.max(ticks, 0); } - var previousChapters = (item.Chapters || []).filter(function (i) { + const previousChapters = (item.Chapters || []).filter(function (i) { return i.StartPositionTicks <= ticks; }); @@ -3303,9 +3293,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } else { this.previousTrack(player); } - }; + } - PlaybackManager.prototype.fastForward = function (player) { + fastForward(player) { player = player || this._currentPlayer; if (player.fastForward != null) { @@ -3314,12 +3304,12 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } // Go back 15 seconds - var offsetTicks = userSettings.skipForwardLength() * 10000; + const offsetTicks = userSettings.skipForwardLength() * 10000; this.seekRelative(offsetTicks, player); - }; + } - PlaybackManager.prototype.rewind = function (player) { + rewind(player) { player = player || this._currentPlayer; if (player.rewind != null) { @@ -3328,38 +3318,38 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } // Go back 15 seconds - var offsetTicks = 0 - (userSettings.skipBackLength() * 10000); + const offsetTicks = 0 - (userSettings.skipBackLength() * 10000); this.seekRelative(offsetTicks, player); - }; + } - PlaybackManager.prototype.seekPercent = function (percent, player) { + seekPercent(percent, player) { player = player || this._currentPlayer; - var ticks = this.duration(player) || 0; + let ticks = this.duration(player) || 0; percent /= 100; ticks *= percent; this.seek(parseInt(ticks), player); - }; + } - PlaybackManager.prototype.seekMs = function (ms, player) { + seekMs(ms, player) { player = player || this._currentPlayer; - var ticks = ms * 10000; + const ticks = ms * 10000; this.seek(ticks, player); - }; + } - PlaybackManager.prototype.playTrailers = function (item) { - var player = this._currentPlayer; + playTrailers(item) { + const player = this._currentPlayer; if (player && player.playTrailers) { return player.playTrailers(item); } - var apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = connectionManager.getApiClient(item.ServerId); - var instance = this; + const instance = this; if (item.LocalTrailerCount) { return apiClient.getLocalTrailers(apiClient.getCurrentUserId(), item.Id).then(function (result) { @@ -3368,7 +3358,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }); }); } else { - var remoteTrailers = item.RemoteTrailers || []; + const remoteTrailers = item.RemoteTrailers || []; if (!remoteTrailers.length) { return Promise.reject(); @@ -3386,15 +3376,15 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla }) }); } - }; + } - PlaybackManager.prototype.getSubtitleUrl = function (textStream, serverId) { - var apiClient = connectionManager.getApiClient(serverId); + getSubtitleUrl(textStream, serverId) { + const apiClient = connectionManager.getApiClient(serverId); return !textStream.IsExternalUrl ? apiClient.getUrl(textStream.DeliveryUrl) : textStream.DeliveryUrl; - }; + } - PlaybackManager.prototype.stop = function (player) { + stop(player) { player = player || this._currentPlayer; if (player) { @@ -3407,9 +3397,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } return Promise.resolve(); - }; + } - PlaybackManager.prototype.getBufferedRanges = function (player) { + getBufferedRanges(player) { player = player || this._currentPlayer; if (player) { @@ -3419,9 +3409,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } return []; - }; + } - PlaybackManager.prototype.playPause = function (player) { + playPause(player) { player = player || this._currentPlayer; if (player) { @@ -3435,115 +3425,115 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return this.pause(player); } } - }; + } - PlaybackManager.prototype.paused = function (player) { + paused(player) { player = player || this._currentPlayer; if (player) { return player.paused(); } - }; + } - PlaybackManager.prototype.pause = function (player) { + pause(player) { player = player || this._currentPlayer; if (player) { player.pause(); } - }; + } - PlaybackManager.prototype.unpause = function (player) { + unpause(player) { player = player || this._currentPlayer; if (player) { player.unpause(); } - }; + } - PlaybackManager.prototype.setPlaybackRate = function (value, player = this._currentPlayer) { + setPlaybackRate(value, player = this._currentPlayer) { if (player && player.setPlaybackRate) { player.setPlaybackRate(value); } - }; + } - PlaybackManager.prototype.getPlaybackRate = function (player = this._currentPlayer) { + getPlaybackRate(player = this._currentPlayer) { if (player && player.getPlaybackRate) { return player.getPlaybackRate(); } return null; - }; + } - PlaybackManager.prototype.instantMix = function (item, player) { + instantMix(item, player) { player = player || this._currentPlayer; if (player && player.instantMix) { return player.instantMix(item); } - var apiClient = connectionManager.getApiClient(item.ServerId); + const apiClient = connectionManager.getApiClient(item.ServerId); - var options = {}; + const options = {}; options.UserId = apiClient.getCurrentUserId(); options.Limit = 200; - var instance = this; + const instance = this; apiClient.getInstantMixFromItem(item.Id, options).then(function (result) { instance.play({ items: result.Items }); }); - }; + } - PlaybackManager.prototype.shuffle = function (shuffleItem, player) { + shuffle(shuffleItem, player) { player = player || this._currentPlayer; if (player && player.shuffle) { return player.shuffle(shuffleItem); } return this.play({ items: [shuffleItem], shuffle: true }); - }; + } - PlaybackManager.prototype.audioTracks = function (player) { + audioTracks(player) { player = player || this._currentPlayer; if (player.audioTracks) { - var result = player.audioTracks(); + const result = player.audioTracks(); if (result) { return result; } } - var mediaSource = this.currentMediaSource(player); + const mediaSource = this.currentMediaSource(player); - var mediaStreams = (mediaSource || {}).MediaStreams || []; + const mediaStreams = (mediaSource || {}).MediaStreams || []; return mediaStreams.filter(function (s) { return s.Type === 'Audio'; }); - }; + } - PlaybackManager.prototype.subtitleTracks = function (player) { + subtitleTracks(player) { player = player || this._currentPlayer; if (player.subtitleTracks) { - var result = player.subtitleTracks(); + const result = player.subtitleTracks(); if (result) { return result; } } - var mediaSource = this.currentMediaSource(player); + const mediaSource = this.currentMediaSource(player); - var mediaStreams = (mediaSource || {}).MediaStreams || []; + const mediaStreams = (mediaSource || {}).MediaStreams || []; return mediaStreams.filter(function (s) { return s.Type === 'Subtitle'; }); - }; + } - PlaybackManager.prototype.getSupportedCommands = function (player) { + getSupportedCommands(player) { player = player || this._currentPlayer || { isLocalPlayer: true }; if (player.isLocalPlayer) { - var list = [ + const list = [ 'GoHome', 'GoToSettings', 'VolumeUp', @@ -3589,45 +3579,45 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla return list; } - var info = this.getPlayerInfo(); + const info = this.getPlayerInfo(); return info ? info.supportedCommands : []; - }; + } - PlaybackManager.prototype.setRepeatMode = function (value, player = this._currentPlayer) { + setRepeatMode(value, player = this._currentPlayer) { if (player && !enableLocalPlaylistManagement(player)) { return player.setRepeatMode(value); } this._playQueueManager.setRepeatMode(value); events.trigger(player, 'repeatmodechange'); - }; + } - PlaybackManager.prototype.getRepeatMode = function (player = this._currentPlayer) { + getRepeatMode(player = this._currentPlayer) { if (player && !enableLocalPlaylistManagement(player)) { return player.getRepeatMode(); } return this._playQueueManager.getRepeatMode(); - }; + } - PlaybackManager.prototype.setQueueShuffleMode = function (value, player = this._currentPlayer) { + setQueueShuffleMode(value, player = this._currentPlayer) { if (player && !enableLocalPlaylistManagement(player)) { return player.setQueueShuffleMode(value); } this._playQueueManager.setShuffleMode(value); events.trigger(player, 'shufflequeuemodechange'); - }; + } - PlaybackManager.prototype.getQueueShuffleMode = function (player = this._currentPlayer) { + getQueueShuffleMode(player = this._currentPlayer) { if (player && !enableLocalPlaylistManagement(player)) { return player.getQueueShuffleMode(); } return this._playQueueManager.getShuffleMode(); - }; + } - PlaybackManager.prototype.toggleQueueShuffleMode = function (player = this._currentPlayer) { + toggleQueueShuffleMode(player = this._currentPlayer) { let currentvalue; if (player && !enableLocalPlaylistManagement(player)) { currentvalue = player.getQueueShuffleMode(); @@ -3645,23 +3635,23 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla this._playQueueManager.toggleShuffleMode(); } events.trigger(player, 'shufflequeuemodechange'); - }; + } - PlaybackManager.prototype.clearQueue = function (clearCurrentItem = false, player = this._currentPlayer) { + clearQueue(clearCurrentItem = false, player = this._currentPlayer) { if (player && !enableLocalPlaylistManagement(player)) { return player.clearQueue(clearCurrentItem); } this._playQueueManager.clearPlaylist(clearCurrentItem); events.trigger(player, 'playlistitemremove'); - }; + } - PlaybackManager.prototype.trySetActiveDeviceName = function (name) { + trySetActiveDeviceName(name) { name = normalizeName(name); - var instance = this; + const instance = this; instance.getTargets().then(function (result) { - var target = result.filter(function (p) { + const target = result.filter(function (p) { return normalizeName(p.name) === name; })[0]; @@ -3669,50 +3659,50 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla instance.trySetActivePlayer(target.playerName, target); } }); - }; + } - PlaybackManager.prototype.displayContent = function (options, player) { + displayContent(options, player) { player = player || this._currentPlayer; if (player && player.displayContent) { player.displayContent(options); } - }; + } - PlaybackManager.prototype.beginPlayerUpdates = function (player) { + beginPlayerUpdates(player) { if (player.beginPlayerUpdates) { player.beginPlayerUpdates(); } - }; + } - PlaybackManager.prototype.endPlayerUpdates = function (player) { + endPlayerUpdates(player) { if (player.endPlayerUpdates) { player.endPlayerUpdates(); } - }; + } - PlaybackManager.prototype.setDefaultPlayerActive = function () { + setDefaultPlayerActive() { this.setActivePlayer('localplayer'); - }; + } - PlaybackManager.prototype.removeActivePlayer = function (name) { - var playerInfo = this.getPlayerInfo(); + removeActivePlayer(name) { + const playerInfo = this.getPlayerInfo(); if (playerInfo) { if (playerInfo.name === name) { this.setDefaultPlayerActive(); } } - }; + } - PlaybackManager.prototype.removeActiveTarget = function (id) { - var playerInfo = this.getPlayerInfo(); + removeActiveTarget(id) { + const playerInfo = this.getPlayerInfo(); if (playerInfo) { if (playerInfo.id === id) { this.setDefaultPlayerActive(); } } - }; + } - PlaybackManager.prototype.sendCommand = function (cmd, player) { + sendCommand(cmd, player) { console.debug('MediaController received command: ' + cmd.Name); switch (cmd.Name) { case 'SetRepeatMode': @@ -3763,7 +3753,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla } break; } - }; + } +} - return new PlaybackManager(); -}); +export default new PlaybackManager(); From 49c1b3e159042695b2befc8cc8aa7d5ea8ba88f2 Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 09:12:44 +0100 Subject: [PATCH 102/463] Addition of defaults --- src/components/guide/guide.js | 2 ++ src/components/itemsrefresher.js | 2 ++ src/components/notifications/notifications.js | 2 ++ src/components/recordingcreator/recordingcreator.js | 2 +- src/components/remotecontrol/remotecontrol.js | 3 +++ src/components/subtitlesync/subtitlesync.js | 2 ++ src/components/themeMediaPlayer.js | 2 ++ src/components/upnextdialog/upnextdialog.js | 2 ++ src/controllers/itemDetails/index.js | 2 ++ src/controllers/list.js | 2 ++ src/controllers/movies/moviesrecommended.js | 2 ++ src/plugins/chromecastPlayer/plugin.js | 2 ++ src/plugins/sessionPlayer/plugin.js | 2 ++ src/scripts/libraryMenu.js | 2 ++ src/scripts/serverNotifications.js | 2 ++ 15 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/components/guide/guide.js b/src/components/guide/guide.js index bd3ad89aaa..6601a0508d 100644 --- a/src/components/guide/guide.js +++ b/src/components/guide/guide.js @@ -1,6 +1,8 @@ define(['require', 'inputManager', 'browser', 'globalize', 'connectionManager', 'scrollHelper', 'serverNotifications', 'loading', 'datetime', 'focusManager', 'playbackManager', 'userSettings', 'imageLoader', 'events', 'layoutManager', 'itemShortcuts', 'dom', 'css!./guide.css', 'programStyles', 'material-icons', 'scrollStyles', 'emby-programcell', 'emby-button', 'paper-icon-button-light', 'emby-tabs', 'emby-scroller', 'flexStyles', 'webcomponents'], function (require, inputManager, browser, globalize, connectionManager, scrollHelper, serverNotifications, loading, datetime, focusManager, playbackManager, userSettings, imageLoader, events, layoutManager, itemShortcuts, dom) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + function showViewSettings(instance) { require(['guide-settings-dialog'], function (guideSettingsDialog) { guideSettingsDialog.show(instance.categoryOptions).then(function () { diff --git a/src/components/itemsrefresher.js b/src/components/itemsrefresher.js index a210af31af..74b08db07f 100644 --- a/src/components/itemsrefresher.js +++ b/src/components/itemsrefresher.js @@ -1,6 +1,8 @@ define(['playbackManager', 'serverNotifications', 'events'], function (playbackManager, serverNotifications, events) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + function onUserDataChanged(e, apiClient, userData) { var instance = this; diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js index b4647bbf25..0bf270f2a1 100644 --- a/src/components/notifications/notifications.js +++ b/src/components/notifications/notifications.js @@ -1,6 +1,8 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'require'], function (serverNotifications, playbackManager, events, globalize, require) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + function onOneDocumentClick() { document.removeEventListener('click', onOneDocumentClick); document.removeEventListener('keydown', onOneDocumentClick); diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index f330e54156..ca5c475829 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -104,7 +104,7 @@ define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'c var apiClient = connectionManager.getApiClient(serverId); apiClient.getLiveTvProgram(programId, apiClient.getCurrentUserId()).then(function (item) { - playbackManager.play({ + playbackManager.default.play({ ids: [item.ChannelId], serverId: serverId }); diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 29e77debd1..b5ac4c9a8b 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -1,5 +1,8 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageLoader', 'playbackManager', 'nowPlayingHelper', 'events', 'connectionManager', 'apphost', 'globalize', 'layoutManager', 'userSettings', 'cardBuilder', 'itemContextMenu', 'cardStyle', 'emby-itemscontainer', 'css!./remotecontrol.css', 'emby-ratingbutton'], function (browser, datetime, backdrop, libraryBrowser, listView, imageLoader, playbackManager, nowPlayingHelper, events, connectionManager, appHost, globalize, layoutManager, userSettings, cardBuilder, itemContextMenu) { 'use strict'; + + playbackManager = playbackManager.default || playbackManager; + var showMuteButton = true; var showVolumeSlider = true; diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index e825e8e0a2..203d88535f 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -1,6 +1,8 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, layoutManager, template, css) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + var player; var subtitleSyncSlider; var subtitleSyncTextField; diff --git a/src/components/themeMediaPlayer.js b/src/components/themeMediaPlayer.js index dd04f384aa..60f0986884 100644 --- a/src/components/themeMediaPlayer.js +++ b/src/components/themeMediaPlayer.js @@ -1,6 +1,8 @@ define(['playbackManager', 'userSettings', 'connectionManager'], function (playbackManager, userSettings, connectionManager) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + var currentOwnerId; var currentThemeIds = []; diff --git a/src/components/upnextdialog/upnextdialog.js b/src/components/upnextdialog/upnextdialog.js index 1dbe71c632..5eb2a2ffcc 100644 --- a/src/components/upnextdialog/upnextdialog.js +++ b/src/components/upnextdialog/upnextdialog.js @@ -1,6 +1,8 @@ define(['dom', 'playbackManager', 'connectionManager', 'events', 'mediaInfo', 'layoutManager', 'focusManager', 'globalize', 'itemHelper', 'css!./upnextdialog', 'emby-button', 'flexStyles'], function (dom, playbackManager, connectionManager, events, mediaInfo, layoutManager, focusManager, globalize, itemHelper) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + var transitionEndEventName = dom.whichTransitionEvent(); function seriesImageUrl(item, options) { diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index df2855d69a..3fe24b5594 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -29,6 +29,8 @@ import 'emby-select'; /* eslint-disable indent */ + playbackManager = playbackManager.default || playbackManager; + function getPromise(apiClient, params) { const id = params.id; diff --git a/src/controllers/list.js b/src/controllers/list.js index 01ef35a26a..025a56ca9a 100644 --- a/src/controllers/list.js +++ b/src/controllers/list.js @@ -1,6 +1,8 @@ define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'scroller', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, scroller, playbackManager, AlphaPicker) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + function getInitialLiveTvQuery(instance, params) { var query = { UserId: connectionManager.getApiClient(params.serverId).getCurrentUserId(), diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index 4ffe7888cf..a633d654cd 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -1,6 +1,8 @@ define(['events', 'layoutManager', 'inputManager', 'userSettings', 'libraryMenu', 'mainTabsManager', 'cardBuilder', 'dom', 'imageLoader', 'playbackManager', 'globalize', 'emby-scroller', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager, globalize) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + function enableScrollX() { return !layoutManager.desktop; } diff --git a/src/plugins/chromecastPlayer/plugin.js b/src/plugins/chromecastPlayer/plugin.js index f4acc6d8b3..e39e30d8cf 100644 --- a/src/plugins/chromecastPlayer/plugin.js +++ b/src/plugins/chromecastPlayer/plugin.js @@ -1,6 +1,8 @@ define(['appSettings', 'userSettings', 'playbackManager', 'connectionManager', 'globalize', 'events', 'require', 'castSenderApiLoader'], function (appSettings, userSettings, playbackManager, connectionManager, globalize, events, require, castSenderApiLoader) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + // Based on https://github.com/googlecast/CastVideos-chrome/blob/master/CastVideos.js var currentResolve; var currentReject; diff --git a/src/plugins/sessionPlayer/plugin.js b/src/plugins/sessionPlayer/plugin.js index 89a18a96cc..fb1f745df3 100644 --- a/src/plugins/sessionPlayer/plugin.js +++ b/src/plugins/sessionPlayer/plugin.js @@ -1,6 +1,8 @@ define(['playbackManager', 'events', 'serverNotifications', 'connectionManager'], function (playbackManager, events, serverNotifications, connectionManager) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + function getActivePlayerId() { var info = playbackManager.getPlayerInfo(); return info ? info.id : null; diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index d2a68cd6e3..5c0ab467ff 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -1,6 +1,8 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', 'viewManager', 'libraryBrowser', 'appRouter', 'apphost', 'playbackManager', 'syncPlayManager', 'groupSelectionMenu', 'browser', 'globalize', 'scripts/imagehelper', 'paper-icon-button-light', 'material-icons', 'scrollStyles', 'flexStyles'], function (dom, layoutManager, inputManager, connectionManager, events, viewManager, libraryBrowser, appRouter, appHost, playbackManager, syncPlayManager, groupSelectionMenu, browser, globalize, imageHelper) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + function renderHeader() { var html = ''; html += '
'; diff --git a/src/scripts/serverNotifications.js b/src/scripts/serverNotifications.js index 331a75329c..e5fb0bcd61 100644 --- a/src/scripts/serverNotifications.js +++ b/src/scripts/serverNotifications.js @@ -1,6 +1,8 @@ define(['connectionManager', 'playbackManager', 'syncPlayManager', 'events', 'inputManager', 'focusManager', 'appRouter'], function (connectionManager, playbackManager, syncPlayManager, events, inputManager, focusManager, appRouter) { 'use strict'; + playbackManager = playbackManager.default || playbackManager; + var serverNotifications = {}; function notifyApp() { From 7ffb7ab0fc07ea8e80d381a971541f0b1c5b1e04 Mon Sep 17 00:00:00 2001 From: Cameron Date: Fri, 31 Jul 2020 10:36:08 +0100 Subject: [PATCH 103/463] fix lint and bug --- src/components/playback/playbackmanager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 99a21dd3e2..dbab7e0f8f 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1988,7 +1988,7 @@ class PlaybackManager { throw new Error('player cannot be null'); } - let playerTime = Math.floor(10000 * (player || self._currentPlayer).currentTime()); + let playerTime = Math.floor(10000 * (player).currentTime()); const streamInfo = getPlayerData(player).streamInfo; if (streamInfo) { From 91cd1a75d7970316e793bccb5daf470c1297d5eb Mon Sep 17 00:00:00 2001 From: Cameron Date: Sat, 1 Aug 2020 21:03:27 +0100 Subject: [PATCH 104/463] Apply Suggestions --- src/components/playback/playbackmanager.js | 81 ++++++---------------- src/libraries/screensavermanager.js | 2 + 2 files changed, 25 insertions(+), 58 deletions(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index dbab7e0f8f..1c181c0025 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -3147,8 +3147,7 @@ class PlaybackManager { } }; - self.playbackStartTime = function (player) { - player = player || this._currentPlayer; + self.playbackStartTime = function (player = this._currentPlayer) { if (player && !enableLocalPlaylistManagement(player) && !player.isLocalPlayer) { return player.playbackStartTime(); } @@ -3169,8 +3168,7 @@ class PlaybackManager { return this._currentPlayer; } - currentTime(player) { - player = player || this._currentPlayer; + currentTime(player = this._currentPlayer) { if (player && !enableLocalPlaylistManagement(player) && !player.isLocalPlayer) { return player.currentTime(); } @@ -3178,9 +3176,7 @@ class PlaybackManager { return this.getCurrentTicks(player); } - nextItem(player) { - player = player || this._currentPlayer; - + nextItem(player = this._currentPlayer) { if (player && !enableLocalPlaylistManagement(player)) { return player.nextItem(); } @@ -3210,9 +3206,7 @@ class PlaybackManager { return false; } - isMuted(player) { - player = player || this._currentPlayer; - + isMuted(player = this._currentPlayer) { if (player) { return player.isMuted(); } @@ -3220,16 +3214,13 @@ class PlaybackManager { return false; } - setMute(mute, player) { - player = player || this._currentPlayer; - + setMute(mute, player = this._currentPlayer) { if (player) { player.setMute(mute); } } - toggleMute(mute, player) { - player = player || this._currentPlayer; + toggleMute(mute, player = this._currentPlayer) { if (player) { if (player.toggleMute) { player.toggleMute(); @@ -3253,8 +3244,7 @@ class PlaybackManager { return (appSettings.get('displaymirror') || '') !== '0'; } - nextChapter(player) { - player = player || this._currentPlayer; + nextChapter(player = this._currentPlayer) { const item = this.currentItem(player); const ticks = this.getCurrentTicks(player); @@ -3270,8 +3260,7 @@ class PlaybackManager { } } - previousChapter(player) { - player = player || this._currentPlayer; + previousChapter(player = this._currentPlayer) { const item = this.currentItem(player); let ticks = this.getCurrentTicks(player); @@ -3295,9 +3284,7 @@ class PlaybackManager { } } - fastForward(player) { - player = player || this._currentPlayer; - + fastForward(player = this._currentPlayer) { if (player.fastForward != null) { player.fastForward(userSettings.skipForwardLength()); return; @@ -3309,9 +3296,7 @@ class PlaybackManager { this.seekRelative(offsetTicks, player); } - rewind(player) { - player = player || this._currentPlayer; - + rewind(player = this._currentPlayer) { if (player.rewind != null) { player.rewind(userSettings.skipBackLength()); return; @@ -3323,9 +3308,7 @@ class PlaybackManager { this.seekRelative(offsetTicks, player); } - seekPercent(percent, player) { - player = player || this._currentPlayer; - + seekPercent(percent, player = this._currentPlayer) { let ticks = this.duration(player) || 0; percent /= 100; @@ -3333,9 +3316,7 @@ class PlaybackManager { this.seek(parseInt(ticks), player); } - seekMs(ms, player) { - player = player || this._currentPlayer; - + seekMs(ms, player = this._currentPlayer) { const ticks = ms * 10000; this.seek(ticks, player); } @@ -3384,9 +3365,8 @@ class PlaybackManager { return !textStream.IsExternalUrl ? apiClient.getUrl(textStream.DeliveryUrl) : textStream.DeliveryUrl; } - stop(player) { + stop(player ) { player = player || this._currentPlayer; - if (player) { if (enableLocalPlaylistManagement(player)) { this._playNextAfterEnded = false; @@ -3399,9 +3379,7 @@ class PlaybackManager { return Promise.resolve(); } - getBufferedRanges(player) { - player = player || this._currentPlayer; - + getBufferedRanges(player = this._currentPlayer) { if (player) { if (player.getBufferedRanges) { return player.getBufferedRanges(); @@ -3411,9 +3389,7 @@ class PlaybackManager { return []; } - playPause(player) { - player = player || this._currentPlayer; - + playPause(player = this._currentPlayer) { if (player) { if (player.playPause) { return player.playPause(); @@ -3427,25 +3403,19 @@ class PlaybackManager { } } - paused(player) { - player = player || this._currentPlayer; - + paused(player = this._currentPlayer) { if (player) { return player.paused(); } } - pause(player) { - player = player || this._currentPlayer; - + pause(player = this._currentPlayer) { if (player) { player.pause(); } } - unpause(player) { - player = player || this._currentPlayer; - + unpause(player = this._currentPlayer) { if (player) { player.unpause(); } @@ -3465,8 +3435,7 @@ class PlaybackManager { return null; } - instantMix(item, player) { - player = player || this._currentPlayer; + instantMix(item, player = this._currentPlayer) { if (player && player.instantMix) { return player.instantMix(item); } @@ -3486,8 +3455,7 @@ class PlaybackManager { }); } - shuffle(shuffleItem, player) { - player = player || this._currentPlayer; + shuffle(shuffleItem, player = this._currentPlayer) { if (player && player.shuffle) { return player.shuffle(shuffleItem); } @@ -3495,8 +3463,7 @@ class PlaybackManager { return this.play({ items: [shuffleItem], shuffle: true }); } - audioTracks(player) { - player = player || this._currentPlayer; + audioTracks(player = this._currentPlayer) { if (player.audioTracks) { const result = player.audioTracks(); if (result) { @@ -3512,8 +3479,7 @@ class PlaybackManager { }); } - subtitleTracks(player) { - player = player || this._currentPlayer; + subtitleTracks(player = this._currentPlayer) { if (player.subtitleTracks) { const result = player.subtitleTracks(); if (result) { @@ -3661,8 +3627,7 @@ class PlaybackManager { }); } - displayContent(options, player) { - player = player || this._currentPlayer; + displayContent(options, player = this._currentPlayer) { if (player && player.displayContent) { player.displayContent(options); } diff --git a/src/libraries/screensavermanager.js b/src/libraries/screensavermanager.js index b9d7082850..557b31e0f4 100644 --- a/src/libraries/screensavermanager.js +++ b/src/libraries/screensavermanager.js @@ -1,6 +1,8 @@ define(["events", "playbackManager", "pluginManager", "inputManager", "connectionManager", "userSettings"], function (events, playbackManager, pluginManager, inputManager, connectionManager, userSettings) { "use strict"; + playbackManager = playbackManager.default || playbackManager; + function getMinIdleTime() { // Returns the minimum amount of idle time required before the screen saver can be displayed //time units used Millisecond From 042cb4119bd22fbe8679592d110041597bd7a196 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sun, 2 Aug 2020 09:22:03 +0100 Subject: [PATCH 105/463] lint --- src/components/imageeditor/imageeditor.js | 2 -- src/components/playback/playbackmanager.js | 2 +- src/controllers/livetvsettings.js | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/imageeditor/imageeditor.js b/src/components/imageeditor/imageeditor.js index 166ebb2245..46e2dae999 100644 --- a/src/components/imageeditor/imageeditor.js +++ b/src/components/imageeditor/imageeditor.js @@ -19,8 +19,6 @@ import 'css!./imageeditor'; const enableFocusTransform = !browser.slow && !browser.edge; - loading = loading.default || loading; - let currentItem; let hasChanges = false; diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 1c181c0025..ffbb88522c 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -3365,7 +3365,7 @@ class PlaybackManager { return !textStream.IsExternalUrl ? apiClient.getUrl(textStream.DeliveryUrl) : textStream.DeliveryUrl; } - stop(player ) { + stop(player) { player = player || this._currentPlayer; if (player) { if (enableLocalPlaylistManagement(player)) { diff --git a/src/controllers/livetvsettings.js b/src/controllers/livetvsettings.js index 8c296cdd3c..29ec4a10a5 100644 --- a/src/controllers/livetvsettings.js +++ b/src/controllers/livetvsettings.js @@ -3,8 +3,6 @@ import loading from 'loading'; import globalize from 'globalize'; import 'emby-button'; -loading = loading.default || loading; - function loadPage(page, config) { $('.liveTvSettingsForm', page).show(); $('.noLiveTvServices', page).hide(); From 9067047403eddf24a24b0f8b81111464359b6bc9 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sun, 2 Aug 2020 09:27:03 +0100 Subject: [PATCH 106/463] Update src/components/playback/playbackmanager.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/playback/playbackmanager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index ffbb88522c..437127be18 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -620,7 +620,7 @@ function supportsDirectPlay(apiClient, item, mediaSource) { } else if (mediaSource.Protocol === 'File') { return new Promise(function (resolve, reject) { // Determine if the file can be accessed directly - import('filesystem').then(({ default: filesystem }) => { + import('filesystem').then((filesystem) => { const method = isFolderRip ? 'directoryExists' : 'fileExists'; From 1fe25e14ddb6131be62b1ed4dbb12f3a821a5702 Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 2 Aug 2020 17:28:25 +0900 Subject: [PATCH 107/463] move themes and plugins into config file --- package.json | 2 + src/components/appRouter.js | 17 +- src/components/apphost.js | 9 +- .../displaySettings/displaySettings.js | 114 ++--------- .../displaySettings.template.html | 20 -- src/components/skinManager.js | 184 ------------------ src/config.template.json | 36 +++- src/index.html | 8 +- src/manifest.json | 2 +- ...romecastHelpers.js => chromecastHelper.js} | 0 src/plugins/chromecastPlayer/plugin.js | 2 +- src/scripts/autoThemes.js | 8 + src/scripts/inputManager.js | 1 + src/scripts/settings/appSettings.js | 41 ---- src/scripts/settings/webSettings.js | 20 +- src/scripts/site.js | 57 +++--- src/scripts/themeLoader.js | 29 --- src/scripts/themeManager.js | 66 +++++++ 18 files changed, 180 insertions(+), 436 deletions(-) delete mode 100644 src/components/skinManager.js rename src/plugins/chromecastPlayer/{chromecastHelpers.js => chromecastHelper.js} (100%) create mode 100644 src/scripts/autoThemes.js delete mode 100644 src/scripts/themeLoader.js create mode 100644 src/scripts/themeManager.js diff --git a/package.json b/package.json index 7943c22e54..8e725e1052 100644 --- a/package.json +++ b/package.json @@ -266,6 +266,8 @@ "src/scripts/globalize.js", "src/scripts/imagehelper.js", "src/scripts/inputManager.js", + "src/scripts/autoThemes.js", + "src/scripts/themeManager.js", "src/scripts/keyboardNavigation.js", "src/scripts/libraryBrowser.js", "src/scripts/multiDownload.js", diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 8c9b953d39..5dbcf765be 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -36,7 +36,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro switch (result.State) { case 'SignedIn': loading.hide(); - skinManager.loadUserSkin(); + Emby.Page.goHome(); break; case 'ServerSignIn': result.ApiClient.getPublicUsers().then(function (users) { @@ -149,7 +149,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro if (typeof route.path === 'string') { loadContentUrl(ctx, next, route, currentRequest); } else { - // ? TODO next(); } }; @@ -287,12 +286,9 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro connectionManager.connect({ enableAutoLogin: appSettings.enableAutoLogin() - }).then(function (result) { firstConnectionResult = result; - options = options || {}; - page({ click: options.click !== false, hashbang: options.hashbang !== false @@ -344,7 +340,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro if (route.isDefaultRoute) { console.debug('appRouter - loading skin home page'); - loadUserSkinWithOptions(ctx); + Emby.Page.goHome(); return; } else if (route.roles) { validateRoles(apiClient, route.roles).then(function () { @@ -358,15 +354,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'skinManager', 'backdro callback(); } - function loadUserSkinWithOptions(ctx) { - require(['queryString'], function (queryString) { - var params = queryString.parse(ctx.querystring); - skinManager.loadUserSkin({ - start: params.start - }); - }); - } - function validateRoles(apiClient, roles) { return Promise.all(roles.split(',').map(function (role) { return validateRole(apiClient, role); diff --git a/src/components/apphost.js b/src/components/apphost.js index 8a5581d817..931fcae1db 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -277,7 +277,7 @@ define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'g features.push('targetblank'); features.push('screensaver'); - webSettings.enableMultiServer().then(enabled => { + webSettings.getMultiServer().then(enabled => { if (enabled) features.push('multiserver'); }); @@ -407,13 +407,6 @@ define(['appSettings', 'browser', 'events', 'htmlMediaHelper', 'webSettings', 'g getPushTokenInfo: function () { return {}; }, - setThemeColor: function (color) { - var metaThemeColor = document.querySelector('meta[name=theme-color]'); - - if (metaThemeColor) { - metaThemeColor.setAttribute('content', color); - } - }, setUserScalable: function (scalable) { if (!browser.tv) { var att = scalable ? 'width=device-width, initial-scale=1, minimum-scale=1, user-scalable=yes' : 'width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no'; diff --git a/src/components/displaySettings/displaySettings.js b/src/components/displaySettings/displaySettings.js index ba78ab99e1..d9c2fc0b49 100644 --- a/src/components/displaySettings/displaySettings.js +++ b/src/components/displaySettings/displaySettings.js @@ -16,17 +16,22 @@ import 'emby-button'; /* eslint-disable indent */ - function fillThemes(select, isDashboard) { - select.innerHTML = skinManager.getThemes().map(t => { - let value = t.id; - if (t.isDefault && !isDashboard) { - value = ''; - } else if (t.isDefaultServerDashboard && isDashboard) { - value = ''; - } + function fillThemes(context, userSettings) { + const select = context.querySelector('#selectTheme'); - return ``; - }).join(''); + skinManager.getThemes().then(themes => { + select.innerHTML = themes.map(t => { + return ``; + }).join(''); + + // get default theme + var defaultTheme = themes.find(theme => { + return theme.default; + }); + + // set the current theme + select.value = userSettings.theme() || defaultTheme.id; + }); } function loadScreensavers(context, userSettings) { @@ -46,6 +51,7 @@ import 'emby-button'; selectScreensaver.innerHTML = options.map(o => { return ``; }).join(''); + selectScreensaver.value = userSettings.screensaver(); if (!selectScreensaver.value) { @@ -54,57 +60,6 @@ import 'emby-button'; } } - function loadSoundEffects(context, userSettings) { - const selectSoundEffects = context.querySelector('.selectSoundEffects'); - const options = pluginManager.ofType('soundeffects').map(plugin => { - return { - name: plugin.name, - value: plugin.id - }; - }); - - options.unshift({ - name: globalize.translate('None'), - value: 'none' - }); - - selectSoundEffects.innerHTML = options.map(o => { - return ``; - }).join(''); - selectSoundEffects.value = userSettings.soundEffects(); - - if (!selectSoundEffects.value) { - // TODO: set the default instead of none - selectSoundEffects.value = 'none'; - } - } - - function loadSkins(context, userSettings) { - const selectSkin = context.querySelector('.selectSkin'); - - const options = pluginManager.ofType('skin').map(plugin => { - return { - name: plugin.name, - value: plugin.id - }; - }); - - selectSkin.innerHTML = options.map(o => { - return ``; - }).join(''); - selectSkin.value = userSettings.skin(); - - if (!selectSkin.value && options.length) { - selectSkin.value = options[0].value; - } - - if (options.length > 1 && appHost.supports('skins')) { - context.querySelector('.selectSkinContainer').classList.remove('hide'); - } else { - context.querySelector('.selectSkinContainer').classList.add('hide'); - } - } - function showOrHideMissingEpisodesField(context) { if (browser.tizen || browser.web0s) { context.querySelector('.fldDisplayMissingEpisodes').classList.add('hide'); @@ -115,12 +70,6 @@ import 'emby-button'; } function loadForm(context, user, userSettings) { - if (user.Policy.IsAdministrator) { - context.querySelector('.selectDashboardThemeContainer').classList.remove('hide'); - } else { - context.querySelector('.selectDashboardThemeContainer').classList.add('hide'); - } - if (appHost.supports('displaylanguage')) { context.querySelector('.languageSection').classList.remove('hide'); } else { @@ -139,18 +88,6 @@ import 'emby-button'; context.querySelector('.learnHowToContributeContainer').classList.add('hide'); } - if (appHost.supports('runatstartup')) { - context.querySelector('.fldAutorun').classList.remove('hide'); - } else { - context.querySelector('.fldAutorun').classList.add('hide'); - } - - if (appHost.supports('soundeffects')) { - context.querySelector('.fldSoundEffects').classList.remove('hide'); - } else { - context.querySelector('.fldSoundEffects').classList.add('hide'); - } - if (appHost.supports('screensaver')) { context.querySelector('.selectScreensaverContainer').classList.remove('hide'); } else { @@ -173,16 +110,8 @@ import 'emby-button'; context.querySelector('.fldThemeVideo').classList.add('hide'); } - context.querySelector('.chkRunAtStartup').checked = appSettings.runAtStartup(); - - const selectTheme = context.querySelector('#selectTheme'); - const selectDashboardTheme = context.querySelector('#selectDashboardTheme'); - - fillThemes(selectTheme); - fillThemes(selectDashboardTheme, true); + fillThemes(context, userSettings); loadScreensavers(context, userSettings); - loadSoundEffects(context, userSettings); - loadSkins(context, userSettings); context.querySelector('.chkDisplayMissingEpisodes').checked = user.Configuration.DisplayMissingEpisodes || false; @@ -198,9 +127,6 @@ import 'emby-button'; context.querySelector('#txtLibraryPageSize').value = userSettings.libraryPageSize(); - selectDashboardTheme.value = userSettings.dashboardTheme() || ''; - selectTheme.value = userSettings.theme() || ''; - context.querySelector('.selectLayout').value = layoutManager.getSavedLayout() || ''; showOrHideMissingEpisodesField(context); @@ -209,8 +135,6 @@ import 'emby-button'; } function saveUser(context, user, userSettingsInstance, apiClient) { - appSettings.runAtStartup(context.querySelector('.chkRunAtStartup').checked); - user.Configuration.DisplayMissingEpisodes = context.querySelector('.chkDisplayMissingEpisodes').checked; if (appHost.supports('displaylanguage')) { @@ -221,15 +145,11 @@ import 'emby-button'; userSettingsInstance.enableThemeSongs(context.querySelector('#chkThemeSong').checked); userSettingsInstance.enableThemeVideos(context.querySelector('#chkThemeVideo').checked); - userSettingsInstance.dashboardTheme(context.querySelector('#selectDashboardTheme').value); userSettingsInstance.theme(context.querySelector('#selectTheme').value); - userSettingsInstance.soundEffects(context.querySelector('.selectSoundEffects').value); userSettingsInstance.screensaver(context.querySelector('.selectScreensaver').value); userSettingsInstance.libraryPageSize(context.querySelector('#txtLibraryPageSize').value); - userSettingsInstance.skin(context.querySelector('.selectSkin').value); - userSettingsInstance.enableFastFadein(context.querySelector('#chkFadein').checked); userSettingsInstance.enableBlurhash(context.querySelector('#chkBlurhash').checked); userSettingsInstance.enableBackdrops(context.querySelector('#chkBackdrops').checked); diff --git a/src/components/displaySettings/displaySettings.template.html b/src/components/displaySettings/displaySettings.template.html index 7258edf208..fdaf8d70f1 100644 --- a/src/components/displaySettings/displaySettings.template.html +++ b/src/components/displaySettings/displaySettings.template.html @@ -1,5 +1,4 @@
-

${Display}

@@ -123,26 +122,14 @@
${LabelPleaseRestart}
-
- -
-
-
- -
-
-
- -
-
${LabelLibraryPageSizeHelp}
@@ -196,13 +183,6 @@
${EnableThemeVideosHelp}
-
- -
-
'; } @@ -291,13 +291,13 @@ import 'emby-input'; const btnSortable = elem.querySelector('.btnSortable'); const inner = btnSortable.querySelector('.material-icons'); if (elem.previousSibling) { - btnSortable.title = globalize.translate('ButtonUp'); + btnSortable.title = globalize.translate('Up'); btnSortable.classList.add('btnSortableMoveUp'); btnSortable.classList.remove('btnSortableMoveDown'); inner.classList.remove('keyboard_arrow_down'); inner.classList.add('keyboard_arrow_up'); } else { - btnSortable.title = globalize.translate('ButtonDown'); + btnSortable.title = globalize.translate('Down'); btnSortable.classList.remove('btnSortableMoveUp'); btnSortable.classList.add('btnSortableMoveDown'); inner.classList.remove('keyboard_arrow_up'); diff --git a/src/components/subtitlesettings/subtitlesettings.template.html b/src/components/subtitlesettings/subtitlesettings.template.html index af9139188c..2884b26efd 100644 --- a/src/components/subtitlesettings/subtitlesettings.template.html +++ b/src/components/subtitlesettings/subtitlesettings.template.html @@ -14,7 +14,7 @@ - +
${DefaultSubtitlesHelp}
${SmartSubtitlesHelp}
diff --git a/src/controllers/dashboard/general.html b/src/controllers/dashboard/general.html index 9ac0a90832..078d9d6055 100644 --- a/src/controllers/dashboard/general.html +++ b/src/controllers/dashboard/general.html @@ -19,7 +19,7 @@
${LabelPreferredDisplayLanguageHelp}
diff --git a/src/controllers/itemDetails/index.html b/src/controllers/itemDetails/index.html index bc6bc5f5a4..9aff1efa14 100644 --- a/src/controllers/itemDetails/index.html +++ b/src/controllers/itemDetails/index.html @@ -42,7 +42,7 @@
- - +
@@ -46,7 +46,7 @@
- +
@@ -75,7 +75,7 @@
- +
diff --git a/src/controllers/music/music.html b/src/controllers/music/music.html index 1e22ae9f3a..6ef1afb89f 100644 --- a/src/controllers/music/music.html +++ b/src/controllers/music/music.html @@ -38,9 +38,9 @@
- + - +
@@ -92,7 +92,7 @@
- +
diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index e16afa2d59..ee182a0427 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -187,7 +187,7 @@ import 'flexStyles'; }, { name: globalize.translate('TabPlaylists') }, { - name: globalize.translate('TabSongs') + name: globalize.translate('Songs') }, { name: globalize.translate('TabGenres') }]; diff --git a/src/controllers/playback/queue/index.html b/src/controllers/playback/queue/index.html index 2720dfe3f0..8d8476bb1e 100644 --- a/src/controllers/playback/queue/index.html +++ b/src/controllers/playback/queue/index.html @@ -59,7 +59,7 @@ - @@ -81,7 +81,7 @@ - @@ -99,7 +99,7 @@
-
@@ -120,7 +120,7 @@ - - +
@@ -60,7 +60,7 @@
- +
diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index c519e0ac58..3d78997bab 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -17,7 +17,7 @@ import 'emby-button'; function getTabs() { return [{ - name: globalize.translate('TabShows') + name: globalize.translate('Shows') }, { name: globalize.translate('Suggestions') }, { @@ -318,8 +318,8 @@ import 'emby-button'; libraryMenu.setTitle(item.Name); }); } else { - view.setAttribute('data-title', globalize.translate('TabShows')); - libraryMenu.setTitle(globalize.translate('TabShows')); + view.setAttribute('data-title', globalize.translate('Shows')); + libraryMenu.setTitle(globalize.translate('Shows')); } } diff --git a/src/controllers/wizard/finish/index.html b/src/controllers/wizard/finish/index.html index 4d54a10cd4..3447ced02f 100644 --- a/src/controllers/wizard/finish/index.html +++ b/src/controllers/wizard/finish/index.html @@ -6,7 +6,7 @@
diff --git a/src/controllers/wizard/remote/index.html b/src/controllers/wizard/remote/index.html index 0718c2dc37..0334f584c5 100644 --- a/src/controllers/wizard/remote/index.html +++ b/src/controllers/wizard/remote/index.html @@ -22,10 +22,10 @@
diff --git a/src/controllers/wizard/settings/index.html b/src/controllers/wizard/settings/index.html index d4f537cf98..d1f557d8f1 100644 --- a/src/controllers/wizard/settings/index.html +++ b/src/controllers/wizard/settings/index.html @@ -17,10 +17,10 @@
diff --git a/src/controllers/wizard/start/index.html b/src/controllers/wizard/start/index.html index 05e282bee3..5306d2ca73 100644 --- a/src/controllers/wizard/start/index.html +++ b/src/controllers/wizard/start/index.html @@ -19,7 +19,7 @@
diff --git a/src/controllers/wizard/user/index.html b/src/controllers/wizard/user/index.html index 3ce0b3ba74..24429d043a 100644 --- a/src/controllers/wizard/user/index.html +++ b/src/controllers/wizard/user/index.html @@ -23,10 +23,10 @@
diff --git a/src/scripts/itembynamedetailpage.js b/src/scripts/itembynamedetailpage.js index 7a56be6781..306282b5fd 100644 --- a/src/scripts/itembynamedetailpage.js +++ b/src/scripts/itembynamedetailpage.js @@ -32,7 +32,7 @@ function renderItems(page, item) { if (item.SeriesCount) { sections.push({ - name: globalize.translate('TabShows'), + name: globalize.translate('Shows'), type: 'Series' }); } diff --git a/src/scripts/libraryBrowser.js b/src/scripts/libraryBrowser.js index 83d683a690..debae200c0 100644 --- a/src/scripts/libraryBrowser.js +++ b/src/scripts/libraryBrowser.js @@ -105,7 +105,7 @@ export function getQueryPagingHtml (options) { } if (options.sortButton) { - html += ''; + html += ''; } if (options.filterButton) { diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 543aa6f3d0..29d859740a 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -567,7 +567,7 @@ import 'flexStyles'; view.ImageTags = {}; view.icon = 'live_tv'; const guideView = Object.assign({}, view); - guideView.Name = globalize.translate('ButtonGuide'); + guideView.Name = globalize.translate('Guide'); guideView.ImageTags = {}; guideView.icon = 'dvr'; guideView.url = 'livetv.html?tab=1'; From a9f9444bf7b8750060f230cb52b2a58c4048a27d Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 13 Aug 2020 21:38:57 +0900 Subject: [PATCH 359/463] merge most tab and header strings --- src/components/channelMapper/channelMapper.js | 2 +- src/components/filterdialog/filterdialog.template.html | 2 +- .../mediaLibraryCreator.template.html | 2 +- .../mediaLibraryEditor.template.html | 2 +- src/components/multiSelect/multiSelect.js | 2 +- src/controllers/dashboard/devices/devices.html | 2 +- src/controllers/dashboard/users/userlibraryaccess.js | 2 +- src/controllers/dashboard/users/usernew.js | 2 +- src/controllers/itemDetails/index.html | 2 +- src/controllers/livetv.html | 2 +- src/controllers/livetv/livetvsuggested.js | 2 +- src/controllers/movies/moviesrecommended.js | 10 +++++----- src/controllers/music/musicrecommended.js | 2 +- src/controllers/session/addServer/index.html | 2 +- src/controllers/shows/tvrecommended.js | 2 +- src/controllers/user/profile/index.html | 2 +- src/scripts/itembynamedetailpage.js | 2 +- src/scripts/libraryMenu.js | 6 +++--- 18 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/components/channelMapper/channelMapper.js b/src/components/channelMapper/channelMapper.js index 89d085c185..24f506b9dd 100644 --- a/src/components/channelMapper/channelMapper.js +++ b/src/components/channelMapper/channelMapper.js @@ -93,7 +93,7 @@ export default class channelMapper { html += '
'; html += '
'; html += '
'; - html += `

${globalize.translate('HeaderChannels')}

`; + html += `

${globalize.translate('Channels')}

`; html += '
'; html += '
'; html += '
'; diff --git a/src/components/filterdialog/filterdialog.template.html b/src/components/filterdialog/filterdialog.template.html index f4bbfe7395..1d61f3923e 100644 --- a/src/components/filterdialog/filterdialog.template.html +++ b/src/components/filterdialog/filterdialog.template.html @@ -90,7 +90,7 @@
-
+
diff --git a/src/components/mediaLibraryCreator/mediaLibraryCreator.template.html b/src/components/mediaLibraryCreator/mediaLibraryCreator.template.html index 2884ce256c..4d84544d06 100644 --- a/src/components/mediaLibraryCreator/mediaLibraryCreator.template.html +++ b/src/components/mediaLibraryCreator/mediaLibraryCreator.template.html @@ -24,7 +24,7 @@
-

${HeadersFolders}

+

${Folders}

diff --git a/src/components/mediaLibraryEditor/mediaLibraryEditor.template.html b/src/components/mediaLibraryEditor/mediaLibraryEditor.template.html index ae7d65e1e5..1f2581612d 100644 --- a/src/components/mediaLibraryEditor/mediaLibraryEditor.template.html +++ b/src/components/mediaLibraryEditor/mediaLibraryEditor.template.html @@ -18,7 +18,7 @@
-

${HeadersFolders}

+

${Folders}

diff --git a/src/components/multiSelect/multiSelect.js b/src/components/multiSelect/multiSelect.js index d922aee84a..fdce40ab86 100644 --- a/src/components/multiSelect/multiSelect.js +++ b/src/components/multiSelect/multiSelect.js @@ -198,7 +198,7 @@ import 'css!./multiSelect'; if (user.Policy.EnableContentDownloading && appHost.supports('filedownload')) { menuItems.push({ - name: globalize.translate('ButtonDownload'), + name: globalize.translate('Download'), id: 'download', icon: 'file_download' }); diff --git a/src/controllers/dashboard/devices/devices.html b/src/controllers/dashboard/devices/devices.html index 55f51d7e23..63c348c900 100644 --- a/src/controllers/dashboard/devices/devices.html +++ b/src/controllers/dashboard/devices/devices.html @@ -3,7 +3,7 @@
-

${TabDevices}

+

${HeaderDevices}

${Help}
diff --git a/src/controllers/dashboard/users/userlibraryaccess.js b/src/controllers/dashboard/users/userlibraryaccess.js index d32c7312b7..146777a0db 100644 --- a/src/controllers/dashboard/users/userlibraryaccess.js +++ b/src/controllers/dashboard/users/userlibraryaccess.js @@ -32,7 +32,7 @@ import globalize from 'globalize'; function loadChannels(page, user, channels) { let html = ''; - html += '

' + globalize.translate('HeaderChannels') + '

'; + html += '

' + globalize.translate('Channels') + '

'; html += '
'; for (let i = 0, length = channels.length; i < length; i++) { diff --git a/src/controllers/dashboard/users/usernew.js b/src/controllers/dashboard/users/usernew.js index d3ff449d02..68b6365c02 100644 --- a/src/controllers/dashboard/users/usernew.js +++ b/src/controllers/dashboard/users/usernew.js @@ -22,7 +22,7 @@ import 'emby-checkbox'; function loadChannels(page, channels) { let html = ''; - html += '

' + globalize.translate('HeaderChannels') + '

'; + html += '

' + globalize.translate('Channels') + '

'; html += '
'; for (let i = 0; i < channels.length; i++) { diff --git a/src/controllers/itemDetails/index.html b/src/controllers/itemDetails/index.html index 9aff1efa14..8c16daba99 100644 --- a/src/controllers/itemDetails/index.html +++ b/src/controllers/itemDetails/index.html @@ -24,7 +24,7 @@
-
diff --git a/src/scripts/itembynamedetailpage.js b/src/scripts/itembynamedetailpage.js index 306282b5fd..60be838448 100644 --- a/src/scripts/itembynamedetailpage.js +++ b/src/scripts/itembynamedetailpage.js @@ -25,7 +25,7 @@ function renderItems(page, item) { if (item.MovieCount) { sections.push({ - name: globalize.translate('TabMovies'), + name: globalize.translate('Movies'), type: 'Movie' }); } diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 29d859740a..5ee485e815 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -395,10 +395,10 @@ import 'flexStyles'; addPluginPagesToMainMenu(links, pluginItems, 'server'); links.push({ divider: true, - name: globalize.translate('TabDevices') + name: globalize.translate('HeaderDevices') }); links.push({ - name: globalize.translate('TabDevices'), + name: globalize.translate('HeaderDevices'), href: 'devices.html', pageIds: ['devicesPage', 'devicePage'], icon: 'devices' @@ -426,7 +426,7 @@ import 'flexStyles'; icon: 'live_tv' }); links.push({ - name: globalize.translate('TabDVR'), + name: globalize.translate('HeaderDVR'), href: 'livetvsettings.html', pageIds: ['liveTvSettingsPage'], icon: 'dvr' From e21397b38b137921c567d2e9173f8b94d393c67d Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 13 Aug 2020 21:43:25 +0900 Subject: [PATCH 360/463] remove unused translations --- src/strings/af.json | 9 --------- src/strings/ar.json | 33 --------------------------------- src/strings/be-by.json | 3 --- src/strings/bg-bg.json | 35 ----------------------------------- src/strings/ca.json | 30 ------------------------------ src/strings/cs.json | 35 ----------------------------------- src/strings/da.json | 34 ---------------------------------- src/strings/de.json | 35 ----------------------------------- src/strings/el.json | 34 ---------------------------------- src/strings/en-gb.json | 35 ----------------------------------- src/strings/en-us.json | 35 ----------------------------------- src/strings/es-ar.json | 35 ----------------------------------- src/strings/es-mx.json | 35 ----------------------------------- src/strings/es.json | 35 ----------------------------------- src/strings/es_419.json | 35 ----------------------------------- src/strings/fa.json | 35 ----------------------------------- src/strings/fi.json | 34 ---------------------------------- src/strings/fr-ca.json | 14 -------------- src/strings/fr.json | 35 ----------------------------------- src/strings/gsw.json | 9 --------- src/strings/he.json | 33 --------------------------------- src/strings/hi-in.json | 11 ----------- src/strings/hr.json | 34 ---------------------------------- src/strings/hu.json | 35 ----------------------------------- src/strings/id.json | 14 -------------- src/strings/is-is.json | 22 ---------------------- src/strings/it.json | 35 ----------------------------------- src/strings/ja.json | 34 ---------------------------------- src/strings/kk.json | 34 ---------------------------------- src/strings/ko.json | 34 ---------------------------------- src/strings/lt-lt.json | 32 -------------------------------- src/strings/lv.json | 33 --------------------------------- src/strings/mr.json | 10 ---------- src/strings/ms.json | 10 ---------- src/strings/nb.json | 35 ----------------------------------- src/strings/nl.json | 35 ----------------------------------- src/strings/pl.json | 35 ----------------------------------- src/strings/pt-br.json | 35 ----------------------------------- src/strings/pt-pt.json | 34 ---------------------------------- src/strings/pt.json | 34 ---------------------------------- src/strings/ro.json | 35 ----------------------------------- src/strings/ru.json | 35 ----------------------------------- src/strings/sk.json | 35 ----------------------------------- src/strings/sl-si.json | 36 +----------------------------------- src/strings/sr.json | 12 ------------ src/strings/sv.json | 35 ----------------------------------- src/strings/tr.json | 30 ------------------------------ src/strings/uk.json | 19 ------------------- src/strings/vi.json | 26 -------------------------- src/strings/zh-cn.json | 35 ----------------------------------- src/strings/zh-hk.json | 27 --------------------------- src/strings/zh-tw.json | 35 ----------------------------------- 52 files changed, 1 insertion(+), 1523 deletions(-) diff --git a/src/strings/af.json b/src/strings/af.json index 8e34e87d60..53b658836e 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -2,7 +2,6 @@ "Auto": "Outo", "AuthProviderHelp": "Kies 'n Authentication Provider vir die egtheid van gebruiker se wagwoord.", "Audio": "Klank", - "AttributeNew": "Nuwe", "AspectRatio": "Aspek verhouding", "Ascending": "Boontoe", "AsManyAsPossible": "So veel moontlik", @@ -43,16 +42,11 @@ "AlbumArtist": "Album Kunstenaar", "TabLatest": "Nuutste", "TabInfo": "Inligting", - "TabGuide": "Gids", - "TabGenres": "Genres", - "TabFavorites": "Gunstellinge", "TabEpisodes": "Episodes", "TabDirectPlay": "Speel Direk", - "TabDevices": "Toestelle", "TabDashboard": "Paneelbord", "TabContainers": "Houers", "Collections": "Versamelings", - "TabCollections": "Versamelings", "UnsupportedPlayback": "Jellyfin kan nie inhoud wat beskerm word deur DRM ontsuifer nie, maar daar sal 'n poging aangwend word inelkgeval, insluitend beskermde titels. Sommige leêrs mag geheel en al swart verksyn weens enkripsie of ander on-ondersteunde funksies, byvoorbeeld interaktiewe titels.", "OnApplicationStartup": "Op applikasie begin", "EveryXHours": "Elke {0} ure", @@ -132,8 +126,6 @@ "TabUpcoming": "Komende", "TabTrailers": "Voorprente", "TabStreaming": "Stroom", - "TabSongs": "Liedjies", - "TabShows": "Programme", "TabSettings": "Instellings", "TabServer": "Bediener", "TabSeries": "Reekse", @@ -153,7 +145,6 @@ "TabNetworks": "Netwerke", "TabMusicVideos": "Musiek Videos", "TabMusic": "Musiek", - "TabMovies": "Rolprente", "TabLogs": "Logs", "TabLiveTV": "Lewendige TV" } diff --git a/src/strings/ar.json b/src/strings/ar.json index 862c985c85..24020ed834 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -15,19 +15,12 @@ "ButtonAddScheduledTaskTrigger": "إضافة زناد", "ButtonAddServer": "إضافة خادم", "ButtonAddUser": "اضافة مستخدم", - "ButtonArrowDown": "أسفل", "ButtonArrowLeft": "يسار", "ButtonArrowRight": "يمين", - "ButtonArrowUp": "أعلى", "ButtonAudioTracks": "المقاطع الصوتية", "ButtonBack": "خلف", "ButtonCancel": "الغاء", "ButtonChangeServer": "غير الخادم", - "ButtonConnect": "اتصل", - "ButtonDelete": "حذف", - "ButtonDeleteImage": "حذف الصورة", - "ButtonDown": "أسفل", - "ButtonDownload": "إنزال", "ButtonEdit": "تعديل", "ButtonEditImages": "تعديل الصور", "ButtonEditOtherUserPreferences": "اضبط إعدادات حساب المستخدم هذا، وصورته وتفضيلاته الشخصية.", @@ -41,7 +34,6 @@ "ButtonManualLogin": "الدخول اليدوي", "ButtonMore": "المزيد", "ButtonNetwork": "الشبكة", - "ButtonNew": "جديد", "ButtonNextTrack": "المقطوعة التالية", "ButtonOff": "إيقاف التشغيل", "ButtonOk": "موافق", @@ -66,18 +58,15 @@ "ButtonSelectView": "إختر طريقة عرض", "ButtonSend": "إرسال", "ButtonSettings": "الإعدادات", - "ButtonShuffle": "إخلط", "ButtonShutdown": "إنهاء التشغيل", "ButtonSignIn": "تسجيل الدخول", "ButtonSignOut": "تسجيل الخروج", - "ButtonSort": "ترتيب", "ButtonStart": "إبدأ", "ButtonStop": "إيقاف", "ButtonSubmit": "تسليم", "ButtonSubtitles": "ترجمات", "ButtonTrailer": "العرض الإعلاني", "ButtonUninstall": "إزالة التثبيت", - "ButtonUp": "أعلى", "ButtonWebsite": "موقع إلكتروني", "ChannelAccessHelp": "إختر قناة لمشاركتها مع هذا المستخدم. المدراء سيكونون قادرين على تغيير إعدادات القنوات باستخدام مدير واصفات البيانات.", "Channels": "القنوات", @@ -135,7 +124,6 @@ "HeaderAddUser": "إضافة مستخدم", "HeaderAdditionalParts": "أدوار إضافية", "HeaderAdmin": "المدير", - "HeaderAlbums": "الألبومات", "HeaderAlert": "تنبيه", "HeaderAllowMediaDeletionFrom": "السماح بحذف الوسائط من قبل", "HeaderApiKey": "مفتاح API", @@ -148,7 +136,6 @@ "HeaderCastAndCrew": "الممثلين وطاقم العمل", "HeaderCastCrew": "الممثلين والطاقم", "HeaderChannelAccess": "صلاحيات القنوات", - "HeaderChannels": "القنوات", "HeaderCodecProfile": "عريضة الكودك", "HeaderCodecProfileHelp": "عرائض الكودك تشير إلى محدودية جهاز ما عند تشغيل وسيطة مشفر بكودك معيّن. إن كان هناك أي محدودية مذكورة فستحال الوسيطة إلى التشغير البيني، حتى لو كانت الصيغة مضبوطة للعمل بتلقائية.", "HeaderConfirmPluginInstallation": "أكد عملية تثبيت الملحق", @@ -179,7 +166,6 @@ "HeaderForKids": "للأطفال", "HeaderForgotPassword": "نسيت كلمة السر", "HeaderFrequentlyPlayed": "تم تشغيله مراراً", - "HeaderGenres": "أنواع الأفلام", "HeaderGuideProviders": "مزودو الأدلة", "HeaderHttpHeaders": "رؤوس HTTP", "HeaderIdentification": "التعريفة", @@ -189,7 +175,6 @@ "HeaderImageSettings": "إعدادات الصورة", "HeaderInstall": "تثبيت", "HeaderInstantMix": "مزيج فوري", - "HeaderItems": "العناصر", "HeaderLatestEpisodes": "احدث الحلقات", "HeaderLatestMedia": "آحدث الوسائط", "HeaderLatestMovies": "أحدث الأفلام", @@ -205,7 +190,6 @@ "HeaderMediaFolders": "مجلدات الوسائط", "HeaderMediaInfo": "معلومات الوسيطة", "HeaderMoreLikeThis": "المزيد من الروابط لهذا", - "HeaderMovies": "الأفلام", "HeaderMusicVideos": "الفيديوهات الموسيقية", "HeaderMyMedia": "وسائطي", "HeaderNewApiKey": "مفتاح API جديد", @@ -252,7 +236,6 @@ "HeaderServerSettings": "إعدادات الخادم", "HeaderSettings": "الإعدادات", "HeaderSetupLibrary": "ضبط مكتبة المحتوى الخاصة بك", - "HeaderShutdown": "إنهاء التشغيل", "HeaderSortBy": "ترتيب حسب", "HeaderSortOrder": "تسلسل الترتيب", "HeaderSpecialEpisodeInfo": "معلومات الحلقة الخاصة", @@ -281,7 +264,6 @@ "HeaderXmlDocumentAttributes": "سمات مستند xml", "HeaderXmlSettings": "إعدادات xml", "HeaderYears": "السنوات", - "HeadersFolders": "مجلدات", "ImportFavoriteChannelsHelp": "فقط القنوات التي علّمت في المفضلة على جهاز المولف ستورد.", "ImportMissingEpisodesHelp": "المعلومات الناقصة للحلقات ستورّد إلى قاعدة بياناتك وستعرض داخل المواسم والمسلسلات. قد تتسبب هذه بأوقات أطول بكثير عند تمشيط المكتبات.", "LabelAbortedByServerShutdown": "(تم إهماله بسبب عملية إغلاق الخادم)", @@ -446,7 +428,6 @@ "LabelNewPassword": "كلمة السر الجديدة:", "LabelNewPasswordConfirm": "تأكيد كلمة السر الجديدة:", "LabelNewsCategories": "التصنيفات الأخبارية:", - "LabelNext": "التالي", "LabelNotificationEnabled": "تفعيل هذه الإشعارات", "LabelNumberOfGuideDays": "عدد أيام بيانات الدليل للإنزال:", "LabelNumberOfGuideDaysHelp": "إنزال أيام أكثر من بيانات الدليل ستوفر أمكانية جدولة أيام أبعد وإظهار قوائم أطول للبرامج، لكنها ستأخذ وقتاً أطول للإنزال. االخيار الآلي سوف يتخيّر بناء على عدد القنوات المتاحة.", @@ -462,7 +443,6 @@ "LabelPostProcessorArgumentsHelp": "استخدم المسار: {path} كمسار لملف التسجيل.", "LabelPreferredDisplayLanguage": "لغة الواجهة المفضلة:", "LabelPreferredDisplayLanguageHelp": "إن ترجمة أمبي هو مشروع جاري التنفيذ.", - "LabelPrevious": "السابق", "LabelProfileAudioCodecs": "كودك تشفير الصوت", "LabelProfileCodecs": "الكودكات:", "LabelProfileCodecsHelp": "يجب فصل العناصر بفواصل (,). يمكن أن تترك هذه فارغة إذا أريد تطبيقها على كل الكودكات.", @@ -476,7 +456,6 @@ "LabelPublicHttpPortHelp": "رقم المنفذ العالمي الذي يجب أن يوافق منفذ http المحلي.", "LabelPublicHttpsPort": "رقم منفذ https العالمي:", "LabelPublicHttpsPortHelp": "رقم المنفذ العالمي الذي يجب أن يوافق منفذ https المحلي.", - "LabelReadHowYouCanContribute": "تعرّف على كيفية المساهمة فيه.", "LabelRecordingPath": "المسار الافتراضي للمقاطع المسجلة:", "LabelRecordingPathHelp": "حدد موقع افتراضي لحفظ المقاطع المسجلة، لو تركت هذه الخانة فارغة، فسيستعمل مجلد بيانات البرنامج.", "LabelReleaseDate": "تاريخ الإصدار", @@ -785,24 +764,16 @@ "TabAccess": "الدخول", "TabAdvanced": "متقدم", "TabAlbumArtists": "فنانو الألبومات", - "TabAlbums": "الألبومات", "TabCatalog": "الكتالوج", - "TabChannels": "القنوات", "TabCodecs": "الكودكات", - "TabCollections": "المجاميع", "TabContainers": "الحاويات", "TabDashboard": "لوحة العدادات", - "TabDevices": "الأجهزة", "TabDirectPlay": "تشغيل مباشر", "TabEpisodes": "الحلقات", - "TabFavorites": "المفضلة", - "TabGenres": "أنواع الأفلام", - "TabGuide": "الدليل", "TabInfo": "معلومات", "TabLatest": "الاخير", "TabLiveTV": "التلفاز المباشر", "TabLogs": "الكشوفات", - "TabMovies": "الفيلم", "TabMusic": "الموسيقى", "TabMusicVideos": "الفيديوهات الموسيقية", "TabMyPlugins": "ملحقاتي", @@ -823,8 +794,6 @@ "TabSeries": "المسلسلات", "TabServer": "الخادم", "TabSettings": "الإعدادات", - "TabShows": "المسلسلات", - "TabSongs": "الاغانى", "TabStreaming": "التشغيل التدفقي", "TabTrailers": "العروض الإعلانية", "TabUpcoming": "القادم", @@ -916,7 +885,6 @@ "Auto": "تلقائي", "AuthProviderHelp": "اختار مقدم المصادقة ليتم استخدامه لمصادقة كلمة مرور هذا المستخدم.", "AroundTime": "حول", - "AttributeNew": "جديد", "AspectRatio": "نسبة العرض الى الارتفاع", "Ascending": "تصاعدي", "AsManyAsPossible": "أكبر عدد ممكن", @@ -1108,7 +1076,6 @@ "EnableColorCodedBackgrounds": "تصنيف الخلفيات حسب اللون", "EnableCinemaMode": "وضع السينما", "EnableBackdropsHelp": "اعرض الخلفيات في خلفية بعض الصفحات أثناء تصفح المكتبة.", - "EnableBackdrops": "الخلفيات", "DownloadsValue": "عدد التنزيلات {0}", "Download": "تحميل", "Down": "أسفل", diff --git a/src/strings/be-by.json b/src/strings/be-by.json index e8726bf216..8bd6d2aa31 100644 --- a/src/strings/be-by.json +++ b/src/strings/be-by.json @@ -1,6 +1,5 @@ { "ButtonCancel": "Адмяніць", - "ButtonNew": "Новае", "ButtonOk": "ОК", "ButtonQuickStartGuide": "Кіраўніцтва па запуску", "ButtonSignOut": "Sign out", @@ -9,8 +8,6 @@ "HeaderPaths": "Шляхі", "HeaderTaskTriggers": "Трыгеры задачы", "LabelFinish": "Гатова", - "LabelNext": "Наступнае", - "LabelPrevious": "Папярэдняе", "LabelYoureDone": "Вы скончылі!", "MoreUsersCanBeAddedLater": "Потым можна дадаць яшчэ карыстальнікаў праз «Інфапанэль».", "TellUsAboutYourself": "Раскажыце пра сябе", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index 20337a876a..4ab46a6eab 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -11,7 +11,6 @@ "AllLibraries": "Всички библиотеки", "Art": "Картина", "Artists": "Артисти", - "AttributeNew": "Нови", "Audio": "Звук", "Auto": "Автоматично", "Backdrop": "Фон", @@ -24,16 +23,11 @@ "ButtonAddScheduledTaskTrigger": "Добавяне на спусък", "ButtonAddServer": "Добавяне на сървър", "ButtonAddUser": "Добавяне на потребител", - "ButtonArrowDown": "Надолу", "ButtonArrowLeft": "Наляво", "ButtonArrowRight": "Надясно", - "ButtonArrowUp": "Нагоре", "ButtonAudioTracks": "Звукови пътеки", "ButtonBack": "Назад", "ButtonCancel": "Отмяна", - "ButtonDelete": "Изтриване", - "ButtonDeleteImage": "Изтриване на изобр.", - "ButtonDownload": "Изтегляне", "ButtonEdit": "Редактиране", "ButtonEditImages": "Редактиране на изображенията", "ButtonFilter": "Филтър", @@ -45,7 +39,6 @@ "ButtonLibraryAccess": "Достъп до библиотеката", "ButtonManualLogin": "Вход с име и парола", "ButtonMore": "Още", - "ButtonNew": "Нов", "ButtonNextTrack": "Следваща пътека", "ButtonOff": "Изключено", "ButtonOk": "Добре", @@ -67,11 +60,9 @@ "ButtonSelectDirectory": "Изберете папка", "ButtonSend": "Изпращане", "ButtonSettings": "Настройки", - "ButtonShuffle": "Пускане в разбъркан ред", "ButtonShutdown": "Загасяне", "ButtonSignIn": "Вписване", "ButtonSignOut": "Отписване", - "ButtonSort": "Подреждане", "ButtonStop": "Спиране", "ButtonSubmit": "Подаване", "ButtonSubtitles": "Субтитри", @@ -106,7 +97,6 @@ "EditImages": "Редактиране на изображенията", "EditMetadata": "Редактиране на метаданните", "EditSubtitles": "Редактиране на субтитрите", - "EnableBackdrops": "Фонове", "EnableCinemaMode": "Режим \"Киносалон\"", "EnableThemeSongs": "Тематични песни", "Ended": "Приключило", @@ -148,7 +138,6 @@ "HeaderAdditionalParts": "Допълнителни части", "HeaderAdmin": "Администриране", "HeaderAlbumArtists": "Изпълнители на албуми", - "HeaderAlbums": "Албуми", "HeaderApiKey": "ППИ ключ", "HeaderApiKeys": "ППИ ключове", "HeaderApp": "Програма", @@ -156,7 +145,6 @@ "HeaderBooks": "Книги", "HeaderCastAndCrew": "Артисти и изпълнители", "HeaderCastCrew": "Артисти и изпълнители", - "HeaderChannels": "Канали", "HeaderCodecProfile": "Профил на кодека", "HeaderContainerProfile": "Профил на контейнера", "HeaderContinueListening": "Продължаване на слушането", @@ -177,7 +165,6 @@ "HeaderForKids": "Детски", "HeaderForgotPassword": "Забравена парола", "HeaderFrequentlyPlayed": "Често пускани", - "HeaderGenres": "Жанрове", "HeaderGuideProviders": "Доставчици на справочници", "HeaderIdentification": "Идентификация", "HeaderImageSettings": "Настройки на картината", @@ -200,7 +187,6 @@ "HeaderMediaInfo": "Сведения", "HeaderMetadataSettings": "Настройки на метаданните", "HeaderMoreLikeThis": "Подобни", - "HeaderMovies": "Филми", "HeaderMusicQuality": "Качество на музиката", "HeaderMusicVideos": "Музикални клипове", "HeaderMyDevice": "Моето устройство", @@ -256,7 +242,6 @@ "HeaderVideoQuality": "Качество на видеото", "HeaderVideos": "Видеоклипове", "HeaderYears": "Години", - "HeadersFolders": "Папки", "Help": "Помощ", "Hide": "Скриване", "HideWatchedContentFromLatestMedia": "Скриване на гледаното съдържание от последната медия", @@ -367,7 +352,6 @@ "LabelNewName": "Ново име:", "LabelNewPassword": "Нова парола:", "LabelNewPasswordConfirm": "Нова парола (отново):", - "LabelNext": "Следващ", "LabelNumberOfGuideDays": "Брой дни за които да се свали програма:", "LabelNumberOfGuideDaysHelp": "Изтеглянето на програма заповече дни дава възможност да планирате по-нататъшните записи предварително, но и отнема повече време, за да се изтегли. Автомат ще избере въз основа на броя на каналите.", "LabelOptionalNetworkPath": "Споделена мрежова папка (незадължително):", @@ -385,7 +369,6 @@ "LabelPreferredDisplayLanguage": "Предпочитан език на показване:", "LabelPreferredDisplayLanguageHelp": "Превеждането на Емби е текущ проект.", "LabelPreferredSubtitleLanguage": "Предпочитан език на субтитрите:", - "LabelPrevious": "Предишен", "LabelProfileAudioCodecs": "Звукови кодеци:", "LabelProfileCodecs": "Кодеци:", "LabelProfileCodecsHelp": "Разделени със запетая. Може да бъде оставено празно, за да се отнася за всички кодеци.", @@ -397,7 +380,6 @@ "LabelPublicHttpPortHelp": "Публичният порт, който да бъде съпоставен с локалния HTTP порт.", "LabelPublicHttpsPort": "Публичен HTTPS порт:", "LabelPublicHttpsPortHelp": "Публичният порт, който да бъде съпоставен с локалния HTTPS порт.", - "LabelReadHowYouCanContribute": "Научете как можете да допринесете.", "LabelRecordingPath": "Път за запис по подразбиране:", "LabelReleaseDate": "Дата на издаване:", "LabelRemoteClientBitrateLimit": "Ограничение на интернетното излъчване (мбит/сек):", @@ -494,7 +476,6 @@ "News": "Новини", "MessageNoNextUpItems": "Нищо не е намерено. Започнете да гледате вашите предавания!", "NoSubtitleSearchResultsFound": "Няма намерени резултати.", - "NoSubtitles": "Без", "None": "Нищо", "Normal": "Нормален", "NumLocationsValue": "{0} папки", @@ -668,24 +649,16 @@ "TabAccess": "Достъп", "TabAdvanced": "Допълнителни", "TabAlbumArtists": "Изпълнители на албуми", - "TabAlbums": "Албуми", "TabCatalog": "Каталог", - "TabChannels": "Канали", "TabCodecs": "Кодеци", - "TabCollections": "Колекции", "TabContainers": "Контейнери", "TabDashboard": "Табло", - "TabDevices": "Устройства", "TabDirectPlay": "Директно пускане", "TabEpisodes": "Епизоди", - "TabFavorites": "Любими", - "TabGenres": "Жанрове", - "TabGuide": "Ръководство", "TabInfo": "Информация", "TabLatest": "Последни", "TabLiveTV": "Телевизия на живо", "TabLogs": "Журнали", - "TabMovies": "Филми", "TabMusic": "Музика", "TabMusicVideos": "Музикални клипове", "TabMyPlugins": "Моите приставки", @@ -706,8 +679,6 @@ "TabSeries": "Сериали", "TabServer": "Сървър", "TabSettings": "Настройки", - "TabShows": "Предавания", - "TabSongs": "Песни", "TabStreaming": "Излъчване", "TabTrailers": "Трейлъри", "TabUpcoming": "Предстоящи", @@ -794,15 +765,12 @@ "ReplaceExistingImages": "Заменяне на текущите изображения", "Channels": "Канали", "Categories": "Категории", - "ButtonUp": "Нагоре", "ButtonTrailer": "Предварителен откъс", "ButtonStart": "Пускане", "ButtonSelectView": "Изберете изглед", "ButtonSelectServer": "Изберете сървър", "ButtonNetwork": "Мрежа", "ButtonFullscreen": "На цял екран", - "ButtonDown": "Надолу", - "ButtonConnect": "Свързване", "AllowOnTheFlySubtitleExtraction": "Позволява моментално извличане на поднадписи", "AllowHWTranscodingHelp": "Позволява на тунера да прекодира моментално. Това може да помогне за редуциране на прекодирането от сървъра.", "Absolute": "Aбсолютен", @@ -987,7 +955,6 @@ "HeaderSubtitleDownloads": "Сваляне на субтитри", "HeaderStopRecording": "Спри запис", "HeaderSpecialEpisodeInfo": "Информация за специалните епизоди", - "HeaderShutdown": "Изключване", "HeaderServerAddressSettings": "Настройки за адреса на сървъра", "HeaderSeriesStatus": "Състояние на сериала", "HeaderSeriesOptions": "Настройки на сериала", @@ -1017,7 +984,6 @@ "HeaderKodiMetadataHelp": "За да включиш или изключиш използването на NFO метаданните влез в настройките за библиотеки на сървъра и намери секцията за съхранение.", "HeaderKeepSeries": "Запази сериалите", "HeaderKeepRecording": "Запази записите", - "HeaderItems": "Елементи", "HeaderImageOptions": "Настройки на картини", "HeaderIdentifyItemHelp": "Въведете един или повече критерии за търсене.Премахнете ,ако искате да увеличите резултатите при търсенето.", "HeaderIdentificationHeader": "Идентификационен хедър", @@ -1207,7 +1173,6 @@ "TitleHostingSettings": "Настройки за хостинг", "TitleHardwareAcceleration": "Хардуерно ускорение", "TabNetworking": "Работа в мрежа", - "TabDVR": "ДВР", "SystemDlnaProfilesHelp": "Системните профили са с достъп \"само за четене\".При промяна в системния профил ще бъде създаден нов персонализиран профил.", "SyncPlayAccessHelp": "Избери нивото на достъп ,който този потребител ще има за услугата \"Синхронизирано възпроизвеждане\".С нейна помощ може да синхронизирате възпроизвеждането с други устройства.", "SubtitleOffset": "Изместване на субтитрите", diff --git a/src/strings/ca.json b/src/strings/ca.json index 4033ba56c4..c5f7f2d6de 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -12,23 +12,17 @@ "Artists": "Artistes", "AsManyAsPossible": "Tants com sigui possible", "AspectRatio": "Relació d'aspecte", - "AttributeNew": "Nou", "Audio": "Àudio", "MessageBrowsePluginCatalog": "Consulta el nostre catàleg per veure els complements disponibles.", "ButtonAddMediaLibrary": "Afegir Biblioteca Multimèdia", "ButtonAddScheduledTaskTrigger": "Afegir Disparador", "ButtonAddServer": "Afegeix Servidor", "ButtonAddUser": "Afegir Usuari", - "ButtonArrowDown": "Avall", "ButtonArrowLeft": "Esquerra", "ButtonArrowRight": "Dreta", - "ButtonArrowUp": "Amunt", "ButtonBack": "Darrera", "ButtonCancel": "Cancel·la", "ButtonChangeServer": "Canvia Servidor", - "ButtonDelete": "Esborra", - "ButtonDeleteImage": "Esborra Imatge", - "ButtonDownload": "Descarrega", "ButtonEdit": "Edita", "ButtonEditImages": "Edita les imatges", "ButtonEditOtherUserPreferences": "Edita el perfil, la imatge i les preferències d'aquest usuari.", @@ -40,7 +34,6 @@ "ButtonLibraryAccess": "Accés a la biblioteca", "ButtonManualLogin": "Inici de sessió manual", "ButtonMore": "Més", - "ButtonNew": "Nou", "ButtonNextTrack": "Pista següent", "ButtonOk": "D'acord", "ButtonOpen": "Obre", @@ -61,11 +54,9 @@ "ButtonSelectServer": "Seleccionar servidor", "ButtonSend": "Envia", "ButtonSettings": "Preferències", - "ButtonShuffle": "Aleatori", "ButtonShutdown": "Atura", "ButtonSignIn": "Inicia Sessió", "ButtonSignOut": "Tanca sessió", - "ButtonSort": "Ordena", "ButtonStop": "Atura", "ButtonSubmit": "Envia", "ButtonSubtitles": "Subtítols", @@ -138,7 +129,6 @@ "HeaderCancelSeries": "Cancel·lar Sèries", "HeaderCastAndCrew": "Repartiment i Equip", "HeaderCastCrew": "Repartiment i Equip", - "HeaderChannels": "Canals", "HeaderCodecProfile": "Perfil de Còdec", "HeaderConfirmProfileDeletion": "Confirmar Supressió de Perfil", "HeaderConnectToServer": "Connectar al Servidor", @@ -163,7 +153,6 @@ "HeaderFetchImages": "Obtingues Imatges:", "HeaderForgotPassword": "He oblidat la contrasenya", "HeaderFrequentlyPlayed": "Reproduït Freqüentment", - "HeaderGenres": "Gèneres", "HeaderHttpHeaders": "Capçaleres Http", "HeaderIdentification": "Identificació", "HeaderIdentificationCriteriaHelp": "Insereix al menys un criteri d'identificació.", @@ -188,7 +177,6 @@ "HeaderMediaFolders": "Directoris Multimèdia", "HeaderMediaInfo": "Info Multimèdia", "HeaderMetadataSettings": "Preferències de Metadades", - "HeaderMovies": "Pel·lícules", "HeaderMusicVideos": "Vídeos Musicals", "HeaderMyDevice": "El meu dispositiu", "HeaderMyMedia": "Els meus mitjans", @@ -245,7 +233,6 @@ "HeaderXmlDocumentAttributes": "Atributs de Documents XML", "HeaderXmlSettings": "Preferències Xml", "HeaderYears": "Anys", - "HeadersFolders": "Directoris", "Help": "Ajuda", "Hide": "Amaga", "Identify": "Identifica", @@ -358,7 +345,6 @@ "LabelNewName": "Nou nom:", "LabelNewPassword": "Nova contrasenya:", "LabelNewPasswordConfirm": "Confirma la nova contrasenya:", - "LabelNext": "Següent", "LabelNotificationEnabled": "Habilita aquesta notificació", "LabelNumber": "Nombre:", "LabelNumberOfGuideDays": "Nombre de dies de dades de la guia per a descarregar:", @@ -376,7 +362,6 @@ "LabelPreferredDisplayLanguage": "Idioma de visualització preferit:", "LabelPreferredDisplayLanguageHelp": "La traducció d'Jellyfin és un projecte en curs.", "LabelPreferredSubtitleLanguage": "Idioma preferit de subtítols:", - "LabelPrevious": "Anterior", "LabelProfileAudioCodecs": "Còdecs d'àudio:", "LabelProfileCodecs": "Còdecs:", "LabelProfileContainer": "Contenidor:", @@ -384,7 +369,6 @@ "LabelProtocolInfo": "Informació del protocol:", "LabelPublicHttpPort": "Número públic del port http:", "LabelPublicHttpsPort": "Número públic del port https:", - "LabelReadHowYouCanContribute": "Aprèn com pots contribuir.", "LabelRecord": "Enregistra:", "LabelRecordingPath": "Directori de gravació per defecte:", "LabelRefreshMode": "Mode de refresc:", @@ -477,7 +461,6 @@ "MessageNoNextUpItems": "Cap trobat. Comença a mirar els teus programes!", "MessageNoPluginConfiguration": "Aquest complement no té opcions de configuració.", "NoSubtitleSearchResultsFound": "No s'han trobat resultats.", - "NoSubtitles": "Sense subtítols", "None": "Cap", "NumLocationsValue": "{0} directoris", "OnlyForcedSubtitles": "Només subtítols forçats", @@ -633,23 +616,15 @@ "Sync": "Sincronitzar", "TabAccess": "Accés", "TabAdvanced": "Avançat", - "TabAlbums": "Àlbums", "TabCatalog": "Catàleg", - "TabChannels": "Canals", "TabCodecs": "Còdecs", - "TabCollections": "Col·leccions", "TabContainers": "Contenidors", "TabDashboard": "Tauler de Control", - "TabDevices": "Dispositius", "TabDirectPlay": "Reproducció Directa", "TabEpisodes": "Episodis", - "TabFavorites": "Preferits", - "TabGenres": "Gèneres", - "TabGuide": "Guia", "TabInfo": "Informació", "TabLatest": "Novetats", "TabLiveTV": "TV en Directe", - "TabMovies": "Pel·lícules", "TabMusic": "Música", "TabMusicVideos": "Vídeos musicals", "TabMyPlugins": "Els meus complements", @@ -669,8 +644,6 @@ "TabSeries": "Sèries", "TabServer": "Servidor", "TabSettings": "Preferències", - "TabShows": "Programes", - "TabSongs": "Cançons", "TabTrailers": "Tràilers", "TabUpcoming": "Properament", "TabUsers": "Usuaris", @@ -722,7 +695,6 @@ "ChannelNumber": "Número de canal", "Categories": "Categories", "ButtonWebsite": "Lloc web", - "ButtonUp": "Amunt", "ButtonUninstall": "Desinstal·lar", "ButtonSplit": "Dividir", "ButtonStart": "Començar", @@ -733,8 +705,6 @@ "ButtonNetwork": "Xarxa", "ButtonInfo": "Informació", "ButtonFullscreen": "Pantalla completa", - "ButtonDown": "A baix", - "ButtonConnect": "Connectar", "ButtonAudioTracks": "Pistes d'àudio", "ButtonAddImage": "Afegir imatge", "Blacklist": "Llista negra", diff --git a/src/strings/cs.json b/src/strings/cs.json index 85d4b175f2..daa4573874 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -21,7 +21,6 @@ "Artists": "Umělci", "AsManyAsPossible": "Tolikrát jak je možné", "AspectRatio": "Poměr stran", - "AttributeNew": "Nové", "Audio": "Zvuk", "Auto": "Automaticky", "Backdrop": "Pozadí", @@ -38,19 +37,12 @@ "ButtonAddScheduledTaskTrigger": "Přidat Spouštěč", "ButtonAddServer": "Přidat server", "ButtonAddUser": "Přidat uživatele", - "ButtonArrowDown": "Dolů", "ButtonArrowLeft": "Vlevo", "ButtonArrowRight": "Vpravo", - "ButtonArrowUp": "Nahoru", "ButtonAudioTracks": "Audio stopy", "ButtonBack": "Zpět", "ButtonCancel": "Zrušit", "ButtonChangeServer": "Změna serveru", - "ButtonConnect": "Připojit", - "ButtonDelete": "Odstranit", - "ButtonDeleteImage": "Odstranit obrázek", - "ButtonDown": "Zeslabit", - "ButtonDownload": "Stáhnout", "ButtonEdit": "Upravit", "ButtonEditImages": "Editovat obrázky", "ButtonEditOtherUserPreferences": "Editace uživatelského profilu, avataru a osobních preferencí.", @@ -64,7 +56,6 @@ "ButtonManualLogin": "Manuální přihlášení", "ButtonMore": "Více", "ButtonNetwork": "Síť", - "ButtonNew": "Nové", "ButtonNextTrack": "Následující stopa", "ButtonOff": "Vypnout", "ButtonOpen": "Otevřít", @@ -87,17 +78,14 @@ "ButtonSelectView": "Výběr zobrazení", "ButtonSend": "Odeslat", "ButtonSettings": "Nastavení", - "ButtonShuffle": "Náhodně", "ButtonShutdown": "Vypnout", "ButtonSignIn": "Přihlásit se", "ButtonSignOut": "Odhlásit se", - "ButtonSort": "Seřadit", "ButtonStop": "Zastavit", "ButtonSubmit": "Potvrdit", "ButtonSubtitles": "Titulky", "ButtonTrailer": "Upoutávka", "ButtonUninstall": "Odinstalovat", - "ButtonUp": "Zesílit", "ButtonWebsite": "Webové stránky", "CancelRecording": "Zrušit nahrávání", "CancelSeries": "Ukončit Seriál", @@ -155,7 +143,6 @@ "Edit": "Upravit", "EditImages": "Editovat obrázky", "EditSubtitles": "Editovat titulky", - "EnableBackdrops": "Povolit pozadí", "EnableBackdropsHelp": "Pokud je povoleno, pozadí je zobrazeno pro některé stránky při procházení vaší knihovny.", "EnableCinemaMode": "Režim Cinema", "EnableColorCodedBackgrounds": "Barevně označené pozadí", @@ -223,7 +210,6 @@ "HeaderAdditionalParts": "Další součásti", "HeaderAdmin": "Administrátor", "HeaderAlbumArtists": "Umělci alba", - "HeaderAlbums": "Alba", "HeaderAlert": "Upozornění", "HeaderApiKey": "Klíč Api", "HeaderApiKeys": "Klíče API", @@ -238,7 +224,6 @@ "HeaderCastAndCrew": "Herci a obsazení", "HeaderCastCrew": "Herci a obsazení", "HeaderChannelAccess": "Přístup ke kanálu", - "HeaderChannels": "Kanály", "HeaderCodecProfile": "Profil kodeků", "HeaderCodecProfileHelp": "Kodek profily označují omezení daného zařízení pro přehrávání pomocí specifických kodeků. Jestliže je omezení aplikováno, média budou překódovany i v případě, že kodek je nakonfigurován pro přímé přehrávání.", "HeaderConfirmPluginInstallation": "Potvrzení instalace zásuvného modulu", @@ -274,7 +259,6 @@ "HeaderForKids": "Pro děti", "HeaderForgotPassword": "Zapomenuté heslo", "HeaderFrequentlyPlayed": "Nejčastěji přehráváno", - "HeaderGenres": "Žánry", "HeaderGuideProviders": "Poskytovatelé programových průvodců", "HeaderHttpHeaders": "Http hlavičky", "HeaderIdentification": "Identifikace", @@ -284,7 +268,6 @@ "HeaderImageSettings": "Nastavení obrázků", "HeaderInstall": "Instalovat", "HeaderInstantMix": "Okamžité míchání", - "HeaderItems": "Položky", "HeaderKeepRecording": "Udržet nahrávání", "HeaderKeepSeries": "Udržet seriál", "HeaderLatestEpisodes": "Nejnovější díly", @@ -303,7 +286,6 @@ "HeaderMediaInfo": "Informace o médiu", "HeaderMetadataSettings": "Nastavení metadat", "HeaderMoreLikeThis": "Podobné položky", - "HeaderMovies": "Filmy", "HeaderMusicQuality": "Kvalita hudby", "HeaderMusicVideos": "Hudební videa", "HeaderMyDevice": "Moje zařízení", @@ -359,7 +341,6 @@ "HeaderServerSettings": "Nastavení serveru", "HeaderSettings": "Nastavení", "HeaderSetupLibrary": "Nastavení Vašich knihoven médií", - "HeaderShutdown": "Vypnout", "HeaderSortBy": "Třídit dle", "HeaderSortOrder": "Pořadí třídění", "HeaderSpecialEpisodeInfo": "Infromace o speciální epizodě", @@ -390,7 +371,6 @@ "HeaderXmlDocumentAttributes": "Atributy XML dokumentu", "HeaderXmlSettings": "Nastavení XML", "HeaderYears": "Roky", - "HeadersFolders": "Složky", "Help": "Nápověda", "Hide": "Skrýt", "HideWatchedContentFromLatestMedia": "Skrýt přehrané položky ze seznamu nejnovějších médií", @@ -583,7 +563,6 @@ "LabelNewPassword": "Nové heslo:", "LabelNewPasswordConfirm": "Potvrzení hesla:", "LabelNewsCategories": "Nové kategorie:", - "LabelNext": "Další", "LabelNotificationEnabled": "Povolit toto oznámení", "LabelNumber": "Číslo:", "LabelNumberOfGuideDays": "Počet dnů programového průvodce ke stažení:", @@ -607,7 +586,6 @@ "LabelPreferredDisplayLanguage": "Preferovaný jazyk zobrazení:", "LabelPreferredDisplayLanguageHelp": "Překlad projektu Jellyfin se neustále vyvíjí.", "LabelPreferredSubtitleLanguage": "Preferovaný jazyk titulků:", - "LabelPrevious": "Předchozí", "LabelProfileAudioCodecs": "Audio kodeky:", "LabelProfileCodecs": "Kodeky:", "LabelProfileCodecsHelp": "Odděl čárkou. Pokud ponecháte prázdné, aplikují se všechny kodeky.", @@ -621,7 +599,6 @@ "LabelPublicHttpPortHelp": "Číslo veřejného portu, které by mělo být mapováno na místní port HTTP.", "LabelPublicHttpsPort": "Veřejný HTTPS port:", "LabelPublicHttpsPortHelp": "Číslo veřejného portu, které by mělo být mapováno na místní port HTTPS.", - "LabelReadHowYouCanContribute": "Zjistěte, jak můžete přispět.", "LabelRecord": "Záznam:", "LabelRecordingPath": "Standardní složka pro nahrávání:", "LabelRecordingPathHelp": "Určete výchozí umístění pro uložení nahrávky. Pokud je ponecháno prázdné, budou použity složky programu na serveru (data).", @@ -802,7 +779,6 @@ "MessageNoNextUpItems": "Nic nenalezeno. Začněte sledovat Vaše oblíbené seriály!", "MessageNoPluginConfiguration": "Tento zásuvný modul nemá žádné nastavení.", "NoSubtitleSearchResultsFound": "Žádné výsledky.", - "NoSubtitles": "Žádné", "NoSubtitlesHelp": "Ve výchozím nastavení nebudou titulky načteny. Během přehrávání však mohou být manuálně zapnuty.", "None": "Žádný", "Normal": "Normální", @@ -1051,21 +1027,13 @@ "TabAccess": "Přístup", "TabAdvanced": "Pokročilé", "TabAlbumArtists": "Umělci alba", - "TabAlbums": "Alba", "TabCatalog": "Katalog", - "TabChannels": "Kanály", "TabCodecs": "Kodeky", - "TabCollections": "Kolekce", "TabContainers": "Obaly", "TabDashboard": "Nástěnka", - "TabDevices": "Zařízení", "TabEpisodes": "Epizody", - "TabFavorites": "Oblíbené", - "TabGenres": "Žánry", - "TabGuide": "Programový průvodce", "TabLatest": "Nejnovější", "TabLogs": "Záznamy", - "TabMovies": "Filmy", "TabMusic": "Hudba", "TabMusicVideos": "Hudební videa", "TabMyPlugins": "Moje zásuvné moduly", @@ -1085,8 +1053,6 @@ "TabScheduledTasks": "Naplánované úlohy", "TabSeries": "Série", "TabSettings": "Nastavení", - "TabShows": "Seriály", - "TabSongs": "Skladby", "TabStreaming": "Streamování", "TabTrailers": "Upoutávky", "TabUpcoming": "Nadcházející", @@ -1464,7 +1430,6 @@ "HeaderHttpsSettings": "Nastavení HTTPS", "LabelRequireHttpsHelp": "Server automaticky přesměruje všechny požadavky z HTTP na HTTPS. Pokud server nenaslouchá na portu HTTPS, tato funkce nemá žádný účinek.", "LabelRequireHttps": "Vyžadovat HTTPS", - "TabDVR": "Nahrávání", "HeaderDVR": "Nahrávání", "SaveChanges": "Uložit změny", "LabelSyncPlayPlaybackDiff": "Rozdíl v době přehrávání:", diff --git a/src/strings/da.json b/src/strings/da.json index 7e4721a42b..e5c8655645 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -23,7 +23,6 @@ "AroundTime": "Omkring {0}", "AsManyAsPossible": "Så mange som muligt", "AspectRatio": "Billedformat", - "AttributeNew": "Ny", "Audio": "Lyd", "BirthDateValue": "Født: {0}", "BirthLocation": "Fødselslokation", @@ -35,19 +34,12 @@ "ButtonAddScheduledTaskTrigger": "Tilføj udløser", "ButtonAddServer": "Tilføj Server", "ButtonAddUser": "Tilføj bruger", - "ButtonArrowDown": "Ned", "ButtonArrowLeft": "Venstre", "ButtonArrowRight": "Højre", - "ButtonArrowUp": "Op", "ButtonAudioTracks": "Lysspor", "ButtonBack": "Tilbage", "ButtonCancel": "Annuller", "ButtonChangeServer": "Skift server", - "ButtonConnect": "Forbind", - "ButtonDelete": "Slet", - "ButtonDeleteImage": "Slet billede", - "ButtonDown": "Ned", - "ButtonDownload": "Hent", "ButtonEdit": "Rediger", "ButtonEditImages": "Rediger billeder", "ButtonEditOtherUserPreferences": "Rediger denne brugers profil, billede og personlige indstillinger.", @@ -59,7 +51,6 @@ "ButtonManualLogin": "Manuel Login", "ButtonMore": "Mere", "ButtonNetwork": "Netværk", - "ButtonNew": "Ny", "ButtonNextTrack": "Næste spor", "ButtonOff": "Fra", "ButtonOpen": "Åben", @@ -82,15 +73,12 @@ "ButtonSelectServer": "Vælg server", "ButtonSelectView": "Vælg visning", "ButtonSettings": "Indstillinger", - "ButtonShuffle": "Bland", "ButtonShutdown": "Luk", "ButtonSignIn": "Log Ind", "ButtonSignOut": "Log ud", - "ButtonSort": "Sortér", "ButtonSubmit": "Indsend", "ButtonSubtitles": "Undertekster", "ButtonUninstall": "Afinstaller", - "ButtonUp": "Op", "ButtonWebsite": "Hjemmeside", "CancelRecording": "Annuller optagelse", "CancelSeries": "Annuller serie", @@ -200,7 +188,6 @@ "HeaderCastAndCrew": "Medvirkende", "HeaderCastCrew": "Medvirkende", "HeaderChannelAccess": "Adgang til kanaler", - "HeaderChannels": "Kanaler", "HeaderChapterImages": "Kapitel Billeder", "HeaderCodecProfile": "Codec profil", "HeaderCodecProfileHelp": "Codec profiler angiver begrænsninger på en enhed for et specifikt codec. Hvis en begrænsning nås, vil indholdet blive transkodet, selv om codec'et er angivet til direkte afspilning.", @@ -240,7 +227,6 @@ "HeaderForKids": "For Børn", "HeaderForgotPassword": "Glemt adgangskode", "HeaderFrequentlyPlayed": "Ofte afspillet", - "HeaderGenres": "Genrer", "HeaderGuideProviders": "Guide Udbydere", "HeaderHttpHeaders": "HTTP Headers", "HeaderIdentification": "Identifikation", @@ -251,7 +237,6 @@ "HeaderImageSettings": "Billedindstillinger", "HeaderInstall": "Installer", "HeaderInstantMix": "Øjeblikkelig Mix", - "HeaderItems": "Element", "HeaderKeepRecording": "Bevar Optagelse", "HeaderKeepSeries": "Bevar Serie", "HeaderKodiMetadataHelp": "For at aktivere eller deaktivere NFO-metadata skal du redigere et bibliotek i Jellyfin-biblioteksopsætningen og finde afsnittet om metadata.", @@ -271,7 +256,6 @@ "HeaderMediaInfo": "Medieinformation", "HeaderMetadataSettings": "Indstillinger for metadata", "HeaderMoreLikeThis": "Mere Som Denne", - "HeaderMovies": "Film", "HeaderMusicVideos": "Musikvideoer", "HeaderMyDevice": "Min Enhed", "HeaderMyMedia": "Mine medier", @@ -324,7 +308,6 @@ "HeaderServerSettings": "Serverindstillinger", "HeaderSettings": "Indstillinger", "HeaderSetupLibrary": "Opsæt dine mediebiblioteker", - "HeaderShutdown": "Luk", "HeaderSortBy": "Sorter Efter", "HeaderSortOrder": "Sorteringsorden", "HeaderSpecialEpisodeInfo": "Information om specialepisoder", @@ -353,7 +336,6 @@ "HeaderXmlDocumentAttributes": "XML dokumentattributter", "HeaderXmlSettings": "XML indstillinger", "HeaderYears": "År", - "HeadersFolders": "Mapper", "Help": "Hjælp", "HttpsRequiresCert": "For at aktivere sikre forbindelser, skal du angive et betroet SSL certifikat, såsom Let's Encrypt. Venligst angiv et certifikat eller deaktiver sikre forbindelser.", "Identify": "Identificer", @@ -541,7 +523,6 @@ "LabelNewPassword": "Ny kode:", "LabelNewPasswordConfirm": "Gentag ny adgangskode:", "LabelNewsCategories": "Nyhedskategorier:", - "LabelNext": "Næste", "LabelNotificationEnabled": "Aktiver denne underretning", "LabelNumber": "Nummer:", "LabelNumberOfGuideDays": "Antal dage af programguide data der skal hentes:", @@ -567,7 +548,6 @@ "LabelPostProcessorArgumentsHelp": "Benyt {path} som stien til optagelsesfilen.", "LabelPreferredDisplayLanguage": "Foretrukket sprog til visning:", "LabelPreferredDisplayLanguageHelp": "Oversættelse af Jellyfin er et løbende projekt.", - "LabelPrevious": "Forrige", "LabelProfileAudioCodecs": "Lyd codecs:", "LabelProfileCodecsHelp": "Adskil med komma. Kan efterlades tom for at gælde for alle codecs.", "LabelProfileContainersHelp": "Adskil med komma. Kan efterlades tom for at gælde for alle containere.", @@ -578,7 +558,6 @@ "LabelPublicHttpPortHelp": "Det offentlige portnummer som bliver knyttet til det lokale HTTP-portnummer.", "LabelPublicHttpsPort": "Offentligt HTTPS portnummer:", "LabelPublicHttpsPortHelp": "Det offentlige portnummer som bliver knyttet til det lokale HTTPS portnummer.", - "LabelReadHowYouCanContribute": "Lær hvordan du kan bidrage.", "LabelRecord": "Optag:", "LabelRecordingPath": "Standard afspilningssti:", "LabelRecordingPathHelp": "Angiv standard-lokationen til at gemme afspilninger. Hvis efterladt blankt, benyttes serverens programdata-mappe.", @@ -966,17 +945,11 @@ "TabAdvanced": "Avanceret", "TabAlbumArtists": "Album-artister", "TabCatalog": "Katalog", - "TabChannels": "Kanaler", - "TabCollections": "Samlinger", "TabContainers": "Containere", "TabDashboard": "Betjeningspanel", - "TabDevices": "Enheder", "TabDirectPlay": "Direkte afspilning", "TabEpisodes": "Episoder", - "TabFavorites": "Favoritter", - "TabGenres": "Genre", "TabLatest": "Seneste", - "TabMovies": "Film", "TabMusic": "Musik", "TabMusicVideos": "Musikvideoer", "TabMyPlugins": "Mine tilføjelser", @@ -996,8 +969,6 @@ "TabScheduledTasks": "Planlagte opgaver", "TabSeries": "Serier", "TabSettings": "Indstillinger", - "TabShows": "Serier", - "TabSongs": "Sange", "TabTrailers": "Trailere", "TabUpcoming": "Kommende", "TabUsers": "Brugere", @@ -1114,7 +1085,6 @@ "DownloadsValue": "{0} hentninger", "DropShadow": "Drop Skygge", "EditMetadata": "Redigér metadata", - "EnableBackdrops": "Baggrundsbilleder", "EnableBackdropsHelp": "Vis baggrundsbilleder i baggrunden af nogle sider mens man gennemser biblioteket.", "EnableDisplayMirroring": "Visning afspejling", "EnableExternalVideoPlayers": "Eksterne video afspillere", @@ -1137,7 +1107,6 @@ "Guide": "Vejledning", "GuideProviderLogin": "Log Ind", "HeaderAdmin": "Admin", - "HeaderAlbums": "Albummer", "HeaderApp": "App", "HeaderAppearsOn": "Forekommer I", "HeaderAudioBooks": "Lydbøger", @@ -1248,7 +1217,6 @@ "Mobile": "Mobil", "Next": "Næste", "No": "Nej", - "NoSubtitles": "Ingen undertekster", "NoSubtitlesHelp": "Undertekster vil ikke blive indlæst som standard. De kan slåes til manuelt under afspilning.", "None": "Ingen", "Normal": "Normalt", @@ -1310,9 +1278,7 @@ "SubtitleAppearanceSettingsDisclaimer": "Disse indstillinger bliver ikke aktiveret på grafiske undertekster (PGS, DVD, etc) eller ASS/SSA undertekster der har deres egen indbyggede stil.", "Suggestions": "Forslag", "TV": "TV", - "TabAlbums": "Albummer", "TabCodecs": "Codeks", - "TabGuide": "Vejledning", "TabInfo": "Information", "TabLiveTV": "Live TV", "TabLogs": "Log", diff --git a/src/strings/de.json b/src/strings/de.json index 40035d6a45..2e28c73d2f 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -34,7 +34,6 @@ "AsManyAsPossible": "So viele wie möglich", "Ascending": "Aufsteigend", "AspectRatio": "Seitenverhältnis", - "AttributeNew": "Neu", "Backdrop": "Hintergrund", "Backdrops": "Hintergründe", "BirthDateValue": "Geboren: {0}", @@ -50,18 +49,12 @@ "ButtonAddScheduledTaskTrigger": "Auslöser hinzufügen", "ButtonAddServer": "Server hinzufügen", "ButtonAddUser": "User hinzufügen", - "ButtonArrowDown": "Ab", "ButtonArrowLeft": "Links", "ButtonArrowRight": "Rechts", - "ButtonArrowUp": "Auf", "ButtonAudioTracks": "Audiospuren", "ButtonBack": "Zurück", "ButtonCancel": "Abbrechen", "ButtonChangeServer": "Wechsel Server", - "ButtonConnect": "Verbinde", - "ButtonDelete": "Löschen", - "ButtonDeleteImage": "Lösche Bild", - "ButtonDown": "Runter", "ButtonEdit": "Bearbeiten", "ButtonEditImages": "Bearbeite Bilder", "ButtonEditOtherUserPreferences": "Bearbeite dieses Benutzerprofil, das Benutzerbild und die persönlichen Einstellungen.", @@ -73,7 +66,6 @@ "ButtonManualLogin": "Manuelle Anmeldung", "ButtonMore": "Mehr", "ButtonNetwork": "Netzwerk", - "ButtonNew": "Neu", "ButtonNextTrack": "Nächstes Stück", "ButtonOff": "Ausschalten", "ButtonOpen": "Öffnen", @@ -97,16 +89,13 @@ "ButtonSelectView": "Ansicht wählen", "ButtonSend": "senden", "ButtonSettings": "Einstellungen", - "ButtonShuffle": "Zufallswiedergabe", "ButtonShutdown": "Herunterfahren", "ButtonSignIn": "Einloggen", "ButtonSignOut": "Abmelden", - "ButtonSort": "Sortieren", "ButtonStop": "Stopp", "ButtonSubmit": "Bestätigen", "ButtonSubtitles": "Untertitel", "ButtonUninstall": "Deinstallieren", - "ButtonUp": "Hoch", "CancelRecording": "Aufnahme abbrechen", "CancelSeries": "Serien abbrechen", "Categories": "Kategorien", @@ -174,7 +163,6 @@ "EditImages": "Bearbeite Bilder", "EditMetadata": "Bearbeite Metadaten", "EditSubtitles": "Untertitel bearbeiten", - "EnableBackdrops": "Hintergründe", "EnableBackdropsHelp": "Zeige während des Browsens durch die Bibliothek auf einigen Seiten passende Hintergründe an.", "EnableCinemaMode": "Kino-Modus", "EnableColorCodedBackgrounds": "Farbige Hintergründe", @@ -249,7 +237,6 @@ "HeaderAddUser": "Benutzer anlegen", "HeaderAdditionalParts": "Zusätzliche Teile", "HeaderAlbumArtists": "Album-Interpreten", - "HeaderAlbums": "Alben", "HeaderAlert": "Alarm", "HeaderAllowMediaDeletionFrom": "Erlaube Medienlöschung von", "HeaderApiKey": "API-Schlüssel", @@ -266,7 +253,6 @@ "HeaderCastAndCrew": "Besetzung & Mitwirkende", "HeaderCastCrew": "Besetzung & Crew", "HeaderChannelAccess": "Channelzugriff", - "HeaderChannels": "Kanäle", "HeaderChapterImages": "Kapitel Bilder", "HeaderCodecProfile": "Codec Profil", "HeaderCodecProfileHelp": "Codec Profile weisen auf Beschränkungen eines Gerätes beim Abspielen bestimmter Codecs hin. Wenn eine Beschränkung zutrifft, dann werden Medien transcodiert, auch wenn der Codec für die Direktwiedergabe konfiguriert ist.", @@ -317,7 +303,6 @@ "HeaderImageSettings": "Bild Einstellungen", "HeaderInstall": "Installieren", "HeaderInstantMix": "Schnellmix", - "HeaderItems": "Inhalte", "HeaderKeepRecording": "Aufnahme behalten", "HeaderKeepSeries": "Serie behalten", "HeaderKodiMetadataHelp": "Um NFO Metadaten zu aktivieren oder deaktivieren, bearbeite eine Bibliothek und mache den Metadaten-Speicherer Abschnitt ausfindig.", @@ -340,7 +325,6 @@ "HeaderMediaInfo": "Medieninformation", "HeaderMetadataSettings": "Metadaten Einstellungen", "HeaderMoreLikeThis": "Mehr wie dieses", - "HeaderMovies": "Filme", "HeaderMusicQuality": "Musikqualität", "HeaderMusicVideos": "Musikvideos", "HeaderMyDevice": "Mein Gerät", @@ -400,7 +384,6 @@ "HeaderServerSettings": "Server Einstellungen", "HeaderSettings": "Einstellungen", "HeaderSetupLibrary": "Medienbibliotheken einrichten", - "HeaderShutdown": "Herunterfahren", "HeaderSortBy": "Sortiert nach", "HeaderSortOrder": "Sortierreihenfolge", "HeaderSpecialEpisodeInfo": "Spezialepisoden Information", @@ -432,7 +415,6 @@ "HeaderXmlDocumentAttributes": "XML-Dokument Eigenschaften", "HeaderXmlSettings": "XML Einstellungen", "HeaderYears": "Jahre", - "HeadersFolders": "Verzeichnisse", "Help": "Hilfe", "Hide": "Verstecke", "HideWatchedContentFromLatestMedia": "Verberge gesehene Inhalte von neuesten Medien", @@ -640,7 +622,6 @@ "LabelNewPassword": "Neues Passwort:", "LabelNewPasswordConfirm": "Neues Passwort wiederholen:", "LabelNewsCategories": "Nachrichtenkategorien:", - "LabelNext": "Nächstes", "LabelNotificationEnabled": "Aktiviere diese Benachrichtigung", "LabelNumber": "Nummer:", "LabelNumberOfGuideDays": "Anzahl von Tagen für die Programminformationen geladen werden sollen:", @@ -667,7 +648,6 @@ "LabelPreferredDisplayLanguage": "Bevorzugte Anzeigesprache:", "LabelPreferredDisplayLanguageHelp": "Die Übersetzung von Jellyfin ist ein laufendes Projekt.", "LabelPreferredSubtitleLanguage": "Bevorzugte Untertitelsprache:", - "LabelPrevious": "Vorheriges", "LabelProfileAudioCodecs": "Audio Codecs:", "LabelProfileCodecsHelp": "Getrennt durch Komma. Leerlassen, um auf alle Codecs anzuwenden.", "LabelProfileContainersHelp": "Getrennt durch Komma. Leerlassen, um auf alle Containerformate anzuwenden.", @@ -679,7 +659,6 @@ "LabelPublicHttpPortHelp": "Die öffentliche Portnummer sollte einem lokalen HTTP Port zugewiesen werden.", "LabelPublicHttpsPort": "Öffentliche HTTPS Portnummer:", "LabelPublicHttpsPortHelp": "Die öffentliche Portnummer sollte einem lokalen HTTPS Port zugewiesen werden.", - "LabelReadHowYouCanContribute": "Erfahren Sie, wie Sie unterstützen können.", "LabelReasonForTranscoding": "Grund für die Transkodierung:", "LabelRecord": "Aufnahme:", "LabelRecordingPath": "Standard Aufnahmepfad:", @@ -871,7 +850,6 @@ "MessageNoNextUpItems": "Es wurde nichts gefunden. Schau dir deine Shows an!", "MessageNoPluginConfiguration": "Dieses Plugin hat keine konfigurierbaren Einstellungen.", "NoSubtitleSearchResultsFound": "Keine Ergebnisse gefunden.", - "NoSubtitles": "Keine", "NoSubtitlesHelp": "Untertitel werden standardmäßig nicht geladen. Sie können aber während der Wiedergabe manuell aktiviert werden.", "None": "Keines", "NumLocationsValue": "{0} Verzeichnisse", @@ -1129,20 +1107,13 @@ "TabAccess": "Zugang", "TabAdvanced": "Erweitert", "TabAlbumArtists": "Album-Interpreten", - "TabAlbums": "Alben", "TabCatalog": "Katalog", - "TabChannels": "Kanäle", - "TabCollections": "Sammlungen", "TabContainers": "Container", "TabDashboard": "Übersicht", - "TabDevices": "Geräte", "TabDirectPlay": "Direktwiedergabe", "TabEpisodes": "Episoden", - "TabFavorites": "Favoriten", - "TabGuide": "Programm", "TabLatest": "Neueste", "TabLiveTV": "Live-TV", - "TabMovies": "Filme", "TabMusic": "Musik", "TabMusicVideos": "Musikvideos", "TabMyPlugins": "Meine Plugins", @@ -1161,7 +1132,6 @@ "TabScheduledTasks": "Geplante Aufgaben", "TabSeries": "Serie", "TabSettings": "Einstellungen", - "TabShows": "Serien", "TabTrailers": "Trailer", "TabUpcoming": "Bevorstehend", "TabUsers": "Benutzer", @@ -1226,7 +1196,6 @@ "Auto": "Auto", "Banner": "Banner", "Blacklist": "Sperrliste", - "ButtonDownload": "Download", "ButtonFilter": "Filter", "ButtonHome": "Startseite", "ButtonOk": "Ok", @@ -1246,7 +1215,6 @@ "Genres": "Genres", "HeaderAdmin": "Admin", "HeaderApp": "App", - "HeaderGenres": "Genres", "HeaderHttpHeaders": "HTTP-Header", "HeaderPluginInstallation": "Plugininstallation", "HeaderStatus": "Status", @@ -1311,12 +1279,10 @@ "Studios": "Studios", "TV": "TV", "TabCodecs": "Codecs", - "TabGenres": "Genres", "TabInfo": "Info", "TabLogs": "Protokoll", "TabPlugins": "Plugins", "TabServer": "Server", - "TabSongs": "Songs", "TabStreaming": "Streaming", "Transcoding": "Transcoding", "ValueAudioCodec": "Audiocodec: {0}", @@ -1458,7 +1424,6 @@ "LabelStable": "Stable", "LabelChromecastVersion": "Chromecast Version", "HeaderDVR": "DVR", - "TabDVR": "DVR", "SaveChanges": "Änderungen speichern", "LabelRequireHttpsHelp": "Wenn dies ausgewählt ist, leitet der Server alle Anfragen über HTTP an HTTPS weiter. Dies hat keinen Effekt, falls der Server nicht auf HTTPS hört.", "LabelRequireHttps": "Erfordere HTTPS", diff --git a/src/strings/el.json b/src/strings/el.json index d3176ae83c..1a15e1b994 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -29,7 +29,6 @@ "AsManyAsPossible": "Οσο το δυνατον περισσοτερα", "Ascending": "Αύξουσα", "AspectRatio": "Αναλογία απεικόνισης", - "AttributeNew": "Νέο", "Audio": "Ήχος", "Auto": "Αυτόματο", "Backdrop": "Φόντο", @@ -48,18 +47,12 @@ "ButtonAddScheduledTaskTrigger": "Προσθήκη διακόπτη", "ButtonAddServer": "Προσθήκη διακομιστή", "ButtonAddUser": "Προσθήκη χρήστη", - "ButtonArrowDown": "Κάτω", "ButtonArrowLeft": "Αριστερά", "ButtonArrowRight": "Δεξιά", - "ButtonArrowUp": "Επάνω", "ButtonAudioTracks": "Ηχητικά κομμάτια", "ButtonBack": "Πίσω", "ButtonCancel": "Ακύρωση", "ButtonChangeServer": "Αλλαγή Διακομιστή", - "ButtonConnect": "Σύνδεση", - "ButtonDelete": "Διαγραφή", - "ButtonDeleteImage": "Διαγραφή εικόνας", - "ButtonDown": "Κάτω", "ButtonEdit": "Επεξεργασία", "ButtonEditImages": "Επεξεργασία εικόνων", "ButtonEditOtherUserPreferences": "Επεξεργαστείτε το προφίλ, την εικόνα και τις προσωπικές προτιμήσεις αυτού του χρήστη.", @@ -73,7 +66,6 @@ "ButtonLibraryAccess": "Πρόσβαση στη βιβλιοθήκη", "ButtonManualLogin": "Χειροκίνητη Είσοδος", "ButtonMore": "Περισσότερα", - "ButtonNew": "Νέο", "ButtonNextTrack": "Επομενο", "ButtonOpen": "Άνοιγμα", "ButtonParentalControl": "Γονικός έλεγχος", @@ -97,18 +89,15 @@ "ButtonSelectView": "Επιλέξτε Προβολή", "ButtonSend": "Αποστολή", "ButtonSettings": "Ρυθμίσεις", - "ButtonShuffle": "Τυχαία Αναπαραγωγή", "ButtonShutdown": "Απενεργοποίηση", "ButtonSignIn": "Είσοδος", "ButtonSignOut": "Έξοδος", - "ButtonSort": "Ταξινόμηση", "ButtonStart": "Έναρξη", "ButtonStop": "Διακοπή", "ButtonSubmit": "υποβολή", "ButtonSubtitles": "Υπότιτλοι", "ButtonTrailer": "Τρέϊλερ", "ButtonUninstall": "Απεγκατάσταση", - "ButtonUp": "Επάνω", "ButtonWebsite": "Ιστοσελίδα", "CancelRecording": "Ακύρωση Εγγραφής", "CancelSeries": "Ακύρωση Σειράς", @@ -179,7 +168,6 @@ "EditImages": "Επεξεργασία εικόνων", "EditMetadata": "Επεξεργασία μεταδεδομένων", "EditSubtitles": "Επεξεργασία υποτίτλων", - "EnableBackdrops": "Ενεργοποίηση Σκηνικών", "EnableBackdropsHelp": "Eμφάνιση φόντων στο παρασκήνιο ορισμένων σελίδων κατά την περιήγηση στη βιβλιοθήκη.", "EnableCinemaMode": "Λειτουργία Κινηματογράφου", "EnableColorCodedBackgrounds": "Ενεργοποιήστε τα έγχρωμα κωδικοποιημένα φόντα", @@ -258,7 +246,6 @@ "HeaderCancelSeries": "Ακύρωση Σειράς", "HeaderCastAndCrew": "Ηθοποιοί και Συνεργείο", "HeaderCastCrew": "Ηθοποιοί και συνεργείο", - "HeaderChannels": "Κανάλια", "HeaderCodecProfileHelp": "Τα προφίλ κωδικοποιητή υποδεικνύουν τους περιορισμούς μιας συσκευής κατά την αναπαραγωγή συγκεκριμένων κωδικοποιητών. Εάν ισχύει περιορισμός, τότε τα μέσα θα κωδικοποιηθούν, ακόμα και αν ο κωδικοποιητής έχει ρυθμιστεί για άμεση αναπαραγωγή.", "HeaderConfigureRemoteAccess": "Ρύθμιση απομακρυσμένης πρόσβασης", "HeaderConfirmPluginInstallation": "Επιβεβαιώστε την εγκατάσταση της προσθήκης", @@ -292,7 +279,6 @@ "HeaderForKids": "Για τα Παιδιά", "HeaderForgotPassword": "Ξέχασα τον κωδικό", "HeaderFrequentlyPlayed": "Συχνά έπαιξε", - "HeaderGenres": "Είδη", "HeaderIdentificationCriteriaHelp": "Καταχωρήστε τουλάχιστον ένα κριτήριο αναγνώρισης.", "HeaderIdentificationHeader": "Αναγνωριστικό Header", "HeaderIdentifyItemHelp": "Πληκτρολογήστε ένα ή περισσότερα κριτήρια αναζήτησης. Κατάργηση κριτηρίων για την αύξηση των αποτελεσμάτων αναζήτησης.", @@ -300,7 +286,6 @@ "HeaderImageSettings": "Ρυθμίσεις Εικόνας", "HeaderInstall": "Εγκατάσταση", "HeaderInstantMix": "Άμεση Mix", - "HeaderItems": "Στοιχεία", "HeaderKeepRecording": "Συνέχισε την Εγγραφή", "HeaderKeepSeries": "Συνέχισε την Σειρά", "HeaderLatestEpisodes": "Τελευταία επεισόδια", @@ -321,7 +306,6 @@ "HeaderMediaInfo": "Πληροφορίες πολυμέσων", "HeaderMetadataSettings": "Ρυθμίσεις μεταδεδομένων", "HeaderMoreLikeThis": "Περισσότερα Σαν Αυτό", - "HeaderMovies": "Ταινίες", "HeaderMusicQuality": "Ποιότητα Μουσικής", "HeaderMusicVideos": "Βίντεο Μουσικής", "HeaderMyDevice": "Η Συσκευή μου", @@ -370,7 +354,6 @@ "HeaderServerSettings": "Ρυθμίσεις διακομιστή", "HeaderSettings": "Ρυθμίσεις", "HeaderSetupLibrary": "Ρυθμίστε τις βιβλιοθήκες πολυμέσων σας", - "HeaderShutdown": "Απενεργοποίηση", "HeaderSortBy": "Ταξινόμηση κατά", "HeaderSortOrder": "Σειρά ταξινόμησης", "HeaderSpecialEpisodeInfo": "Ειδικές πληροφορίες επεισοδίου", @@ -401,7 +384,6 @@ "HeaderXmlDocumentAttributes": "Χαρακτηριστικά εγγράφου Xml", "HeaderXmlSettings": "Ρυθμίσεις xml", "HeaderYears": "Χρονιές", - "HeadersFolders": "Φάκελοι", "Help": "Βοήθεια", "Hide": "Κρύψε", "HideWatchedContentFromLatestMedia": "Απόκρυψη προβληθέντων από τα πρόσφατα μέσα", @@ -577,7 +559,6 @@ "LabelNewPassword": "Νέος κωδικός πρόσβασης:", "LabelNewPasswordConfirm": "Επιβεβαίωση νέου κωδικού πρόσβασης:", "LabelNewsCategories": "Κατηγορίες ειδήσεων:", - "LabelNext": "Επόμενο", "LabelNotificationEnabled": "Ενεργοποίηση αυτής της ειδοποίησης", "LabelNumber": "Αριθμός:", "LabelNumberOfGuideDays": "Αριθμός ημερών οδηγιών για λήψη:", @@ -599,7 +580,6 @@ "LabelPreferredDisplayLanguage": "Προτιμώμενη γλώσσα εμφάνισης:", "LabelPreferredDisplayLanguageHelp": "Η μετάφραση του Jellyfin είναι ένα συνεχιζόμενο έργο.", "LabelPreferredSubtitleLanguage": "Προτεινόμενη Γλώσσα υποτίτλων:", - "LabelPrevious": "Προηγούμενο", "LabelProfileCodecsHelp": "Διαχωρίζονται με κόμμα. Αυτό μπορεί να μείνει κενό για να εφαρμοστεί σε όλα τα codecs.", "LabelProfileContainersHelp": "Διαχωρίζονται με κόμμα. Αυτό μπορεί να μείνει κενό για να εφαρμοστεί σε όλα τα containers.", "LabelProtocol": "Πρωτόκολλο:", @@ -607,7 +587,6 @@ "LabelPublicHttpPortHelp": "Ο αριθμός δημόσιας θύρας που πρέπει να αντιστοιχιστεί στην τοπική θύρα http.", "LabelPublicHttpsPort": "Αριθμός δημόσιας https θύρας:", "LabelPublicHttpsPortHelp": "Ο αριθμός δημόσιας θύρας που πρέπει να αντιστοιχιστεί στην τοπική θύρα https.", - "LabelReadHowYouCanContribute": "Μάθετε πώς μπορείτε να συμβάλλετε.", "LabelReasonForTranscoding": "Λόγος για την Κωδικοποίηση:", "LabelRecord": "Εγγραφή:", "LabelRecordingPath": "Προεπιλεγμένη διαδρομή εγγραφής:", @@ -776,7 +755,6 @@ "MessageNoNextUpItems": "Δεν βρέθηκε κανένα. Ξεκινήστε παρακολουθώντας τις εκπομπές σας!", "MessageNoPluginConfiguration": "Αυτό το plugin δεν απαιτεί ρυθμίσεις.", "NoSubtitleSearchResultsFound": "Δεν βρέθηκαν αποτελέσματα.", - "NoSubtitles": "Χωρίς Υπότιτλους", "NoSubtitlesHelp": "Οι υπότιτλοι δεν θα φορτωθούν από προεπιλογή.Μπορούν ακόμα να ενεργοποιούνται χειροκίνητα κατά την αναπαραγωγή.", "None": "Κανένα", "Normal": "Κανονικός", @@ -1018,20 +996,12 @@ "TabAccess": "Πρόσβαση", "TabAdvanced": "Για προχωρημένους", "TabAlbumArtists": "Άλμπουμ Καλλιτέχνες", - "TabAlbums": "Άλμπουμ", "TabCatalog": "Κατάλογος", - "TabChannels": "Κανάλια", - "TabCollections": "Συλλογές", "TabDashboard": "Πίνακας Ελέγχου", - "TabDevices": "Συσκευές", "TabDirectPlay": "Άμεση Αναπαραγωγή", "TabEpisodes": "Επεισόδια", - "TabFavorites": "Αγαπημένα", - "TabGenres": "Είδη", - "TabGuide": "Οδηγός", "TabInfo": "Πληροφορία", "TabLatest": "Τελευταία", - "TabMovies": "Ταινίες", "TabMusic": "Μουσική", "TabMusicVideos": "Μουσικά βίντεο", "TabMyPlugins": "Τα πρόσθετα μου", @@ -1051,8 +1021,6 @@ "TabSeries": "Σειρές", "TabServer": "Διακομιστής", "TabSettings": "Ρυθμισεις", - "TabShows": "Επεισόδια", - "TabSongs": "Τραγούδια", "TabStreaming": "Ροή", "TabTrailers": "Τρέιλερς", "TabUpcoming": "Επερχόμενα", @@ -1143,7 +1111,6 @@ "HeaderChapterImages": "Εικόνες Κεφαλαίων", "HeaderChannelAccess": "Πρόσβαση σε Κανάλια", "HeaderApp": "Εφαρμογή", - "HeaderAlbums": "Άλμπουμ", "HeaderAccessScheduleHelp": "Δημιουργήστε ένα πρόγραμμα πρόσβασης για να περιορίσετε την πρόσβαση ορισμένες ώρες.", "HeaderAccessSchedule": "Πρόγραμμα Πρόσβασης", "LabelTranscodePath": "Διαδρομή μετατροπών:", @@ -1165,7 +1132,6 @@ "ButtonOk": "Οκ", "ButtonOff": "Απενεργοποίηση", "ButtonNetwork": "Δίκτυο", - "ButtonDownload": "Κατέβασμα", "AllowOnTheFlySubtitleExtractionHelp": "Οι ενσωματωμένοι υπότιτλοι μπορούν να εξαχθούν από βίντεο και να σταλούν στις συσκευές σε απλό κείμενο για να αποφευχθούν μετατροπές βίντεο. Σε μερικά συστήματα αυτό μπορεί να πάρει πολύ ώρα και να κάνει το βίντεο να κολλάει κατά την διάρκεια της εξαγωγής. Απενεργοποιήστε το για να έχετε ενσωματωμένους υπότιτλους πάνω στο βίντεο όταν αυτοί δεν υποστηρίζονται από την συσκευή.", "AllowOnTheFlySubtitleExtraction": "Επίτρεψε την εξαγωγή υποτίτλων σε πραγματικό χρόνο", "AllowMediaConversionHelp": "Παραχώρηση ή στέρηση πρόσβασης στην λειτουργία μετατροπής μέσων.", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index f2fc6e7764..2714f21147 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -26,7 +26,6 @@ "PlaceFavoriteChannelsAtBeginning": "Place favourite channels at the beginning", "Programs": "Programs", "TabCatalog": "Catalogue", - "TabFavorites": "Favourites", "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 '|'.", "XmlTvNewsCategoriesHelp": "Programs with these categories will be displayed as news programs. Separate multiple with '|'.", @@ -83,7 +82,6 @@ "AsManyAsPossible": "As many as possible", "Ascending": "Ascending", "AspectRatio": "Aspect Ratio", - "AttributeNew": "New", "Audio": "Audio", "AuthProviderHelp": "Select an Authentication Provider to be used to authenticate this user's password.", "Auto": "Auto", @@ -103,19 +101,12 @@ "ButtonAddScheduledTaskTrigger": "Add Trigger", "ButtonAddServer": "Add Server", "ButtonAddUser": "Add User", - "ButtonArrowDown": "Down", "ButtonArrowLeft": "Left", "ButtonArrowRight": "Right", - "ButtonArrowUp": "Up", "ButtonAudioTracks": "Audio Tracks", "ButtonBack": "Back", "ButtonCancel": "Cancel", "ButtonChangeServer": "Change Server", - "ButtonConnect": "Connect", - "ButtonDelete": "Delete", - "ButtonDeleteImage": "Delete Image", - "ButtonDown": "Down", - "ButtonDownload": "Download", "ButtonEdit": "Edit", "ButtonEditImages": "Edit images", "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", @@ -130,7 +121,6 @@ "ButtonManualLogin": "Manual Login", "ButtonMore": "More", "ButtonNetwork": "Network", - "ButtonNew": "New", "ButtonNextTrack": "Next track", "ButtonOff": "Off", "ButtonOk": "OK", @@ -156,18 +146,15 @@ "ButtonSelectView": "Select view", "ButtonSend": "Send", "ButtonSettings": "Settings", - "ButtonShuffle": "Shuffle", "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", - "ButtonSort": "Sort", "ButtonStart": "Start", "ButtonStop": "Stop", "ButtonSubmit": "Submit", "ButtonSubtitles": "Subtitles", "ButtonTrailer": "Trailer", "ButtonUninstall": "Uninstall", - "ButtonUp": "Up", "ButtonWebsite": "Website", "CancelRecording": "Cancel recording", "CancelSeries": "Cancel series", @@ -234,7 +221,6 @@ "EditImages": "Edit images", "EditMetadata": "Edit metadata", "EditSubtitles": "Edit subtitles", - "EnableBackdrops": "Backdrops", "EnableBackdropsHelp": "Display backdrops in the background of some pages while browsing the library.", "EnableCinemaMode": "Cinema mode", "EnableDisplayMirroring": "Display mirroring", @@ -308,7 +294,6 @@ "HeaderAddUser": "Add User", "HeaderAdditionalParts": "Additional Parts", "HeaderAdmin": "Admin", - "HeaderAlbums": "Albums", "HeaderAlert": "Alert", "HeaderAllowMediaDeletionFrom": "Allow Media Deletion From", "HeaderApiKey": "API Key", @@ -325,7 +310,6 @@ "HeaderCastAndCrew": "Cast & Crew", "HeaderCastCrew": "Cast & Crew", "HeaderChannelAccess": "Channel Access", - "HeaderChannels": "Channels", "HeaderChapterImages": "Chapter Images", "HeaderCodecProfile": "Codec Profile", "HeaderCodecProfileHelp": "Codec profiles indicate the limitations of a device when playing specific codecs. If a limitation applies then the media will be transcoded, even if the codec is configured for direct play.", @@ -375,7 +359,6 @@ "HeaderForKids": "For Kids", "HeaderForgotPassword": "Forgot Password", "HeaderFrequentlyPlayed": "Frequently Played", - "HeaderGenres": "Genres", "HeaderGuideProviders": "TV Guide Data Providers", "HeaderHttpHeaders": "HTTP Headers", "HeaderIdentification": "Identification", @@ -386,7 +369,6 @@ "HeaderImageSettings": "Image Settings", "HeaderInstall": "Install", "HeaderInstantMix": "Instant Mix", - "HeaderItems": "Items", "HeaderKeepRecording": "Keep Recording", "HeaderKeepSeries": "Keep Series", "HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library in Jellyfin library setup and locate the metadata savers section.", @@ -408,7 +390,6 @@ "HeaderMediaInfo": "Media Info", "HeaderMetadataSettings": "Metadata Settings", "HeaderMoreLikeThis": "More Like This", - "HeaderMovies": "Movies", "HeaderMusicQuality": "Music Quality", "HeaderMusicVideos": "Music Videos", "HeaderMyDevice": "My Device", @@ -462,7 +443,6 @@ "Thursday": "Thursday", "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", "TheseSettingsAffectSubtitlesOnThisDevice": "These settings affect subtitles on this device", - "TabShows": "Shows", "TabSettings": "Settings", "TabServer": "Server", "TabSeries": "Series", @@ -476,12 +456,8 @@ "TabMyPlugins": "My Plugins", "TabMusicVideos": "Music Videos", "TabMusic": "Music", - "TabMovies": "Movies", "TabLogs": "Logs", "TabDirectPlay": "Direct Play", - "TabDevices": "Devices", - "TabChannels": "Channels", - "TabAlbums": "Albums", "TabAlbumArtists": "Album Artists", "TabAdvanced": "Advanced", "TabAccess": "Access", @@ -665,7 +641,6 @@ "Normal": "Normal", "None": "None", "NoSubtitlesHelp": "Subtitles will not be loaded by default. They can still be turned on manually during playback.", - "NoSubtitles": "None", "MessageNoPluginConfiguration": "This plugin has no settings to configure.", "MessageNoNextUpItems": "None found. Start watching your shows!", "No": "No", @@ -920,7 +895,6 @@ "LabelDeviceDescription": "Device description", "LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.", "TabStreaming": "Streaming", - "TabSongs": "Songs", "TabProfiles": "Profiles", "TabProfile": "Profile", "TabPlugins": "Plugins", @@ -930,12 +904,9 @@ "TabLiveTV": "Live TV", "TabLatest": "Latest", "TabInfo": "Info", - "TabGuide": "Guide", - "TabGenres": "Genres", "TabEpisodes": "Episodes", "TabDashboard": "Dashboard", "TabContainers": "Containers", - "TabCollections": "Collections", "TabCodecs": "Codecs", "Sort": "Sort", "Smaller": "Smaller", @@ -958,7 +929,6 @@ "LabelSeriesRecordingPath": "Series recording path (optional):", "LabelRecordingPathHelp": "Specify the default location to save recordings. If left empty, the server's program data folder will be used.", "LabelRecordingPath": "Default recording path:", - "LabelReadHowYouCanContribute": "Learn how you can contribute.", "LabelAlbumArtMaxWidth": "Album art max width:", "LabelCustomCssHelp": "Apply your own custom styling to the web interface.", "LabelBlastMessageIntervalHelp": "Determines the duration in seconds between blast alive messages.", @@ -1010,7 +980,6 @@ "LabelParentalRating": "Parental rating:", "LabelParentNumber": "Parent number:", "LabelOptionalNetworkPath": "(Optional) Shared network folder:", - "LabelNext": "Next", "LabelNewsCategories": "News categories:", "LabelNewPasswordConfirm": "New password confirm:", "LabelNewPassword": "New password:", @@ -1158,7 +1127,6 @@ "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", "Hide": "Hide", "Help": "Help", - "HeadersFolders": "Folders", "HeaderXmlSettings": "XML Settings", "HeaderXmlDocumentAttributes": "XML Document Attributes", "HeaderXmlDocumentAttribute": "XML Document Attribute", @@ -1289,7 +1257,6 @@ "ValueOneSeries": "1 series", "MediaInfoBitrate": "Bitrate", "LabelVideo": "Video", - "LabelPrevious": "Previous", "LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.", "LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart to extrathumbs field", "LabelInternetQuality": "Internet quality:", @@ -1359,7 +1326,6 @@ "HeaderSpecialEpisodeInfo": "Special Episode Info", "HeaderSortOrder": "Sort Order", "HeaderSortBy": "Sort By", - "HeaderShutdown": "Shutdown", "HeaderSetupLibrary": "Setup your media libraries", "HeaderSettings": "Settings", "HeaderServerSettings": "Server Settings", @@ -1462,7 +1428,6 @@ "ButtonSyncPlay": "SyncPlay", "EnableBlurHashHelp": "Images that are still being loaded will be displayed with a blurred placeholder", "EnableBlurHash": "Enable blurred placeholders for images", - "TabDVR": "DVR", "TabRepositories": "Repositories", "SyncPlayAccessHelp": "Select the level of access this user has to the SyncPlay feature. SyncPlay enables to sync playback with other devices.", "ShowMore": "Show more", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 2e437b148b..355ef9c96c 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -42,7 +42,6 @@ "Ascending": "Ascending", "AskAdminToCreateLibrary": "Ask an administrator to create a library.", "AspectRatio": "Aspect Ratio", - "AttributeNew": "New", "Audio": "Audio", "AuthProviderHelp": "Select an authentication provider to be used to authenticate this user's password.", "Auto": "Auto", @@ -66,19 +65,12 @@ "ButtonAddScheduledTaskTrigger": "Add Trigger", "ButtonAddServer": "Add Server", "ButtonAddUser": "Add User", - "ButtonArrowDown": "Down", "ButtonArrowLeft": "Left", "ButtonArrowRight": "Right", - "ButtonArrowUp": "Up", "ButtonAudioTracks": "Audio Tracks", "ButtonBack": "Back", "ButtonCancel": "Cancel", "ButtonChangeServer": "Change Server", - "ButtonConnect": "Connect", - "ButtonDelete": "Delete", - "ButtonDeleteImage": "Delete Image", - "ButtonDown": "Down", - "ButtonDownload": "Download", "ButtonEdit": "Edit", "ButtonEditImages": "Edit images", "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", @@ -93,7 +85,6 @@ "ButtonManualLogin": "Manual Login", "ButtonMore": "More", "ButtonNetwork": "Network", - "ButtonNew": "New", "ButtonNextTrack": "Next track", "ButtonOff": "Off", "ButtonOk": "Ok", @@ -119,11 +110,9 @@ "ButtonSelectView": "Select view", "ButtonSend": "Send", "ButtonSettings": "Settings", - "ButtonShuffle": "Shuffle", "ButtonShutdown": "Shutdown", "ButtonSignIn": "Sign In", "ButtonSignOut": "Sign Out", - "ButtonSort": "Sort", "ButtonStart": "Start", "ButtonStop": "Stop", "ButtonSplit": "Split", @@ -132,7 +121,6 @@ "ButtonTogglePlaylist": "Playlist", "ButtonTrailer": "Trailer", "ButtonUninstall": "Uninstall", - "ButtonUp": "Up", "ButtonWebsite": "Website", "CancelRecording": "Cancel recording", "CancelSeries": "Cancel series", @@ -210,7 +198,6 @@ "EditImages": "Edit images", "EditMetadata": "Edit metadata", "EditSubtitles": "Edit subtitles", - "EnableBackdrops": "Backdrops", "EnableBackdropsHelp": "Display backdrops in the background of some pages while browsing the library.", "EnableCinemaMode": "Cinema mode", "EnableColorCodedBackgrounds": "Color coded backgrounds", @@ -297,7 +284,6 @@ "HeaderAdditionalParts": "Additional Parts", "HeaderAdmin": "Admin", "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", "HeaderAlert": "Alert", "HeaderAllowMediaDeletionFrom": "Allow Media Deletion From", "HeaderApiKey": "API Key", @@ -316,7 +302,6 @@ "HeaderCastAndCrew": "Cast & Crew", "HeaderCastCrew": "Cast & Crew", "HeaderChannelAccess": "Channel Access", - "HeaderChannels": "Channels", "HeaderChapterImages": "Chapter Images", "HeaderCodecProfile": "Codec Profile", "HeaderCodecProfileHelp": "Codec profiles indicate the limitations of a device when playing specific codecs. If a limitation applies then the media will be transcoded, even if the codec is configured for direct play.", @@ -369,7 +354,6 @@ "HeaderForKids": "For Kids", "HeaderForgotPassword": "Forgot Password", "HeaderFrequentlyPlayed": "Frequently Played", - "HeaderGenres": "Genres", "HeaderGuideProviders": "TV Guide Data Providers", "HeaderHome": "Home", "HeaderHttpHeaders": "HTTP Headers", @@ -382,7 +366,6 @@ "HeaderImageSettings": "Image Settings", "HeaderInstall": "Install", "HeaderInstantMix": "Instant Mix", - "HeaderItems": "Items", "HeaderKeepRecording": "Keep Recording", "HeaderKeepSeries": "Keep Series", "HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and locate the metadata savers section.", @@ -405,7 +388,6 @@ "HeaderMediaInfo": "Media Info", "HeaderMetadataSettings": "Metadata Settings", "HeaderMoreLikeThis": "More Like This", - "HeaderMovies": "Movies", "HeaderMusicQuality": "Music Quality", "HeaderMusicVideos": "Music Videos", "HeaderMyDevice": "My Device", @@ -469,7 +451,6 @@ "HeaderServerSettings": "Server Settings", "HeaderSettings": "Settings", "HeaderSetupLibrary": "Setup your media libraries", - "HeaderShutdown": "Shutdown", "HeaderSortBy": "Sort By", "HeaderSortOrder": "Sort Order", "HeaderSpecialEpisodeInfo": "Special Episode Info", @@ -506,7 +487,6 @@ "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlSettings": "Xml Settings", "HeaderYears": "Years", - "HeadersFolders": "Folders", "Help": "Help", "Hide": "Hide", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", @@ -744,7 +724,6 @@ "LabelNewPassword": "New password:", "LabelNewPasswordConfirm": "New password confirm:", "LabelNewsCategories": "News categories:", - "LabelNext": "Next", "LabelNotificationEnabled": "Enable this notification", "LabelNumber": "Number:", "LabelNumberOfGuideDays": "Number of days of guide data to download:", @@ -776,7 +755,6 @@ "LabelPreferredDisplayLanguage": "Preferred display language:", "LabelPreferredDisplayLanguageHelp": "Translating Jellyfin is an ongoing project.", "LabelPreferredSubtitleLanguage": "Preferred subtitle language:", - "LabelPrevious": "Previous", "LabelProfileAudioCodecs": "Audio codecs:", "LabelProfileCodecs": "Codecs:", "LabelProfileCodecsHelp": "Separated by comma. This can be left empty to apply to all codecs.", @@ -790,7 +768,6 @@ "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local HTTP port.", "LabelPublicHttpsPort": "Public HTTPS port number:", "LabelPublicHttpsPortHelp": "The public port number that should be mapped to the local HTTPS port.", - "LabelReadHowYouCanContribute": "Learn how you can contribute.", "LabelReasonForTranscoding": "Reason for transcoding:", "LabelRecord": "Record:", "LabelRecordingPath": "Default recording path:", @@ -1073,7 +1050,6 @@ "MessageNoNextUpItems": "None found. Start watching your shows!", "MessageNoPluginConfiguration": "This plugin has no settings to configure.", "NoSubtitleSearchResultsFound": "No results found.", - "NoSubtitles": "None", "NoSubtitlesHelp": "Subtitles will not be loaded by default. They can still be turned on manually during playback.", "None": "None", "Normal": "Normal", @@ -1389,26 +1365,17 @@ "TabAccess": "Access", "TabAdvanced": "Advanced", "TabAlbumArtists": "Album Artists", - "TabAlbums": "Albums", "TabCatalog": "Catalog", "TabRepositories": "Repositories", - "TabChannels": "Channels", "TabCodecs": "Codecs", - "TabCollections": "Collections", "TabContainers": "Containers", "TabDashboard": "Dashboard", - "TabDevices": "Devices", "TabDirectPlay": "Direct Play", - "TabDVR": "DVR", "TabEpisodes": "Episodes", - "TabFavorites": "Favorites", - "TabGenres": "Genres", - "TabGuide": "Guide", "TabInfo": "Info", "TabLatest": "Latest", "TabLiveTV": "Live TV", "TabLogs": "Logs", - "TabMovies": "Movies", "TabMusic": "Music", "TabMusicVideos": "Music Videos", "TabMyPlugins": "My Plugins", @@ -1430,8 +1397,6 @@ "TabSeries": "Series", "TabServer": "Server", "TabSettings": "Settings", - "TabShows": "Shows", - "TabSongs": "Songs", "TabStreaming": "Streaming", "TabTrailers": "Trailers", "TabUpcoming": "Upcoming", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 6fb6907284..0ae3654a9b 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -9,8 +9,6 @@ "HeaderSeries": "Series", "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar capítulos no disponibles en temporadas", "LabelFinish": "Terminar", - "LabelNext": "Siguiente", - "LabelPrevious": "Anterior", "LabelYoureDone": "Ha terminado!", "MoreUsersCanBeAddedLater": "Se pueden agregar más usuarios más tarde desde el tablero.", "NewCollectionNameExample": "Ejemplo: Colección de Star Wars", @@ -72,7 +70,6 @@ "AnyLanguage": "Cualquier idioma", "Anytime": "Cualquier fecha", "Ascending": "Ascendente", - "AttributeNew": "Nuevo", "Audio": "Audio", "Auto": "Auto", "Backdrop": "Fondo", @@ -99,19 +96,12 @@ "ButtonAddScheduledTaskTrigger": "Agregar desencadenador", "ButtonAddServer": "Agregar servidor", "ButtonAddUser": "Agregar usuario", - "ButtonArrowDown": "Abajo", "ButtonArrowLeft": "Izquierda", "ButtonArrowRight": "Derecha", - "ButtonArrowUp": "Arriba", "ButtonAudioTracks": "Pistas de audio", "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Cambiar servidor", - "ButtonConnect": "Conectar", - "ButtonDelete": "Eliminar", - "ButtonDeleteImage": "Eliminar imagen", - "ButtonDown": "Abajo", - "ButtonDownload": "Descargar", "ButtonEdit": "Editar", "ButtonEditImages": "Editar imágenes", "ButtonEditOtherUserPreferences": "Editar perfil, imagen y preferencias personales del usuario.", @@ -126,7 +116,6 @@ "ButtonManualLogin": "Inicio de sesión manual", "ButtonMore": "Más", "ButtonNetwork": "Red", - "ButtonNew": "Nuevo", "ButtonNextTrack": "Pista siguiente", "ButtonOff": "Desactivado", "ButtonOk": "Aceptar", @@ -151,17 +140,14 @@ "ButtonSelectView": "Seleccionar vista", "ButtonSend": "Enviar", "ButtonSettings": "Configuraciones", - "ButtonShuffle": "Aleatorio", "ButtonShutdown": "Apagar", "ButtonSignIn": "Iniciar sesión", - "ButtonSort": "Ordenar", "ButtonStart": "Iniciar", "ButtonStop": "Detener", "ButtonSubmit": "Enviar", "ButtonSubtitles": "Subtítulos", "ButtonTrailer": "Avance", "ButtonUninstall": "Desinstalar", - "ButtonUp": "Arriba", "ButtonWebsite": "Sitio web", "CancelRecording": "Cancelar grabación", "CancelSeries": "Cancelar serie", @@ -230,7 +216,6 @@ "EditImages": "Editar imagenes", "EditMetadata": "Editar metadata", "EditSubtitles": "Editar subtitulos", - "EnableBackdrops": "Fondos", "EnableBackdropsHelp": "Muestra imágenes de fondo en el fondo de algunas páginas mientras se navega por la biblioteca.", "EnableCinemaMode": "Modo cine", "EnableColorCodedBackgrounds": "Habilitar colores en el fondo del código", @@ -319,7 +304,6 @@ "HeaderApiKey": "Contraseña API", "HeaderAllowMediaDeletionFrom": "Permitir el borrado de medios desde", "HeaderAlert": "Alerta", - "HeaderAlbums": "Albumes", "HeaderAdmin": "Admin", "HeaderAdditionalParts": "Partes adicionales", "HeaderAddUpdateImage": "Agregar/Actualizar imagen", @@ -356,7 +340,6 @@ "HeaderCodecProfileHelp": "Los perfiles de códec indican las limitaciones de un dispositivo cuando se reproducen códecs específicos. Si se aplica una limitación, los medios se transcodificarán, incluso si el códec está configurado para reproducción directa.", "HeaderCodecProfile": "Perfil del códec", "HeaderChapterImages": "Imágenes del capitulo", - "HeaderChannels": "Canales", "HeaderChannelAccess": "Acceso al canal", "HeaderCastCrew": "Reparto", "HeaderCastAndCrew": "Reparto", @@ -402,7 +385,6 @@ "HeaderLatestMedia": "Medios recientes", "HeaderKeepSeries": "Mantener serie", "HeaderKeepRecording": "Mantener grabación", - "HeaderItems": "Artículos", "HeaderInstantMix": "Mezcla instantánea", "HeaderInstall": "Instalar", "HeaderImageSettings": "Configuraciones de imagen", @@ -414,7 +396,6 @@ "HeaderHttpHeaders": "Encabezados HTTP", "HeaderHome": "Inicio", "HeaderGuideProviders": "Proveedores de datos de guías de TV", - "HeaderGenres": "Géneros", "HeaderFrequentlyPlayed": "Reproducido con frecuencia", "HeaderForgotPassword": "Olvidé la contraseña", "HeaderForKids": "Para niños", @@ -444,7 +425,6 @@ "HeaderMyDevice": "Mi dispositivo", "HeaderMusicVideos": "Videos musicales", "HeaderMusicQuality": "Calidad de música", - "HeaderMovies": "Películas", "LabelAccessDay": "Día de la semana:", "LabelAbortedByServerShutdown": "(Abortado por el apagado del servidor)", "Label3DFormat": "Formato 3D:", @@ -462,7 +442,6 @@ "HideWatchedContentFromLatestMedia": "Ocultar contenido visto de los últimos medios", "Hide": "Ocultar", "Help": "Ayuda", - "HeadersFolders": "Carpetas", "HeaderYears": "Años", "HeaderXmlSettings": "Configuraciones Xml", "HeaderXmlDocumentAttributes": "Atributos del documento Xml", @@ -496,7 +475,6 @@ "HeaderSpecialEpisodeInfo": "Información especial del capítulo", "HeaderSortOrder": "Orden de clasificación", "HeaderSortBy": "Ordenar por", - "HeaderShutdown": "Apagar", "HeaderSetupLibrary": "Configura tus bibliotecas de medios", "HeaderSettings": "Configuraciones", "HeaderServerSettings": "Configuración del servidor", @@ -755,7 +733,6 @@ "LabelRecordingPath": "Ruta de grabación predeterminada:", "LabelRecord": "Grabar:", "LabelReasonForTranscoding": "Motivo de la transcodificación:", - "LabelReadHowYouCanContribute": "Aprende cómo puedes contribuir.", "LabelPublicHttpsPortHelp": "El número de puerto público que debe asignarse al puerto HTTPS local.", "LabelPublicHttpsPort": "Número de puerto HTTPS público:", "LabelPublicHttpPortHelp": "El número de puerto público que debe asignarse al puerto HTTP local.", @@ -892,7 +869,6 @@ "Normal": "Normal", "None": "Nunguno", "NoSubtitlesHelp": "Los subtítulos no se cargarán de manera predeterminada. Todavía se pueden activar manualmente durante la reproducción.", - "NoSubtitles": "Ninguno", "NoSubtitleSearchResultsFound": "No se han encontrado resultados.", "MessageNoPluginConfiguration": "Este complemento no tiene opciones para configurar.", "MessageNoNextUpItems": "Nada encontrado. ¡Comienza a ver tus shows!", @@ -1404,8 +1380,6 @@ "Trailers": "Avances", "TabTrailers": "Avances", "TabStreaming": "Transmisión", - "TabSongs": "Canciones", - "TabShows": "Programas", "TabSettings": "Configuraciones", "TabServer": "Servidor", "TabSeries": "Series", @@ -1427,25 +1401,16 @@ "TabMyPlugins": "Mis complementos", "TabMusicVideos": "Videos musicales", "TabMusic": "Música", - "TabMovies": "Películas", "TabLogs": "Registros", "TabLiveTV": "TV en vivo", "TabLatest": "Último", "TabInfo": "Información", - "TabGuide": "Guía", - "TabGenres": "Géneros", - "TabFavorites": "Favoritos", - "TabDVR": "DVR", "TabDirectPlay": "Reproducción directa", - "TabDevices": "Dispositivos", "TabDashboard": "Tablero", "TabContainers": "Contenedores", - "TabCollections": "Colecciones", "TabCodecs": "Códecs", - "TabChannels": "Canales", "TabRepositories": "Repositorios", "TabCatalog": "Catálogo", - "TabAlbums": "Álbumes", "TabAlbumArtists": "Artistas del álbum", "TabAdvanced": "Avanzado", "TabAccess": "Acceso", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index 643758b660..e682b2f4cb 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -35,7 +35,6 @@ "AsManyAsPossible": "Tantos como sea posible", "Ascending": "Ascendente", "AspectRatio": "Relación de aspecto", - "AttributeNew": "Nuevo", "Backdrop": "Imagen de fondo", "Backdrops": "Imágenes de fondo", "Banner": "Banner", @@ -54,19 +53,12 @@ "ButtonAddScheduledTaskTrigger": "Agregar disparador", "ButtonAddServer": "Agregar servidor", "ButtonAddUser": "Agregar usuario", - "ButtonArrowDown": "Abajo", "ButtonArrowLeft": "Izquierda", "ButtonArrowRight": "Derecha", - "ButtonArrowUp": "Arriba", "ButtonAudioTracks": "Pistas de audio", "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Cambiar servidor", - "ButtonConnect": "Conectar", - "ButtonDelete": "Eliminar", - "ButtonDeleteImage": "Eliminar imagen", - "ButtonDown": "Abajo", - "ButtonDownload": "Descargar", "ButtonEdit": "Editar", "ButtonEditImages": "Editar imágenes", "ButtonEditOtherUserPreferences": "Editar el perfil, la imagen y las preferencias personales de este usuario.", @@ -80,7 +72,6 @@ "ButtonManualLogin": "Inicio de sesión manual", "ButtonMore": "Más", "ButtonNetwork": "Red", - "ButtonNew": "Nuevo", "ButtonNextTrack": "Pista siguiente", "ButtonOff": "Apagar", "ButtonOpen": "Abrir", @@ -105,17 +96,14 @@ "ButtonSelectView": "Seleccionar vista", "ButtonSend": "Enviar", "ButtonSettings": "Configuración", - "ButtonShuffle": "Aleatorio", "ButtonShutdown": "Apagar", "ButtonSignIn": "Iniciar sesión", "ButtonSignOut": "Cerrar sesión", - "ButtonSort": "Ordenar", "ButtonStart": "Iniciar", "ButtonStop": "Detener", "ButtonSubmit": "Enviar", "ButtonSubtitles": "Subtítulos", "ButtonUninstall": "Desinstalar", - "ButtonUp": "Arriba", "ButtonWebsite": "Sitio web", "CancelRecording": "Cancelar grabación", "CancelSeries": "Cancelar serie", @@ -188,7 +176,6 @@ "EditImages": "Editar imágenes", "EditMetadata": "Editar metadatos", "EditSubtitles": "Editar subtítulos", - "EnableBackdrops": "Imágenes de fondo", "EnableBackdropsHelp": "Muestra imágenes de fondo en el fondo de algunas páginas mientras se navega por la biblioteca.", "EnableCinemaMode": "Modo cine", "EnableColorCodedBackgrounds": "Fondos de colores codificados", @@ -266,7 +253,6 @@ "HeaderAddUser": "Agregar usuario", "HeaderAdditionalParts": "Partes adicionales", "HeaderAlbumArtists": "Artistas del álbum", - "HeaderAlbums": "Álbumes", "HeaderAlert": "Alerta", "HeaderAllowMediaDeletionFrom": "Permitir eliminación de medios de", "HeaderApiKey": "Clave API", @@ -283,7 +269,6 @@ "HeaderCastAndCrew": "Reparto y equipo", "HeaderCastCrew": "Reparto y equipo", "HeaderChannelAccess": "Acceso a los canales", - "HeaderChannels": "Canales", "HeaderChapterImages": "Imágenes de los capítulos", "HeaderCodecProfile": "Perfil de códec", "HeaderCodecProfileHelp": "Los perfiles de códecs indican las limitaciones de un dispositivo al reproducir códecs específicos. Si una limitación se aplica entonces el medio será transcodificado, incluso si el códec ha sido configurado para reproducción directa.", @@ -324,7 +309,6 @@ "HeaderForKids": "Para niños", "HeaderForgotPassword": "Olvidé mi contraseña", "HeaderFrequentlyPlayed": "Reproducido frecuentemente", - "HeaderGenres": "Géneros", "HeaderGuideProviders": "Proveedores de Guías de TV", "HeaderHttpHeaders": "Encabezados HTTP", "HeaderIdentification": "Identificación", @@ -335,7 +319,6 @@ "HeaderImageSettings": "Configuración de imagen", "HeaderInstall": "Instalar", "HeaderInstantMix": "Mix instantáneo", - "HeaderItems": "Elementos", "HeaderKeepRecording": "Conservar grabación", "HeaderKeepSeries": "Conservar serie", "HeaderKodiMetadataHelp": "Para habilitar o deshabilitar los metadatos NFO, edite una biblioteca en la configuración de bibliotecas de Jellyfin y ubica la sección grabadores de metadatos.", @@ -358,7 +341,6 @@ "HeaderMediaInfo": "Info del medio", "HeaderMetadataSettings": "Configuración de metadatos", "HeaderMoreLikeThis": "Más como esto", - "HeaderMovies": "Películas", "HeaderMusicQuality": "Calidad de la música", "HeaderMusicVideos": "Videos musicales", "HeaderMyDevice": "Mi dispositivo", @@ -419,7 +401,6 @@ "HeaderServerSettings": "Configuración del servidor", "HeaderSettings": "Configuración", "HeaderSetupLibrary": "Configura tus bibliotecas de medios", - "HeaderShutdown": "Apagar", "HeaderSortBy": "Ordenar por", "HeaderSortOrder": "Clasificar ordenado", "HeaderSpecialEpisodeInfo": "Información del episodio especial", @@ -453,7 +434,6 @@ "HeaderXmlDocumentAttributes": "Atributos del documento XML", "HeaderXmlSettings": "Configuración XML", "HeaderYears": "Años", - "HeadersFolders": "Carpetas", "Help": "Ayuda", "Hide": "Ocultar", "HideWatchedContentFromLatestMedia": "Ocultar contenido ya visto de últimos medios", @@ -668,7 +648,6 @@ "LabelNewPassword": "Contraseña nueva:", "LabelNewPasswordConfirm": "Confirmación de contraseña nueva:", "LabelNewsCategories": "Categorías de noticias:", - "LabelNext": "Siguiente", "LabelNotificationEnabled": "Habilitar esta notificación", "LabelNumber": "Número:", "LabelNumberOfGuideDays": "Número de días de datos de la programación a descargar:", @@ -695,7 +674,6 @@ "LabelPreferredDisplayLanguage": "Idioma de pantalla preferido:", "LabelPreferredDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en curso.", "LabelPreferredSubtitleLanguage": "Idioma preferido para los subtítulos:", - "LabelPrevious": "Anterior", "LabelProfileAudioCodecs": "Códecs de audio:", "LabelProfileCodecsHelp": "Separados por comas. Puede dejarse vacío para aplicarlo a todos los códecs.", "LabelProfileContainer": "Contenedor:", @@ -708,7 +686,6 @@ "LabelPublicHttpPortHelp": "El número de puerto público que debe asignarse al puerto HTTP local.", "LabelPublicHttpsPort": "Número de puerto HTTPS público:", "LabelPublicHttpsPortHelp": "El número de puerto público que debe asignarse al puerto HTTPS local.", - "LabelReadHowYouCanContribute": "Aprende cómo puedes contribuir.", "LabelReasonForTranscoding": "Motivo para transcodificar:", "LabelRecord": "Grabar:", "LabelRecordingPath": "Ruta por defecto para las grabaciones:", @@ -914,7 +891,6 @@ "MessageNoNextUpItems": "No se encontró nada. ¡Comienza a ver tus programas!", "MessageNoPluginConfiguration": "Este complemento no tiene configuraciones disponibles.", "NoSubtitleSearchResultsFound": "No se encontraron resultados.", - "NoSubtitles": "Ninguno", "NoSubtitlesHelp": "Los subtítulos no serán cargados por defecto. Pueden ser activados manualmente durante la reproducción.", "None": "Ninguno", "NumLocationsValue": "{0} carpetas", @@ -1189,22 +1165,14 @@ "TabAccess": "Acceso", "TabAdvanced": "Avanzado", "TabAlbumArtists": "Artistas del álbum", - "TabAlbums": "Álbumes", "TabCatalog": "Catálogo", - "TabChannels": "Canales", - "TabCollections": "Colecciones", "TabContainers": "Contenedores", "TabDashboard": "Panel de control", - "TabDevices": "Dispositivos", "TabDirectPlay": "Reproducción directa", "TabEpisodes": "Episodios", - "TabFavorites": "Favoritos", - "TabGenres": "Géneros", - "TabGuide": "Guía", "TabLatest": "Recientes", "TabLiveTV": "TV en vivo", "TabLogs": "Registros", - "TabMovies": "Películas", "TabMusic": "Música", "TabMusicVideos": "Videos musicales", "TabMyPlugins": "Mis complementos", @@ -1224,8 +1192,6 @@ "TabScheduledTasks": "Tareas programadas", "TabServer": "Servidor", "TabSettings": "Configuración", - "TabShows": "Programas", - "TabSongs": "Canciones", "TabStreaming": "Transmisión", "TabTrailers": "Trailers", "TabUpcoming": "Próximamente", @@ -1454,7 +1420,6 @@ "HeaderFavoritePlaylists": "Listas de reproducción favoritas", "ButtonTogglePlaylist": "Lista de reproducción", "UnsupportedPlayback": "Jellyfin no puede desencriptar contenido protegido por DRM de todas formas todo el contenido será intentado, incluyendo los títulos protegidos. Algunos archivos pueden aparecer completamente en negro debido al encriptado o características no soportadas, como títulos interactivos.", - "TabDVR": "DVR", "SaveChanges": "Guardar cambios", "LabelRequireHttpsHelp": "Si se marca, el servidor redirigirá automáticamente todas las solicitudes a través de HTTP a HTTPS. Esto no tiene efecto si el servidor no está escuchando en HTTPS.", "LabelRequireHttps": "Requerir HTTPS", diff --git a/src/strings/es.json b/src/strings/es.json index 3ee716038c..3bd59126a9 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -27,7 +27,6 @@ "Artists": "Artistas", "AsManyAsPossible": "Tantos como sea posible", "AspectRatio": "Relación de aspecto", - "AttributeNew": "Nuevo", "Backdrop": "Imagen de fondo", "Backdrops": "Imágenes de fondo", "BirthDateValue": "Nacido: {0}", @@ -44,19 +43,12 @@ "ButtonAddScheduledTaskTrigger": "Agregar Activador", "ButtonAddServer": "Añadir servidor", "ButtonAddUser": "Agregar Usuario", - "ButtonArrowDown": "Abajo", "ButtonArrowLeft": "Izquierda", "ButtonArrowRight": "Derecha", - "ButtonArrowUp": "Arriba", "ButtonAudioTracks": "Pistas de audio", "ButtonBack": "Atrás", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Cambiar servidor", - "ButtonConnect": "Conectar", - "ButtonDelete": "Borrar", - "ButtonDeleteImage": "Borrar imagen", - "ButtonDown": "Abajo", - "ButtonDownload": "Descargar", "ButtonEdit": "Editar", "ButtonEditImages": "Editar imágenes", "ButtonEditOtherUserPreferences": "Editar este perfil, la imagen y los ajustes personales.", @@ -70,7 +62,6 @@ "ButtonManualLogin": "Acceder manualmente", "ButtonMore": "Más", "ButtonNetwork": "Red", - "ButtonNew": "Nuevo", "ButtonNextTrack": "Pista siguiente", "ButtonOff": "Apagado", "ButtonOk": "OK", @@ -96,18 +87,15 @@ "ButtonSelectView": "Seleccionar vista", "ButtonSend": "Enviar", "ButtonSettings": "Opciones", - "ButtonShuffle": "Mezclar", "ButtonShutdown": "Apagar", "ButtonSignIn": "Iniciar sesión", "ButtonSignOut": "Desconectarse", - "ButtonSort": "Ordenar", "ButtonStart": "Inicio", "ButtonStop": "Detener", "ButtonSubmit": "Enviar", "ButtonSubtitles": "Subtítulos", "ButtonTrailer": "Tráiler", "ButtonUninstall": "Desinstalar", - "ButtonUp": "Arriba", "ButtonWebsite": "Sitio web", "CancelRecording": "Cancelar grabación", "CancelSeries": "Cancelar series", @@ -236,7 +224,6 @@ "HeaderCastAndCrew": "Reparto y equipo", "HeaderCastCrew": "Reparto y equipo técnico", "HeaderChannelAccess": "Acceso a los canales", - "HeaderChannels": "Canales", "HeaderChapterImages": "Imágenes de capítulos", "HeaderCodecProfile": "Perfil de códec", "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.", @@ -277,7 +264,6 @@ "HeaderForKids": "Para niños", "HeaderForgotPassword": "Contraseña olvidada", "HeaderFrequentlyPlayed": "Reproducido frecuentemente", - "HeaderGenres": "Géneros", "HeaderGuideProviders": "Proveedores de guías", "HeaderHttpHeaders": "Cabeceras HTTP", "HeaderIdentification": "Identificación", @@ -288,7 +274,6 @@ "HeaderImageSettings": "Ajustes de imagen", "HeaderInstall": "Instalar", "HeaderInstantMix": "Mezcla instantánea", - "HeaderItems": "Elementos", "HeaderKeepRecording": "Mantener grabación", "HeaderKeepSeries": "Mantener series", "HeaderKodiMetadataHelp": "Puedes activar o desactivar las etiquetas en formato NFO abriendo la configuración de una biblioteca y revisando los ajustes en la sección de etiquetas.", @@ -311,7 +296,6 @@ "HeaderMediaInfo": "Información multimedia", "HeaderMetadataSettings": "Ajustes de etiquetas", "HeaderMoreLikeThis": "Más como este", - "HeaderMovies": "Películas", "HeaderMusicVideos": "Vídeos musicales", "HeaderMyDevice": "Mi dispositivo", "HeaderMyMedia": "Mis contenidos", @@ -369,7 +353,6 @@ "HeaderServerSettings": "Ajustes del servidor", "HeaderSettings": "Ajustes", "HeaderSetupLibrary": "Configure sus bibliotecas de medios", - "HeaderShutdown": "Apagar", "HeaderSortBy": "Ordenar por", "HeaderSortOrder": "Orden", "HeaderSpecialEpisodeInfo": "Información del episodio especial", @@ -401,7 +384,6 @@ "HeaderXmlDocumentAttributes": "Atributos del documento xml", "HeaderXmlSettings": "Ajustes xml", "HeaderYears": "Años", - "HeadersFolders": "Carpetas", "Help": "Ayuda", "Hide": "Ocultar", "HideWatchedContentFromLatestMedia": "Esconder medios vistos de los medios más recientes", @@ -609,7 +591,6 @@ "LabelNewPassword": "Nueva contraseña:", "LabelNewPasswordConfirm": "Confirmación de la nueva contraseña:", "LabelNewsCategories": "Categorías de noticias:", - "LabelNext": "Siguiente", "LabelNotificationEnabled": "Activar esta notificación", "LabelNumber": "Número:", "LabelNumberOfGuideDays": "Número de días a descargar de la guía:", @@ -634,7 +615,6 @@ "LabelPreferredDisplayLanguage": "Idioma preferido visualizado:", "LabelPreferredDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en marcha.", "LabelPreferredSubtitleLanguage": "Idioma de subtítulos preferido:", - "LabelPrevious": "Anterior", "LabelProfileAudioCodecs": "Códecs de audio:", "LabelProfileCodecs": "Códecs:", "LabelProfileCodecsHelp": "Separados por comas. Esto se puede dejar vacío para aplicar a todos los códecs.", @@ -648,7 +628,6 @@ "LabelPublicHttpPortHelp": "Número de puerto público que debe ser enlazado al puerto HTTP local.", "LabelPublicHttpsPort": "Puerto público HTTPS:", "LabelPublicHttpsPortHelp": "Puerto público que debe ser enlazado al puerto local HTTPS.", - "LabelReadHowYouCanContribute": "Aprenda cómo contribuir.", "LabelReasonForTranscoding": "Motivo por el que se realiza la conversión:", "LabelRecord": "Grabar:", "LabelRecordingPath": "Ruta de grabaciones por defecto:", @@ -839,7 +818,6 @@ "MessageNoNextUpItems": "Nada encontrado. ¡Comienza a ver tus programas!", "MessageNoPluginConfiguration": "Este complemento no tiene opciones que configurar.", "NoSubtitleSearchResultsFound": "No se han encontrado resultados.", - "NoSubtitles": "Sin subtítulos", "NoSubtitlesHelp": "Los subtítulos no se cargarán de forma predeterminada. Tienen que ser activados manualmente durante la reproducción.", "None": "Nada", "NumLocationsValue": "{0} carpetas", @@ -1090,22 +1068,14 @@ "TabAccess": "Acceso", "TabAdvanced": "Avanzado", "TabAlbumArtists": "Artistas de los álbumes", - "TabAlbums": "Álbumes", "TabCatalog": "Catálogo", - "TabChannels": "Canales", "TabCodecs": "Códecs", - "TabCollections": "Colecciones", "TabContainers": "Contenedores", "TabDashboard": "Panel de control", - "TabDevices": "Dispositivos", "TabDirectPlay": "Reproducción directa", "TabEpisodes": "Episodios", - "TabFavorites": "Favoritos", - "TabGenres": "Géneros", - "TabGuide": "Guía", "TabLatest": "Novedades", "TabLiveTV": "Televisión en directo", - "TabMovies": "Películas", "TabMusic": "Música", "TabMusicVideos": "Videos musicales", "TabMyPlugins": "Mis extensiones", @@ -1124,8 +1094,6 @@ "TabScheduledTasks": "Tareas programadas", "TabServer": "Servidor", "TabSettings": "Opciones", - "TabShows": "Programas", - "TabSongs": "Canciones", "TabStreaming": "Transmisión", "TabUpcoming": "Próximos", "TabUsers": "Usuarios", @@ -1222,7 +1190,6 @@ "DisplayMissingEpisodesWithinSeasonsHelp": "Esto también debe ser habilitado para la biblioteca de TV en la configuración del servidor.", "DropShadow": "Eliminar sombra", "EditMetadata": "Editar etiquetas", - "EnableBackdrops": "Imágenes de fondo", "EnableBackdropsHelp": "Mostrar imágenes de fondo en algunas páginas mientras se explora la biblioteca.", "EnableColorCodedBackgrounds": "Fondos con código de colores", "EnableExternalVideoPlayersHelp": "Se mostrará un menú para reproductor externo cuando comience la reproducción del vídeo.", @@ -1240,7 +1207,6 @@ "GroupBySeries": "Agrupar por series", "GuideProviderLogin": "Credenciales", "HeaderAlbumArtists": "Artistas del álbum", - "HeaderAlbums": "Álbumes", "HeaderApp": "Aplicación", "HeaderAppearsOn": "Aparece en", "HeaderBranding": "Remarcado", @@ -1467,7 +1433,6 @@ "LabelRequireHttps": "Necesita HTTPS", "LabelEnableHttpsHelp": "Permite que el servidor escuche en el puerto HTTPS configurado. También se debe configurar un certificado válido para que esto surta efecto.", "LabelEnableHttps": "Activar HTTPS", - "TabDVR": "DVR", "SaveChanges": "Guardar cambios", "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", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 7f1702c910..815018e9c3 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -133,8 +133,6 @@ "TabUsers": "Usuarios", "TabUpcoming": "Próximamente", "TabStreaming": "Transmisión", - "TabSongs": "Canciones", - "TabShows": "Programas", "TabSettings": "Configuración", "TabServer": "Servidor", "TabSeries": "Series", @@ -156,22 +154,14 @@ "TabMyPlugins": "Mis complementos", "TabMusicVideos": "Videos musicales", "TabMusic": "Música", - "TabMovies": "Películas", "TabLogs": "Registros", "TabLiveTV": "TV en vivo", "TabInfo": "Información", - "TabGuide": "Guía", - "TabGenres": "Géneros", - "TabFavorites": "Favoritos", "TabEpisodes": "Episodios", - "TabDVR": "DVR", "TabDirectPlay": "Reproducción directa", - "TabDevices": "Dispositivos", "TabDashboard": "Panel de control", "TabContainers": "Contenedores", - "TabCollections": "Colecciones", "TabCodecs": "Códecs", - "TabChannels": "Canales", "TabCatalog": "Catálogo", "OptionPoster": "Póster", "OptionPlayed": "Reproducido", @@ -294,7 +284,6 @@ "Normal": "Normal", "None": "Ninguno", "NoSubtitlesHelp": "Los subtítulos no serán cargados por defecto. Pueden ser activados manualmente durante la reproducción.", - "NoSubtitles": "Ninguno", "NoSubtitleSearchResultsFound": "No se encontraron resultados.", "MessageNoPluginConfiguration": "Este complemento no tiene configuraciones disponibles.", "MessageNoNextUpItems": "No se encontró nada. ¡Comienza a ver tus programas!", @@ -682,7 +671,6 @@ "LabelRecordingPath": "Ruta por defecto para las grabaciones:", "LabelRecord": "Grabar:", "LabelReasonForTranscoding": "Motivo para transcodificar:", - "LabelReadHowYouCanContribute": "Aprende cómo puedes contribuir.", "LabelPublicHttpsPortHelp": "El número de puerto público que debe asignarse al puerto HTTPS local.", "LabelPublicHttpsPort": "Número de puerto HTTPS público:", "LabelPublicHttpPortHelp": "El número de puerto público que debe asignarse al puerto HTTP local.", @@ -696,7 +684,6 @@ "LabelProfileCodecsHelp": "Separados por comas. Puede dejarse vacío para aplicarlo a todos los códecs.", "LabelProfileCodecs": "Códecs:", "LabelProfileAudioCodecs": "Códecs de audio:", - "LabelPrevious": "Anterior", "LabelPreferredSubtitleLanguage": "Idioma preferido para los subtítulos:", "LabelPreferredDisplayLanguageHelp": "La traducción de Jellyfin es un proyecto en curso.", "LabelPreferredDisplayLanguage": "Idioma de pantalla preferido:", @@ -728,7 +715,6 @@ "LabelNumberOfGuideDays": "Número de días de datos de la programación a descargar:", "LabelNumber": "Número:", "LabelNotificationEnabled": "Habilitar esta notificación", - "LabelNext": "Siguiente", "LabelNewsCategories": "Categorías de noticias:", "LabelNewPasswordConfirm": "Confirmación de contraseña nueva:", "LabelNewPassword": "Contraseña nueva:", @@ -865,7 +851,6 @@ "LabelChannels": "Canales:", "LabelCertificatePasswordHelp": "Si tu certificado requiere una contraseña, por favor, introdúcela aquí.", "LabelCertificatePassword": "Contraseña del certificado:", - "TabAlbums": "Álbumes", "TabAlbumArtists": "Artistas del álbum", "TabAdvanced": "Avanzado", "TabAccess": "Acceso", @@ -990,7 +975,6 @@ "HideWatchedContentFromLatestMedia": "Ocultar contenido ya visto de últimos medios", "Hide": "Ocultar", "Help": "Ayuda", - "HeadersFolders": "Carpetas", "HeaderYears": "Años", "HeaderXmlSettings": "Configuración XML", "HeaderXmlDocumentAttributes": "Atributos del documento XML", @@ -1025,7 +1009,6 @@ "HeaderSpecialEpisodeInfo": "Información del episodio especial", "HeaderSortOrder": "Clasificar ordenado", "HeaderSortBy": "Ordenar por", - "HeaderShutdown": "Apagar", "HeaderSetupLibrary": "Configura tus bibliotecas de medios", "HeaderSettings": "Configuración", "HeaderServerSettings": "Configuración del servidor", @@ -1081,7 +1064,6 @@ "HeaderMyDevice": "Mi dispositivo", "HeaderMusicVideos": "Videos musicales", "HeaderMusicQuality": "Calidad de la música", - "HeaderMovies": "Películas", "HeaderMoreLikeThis": "Más como esto", "HeaderMetadataSettings": "Configuración de metadatos", "HeaderMediaInfo": "Info del medio", @@ -1103,7 +1085,6 @@ "HeaderKodiMetadataHelp": "Para habilitar o deshabilitar los metadatos NFO, edita una biblioteca y ubica la sección de grabadores de metadatos.", "HeaderKeepSeries": "Conservar serie", "HeaderKeepRecording": "Conservar grabación", - "HeaderItems": "Elementos", "HeaderInstantMix": "Mix instantáneo", "HeaderInstall": "Instalar", "HeaderImageSettings": "Configuración de imagen", @@ -1116,7 +1097,6 @@ "HeaderHttpHeaders": "Encabezados HTTP", "HeaderHome": "Inicio", "HeaderGuideProviders": "Proveedores de Guías de TV", - "HeaderGenres": "Géneros", "HeaderFrequentlyPlayed": "Reproducido frecuentemente", "HeaderForgotPassword": "Olvidé mi contraseña", "HeaderForKids": "Para niños", @@ -1201,7 +1181,6 @@ "HeaderCodecProfileHelp": "Los perfiles de códecs indican las limitaciones de un dispositivo al reproducir códecs específicos. Si una limitación se aplica entonces el medio será transcodificado, incluso si el códec ha sido configurado para reproducción directa.", "HeaderCodecProfile": "Perfil de códec", "HeaderChapterImages": "Imágenes de los capítulos", - "HeaderChannels": "Canales", "HeaderChannelAccess": "Acceso a los canales", "HeaderCastCrew": "Reparto y equipo", "HeaderCastAndCrew": "Reparto y equipo", @@ -1220,7 +1199,6 @@ "HeaderApiKey": "Clave API", "HeaderAllowMediaDeletionFrom": "Permitir eliminación de medios de", "HeaderAlert": "Alerta", - "HeaderAlbums": "Álbumes", "HeaderAdmin": "Administrador", "HeaderAdditionalParts": "Partes adicionales", "HeaderAddUser": "Agregar usuario", @@ -1301,7 +1279,6 @@ "EnableColorCodedBackgrounds": "Fondos de colores codificados", "EnableCinemaMode": "Modo cine", "EnableBackdropsHelp": "Muestra imágenes de fondo en el fondo de algunas páginas mientras se navega por la biblioteca.", - "EnableBackdrops": "Imágenes de fondo", "EditSubtitles": "Editar subtítulos", "EditMetadata": "Editar metadatos", "EditImages": "Editar imágenes", @@ -1382,7 +1359,6 @@ "CancelSeries": "Cancelar serie", "CancelRecording": "Cancelar grabación", "ButtonWebsite": "Sitio web", - "ButtonUp": "Arriba", "ButtonUninstall": "Desinstalar", "ButtonTrailer": "Trailer", "ButtonTogglePlaylist": "Lista de reproducción", @@ -1391,11 +1367,9 @@ "ButtonSplit": "Dividir", "ButtonStop": "Detener", "ButtonStart": "Iniciar", - "ButtonSort": "Ordenar", "ButtonSignOut": "Cerrar sesión", "ButtonSignIn": "Iniciar sesión", "ButtonShutdown": "Apagar", - "ButtonShuffle": "Aleatorio", "ButtonSettings": "Configuración", "ButtonSend": "Enviar", "ButtonSelectView": "Seleccionar vista", @@ -1421,7 +1395,6 @@ "ButtonOk": "OK", "ButtonOff": "Apagar", "ButtonNextTrack": "Pista siguiente", - "ButtonNew": "Nuevo", "ButtonNetwork": "Red", "ButtonMore": "Más", "ButtonManualLogin": "Inicio de sesión manual", @@ -1436,19 +1409,12 @@ "ButtonEditOtherUserPreferences": "Editar el perfil, la imagen y las preferencias personales de este usuario.", "ButtonEditImages": "Editar imágenes", "ButtonEdit": "Editar", - "ButtonDownload": "Descargar", - "ButtonDown": "Abajo", - "ButtonDeleteImage": "Eliminar imagen", - "ButtonDelete": "Eliminar", - "ButtonConnect": "Conectar", "ButtonChangeServer": "Cambiar servidor", "ButtonCancel": "Cancelar", "ButtonBack": "Atrás", "ButtonAudioTracks": "Pistas de audio", - "ButtonArrowUp": "Arriba", "ButtonArrowRight": "Derecha", "ButtonArrowLeft": "Izquierda", - "ButtonArrowDown": "Abajo", "ButtonAddUser": "Agregar usuario", "ButtonAddServer": "Agregar servidor", "ButtonAddScheduledTaskTrigger": "Agregar disparador", @@ -1470,7 +1436,6 @@ "Auto": "Auto", "AuthProviderHelp": "Selecciona el proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", "Audio": "Audio", - "AttributeNew": "Nuevo", "AspectRatio": "Relación de aspecto", "AskAdminToCreateLibrary": "Pide a un administrador crear una biblioteca.", "Ascending": "Ascendente", diff --git a/src/strings/fa.json b/src/strings/fa.json index 5db3a657ca..a764f28998 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -7,15 +7,12 @@ "Browse": "مرور کردن", "ButtonAddUser": "افزودن کاربر", "ButtonCancel": "لغو کردن", - "ButtonDeleteImage": "حذف عکس", "ButtonFilter": "فیلتر", - "ButtonNew": "جدید", "ButtonOk": "خوب", "ButtonPlay": "پخش", "ButtonQuickStartGuide": "راهنمای شروع سریع", "ButtonResetPassword": "تنظیم مجدد رمز", "ButtonSignOut": "Sign out", - "ButtonSort": "مرتب سازی", "DeleteMedia": "حذف رسانه", "Disabled": "غیرفعال شده", "FolderTypeBooks": "کتاب‌ها", @@ -54,8 +51,6 @@ "LabelMaxParentalRating": "حداکثر امتیاز سنی مجاز والدین:", "LabelNewPassword": "رمز جدید:", "LabelNewPasswordConfirm": "تایید رمز جدید:", - "LabelNext": "بعدی", - "LabelPrevious": "قبلی", "LabelProfileCodecsHelp": "جدا شده توسط کاما این می تواند برای همه کدک ها اعمال شود.", "LabelSaveLocalMetadata": "پوستر در پوشه مدیا ذخیره گردد", "LabelSaveLocalMetadataHelp": "ذخیره ی پوستر ها داخل پوشه های رسانه، امکان ویرایش آسان آنها را در یک مکان میسر میکند.", @@ -86,9 +81,7 @@ "TabAccess": "دسترسی", "TabAdvanced": "پیشرفته", "TabAlbumArtists": "هنرمندان آلبوم", - "TabAlbums": "آلبوم ها", "TabEpisodes": "قسمت ها", - "TabGenres": "ژانرها", "TabLatest": "جدیدترین‌ها", "TabMusicVideos": "موزیک ویدیوها", "TabNetworks": "شبکه ها", @@ -96,8 +89,6 @@ "TabPassword": "رمز عبور", "TabProfile": "پروفایل", "TabProfiles": "پروفایل ها", - "TabShows": "سریال ها", - "TabSongs": "آهنگ ها", "TabUpcoming": "بزودی", "TellUsAboutYourself": "در مورد خودتان به ما بگویید", "ThisWizardWillGuideYou": "این عمل برای انجام تنظیمات به شما کمک می‌کند. برای شروع، لطفا زبان مورد نظر خود را انتخاب کنید.", @@ -134,7 +125,6 @@ "Add": "افزودن", "Actor": "بازیگر", "AccessRestrictedTryAgainLater": "دسترسی در حال حاضر محدود شده است. لطفا دوباره تلاش کنید.", - "ButtonShuffle": "مخلوط کردن", "ButtonSettings": "تنظیمات", "ButtonSend": "ارسال", "ButtonSelectView": "انتخاب نما", @@ -167,16 +157,10 @@ "ButtonForgotPassword": "فراموشی گذرواژه", "ButtonEditImages": "ویرایش عکس‌ها", "ButtonEdit": "ویرایش", - "ButtonDownload": "بارگیری", - "ButtonDown": "پایین", - "ButtonDelete": "حذف", - "ButtonConnect": "اتصال", "ButtonChangeServer": "تغییر سرور", "ButtonBack": "بازگشت", - "ButtonArrowUp": "بالا", "ButtonArrowRight": "راست", "ButtonArrowLeft": "چپ", - "ButtonArrowDown": "پایین", "ButtonAddServer": "افزودن سرور", "ButtonAddScheduledTaskTrigger": "افزودن راه انداز", "ButtonAddMediaLibrary": "افزودن کتابخانه رسانه", @@ -192,7 +176,6 @@ "Backdrop": "پس زمینه", "Auto": "خودکار", "Audio": "صدا", - "AttributeNew": "جدید", "AspectRatio": "نسبت ابعاد", "AskAdminToCreateLibrary": "از کاربر مدیر بخواهید که یک کتابخانه ایجاد کند.", "Ascending": "بالا رونده", @@ -226,7 +209,6 @@ "EnableExternalVideoPlayers": "پخش کننده ویدیوی خارجی", "EnableDisplayMirroring": "نمایش آینه", "EnableCinemaMode": "حالت سینما", - "EnableBackdrops": "پشت‌زمینه‌ها", "EditSubtitles": "ویرایش زیرنویس‌ها", "EditMetadata": "ویرایش فراداده", "EditImages": "ویرایش عکس‌ها", @@ -285,7 +267,6 @@ "CancelSeries": "لغو سریال‌ها", "CancelRecording": "لغو ضبط", "ButtonWebsite": "وبسایت", - "ButtonUp": "بالا", "ButtonUninstall": "حذف نصب", "ButtonTrailer": "تریلر", "ButtonSubtitles": "زیرنویس‌ها", @@ -326,7 +307,6 @@ "HeaderMyDevice": "دستگاه‌های من", "HeaderMusicVideos": "موزیک ویدیوها", "HeaderMusicQuality": "کیفیت آهنگ", - "HeaderMovies": "فیلم‌ها", "HeaderMoreLikeThis": "موارد مشابه با این", "HeaderMetadataSettings": "تنظیمات ابرداده", "HeaderMediaInfo": "اطلاعات رسانه", @@ -346,7 +326,6 @@ "HeaderLatestMedia": "جدیدترین‌ رسانه‌ها", "HeaderKeepSeries": "سریال ادامه دهید", "HeaderKeepRecording": "ضبط را ادامه دهید", - "HeaderItems": "آیتم‌ها", "HeaderInstall": "نصب", "HeaderImageSettings": "تنظیمات عکس", "HeaderIdentifyItemHelp": "یک یا بیشتر مورد برای جستجو وارد کنید. موارد را حذف کنید تا نتیجه جستجو را افزایش دهید.", @@ -356,7 +335,6 @@ "HeaderHttpHeaders": "سرفصل‌های HTTP", "HeaderHome": "خانه", "HeaderGuideProviders": "ارائه دهنده داده راهنمای تلویزیونی", - "HeaderGenres": "ژانرها", "HeaderFrequentlyPlayed": "اغلب پخش شده", "HeaderForgotPassword": "فراموشی گذرواژه", "HeaderForKids": "برای کودکان", @@ -388,7 +366,6 @@ "HeaderCodecProfileHelp": "نمایه‌های کدک محدودیت‌های یک دستگاه را هنگام پخش کدک‌های خاص نشان می‌دهد. اگر محدودیتی اعمال شود، رسانه‌ها کد گذاری می‌شوند ، حتی اگر کدک برای پخش مستقیم پیکربندی شده باشد.", "HeaderCodecProfile": "نمایه کدک", "HeaderChapterImages": "عکس‌های سکانس", - "HeaderChannels": "کانال‌ها", "HeaderChannelAccess": "دسترسی به کانال", "HeaderCastCrew": "بازیگران و کارکنان", "HeaderCastAndCrew": "بازیگران و کارکنان", @@ -450,7 +427,6 @@ "FolderTypeUnset": "محتواهای مخلوط", "TabMyPlugins": "افزونه‌های من", "TabMusic": "موسیقی‌ها", - "TabMovies": "فیلم‌ها", "TabLogs": "واقعه نگار‌ها", "TabLiveTV": "تلویزیون زنده", "LatestFromLibrary": "جدیدترین‌های {0}", @@ -617,14 +593,9 @@ "OptionOnInterval": "در یک فاصله", "BookLibraryHelp": "کتاب‌های صوتی و متنی پشتیبانی می‌شوند. {0} راهنمای نامگذاری کتاب {1} را مرور کنید.", "TabInfo": "اطلاعات", - "TabGuide": "راهنما", - "TabFavorites": "مورد علاقه‌ها", "TabDirectPlay": "پخش مستقیم", - "TabDevices": "دستگاه‌ها", "TabDashboard": "داشبورد", - "TabCollections": "مجموعه‌ها", "TabCodecs": "کدک‌ها", - "TabChannels": "کانال‌ها", "TabCatalog": "فهرست", "TV": "تلویزیون", "Sunday": "یکشنبه", @@ -765,7 +736,6 @@ "LabelSeasonNumber": "شماره فصل:", "ConfigureDateAdded": "تنظیم کنید که چگونه تاریخ اضافه شده در داشبورد سرور Jellyfin تحت تنظیمات کتابخانه تعیین می‌شود", "CinemaModeConfigurationHelp": "حالت سینما تجربه تئاتر گونه را مستقیم به اتاق نشیمن شما می‌آورد با قابلیت پخش تریلرها و پیش نمایش‌ها قبل از سایر ویژگی‌های اصلی.", - "NoSubtitles": "خالی", "NoSubtitleSearchResultsFound": "نتیجه‌ای یافت نشد.", "MessageNoPluginConfiguration": "این افزونه هیچ تنظیماتی برای پیکربندی ندارد.", "No": "خیر", @@ -919,7 +889,6 @@ "HeaderAddUpdateImage": "Add/Update Image", "HeaderAdditionalParts": "Additional Parts", "HeaderAdmin": "Admin", - "HeaderAlbums": "Albums", "HeaderAlert": "Alert", "HeaderAllowMediaDeletionFrom": "Allow Media Deletion From", "HeaderApiKey": "API Key", @@ -1037,7 +1006,6 @@ "HeaderServerAddressSettings": "Server Address Settings", "HeaderServerSettings": "Server Settings", "HeaderSettings": "Settings", - "HeaderShutdown": "Shutdown", "HeaderSortBy": "Sort By", "HeaderSortOrder": "Sort Order", "HeaderSpecialEpisodeInfo": "Special Episode Info", @@ -1070,7 +1038,6 @@ "HeaderXmlDocumentAttributes": "Xml Document Attributes", "HeaderXmlSettings": "Xml Settings", "HeaderYears": "Years", - "HeadersFolders": "Folders", "Help": "Help", "Hide": "Hide", "HideWatchedContentFromLatestMedia": "Hide watched content from latest media", @@ -1208,7 +1175,6 @@ "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local HTTP port.", "LabelPublicHttpsPort": "Public HTTPS port number:", "LabelPublicHttpsPortHelp": "The public port number that should be mapped to the local HTTPS port.", - "LabelReadHowYouCanContribute": "Learn how you can contribute.", "LabelReasonForTranscoding": "Reason for transcoding:", "LabelRecord": "Record:", "LabelRecordingPath": "Default recording path:", @@ -1497,7 +1463,6 @@ "SyncPlayAccessHelp": "Select the level of access this user has to the SyncPlay feature. SyncPlay enables to sync playback with other devices.", "SystemDlnaProfilesHelp": "System profiles are read-only. Changes to a system profile will be saved to a new custom profile.", "TabContainers": "Containers", - "TabDVR": "DVR", "TvLibraryHelp": "Review the {0}TV naming guide{1}.", "UserAgentHelp": "Supply a custom user-agent HTTP header.", "ValueContainer": "Container: {0}", diff --git a/src/strings/fi.json b/src/strings/fi.json index fd514ddb77..3b17554efc 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -2,7 +2,6 @@ "MessageBrowsePluginCatalog": "Selaa lisäosakuvastoamme katsoaksesi saatavilla olevia lisäosia.", "ButtonAddUser": "Lisää Käyttäjä", "ButtonCancel": "Peruuta", - "ButtonDeleteImage": "Poista Kuva", "ButtonResetPassword": "Nollaa salasana", "ButtonSignOut": "Sign out", "Delete": "Poista", @@ -24,8 +23,6 @@ "LabelMaxParentalRating": "Suurin sallittu ikäraja:", "LabelNewPassword": "Uusi salasana:", "LabelNewPasswordConfirm": "Uuden salasanan varmistus:", - "LabelNext": "Seuraava", - "LabelPrevious": "Edellinen", "LabelSaveLocalMetadata": "Tallenna kuvamateriaali mediakansioihin", "LabelSaveLocalMetadataHelp": "Kuvamateriaalin ja metadatan tallentaminen suoraan kansioihin missä niitä on helppo muuttaa.", "LabelYoureDone": "Valmista!", @@ -83,7 +80,6 @@ "AsManyAsPossible": "Niin monta kuin mahdollista", "Ascending": "Nousevassa järjestyksessä", "AspectRatio": "Kuvasuhde", - "AttributeNew": "Uusi", "Audio": "Ääni", "AuthProviderHelp": "Valitse todentamispalvelu, jota käytetään tämän käyttäjän salasanan todentamisessa.", "Auto": "Auto", @@ -102,17 +98,11 @@ "ButtonAddMediaLibrary": "Lisää Mediakirjasto", "ButtonAddScheduledTaskTrigger": "Lisää Liipaisin", "ButtonAddServer": "Lisää Palvelin", - "ButtonArrowDown": "Alas", "ButtonArrowLeft": "Vasen", "ButtonArrowRight": "Oikea", - "ButtonArrowUp": "Ylös", "ButtonAudioTracks": "Ääniraidat", "ButtonBack": "Takaisin", "ButtonChangeServer": "Vaihda Palvelinta", - "ButtonConnect": "Yhdistä", - "ButtonDelete": "Poista", - "ButtonDown": "Alas", - "ButtonDownload": "Lataa", "ButtonEdit": "Muokkaa", "ButtonEditImages": "Muokkaa kuvia", "ButtonEditOtherUserPreferences": "Muokkaa tämän käyttäjän profiilia, kuvaa ja henkilökohtaisia asetuksia.", @@ -127,7 +117,6 @@ "ButtonManualLogin": "Manuaalinen kirjautuminen", "ButtonMore": "Lisää", "ButtonNetwork": "Verkko", - "ButtonNew": "Uusi", "ButtonNextTrack": "Seuraava raita", "ButtonOff": "Pois päältä", "ButtonOk": "Ok", @@ -153,17 +142,14 @@ "ButtonSelectView": "Valitse näkymä", "ButtonSend": "Lähetä", "ButtonSettings": "Asetukset", - "ButtonShuffle": "Satunnaistoisto", "ButtonShutdown": "Sammuta", "ButtonSignIn": "Kirjaudu sisään", - "ButtonSort": "Lajittele", "ButtonStart": "Käynnistä", "ButtonStop": "Pysäytä", "ButtonSubmit": "Lähetä", "ButtonSubtitles": "Tekstitykset", "ButtonTrailer": "Traileri", "ButtonUninstall": "Poista asennus", - "ButtonUp": "Ylös", "ButtonWebsite": "Nettisivusto", "CancelRecording": "Peruuta tallennus", "Categories": "Kategoriat", @@ -253,7 +239,6 @@ "CopyStreamURLSuccess": "Osoite kopioitu onnistuneesti.", "DeathDateValue": "Kuoli: {}", "CustomDlnaProfilesHelp": "Luo uusi profiili kohdistaaksesi uuteen laitteeseen tai ohittaaksesi järjestelmäprofiilin.", - "EnableBackdrops": "Taustat", "ErrorAddingMediaPathToVirtualFolder": "Media-polkua lisätessä ilmeni ongelma. Varmista, että polku on kirjoitettu oikein ja Jellyfin Palvelimella pääsy sijaintiin.", "Episodes": "Jaksot", "EndsAtValue": "Päättyy {0}", @@ -475,7 +460,6 @@ "HeaderConfirmPluginInstallation": "Vahvista liitännäisen asennus", "HeaderConfigureRemoteAccess": "Määritä etäkäyttö", "HeaderChapterImages": "Kappalekuvat", - "HeaderChannels": "Kanavat", "HeaderApp": "Sovellus", "HeaderAllowMediaDeletionFrom": "Salli median poisto", "HeaderAlert": "Hälytys", @@ -499,7 +483,6 @@ "OptionBlockTrailers": "Trailerit", "OptionBlockMusic": "Musiikki", "OptionBlockMovies": "Elokuvat", - "HeaderMovies": "Elokuvat", "HeaderMoreLikeThis": "Lisää tällaista", "HeaderMetadataSettings": "Metadata-asetukset", "MoreMediaInfo": "Mediainfo", @@ -514,7 +497,6 @@ "HeaderLatestMovies": "Uusimmat elokuvat", "HeaderLatestEpisodes": "Uusimmat jaksot", "HeaderInstall": "Asenna", - "HeaderGenres": "Tyylilajit", "HeaderFrequentlyPlayed": "Usein toistetut", "HeaderFetcherSettings": "Hakijan asetukset", "HeaderFetchImages": "Hae kuvia:", @@ -602,7 +584,6 @@ "LabelSeasonNumber": "Kauden numero:", "LabelScreensaver": "Näytönsäästäjä:", "LabelReasonForTranscoding": "Transkoodauksen syy:", - "LabelReadHowYouCanContribute": "Katso, miten voit auttaa.", "LabelPublicHttpsPort": "Julkinen HTTPS-porttinumero:", "LabelPublicHttpPort": "Julkinen HTTP-porttinumero:", "LabelProtocolInfo": "Protokollan info:", @@ -646,7 +627,6 @@ "ExtraLarge": "Suurin", "EveryNDays": "Joka {0} päivä", "Raised": "Korotettu", - "TabShows": "Sarjat", "Yesterday": "Eilen", "Yes": "Kyllä", "Unplayed": "Toistamattomat", @@ -663,7 +643,6 @@ "Tags": "Tunnisteet", "TabUsers": "Käyttäjät", "TabUpcoming": "Tulevat", - "TabSongs": "Kappaleet", "TabSettings": "Asetukset", "TabServer": "Palvelin", "TabSeries": "Sarjat", @@ -678,21 +657,14 @@ "TabMyPlugins": "Omat liittännäiseni", "TabMusicVideos": "Musiikkivideot", "TabMusic": "Musiikki", - "TabMovies": "Elokuvat", "TabLogs": "Lokit", "TabLiveTV": "Live-TV", "TabLatest": "Uusimmat", "TabInfo": "Tiedot", - "TabGenres": "Tyylilajit", - "TabFavorites": "Suosikit", "TabEpisodes": "Jaksot", "TabDirectPlay": "Suoratoisto", - "TabDevices": "Laitteet", "TabDashboard": "Päänäkymä", - "TabCollections": "Kokoelmat", - "TabChannels": "Kanavat", "TabCatalog": "Luettelo", - "TabAlbums": "Albumit", "TabAlbumArtists": "Albumin artistit", "TabAdvanced": "Edistynyt", "TV": "TV", @@ -883,7 +855,6 @@ "Kids": "Lapset", "Images": "Kuvat", "Hide": "Piilota", - "HeadersFolders": "Kansiot", "HeaderYears": "Vuodet", "HeaderVideos": "Videot", "HeaderVideoQuality": "Kuvanlaatu", @@ -891,7 +862,6 @@ "HeaderUser": "Käyttäjä", "HeaderSubtitleAppearance": "Tekstityksen ulkonäkö", "HeaderStatus": "Tila", - "HeaderShutdown": "Sammuta", "HeaderServerSettings": "Palvelimen asetukset", "HeaderSettings": "Asetukset", "HeaderSendMessage": "Lähetä viesti", @@ -928,7 +898,6 @@ "HeaderApiKeys": "API-avaimet", "HeaderApiKey": "API-avain", "HeaderAdmin": "Ylläpitäjä", - "HeaderAlbums": "Albumit", "HeaderAddUser": "Lisää käyttäjä", "HeaderAddUpdateImage": "Lisää/Päivitä kuva", "HeaderAddToPlaylist": "Lisää soittolistaan", @@ -1013,7 +982,6 @@ "TabOther": "Muut", "TabNotifications": "Ilmoitukset", "TabNetworking": "Verkkoasetukset", - "TabGuide": "Opas", "TabContainers": "Säiliöt", "TabCodecs": "Codecit", "Suggestions": "Ehdotukset", @@ -1043,7 +1011,6 @@ "Off": "Poissa päältä", "Normal": "Normaali", "None": "Ei mitään", - "NoSubtitles": "Ei mitään", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Seuraavat mediasijainnit tullaan poistamaan kirjastostasi:", "MessageItemsAdded": "Kohteet lisätty.", "MessageItemSaved": "Kohde tallennettu.", @@ -1085,7 +1052,6 @@ "HeaderOtherItems": "Muut kohteet", "HeaderLiveTvTunerSetup": "Live-TV virittimen määritys", "HeaderLibrarySettings": "Kirjaston asetukset", - "HeaderItems": "Kohteet", "HeaderGuideProviders": "TV-ohjelmaoppaiden tarjoajat", "HeaderFavoritePlaylists": "Suosikki soittolistat", "HeaderEnabledFields": "Käytössä olevat kentät", diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index d5782ea3fe..e7deac36f9 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -2,7 +2,6 @@ "Add": "Ajouter", "AddToCollection": "Ajouter à la collection", "AddToPlaylist": "Ajouter à la liste de lecture", - "AttributeNew": "Nouveau", "ButtonCancel": "Annuler", "ButtonGotIt": "J'ai compris", "ButtonQuickStartGuide": "Guide de démarrage rapide", @@ -32,9 +31,7 @@ "LabelFinish": "Terminer", "LabelLanguage": "Langue :", "LabelName": "Nom :", - "LabelNext": "Suivant", "LabelPlaylist": "Liste de lecture :", - "LabelPrevious": "Précédent", "LabelYear": "Année :", "LabelYoureDone": "Vous avez terminé !", "Live": "En direct", @@ -142,18 +139,11 @@ "ButtonAddScheduledTaskTrigger": "Ajouter un déclencheur", "ButtonAddServer": "Ajouter un serveur", "ButtonAddUser": "Ajouter un utilisateur", - "ButtonArrowDown": "Bas", "ButtonArrowLeft": "Gauche", "ButtonArrowRight": "Droite", - "ButtonArrowUp": "Haut", "ButtonAudioTracks": "Pistes Audio", "ButtonBack": "Retour arrière", "ButtonChangeServer": "Changer de serveur", - "ButtonConnect": "Connexion", - "ButtonDelete": "Supprimer", - "ButtonDeleteImage": "Supprimer l'image", - "ButtonDown": "Bas", - "ButtonDownload": "Téléchargement", "ButtonEdit": "Modifier", "ButtonEditImages": "Modifier les images", "ButtonEditOtherUserPreferences": "Modifier ce profil utilisateur, son avatar et ses préférences personnelles.", @@ -202,17 +192,14 @@ "CancelSeries": "Annuler la série", "CancelRecording": "Annuler l'enregistrement", "ButtonWebsite": "Site web", - "ButtonUp": "Vers le haut", "ButtonUninstall": "Désinstaller", "ButtonTogglePlaylist": "Liste de lecture", "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", @@ -234,7 +221,6 @@ "ButtonOpen": "Ouvrir", "ButtonOk": "OK", "ButtonNextTrack": "Prochaine piste", - "ButtonNew": "Nouveau", "ButtonAddImage": "Ajouter l'image", "BoxSet": "Coffret" } diff --git a/src/strings/fr.json b/src/strings/fr.json index 8e13275e39..61710fede0 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -34,7 +34,6 @@ "AsManyAsPossible": "Autant que possible", "Ascending": "Croissant", "AspectRatio": "Format d'image", - "AttributeNew": "Nouveau", "Backdrop": "Arrière-plan", "Backdrops": "Arrière-plans", "Banner": "Bannière", @@ -53,19 +52,12 @@ "ButtonAddScheduledTaskTrigger": "Ajouter un déclencheur", "ButtonAddServer": "Ajouter un serveur", "ButtonAddUser": "Ajouter un utilisateur", - "ButtonArrowDown": "Bas", "ButtonArrowLeft": "Gauche", "ButtonArrowRight": "Droite", - "ButtonArrowUp": "Haut", "ButtonAudioTracks": "Pistes Audio", "ButtonBack": "Retour arrière", "ButtonCancel": "Annuler", "ButtonChangeServer": "Changer de serveur", - "ButtonConnect": "Connexion", - "ButtonDelete": "Supprimer", - "ButtonDeleteImage": "Supprimer l'image", - "ButtonDown": "Bas", - "ButtonDownload": "Téléchargement", "ButtonEdit": "Modifier", "ButtonEditImages": "Modifier les images", "ButtonEditOtherUserPreferences": "Modifier ce profil utilisateur, son avatar et ses préférences personnelles.", @@ -79,7 +71,6 @@ "ButtonManualLogin": "Connexion manuelle", "ButtonMore": "Plus", "ButtonNetwork": "Réseau", - "ButtonNew": "Nouveau", "ButtonNextTrack": "Piste suivante", "ButtonOff": "Arrêt", "ButtonOk": "OK", @@ -104,18 +95,15 @@ "ButtonSelectView": "Sélectionnez une vue", "ButtonSend": "Envoyer", "ButtonSettings": "Paramètres", - "ButtonShuffle": "Aléatoire", "ButtonShutdown": "Éteindre", "ButtonSignIn": "Se connecter", "ButtonSignOut": "Se déconnecter", - "ButtonSort": "Trier", "ButtonStart": "Commencer", "ButtonStop": "Arrêter", "ButtonSubmit": "Soumettre", "ButtonSubtitles": "Sous-titres", "ButtonTrailer": "Bande-annonce", "ButtonUninstall": "Désinstaller", - "ButtonUp": "Haut", "ButtonWebsite": "Site Web", "CancelRecording": "Annuler l'enregistrement", "CancelSeries": "Annuler la série", @@ -188,7 +176,6 @@ "EditImages": "Modifier les images", "EditMetadata": "Éditer les métadonnées", "EditSubtitles": "Modifier les sous-titres", - "EnableBackdrops": "Images d'arrière-plans", "EnableBackdropsHelp": "Afficher des images d'arrière-plans sur certaines pages pendant la navigation dans la médiathèque.", "EnableCinemaMode": "Mode cinéma", "EnableColorCodedBackgrounds": "Fonds avec code couleur", @@ -281,7 +268,6 @@ "HeaderCastAndCrew": "Distribution & équipe", "HeaderCastCrew": "Distribution & équipe", "HeaderChannelAccess": "Accès aux chaînes", - "HeaderChannels": "Chaînes", "HeaderChapterImages": "Images des chapitres", "HeaderCodecProfile": "Profil de codec", "HeaderCodecProfileHelp": "Les profils de codec indiquent les limites d'un appareil lors de la lecture de codecs spécifiques. Si la limite s'applique au média, ce dernier sera transcodé, même si le codec est configuré pour la lecture directe.", @@ -332,7 +318,6 @@ "HeaderImageSettings": "Paramètres d'image", "HeaderInstall": "Installer", "HeaderInstantMix": "Mix instantané", - "HeaderItems": "Éléments", "HeaderKeepRecording": "Garder l'enregistrement", "HeaderKeepSeries": "Garder la série", "HeaderKodiMetadataHelp": "Pour activer ou désactiver les métadonnées NFO, utilisez l'onglet Métadonnées et configurez les options pour vos types de médias.", @@ -355,7 +340,6 @@ "HeaderMediaInfo": "Informations du média", "HeaderMetadataSettings": "Paramètres des métadonnées", "HeaderMoreLikeThis": "Similaires", - "HeaderMovies": "Films", "HeaderMusicQuality": "Qualité de la musique :", "HeaderMusicVideos": "Vidéos musicales", "HeaderMyDevice": "Cet appareil", @@ -416,7 +400,6 @@ "HeaderServerSettings": "Paramètres du serveur", "HeaderSettings": "Paramètres", "HeaderSetupLibrary": "Configurer vos médiathèques", - "HeaderShutdown": "Éteindre", "HeaderSortBy": "Trier par", "HeaderSortOrder": "Ordre de tri", "HeaderSpecialEpisodeInfo": "Informations de l'épisode spécial", @@ -450,7 +433,6 @@ "HeaderXmlDocumentAttributes": "Attributs des documents XML", "HeaderXmlSettings": "Paramètres XML", "HeaderYears": "Années", - "HeadersFolders": "Dossiers", "Help": "Aide", "Hide": "Cacher", "HideWatchedContentFromLatestMedia": "Masquer le contenu déjà vu dans les derniers médias", @@ -665,7 +647,6 @@ "LabelNewPassword": "Nouveau mot de passe :", "LabelNewPasswordConfirm": "Confirmer le nouveau mot de passe :", "LabelNewsCategories": "Catégories des informations :", - "LabelNext": "Suivant", "LabelNotificationEnabled": "Activer cette notification", "LabelNumber": "Numéro :", "LabelNumberOfGuideDays": "Nombre de jours de données du guide à télécharger :", @@ -692,7 +673,6 @@ "LabelPreferredDisplayLanguage": "Langue d'affichage préférée :", "LabelPreferredDisplayLanguageHelp": "La traduction de Jellyfin est un projet en cours.", "LabelPreferredSubtitleLanguage": "Langue de sous-titrage préférée :", - "LabelPrevious": "Précédent", "LabelProfileAudioCodecs": "Codecs audio :", "LabelProfileCodecs": "Codecs :", "LabelProfileCodecsHelp": "Séparés par des virgules. Peut être laissé vide pour s'appliquer à tous les codecs.", @@ -706,7 +686,6 @@ "LabelPublicHttpPortHelp": "Le numéro de port public à mapper sur le port HTTP local.", "LabelPublicHttpsPort": "Numéro de port HTTPS public :", "LabelPublicHttpsPortHelp": "Le numéro de port public à mapper sur le port HTTPS local.", - "LabelReadHowYouCanContribute": "Voir comment vous pouvez contribuer.", "LabelReasonForTranscoding": "Raison du transcodage :", "LabelRecord": "Enregistrer :", "LabelRecordingPath": "Chemin d'enregistrement par défaut :", @@ -912,7 +891,6 @@ "MessageNoNextUpItems": "Aucun élément trouvé. Commencez à regarder vos émissions !", "MessageNoPluginConfiguration": "Cette extension n'a aucun paramètre à configurer.", "NoSubtitleSearchResultsFound": "Aucun résultat trouvé.", - "NoSubtitles": "Pas de sous-titres", "NoSubtitlesHelp": "Les sous-titres ne seront pas chargés par défaut. Ils peuvent toujours être activés manuellement pendant la lecture.", "None": "Aucun", "NumLocationsValue": "{0} dossiers", @@ -1181,17 +1159,13 @@ "TabAdvanced": "Avancé", "TabAlbumArtists": "Artistes de l'album", "TabCatalog": "Catalogue", - "TabChannels": "Chaînes", "TabContainers": "Conteneurs", "TabDashboard": "Tableau de bord", - "TabDevices": "Appareils", "TabDirectPlay": "Lecture directe", "TabEpisodes": "Épisodes", - "TabFavorites": "Favoris", "TabLatest": "Derniers", "TabLiveTV": "TV en direct", "TabLogs": "Journaux", - "TabMovies": "Films", "TabMusic": "Musique", "TabMusicVideos": "Vidéos musicales", "TabMyPlugins": "Mes extensions", @@ -1210,8 +1184,6 @@ "TabSeries": "Séries", "TabServer": "Serveur", "TabSettings": "Paramètres", - "TabShows": "Séries", - "TabSongs": "Chansons", "TabTrailers": "Bandes-annonces", "TabUpcoming": "À venir", "TabUsers": "Utilisateurs", @@ -1292,8 +1264,6 @@ "Guide": "Guide", "GuestStar": "Guest star", "Photos": "Photos", - "HeaderAlbums": "Albums", - "HeaderGenres": "Genres", "HeaderIdentification": "Identification", "HeaderTuners": "Égaliseur", "Horizontal": "Horizontal", @@ -1323,11 +1293,7 @@ "Studios": "Studios", "Suggestions": "Suggestions", "TV": "Tv", - "TabAlbums": "Albums", "TabCodecs": "Codecs", - "TabCollections": "Collections", - "TabGenres": "Genres", - "TabGuide": "Guide", "TabInfo": "Informations", "TabNotifications": "Notifications", "TabPlugins": "Extensions", @@ -1454,7 +1420,6 @@ "Filter": "Filtre", "New": "Nouveau", "HeaderFavoritePlaylists": "Listes de lecture favorites", - "TabDVR": "DVR", "LabelChromecastVersion": "Version de Chromecast", "LabelEnableHttpsHelp": "Écouter les requêtes HTTPS sur le port configuré. Un certificat valide doit être fourni pour permettre ce mode de fonctionnement.", "LabelEnableHttps": "Activer HTTPS", diff --git a/src/strings/gsw.json b/src/strings/gsw.json index 70c773a137..1b23cb29b1 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -1,13 +1,10 @@ { "ButtonAddUser": "Erstell en User", "ButtonCancel": "Abbreche", - "ButtonDeleteImage": "Lösch Bild", - "ButtonNew": "Neu", "ButtonOk": "OK", "ButtonQuickStartGuide": "Schnellstart Instruktione", "ButtonResetPassword": "Passwort zrug setze", "ButtonSignOut": "Uslogge", - "ButtonSort": "Sortiere", "ChannelAccessHelp": "Wähl en Kanal us, um de mit dem User z'teile. Administratore werded immer d'Möglichkeit ha alli Kanäl mitm Metadate Manager z'bearbeite.", "Continuing": "Fortlaufend", "DeviceAccessHelp": "Das betrifft nur Grät wo einzigartig indentifiziert werded und tuet ned Browser Zuegriff verhindere. En Filter för Grät Zuegriff verhindered, dass neui Grät dezue gfüegt werded, bovor si ned überprüefd worde sind.", @@ -41,8 +38,6 @@ "LabelMaxParentalRating": "Maximum erlaubti Kindersicherig:", "LabelNewPassword": "Neus Passwort:", "LabelNewPasswordConfirm": "Neus Passwort bestätige:", - "LabelNext": "Nöchst", - "LabelPrevious": "Vorher", "LabelSaveLocalMetadata": "Speicher Bilder und Metadate i d'Medieordner", "LabelSaveLocalMetadataHelp": "Wennd Bilder und Metadate direkt i d'Medieordner speicherisch, chasch sie eifach weder finde und au bearbeite.", "LabelSelectUsers": "Wähl User:", @@ -96,12 +91,9 @@ "TabAccess": "Zuegriff", "TabAdvanced": "Erwiitert", "TabAlbumArtists": "Album-Artist", - "TabAlbums": "Albene", "TabCatalog": "Katalog", "TabEpisodes": "Episode", - "TabGenres": "Genre", "TabLatest": "Letschti", - "TabMovies": "Film", "TabMusicVideos": "Musigvideos", "TabMyPlugins": "Miini Plugins", "TabNetworks": "Studios", @@ -109,7 +101,6 @@ "TabPassword": "Passwort", "TabProfile": "Profil", "TabProfiles": "Profil", - "TabShows": "Serie", "TabUpcoming": "Usstehend", "TellUsAboutYourself": "Verzell was über dech selber", "ThisWizardWillGuideYou": "De Assistent hilft der dur de Installations Prozess. Zum afange, wähl bitte dini Sproch us.", diff --git a/src/strings/he.json b/src/strings/he.json index f5084ace4c..d3a6b1ee19 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -12,19 +12,15 @@ "Anytime": "בכל עת", "AroundTime": "בסביבות", "AsManyAsPossible": "כמה שיותר", - "AttributeNew": "חדש", "Backdrops": "תמונות רקע", "BirthLocation": "מיקום לידה", "MessageBrowsePluginCatalog": "עבור לקטלוג התוספים לראות אילו זמינים.", "ButtonAddUser": "הוסף משתמש", "ButtonCancel": "בטל", - "ButtonDelete": "מחק", - "ButtonDeleteImage": "מחק תמונה", "ButtonEdit": "ערוך", "ButtonFilter": "מסנן", "ButtonGotIt": "הבנתי", "ButtonManualLogin": "התחברות ידנית", - "ButtonNew": "חדש", "ButtonOk": "בסדר", "ButtonPlay": "נגן", "ButtonQuickStartGuide": "מדריך מהיר", @@ -36,7 +32,6 @@ "ButtonShutdown": "כבה", "ButtonSignIn": "היכנס", "ButtonSignOut": "התנתק", - "ButtonSort": "מיין", "CancelRecording": "ביטול הקלטה", "CancelSeries": "בטל סדרה", "Categories": "קטגוריות", @@ -88,7 +83,6 @@ "HeaderCancelRecording": "ביטול הקלטה", "HeaderCancelSeries": "בטל סדרה", "HeaderCastCrew": "שחקנים וצוות", - "HeaderChannels": "ערוצים", "HeaderConfirmPluginInstallation": "אשר התקנת תוסף", "HeaderCustomDlnaProfiles": "פרופילים מותאמים אישית", "HeaderDeleteItem": "מחק פריט", @@ -112,7 +106,6 @@ "HeaderLiveTV": "שידורים חיים", "HeaderMediaFolders": "ספריות מדיה", "HeaderMetadataSettings": "הגדרות מטא-דאטה", - "HeaderMovies": "סרטים", "HeaderMusicVideos": "קליפים", "HeaderMyMedia": "המדיה שלי", "HeaderNextUp": "הבא בתור", @@ -212,7 +205,6 @@ "LabelName": "שם:", "LabelNewPassword": "סיסמא חדשה:", "LabelNewPasswordConfirm": "אימות סיסמא חדשה:", - "LabelNext": "הבא", "LabelNotificationEnabled": "אפשר התראה זו", "LabelNumber": "מספר:", "LabelNumberOfGuideDays": "מספר ימים להורדה מלוח השידורים:", @@ -230,12 +222,10 @@ "LabelPlaylist": "רשימת ניגון:", "LabelPreferredDisplayLanguage": "שפת תצוגה מועדפת:", "LabelPreferredDisplayLanguageHelp": "תרגום Jellyfin הוא תהליך מתמשך.", - "LabelPrevious": "הקודם", "LabelProfileAudioCodecs": "מקודדי שמע:", "LabelProfileCodecs": "מקודדים:", "LabelProfileVideoCodecs": "‮מקודדי וידאו:", "LabelPublicHttpPort": "מספר פורט HTTP פומבי:", - "LabelReadHowYouCanContribute": "למד איך אתה יכול לתרום.", "LabelRecord": "הקלטה:", "LabelRefreshMode": "מצב רענון:", "LabelReleaseDate": "תאריך הוצאה:", @@ -436,19 +426,13 @@ "TabAccess": "גישה", "TabAdvanced": "מתקדם", "TabAlbumArtists": "אמני אלבום", - "TabAlbums": "אלבומים", "TabCatalog": "קטלוג", - "TabChannels": "ערוצים", "TabCodecs": "מקודדים", "TabDashboard": "לוח בקרה", "TabEpisodes": "פרקים", - "TabFavorites": "מועדפים", - "TabGenres": "זאנרים", - "TabGuide": "מדריך", "TabInfo": "מידע", "TabLatest": "אחרון", "TabLiveTV": "שידור ישיר", - "TabMovies": "סרטים", "TabMusic": "מוסיקה", "TabMusicVideos": "קליפים", "TabMyPlugins": "התוספים שלי", @@ -461,8 +445,6 @@ "TabSeries": "סדרות", "TabServer": "שרת", "TabSettings": "הגדרות", - "TabShows": "תוכניות", - "TabSongs": "שירים", "TabTrailers": "טריילרים", "TabUpcoming": "בקרוב", "Tags": "מילות מפתח", @@ -569,14 +551,12 @@ "ButtonHome": "בית", "ButtonFullscreen": "מסך מלא", "ButtonEditImages": "ערוך תמונות", - "ButtonConnect": "התחבר", "ButtonAddServer": "הוסף שרת", "ButtonAddMediaLibrary": "הוסף ספריית מדיה", "ButtonAddImage": "הוסף תמונה", "AskAdminToCreateLibrary": "בקש ממנהל ליצור ספרייה.", "Ascending": "סדר עולה", "Photos": "תמונות", - "TabCollections": "אוספים", "MessageConfirmShutdown": "‫האם אתה בטוח שברצונך לכבות את השרת?", "MessageConfirmRestart": "‫האם אתה בטוח שברצונך לאתחל את שרת ה-Jellyfin‏?", "HeaderThisUserIsCurrentlyDisabled": "משתמש זה אינו פעיל כרגע", @@ -584,7 +564,6 @@ "HeaderStopRecording": "עצור הקלטה", "HeaderSortOrder": "סדר מיון", "HeaderSortBy": "מיין לפי", - "HeaderShutdown": "כיבוי", "HeaderSettings": "הגדרות", "HeaderSendMessage": "שלח הודעה", "HeaderSelectServer": "בחר שרת", @@ -612,11 +591,9 @@ "HeaderLibrarySettings": "הגדרות ספרייה", "HeaderLibraryFolders": "תיקיות הספרייה", "HeaderLibraries": "ספריות", - "HeaderItems": "פריטים", "HeaderInstall": "התקנה", "HeaderImageOptions": "הגדרות תמונה", "HeaderHome": "בית", - "HeaderGenres": "ז'אנרים", "HeaderForKids": "עבור ילדים", "HeaderFavoriteVideos": "סרטונים מועדפים", "HeaderFavoritePeople": "אנשים מועדפים", @@ -625,7 +602,6 @@ "HeaderError": "שגיאה", "HeaderEpisodes": "פרקים", "HeaderDownloadSync": "הורדה וסנכרון", - "TabDevices": "מכשירים", "HeaderDevices": "מכשירים", "HeaderDeveloperInfo": "מידע למפתח", "HeaderDeleteTaskTrigger": "מחק טריגר משימה", @@ -641,7 +617,6 @@ "HeaderAudioBooks": "ספרים מוקלטים", "HeaderApiKeys": "‫מפתחות API", "HeaderApiKey": "‫מפתח API", - "HeaderAlbums": "אלבומים", "HeaderAddUpdateImage": "הוסף/עדכן תמונה", "HeaderAddScheduledTaskTrigger": "הוסף טריגר", "HeaderActivity": "פעילות", @@ -667,7 +642,6 @@ "EnableHardwareEncoding": "הפעל קידוד חומרה", "EnableExternalVideoPlayers": "נגני וידאו חיצוניים", "EnableCinemaMode": "מצב קולנוע", - "EnableBackdrops": "תמונות רקע", "EditMetadata": "ערוך מטא-דאטה", "DrmChannelsNotImported": "‫ערוצים בעלי ניהול זכויות דיגיטלי (DRM) לא ייובאו.", "Down": "למטה", @@ -684,10 +658,8 @@ "ConfirmEndPlayerSession": "‫האם לכבות את Jellyfin על {0}?", "CommunityRating": "דירוג קהילה", "ButtonWebsite": "אתר אינטרנט", - "ButtonUp": "למעלה", "ButtonSubmit": "שלח", "ButtonStart": "התחל", - "ButtonShuffle": "ערבוב", "ButtonScanAllLibraries": "סרוק את כל הספריות", "ButtonRevoke": "בטל", "TabScheduledTasks": "משימות מתוזמנות", @@ -703,14 +675,10 @@ "HeaderForgotPassword": "שחזור סיסמה", "ButtonForgotPassword": "שחזור סיסמה", "ButtonEditOtherUserPreferences": "ערוך את הפרופיל, התמונה וההגדרות האישיות של משתמש זה.", - "ButtonDownload": "הורדה", - "ButtonDown": "למטה", "ButtonChangeServer": "החלף שרת", "ButtonBack": "חזרה", "OptionBanner": "באנר", "ButtonAudioTracks": "רצועות שמע", - "ButtonArrowDown": "למטה", - "ButtonArrowUp": "למעלה", "ButtonArrowRight": "ימינה", "ButtonArrowLeft": "שמאלה", "ButtonAddScheduledTaskTrigger": "הוסף טריגר", @@ -821,7 +789,6 @@ "TabLogs": "יומני רישום", "LabelLogs": "יומני רישום:", "TabNetworking": "תקשורת", - "TabDVR": "ממיר-מקליט", "HeaderDVR": "ממיר-מקליט", "LabelScheduledTaskLastRan": "רץ לאחרונה {0}, במשך {1}.", "LabelTheme": "ערכת נושא:", diff --git a/src/strings/hi-in.json b/src/strings/hi-in.json index e7ac775adf..6a22cb170c 100644 --- a/src/strings/hi-in.json +++ b/src/strings/hi-in.json @@ -3,8 +3,6 @@ "ButtonSignOut": "Sign out", "HeaderAddUser": "उपयोगकर्ता जोडें", "LabelFinish": "समाप्त", - "LabelNext": "अगला", - "LabelPrevious": "पिछला", "LabelYoureDone": "आपने पूरा कर लिया है!", "MoreUsersCanBeAddedLater": "अधिक उपयोगकर्ताओं को बाद में डैशबोर्ड के अंतर्गत जोड़ा जा सकता है।", "TellUsAboutYourself": "हमें अपने बारे में बताएं", @@ -37,7 +35,6 @@ "ButtonOk": "ठीक", "ButtonOff": "बंद", "ButtonNextTrack": "आगे धावन पथ", - "ButtonNew": "नया", "ButtonNetwork": "संजाल", "ButtonMore": "अधिक", "ButtonManualLogin": "मैनुअल लॉगिन", @@ -52,19 +49,12 @@ "ButtonEditOtherUserPreferences": "इस उपयोगकर्ता की प्रोफ़ाइल, छवि और व्यक्तिगत प्राथमिकताएँ संपादित करें।", "ButtonEditImages": "छवियों को संपादित करें", "ButtonEdit": "संपादित करें", - "ButtonDownload": "डाउनलोड", - "ButtonDown": "नीचे", - "ButtonDeleteImage": "छवि हटाएं", - "ButtonDelete": "हटाएं", - "ButtonConnect": "जुडिये", "ButtonChangeServer": "सर्वर बदलें", "ButtonCancel": "रद्द करना", "ButtonBack": "वापस", "ButtonAudioTracks": "ऑडियो ट्रैक्स", - "ButtonArrowUp": "ऊपर", "ButtonArrowRight": "दाएँ", "ButtonArrowLeft": "बाएं", - "ButtonArrowDown": "नीचे", "ButtonAddUser": "उपयोगकर्ता जोड़ें", "ButtonAddServer": "सर्वर जोड़े", "ButtonAddScheduledTaskTrigger": "ट्रिगर जोड़ें", @@ -85,7 +75,6 @@ "Auto": "ऑटो", "AuthProviderHelp": "इस उपयोगकर्ता के पासवर्ड को प्रमाणित करने के लिए एक प्रमाणीकरण प्रदाता का उपयोग करें।", "Audio": "नया", - "AttributeNew": "नया", "AspectRatio": "आस्पेक्ट अनुपात", "AskAdminToCreateLibrary": "लाइब्रेरी बनाने के लिए किसी व्यवस्थापक से पूछें।", "Ascending": "आरोही", diff --git a/src/strings/hr.json b/src/strings/hr.json index 44c151be31..cf4aba1e9d 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -10,7 +10,6 @@ "Anytime": "Bilo kada", "AroundTime": "Oko", "AsManyAsPossible": "Što više je moguće", - "AttributeNew": "Novo", "Backdrops": "Pozadine", "BirthDateValue": "Rođen: {0}", "BirthLocation": "Lokacija rođenja", @@ -20,19 +19,12 @@ "ButtonAddScheduledTaskTrigger": "Dodaj okidač", "ButtonAddServer": "Dodaj Server", "ButtonAddUser": "Dodaj korisnika", - "ButtonArrowDown": "Dolje", "ButtonArrowLeft": "Ljevo", "ButtonArrowRight": "Desno", - "ButtonArrowUp": "Gore", "ButtonAudioTracks": "Audio pjesme", "ButtonBack": "Nazad", "ButtonCancel": "Odustani", "ButtonChangeServer": "Promijeni Server", - "ButtonConnect": "Spoji", - "ButtonDelete": "Izbriši", - "ButtonDeleteImage": "Izbriši sliku", - "ButtonDown": "Dolje", - "ButtonDownload": "Preuzimanje", "ButtonEdit": "Izmjeni", "ButtonEditImages": "Uređivanje slika", "ButtonEditOtherUserPreferences": "Uredite ovaj korisnički profil, slike i osobne postavke.", @@ -45,7 +37,6 @@ "ButtonManualLogin": "Ručna prijava", "ButtonMore": "Više", "ButtonNetwork": "Mreža", - "ButtonNew": "Novo", "ButtonNextTrack": "Sljedeća pjesma", "ButtonOff": "Isključi", "ButtonOk": "U redu", @@ -70,17 +61,14 @@ "ButtonSelectView": "Odaberi pogled", "ButtonSend": "Pošalji", "ButtonSettings": "Postavke", - "ButtonShuffle": "Miješaj", "ButtonShutdown": "Ugasi", "ButtonSignIn": "Prijava", "ButtonSignOut": "Odjava", - "ButtonSort": "Složi", "ButtonStart": "Početak", "ButtonSubmit": "Podnesi", "ButtonSubtitles": "Titlovi", "ButtonTrailer": "Kratki video", "ButtonUninstall": "Ukloni", - "ButtonUp": "Gore", "ButtonWebsite": "Web stranica", "CancelRecording": "Prekini snimanje", "CancelSeries": "Odustani od serije", @@ -175,7 +163,6 @@ "HeaderCastAndCrew": "Glumci i ekipa", "HeaderCastCrew": "Glumci i ekipa", "HeaderChannelAccess": "Pristup kanalima", - "HeaderChannels": "Kanali", "HeaderCodecProfile": "Profil kodeka", "HeaderCodecProfileHelp": "Profili kodeka definiraju ograničenja kada uređaji izvode sadržaj u specifičnom kodeku. Ako se ograničenja podudaraju tada će sadržaj biti transkodiran, iako je kodek konfiguriran za direktno izvođenje.", "HeaderConfirmPluginInstallation": "Potvrdi instalaciju dodatka", @@ -216,7 +203,6 @@ "HeaderIdentifyItemHelp": "Unesite jednu ili više kriterija pretraživanja. Uklonite kriterije za povećanje rezultata pretraživanja.", "HeaderImageSettings": "Postavke slike", "HeaderInstall": "Instaliraj", - "HeaderItems": "Stavke", "HeaderKeepRecording": "Zadrži snimanje", "HeaderKeepSeries": "Zadrži serije", "HeaderLatestEpisodes": "Zadnje epizode", @@ -235,7 +221,6 @@ "HeaderMediaInfo": "Info medija", "HeaderMetadataSettings": "Postavke meta-podataka", "HeaderMoreLikeThis": "Više ovakvih", - "HeaderMovies": "Filmovi", "HeaderMusicVideos": "Muzički spotovi", "HeaderMyMedia": "Moji mediji", "HeaderNewApiKey": "Novi API ključ", @@ -280,7 +265,6 @@ "HeaderServerSettings": "Postavke Servera", "HeaderSettings": "Postavke", "HeaderSetupLibrary": "Postavite vaše medijske biblioteke", - "HeaderShutdown": "Ugasi", "HeaderSortBy": "Složi po", "HeaderSortOrder": "Redoslijed", "HeaderSpecialEpisodeInfo": "Posebni podaci o epizodi", @@ -306,7 +290,6 @@ "HeaderXmlDocumentAttributes": "Xml atributi dokumenta", "HeaderXmlSettings": "Xml postavke", "HeaderYears": "Godine", - "HeadersFolders": "Mape", "Help": "Pomoć", "Identify": "Identificiraj", "Images": "Slike", @@ -483,7 +466,6 @@ "LabelNewPassword": "Nova lozinka:", "LabelNewPasswordConfirm": "Potvrda nove lozinke:", "LabelNewsCategories": "Kategorije vijesti:", - "LabelNext": "Sljedeći", "LabelNotificationEnabled": "Omogući ovu obavijest", "LabelNumber": "Broj:", "LabelNumberOfGuideDays": "Broj dana TV vodiča za preuzet:", @@ -505,7 +487,6 @@ "LabelPlaylist": "Popis:", "LabelPreferredDisplayLanguage": "Željeni jezik za prikaz:", "LabelPreferredDisplayLanguageHelp": "Prevađanje Jellyfin-a je projekt u tijeku.", - "LabelPrevious": "Prethodni", "LabelProfileAudioCodecs": "Audio kodek:", "LabelProfileCodecs": "Kodeki:", "LabelProfileCodecsHelp": "Odvojeno sa točka-zrezom. Ovo može ostaviti prazno kao bi bilo postavljeno za sve codecs.", @@ -519,7 +500,6 @@ "LabelPublicHttpPortHelp": "Broj javnog broja porta koji treba biti mapiran na lokalni http port.", "LabelPublicHttpsPort": "Javni broj https porta:", "LabelPublicHttpsPortHelp": "Broj javnog broja porta koji treba biti mapiran na lokalni https port.", - "LabelReadHowYouCanContribute": "Naučite kako možete pridonijeti.", "LabelRecord": "Snimka:", "LabelRecordingPath": "Zadana putanja za snimanje:", "LabelRecordingPathHelp": "Odredite zadano mjesto za spremanje snimaka. Ako se ostavi prazno, koristit će se mapa poslužitelja programskih podaka.", @@ -885,23 +865,15 @@ "TabAccess": "Pristup", "TabAdvanced": "Napredno", "TabAlbumArtists": "Albumi izvođača", - "TabAlbums": "Albumi", "TabCatalog": "Katalog", - "TabChannels": "Kanali", "TabCodecs": "Kodek", - "TabCollections": "Kolekcije", "TabContainers": "Spremnik", "TabDashboard": "Nadzorna ploča", - "TabDevices": "Uređaji", "TabDirectPlay": "Direktna reprodukcija", "TabEpisodes": "Epizode", - "TabFavorites": "Omiljeni", - "TabGenres": "Žanrovi", - "TabGuide": "Vodič", "TabLatest": "Zadnje", "TabLiveTV": "TV uživo", "TabLogs": "Dnevnici", - "TabMovies": "Filmovi", "TabMusic": "Glazba", "TabMusicVideos": "Muzički spotovi", "TabMyPlugins": "Moji dodaci", @@ -921,8 +893,6 @@ "TabScheduledTasks": "Zakazani zadaci", "TabSeries": "Serije", "TabSettings": "Postavke", - "TabShows": "Emisije", - "TabSongs": "Pjesme", "TabStreaming": "Strujanje", "TabTrailers": "Kratki filmovi", "TabUpcoming": "Uskoro", @@ -1058,7 +1028,6 @@ "Off": "Isključi", "Normal": "Normalno", "None": "Ništa", - "NoSubtitles": "Ništa", "No": "Ne", "NextUp": "Slijedi", "Next": "Slijedeće", @@ -1149,7 +1118,6 @@ "HeaderMyDevice": "Moj uređaj", "HeaderLibrarySettings": "Postavke biblioteke", "HeaderHome": "Početna", - "HeaderGenres": "Žanrovi", "HeaderFavoritePeople": "Omiljeni ljudi", "HeaderFavoriteMovies": "Omiljeni filmovi", "HeaderFavoriteBooks": "Omiljene knjige", @@ -1160,7 +1128,6 @@ "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", @@ -1181,7 +1148,6 @@ "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", diff --git a/src/strings/hu.json b/src/strings/hu.json index 70089ff734..9baf2220b6 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -10,7 +10,6 @@ "AllLanguages": "Összes nyelv", "AllLibraries": "Összes könyvtár", "Ascending": "Növekvő", - "AttributeNew": "Új", "Audio": "Audió", "BirthDateValue": "Született: {0}", "BirthPlaceValue": "Születési hely: {0}", @@ -19,16 +18,9 @@ "ButtonAddMediaLibrary": "Médiakönyvtár hozzáadása", "ButtonAddServer": "Szerver Hozzáadása", "ButtonAddUser": "Új felhasználó", - "ButtonArrowDown": "Le", - "ButtonArrowUp": "Fel", "ButtonAudioTracks": "Audió Sávok", "ButtonCancel": "Mégsem", "ButtonChangeServer": "Szerver váltás", - "ButtonConnect": "Kapcsolódás", - "ButtonDelete": "Törlés", - "ButtonDeleteImage": "Kép törlése", - "ButtonDown": "Le", - "ButtonDownload": "Letöltés", "ButtonEdit": "Szerkesztés", "ButtonEditImages": "Képek szerkesztése", "ButtonFilter": "Szűrő", @@ -38,7 +30,6 @@ "ButtonLibraryAccess": "Könyvtár hozzáférés", "ButtonManualLogin": "Manuális belépés", "ButtonMore": "Tovább", - "ButtonNew": "Új", "ButtonNextTrack": "Következő sáv", "ButtonOff": "Ki", "ButtonOpen": "Megnyitás", @@ -60,11 +51,9 @@ "ButtonSelectServer": "Szerver Kiválasztás", "ButtonSend": "Küldés", "ButtonSettings": "Beállítások", - "ButtonShuffle": "Keverés", "ButtonShutdown": "Leállítás", "ButtonSignIn": "Bejelentkezés", "ButtonSignOut": "Kijelentkezés", - "ButtonSort": "Rendezés", "ButtonStop": "Leállít", "ButtonSubmit": "Elküld", "ButtonSubtitles": "Feliratok", @@ -92,7 +81,6 @@ "EditImages": "Képek szerkesztése", "EditMetadata": "Metaadat szerkesztése", "EditSubtitles": "Feliratok szerkesztése", - "EnableBackdrops": "Háttérképek", "EnableBackdropsHelp": "A háttérképek a könyvtár böngészése közben néhány oldal hátterében jelennek meg.", "EnableHardwareEncoding": "Hardveres kódolás engedélyezése", "EnableThemeSongs": "Főcímdalok", @@ -122,12 +110,10 @@ "HeaderAddToPlaylist": "Hozzáadás lejátszási listához", "HeaderAddUpdateImage": "Kép hozzáadása / frissítése", "HeaderAddUser": "Új felhasználó", - "HeaderAlbums": "Albumok", "HeaderAudioBooks": "Hangos könyvek", "HeaderAudioSettings": "Audió Beállítások", "HeaderCastAndCrew": "Szereplők és Stáb", "HeaderCastCrew": "Szereplők és Stáb", - "HeaderChannels": "Csatornák", "HeaderConnectToServer": "Kapcsolódás a Szerverhez", "HeaderContinueWatching": "Megtekintés folytatása", "HeaderCustomDlnaProfiles": "Egyedi profilok", @@ -143,7 +129,6 @@ "HeaderExternalIds": "Külső id-k:", "HeaderForgotPassword": "Elfelejtett Jelszó", "HeaderFrequentlyPlayed": "Gyakran játszott", - "HeaderGenres": "Műfajok", "HeaderIdentifyItemHelp": "Adj meg egy vagy több keresési kritériumot. Távolítsd el a kritériumokat a keresési eredmények növelése érdekében.", "HeaderImageSettings": "Kép beállítások", "HeaderInstall": "Telepítés", @@ -161,7 +146,6 @@ "HeaderMediaInfo": "Média Infó", "HeaderMetadataSettings": "Metaadat Beállítások", "HeaderMoreLikeThis": "Több ehhez hasonló", - "HeaderMovies": "Filmek", "HeaderMusicVideos": "Zenei videók", "HeaderMyDevice": "Jelenlegi eszköz", "HeaderMyMedia": "Médiatáram", @@ -193,7 +177,6 @@ "HeaderSeries": "Sorozatok", "HeaderSettings": "Beállítások", "HeaderSetupLibrary": "Média könyvtárak beállítása", - "HeaderShutdown": "Leállítás", "HeaderSortBy": "Megjelenítés", "HeaderSortOrder": "Sorrend", "HeaderSpecialFeatures": "Speciális lehetőségek", @@ -207,7 +190,6 @@ "HeaderVideoType": "Videó típusa", "HeaderVideos": "Videók", "HeaderYears": "Év", - "HeadersFolders": "Könyvtárak", "Help": "Segítség", "HideWatchedContentFromLatestMedia": "A megtekintett tartalom elrejtése a legújabb médiából", "Home": "Kezdőlap", @@ -267,7 +249,6 @@ "LabelName": "Név:", "LabelNewPassword": "Új jelszó:", "LabelNewPasswordConfirm": "Új jelszó megerősítése:", - "LabelNext": "Következő", "LabelNotificationEnabled": "Értesítés engedélyezése", "LabelOptionalNetworkPath": "Megosztott hálózati mappa:", "LabelOriginalAspectRatio": "Eredeti képarány:", @@ -281,7 +262,6 @@ "LabelPlaylist": "Lejátszási lista:", "LabelPreferredDisplayLanguage": "Elsődleges megjelenítendő nyelv:", "LabelPreferredDisplayLanguageHelp": "A Jellyfin fordítása egy folyamatos projekt.", - "LabelPrevious": "Előző", "LabelProfileAudioCodecs": "Audió kódekek:", "LabelProfileCodecs": "Kódek:", "LabelProfileContainer": "Tároló:", @@ -484,22 +464,14 @@ "TabAccess": "Hozzáférés", "TabAdvanced": "Haladó", "TabAlbumArtists": "Album Előadók", - "TabAlbums": "Albumok", "TabCatalog": "Katalógus", - "TabChannels": "Csatornák", "TabCodecs": "Kódek", - "TabCollections": "Gyűjtemények", "TabContainers": "Tároló", "TabDashboard": "Vezérlőpult", - "TabDevices": "Eszközök", "TabEpisodes": "Epizódok", - "TabFavorites": "Kedvencek", - "TabGenres": "Műfajok", - "TabGuide": "Leírás", "TabInfo": "Infó", "TabLatest": "Legújabb", "TabLogs": "Naplók", - "TabMovies": "Filmek", "TabMusic": "Zene", "TabMusicVideos": "Zenei Videók", "TabMyPlugins": "Telepített bővítmények", @@ -518,8 +490,6 @@ "TabSeries": "Sorozatok", "TabServer": "Szerver", "TabSettings": "Beállítások", - "TabShows": "Műsorok", - "TabSongs": "Dalok", "TabTrailers": "Előzetesek", "TabUpcoming": "Hamarosan érkezik", "TabUsers": "Felhasználók", @@ -595,7 +565,6 @@ "ButtonRevoke": "Visszavon", "ButtonSelectView": "Válassz nézetet", "ButtonStart": "Start", - "ButtonUp": "Fel", "CancelRecording": "Felvétel törlése", "CancelSeries": "Sorozat törlése", "Categories": "Kategóriák", @@ -719,7 +688,6 @@ "HeaderIdentificationHeader": "Azonosító fejléc", "HeaderImageOptions": "Képbeállítások", "HeaderInstantMix": "Azonnali keverés", - "HeaderItems": "Elemek", "HeaderKeepRecording": "Felvétel készítése", "HeaderKodiMetadataHelp": "Az Nfo metaadatok engedélyezéséhez vagy letiltásához szerkeszd a könyvtárat és keresd meg a metaadat letöltő részt.", "HeaderLatestMusic": "Legújabb Zene", @@ -914,7 +882,6 @@ "LabelPublicHttpPortHelp": "A nyilvános port száma, amelyet a helyi HTTP portra kell átirányítani.", "LabelPublicHttpsPort": "Nyilvános HTTPS port száma:", "LabelPublicHttpsPortHelp": "A nyilvános port száma, amelyet a helyi HTTPS portra kell átirányítani.", - "LabelReadHowYouCanContribute": "Ismerd meg, hogyan járulhatsz hozzá.", "LabelReasonForTranscoding": "Az átkódolás oka:", "LabelRemoteClientBitrateLimit": "Internetes streaming bitráta limit (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Ez egy opcionális adatfolyam sebesség korlát a hálózaton kívüli eszközök számára. Ez akkor hasznos, amikor az eszközök magasabb bitrátát kérnek, mint amennyit az internetkapcsolat képes kezelni. Ez megnövelheti a szerver CPU terhelését, hogy átkódolja a videókat egy alacsonyabb bitrátára.", @@ -1041,7 +1008,6 @@ "NoNewDevicesFound": "Nem található új eszköz. Új tuner hozzáadásához zárd be ezt a párbeszédablakot és add meg kézzel az eszköz adatait.", "MessageNoNextUpItems": "Nem található. Kezdj el nézni műsorokat!", "MessageNoPluginConfiguration": "Ez a bővítmény nem rendelkezik konfigurációs beállításokkal.", - "NoSubtitles": "Nincs", "NoSubtitlesHelp": "A feliratok alapértelmezés szerint nem lesznek betöltve. Lejátszás közben kézzel is bekapcsolhatók.", "Off": "Ki", "OneChannel": "Egy csatorna", @@ -1464,7 +1430,6 @@ "HeaderServerAddressSettings": "Kiszolgáló Címének Beállításai", "HeaderRemoteAccessSettings": "Távoli Hozzáférés Beállításai", "HeaderHttpsSettings": "HTTPS Beállítások", - "TabDVR": "DVR", "HeaderDVR": "DVR", "SaveChanges": "Változtatások mentése", "MessageSyncPlayGroupWait": "{0} pufferel…", diff --git a/src/strings/id.json b/src/strings/id.json index bcb8c6a441..a11d411afa 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -10,8 +10,6 @@ "LabelCountry": "Negara:", "LabelFinish": "Selesai", "LabelLanguage": "Bahasa:", - "LabelNext": "Berikutnya", - "LabelPrevious": "Sebelumnya", "LabelSaveLocalMetadata": "Simpan artwork dan metadata ke dalam folder media", "LabelSaveLocalMetadataHelp": "Menyimpan artwork dan metadata langsung ke folder media akan meletakkan mereka di tempat yang mudah diedit.", "LabelTimeLimitHours": "Batas waktu (jam):", @@ -79,15 +77,12 @@ "Categories": "Kategori", "CancelRecording": "Batalkan perekaman", "ButtonWebsite": "Situs web", - "ButtonUp": "Atas", "ButtonTrailer": "Cuplikan", "ButtonSubmit": "Kirim", "ButtonStop": "Berhenti", "ButtonStart": "Mulai", - "ButtonSort": "Urutkan", "ButtonSignIn": "Masuk", "ButtonShutdown": "Matikan", - "ButtonShuffle": "Acak", "ButtonSettings": "Pengaturan", "ButtonSend": "Kirim", "ButtonSelectView": "Pilih tampilan", @@ -108,7 +103,6 @@ "ButtonOpen": "Buka", "ButtonOk": "Baik", "ButtonOff": "Matikan", - "ButtonNew": "Baru", "ButtonNetwork": "Jaringan", "ButtonMore": "Lebih banyak", "ButtonLibraryAccess": "Akses pustaka", @@ -122,19 +116,12 @@ "ButtonEditOtherUserPreferences": "Ubah profil, gambar, dan preferensi pribadi pengguna ini.", "ButtonEditImages": "Ubah gambar", "ButtonEdit": "Ubah", - "ButtonDownload": "Unduh", - "ButtonDown": "Bawah", - "ButtonDeleteImage": "Hapus Gambar", - "ButtonDelete": "Hapus", - "ButtonConnect": "Sambung", "ButtonChangeServer": "Ubah Peladen", "ButtonCancel": "Batalkan", "ButtonBack": "Kembali", "ButtonAudioTracks": "Trek Audio", - "ButtonArrowUp": "Atas", "ButtonArrowRight": "Kanan", "ButtonArrowLeft": "Kiri", - "ButtonArrowDown": "Turun", "ButtonAddUser": "Tambah Pengguna", "ButtonAddServer": "Tambah Peladen", "ButtonAddScheduledTaskTrigger": "Tambah Pemicu", @@ -155,7 +142,6 @@ "Auto": "Auto", "AuthProviderHelp": "Pilih Penyedia Autentikasi yang akan digunakan untuk mengautentikasi kata sandi pengguna ini.", "Audio": "Audio", - "AttributeNew": "Baru", "AspectRatio": "Rasio perbandingan", "Ascending": "Urutan naik", "AsManyAsPossible": "Sebanyak mungkin", diff --git a/src/strings/is-is.json b/src/strings/is-is.json index a820f82921..264b341b62 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -2,7 +2,6 @@ "All": "Allt", "Browse": "Vafra", "ButtonCancel": "Hætta við", - "ButtonNew": "Nýtt", "ButtonOk": "Í lagi", "ButtonSignOut": "Útskráning", "DeleteMedia": "Eyða margmiðlunarefni", @@ -20,8 +19,6 @@ "LabelCountry": "Land:", "LabelFinish": "Ljúka", "LabelLanguage": "Tungumál:", - "LabelNext": "Næsta", - "LabelPrevious": "Fyrra", "LabelTimeLimitHours": "Tímamörk (í klukkustundum):", "MoreUsersCanBeAddedLater": "Þú getur bætt við fleiri notendum síðar undir stjórnborðinu.", "NextUp": "Næst á dagskrá", @@ -36,10 +33,8 @@ "ButtonAddImage": "Bæta við ljósmynd", "ButtonAddServer": "Bæta við þjón", "ButtonAddUser": "Bæta við notenda", - "ButtonArrowDown": "Niður", "ButtonArrowLeft": "Vinstri", "ButtonArrowRight": "Hægri", - "ButtonArrowUp": "Upp", "OptionBlockBooks": "Bækur", "OptionContinuing": "Heldur áfram", "OptionBlockTvShows": "Sjónvarpsþættir", @@ -98,7 +93,6 @@ "AsManyAsPossible": "Eins margir og mögulegt er", "Ascending": "Í vaxandi röð", "AspectRatio": "Skjáhlutfall", - "AttributeNew": "Nýtt", "Audio": "Hjóð", "Auto": "Sjálfkrafa", "Banner": "Borði", @@ -172,7 +166,6 @@ "HeaderCastCrew": "Leikarar og Áhöfn", "HeaderCastAndCrew": "Leikarar og Áhöfn", "HeaderBooks": "Bækur", - "HeaderAlbums": "Plötur", "HeaderAdmin": "Stjórnandi", "GuideProviderLogin": "Innskrá", "General": "Almennt", @@ -208,13 +201,10 @@ "Categories": "Flokkar", "CancelRecording": "Hætta við upptöku", "ButtonWebsite": "Vefsiða", - "ButtonUp": "Upp", "ButtonUninstall": "Fjarlægja", "ButtonTrailer": "Sýnishorn", "ButtonSubtitles": "Texti", - "ButtonSort": "Flokka", "ButtonSignIn": "Innskráning", - "ButtonShuffle": "Stokka", "ButtonSettings": "Stillingar", "ButtonSend": "Senda", "ButtonSelectServer": "Velja netþjón", @@ -252,11 +242,6 @@ "ButtonEditOtherUserPreferences": "Breyta stillingum notanda, mynd og persónulegum stillingum.", "ButtonEditImages": "Breyta myndum", "ButtonEdit": "Breyta", - "ButtonDownload": "Sækja", - "ButtonDown": "Niður", - "ButtonDeleteImage": "Eyða Mynd", - "ButtonDelete": "Eyða", - "ButtonConnect": "Tengjast", "ButtonChangeServer": "Skipta um þjón", "ButtonBack": "Til baka", "ButtonAudioTracks": "Hljóðspor", @@ -300,14 +285,12 @@ "HeaderAddToPlaylist": "Bæta við á Spilunarlista", "HeaderAlert": "Viðvörun", "HeaderAppearsOn": "Birtist á", - "HeaderChannels": "Rásir", "HeaderDetectMyDevices": "Finna tækin mín", "HeaderFavoritePeople": "Uppáhalds Fólk", "HeaderFavoritePlaylists": "Uppáhalds spilunarlistar", "HeaderForgotPassword": "Gleymt lykilorð", "HeaderForKids": "Fyrir Krakka", "HeaderFrequentlyPlayed": "Oft Spilað", - "HeaderGenres": "Flokkar", "HeaderLatestMusic": "Tónlist, nýlega bætt við", "HeaderMetadataSettings": "Stillingar lýsigagna", "HeaderMedia": "Margmiðlunarsafn", @@ -316,7 +299,6 @@ "HeaderMyDevice": "Tækið mitt", "HeaderMusicVideos": "Tónlistarmyndbönd", "HeaderMusicQuality": "Tónlistargæði", - "HeaderMovies": "Kvikmyndir", "HeaderNewDevices": "Ný tæki", "HeaderPasswordReset": "Endurstilla Lykilorð", "HeaderPhotoAlbums": "Myndaalbúm", @@ -429,7 +411,6 @@ "TabUsers": "Notendur", "TabUpcoming": "Væntanlegt", "TabTrailers": "Sýnishorn", - "TabSongs": "Lög", "TabResumeSettings": "Halda áfram", "TabProfile": "Prófíll", "TabPlugins": "Viðbætur", @@ -438,7 +419,6 @@ "TabMyPlugins": "Mínar viðbætur", "TabMusicVideos": "Tónlistarmyndbönd", "TabMusic": "Tónlist", - "TabMovies": "Kvikmyndir", "PleaseRestartServerName": "Vinsamlegast endurræstu Jellyfin netþjóninn - {0}.", "Previous": "Fyrri", "Premiere": "Frumsýning", @@ -483,8 +463,6 @@ "HeaderVideoQuality": "Myndgæði", "HeaderUsers": "Notendur", "HeaderUser": "Notandi", - "TabGenres": "Flokkar", - "TabFavorites": "Eftirlæti", "TabEpisodes": "Þættir", "TabDirectPlay": "Bein Spilun", "TabAdvanced": "Ítarlegt", diff --git a/src/strings/it.json b/src/strings/it.json index 2dd958fb49..af6de16491 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -32,7 +32,6 @@ "AsManyAsPossible": "Tutto il possibile", "Ascending": "Crescente", "AspectRatio": "Rapporto d'Aspetto", - "AttributeNew": "Nuovo", "Backdrop": "Sfondo", "Backdrops": "Sfondi", "BirthDateValue": "Nato il: {0}", @@ -48,18 +47,12 @@ "ButtonAddScheduledTaskTrigger": "Aggiungi operazione", "ButtonAddServer": "Aggiungi server", "ButtonAddUser": "Aggiungi Utente", - "ButtonArrowDown": "Giù", "ButtonArrowLeft": "Sinistra", "ButtonArrowRight": "Destra", - "ButtonArrowUp": "Su", "ButtonAudioTracks": "Tracce Audio", "ButtonBack": "Indietro", "ButtonCancel": "Annulla", "ButtonChangeServer": "Cambia Server", - "ButtonConnect": "Connetti", - "ButtonDelete": "Elimina", - "ButtonDeleteImage": "Elimina immagine", - "ButtonDown": "Giu", "ButtonEdit": "Modifica", "ButtonEditImages": "Modifica Immagini", "ButtonEditOtherUserPreferences": "Modifica questo utente di profilo, l'immagine e le preferenze personali.", @@ -72,7 +65,6 @@ "ButtonManualLogin": "Accesso Manuale", "ButtonMore": "Altro", "ButtonNetwork": "Rete", - "ButtonNew": "Nuovo", "ButtonNextTrack": "Traccia Successiva", "ButtonOff": "No", "ButtonOpen": "Apri", @@ -97,16 +89,13 @@ "ButtonSelectView": "Seleziona vista", "ButtonSend": "Invia", "ButtonSettings": "Impostazioni", - "ButtonShuffle": "Casuale", "ButtonShutdown": "Arresta Server", "ButtonSignIn": "Accedi", "ButtonSignOut": "Esci", - "ButtonSort": "Ordina", "ButtonStart": "Avvio", "ButtonSubmit": "Invia", "ButtonSubtitles": "Sottotitoli", "ButtonUninstall": "Disinstalla", - "ButtonUp": "Su", "ButtonWebsite": "Web", "CancelRecording": "Annulla la registrazione", "CancelSeries": "Annulla Serie TV", @@ -177,7 +166,6 @@ "EditImages": "Modifica immagini", "EditMetadata": "Modifica metadati", "EditSubtitles": "Modifica i sottotitoli", - "EnableBackdrops": "Abilita gli Sfondi", "EnableBackdropsHelp": "Gli sfondi verranno mostrati sullo sfondo di alcune pagine mentre visualizzi la libreria.", "EnableCinemaMode": "Modalità cinema", "EnableColorCodedBackgrounds": "Sfondi a colori", @@ -255,7 +243,6 @@ "HeaderAdditionalParts": "Parti addizionali", "HeaderAdmin": "Admin", "HeaderAlbumArtists": "Artisti degli Album", - "HeaderAlbums": "Album", "HeaderAlert": "Avviso", "HeaderAllowMediaDeletionFrom": "Abilita Eliminazione Media Da", "HeaderApiKey": "Chiave API", @@ -269,7 +256,6 @@ "HeaderCancelRecording": "Annulla la Registrazione", "HeaderCancelSeries": "Annulla Serie TV", "HeaderChannelAccess": "Accesso canali", - "HeaderChannels": "Canali", "HeaderChapterImages": "Immagini Capitolo", "HeaderCodecProfile": "Profilo Codec", "HeaderCodecProfileHelp": "I Profili Codec indicano i limiti di un dispositivo durante la riproduzione di codec specifici. Se una limitazione corrisponde i media saranno sottoposti a transcodifica, anche se il codec è configurato per la riproduzione diretta.", @@ -310,7 +296,6 @@ "HeaderForKids": "Per Bambini", "HeaderForgotPassword": "Password dimenticata", "HeaderFrequentlyPlayed": "Visti di frequente", - "HeaderGenres": "Generi", "HeaderGuideProviders": "Provider Guida", "HeaderHttpHeaders": "Header HTTP", "HeaderIdentification": "Identificazione", @@ -319,7 +304,6 @@ "HeaderImageSettings": "Impostazioni Immagini", "HeaderInstall": "Installa", "HeaderInstantMix": "Mix Istantaneo", - "HeaderItems": "Elementi", "HeaderKeepRecording": "Mantieni la registrazione", "HeaderKeepSeries": "Mantieni Serie TV", "HeaderKodiMetadataHelp": "Jellyfin include il supporto nativo per i file metadati NFO. Per attivare o disattivare i metadati NFO, utilizzare la scheda Metadati per configurare le opzioni per i tipi di supporto.", @@ -341,7 +325,6 @@ "HeaderMediaInfo": "Informazioni Media", "HeaderMetadataSettings": "Impostazioni Metadati", "HeaderMoreLikeThis": "Simili a questo", - "HeaderMovies": "Film", "HeaderMusicQuality": "Qualità Musica", "HeaderMusicVideos": "Video Musicali", "HeaderMyDevice": "Il Mio Dispositivo", @@ -401,7 +384,6 @@ "HeaderServerSettings": "Impostazioni server", "HeaderSettings": "Impostazioni", "HeaderSetupLibrary": "Imposta le tue librerie multimediali", - "HeaderShutdown": "Spegni", "HeaderSortBy": "Ordina per", "HeaderSortOrder": "Ordinamento", "HeaderSpecialEpisodeInfo": "Informazioni Episodio Speciale", @@ -435,7 +417,6 @@ "HeaderXmlDocumentAttributes": "Attributi Documento Xml", "HeaderXmlSettings": "Impostazioni Xml", "HeaderYears": "Anni", - "HeadersFolders": "Cartella", "Help": "Aiuto", "Hide": "Nascondi", "HideWatchedContentFromLatestMedia": "Nascondi i contenuti già visti dagli Ultimi Media", @@ -645,7 +626,6 @@ "LabelNewPassword": "Nuova password:", "LabelNewPasswordConfirm": "Conferma nuova password:", "LabelNewsCategories": "Categorie notizie:", - "LabelNext": "Prossimo", "LabelNotificationEnabled": "Abilita questa notifica", "LabelNumber": "Numero:", "LabelNumberOfGuideDays": "Numero di giorni per i quali scaricare i dati della guida:", @@ -670,7 +650,6 @@ "LabelPreferredDisplayLanguage": "Lingua preferita visualizzata:", "LabelPreferredDisplayLanguageHelp": "La traduzione di Jellyfin è un progetto attivo.", "LabelPreferredSubtitleLanguage": "Lingua dei sottotitoli preferita:", - "LabelPrevious": "Precedente", "LabelProfileAudioCodecs": "Codec Audio:", "LabelProfileCodecs": "Codec:", "LabelProfileCodecsHelp": "Separati da virgola. Questo può essere lasciato vuoto da applicare a tutti i codec.", @@ -684,7 +663,6 @@ "LabelPublicHttpPortHelp": "Numero di porta pubblica che dovrebbe essere mappato sulla porta HTTP locale.", "LabelPublicHttpsPort": "Numero porta HTTPS pubblica:", "LabelPublicHttpsPortHelp": "Numero della porta pubblica che dovrebbe essere mappato sulla porta HTTPS locale.", - "LabelReadHowYouCanContribute": "Scopri come puoi contribuire.", "LabelReasonForTranscoding": "Motivo per la transcodifica:", "LabelRecord": "Registra:", "LabelRecordingPath": "Percorso di registrazione predefinito:", @@ -875,7 +853,6 @@ "MessageNoNextUpItems": "Trovato niente. Inizia a guardare i tuoi programmi!", "MessageNoPluginConfiguration": "Questo Plugin non ha impostazioni da configurare.", "NoSubtitleSearchResultsFound": "Nessun risultato.", - "NoSubtitles": "Nessuno", "NoSubtitlesHelp": "I sottotitoli non verranno caricati per impostazione predefinita.Possono essere ancora caricati manualmente durante la riproduzione.", "None": "Nessuno", "Normal": "Normale", @@ -1138,22 +1115,14 @@ "TabAccess": "Accesso", "TabAdvanced": "Avanzato", "TabAlbumArtists": "Artisti degli Album", - "TabAlbums": "Album", "TabCatalog": "Catalogo", - "TabChannels": "Canali", "TabCodecs": "Codec", - "TabCollections": "Collezioni", "TabContainers": "Contenitori", "TabDashboard": "Pannello Controllo", - "TabDevices": "Dispositivi", "TabDirectPlay": "Riproduzione Diretta", "TabEpisodes": "Episodi", - "TabFavorites": "Preferiti", - "TabGenres": "Generi", - "TabGuide": "Guida", "TabLatest": "Novità", "TabLiveTV": "Tv in Diretta", - "TabMovies": "Film", "TabMusic": "Musica", "TabMusicVideos": "Video Musicali", "TabMyPlugins": "I miei Plug-in", @@ -1171,8 +1140,6 @@ "TabScheduledTasks": "Operazioni Pianificate", "TabSeries": "Serie TV", "TabSettings": "Impostazioni", - "TabShows": "Spettacoli", - "TabSongs": "Brani", "TabTrailers": "Trailer", "TabUpcoming": "In Arrivo", "TabUsers": "Utenti", @@ -1248,7 +1215,6 @@ "Banner": "Banner", "Blacklist": "Blacklist", "Box": "Scatola", - "ButtonDownload": "Download", "ButtonHome": "Home", "ButtonInfo": "Info", "ButtonOk": "Ok", @@ -1464,7 +1430,6 @@ "HeaderServerAddressSettings": "Configurazione Indirizzo Server", "HeaderRemoteAccessSettings": "Configurazione Access Remoto", "HeaderHttpsSettings": "Configurazione HTTPS", - "TabDVR": "DVR", "SaveChanges": "Salva modifiche", "HeaderDVR": "DVR", "SyncPlayAccessHelp": "Selezionare il livello d'accesso di questo utente a SyncPlay che permetterà di riprodurre contemporaneamente su diversi dispositivi.", diff --git a/src/strings/ja.json b/src/strings/ja.json index f57a1ea672..31f377875d 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -57,19 +57,12 @@ "ButtonAddScheduledTaskTrigger": "トリガーを追加", "ButtonAddServer": "サーバーを追加", "ButtonAddUser": "ユーザーを追加", - "ButtonArrowDown": "下", "ButtonArrowLeft": "左", "ButtonArrowRight": "右", - "ButtonArrowUp": "上", "ButtonAudioTracks": "オーディオトラック", "ButtonBack": "戻る", "ButtonCancel": "キャンセル", "ButtonChangeServer": "サーバーを変更", - "ButtonConnect": "接続", - "ButtonDelete": "削除", - "ButtonDeleteImage": "イメージを削除", - "ButtonDown": "下", - "ButtonDownload": "ダウンロード", "ButtonEdit": "編集", "ButtonEditImages": "イメージを編集", "ButtonEditOtherUserPreferences": "ユーザーのアバターイメージやプロフィールなどの個人設定を編集。", @@ -108,18 +101,15 @@ "ButtonSelectView": "ビューを選択", "ButtonSend": "送る", "ButtonSettings": "設定", - "ButtonShuffle": "シャッフル", "ButtonShutdown": "シャットダウン", "ButtonSignIn": "サインイン", "ButtonSignOut": "サインアウト", - "ButtonSort": "ソート", "ButtonStart": "スタート", "ButtonStop": "ストップ", "ButtonSubmit": "提出", "ButtonSubtitles": "字幕", "ButtonTrailer": "予告", "ButtonUninstall": "アンインストール", - "ButtonUp": "上", "ButtonWebsite": "ウェブサイト", "CancelRecording": "レコーディングをキャンセル", "CancelSeries": "中止したシリーズ", @@ -190,7 +180,6 @@ "EditImages": "イメージを編集", "EditMetadata": "メタデータを編集", "EditSubtitles": "字幕を編集", - "EnableBackdrops": "背景", "EnableBackdropsHelp": "ライブラリを閲覧している間、背景がいくつかのページの背景に表示されます。", "EnableCinemaMode": "シネマモード", "EnableColorCodedBackgrounds": "カラーコードによる背景", @@ -215,8 +204,6 @@ "HeaderMoreLikeThis": "これに似たもの", "InstantMix": "インスタントミックス", "MoreFromValue": "もっと詳しく {0}", - "AttributeNew": "新規", - "ButtonNew": "新規", "ButtonOff": "オフ", "ColorTransfer": "Color transfer", "DeathDateValue": "死亡日:{0}", @@ -281,7 +268,6 @@ "HeaderAdditionalParts": "追加のパーツ", "HeaderAdmin": "管理者", "HeaderAlbumArtists": "アルバムアーティスト", - "HeaderAlbums": "アルバム", "HeaderAlert": "アラート", "HeaderAllowMediaDeletionFrom": "メディアの削除を許可", "HeaderApiKey": "API キー", @@ -299,7 +285,6 @@ "HeaderCastAndCrew": "キャスト&クルー", "HeaderCastCrew": "キャスト&クルー", "HeaderChannelAccess": "チャンネルアクセス", - "HeaderChannels": "チャンネル", "HeaderChapterImages": "チャプターイメージ", "HeaderCodecProfile": "コーデックプロファイル", "HeaderCodecProfileHelp": "コーデックプロファイルは、特定のコーデックを再生するときのデバイスの制限を示します。 制限が適用される場合、コーデックが直接再生用に設定されていても、メディアはトランスコードされます。", @@ -348,7 +333,6 @@ "HeaderForKids": "子供向け", "HeaderForgotPassword": "パスワードを忘れました", "HeaderFrequentlyPlayed": "よく再生する", - "HeaderGenres": "ジャンル", "HeaderGuideProviders": "TV番組情報のプロバイダ", "HeaderHome": "ホーム", "HeaderHttpHeaders": "HTTPヘッダー", @@ -359,7 +343,6 @@ "HeaderImageOptions": "イメージオプション", "HeaderImageSettings": "イメージ設定", "HeaderInstall": "インストール", - "HeaderItems": "アイテム", "HeaderKeepRecording": "録画を続ける", "HeaderKeepSeries": "シリーズを続ける", "HeaderKodiMetadataHelp": "NFOメタデータを有効または無効にするには、ライブラリを編集し「メタデータサーバー」の項目にて変更できます。", @@ -381,7 +364,6 @@ "HeaderMediaFolders": "メディアフォルダ", "HeaderMediaInfo": "メディア情報", "HeaderMetadataSettings": "メタデータ設定", - "HeaderMovies": "ムービー", "HeaderMusicQuality": "ミュージックの品質", "HeaderMusicVideos": "ミュージックビデオ", "HeaderMyDevice": "マイデバイス", @@ -442,7 +424,6 @@ "HeaderServerSettings": "サーバー設定", "HeaderSettings": "設定", "HeaderSetupLibrary": "メディアライブラリを設定する", - "HeaderShutdown": "シャットダウン", "HeaderSortBy": "ソート", "HeaderSortOrder": "ソート順", "HeaderSpecialEpisodeInfo": "スペシャルエピソード情報", @@ -475,7 +456,6 @@ "HeaderVideos": "ビデオ", "HeaderXmlSettings": "XML設定", "HeaderYears": "年", - "HeadersFolders": "フォルダ", "Help": "ヘルプ", "Hide": "隠す", "Movies": "ムービー", @@ -488,8 +468,6 @@ "ButtonAddImage": "イメージの追加", "List": "リスト", "MediaInfoTimestamp": "タイムスタンプ", - "NoSubtitles": "無し", - "TabCollections": "コレクション", "Thursday": "木曜日", "TitleHardwareAcceleration": "ハードウェアアクセラレーション", "Tuesday": "火曜日", @@ -535,11 +513,9 @@ "LabelModelUrl": "モデルURL", "LabelNewPassword": "新しいパスワード:", "LabelNewPasswordConfirm": "新しいパスワードを確認:", - "LabelNext": "次へ", "LabelNotificationEnabled": "この通知を有効化", "LabelOptionalNetworkPath": "(任意) 共有ネットワークフォルダー:", "LabelOriginalAspectRatio": "元のアスペクト比:", - "LabelPrevious": "前へ", "LabelServerName": "サーバー名:", "LabelSubtitles": "字幕", "LabelSupportedMediaTypes": "サポートされているメディアタイプ:", @@ -595,8 +571,6 @@ "CopyStreamURLSuccess": "URLのコピーが成功しました。", "TabDirectPlay": "直接再生", "TabEpisodes": "エピソード", - "TabFavorites": "お気に入り", - "TabGenres": "ジャンル", "LabelDefaultUser": "デフォルトユーザー:", "TabSeries": "シリーズ", "Trailers": "トレーラー", @@ -616,7 +590,6 @@ "FetchingData": "追加のデータを取得中", "HeaderFavoriteBooks": "お気に入りのブック", "OneChannel": "1チャンネル", - "TabDevices": "デバイス", "ValueContainer": "コンテナ: {0}", "ImportFavoriteChannelsHelp": "チューナーでのお気に入りのチャンネルのみインポートされます。", "MusicAlbum": "ミュージックアルバム", @@ -743,9 +716,7 @@ "TabAccess": "アクセス", "TabAdvanced": "高度", "TabAlbumArtists": "アルバムアーティスト", - "TabAlbums": "アルバム", "TabCatalog": "カタログ", - "TabChannels": "チャンネル", "TabCodecs": "コーデック", "TabContainers": "コンテナ", "Rewind": "巻き戻す", @@ -754,12 +725,10 @@ "SaveSubtitlesIntoMediaFolders": "字幕をメディアフォルダーに保存", "ScanForNewAndUpdatedFiles": "新しいファイルとアップデートされたファイルをスキャン", "TabDashboard": "ダッシュボード", - "TabGuide": "ガイド", "TabInfo": "情報", "TabLatest": "最新", "TabLiveTV": "ライブTV", "TabLogs": "ログ", - "TabMovies": "ムービー", "TabMusic": "ミュージック", "TabMusicVideos": "ミュージックビデオ", "TheseSettingsAffectSubtitlesOnThisDevice": "これらの設定はこのデバイスの字幕に影響します", @@ -896,7 +865,6 @@ "LabelPublicHttpPort": "公開HTTPポート番号:", "LabelPublicHttpPortHelp": "公開ポート番号はローカルHTTPポートにマッピングしてください。", "LabelPublicHttpsPort": "公開HTTPSポート番号:", - "LabelReadHowYouCanContribute": "コントリビュートする方法を知る。", "LabelReleaseDate": "公開日:", "LabelRemoteClientBitrateLimit": "インターネットストリーミングビットレートリミット (Mbps):", "LabelRuntimeMinutes": "実行時間 (分):", @@ -1049,8 +1017,6 @@ "TabResponses": "レスポンス", "TabServer": "サーバー", "TabSettings": "設定", - "TabShows": "表示", - "TabSongs": "曲", "TabStreaming": "ストリーミング", "TabTrailers": "トレーラー", "MessageContactAdminToResetPassword": "パスワードをリセットするためにシステムの管理者に連絡してください。", diff --git a/src/strings/kk.json b/src/strings/kk.json index 2f0d0c5927..ef542a0705 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -36,7 +36,6 @@ "AsManyAsPossible": "Múmkindiginshe kóp", "Ascending": "Artýy boıynsha", "AspectRatio": "Pishimdik araqatynasy", - "AttributeNew": "Jańa", "Audio": "Dybys", "Auto": "Avtomatty", "Backdrop": "Artqy sýret", @@ -57,19 +56,12 @@ "ButtonAddScheduledTaskTrigger": "Trıger ústeý", "ButtonAddServer": "Server ústeý", "ButtonAddUser": "Paıdalanýshy ústeý", - "ButtonArrowDown": "Tómenge", "ButtonArrowLeft": "Sol jaqqa", "ButtonArrowRight": "Oń jaqqa", - "ButtonArrowUp": "Joǵaryǵa", "ButtonAudioTracks": "Dybys jolshyqtaryna", "ButtonBack": "Artqa", "ButtonCancel": "Boldyrmaý", "ButtonChangeServer": "Serverdi aýystyrý", - "ButtonConnect": "Qosylý", - "ButtonDelete": "Joıý", - "ButtonDeleteImage": "Sýretti joıý", - "ButtonDown": "Tómenge", - "ButtonDownload": "Júktep alý", "ButtonEdit": "Óńdeý", "ButtonEditImages": "Sýretterdi óńdeý", "ButtonEditOtherUserPreferences": "Osy paıdalanýshynyń profaılyn, sýretin jáne ózindik teńshelimderin óńdeý.", @@ -84,7 +76,6 @@ "ButtonManualLogin": "Qolmen kirý", "ButtonMore": "Kóbirek", "ButtonNetwork": "Jeli", - "ButtonNew": "Jasaý", "ButtonNextTrack": "Kelesi jolshyqqa", "ButtonOff": "Óshir", "ButtonOk": "Jaraıdy", @@ -110,18 +101,15 @@ "ButtonSelectView": "Kórinisti tańdaý", "ButtonSend": "Jiberý", "ButtonSettings": "Parametrlerge", - "ButtonShuffle": "Aralastyrý", "ButtonShutdown": "Jumysty aıaqtaý", "ButtonSignIn": "Kirý", "ButtonSignOut": "Shyǵý", - "ButtonSort": "Suryptaý", "ButtonStart": "Bastaý", "ButtonStop": "Toqtatý", "ButtonSubmit": "Jiberý", "ButtonSubtitles": "Sýbtıtrlerge", "ButtonTrailer": "Treıler", "ButtonUninstall": "Ornatymdy joıý", - "ButtonUp": "Joǵaryǵa", "ButtonWebsite": "Ýeb-saıty", "CancelRecording": "Jazýdy boldyrmaý", "CancelSeries": "Telehıkaıany boldyrmaý", @@ -194,7 +182,6 @@ "EditImages": "Sýretterdi óńdeý", "EditMetadata": "Metaderekterdi óńdeý", "EditSubtitles": "Sýbtıtrlerdi óńdeý", - "EnableBackdrops": "Artqy sýretter", "EnableBackdropsHelp": "Artqy sýretter tasyǵyshhanany sholý kezinde keıbir betterde óńde beınelenedi.", "EnableCinemaMode": "Kınoteatr rejimi", "EnableColorCodedBackgrounds": "Túspen belgilengen óńder", @@ -275,7 +262,6 @@ "HeaderAdditionalParts": "Jalǵasatyn bólimder", "HeaderAdmin": "Basqarý", "HeaderAlbumArtists": "Álbom oryndaýshylary", - "HeaderAlbums": "Álbomdar", "HeaderAlert": "Eskertý", "HeaderAllowMediaDeletionFrom": "Osydan tasyǵyshderekterdi joıýǵa ruqsat etý", "HeaderApiKey": "API-kilt", @@ -293,7 +279,6 @@ "HeaderCastAndCrew": "Róldegiler men qyzmetkerler", "HeaderCastCrew": "Róldegiler men qyzmetkerler", "HeaderChannelAccess": "Arnaǵa qatynaý", - "HeaderChannels": "Arnalar", "HeaderChapterImages": "Sahna sýretteri", "HeaderCodecProfile": "Kodek profaıly", "HeaderCodecProfileHelp": "Kodek profaıldary naqty kodekter arqyly oınatqanda qurylǵynyń shekteýlerin kórsetedi. Eger shekteý qoldanylsa, sonda kodek tikeleı oınatý úshin teńshelse de tasyǵyshderekter qaıta kodtalynady.", @@ -335,7 +320,6 @@ "HeaderForKids": "Balalyq", "HeaderForgotPassword": "Paróldi umytyńyz ba", "HeaderFrequentlyPlayed": "Jıi oınatylǵandar", - "HeaderGenres": "Janrlar", "HeaderGuideProviders": "Telegıd derekterin jetkizýshileri", "HeaderHttpHeaders": "HTTP ústińgi derektemeleri", "HeaderIdentification": "Anyqtaý", @@ -346,7 +330,6 @@ "HeaderImageSettings": "Sýret parametrleri", "HeaderInstall": "Ornatý", "HeaderInstantMix": "Lezdik qospa", - "HeaderItems": "Tarmaqtar", "HeaderKeepRecording": "Jazýdy saqtap qalý", "HeaderKeepSeries": "Telehıkaıany saqtap qalý", "HeaderKodiMetadataHelp": "NFO metaderekterin qosý nemese óshirý úshin, Jellyfin tasyǵyshhanalar ornatý bóliminde tasyǵyshhana ny óńdeńiz jáne metaderekter saqtaýysh bólimin tabyńyz.", @@ -369,7 +352,6 @@ "HeaderMediaInfo": "Tasyǵyshderekter týraly", "HeaderMetadataSettings": "Metaderekter parametrleri", "HeaderMoreLikeThis": "Osy sıaqty kóbirek", - "HeaderMovies": "Fılmder", "HeaderMusicQuality": "Mýzyka sapasy", "HeaderMusicVideos": "Mýzykalyq beıneler", "HeaderMyDevice": "Meniń qurylǵym", @@ -430,7 +412,6 @@ "HeaderServerSettings": "Server parametrleri", "HeaderSettings": "Parametrler", "HeaderSetupLibrary": "Tasyǵyshhanalardy ornatý jáne teńsheý", - "HeaderShutdown": "Jumysty aıaqtaý", "HeaderSortBy": "Suryptaý tásili", "HeaderSortOrder": "Suryptaý reti", "HeaderSpecialEpisodeInfo": "Arnaıy bólim týraly", @@ -465,7 +446,6 @@ "HeaderXmlDocumentAttributes": "XML-qujat tólsıpattary", "HeaderXmlSettings": "XML parametrleri", "HeaderYears": "Jyldar", - "HeadersFolders": "Qaltalar", "Help": "Internettegi anyqtamaǵa", "Hide": "Jasyrý", "HideWatchedContentFromLatestMedia": "Eń keıingi tasyǵyshderekterden qaralǵan mazmundy jasyrý", @@ -682,7 +662,6 @@ "LabelNewPassword": "Jańa paról:", "LabelNewPasswordConfirm": "Jańa paróldi rastaý:", "LabelNewsCategories": "Jańalyq sanattary:", - "LabelNext": "Kelesi", "LabelNotificationEnabled": "Bul habarlandyrmany qosý", "LabelNumber": "Nómiri:", "LabelNumberOfGuideDays": "Júktep alý úshin Telegıd derekterindegi kún sany:", @@ -709,7 +688,6 @@ "LabelPreferredDisplayLanguage": "Beıneleý tiliniń teńshelimi:", "LabelPreferredDisplayLanguageHelp": "Jellyfin tárjimeleýi aǵymdaǵy joba bolyp tabylady.", "LabelPreferredSubtitleLanguage": "Sýbtıtr tiliniń teńshelimi:", - "LabelPrevious": "Aldyńǵy", "LabelProfileAudioCodecs": "Dybystyq kodekter:", "LabelProfileCodecs": "Kodekter:", "LabelProfileCodecsHelp": "Útir arqyly bólip alynǵan. Barlyq kodekterge qoldaný úshin bul bos qaldyrylý múmkin.", @@ -723,7 +701,6 @@ "LabelPublicHttpPortHelp": "Jergilikti HTTP-portyna salystyrylýy tıis jarıa port nómiri.", "LabelPublicHttpsPort": "Jarıa HTTPS-port nómiri:", "LabelPublicHttpsPortHelp": "Jergilikti HTTPS-portyna salystyrylýy tıis jarıa port nómiri.", - "LabelReadHowYouCanContribute": "Qalaı úles qosý týraly bilý.", "LabelReasonForTranscoding": "Qaıta kodtaý sebebi:", "LabelRecord": "Jazý:", "LabelRecordingPath": "Jazbalardyń ádepki joly:", @@ -932,7 +909,6 @@ "MessageNoNextUpItems": "Eshteńe tabylmady. Kórsetimderińizdi qaraı bastańyz!", "MessageNoPluginConfiguration": "Osy plagınde teńsheletin parametrler joq.", "NoSubtitleSearchResultsFound": "Eshqandaı nátıjeler tabylmady.", - "NoSubtitles": "Eshqandaı", "NoSubtitlesHelp": "Ádepkide sýbtıtrler júktelmeıdi. Olardy oınatý kezinde áli de qolmen qosýǵa bolady.", "None": "Eshqandaı", "Normal": "Kádimgi", @@ -1215,24 +1191,16 @@ "TabAccess": "Qatynaý", "TabAdvanced": "Keńeıtilgen", "TabAlbumArtists": "Álbom oryndaýshylary", - "TabAlbums": "Álbomdar", "TabCatalog": "Tizimdeme", - "TabChannels": "Arnalar", "TabCodecs": "Kodekter", - "TabCollections": "Jıyntyqtar", "TabContainers": "Konteınerler", "TabDashboard": "Taqta", - "TabDevices": "Qurylǵylar", "TabDirectPlay": "Tikeleı oınatý", "TabEpisodes": "TD-bólimder", - "TabFavorites": "Tańdaýlylar", - "TabGenres": "Janrlar", - "TabGuide": "Telegıd", "TabInfo": "Profaıl týraly", "TabLatest": "Eń keıingi", "TabLiveTV": "Efırlik TD", "TabLogs": "Jurnaldar", - "TabMovies": "Fılmder", "TabMusic": "Mýzyka", "TabMusicVideos": "Mýzykalyq beıneler", "TabMyPlugins": "Meniń plagınderim", @@ -1253,8 +1221,6 @@ "TabSeries": "Telehıkaıalar", "TabServer": "Server", "TabSettings": "Parametrler", - "TabShows": "Kórsetimder", - "TabSongs": "Áýender", "TabStreaming": "Tasymaldaný", "TabTrailers": "Treılerler", "TabUpcoming": "Kútilgen", diff --git a/src/strings/ko.json b/src/strings/ko.json index 6a6dadc120..dcdb1f5a8f 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -8,7 +8,6 @@ "AllChannels": "모든 채널", "AllEpisodes": "모든 에피소드", "AllLanguages": "모든 언어", - "AttributeNew": "새로운", "Audio": "오디오", "Backdrops": "배경", "BirthDateValue": "출생: {0}", @@ -17,17 +16,11 @@ "ButtonAddScheduledTaskTrigger": "트리거 추가", "ButtonAddServer": "서버 추가", "ButtonAddUser": "사용자 추가", - "ButtonArrowDown": "아래", "ButtonArrowLeft": "왼쪽", "ButtonArrowRight": "오른쪽", - "ButtonArrowUp": "위", "ButtonBack": "뒤로", "ButtonCancel": "취소", "ButtonChangeServer": "서버 변경", - "ButtonConnect": "접속", - "ButtonDelete": "삭제", - "ButtonDeleteImage": "이미지 삭제", - "ButtonDownload": "다운로드", "ButtonEdit": "편집", "ButtonEditOtherUserPreferences": "이 사용자의 프로필, 이미지, 개인 설정을 수정합니다.", "ButtonFilter": "필터", @@ -39,7 +32,6 @@ "ButtonManualLogin": "수동 로그인", "ButtonMore": "더 보기", "ButtonNetwork": "네트워크", - "ButtonNew": "새로운", "ButtonNextTrack": "다음 트랙", "ButtonOk": "OK", "ButtonOpen": "열기", @@ -64,7 +56,6 @@ "ButtonShutdown": "종료", "ButtonSignIn": "로그인", "ButtonSignOut": "로그아웃", - "ButtonSort": "정렬", "ButtonStart": "시작", "ButtonStop": "중지", "ButtonSubmit": "제출", @@ -122,7 +113,6 @@ "HeaderAddUser": "사용자 추가", "HeaderAdditionalParts": "추가 장면", "HeaderAdmin": "관리자", - "HeaderAlbums": "앨범", "HeaderAlert": "알림", "HeaderApiKey": "API 키", "HeaderApiKeys": "API 키", @@ -132,7 +122,6 @@ "HeaderBranding": "브랜딩", "HeaderCastCrew": "배역 및 제작진", "HeaderChannelAccess": "채널 접속", - "HeaderChannels": "채널", "HeaderCodecProfile": "코덱 프로필", "HeaderConfirmProfileDeletion": "프로필 삭제 확인", "HeaderConnectToServer": "서버 접속", @@ -153,13 +142,11 @@ "HeaderFetchImages": "이미지 가져오기:", "HeaderForgotPassword": "비밀번호 분실", "HeaderFrequentlyPlayed": "자주 재생함", - "HeaderGenres": "장르", "HeaderGuideProviders": "가이드 제공자", "HeaderIdentification": "식별자", "HeaderImageSettings": "이미지 설정", "HeaderInstall": "설치", "HeaderInstantMix": "인스턴스 믹스", - "HeaderItems": "항목", "HeaderLatestEpisodes": "최근 에피소드", "HeaderLatestMedia": "최근 미디어", "HeaderLatestMusic": "최근 음악", @@ -175,7 +162,6 @@ "HeaderMediaFolders": "미디어 폴더", "HeaderMediaInfo": "미디어 정보", "HeaderMetadataSettings": "메타데이터 설정", - "HeaderMovies": "영화", "HeaderMusicVideos": "뮤직비디오", "HeaderMyMedia": "내 미디어", "HeaderMyMediaSmall": "내 미디어 (작음)", @@ -218,7 +204,6 @@ "HeaderServerSettings": "서버 설정", "HeaderSettings": "설정", "HeaderSetupLibrary": "미디어 라이브러리 설정", - "HeaderShutdown": "종료", "HeaderSpecialEpisodeInfo": "스페셜 에피소드 정보", "HeaderSpecialFeatures": "특별 배역", "HeaderStatus": "상태", @@ -239,7 +224,6 @@ "HeaderXmlDocumentAttributes": "XML 문서 속성", "HeaderXmlSettings": "XML 설정", "HeaderYears": "연도", - "HeadersFolders": "폴더", "Help": "도움말", "Images": "이미지", "ImportFavoriteChannelsHelp": "활성화 시, 튜너 장치에서 즐겨찾기로 표시된 채널만 불러옵니다.", @@ -381,7 +365,6 @@ "LabelNewName": "새 이름:", "LabelNewPassword": "새 비밀번호:", "LabelNewPasswordConfirm": "새 비밀번호 확인:", - "LabelNext": "다음", "LabelNotificationEnabled": "이 알림 활성화", "LabelNumber": "번호:", "LabelNumberOfGuideDays": "다운로드할 가이드 데이터 일 수:", @@ -398,7 +381,6 @@ "LabelPlaylist": "재생목록:", "LabelPreferredDisplayLanguage": "선호하는 화면 언어:", "LabelPreferredDisplayLanguageHelp": "Jellyfin 번역은 진행중인 프로젝트입니다.", - "LabelPrevious": "이전", "LabelProfileAudioCodecs": "오디오 코덱:", "LabelProfileCodecs": "코덱:", "LabelProfileCodecsHelp": "쉼표로 구분합니다. 모든 코덱에 적용할 수 있도록 빈 칸을 남겨둘 수 있습니다.", @@ -411,7 +393,6 @@ "LabelPublicHttpPortHelp": "로컬 HTTP 포트는 공용 포트 번호에 매핑되어야합니다.", "LabelPublicHttpsPort": "공용 HTTPS 포트 번호:", "LabelPublicHttpsPortHelp": "로컬 HTTPS 포트는 공용 포트 번호에 매핑 되어야합니다.", - "LabelReadHowYouCanContribute": "여러분이 기여할 수 있는 방법을 알려드립니다.", "LabelRecordingPath": "기본 재코딩 위치 :", "LabelRecordingPathHelp": "녹화를 저장할 기본 위치를 지정합니다. 비어 있는 경우 서버의 프로그램 데이터 폴더가 사용됩니다.", "LabelReleaseDate": "개봉일:", @@ -676,24 +657,16 @@ "TabAccess": "접속", "TabAdvanced": "고급", "TabAlbumArtists": "앨범 아티스트", - "TabAlbums": "앨범", "TabCatalog": "카탈로그", - "TabChannels": "채널", "TabCodecs": "코덱", - "TabCollections": "컬렉션", "TabContainers": "컨테이너", "TabDashboard": "대시보드", - "TabDevices": "장치", "TabDirectPlay": "다이렉트 재생", "TabEpisodes": "에피소드", - "TabFavorites": "즐겨찾기", - "TabGenres": "장르", - "TabGuide": "가이드", "TabInfo": "정보", "TabLatest": "최근", "TabLiveTV": "실시간 TV", "TabLogs": "로그", - "TabMovies": "영화", "TabMusic": "음악", "TabMusicVideos": "뮤직비디오", "TabMyPlugins": "내 플러그인", @@ -712,8 +685,6 @@ "TabSeries": "시리즈", "TabServer": "서버", "TabSettings": "설정", - "TabShows": "쇼", - "TabSongs": "노래", "TabStreaming": "스트리밍", "TabTrailers": "예고편", "TabUpcoming": "방송 예정", @@ -818,12 +789,9 @@ "ChannelNumber": "채널 번호", "Categories": "카테고리", "CancelRecording": "녹화 취소", - "ButtonUp": "위", "ButtonTrailer": "트레일러", - "ButtonShuffle": "셔플", "ButtonScanAllLibraries": "모든 라이브러리 스캔", "ButtonOff": "끄기", - "ButtonDown": "아래", "ButtonAudioTracks": "오디오 트랙", "ButtonAddMediaLibrary": "미디어 라이브러리 추가", "ButtonAddImage": "이미지 추가", @@ -952,7 +920,6 @@ "NumLocationsValue": "{0} 폴더", "Normal": "보통", "None": "None", - "NoSubtitles": "자막 없음", "No": "아니오", "Next": "다음", "NextUp": "다음", @@ -1209,7 +1176,6 @@ "ConfirmDeleteItems": "이 항목들을 삭제하면 파일 시스템과 라이브러리 모두에서 삭제됩니다. 계속하겠습니까?", "DeleteDeviceConfirmation": "정말로 이 장치를 제거하시겠습니까? 사용자가 로그인하면 다시 나타날것입니다.", "DisplayMissingEpisodesWithinSeasons": "시즌 내 누락된 에피소드 표시", - "EnableBackdrops": "배경", "EnableBackdropsHelp": "라이브러리를 탐색하는 동안 일부 페이지의 배경을 표시합니다.", "ErrorAddingXmlTvFile": "XMLTV 파일에 액세스하는 동안 오류가 발생했습니다. 파일이 존재하는지 확인 후 다시 시도하십시오.", "ErrorDeletingItem": "Jellyfin 서버에서 항목을 제거하는 중에 오류가 발생했습니다. Jellyfin 서버가 미디어 폴더에 대해 쓰기 권한이 있는지 확인한 후 다시 시도하십시오.", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index e02a183c97..39277004a2 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -9,25 +9,19 @@ "Anytime": "Bet kada", "AroundTime": "Maždaug {0}", "AsManyAsPossible": "Kiek įmanoma", - "AttributeNew": "Naujas", "Backdrops": "Fonai", "BirthLocation": "Gimimo vieta", "ButtonAddScheduledTaskTrigger": "Pridėti jungiklį", "ButtonAddUser": "Pridėt vartotoją", - "ButtonArrowDown": "Žemyn", "ButtonArrowLeft": "Kairėn", "ButtonArrowRight": "Dešinėn", - "ButtonArrowUp": "Aukštyn", "ButtonBack": "Atgal", "ButtonCancel": "Atšaukti", - "ButtonDelete": "Ištrinti", - "ButtonDeleteImage": "Trinti paveikslus", "ButtonEdit": "Redaguoti", "ButtonFilter": "Filtras", "ButtonGotIt": "Supratau", "ButtonHome": "Pradinis", "ButtonManualLogin": "Rankinis prisijungimas", - "ButtonNew": "Naujas", "ButtonNextTrack": "Kitas takelis", "ButtonOk": "OK", "ButtonPause": "Pauzė", @@ -43,7 +37,6 @@ "ButtonSettings": "Nustatymai", "ButtonSignIn": "Prisijungti", "ButtonSignOut": "Atsijungti", - "ButtonSort": "Rūšiuoti", "ButtonStop": "Stabdyti", "ButtonSubmit": "Pateikti", "ButtonSubtitles": "Subtitrai", @@ -98,7 +91,6 @@ "HeaderCancelRecording": "Atšaukti įrašymą", "HeaderCancelSeries": "Atšaukti laidą", "HeaderCastCrew": "Kūrėjai", - "HeaderChannels": "Kanalai", "HeaderContinueWatching": "Žiūrėti toliau", "HeaderCustomDlnaProfiles": "Kiti profiliai", "HeaderDeleteItem": "Ištrinti elementą", @@ -230,7 +222,6 @@ "LabelName": "Pavadinimas:", "LabelNewPassword": "Naujas slaptažodis:", "LabelNewPasswordConfirm": "Naujas slaptažodis (pakartokite):", - "LabelNext": "Kitas", "LabelNumber": "Numeris:", "LabelNumberOfGuideDays": "Kiek dienų gido duomenų atsisiųsti:", "LabelNumberOfGuideDaysHelp": "Atsiuntus daugiau gido duomenų dienų bus galima toliau numatyti tvarkaraštį, tačiau tai užtruks ilgiau. Auto parinks dienų skaičių pagal kanalų kiekį.", @@ -246,14 +237,12 @@ "LabelPlaylist": "Grojaraštis:", "LabelPreferredDisplayLanguage": "Pageidautina rodymo kalba:", "LabelPreferredDisplayLanguageHelp": "Jellyfin vertimas yra besitęsiantis projektas.", - "LabelPrevious": "Ankstesnis", "LabelProfileCodecsHelp": "Atskirta kableliais. Palikus tuščią bus pritaikyta visiems kodekams.", "LabelProfileContainersHelp": "Atskirta kableliais. Palikus tuščią bus pritaikyta visiems konteineriams.", "LabelPublicHttpPort": "Numeris viešo HTTP porto:", "LabelPublicHttpPortHelp": "Numeris viešo porto, kurį reiktų susieti su vietiniu HTTP portu.", "LabelPublicHttpsPort": "Numeris viešo HTTPS porto:", "LabelPublicHttpsPortHelp": "Viešas porto numeris, kurį reiktų susieti su vietiniu HTTPS portu.", - "LabelReadHowYouCanContribute": "Sužinokite, kaip galite prisidėti.", "LabelRecord": "Rašyti:", "LabelRecordingPath": "Įprasta įrašų vieta:", "LabelRecordingPathHelp": "Nurodykite įprastą vietą, kur saugoti įrašus. Palikus tuščia bus saugoma į serverio programos duomenų direktoriją.", @@ -460,16 +449,9 @@ "TabAccess": "Prieiga", "TabAdvanced": "Sudėtingiau", "TabAlbumArtists": "Albumo atlikėjai", - "TabAlbums": "Albumai", "TabCatalog": "Katalogas", - "TabChannels": "Kanalai", - "TabCollections": "Kolekcijos", "TabEpisodes": "Serijos", - "TabFavorites": "Mėgstamiausi", - "TabGenres": "Žanrai", - "TabGuide": "Gidas", "TabLatest": "Vėliausi", - "TabMovies": "Filmai", "TabMusic": "Muzika", "TabMusicVideos": "Muzikos klipai", "TabMyPlugins": "Mano priedai", @@ -483,8 +465,6 @@ "TabSeries": "Laidos", "TabServer": "Serveris", "TabSettings": "Nustatymai", - "TabShows": "Laidos", - "TabSongs": "Dainos", "TabTrailers": "Anonsai", "TabUpcoming": "Būsimi", "Tags": "Žymės", @@ -538,9 +518,6 @@ "ButtonAddServer": "Pridėti Serverį", "ButtonAudioTracks": "Garso takeliai", "ButtonChangeServer": "Keisti serverį", - "ButtonConnect": "Prisijungti", - "ButtonDown": "Žemyn", - "ButtonDownload": "Atsisiųsti", "ButtonEditImages": "Redaguoti vaizdus", "ButtonForgotPassword": "Pamiršau slaptažodį", "ButtonFullscreen": "Per visą ekraną", @@ -563,7 +540,6 @@ "ButtonShutdown": "Išjungti", "ButtonStart": "Pradėti", "ButtonUninstall": "Pašalinti", - "ButtonUp": "Aukštyn", "ButtonWebsite": "Svetainė", "ChangingMetadataImageSettingsNewContent": "Metaduomenų ar iliustracijų pakeitimai bus pritaikyti tik naujai pridėtam turiniui. Norint pritaikyti pakeitimus esančiam turiniui reikės atnaujinti metaduomenis rankiniu būdu.", "Channels": "Kanalai", @@ -598,7 +574,6 @@ "BookLibraryHelp": "Garso ir tekstinės knygos yra palaikomos. Peržiūrėkite {0} knygų vardinimo gidą {1}.", "ButtonEditOtherUserPreferences": "Keisti šio vartotojo profilį, paveikslą ir asmeninius nustatymus.", "ButtonResetEasyPassword": "Atstatyti pin kodą", - "ButtonShuffle": "Sumaišyti", "ColorPrimaries": "Pirminės spalvos", "ConfirmEndPlayerSession": "Ar norite išjungti Jellyfin ant {0}?", "Descending": "Mažėjančia tvarka", @@ -628,7 +603,6 @@ "AllowedRemoteAddressesHelp": "IP adresų atskirtų kableliais sąrašas ar IP/netmask įrašai tinklams, kurie turės teisę prisijungti nuotoliniu būdu. Visi adresai bus leidžiami, jei įrašas tuščias.", "HeaderMyMedia": "Mediateka", "HeaderMyDevice": "Mano įrenginys", - "HeaderMovies": "Filmai", "HeaderMyMediaSmall": "Mediateka", "HeaderNewDevices": "Naujas įrenginys", "AddToPlayQueue": "Pridėti prie grojaraščio", @@ -636,7 +610,6 @@ "Banner": "Juosta", "HeaderDeleteDevice": "Ištrinti prietaisą", "MessageBrowsePluginCatalog": "Peržiūrėti įskiepių katalogą.", - "EnableBackdrops": "Fonai", "EnableCinemaMode": "Kino režimas", "EnableDisplayMirroring": "Ekrano dubliavimas", "CopyStreamURL": "Kopijuoti srauto nuorodą", @@ -708,7 +681,6 @@ "HeaderFavoritePeople": "Mėgstami žmonės", "HeaderForKids": "Vaikams", "HeaderForgotPassword": "Pamiršau slaptažodį", - "HeaderGenres": "Žanrai", "HeaderGuideProviders": "TV gido informacijos teikėjai", "HeaderHome": "Pradinis", "HeaderIdentification": "Identifikacija", @@ -730,7 +702,6 @@ "HeaderFavoriteSongs": "Mėgstamos dainos", "HeaderImageOptions": "Vaizdo parinktys", "HeaderInstall": "Diegti", - "HeaderItems": "Elementai", "HeaderApiKeysHelp": "Išorinėms programoms reikalingas API raktas norint prisijungti prie Jellyfin serverio. Raktai išduodami prisijungus prie Jellyfin paskyros, arba raktas į programą suteikimas rankiniu būdu.", "HeaderSelectTranscodingPath": "Išrinkite kelią į aplanką laikiniems perkodavimo failams", "HeaderSelectTranscodingPathHelp": "Suraskite arba įrašykite kelią serverio į aplanką laikinų perkodavimo failų saugojimui. Aplankalas turi būti su rašymo teise.", @@ -781,7 +752,6 @@ "Genre": "Žanras", "ErrorPleaseSelectLineup": "Pasirinkite TV programą ir bandykite dar kartą. Jei TV programos nerodoma, patikrinkite ar teisingas jūsų vartotojo vardas, slaptažodis ir pašto kodas.", "HeaderRevisionHistory": "Versijų istorija", - "HeaderShutdown": "Išjungti", "HeaderSortBy": "Rūšiuoti pagal", "HeaderTranscodingProfileHelp": "Pridėti perkodavimo profilius, kad nurodyti, kokius formatus reikia naudoti, kai reikia perkoduoti.", "HeaderTunerDevices": "Tiunerio prietaisai", @@ -900,7 +870,6 @@ "GuideProviderLogin": "Prisijungti", "HardwareAccelerationWarning": "Įjungus aparatinės įrangos spartinimą, kai kuriose diegimo aplinkose gali atsirasti nestabilumas. Įsitikinkite, kad jūsų operacinė sistema ir vaizdo tvarkyklės yra visiškai atnaujintos. Jei įjungus šį vaizdo įrašą kyla problemų, turite pakeisti nustatymą į \"Joks\".", "HeaderAdmin": "Administratorius", - "HeaderAlbums": "Albumai", "HeaderAlert": "Perspėjimas", "HeaderAllowMediaDeletionFrom": "Leisti pašalinti medijos failą iš", "HeaderApiKey": "API raktas", @@ -921,7 +890,6 @@ "HeaderVideos": "Video įrašai", "HeaderXmlSettings": "XML nustatymai", "HeaderYears": "Metai", - "HeadersFolders": "Aplankai", "Home": "Pradinis", "Items": "Elementai", "LabelAbortedByServerShutdown": "(Nutraukta išjungus serverį)", diff --git a/src/strings/lv.json b/src/strings/lv.json index 094b3a4c74..e952b25fa9 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -143,7 +143,6 @@ "LabelOriginalTitle": "Oriģinālais nosaukums:", "LabelNumber": "Numurs:", "LabelNotificationEnabled": "Iespējot šo paziņojumu", - "LabelNext": "Nākamais", "LabelNewsCategories": "Ziņu kategorijas:", "LabelNewPasswordConfirm": "Jaunās paroles apstiprinājums:", "LabelNewPassword": "Jaunā parole:", @@ -248,7 +247,6 @@ "HeaderSpecialEpisodeInfo": "Speciālās Epizodes Info", "HeaderSortOrder": "Kārtošanas Secība", "HeaderSortBy": "Kārtot Pēc", - "HeaderShutdown": "Izslēgt", "HeaderSetupLibrary": "Uzstādīt multvides bibliotēkas", "HeaderSettings": "Iestatījumi", "HeaderServerSettings": "Servera Iestatījumi", @@ -290,7 +288,6 @@ "HeaderMyDevice": "Mana Ierīce", "HeaderMusicVideos": "Mūzikas Video", "HeaderMusicQuality": "Audio Kvalitāte", - "HeaderMovies": "Filmas", "HeaderMoreLikeThis": "Vairāk Kā Šis", "HeaderMetadataSettings": "Metadatu Iestatījumi", "HeaderMediaInfo": "Multvides informācija", @@ -310,7 +307,6 @@ "HeaderLatestMedia": "Jaunākā Multvide", "HeaderLatestEpisodes": "Jaunākās Epizodes", "HeaderKeepRecording": "Turpināt Ierakstu", - "HeaderItems": "Vienumi", "HeaderInstall": "Uzstādīt", "HeaderImageSettings": "Attēlu Iestatījumi", "HeaderImageOptions": "Attēlu Opcijas", @@ -320,7 +316,6 @@ "HeaderHttpHeaders": "HTTP Headeri", "HeaderHome": "Mājas", "HeaderGuideProviders": "TV Gida Datu Nodrošinātāji", - "HeaderGenres": "Žanri", "HeaderFrequentlyPlayed": "Bieži Atskaņots", "HeaderForgotPassword": "Aizmirst PAroli", "HeaderForKids": "Priekš Bērniem", @@ -375,7 +370,6 @@ "HeaderConfirmPluginInstallation": "Apstiprināt Palašinājumu Uzstādījumu", "HeaderConfigureRemoteAccess": "Konfigurēt Attālināto Piekļuvi", "HeaderCodecProfile": "Kodeksu Profils", - "HeaderChannels": "Kanāli", "HeaderChannelAccess": "Kanālu Piekļuve", "HeaderCancelSeries": "Atcelt Sēriju", "HeaderCancelRecording": "Atcelt Ierakstus", @@ -387,7 +381,6 @@ "HeaderApiKey": "API Atslēga", "HeaderAllowMediaDeletionFrom": "Atļaut Multvides Dzēšanu no", "HeaderAlert": "Paziņojums", - "HeaderAlbums": "Albumi", "HeaderAlbumArtists": "Albumu Izpildītāji", "HeaderAdmin": "Admin", "HeaderAddUser": "Pievienot Lietotāju", @@ -435,7 +428,6 @@ "EnableExternalVideoPlayers": "Ārējie video atskaņotāji", "EnableDisplayMirroring": "Displeju spoguļošana", "EnableCinemaMode": "Teātra režīms", - "EnableBackdrops": "Foni", "EditSubtitles": "Rediģēt subtitrus", "EditMetadata": "Rediģēt metadatus", "EditImages": "Rediģēt attēlus", @@ -489,7 +481,6 @@ "ButtonSignOut": "Iziet", "ButtonSignIn": "Ieiet", "ButtonShutdown": "Izslēgt", - "ButtonShuffle": "Jaukt", "ButtonSettings": "Iestatījumi", "ButtonSend": "Nosūtīt", "ButtonSelectView": "Izvēlies Skatu", @@ -514,7 +505,6 @@ "ButtonOk": "Labi", "ButtonOff": "Izslēgt", "ButtonNextTrack": "Nākamais Celiņš", - "ButtonNew": "Jauns", "ButtonNetwork": "Tīkls", "ButtonMore": "Vairāk", "ButtonLibraryAccess": "Bibliotēku piekļuve", @@ -527,10 +517,6 @@ "ButtonFilter": "Filtrs", "ButtonEditImages": "Rediģēt attēlus", "ButtonEdit": "Rediģēt", - "ButtonDownload": "Lejupielāde", - "ButtonDeleteImage": "Izdzēst Attēlu", - "ButtonDelete": "Izdzēst", - "ButtonConnect": "Pieslēgties", "ButtonChangeServer": "Nomainīt Serveri", "ButtonCancel": "Atcelt", "ButtonBack": "Atpakaļ", @@ -545,7 +531,6 @@ "Box": "Kaste", "Books": "Grāmatas", "Help": "Palīdzība", - "HeadersFolders": "Mapes", "HeaderYears": "Gadi", "HeaderXmlSettings": "Xml Iestatījumi", "HeaderXmlDocumentAttribute": "Xml Dokumenta Atribūts", @@ -578,7 +563,6 @@ "Backdrop": "Fons", "Auto": "Auto", "Audio": "Audio", - "AttributeNew": "Jauns", "AsManyAsPossible": "Cik vien iespējams", "Artists": "Izpildītāji", "Art": "Māksla", @@ -622,7 +606,6 @@ "NumLocationsValue": "{0} mapes", "Normal": "Normāls", "None": "Nakā", - "NoSubtitles": "Nav subtitru", "NoSubtitleSearchResultsFound": "Nav atrasti rezultāti.", "No": "Nr", "Next": "Nākamais", @@ -690,8 +673,6 @@ "TabUsers": "Lietotāji", "TabTrailers": "Treileri", "TabStreaming": "Straumēšana", - "TabSongs": "Dziesmas", - "TabShows": "Raidījumi", "TabSettings": "Iestatījumi", "TabServer": "Serveris", "TabSeries": "Sērijas", @@ -712,23 +693,15 @@ "TabMyPlugins": "Mani Paplašinājumi", "TabMusicVideos": "Mūzikas Video", "TabMusic": "Mūzika", - "TabMovies": "Filmas", "TabLogs": "Logs", "TabLiveTV": "Tiešraides TV", "TabLatest": "Jaunākais", "TabInfo": "Info", - "TabGuide": "Gids", - "TabGenres": "Žanri", - "TabFavorites": "Favorīti", "TabEpisodes": "Epizodes", "TabDirectPlay": "Tiešā Atskaņošana", - "TabDevices": "Ierīces", "TabContainers": "Konteineri", - "TabCollections": "Kolekcijas", "TabCodecs": "Kodeksi", - "TabChannels": "Kanāli", "TabCatalog": "Katalogs", - "TabAlbums": "Albumi", "ValueSpecialEpisodeName": "Speciālais - {0}", "Sync": "Sinhronizācija", "Songs": "Dziesmas", @@ -816,7 +789,6 @@ "LabelServerHostHelp": "192.168.1.100:8096 vai https://myserver.com", "LabelServerHost": "Resursdators:", "LabelReleaseDate": "Izlaiduma datums:", - "LabelPrevious": "Iepriekšējais", "LabelPreferredSubtitleLanguage": "Ieteicamā subtitru valoda:", "LabelPreferredDisplayLanguageHelp": "Jellyfin tulkošana ir notiekošs projekts.", "LabelPlayerDimensions": "Atskaņotāja dimensijas:", @@ -957,15 +929,11 @@ "ChannelAccessHelp": "Izvēlies kanālus, ko koplietot ar šo lietotāju. Administratori spēs rediģēt visus kanālus izmantojot metadatu pārvaldnieku.", "ChangingMetadataImageSettingsNewContent": "Izmaiņas metadatu vai mākslas lejupielādes iestatījumos tiks izmantotas tikai jauniem bibliotēkas vienumiem. Lai pielietotu šīs izmaiņas jau esošiem vienumiem, tev vajadzēs atjaunot šo vienumu metadatus manuāli.", "ButtonSubmit": "Iesniegt", - "ButtonSort": "Kārtot", "ButtonQuickStartGuide": "Pamata Lietošanas Instrukcija", "ButtonManualLogin": "Manuālā Ieiešana", "ButtonEditOtherUserPreferences": "Rediģē šī lietotāja profilu, attēlu un personas iestatījumus.", - "ButtonDown": "Lejup", - "ButtonArrowUp": "Augšup", "ButtonArrowRight": "Labi", "ButtonArrowLeft": "Kreisi", - "ButtonArrowDown": "Lejup", "ButtonAddScheduledTaskTrigger": "Pievienot Trigeru", "BookLibraryHelp": "Audio un teksta grāmatas tiek atbalstītas. Pārskati {0} grāmatu nosaukumu instrukciju {1}.", "Blacklist": "Melnais saraksts", @@ -1036,7 +1004,6 @@ "LabelTranscodes": "Transkodi:", "LabelTitle": "Tituls:", "LabelSaveLocalMetadata": "Saglabāt māksu media mapēs", - "LabelReadHowYouCanContribute": "Uzzini, kā tu vari dot ieguldījumu.", "LabelNumberOfGuideDays": "Dienu daudzumus, kuram lejupielādēt gidu:", "LabelLockItemToPreventChanges": "Aizslēgt šo objektu lai aizliegtu izmaiņas", "LabelLocalHttpServerPortNumber": "Vietējais HTTP porta numurs:", diff --git a/src/strings/mr.json b/src/strings/mr.json index 80708c700d..8a2114bf05 100644 --- a/src/strings/mr.json +++ b/src/strings/mr.json @@ -3,7 +3,6 @@ "ButtonOk": "ऑन", "ButtonOff": "ऑफ", "ButtonNextTrack": "पुढचा ट्रॅक", - "ButtonNew": "नवीन", "ButtonNetwork": "नेटवर्क", "ButtonMore": "अजून", "ButtonInfo": "माहिती", @@ -12,18 +11,12 @@ "ButtonForgotPassword": "पासवर्ड विसरलो", "ButtonEditImages": "चित्र संपादित करा", "ButtonEdit": "संपादित करा", - "ButtonDownload": "डाउनलोड करा", - "ButtonDown": "खाली", - "ButtonDeleteImage": "चित्र काढून टाका", - "ButtonDelete": "काढून टाका", "ButtonChangeServer": "सर्व्हर बदला", "ButtonCancel": "रद्द करा", "ButtonBack": "मागे", "ButtonAudioTracks": "ऑडिओ ट्रॅक", - "ButtonArrowUp": "वर", "ButtonArrowRight": "उजवीकडे", "ButtonArrowLeft": "डावीकडे", - "ButtonArrowDown": "खाली", "ButtonAddUser": "प्रयोक्ता जोडा", "ButtonAddServer": "सर्व्हर जोडा", "Books": "पुस्तकं", @@ -35,7 +28,6 @@ "Backdrop": "पार्श्वभूमी", "Auto": "आपोआप", "Audio": "ऑडिओ", - "AttributeNew": "नवीन", "AspectRatio": "अ‍ॅस्पेक्ट रेशो", "AsManyAsPossible": "जमतील तितके", "Artists": "संगीतकार", @@ -54,7 +46,6 @@ "AddedOnValue": "{0} जोडले", "Add": "जोडा", "Actor": "अभिनेता", - "EnableBackdrops": "पार्श्वभूमी", "EditSubtitles": "सबटायटल संपादित करा", "EditMetadata": "मेटाडेटा संपादित करा", "EditImages": "चित्र संपादित करा", @@ -77,7 +68,6 @@ "Categories": "वर्ग", "CancelRecording": "रेकॉर्डिंग रद्द करा", "ButtonWebsite": "संकेतस्थळ", - "ButtonUp": "वर", "ButtonTrailer": "ट्रेलर", "ButtonSubtitles": "सबटायटल", "ButtonStop": "थांबा", diff --git a/src/strings/ms.json b/src/strings/ms.json index e7b5be39ee..772cb3e043 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -4,8 +4,6 @@ "FolderTypeTvShows": "TV", "HeaderSeries": "Series", "LabelFinish": "Habis", - "LabelNext": "Seterusnya", - "LabelPrevious": "Sebelumnya", "LabelYoureDone": "Kamu Selesai!", "ParentalRating": "Parental Rating", "SettingsSaved": "Seting Disimpan", @@ -45,7 +43,6 @@ "AsManyAsPossible": "Sebanyak mungkin", "Ascending": "Susunan menaik", "AspectRatio": "Nisbah aspek", - "AttributeNew": "Terbaru", "Audio": "Audio", "Auto": "Auto", "Backdrop": "Latar belakang", @@ -60,15 +57,12 @@ "ButtonAddMediaLibrary": "Tambah Pustaka Media", "ButtonAddServer": "Tambah pelayan", "ButtonAddUser": "Tambah pengguna", - "ButtonArrowDown": "Turun", "ButtonArrowLeft": "Kiri", "ButtonArrowRight": "Kanan", - "ButtonArrowUp": "Atas", "ButtonAudioTracks": "Trek Audio", "ButtonBack": "Kembali", "ButtonCancel": "Batalkan", "ButtonChangeServer": "Tukar pelayan", - "ButtonConnect": "Sambung", "ButtonLibraryAccess": "Akses pustaka", "ButtonInfo": "Info", "ButtonHome": "Mula", @@ -80,10 +74,6 @@ "ButtonEditOtherUserPreferences": "Edit profil, gambar dan keutamaan peribadi pengguna ini", "ButtonEditImages": "Edit gambar-gambar", "ButtonEdit": "Edit", - "ButtonDownload": "Muat turun", - "ButtonDown": "Bawah", - "ButtonDeleteImage": "Buang gambar", - "ButtonDelete": "Buang", "ButtonAddScheduledTaskTrigger": "Tambah Pencetus", "ButtonAddImage": "Tambah gambar", "BurnSubtitlesHelp": "Menentukan sama ada pelayan perlu membakar subtitle ke skrin apabila menukar video bergantung kepada format sarikata. Menghindari pembakaran sari kata ke skrin akan meningkatkan prestasi pelayan. Pilih Auto untuk membakar format berasaskan imej (VOBSUB, PGS, SUB / IDX, dll) dan subtitle ASS / SSA tertentu.", diff --git a/src/strings/nb.json b/src/strings/nb.json index c427b92486..d9e0b3c8ec 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -24,7 +24,6 @@ "Artists": "Artister", "AsManyAsPossible": "Så mange som mulig", "AspectRatio": "Størrelsesforhold", - "AttributeNew": "Ny", "Audio": "Lyd", "Auto": "Automatisk", "BirthDateValue": "Født: {0}", @@ -37,19 +36,12 @@ "ButtonAddScheduledTaskTrigger": "Legg til utløser", "ButtonAddServer": "Legg til server", "ButtonAddUser": "Ny bruker", - "ButtonArrowDown": "Ned", "ButtonArrowLeft": "Venstre", "ButtonArrowRight": "Høyre", - "ButtonArrowUp": "Opp", "ButtonAudioTracks": "Lydspor", "ButtonBack": "Tilbake", "ButtonCancel": "Avbryt", "ButtonChangeServer": "Endre server", - "ButtonConnect": "Koble til", - "ButtonDelete": "Slett", - "ButtonDeleteImage": "Slett bilde", - "ButtonDown": "Ned", - "ButtonDownload": "Last ned", "ButtonEdit": "Rediger", "ButtonEditImages": "Endre bilder", "ButtonEditOtherUserPreferences": "Endre denne brukerens profilbilde og personlige innstillinger.", @@ -61,7 +53,6 @@ "ButtonManualLogin": "Manuell Login", "ButtonMore": "Mer", "ButtonNetwork": "Nettverk", - "ButtonNew": "Ny", "ButtonNextTrack": "Neste Spor", "ButtonOff": "Av", "ButtonOk": "OK", @@ -88,12 +79,10 @@ "ButtonShutdown": "Slå av", "ButtonSignIn": "Logg inn", "ButtonSignOut": "Logg ut", - "ButtonSort": "Sortér", "ButtonStop": "Stopp", "ButtonSubmit": "Send", "ButtonSubtitles": "Undertekster", "ButtonUninstall": "Avinstaller", - "ButtonUp": "Opp", "ButtonWebsite": "Nettsted", "CancelRecording": "Avbryt opptak", "CancelSeries": "Avbryt serie", @@ -195,7 +184,6 @@ "HeaderAddUpdateImage": "Legg Til/Oppdater Bilde", "HeaderAddUser": "Legg til bruker", "HeaderAdditionalParts": "Tilleggsdeler", - "HeaderAlbums": "Albumer", "HeaderAlert": "Varsling", "HeaderAllowMediaDeletionFrom": "Tillat sletting av media fra", "HeaderApiKey": "API-nøkkel", @@ -210,7 +198,6 @@ "HeaderCastAndCrew": "Skuespillere & mannskap", "HeaderCastCrew": "Mannskap", "HeaderChannelAccess": "Kanal-tilgang", - "HeaderChannels": "Kanaler", "HeaderCodecProfile": "Kodekprofil", "HeaderCodecProfileHelp": "Kodekprofiler indikerer begrensningene til en enhet ved avspilling av bestemte kodeker. Hvis en begrensning gjelder, vil media bli omkodet, selv om kodeken er konfigurert for direkteavspilling.", "HeaderConfirmPluginInstallation": "Bekreft installasjon av tillegg", @@ -248,7 +235,6 @@ "HeaderForKids": "For barn", "HeaderForgotPassword": "Glemt passord", "HeaderFrequentlyPlayed": "Ofte avspilt", - "HeaderGenres": "Sjanger", "HeaderGuideProviders": "Leverandører av TV-guide", "HeaderHttpHeaders": "HTTP-hoder", "HeaderIdentification": "Identifisering", @@ -259,7 +245,6 @@ "HeaderImageSettings": "Bildeinnstillinger", "HeaderInstall": "Installer", "HeaderInstantMix": "Miks", - "HeaderItems": "Elementer", "HeaderKeepRecording": "Behold opptak", "HeaderKeepSeries": "Behold serie", "HeaderLatestEpisodes": "Nyeste episoder", @@ -278,7 +263,6 @@ "HeaderMediaInfo": "Mediainformasjon", "HeaderMetadataSettings": "Metadatainnstilinger", "HeaderMoreLikeThis": "Flere som dette", - "HeaderMovies": "Filmer", "HeaderMusicVideos": "Musikkvideoer", "HeaderMyDevice": "Min enhet", "HeaderMyMedia": "Min media", @@ -333,7 +317,6 @@ "HeaderServerSettings": "Serverinnstillinger", "HeaderSettings": "Innstillinger", "HeaderSetupLibrary": "Konfigurer dine mediebibliotek", - "HeaderShutdown": "Skru av", "HeaderSortBy": "Sorter etter", "HeaderSortOrder": "Sorteringsrekkefølge", "HeaderSpecialEpisodeInfo": "Spesialepisodeinfo", @@ -361,7 +344,6 @@ "HeaderXmlDocumentAttributes": "XML-dokumentattributter", "HeaderXmlSettings": "XML-innstillinger", "HeaderYears": "År", - "HeadersFolders": "Mapper", "Help": "Hjelp", "HideWatchedContentFromLatestMedia": "Skjul sett innhold fra nyeste media", "Identify": "Identifiser", @@ -543,7 +525,6 @@ "LabelNewPassword": "Nytt passord:", "LabelNewPasswordConfirm": "Bekreft nytt passord:", "LabelNewsCategories": "Nyhetskategorier:", - "LabelNext": "Neste", "LabelNotificationEnabled": "Aktiver denne varslingen", "LabelNumber": "Nummer:", "LabelNumberOfGuideDays": "Antall dager med TV-guidedata som skal lastes ned:", @@ -568,7 +549,6 @@ "LabelPostProcessorArgumentsHelp": "Bruk {path} som filbanen til opptaksfilen.", "LabelPreferredDisplayLanguage": "Foretrukket visningsspråk:", "LabelPreferredDisplayLanguageHelp": "Oversettelse av Jellyfin er et pågående prosjekt.", - "LabelPrevious": "Forrige", "LabelProfileAudioCodecs": "Lydkodeker:", "LabelProfileCodecs": "Kodeker:", "LabelProfileCodecsHelp": "Separert med komma. Dette feltet kan forbli tomt for å gjelde alle kodeker.", @@ -582,7 +562,6 @@ "LabelPublicHttpPortHelp": "Den eksterne porten som kobles til den lokale HTTP-porten.", "LabelPublicHttpsPort": "Ekstern HTTPS-port:", "LabelPublicHttpsPortHelp": "Den eksterne porten som kobles til den lokale HTTPS-porten.", - "LabelReadHowYouCanContribute": "Lær hvordan du kan bidra.", "LabelRecord": "Opptak:", "LabelRecordingPath": "Standard plassering for opptak:", "LabelRecordingPathHelp": "Angi et egendefinert sted å lagre opptak. Dersom du lar feltet stå tomt vil serverens datamappe bli brukt.", @@ -976,21 +955,14 @@ "TabAccess": "Tilgang", "TabAdvanced": "Avansert", "TabAlbumArtists": "Albumartister", - "TabAlbums": "Album", "TabCatalog": "Katalog", - "TabChannels": "Kanaler", "TabCodecs": "Kodeker", - "TabCollections": "Samlinger", "TabContainers": "Kontainere", "TabDashboard": "Dashbord", - "TabDevices": "Enheter", "TabDirectPlay": "Direkteavspilling", "TabEpisodes": "Episoder", - "TabFavorites": "Favoritter", - "TabGenres": "Sjangre", "TabLatest": "Siste", "TabLogs": "Logger", - "TabMovies": "Filmer", "TabMusic": "Musikk", "TabMusicVideos": "Musikkvideoer", "TabMyPlugins": "Mine programtillegg", @@ -1010,8 +982,6 @@ "TabScheduledTasks": "Planlagte oppgaver", "TabSeries": "Serier", "TabSettings": "Innstillinger", - "TabShows": "Programmer", - "TabSongs": "Sanger", "TabTrailers": "Trailere", "TabUpcoming": "Kommende", "TabUsers": "Brukere", @@ -1076,7 +1046,6 @@ "Channels": "Kanaler", "ButtonTrailer": "Trailer", "ButtonStart": "Start", - "ButtonShuffle": "Tilfeldig rekkefølge", "ButtonSend": "Send", "ButtonPause": "Pause", "ButtonInfo": "Informasjon", @@ -1164,7 +1133,6 @@ "LabelType": "Type:", "Large": "Stor", "DirectStreamHelp1": "Mediet støttes av enheten med tanke på oppløsning og medietype (H.264, AC3, osv), men den støtter ikke filkontaineren (mkv, avi, wmv, osv). Videoen vil ompakkes fortløpende før den sendes til enheten.", - "EnableBackdrops": "Bakgrunner", "EnableThemeVideos": "Temavideoer", "MusicVideo": "Musikkvideo", "Mute": "Demp lyd", @@ -1180,7 +1148,6 @@ "MediaInfoCodecTag": "Kodektagg", "Metadata": "Metadata", "MessageNoPluginConfiguration": "Dette programtillegget har ingen innstillinger å konfigurere.", - "TabGuide": "Guide", "Unmute": "Skru på lyd", "OptionIsHD": "HD", "ButtonAddImage": "Legg til bilde", @@ -1337,7 +1304,6 @@ "MusicAlbum": "Musikkalbum", "MusicArtist": "Musikkartist", "Next": "Neste", - "NoSubtitles": "Ingen", "NoSubtitlesHelp": "Undertekster vil ikke lastes inn som standard. De kan fortsatt aktiveres manuelt under avspilling.", "Normal": "Normal", "OnlyForcedSubtitles": "Kun tvungen", @@ -1449,7 +1415,6 @@ "YadifBob": "YADIF Bob", "Yadif": "YADIF", "Track": "Spor", - "TabDVR": "Opptak", "SyncPlayAccessHelp": "Velg tilgangsnivået denne brukeren skal ha til SyncPlay-funksjonen. SyncPlay muliggjør synkronisert avspilling med andre enheter.", "Filter": "Filter", "New": "Ny", diff --git a/src/strings/nl.json b/src/strings/nl.json index 0401a2f9bf..5dee8dbf47 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -34,7 +34,6 @@ "AsManyAsPossible": "Zo veel als mogelijk", "Ascending": "Oplopend", "AspectRatio": "Beeldverhouding", - "AttributeNew": "Nieuw", "Audio": "Geluid", "Auto": "Automatisch", "Backdrop": "Achtergrond", @@ -52,19 +51,12 @@ "ButtonAddScheduledTaskTrigger": "Trigger Toevoegen", "ButtonAddServer": "Voeg server toe", "ButtonAddUser": "Gebruiker toevoegen", - "ButtonArrowDown": "Omlaag", "ButtonArrowLeft": "Links", "ButtonArrowRight": "Rechts", - "ButtonArrowUp": "Omhoog", "ButtonAudioTracks": "Audio track", "ButtonBack": "Terug", "ButtonCancel": "Annuleren", "ButtonChangeServer": "Wijzig server", - "ButtonConnect": "Verbind", - "ButtonDelete": "Verwijderen", - "ButtonDeleteImage": "Verwijder afbeelding", - "ButtonDown": "Omlaag", - "ButtonDownload": "Downloaden", "ButtonEdit": "Bewerken", "ButtonEditImages": "Bewerk afbeeldingen", "ButtonEditOtherUserPreferences": "Wijzig het profiel, afbeelding en persoonlijke voorkeuren van deze gebruiker.", @@ -77,7 +69,6 @@ "ButtonManualLogin": "Handmatige Aanmelding", "ButtonMore": "Meer", "ButtonNetwork": "Netwerk", - "ButtonNew": "Nieuw", "ButtonNextTrack": "Volgende track", "ButtonOff": "Uit", "ButtonOpen": "Openen", @@ -102,14 +93,11 @@ "ButtonSelectView": "Selecteer weergave", "ButtonSend": "Stuur", "ButtonSettings": "Instellingen", - "ButtonShuffle": "Willekeurig", "ButtonShutdown": "Afsluiten", "ButtonSignIn": "Aanmelden", "ButtonSignOut": "Afmelden", - "ButtonSort": "Sorteren", "ButtonSubmit": "Uitvoeren", "ButtonSubtitles": "Ondertiteling", - "ButtonUp": "Omhoog", "CancelRecording": "Opname annuleren", "CancelSeries": "Annuleer series", "Categories": "Categorieën", @@ -180,7 +168,6 @@ "EditImages": "Bewerk afbeeldingen", "EditMetadata": "Metadata wijzigen", "EditSubtitles": "Bewerk ondertiteling", - "EnableBackdrops": "Achtergronden", "EnableBackdropsHelp": "Laat achtergrondafbeeldingen zien tijdens het bladeren door de bibliotheek.", "EnableCinemaMode": "Cinema modus", "EnableColorCodedBackgrounds": "Kleurgecodeerde achtergronden", @@ -273,7 +260,6 @@ "HeaderCancelRecording": "Opname Annuleren", "HeaderCancelSeries": "Annuleren Series", "HeaderChannelAccess": "Kanaal toegang", - "HeaderChannels": "Kanalen", "HeaderChapterImages": "Hoofdstukafbeeldingen", "HeaderCodecProfile": "Codec Profiel", "HeaderCodecProfileHelp": "Codec profielen geven de beperkingen van een apparaat bij het afspelen van bepaalde codecs. Als een beperking geldt dan zal de media getranscodeerd worden, zelfs indien de codec is geconfigureerd voor direct afspelen.", @@ -342,7 +328,6 @@ "HeaderMediaInfo": "Media informatie", "HeaderMetadataSettings": "Metagegevens instellingen", "HeaderMoreLikeThis": "Meer als dit", - "HeaderMovies": "Films", "HeaderMusicQuality": "Muziek Kwaliteit", "HeaderMusicVideos": "Music Video's", "HeaderMyDevice": "Mijn Apparaat", @@ -403,7 +388,6 @@ "HeaderServerSettings": "Server Instellingen", "HeaderSettings": "Instellingen", "HeaderSetupLibrary": "Stel uw mediabibliotheken in", - "HeaderShutdown": "Afsluiten", "HeaderSortBy": "Sorteren op", "HeaderSortOrder": "Sorteer volgorde", "HeaderSpecialEpisodeInfo": "Speciale afleveringsinformatie", @@ -435,7 +419,6 @@ "HeaderXmlDocumentAttributes": "Xml Document Attributen", "HeaderXmlSettings": "Xml Instellingen", "HeaderYears": "Jaren", - "HeadersFolders": "Mappen", "Help": "Hulp", "Hide": "Verbergen", "HideWatchedContentFromLatestMedia": "Verberg gekeken inhoud uit nieuwste media", @@ -641,7 +624,6 @@ "LabelNewPassword": "Nieuw wachtwoord:", "LabelNewPasswordConfirm": "Bevestig nieuw wachtwoord:", "LabelNewsCategories": "Nieuws categorieën:", - "LabelNext": "Volgende", "LabelNotificationEnabled": "Deze melding inschakelen", "LabelNumber": "Nummer:", "LabelNumberOfGuideDays": "Aantal dagen van de gids om te downloaden:", @@ -668,7 +650,6 @@ "LabelPreferredDisplayLanguage": "Voorkeur weergavetaal:", "LabelPreferredDisplayLanguageHelp": "Vertaling van Jellyfin is een voortdurend project.", "LabelPreferredSubtitleLanguage": "Voorkeurstaal ondertiteling:", - "LabelPrevious": "Vorige", "LabelProfileAudioCodecs": "Geluidscodecs:", "LabelProfileCodecsHelp": "Gescheiden door een komma. Dit kan leeg worden gelaten om te laten gelden voor alle codecs.", "LabelProfileContainersHelp": "Gescheiden door een komma. Dit kan leeg worden gelaten om te laten gelden voor alle containers.", @@ -678,7 +659,6 @@ "LabelPublicHttpPortHelp": "Het publieke poortnummer dat moet worden toegewezen aan de lokale HTTP poort.", "LabelPublicHttpsPort": "Publieke HTTPS poort nummer:", "LabelPublicHttpsPortHelp": "Het publieke poortnummer dat moet worden toegewezen aan de lokale HTTPS poort.", - "LabelReadHowYouCanContribute": "Lees meer over hoe u kunt bijdragen.", "LabelReasonForTranscoding": "Reden voor transcoderen:", "LabelRecord": "Opnemen:", "LabelRecordingPath": "Standaard opname pad:", @@ -863,7 +843,6 @@ "MessageNoNextUpItems": "Niets gevonden. Start met kijken!", "MessageNoPluginConfiguration": "Deze plugin heeft geen instellingen te configureren.", "NoSubtitleSearchResultsFound": "Geen resultaten gevonden.", - "NoSubtitles": "Geen ondertiteling", "NoSubtitlesHelp": "Ondertitels worden niet standaard weergegeven. Deze kunnen tijdens het afspelen handmatig worden ingeschakeld.", "None": "Geen", "Normal": "Normaal", @@ -1126,16 +1105,10 @@ "TabAdvanced": "Geavanceerd", "TabAlbumArtists": "Albumartiesten", "TabCatalog": "Catalogus", - "TabChannels": "Kanalen", - "TabCollections": "Collecties", - "TabDevices": "Apparaten", "TabDirectPlay": "Direct Afspelen", "TabEpisodes": "Afleveringen", - "TabFavorites": "Favorieten", - "TabGuide": "Gids", "TabLatest": "Nieuw", "TabLogs": "Logboeken", - "TabMovies": "Films", "TabMusic": "Muziek", "TabMusicVideos": "Muziek Videos", "TabMyPlugins": "Mijn Plugins", @@ -1154,8 +1127,6 @@ "TabScheduledTasks": "Geplande taken", "TabSeries": "Serie", "TabSettings": "Instellingen", - "TabShows": "Series", - "TabSongs": "Titels", "TabUpcoming": "Binnenkort op TV", "TabUsers": "Gebruikers", "Tags": "Labels", @@ -1231,12 +1202,10 @@ "Filters": "Filters", "Genre": "Genre", "Genres": "Genres", - "HeaderAlbums": "Albums", "HeaderCastAndCrew": "Acteurs en medewerkers", "HeaderCastCrew": "Acteurs & medewerkers", "Art": "Afbeeldingen", "HeaderLiveTV": "Live TV", - "HeaderGenres": "Genres", "HeaderHttpHeaders": "HTTP Headers", "HeaderStatus": "Status", "AuthProviderHelp": "Selecteer een authenticatie provider om het wachtwoord van deze gebruiker te verifiëren.", @@ -1248,7 +1217,6 @@ "HeaderFavoriteSongs": "Favoriete nummers", "HeaderFavoriteVideos": "Favoriete Films", "HeaderInstantMix": "Directe Mix", - "HeaderItems": "Items", "HeaderLiveTv": "Live TV", "HeaderMedia": "Media", "HeaderTracks": "Nummers", @@ -1334,8 +1302,6 @@ "PasswordResetProviderHelp": "Kies een wachtwoord reset provider om te gebruiken wanneer deze gebruiker een wachtwoord reset aanvraagt", "Screenshots": "Schermafdruk", "Series": "Series", - "TabAlbums": "Albums", - "TabGenres": "Genres", "TabInfo": "Info", "Trailers": "Trailers", "Uniform": "Uniform", @@ -1456,7 +1422,6 @@ "EnableDetailsBanner": "Details Banner", "MessageSyncPlayNoGroupsAvailable": "Geen groepen beschikbaar. Begin eerst iets te spelen.", "EnableDetailsBannerHelp": "Toon een bannerafbeelding bovenaan de pagina met itemdetails.", - "TabDVR": "DVR", "SyncPlayAccessHelp": "Selecteer het toegangsniveau dat deze gebruiker heeft tot de SyncPlay-functie. SyncPlay maakt het mogelijk om het afspelen met andere gebruikers te synchroniseren.", "Filter": "Filter", "New": "Nieuw", diff --git a/src/strings/pl.json b/src/strings/pl.json index 781993f4fa..d4f88b4b44 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -36,7 +36,6 @@ "AsManyAsPossible": "Tak wiele jak to możliwe", "Ascending": "Rosnąco", "AspectRatio": "Proporcje obrazu", - "AttributeNew": "Nowy", "Audio": "Dźwięk", "Auto": "Automatycznie", "Backdrop": "Fototapeta", @@ -57,19 +56,12 @@ "ButtonAddScheduledTaskTrigger": "Dodaj wyzwalacz", "ButtonAddServer": "Dodaj Serwer", "ButtonAddUser": "Dodaj użytkownika", - "ButtonArrowDown": "Dół", "ButtonArrowLeft": "Lewa", "ButtonArrowRight": "Prawa", - "ButtonArrowUp": "Góra", "ButtonAudioTracks": "Ścieżki dźwiękowe", "ButtonBack": "Wstecz", "ButtonCancel": "Anuluj", "ButtonChangeServer": "Zmień Serwer", - "ButtonConnect": "Połacz", - "ButtonDelete": "Usuń", - "ButtonDeleteImage": "Usuń obraz", - "ButtonDown": "Dół", - "ButtonDownload": "Pobierz", "ButtonEdit": "Edytuj", "ButtonEditImages": "Edytuj obrazy", "ButtonEditOtherUserPreferences": "Edytuj profil, obrazy i ustawienia osobiste tego użytkownika.", @@ -84,7 +76,6 @@ "ButtonManualLogin": "Logowanie manualne", "ButtonMore": "Więcej", "ButtonNetwork": "Sieć", - "ButtonNew": "Nowe", "ButtonNextTrack": "Następny utwór", "ButtonOff": "Wyłącz", "ButtonOpen": "Otwórz", @@ -109,17 +100,14 @@ "ButtonSelectView": "Wybierz widok", "ButtonSend": "Wyślij", "ButtonSettings": "Ustawienia", - "ButtonShuffle": "Losowo", "ButtonShutdown": "Zamknij", "ButtonSignIn": "Zaloguj się", "ButtonSignOut": "Wyloguj", - "ButtonSort": "Sortuj", "ButtonStop": "Zatrzymaj", "ButtonSubmit": "Zatwierdź", "ButtonSubtitles": "Napisy", "ButtonTrailer": "Zwiastun", "ButtonUninstall": "Odinstaluj", - "ButtonUp": "Góra", "ButtonWebsite": "Strona WWW", "CancelRecording": "Anuluj nagranie", "CancelSeries": "Anuluj nagrywanie serialu", @@ -193,7 +181,6 @@ "EditImages": "Edytuj obrazy", "EditMetadata": "Edytuj metadane", "EditSubtitles": "Edytuj napisy", - "EnableBackdrops": "Fototapety", "EnableBackdropsHelp": "Wyświetlaj fototapety, w tle niektórych stron, podczas przeglądania biblioteki.", "EnableCinemaMode": "Tryb kinowy", "EnableColorCodedBackgrounds": "Kolorowe tła bazujące na zawartości", @@ -273,7 +260,6 @@ "HeaderAdditionalParts": "Dodatkowe części", "HeaderAdmin": "Administracja", "HeaderAlbumArtists": "Wykonawcy albumów", - "HeaderAlbums": "Albumy", "HeaderAlert": "Alarm", "HeaderAllowMediaDeletionFrom": "Zezwalaj na usuwanie mediów z", "HeaderApiKey": "Klucz API", @@ -291,7 +277,6 @@ "HeaderCastAndCrew": "Obsada i ekipa", "HeaderCastCrew": "Obsada i ekipa", "HeaderChannelAccess": "Dostęp do Kanałów", - "HeaderChannels": "Kanały", "HeaderChapterImages": "Obrazy rozdziałów", "HeaderCodecProfile": "Profil Kodeków", "HeaderCodecProfileHelp": "Profil Kodeków określa ograniczenia urządzenia podczas odtwarzania konkretnych kodeków. Jeśli ograniczenie ma zastosowanie, media będą transkodowane, nawet jeżeli kodek jest skonfigurowany dla odtwarzania bezpośredniego.", @@ -333,7 +318,6 @@ "HeaderForKids": "Dla dzieci", "HeaderForgotPassword": "Zapomniałem hasła", "HeaderFrequentlyPlayed": "Często odtwarzane", - "HeaderGenres": "Gatunki", "HeaderGuideProviders": "Dostawcy danych przewodnika telewizyjnego", "HeaderHttpHeaders": "Nagłówki HTTP", "HeaderIdentification": "Identyfikacja", @@ -344,7 +328,6 @@ "HeaderImageSettings": "Ustawienia obrazów", "HeaderInstall": "Instalacja", "HeaderInstantMix": "Szybki remiks", - "HeaderItems": "Pozycje", "HeaderKeepRecording": "Zachowaj nagranie", "HeaderKeepSeries": "Zachowaj nagranie serialu", "HeaderKodiMetadataHelp": "W celu aktywowania lub dezaktywowania metadanych NFO, należy zmodyfikować ustawienia biblioteki w sekcji menadżerów metadanych.", @@ -367,7 +350,6 @@ "HeaderMediaInfo": "O mediach", "HeaderMetadataSettings": "Ustawienia metadanych", "HeaderMoreLikeThis": "Więcej podobnych", - "HeaderMovies": "Filmy", "HeaderMusicQuality": "Jakość muzyki", "HeaderMusicVideos": "Teledyski", "HeaderMyDevice": "Moje urządzenie", @@ -428,7 +410,6 @@ "HeaderServerSettings": "Ustawienia serwera", "HeaderSettings": "Ustawienia", "HeaderSetupLibrary": "Skonfiguruj swoje biblioteki mediów", - "HeaderShutdown": "Zamknij", "HeaderSortBy": "Sortuj według", "HeaderSortOrder": "Porządek sortowania", "HeaderSpecialEpisodeInfo": "Specjalne informacje o odcinku", @@ -463,7 +444,6 @@ "HeaderXmlDocumentAttributes": "Atrybuty Dokumentu Xml", "HeaderXmlSettings": "Ustawienia Xml", "HeaderYears": "Lata", - "HeadersFolders": "Foldery", "Help": "Pomoc", "Hide": "Ukryj", "HideWatchedContentFromLatestMedia": "Ukrywaj obejrzaną zawartość na listach ostatnio dodanych", @@ -679,7 +659,6 @@ "LabelNewPassword": "Nowe hasło:", "LabelNewPasswordConfirm": "Potwierdź nowe hasło:", "LabelNewsCategories": "Kategorie informacyjne:", - "LabelNext": "Dalej", "LabelNotificationEnabled": "Aktywuj to powiadomienie", "LabelNumber": "Numer:", "LabelNumberOfGuideDays": "Liczba dni pobieranych danych przewodnika:", @@ -706,7 +685,6 @@ "LabelPreferredDisplayLanguage": "Preferowany język interfejsu:", "LabelPreferredDisplayLanguageHelp": "Tłumaczenie Jellyfin to projekt w ciągłym rozwoju.", "LabelPreferredSubtitleLanguage": "Preferowany język napisów:", - "LabelPrevious": "Wstecz", "LabelProfileAudioCodecs": "Kodeki audio:", "LabelProfileCodecs": "Kodeki:", "LabelProfileCodecsHelp": "Oddzielone przecinkiem. Zostaw puste aby zastosować wszystkie kodeki.", @@ -720,7 +698,6 @@ "LabelPublicHttpPortHelp": "Publiczny numer portu na który ma być zmapowany lokalny port HTTP.", "LabelPublicHttpsPort": "Publiczny numer portu HTTPS:", "LabelPublicHttpsPortHelp": "Publiczny numer portu na który ma być zmapowany lokalny port HTTPS.", - "LabelReadHowYouCanContribute": "Dowiedz się jak możesz pomóc.", "LabelReasonForTranscoding": "Powód transkodowania:", "LabelRecord": "Nagraj:", "LabelRecordingPath": "Folder domyślny nagrań:", @@ -925,7 +902,6 @@ "MessageNoNextUpItems": "Nie znaleziono niczego. Zacznij oglądać swoje seriale!", "MessageNoPluginConfiguration": "Ta wtyczka nie ma żadnych ustawień.", "NoSubtitleSearchResultsFound": "Brak wyników wyszukiwania.", - "NoSubtitles": "Brak", "NoSubtitlesHelp": "Domyślnie napisy nie będą wczytywane. Można je ciągle włączyć ręcznie podczas odtwarzania.", "None": "Brak", "Normal": "Normalny", @@ -1206,24 +1182,16 @@ "TabAccess": "Dostęp", "TabAdvanced": "Zaawansowane", "TabAlbumArtists": "Wykonawcy albumów", - "TabAlbums": "Albumy", "TabCatalog": "Katalog", - "TabChannels": "Kanały", "TabCodecs": "Kodeki", - "TabCollections": "Kolekcje", "TabContainers": "Kontenery", "TabDashboard": "Kokpit", - "TabDevices": "Urządzenia", "TabDirectPlay": "Odtwarzanie Bezposrednie", "TabEpisodes": "Odcinki", - "TabFavorites": "Ulubione", - "TabGenres": "Gatunki", - "TabGuide": "Przewodnik", "TabInfo": "Informacje", "TabLatest": "Ostatnio dodane", "TabLiveTV": "Telewizja", "TabLogs": "Dziennik zdarzeń", - "TabMovies": "Filmy", "TabMusic": "Muzyka", "TabMusicVideos": "Teledyski", "TabMyPlugins": "Zainstalowane", @@ -1244,8 +1212,6 @@ "TabSeries": "Seriale", "TabServer": "Serwer", "TabSettings": "Ustawienia", - "TabShows": "Seriale", - "TabSongs": "Utwory", "TabStreaming": "Transmitowanie", "TabTrailers": "Zwiastuny", "TabUpcoming": "Wkrótce", @@ -1457,7 +1423,6 @@ "Writers": "Scenariusz", "ViewAlbumArtist": "Zobacz wykonawcę albumu", "Track": "Utwór", - "TabDVR": "DVR", "TabRepositories": "Repozytoria", "SyncPlayAccessHelp": "Wybierz poziom dostępu do funkcji SyncPlay jaki posiada ten użytkownik. SyncPlay pozwala na synchronizację odtwarzania z innymi urządzeniami.", "Filter": "Filtruj", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 753b554da6..71913399f6 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -35,7 +35,6 @@ "AsManyAsPossible": "Quantos forem possíveis", "Ascending": "Crescente", "AspectRatio": "Proporção da tela", - "AttributeNew": "Novo", "Audio": "Áudio", "Backdrop": "Imagem de Fundo", "Backdrops": "Imagens de Fundo", @@ -53,18 +52,12 @@ "ButtonAddScheduledTaskTrigger": "Adicionar Disparador", "ButtonAddServer": "Adicionar Servidor", "ButtonAddUser": "Adicionar Usuário", - "ButtonArrowDown": "Baixo", "ButtonArrowLeft": "Esquerda", "ButtonArrowRight": "Direita", - "ButtonArrowUp": "Cima", "ButtonAudioTracks": "Faixas de Áudio", "ButtonBack": "Voltar", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Alterar Servidor", - "ButtonConnect": "Conectar", - "ButtonDelete": "Excluir", - "ButtonDeleteImage": "Excluir Imagem", - "ButtonDown": "Baixo", "ButtonEdit": "Editar", "ButtonEditImages": "Editar imagens", "ButtonEditOtherUserPreferences": "Editar este perfil de usuário, imagem e preferências pessoais.", @@ -78,7 +71,6 @@ "ButtonManualLogin": "Login Manual", "ButtonMore": "Mais", "ButtonNetwork": "Rede", - "ButtonNew": "Novo", "ButtonNextTrack": "Próxima faixa", "ButtonOff": "Desligar", "ButtonOk": "OK", @@ -104,17 +96,14 @@ "ButtonSelectView": "Selecionar visualização", "ButtonSend": "Enviar", "ButtonSettings": "Configurações", - "ButtonShuffle": "Aleatório", "ButtonShutdown": "Desligar", "ButtonSignIn": "Entrar", "ButtonSignOut": "Sair", - "ButtonSort": "Ordenar", "ButtonStart": "Iniciar", "ButtonStop": "Parar", "ButtonSubmit": "Enviar", "ButtonSubtitles": "Legendas", "ButtonUninstall": "Desinstalar", - "ButtonUp": "Cima", "CancelRecording": "Cancelar gravação", "CancelSeries": "Cancelar série", "Categories": "Categorias", @@ -183,7 +172,6 @@ "EditImages": "Editar imagens", "EditMetadata": "Editar metadados", "EditSubtitles": "Editar legendas", - "EnableBackdrops": "Imagens de fundo", "EnableBackdropsHelp": "Exibe imagens de fundo de algumas páginas ao navegar pela biblioteca.", "EnableCinemaMode": "Modo cinema", "EnableColorCodedBackgrounds": "Cores de fundo por código", @@ -261,7 +249,6 @@ "HeaderAddUser": "Adicionar Usuário", "HeaderAdditionalParts": "Partes Adicionais", "HeaderAlbumArtists": "Artistas do Álbum", - "HeaderAlbums": "Álbuns", "HeaderAlert": "Alerta", "HeaderAllowMediaDeletionFrom": "Permitir a Exclusão de Mídia de", "HeaderApiKey": "Chave da API", @@ -278,7 +265,6 @@ "HeaderCastAndCrew": "Elenco e Equipe", "HeaderCastCrew": "Elenco e Equipe", "HeaderChannelAccess": "Acesso ao Canal", - "HeaderChannels": "Canais", "HeaderChapterImages": "Imagens do Capítulo", "HeaderCodecProfile": "Perfil do Codec", "HeaderCodecProfileHelp": "Perfis do Codec indicam as limitações de um dispositivo ao reproduzir codecs específicos. Se uma limitação ocorre, a mídia será transcodificada, mesmo se o codec estiver configurado para reprodução direta.", @@ -320,7 +306,6 @@ "HeaderForKids": "Para Crianças", "HeaderForgotPassword": "Esqueci a Senha", "HeaderFrequentlyPlayed": "Reproduzidos Frequentemente", - "HeaderGenres": "Gêneros", "HeaderGuideProviders": "Provedores de Dados do Guia da TV", "HeaderHttpHeaders": "Cabeçalhos de Http", "HeaderIdentification": "Identificação", @@ -331,7 +316,6 @@ "HeaderImageSettings": "Configurações de Imagem", "HeaderInstall": "Instalar", "HeaderInstantMix": "Mix Instantâneo", - "HeaderItems": "Itens", "HeaderKeepRecording": "Continuar Gravando", "HeaderKeepSeries": "Manter Série", "HeaderKodiMetadataHelp": "Para ativar ou desativar metadados NFO, edite uma biblioteca na configuração de Biblioteca do Jellyfin e localize a seção de gravadores de metadados.", @@ -354,7 +338,6 @@ "HeaderMediaInfo": "Informações de Mídia", "HeaderMetadataSettings": "Configurações dos Metadados", "HeaderMoreLikeThis": "Mais Disso", - "HeaderMovies": "Filmes", "HeaderMusicQuality": "Qualidade da Música", "HeaderMusicVideos": "Videoclipes", "HeaderMyDevice": "Meu Dispositivo", @@ -415,7 +398,6 @@ "HeaderServerSettings": "Configurações de Servidor", "HeaderSettings": "Configurações", "HeaderSetupLibrary": "Configurar suas bibliotecas de mídias", - "HeaderShutdown": "Desligar", "HeaderSortBy": "Ordenar Por", "HeaderSortOrder": "Ordem", "HeaderSpecialEpisodeInfo": "Informação do Episódio Especial", @@ -449,7 +431,6 @@ "HeaderXmlDocumentAttributes": "Atributos do Documento Xml", "HeaderXmlSettings": "Configurações Xml", "HeaderYears": "Anos", - "HeadersFolders": "Pastas", "Help": "Ajuda", "Hide": "Ocultar", "HideWatchedContentFromLatestMedia": "Ocultar conteúdo assistido das mídias recentes", @@ -663,7 +644,6 @@ "LabelNewPassword": "Nova senha:", "LabelNewPasswordConfirm": "Confirmar nova senha:", "LabelNewsCategories": "Categorias de notícias:", - "LabelNext": "Próximo", "LabelNotificationEnabled": "Ativar esta notificação", "LabelNumber": "Número:", "LabelNumberOfGuideDays": "Número de dias de dados do guia para baixar:", @@ -690,7 +670,6 @@ "LabelPreferredDisplayLanguage": "Idioma preferido de exibição:", "LabelPreferredDisplayLanguageHelp": "A tradução do Jellyfin é um projeto em andamento.", "LabelPreferredSubtitleLanguage": "Idioma de legendas preferido:", - "LabelPrevious": "Anterior", "LabelProfileAudioCodecs": "Codecs de áudio:", "LabelProfileCodecsHelp": "Separados por vírgula. Deixe em branco para aplicar a todos os codecs.", "LabelProfileContainersHelp": "Separados por vírgula. Deixe em branco para aplicar a todos os formatos.", @@ -702,7 +681,6 @@ "LabelPublicHttpPortHelp": "O número da porta pública que deverá ser mapeada para a porta local de HTTP.", "LabelPublicHttpsPort": "Número da porta pública de HTTPS:", "LabelPublicHttpsPortHelp": "O número da porta pública que deverá ser mapeada para a porta local de HTTPS.", - "LabelReadHowYouCanContribute": "Aprenda como você pode contribuir.", "LabelReasonForTranscoding": "Motivo da transcodificação:", "LabelRecord": "Gravar:", "LabelRecordingPath": "Local de gravação padrão:", @@ -901,7 +879,6 @@ "MessageNoNextUpItems": "Nada encontrado. Comece a assistir suas séries!", "MessageNoPluginConfiguration": "Este plugin não permite alterar configurações.", "NoSubtitleSearchResultsFound": "Nenhum resultado encontrado.", - "NoSubtitles": "Não há legendas", "NoSubtitlesHelp": "Legendas não serão carregadas por padrão. Elas podem ser carregadas manualmente durante a reprodução.", "None": "Nenhum(a)", "NumLocationsValue": "{0} pastas", @@ -1168,20 +1145,12 @@ "TabAccess": "Acesso", "TabAdvanced": "Avançado", "TabAlbumArtists": "Artistas do Álbum", - "TabAlbums": "Álbuns", "TabCatalog": "Catálogo", - "TabChannels": "Canais", - "TabCollections": "Coletâneas", "TabDashboard": "Painel", - "TabDevices": "Dispositivos", "TabDirectPlay": "Reprodução Direta", "TabEpisodes": "Episódios", - "TabFavorites": "Favoritos", - "TabGenres": "Gêneros", - "TabGuide": "Guia", "TabLatest": "Recentes", "TabLiveTV": "TV ao Vivo", - "TabMovies": "Filmes", "TabMusic": "Música", "TabMusicVideos": "Videoclipes", "TabMyPlugins": "Meus Plugins", @@ -1201,8 +1170,6 @@ "TabSeries": "Séries", "TabServer": "Servidor", "TabSettings": "Configurações", - "TabShows": "Séries", - "TabSongs": "Músicas", "TabUpcoming": "A Seguir", "TabUsers": "Usuários", "TellUsAboutYourself": "Conte-nos sobre você", @@ -1268,7 +1235,6 @@ "Auto": "Automático", "Banner": "Cartaz", "Blacklist": "Lista negra", - "ButtonDownload": "Download", "ButtonInfo": "Informações", "ButtonTrailer": "Trailer", "ButtonWebsite": "Site", @@ -1455,7 +1421,6 @@ "New": "Novo", "HeaderFavoritePlaylists": "Playlists Favoritas", "ApiKeysCaption": "Lista de chaves API ativadas no momento", - "TabDVR": "DVR", "SaveChanges": "Salvar mudanças", "LabelRequireHttpsHelp": "Se selecionado, o servidor vai automaticamente redirecionar todas as solicitações HTTP para HTTPS. Isso não terá efeito se o servidor não estiver escutando HTTPS.", "LabelRequireHttps": "Necessita HTTPS", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 3d780043aa..2d6890ff6d 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -4,7 +4,6 @@ "AddToPlaylist": "Adicionar à lista de reprodução", "AdditionalNotificationServices": "Explore o catálogo de extensões para instalar serviços adicionais de notificação.", "All": "Todos", - "AttributeNew": "Novo", "Audio": "Áudio", "Backdrops": "Imagens de Fundo", "MessageBrowsePluginCatalog": "Procure extensões disponíveis no nosso catálogo.", @@ -12,16 +11,11 @@ "ButtonAddScheduledTaskTrigger": "Adicionar tarefa agendada", "ButtonAddServer": "Adicionar Servidor", "ButtonAddUser": "Adicionar Utilizador", - "ButtonArrowDown": "Baixo", "ButtonArrowLeft": "Esquerda", "ButtonArrowRight": "Direita", - "ButtonArrowUp": "Cima", "ButtonBack": "Voltar", "ButtonCancel": "Cancelar", "ButtonChangeServer": "Alterar Servidor", - "ButtonConnect": "Ligar", - "ButtonDelete": "Remover", - "ButtonDeleteImage": "Apagar imagem", "ButtonEdit": "Editar", "ButtonEditOtherUserPreferences": "Editar este perfil de utilizador, imagem e preferências pessoais.", "ButtonFilter": "Filtro", @@ -32,7 +26,6 @@ "ButtonManualLogin": "Início de Sessão Manual", "ButtonMore": "Mais", "ButtonNetwork": "Rede", - "ButtonNew": "Novo", "ButtonNextTrack": "Faixa seguinte", "ButtonOpen": "Abrir", "ButtonPause": "Pausar", @@ -53,11 +46,9 @@ "ButtonSelectView": "Selecionar visualização", "ButtonSend": "Enviar", "ButtonSettings": "Configurações", - "ButtonShuffle": "Aleatório", "ButtonShutdown": "Encerrar", "ButtonSignIn": "Iniciar Sessão", "ButtonSignOut": "Sair", - "ButtonSort": "Organizar", "ButtonStart": "Iniciar", "ButtonStop": "Parar", "ButtonSubmit": "Enviar", @@ -120,7 +111,6 @@ "HeaderBranding": "Marca", "HeaderCastCrew": "Elenco e Equipa", "HeaderChannelAccess": "Acesso ao Canal", - "HeaderChannels": "Canais", "HeaderCodecProfile": "Perfil do Codec", "HeaderCodecProfileHelp": "Perfis do Codec indicam as limitações de um dispositivo ao reproduzir codecs específicos. Se uma limitação ocorre, o ficheiro multimédia será transcodificado, mesmo se o codec estiver configurado para reprodução direta.", "HeaderConfirmProfileDeletion": "Confirmar Remoção do Perfil", @@ -147,7 +137,6 @@ "HeaderFetchImages": "Procurar Imagens:", "HeaderForgotPassword": "Esqueci-me da palavra-passe", "HeaderFrequentlyPlayed": "Reproduzido Frequentemente", - "HeaderGenres": "Géneros", "HeaderGuideProviders": "Provedores de Programação de TV", "HeaderHttpHeaders": "Cabeçalhos HTTP", "HeaderIdentification": "Identificação", @@ -216,7 +205,6 @@ "HeaderServerSettings": "Configurações do Servidor", "HeaderSettings": "Configurações", "HeaderSetupLibrary": "Configurar Bibliotecas Multimédia", - "HeaderShutdown": "Encerrar", "HeaderSpecialEpisodeInfo": "Informação do Episódio Especial", "HeaderSpecialFeatures": "Extras", "HeaderStatus": "Estado", @@ -238,7 +226,6 @@ "HeaderXmlDocumentAttributes": "Atributos do Documento XML", "HeaderXmlSettings": "Configurações de XML", "HeaderYears": "Anos", - "HeadersFolders": "Pastas", "Help": "Ajuda", "Identify": "Identificar", "Images": "Imagens", @@ -395,7 +382,6 @@ "LabelName": "Nome:", "LabelNewPassword": "Nova palavra-passe:", "LabelNewPasswordConfirm": "Confirmar nova palavra-passe:", - "LabelNext": "Seguinte", "LabelNotificationEnabled": "Ativar esta notificação", "LabelNumberOfGuideDays": "Número de dias de programação de TV para transferir:", "LabelNumberOfGuideDaysHelp": "Transferir mais dias de programação de TV permite agendar com maior antecedência e ver mais listagens, no entanto, irá levar mais tempo a transferir. Se selecionar Automático, será escolhido o período baseado no número de canais.", @@ -411,7 +397,6 @@ "LabelPlayDefaultAudioTrack": "Reproduzir a faixa de áudio padrão independentemente do idioma", "LabelPreferredDisplayLanguage": "Idioma de visualização preferido:", "LabelPreferredDisplayLanguageHelp": "A tradução do Jellyfin é um projeto contínuo.", - "LabelPrevious": "Anterior", "LabelProfileAudioCodecs": "Codecs do áudio:", "LabelProfileCodecsHelp": "Separados por vírgula. Pode ser deixado em branco para usar com todos os codecs.", "LabelProfileContainer": "Contentor:", @@ -424,7 +409,6 @@ "LabelPublicHttpPortHelp": "Número do porto público que deverá ser mapeado para o porto HTTP local.", "LabelPublicHttpsPort": "Número do porto público HTTPS:", "LabelPublicHttpsPortHelp": "Número do porto público que deverá ser mapeado para o porto HTTPS local.", - "LabelReadHowYouCanContribute": "Veja como pode contribuir.", "LabelRecordingPath": "Localização predefinida das gravações:", "LabelReleaseDate": "Data de lançamento:", "LabelRemoteClientBitrateLimit": "Taxa de bits máxima para transmissão para a Internet (Mbps):", @@ -667,21 +651,13 @@ "TabAccess": "Acesso", "TabAdvanced": "Avançado", "TabAlbumArtists": "Artistas do Álbum", - "TabAlbums": "Álbuns", "TabCatalog": "Catálogo", - "TabChannels": "Canais", - "TabCollections": "Coleções", "TabContainers": "Contentores", "TabDashboard": "Painel Principal", - "TabDevices": "Dispositivos", "TabDirectPlay": "Reprodução Direta", "TabEpisodes": "Episódios", - "TabFavorites": "Favoritos", - "TabGenres": "Géneros", - "TabGuide": "Programação", "TabLatest": "Mais recente", "TabLiveTV": "TV em Direto", - "TabMovies": "Filmes", "TabMusic": "Música", "TabMusicVideos": "Videoclips", "TabMyPlugins": "As Minhas Extensões", @@ -701,8 +677,6 @@ "TabSeries": "Séries", "TabServer": "Servidor", "TabSettings": "Configurações", - "TabShows": "Séries", - "TabSongs": "Músicas", "TabUpcoming": "Próximos", "TabUsers": "Utilizadores", "TellUsAboutYourself": "Fale-nos sobre si", @@ -799,7 +773,6 @@ "ButtonGuide": "Programação", "ButtonGotIt": "Entendido", "ButtonEditImages": "Editar imagens", - "ButtonDownload": "Transferir", "ButtonAudioTracks": "Faixas de Áudio", "Browse": "Procurar", "BoxRear": "Caixa (verso)", @@ -812,7 +785,6 @@ "Aired": "Estreou", "HeaderKeepRecording": "Manter Gravação", "HeaderKeepSeries": "Manter Série", - "HeaderItems": "Itens", "HeaderImageOptions": "Opções de Imagem", "HeaderHome": "Início", "HeaderForKids": "Para Crianças", @@ -837,7 +809,6 @@ "HeaderAudioBooks": "Livros de Áudio", "HeaderAllowMediaDeletionFrom": "Permitir remoção de multimédia a partir de", "HeaderAlert": "Alerta", - "HeaderAlbums": "Álbuns", "HeaderAddToPlaylist": "Adicionar à Lista de Reprodução", "HDPrograms": "Programas HD", "EncoderPresetHelp": "Escolha um valor mais rápido para melhorar o desempenho, ou um valor mais lento para melhorar a qualidade.", @@ -951,8 +922,6 @@ "LabelSelectFolderGroups": "Agrupar automaticamente o conteúdo das seguintes pastas em vistas como Filmes, Música e TV:", "HeaderUpcomingOnTV": "A Seguir", "HeaderLiveTvTunerSetup": "Configurar Sintonizador de TV", - "ButtonUp": "Para cima", - "ButtonDown": "Para baixo", "RecordSeries": "Gravar série", "LabelKeepUpTo": "Manter, no máximo:", "AroundTime": "Por volta das {0}", @@ -1042,7 +1011,6 @@ "Sports": "Desporto", "News": "Notícias", "Programs": "Programas", - "HeaderMovies": "Filmes", "Directors": "Realização", "ButtonOff": "Desligado", "ButtonAddImage": "Adicionar Imagem", @@ -1146,7 +1114,6 @@ "DetectingDevices": "A procurar dispositivos", "CopyStreamURL": "Copiar URL da transmissão", "Disc": "Disco", - "EnableBackdrops": "Imagens de Fundo", "LabelLogs": "Registos:", "LabelSortTitle": "Título para ordenação:", "HeaderFavoritePeople": "Pessoas Favoritas", @@ -1287,7 +1254,6 @@ "No": "Não", "OptionRegex": "Expressão Regular", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "NoSubtitles": "Sem legendas", "NoSubtitleSearchResultsFound": "Sem resultados.", "NoNewDevicesFound": "Não foi encontrado nenhum dispositivo novo. Para adicionar um novo sintonizador, feche este diálogo e introduza manualmente as informações do dispositivo.", "NextUp": "A Seguir", diff --git a/src/strings/pt.json b/src/strings/pt.json index 9863623dc0..324f08a064 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -36,8 +36,6 @@ "TabUsers": "Utilizadores", "TabUpcoming": "Próximos", "TabStreaming": "Transmissão", - "TabSongs": "Músicas", - "TabShows": "Séries", "TabSettings": "Configurações", "TabServer": "Servidor", "TabSeries": "Séries", @@ -57,21 +55,13 @@ "TabMyPlugins": "As Minhas Extensões", "TabMusicVideos": "Videoclips", "TabMusic": "Música", - "TabMovies": "Filmes", "TabLiveTV": "TV em Directo", "TabLatest": "Mais recente", - "TabGuide": "Programação", - "TabGenres": "Géneros", - "TabFavorites": "Favoritos", "TabEpisodes": "Episódios", "TabDirectPlay": "Reprodução Directa", - "TabDevices": "Dispositivos", "TabDashboard": "Painel Principal", "TabContainers": "Contentores", - "TabCollections": "Colecções", - "TabChannels": "Canais", "TabCatalog": "Catálogo", - "TabAlbums": "Álbuns", "TabAlbumArtists": "Artistas do Álbum", "TabAdvanced": "Avançado", "TabAccess": "Acesso", @@ -212,7 +202,6 @@ "LabelRecordingPathHelp": "Especifique a localização por omissão para guardar as gravações. Se for deixado em branco, a pasta base do servidor será utilizada.", "LabelRecordingPath": "Localização predefinida das gravações:", "LabelReasonForTranscoding": "Razão para transcodificação:", - "LabelReadHowYouCanContribute": "Veja como pode contribuir.", "LabelPublicHttpsPortHelp": "Número da porta pública que deverá ser transferida para a porta HTTPS local.", "LabelPublicHttpsPort": "Número da porta HTTPS pública:", "LabelPublicHttpPortHelp": "Número da porta pública que deverá ser transferida para a porta HTTP local.", @@ -226,7 +215,6 @@ "LabelProfileCodecsHelp": "Separados por vírgula. Pode ser deixado em branco para usar com todos os codecs.", "LabelProfileCodecs": "Codecs:", "LabelProfileAudioCodecs": "Codecs do áudio:", - "LabelPrevious": "Anterior", "LabelPreferredSubtitleLanguage": "Idioma de legendas preferido:", "LabelPreferredDisplayLanguageHelp": "A tradução do Jellyfin é um projeto contínuo.", "LabelPreferredDisplayLanguage": "Idioma de visualização preferido:", @@ -253,7 +241,6 @@ "LabelNumberOfGuideDays": "Número de dias de programação de TV para transferir:", "LabelNumber": "Número:", "LabelNotificationEnabled": "Activar esta notificação", - "LabelNext": "Seguinte", "LabelNewsCategories": "Categorias para notícias:", "LabelNewPasswordConfirm": "Confirmar nova palavra-passe:", "LabelNewPassword": "Nova palavra-passe:", @@ -478,7 +465,6 @@ "HideWatchedContentFromLatestMedia": "Ocultar os títulos já vistos do conteúdo recente", "Hide": "Esconder", "Help": "Ajuda", - "HeadersFolders": "Pastas", "HeaderYears": "Anos", "HeaderXmlSettings": "Configurações de XML", "HeaderXmlDocumentAttribute": "Atributo do Documento XML", @@ -510,7 +496,6 @@ "HeaderSpecialEpisodeInfo": "Informação do Episódio Especial", "HeaderSortOrder": "Direcção de Ordenação", "HeaderSortBy": "Ordenar Por", - "HeaderShutdown": "Encerrar", "HeaderSetupLibrary": "Configurar Bibliotecas Multimédia", "HeaderSettings": "Configurações", "HeaderServerSettings": "Configurações do Servidor", @@ -571,7 +556,6 @@ "HeaderMyDevice": "O Meu Dispositivo", "HeaderMusicVideos": "Videoclips", "HeaderMusicQuality": "Qualidade da Música", - "HeaderMovies": "Filmes", "HeaderMoreLikeThis": "Mais Como Este", "HeaderMetadataSettings": "Configurações de Metadados", "HeaderMediaInfo": "Informações Multimédia", @@ -592,7 +576,6 @@ "HeaderLatestEpisodes": "Últimos Episódios", "HeaderKeepSeries": "Manter Série", "HeaderKeepRecording": "Manter Gravação", - "HeaderItems": "Itens", "HeaderInstantMix": "Mistura instantânea", "HeaderInstall": "Instalar", "HeaderImageSettings": "Configurações de Imagem", @@ -604,7 +587,6 @@ "HeaderHttpHeaders": "Cabeçalhos HTTP", "HeaderHome": "Início", "HeaderGuideProviders": "Provedores de Programação de TV", - "HeaderGenres": "Géneros", "HeaderDeleteTaskTrigger": "Excluir Tarefa Agendada", "HeaderBranding": "Marca", "HeaderFrequentlyPlayed": "Reproduzido Frequentemente", @@ -861,7 +843,6 @@ "EnableColorCodedBackgrounds": "Código de cores para o fundo", "EnableCinemaMode": "Modo cinema", "EnableBackdropsHelp": "Mostrar imagens de fundo em algumas páginas durante a navegação pela Biblioteca.", - "EnableBackdrops": "Pano de fundo", "EditSubtitles": "Editar legendas", "EditMetadata": "Editar metadados", "EditImages": "Editar imagens", @@ -935,18 +916,15 @@ "CancelSeries": "Cancelar gravação de série", "CancelRecording": "Cancelar gravação", "ButtonWebsite": "Website", - "ButtonUp": "Para cima", "ButtonUninstall": "Desinstalar", "ButtonTrailer": "Trailer", "ButtonSubtitles": "Legendas", "ButtonSubmit": "Enviar", "ButtonStop": "Parar", "ButtonStart": "Iniciar", - "ButtonSort": "Organizar", "ButtonSignOut": "Sair", "ButtonSignIn": "Iniciar Sessão", "ButtonShutdown": "Encerrar", - "ButtonShuffle": "Aleatório", "ButtonSend": "Enviar", "ButtonSettings": "Configurações", "ButtonSelectView": "Seleccionar visualização", @@ -972,7 +950,6 @@ "ButtonOk": "OK", "ButtonOff": "Desligado", "ButtonNextTrack": "Faixa seguinte", - "ButtonNew": "Novo", "ButtonNetwork": "Rede", "ButtonMore": "Mais", "ButtonManualLogin": "Início de Sessão Manual", @@ -985,17 +962,12 @@ "ButtonEditOtherUserPreferences": "Editar este perfil de utilizador, imagem e preferências pessoais.", "ButtonEditImages": "Editar imagens", "ButtonEdit": "Editar", - "ButtonDownload": "Transferir", - "ButtonDown": "Para baixo", "Auto": "Automático", "AlwaysPlaySubtitles": "Mostrar sempre legendas", "AllowMediaConversionHelp": "Permitir ou negar acesso à funcionalidade de conversão multimédia.", "AllowMediaConversion": "Permitir conversão multimédia", "ButtonGuide": "Programação", "ButtonGotIt": "Entendido", - "ButtonDeleteImage": "Remover imagem", - "ButtonDelete": "Remover", - "ButtonConnect": "Ligar", "ButtonChangeServer": "Alterar Servidor", "ButtonCancel": "Cancelar", "ButtonBack": "Voltar", @@ -1033,10 +1005,8 @@ "LabelBitrate": "Taxa de bits:", "LabelBirthYear": "Ano de nascimento:", "ButtonAudioTracks": "Faixas de Áudio", - "ButtonArrowUp": "Cima", "ButtonArrowRight": "Direita", "ButtonArrowLeft": "Esquerda", - "ButtonArrowDown": "Baixo", "ButtonAddUser": "Adicionar Utilizador", "ButtonAddServer": "Adicionar Servidor", "ButtonAddScheduledTaskTrigger": "Adicionar tarefa agendada", @@ -1058,7 +1028,6 @@ "Backdrop": "Imagem de Fundo", "AuthProviderHelp": "Seleccione um mecanismo de autenticação a ser utilizado para validar as credenciais deste utilizador.", "Audio": "Áudio", - "AttributeNew": "Novo", "AspectRatio": "Proporção da tela", "Ascending": "Crescente", "Art": "Capa", @@ -1113,7 +1082,6 @@ "HeaderCodecProfileHelp": "Os perfis do Codec indicam as limitações de um dispositivo ao reproduzir codecs específicos. Se uma limitação ocorrer, o ficheiro multimédia será transcodificado, mesmo se o codec estiver configurado para reprodução direta.", "HeaderCodecProfile": "Perfil do Codec", "HeaderChapterImages": "Imagens do Capítulo", - "HeaderChannels": "Canais", "HeaderChannelAccess": "Acesso ao Canal", "HeaderCastCrew": "Elenco e Equipa", "HeaderCancelSeries": "Cancelar Gravação de Série", @@ -1128,7 +1096,6 @@ "HeaderApiKey": "Chave da API", "HeaderAllowMediaDeletionFrom": "Permitir remoção de multimédia a partir de", "HeaderAlert": "Alerta", - "HeaderAlbums": "Álbuns", "HeaderAlbumArtists": "Artistas do Álbum", "HeaderAdditionalParts": "Partes Adicionais", "HeaderAddUser": "Adicionar Utilizador", @@ -1203,7 +1170,6 @@ "Normal": "Normal", "None": "Nenhum", "NoSubtitlesHelp": "As legendas não serão carregadas por padrão. Eles ainda podem ser ativados manualmente durante a reprodução.", - "NoSubtitles": "Sem legendas", "NoSubtitleSearchResultsFound": "Nenhum resultado encontrado.", "NoNewDevicesFound": "Não foram encontrados novos dispositivos. Para adicionar um novo sintonizador, feche esta caixa de diálogo e insira as informações do dispositivo manualmente.", "NoCreatedLibraries": "Parece que você ainda não criou nenhuma biblioteca. {0} Deseja criar um agora? {1}", diff --git a/src/strings/ro.json b/src/strings/ro.json index a627be87fb..7fcce88aa2 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -3,12 +3,9 @@ "ButtonAddScheduledTaskTrigger": "Adaugă declanșator", "ButtonAddUser": "Adaugă Utilizator", "ButtonCancel": "Anulează", - "ButtonDelete": "Șterge", - "ButtonDeleteImage": "Șterge Imaginea", "ButtonEdit": "Modifică", "ButtonFilter": "Filtru", "ButtonManualLogin": "Conectare manuală", - "ButtonNew": "Nou", "ButtonPlay": "Redă", "ButtonQuickStartGuide": "Ghid rapid de Start", "ButtonRefresh": "Reîmprospătează", @@ -18,7 +15,6 @@ "ButtonSelectDirectory": "Selectați Director", "ButtonSignIn": "Autentificare", "ButtonSignOut": "Delogare", - "ButtonSort": "Sortează", "ChannelAccessHelp": "Selectează canalele pe care vrei să le partajezi cu acest utilizator. Administratorii vor avea posibilitatea să modifice canalele folosind managerul de metadate.", "Continuing": "Continuă", "DefaultMetadataLangaugeDescription": "Acestea sunt setările implicite și pot fi personalizate pentru fiecare bibliotecă în parte.", @@ -35,7 +31,6 @@ "HeaderActiveRecordings": "Înregistrări active", "HeaderAddScheduledTaskTrigger": "Adaugă declanșator", "HeaderAddUser": "Adaugă Utilizator", - "HeaderChannels": "Canale", "HeaderContinueWatching": "Vizionează în continuare", "HeaderDeviceAccess": "Accesul Dispozitivelor", "HeaderEasyPinCode": "Cod Pin Ușor", @@ -82,11 +77,9 @@ "LabelName": "Nume:", "LabelNewPassword": "Parola nouă:", "LabelNewPasswordConfirm": "Confirmă parola nouă:", - "LabelNext": "Următorul", "LabelNumberOfGuideDays": "Numărul de zile de ghid de descărcat:", "LabelNumberOfGuideDaysHelp": "Descărcând mai multe zile de ghid va permite să programați mai în avans și să vizualizați listările mai în viitor, dar descărcarea va dura mai mult. \"Automat\" va alege în funcție de numărul de canale.", "LabelPassword": "Parolă:", - "LabelPrevious": "Anteriorul", "LabelRecordingPath": "Calea implicită pentru înregistrări:", "LabelRecordingPathHelp": "Specificați locația implicită pentru a salva înregistrările. Dacă lasați necompletat, va fi utilizat directorul curent în care ruleză programul serverului.", "LabelSaveLocalMetadata": "Salvează posterele si metadata în dosarele ce conțin fișierele media", @@ -177,15 +170,8 @@ "TabAccess": "Acces", "TabAdvanced": "Avansat", "TabAlbumArtists": "Albume Artiști", - "TabAlbums": "Albume", - "TabChannels": "Canale", - "TabCollections": "Colecții", "TabEpisodes": "Episoade", - "TabFavorites": "Favorite", - "TabGenres": "Genuri", - "TabGuide": "Ghid", "TabLatest": "Cele mai recente", - "TabMovies": "Filme", "TabMusic": "Muzică", "TabMusicVideos": "Videoclipuri muzicale", "TabMyPlugins": "Plugin-urile mele", @@ -198,8 +184,6 @@ "TabRecordings": "Înregistrări", "TabSeries": "Seriale", "TabSettings": "Setări", - "TabShows": "Seriale", - "TabSongs": "Melodii", "TabTrailers": "Trailere", "TabUpcoming": "Urmează să apară", "TellUsAboutYourself": "Spune-ne despre tine", @@ -257,14 +241,12 @@ "Blacklist": "Lista neagră", "Books": "Cărți", "Box": "Cutie", - "AttributeNew": "Nou", "Audio": "Audio", "BoxRear": "Cutie (spate)", "Browse": "Răsfoire", "MessageBrowsePluginCatalog": "Răsfoiți catalogul de pluginuri pentru a vedea ce este disponibil.", "ButtonAddMediaLibrary": "Adaugă Librărie Media", "ButtonAddServer": "Adaugă Server", - "ButtonArrowDown": "Jos", "ButtonArrowLeft": "Stânga", "ButtonArrowRight": "Dreapta", "Disc": "Placă", @@ -298,13 +280,9 @@ "Artists": "Artiști", "BookLibraryHelp": "Cărți audio și text sunt suportate. Verifică {0} ghidul numirii cărților{1}.", "ButtonAddImage": "Adaugă Imagine", - "ButtonArrowUp": "Sus", "ButtonAudioTracks": "Cale Audio", "ButtonBack": "Înapoi", "ButtonChangeServer": "Schimbă Server", - "ButtonConnect": "Conectare", - "ButtonDown": "Jos", - "ButtonDownload": "Descarcă", "ButtonEditImages": "Modifică imaginile", "ButtonEditOtherUserPreferences": "Modifică profilul, imaginea și preferințele personale ale acestui utilizator.", "ButtonForgotPassword": "Parolă uitată", @@ -339,13 +317,11 @@ "ButtonSelectServer": "Selectați Server", "ButtonSelectView": "Selectați perspectivă", "ButtonSend": "Trimite", - "ButtonShuffle": "Amestecă", "ButtonShutdown": "Oprește", "ButtonStart": "Start", "ButtonSubtitles": "Subtitrări", "ButtonTrailer": "Trailer", "ButtonUninstall": "Dezinstalează", - "ButtonUp": "Sus", "ButtonWebsite": "Website", "CancelRecording": "Anulează înregistrarea", "CancelSeries": "Anulează serial", @@ -418,7 +394,6 @@ "HeaderFetcherSettings": "Setări Fetcher", "HeaderForKids": "Pentru Copii", "HeaderForgotPassword": "Am uitat parola", - "HeaderGenres": "Genuri", "HeaderGuideProviders": "Furnizori de date ghid TV", "HeaderHome": "Acasă", "HeaderHttpHeaders": "Anteturi HTTP", @@ -439,7 +414,6 @@ "HeaderMediaInfo": "Informații Media", "HeaderMetadataSettings": "Setări metadate", "HeaderMoreLikeThis": "Mai multe ca acesta", - "HeaderMovies": "Filme", "HeaderMusicQuality": "Calitatea muzicii", "HeaderConfirmRevokeApiKey": "Revocați cheia API", "HeaderMusicVideos": "Videoclipuri Muzicale", @@ -497,7 +471,6 @@ "HeaderAddToPlaylist": "Adauga la lista de redare", "HeaderAddUpdateImage": "Adăugați/Actualizați Imaginea", "HeaderAdditionalParts": "Părți Adiționale", - "HeaderAlbums": "Albume", "HeaderAlert": "Alertă", "HeaderAllowMediaDeletionFrom": "Permite ștergerea media din", "HeaderAppearsOn": "Apare în", @@ -511,7 +484,6 @@ "HeaderDevices": "Dispozitive", "HeaderDirectPlayProfile": "Profil de redare directă", "HeaderDirectPlayProfileHelp": "Adăugați profiluri de redare directă pentru a indica ce formate se pot gestiona în mod nativ.", - "HeaderItems": "Elemente", "HeaderKeepSeries": "Păstrează seriile", "HeaderLatestMedia": "Cele mai recente media", "HeaderLibraryOrder": "Ordinea Bibliotecii", @@ -571,7 +543,6 @@ "DropShadow": "Umbra", "EasyPasswordHelp": "Codul dvs. PIN simplu este utilizat pentru accesul offline la clienții suportați și poate fi folosit și pentru conectarea ușoară în rețea.", "EditSubtitles": "Editează subtitrări", - "EnableBackdrops": "Decoruri", "EnableBackdropsHelp": "Afișați decoruri în fundalul unor pagini în timp ce navigați în bibliotecă.", "EnableColorCodedBackgrounds": "Fundaluri codate color", "EnableDisplayMirroring": "Afișează in oglinda", @@ -609,7 +580,6 @@ "HeaderSeriesStatus": "Starea Serialelor", "HeaderServerSettings": "Setările Serverului", "HeaderSettings": "Setări", - "HeaderShutdown": "Opriți Alimentarea", "HeaderSortBy": "Sortează după", "HeaderSortOrder": "Ordinea de sortare", "LabelTranscodingThreadCount": "Numărul de threaduri ale transcodării:", @@ -671,7 +641,6 @@ "LabelRefreshMode": "Mod reîmprospătare:", "LabelRecord": "Înregistrare:", "LabelReasonForTranscoding": "Motiv pentru transcodare:", - "LabelReadHowYouCanContribute": "Aflați cum puteți contribui.", "LabelPublicHttpsPortHelp": "Numărul de port public care ar trebui mapat în portul HTTPS local.", "LabelPublicHttpsPort": "Portul HTTPS public:", "LabelPublicHttpPortHelp": "Numărul de port public care ar trebui mapat în portul HTTP local.", @@ -913,7 +882,6 @@ "Home": "Acasă", "HideWatchedContentFromLatestMedia": "Ascunde conținutul vizionat din cele mai recente media", "Hide": "Ascunde", - "HeadersFolders": "Dosare", "HeaderYears": "Ani", "HeaderXmlSettings": "XML setări", "HeaderXmlDocumentAttributes": "XML Document Atribute", @@ -980,7 +948,6 @@ "Normal": "Normal", "None": "Nici unul", "NoSubtitlesHelp": "Subtitrările nu vor fi încărcate în mod implicit. Acestea pot fi însă activate manual în timpul redării.", - "NoSubtitles": "Fără", "NoSubtitleSearchResultsFound": "Nici un rezultat găsit.", "MessageNoPluginConfiguration": "Acest plugin nu are setări de configurat.", "NoNewDevicesFound": "Nu s-au găsit dispozitive noi. Pentru a adăuga un nou tuner, închideți acest dialog și introduceți informațiile dispozitivului manual.", @@ -1399,7 +1366,6 @@ "TabLiveTV": "TV în Direct", "TabInfo": "Info", "TabDirectPlay": "Redare directă", - "TabDevices": "Dispozitive", "TabDashboard": "Tablou de bord", "TabContainers": "Containere", "TabCodecs": "Codecuri", @@ -1464,7 +1430,6 @@ "HeaderServerAddressSettings": "Setările adresei serverului", "HeaderRemoteAccessSettings": "Setări pentru aces remote", "HeaderHttpsSettings": "Setări https", - "TabDVR": "DVR", "SaveChanges": "Salvează modificările", "HeaderDVR": "DVR", "SyncPlayAccessHelp": "Selectați nivelul de acces pe care îl are acest utilizator la funcția SyncPlay. SyncPlay permite sincronizarea redării cu alte dispozitive.", diff --git a/src/strings/ru.json b/src/strings/ru.json index a35a15642d..f7ec2e0715 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -36,7 +36,6 @@ "AsManyAsPossible": "Как можно больше", "Ascending": "По возрастанию", "AspectRatio": "Соотношение сторон", - "AttributeNew": "Новинка", "Audio": "Аудио", "Auto": "Авто", "Backdrop": "Фон", @@ -57,19 +56,12 @@ "ButtonAddScheduledTaskTrigger": "Добавить триггер", "ButtonAddServer": "Добавить сервер", "ButtonAddUser": "Добавить пользователя", - "ButtonArrowDown": "Вниз", "ButtonArrowLeft": "Влево", "ButtonArrowRight": "Вправо", - "ButtonArrowUp": "Вверх", "ButtonAudioTracks": "Аудиодорожки", "ButtonBack": "Назад", "ButtonCancel": "Отменить", "ButtonChangeServer": "Сменить сервер", - "ButtonConnect": "Подсоединиться", - "ButtonDelete": "Удалить", - "ButtonDeleteImage": "Удалить изображение", - "ButtonDown": "Вниз", - "ButtonDownload": "Загрузить", "ButtonEdit": "Править", "ButtonEditImages": "Править изображения", "ButtonEditOtherUserPreferences": "Править профиль, изображение и персональные настройки этого пользователя.", @@ -84,7 +76,6 @@ "ButtonManualLogin": "Войти вручную", "ButtonMore": "Ещё", "ButtonNetwork": "Сеть", - "ButtonNew": "Новое", "ButtonNextTrack": "Следующая дорожка", "ButtonOff": "Откл", "ButtonOk": "Ок", @@ -110,11 +101,9 @@ "ButtonSelectView": "Выбрать представление", "ButtonSend": "Передать", "ButtonSettings": "Параметры", - "ButtonShuffle": "Перемешать", "ButtonShutdown": "Завершить работу", "ButtonSignIn": "Вход", "ButtonSignOut": "Выйти", - "ButtonSort": "Сортировать", "ButtonStart": "Запустить", "ButtonStop": "Остановить", "ButtonSubmit": "Подтвердить", @@ -122,7 +111,6 @@ "ButtonTogglePlaylist": "Плей-лист", "ButtonTrailer": "Трейлер", "ButtonUninstall": "Удалить", - "ButtonUp": "Вверх", "ButtonWebsite": "Веб-сайт", "CancelRecording": "Отменить запись", "CancelSeries": "Отменить сериал", @@ -195,7 +183,6 @@ "EditImages": "Править изображения", "EditMetadata": "Править метаданные", "EditSubtitles": "Править субтитры", - "EnableBackdrops": "Фоны", "EnableBackdropsHelp": "Фоны будут отображаются на заднем плане на некоторых страницах при просмотре медиатеки.", "EnableCinemaMode": "Режим кинозала", "EnableColorCodedBackgrounds": "Обозначеннные цветом фоны", @@ -276,7 +263,6 @@ "HeaderAdditionalParts": "Дополнительные части", "HeaderAdmin": "Администрирование", "HeaderAlbumArtists": "Исполнители альбома", - "HeaderAlbums": "Альбомы", "HeaderAlert": "Предупреждение", "HeaderAllowMediaDeletionFrom": "Разрешить удаление медиаданных из", "HeaderApiKey": "API-ключ", @@ -294,7 +280,6 @@ "HeaderCastAndCrew": "Снимались и снимали", "HeaderCastCrew": "Снимались и снимали", "HeaderChannelAccess": "Доступ ко каналам", - "HeaderChannels": "Каналы", "HeaderChapterImages": "Изображения сцен", "HeaderCodecProfile": "Профиль кодеков", "HeaderCodecProfileHelp": "Профили кодеков обозначают ограничения устройства при воспроизведении с определёнными кодеками. Если применяется ограничение, то медиаданные перекодируются, даже если кодек настроен для прямого воспроизведения.", @@ -336,7 +321,6 @@ "HeaderForKids": "Детям", "HeaderForgotPassword": "Забыли пароль", "HeaderFrequentlyPlayed": "Воспроизведённые часто", - "HeaderGenres": "Жанры", "HeaderGuideProviders": "Поставщики данных телегида", "HeaderHttpHeaders": "HTTP-заголовки", "HeaderIdentification": "Распознание", @@ -347,7 +331,6 @@ "HeaderImageSettings": "Настройки изображения", "HeaderInstall": "Установка", "HeaderInstantMix": "Автомикс", - "HeaderItems": "Элементы", "HeaderKeepRecording": "Хранение записи", "HeaderKeepSeries": "Хранение сериала", "HeaderKodiMetadataHelp": "Для включения или отключения NFO-метаданных, правьте медиатеку и найдите раздел хранителей метаданных.", @@ -370,7 +353,6 @@ "HeaderMediaInfo": "О медиаданных", "HeaderMetadataSettings": "Параметры метаданных", "HeaderMoreLikeThis": "Ещё подобное этому", - "HeaderMovies": "Фильмы", "HeaderMusicQuality": "Качество музыки", "HeaderMusicVideos": "Муз. видео", "HeaderMyDevice": "Моё устройство", @@ -431,7 +413,6 @@ "HeaderServerSettings": "Параметры сервера", "HeaderSettings": "Параметры", "HeaderSetupLibrary": "Установка и настройка медиатеки", - "HeaderShutdown": "Завершение работы", "HeaderSortBy": "Сортировка по", "HeaderSortOrder": "Порядок сортировки", "HeaderSpecialEpisodeInfo": "О спецэпизоде", @@ -466,7 +447,6 @@ "HeaderXmlDocumentAttributes": "Атрибуты XML-документа", "HeaderXmlSettings": "Параметры XML", "HeaderYears": "Годы", - "HeadersFolders": "Папки", "Help": "Справка...", "Hide": "Скрыть", "HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание из Новейших медиаданных", @@ -683,7 +663,6 @@ "LabelNewPassword": "Новый пароль:", "LabelNewPasswordConfirm": "Подтверждение пароля:", "LabelNewsCategories": "Новостные категории:", - "LabelNext": "Следующее", "LabelNotificationEnabled": "Включить данное уведомление", "LabelNumber": "Номер:", "LabelNumberOfGuideDays": "Число дней для загрузки данных телегида:", @@ -710,7 +689,6 @@ "LabelPreferredDisplayLanguage": "Выбор языка отображения:", "LabelPreferredDisplayLanguageHelp": "Перевод Jellyfin ведётся на постоянной основе.", "LabelPreferredSubtitleLanguage": "Выбор языка субтитров:", - "LabelPrevious": "Предыдущее", "LabelProfileAudioCodecs": "Аудиокодеки:", "LabelProfileCodecs": "Кодеки:", "LabelProfileCodecsHelp": "Разделяются запятой. Поле можно оставить незаполненным, чтобы применять для всех кодеков.", @@ -724,7 +702,6 @@ "LabelPublicHttpPortHelp": "Номер публичного порта, который сопоставляется с локальным HTTP-портом.", "LabelPublicHttpsPort": "Номер публичного HTTPS-порта:", "LabelPublicHttpsPortHelp": "Номер публичного порта, который сопоставляется с локальным HTTPS-портом.", - "LabelReadHowYouCanContribute": "Как вносить свой вклад.", "LabelReasonForTranscoding": "Причина перекодирования:", "LabelRecord": "Запись:", "LabelRecordingPath": "Стандартный путь для записей:", @@ -934,7 +911,6 @@ "MessageNoNextUpItems": "Ничего не найдено. Начните смотреть свои ТВ-передачи!", "MessageNoPluginConfiguration": "В данном плагине нет параметров конфигурирования.", "NoSubtitleSearchResultsFound": "Результатов не найдено.", - "NoSubtitles": "Ничего", "NoSubtitlesHelp": "По умолчанию, субтитры не будут загружаться. Они могут быть все ещё включены вручную во время воспроизведения.", "None": "Ничего", "Normal": "Обычный", @@ -1219,24 +1195,16 @@ "TabAccess": "Доступ", "TabAdvanced": "Расширенное", "TabAlbumArtists": "Исполнители альбома", - "TabAlbums": "Альбомы", "TabCatalog": "Каталог", - "TabChannels": "Каналы", "TabCodecs": "Кодеки", - "TabCollections": "Коллекции", "TabContainers": "Контейнеры", "TabDashboard": "Панель", - "TabDevices": "Устройства", "TabDirectPlay": "Прямое воспроизведение", "TabEpisodes": "Эпизоды", - "TabFavorites": "Избранное", - "TabGenres": "Жанры", - "TabGuide": "Телегид", "TabInfo": "Инфо", "TabLatest": "Новейшее", "TabLiveTV": "Эфир", "TabLogs": "Журналы", - "TabMovies": "Фильмы", "TabMusic": "Музыка", "TabMusicVideos": "Муз. видео", "TabMyPlugins": "Мои плагины", @@ -1257,8 +1225,6 @@ "TabSeries": "Сериалы", "TabServer": "Сервер", "TabSettings": "Параметры", - "TabShows": "Сериалы", - "TabSongs": "Треки", "TabStreaming": "Трансляция", "TabTrailers": "Трейлеры", "TabUpcoming": "Ожидаемое", @@ -1457,7 +1423,6 @@ "LabelRequireHttpsHelp": "Если этот флажок установлен, сервер будет автоматически перенаправлять все запросы через HTTP на HTTPS. Это не имеет никакого эффекта, если сервер не слушает HTTPS.", "LabelEnableHttpsHelp": "Прослушивается указанный HTTPS-порт. Чтобы это вступило в силу, также необходимо предоставить действительный сертификат.", "ApiKeysCaption": "Список действующих текущих API-ключей", - "TabDVR": "DVR", "SaveChanges": "Сохранить изменения", "LabelRequireHttps": "Требуется HTTPS", "LabelStable": "Стабильная", diff --git a/src/strings/sk.json b/src/strings/sk.json index fe95801700..d8572ca1b2 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -19,7 +19,6 @@ "AsManyAsPossible": "Najviac ako je možné", "Ascending": "Vzostupne", "AspectRatio": "Pomer strán", - "AttributeNew": "Nové", "Backdrops": "Pozadia", "BirthDateValue": "Narodený/á: {0}", "BirthLocation": "Miesto narodenia", @@ -30,19 +29,12 @@ "ButtonAddScheduledTaskTrigger": "Pridať spúšťač", "ButtonAddServer": "Pridať server", "ButtonAddUser": "Pridať používateľa", - "ButtonArrowDown": "Dole", "ButtonArrowLeft": "Vľavo", "ButtonArrowRight": "Vpravo", - "ButtonArrowUp": "Hore", "ButtonAudioTracks": "Audio stopy", "ButtonBack": "Späť", "ButtonCancel": "Zrušiť", "ButtonChangeServer": "Zmeniť server", - "ButtonConnect": "Pripojiť", - "ButtonDelete": "Zmazať", - "ButtonDeleteImage": "Zmazať obrázok", - "ButtonDown": "Dole", - "ButtonDownload": "Stiahnuť", "ButtonEdit": "Upraviť", "ButtonEditImages": "Upraviť obrázky", "ButtonEditOtherUserPreferences": "Upraviť používateľský profil, obrázok a osobné preferencie.", @@ -53,7 +45,6 @@ "ButtonManualLogin": "Manuálne prihlásenie", "ButtonMore": "Viac", "ButtonNetwork": "Sieť", - "ButtonNew": "Nové", "ButtonNextTrack": "Nasledujúca stopa", "ButtonOpen": "Otvoriť", "ButtonParentalControl": "Rodičovská kontrola", @@ -75,16 +66,13 @@ "ButtonSelectServer": "Vybrať server", "ButtonSend": "Odoslať", "ButtonSettings": "Nastavenia", - "ButtonShuffle": "Zamiešať", "ButtonShutdown": "Vypnúť", "ButtonSignIn": "Prihlásiť sa", "ButtonSignOut": "Odhlásiť sa", - "ButtonSort": "Zoradiť", "ButtonSubmit": "Potvrdiť", "ButtonSubtitles": "Titulky", "ButtonTrailer": "Trailer", "ButtonUninstall": "Odinštalovať", - "ButtonUp": "Hore", "ButtonWebsite": "Webové stránky", "Categories": "Kategórie", "ChannelAccessHelp": "Zvoľte kanály zdieľané s týmto používateľom. Administrátori budú schopní upraviť všetky kanály použitím správcu metadát.", @@ -170,14 +158,12 @@ "HeaderAddToCollection": "Pridať do kolekcie", "HeaderAddUpdateImage": "Pridať/aktualizovať obrázok", "HeaderAddUser": "Pridať používateľa", - "HeaderAlbums": "Albumy", "HeaderApiKey": "Kľúč API", "HeaderApiKeys": "Kľúče API", "HeaderAudioBooks": "Audio knihy", "HeaderAudioSettings": "Nastavenia zvuku", "HeaderBooks": "Knihy", "HeaderCastAndCrew": "Obsadenie a štáb", - "HeaderChannels": "Kanály", "HeaderChapterImages": "Obrázky kapitol", "HeaderConfigureRemoteAccess": "Nastaviť vzdialený prístup", "HeaderConfirmPluginInstallation": "Potvrdiť inštaláciu zásuvných modulov", @@ -202,7 +188,6 @@ "HeaderForKids": "Pre deti", "HeaderForgotPassword": "Zabudnuté heslo", "HeaderFrequentlyPlayed": "Často hrané", - "HeaderGenres": "Žánre", "HeaderHttpHeaders": "HTTP hlavičky", "HeaderIdentification": "Identifikácia", "HeaderIdentificationCriteriaHelp": "Zadajte aspoň jedno identifikačné kritérium.", @@ -210,7 +195,6 @@ "HeaderImageSettings": "Nastavenia obrázkov", "HeaderInstall": "Inštalovať", "HeaderInstantMix": "Okamžitý mix", - "HeaderItems": "Položky", "HeaderLatestEpisodes": "Najnovšie epizódy", "HeaderLatestMedia": "Najnovšie médiá", "HeaderLatestMovies": "Najnovšie filmy", @@ -227,7 +211,6 @@ "HeaderMediaInfo": "Informácie o médiu", "HeaderMetadataSettings": "Nastavenia metadát", "HeaderMoreLikeThis": "Podobné položky", - "HeaderMovies": "Filmy", "HeaderMusicQuality": "Kvalita hudby", "HeaderMusicVideos": "Hudobné videá", "HeaderMyDevice": "Moje zariadenie", @@ -267,7 +250,6 @@ "HeaderServerSettings": "Nastavenia servera", "HeaderSettings": "Nastavenia", "HeaderSetupLibrary": "Nastavte Vaše knižnice médií", - "HeaderShutdown": "Vypnúť", "HeaderSortBy": "Zoradiť podľa", "HeaderStartNow": "Začať teraz", "HeaderStopRecording": "Zastaviť nahrávanie", @@ -287,7 +269,6 @@ "HeaderVideos": "Videá", "HeaderXmlSettings": "Nastavenia XML", "HeaderYears": "Roky", - "HeadersFolders": "Priečinky", "Help": "Pomoc", "Hide": "Skryť", "Home": "Domov", @@ -408,7 +389,6 @@ "LabelNewPassword": "Nové heslo:", "LabelNewPasswordConfirm": "Potvrdenie nového hesla:", "LabelNewsCategories": "Kategórie správ:", - "LabelNext": "Ďalej", "LabelNotificationEnabled": "Povoliť toto hlásenie", "LabelNumber": "Číslo:", "LabelOptionalNetworkPath": "Zdieľaný sieťový priečinok:", @@ -425,7 +405,6 @@ "LabelPlayDefaultAudioTrack": "Prehrať predvolenú zvukovú stopu bez ohľadu na jazyk", "LabelPreferredDisplayLanguage": "Preferovaný jazyk:", "LabelPreferredSubtitleLanguage": "Preferovaný jazyk titulkov:", - "LabelPrevious": "Predchádzajúce", "LabelProfileAudioCodecs": "Audio kodeky:", "LabelProfileCodecs": "Kodeky:", "LabelProfileContainer": "Kontajner:", @@ -434,7 +413,6 @@ "LabelProtocolInfo": "Info o protokole:", "LabelPublicHttpPort": "Verejný HTTP port:", "LabelPublicHttpsPort": "Verejný HTTPS port:", - "LabelReadHowYouCanContribute": "Zistite, ako môžete prispieť.", "LabelRecordingPath": "Predvolené umiestnenie nahrávok:", "LabelRecordingPathHelp": "Uveďte predvolené umiestnenie pre ukladanie nahrávok. Ak je ponechané prázdne, použije sa priečinok s programovými dátami servera.", "LabelReleaseDate": "Dátum vydania:", @@ -561,7 +539,6 @@ "MessageNoNextUpItems": "Nič nenájdené. Začnite pozerať vaše seriály!", "MessageNoPluginConfiguration": "Tento zásuvný modul nemá žiadne nastavenia.", "NoSubtitleSearchResultsFound": "Žiadne výsledky.", - "NoSubtitles": "Žiadne", "None": "Žiadne", "Normal": "Normálne", "NumLocationsValue": "{0} priečinkov", @@ -753,21 +730,13 @@ "Sunday": "Nedeľa", "TabAccess": "Prístup", "TabAdvanced": "Pokročilé", - "TabAlbums": "Albumy", "TabCatalog": "Katalóg", - "TabChannels": "Kanály", "TabCodecs": "Kodeky", - "TabCollections": "Kolekcie", "TabContainers": "Kontajnery", "TabDashboard": "Dashboard", - "TabDevices": "Zariadenia", "TabEpisodes": "Epizódy", - "TabFavorites": "Obľúbené", - "TabGenres": "Žánre", - "TabGuide": "Sprievodca", "TabLatest": "Najnovšie", "TabLiveTV": "Živá TV", - "TabMovies": "Filmy", "TabMusic": "Hudba", "TabMusicVideos": "Hudobné videá", "TabMyPlugins": "Moje zásuvné moduly", @@ -786,8 +755,6 @@ "TabScheduledTasks": "Naplánované úlohy", "TabSeries": "Seriály", "TabSettings": "Nastavenia", - "TabShows": "Seriály", - "TabSongs": "Skladby", "TabTrailers": "Trailery", "TabUpcoming": "Nadchádzajúce", "TabUsers": "Užívatelia", @@ -858,7 +825,6 @@ "DirectPlaying": "Priame prehrávanie", "Disabled": "Vypnuté", "Display": "Zobrazenie", - "EnableBackdrops": "Pozadia", "EnableDisplayMirroring": "Zrkadlenie obrazu", "Ended": "Ukončený", "FileReadCancelled": "Čítanie súboru bolo zrušené.", @@ -1457,7 +1423,6 @@ "ApiKeysCaption": "Zoznam v súčasnosti povolených API kľúčov", "LabelStable": "Stabilná", "LabelChromecastVersion": "Chromecast verzia", - "TabDVR": "DVR", "LabelRequireHttpsHelp": "Pokiaľ je zaškrtnutý, server bude automaticky presmerovávať všetky HTTP požiadavky cez HTTPS. Toto nastavenie nemá žiadny efekt, pokiaľ server nepočúva na HTTPS.", "LabelRequireHttps": "Vyžadovať HTTPS", "LabelEnableHttpsHelp": "Počúvanie na nastavenom HTTPS porte. K správnemu fungovaniu je nutné nakonfigurovať aj platný certifikát.", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 6524841c3e..22d0d60317 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -1,6 +1,5 @@ { "ButtonAddUser": "Dodaj Uporabnika", - "ButtonDeleteImage": "Izbrisi sliko", "ButtonQuickStartGuide": "Vodnik za hiter zacetek", "ButtonResetPassword": "Ponastavitev gesla", "ButtonSignOut": "Odjava", @@ -22,8 +21,6 @@ "LabelLanguage": "Jezik:", "LabelNewPassword": "Novo geslo:", "LabelNewPasswordConfirm": "Potrditev novega gesla:", - "LabelNext": "Naprej", - "LabelPrevious": "Nazaj", "LabelSelectUsers": "Izberi uporabnike:", "LabelTimeLimitHours": "Časovna omejitev (ure):", "LabelYoureDone": "Koncano!", @@ -44,7 +41,6 @@ "TabAccess": "Dostop", "TabAlbumArtists": "Izvajalci Albumov", "TabCatalog": "Katalog", - "TabGenres": "Zvrsti", "TabLatest": "Zadnje", "TabMusic": "Glasba", "TabMyPlugins": "Moji dodatki", @@ -52,7 +48,6 @@ "TabPassword": "Geslo", "TabProfile": "Profil", "TabProfiles": "Profili", - "TabShows": "Oddaje", "TabUpcoming": "Prihajajoče", "TellUsAboutYourself": "Povej nam nekaj o sebi", "ThisWizardWillGuideYou": "Čarovnik vas bo vodil skozi postopek namestitve. Za začetek, izberite jezik.", @@ -105,7 +100,6 @@ "AsManyAsPossible": "Kolikor je mogoče", "Ascending": "Naraščajoče", "AspectRatio": "Razmerje stranic", - "AttributeNew": "Novo", "Audio": "Zvok", "Auto": "Samodejno", "Backdrop": "Ozadje", @@ -129,18 +123,12 @@ "ButtonAddMediaLibrary": "Dodaj knjižnico predstavnosti", "ButtonAddScheduledTaskTrigger": "Dodaj sprožilec", "ButtonAddServer": "Dodaj strežnik", - "ButtonArrowDown": "Dol", "ButtonArrowLeft": "Levo", "ButtonArrowRight": "Desno", - "ButtonArrowUp": "Gor", "ButtonAudioTracks": "Zvočna sled", "ButtonBack": "Nazaj", "ButtonCancel": "Prekliči", "ButtonChangeServer": "Spremeni strežnik", - "ButtonConnect": "Poveži", - "ButtonDelete": "Izbriši", - "ButtonDown": "Dol", - "ButtonDownload": "Prenesi", "ButtonEdit": "Uredi", "ButtonEditImages": "Uredi slike", "ButtonEditOtherUserPreferences": "Uredi profil tega uporabnika, slike in osebne nastavitve.", @@ -155,7 +143,6 @@ "ButtonManualLogin": "Ročna prijava", "ButtonMore": "Več", "ButtonNetwork": "Omrežje", - "ButtonNew": "Novo", "ButtonNextTrack": "Naslednja skladba", "ButtonOff": "Izključi", "ButtonOk": "Ok", @@ -179,16 +166,13 @@ "ButtonSelectView": "Izberi pogled", "ButtonSend": "Pošlji", "ButtonSettings": "Nastavitve", - "ButtonShuffle": "Premešaj", "ButtonShutdown": "Ugasni", "ButtonSignIn": "Prijava", - "ButtonSort": "Razvrsti", "ButtonStart": "Začetek", "ButtonStop": "Stop", "ButtonSubtitles": "Podnapisi", "ButtonTrailer": "Napovednik", "ButtonUninstall": "Odstrani", - "ButtonUp": "Gor", "ButtonWebsite": "Spletna stran", "CancelRecording": "Prekini snemanje", "CancelSeries": "Prekini serijo", @@ -313,7 +297,6 @@ "HeaderMyDevice": "Moja naprava", "HeaderMusicVideos": "Videospoti", "HeaderMusicQuality": "Kvaliteta glasbe", - "HeaderMovies": "Filmi", "HeaderMoreLikeThis": "Podobno", "HeaderMetadataSettings": "Nastavitve metapodatkov", "HeaderMediaInfo": "Informacije o predstavnosti", @@ -343,7 +326,6 @@ "HeaderIdentification": "Identifikacija", "HeaderHome": "Domov", "HeaderGuideProviders": "Ponudniki TV vodiča", - "HeaderGenres": "Žanri", "HeaderForgotPassword": "Pozabljeno geslo", "HeaderForKids": "Za otroke", "HeaderFetcherSettings": "Nastavitve pridobivanja", @@ -381,7 +363,6 @@ "HeaderCodecProfileHelp": "Profili kodeka določajo omejitve naprave pri predvajanju specifičnih kodekov. Če je omejitev dosežena bo predstavnost prekodirana, tudi če je kodek nastavljen za neposredno predvajanje.", "HeaderCodecProfile": "Profil kodeka", "HeaderChapterImages": "Slike poglavij", - "HeaderChannels": "Kanali", "HeaderChannelAccess": "Dostop kanalov", "HeaderCastCrew": "Igralci in ekipa", "HeaderCastAndCrew": "Igralci in ekipa", @@ -397,7 +378,6 @@ "HeaderApiKey": "API ključ", "HeaderAllowMediaDeletionFrom": "Dovoli brisanje predstavnosti iz", "HeaderAlert": "Alarm", - "HeaderAlbums": "Albumi", "HeaderAdmin": "Administrator", "HeaderAdditionalParts": "Dodatni deli", "HeaderAddUpdateImage": "Dodaj/posodobi sliko", @@ -473,7 +453,6 @@ "EnableColorCodedBackgrounds": "Barvno usklajena ozadja", "EnableCinemaMode": "Kino način", "EnableBackdropsHelp": "Prikaži ozadja na nekaterih straneh med brskanjem knjižnice.", - "EnableBackdrops": "Ozadja", "EasyPasswordHelp": "Vaša enostavna PIN koda je uporabna za dostop brez povezave na podprtih napravah in za enostavno prijavo v lokalnem omrežju.", "Images": "Slike", "Identify": "Identificiraj", @@ -483,7 +462,6 @@ "HideWatchedContentFromLatestMedia": "Skrij ogledane vsebine iz razdelka Najnovejša predstavnost", "Hide": "Skrij", "Help": "Pomoč", - "HeadersFolders": "Mape", "HeaderYears": "Leta", "HeaderXmlSettings": "Xml nastavitve", "HeaderXmlDocumentAttributes": "Xml lastnosti dokumenta", @@ -520,7 +498,6 @@ "HeaderSpecialEpisodeInfo": "Informacije o posebni epizodi", "HeaderSortOrder": "Vrstni red", "HeaderSortBy": "Razvrsti po", - "HeaderShutdown": "Ugasni", "HeaderSetupLibrary": "Nastavite vaše knjižnjice predstavnosti", "HeaderServerSettings": "Nastavitve strežnika", "HeaderSeriesStatus": "Status serije", @@ -730,7 +707,6 @@ "LabelMoviePrefixHelp": "Če naslovi filmov vsebujejo predpono, jo vnesite tukaj da jo lahko strežnik pravilno obdela.", "LabelNewName": "Novo ime:", "Raised": "Dvignjeni", - "TabCollections": "Zbirke", "Small": "Majhno", "SmartSubtitlesHelp": "Podnapisi, ki se ujemajo z želenim jezikom, bodo naloženi, ko je zvok v tujem jeziku.", "SubtitleAppearanceSettingsDisclaimer": "Te nastavitve ne vplivajo na grafične podnapise (PGS, DVD, itd.) ali ASS/SSA podnapise, ki imajo vdelan svoj lasten slog.", @@ -745,7 +721,6 @@ "LabelDropShadow": "Senca:", "LabelHomeScreenSectionValue": "Razdelek domačega zaslona {0}:", "LabelPreferredSubtitleLanguage": "Prednostni jezik podnapisov:", - "NoSubtitles": "Nič", "OnlyImageFormats": "Samo slikovni formati (VOBSUB, PGS, SUB)", "OnlyForcedSubtitles": "Samo prisiljeni", "OptionAllowAudioPlaybackTranscoding": "Dovoli predvajanje zvoka, ki zahteva prekodiranje", @@ -1077,7 +1052,6 @@ "LabelRecordingPath": "Privzeta pot posnetkov:", "LabelRecord": "Snemaj:", "LabelReasonForTranscoding": "Razlog za prekodiranje:", - "LabelReadHowYouCanContribute": "Naučite se, kako lahko prispevate.", "LabelPublicHttpsPortHelp": "Številka javnih vrat ki bodo povezana na lokalna HTTPS vrata.", "LabelPublicHttpsPort": "Številka javnih HTTPS vrat:", "LabelPublicHttpPortHelp": "Številka javnih vrat ki bodo povezana na lokalna HTTP vrata.", @@ -1230,7 +1204,6 @@ "HeaderRemoteAccessSettings": "Nastavitve oddaljenega dostopa", "HeaderOtherItems": "Ostale vsebine", "HeaderNavigation": "Navigacija", - "HeaderItems": "Vsebine", "EnableDecodingColorDepth10Vp9": "Omogoči strojno dekodiranje za 10-bit VP9", "EnableDecodingColorDepth10Hevc": "Omogoči strojno dekodiranje za 10-bit HEVC", "LabelEnableHttpsHelp": "Poslušaj na nastavljenih HTTPS vratih. Za uveljavitev te možnosti mora biti nastavljen tudi veljaven certifikat.", @@ -1331,19 +1304,14 @@ "LabelLineup": "Postava:", "BoxSet": "Komplet", "TabInfo": "Informacije", - "TabGuide": "Vodič", - "TabFavorites": "Priljubljeni", "TabEpisodes": "Epizode", "TabDirectPlay": "Neposredno predvajanje", - "TabDevices": "Naprave", "TabCodecs": "Kodeki", - "TabChannels": "Programi", "OptionRegex": "Regex", "OptionProtocolHls": "HTTP pretakanje v živo", "OptionProfileVideoAudio": "Video zvok", "ThemeSongs": "Glavne pesmi", "TabStreaming": "Pretakanje", - "TabSongs": "Skladbe", "TabSettings": "Nastavitve", "TabServer": "Strežnik", "TabSeries": "Serije", @@ -1360,7 +1328,6 @@ "TabNotifications": "Obvestila", "TabNfoSettings": "Nastavitve NFO", "TabMusicVideos": "Videospoti", - "TabMovies": "Filmi", "OptionForceRemoteSourceTranscoding": "Vsili prekodiranje oddaljenih virov predstavnosti (na primer TV v živo)", "Off": "Izključeno", "Normal": "Normalno", @@ -1429,6 +1396,5 @@ "SubtitleOffset": "Zamik podnapisev", "Subtitles": "Podnapisi", "Sunday": "Nedelja", - "TabAdvanced": "Napredno", - "TabAlbums": "Albumi" + "TabAdvanced": "Napredno" } diff --git a/src/strings/sr.json b/src/strings/sr.json index 810fa44141..c302c0a580 100644 --- a/src/strings/sr.json +++ b/src/strings/sr.json @@ -36,7 +36,6 @@ "ButtonOk": "Ок", "ButtonOff": "Искључи", "ButtonNextTrack": "Следећа нумера", - "ButtonNew": "Ново", "ButtonNetwork": "Мрежа", "ButtonMore": "Више", "ButtonManualLogin": "Ручни логин", @@ -48,19 +47,12 @@ "ButtonFullscreen": "Пун екран", "ButtonForgotPassword": "Заборављена шифра", "ButtonFilter": "Филтер", - "ButtonDownload": "Преузми", - "ButtonDown": "Доле", - "ButtonDeleteImage": "Обриши слику", - "ButtonDelete": "Обриши", - "ButtonConnect": "Повежи се", "ButtonChangeServer": "Промени Сервер", "ButtonCancel": "Откажи", "ButtonBack": "Назад", "ButtonAudioTracks": "Избор језика звука", - "ButtonArrowUp": "Горе", "ButtonArrowRight": "Десно", "ButtonArrowLeft": "Лево", - "ButtonArrowDown": "Доле", "ButtonAddUser": "Додај корисника", "ButtonAddServer": "Додај сервер", "ButtonAddScheduledTaskTrigger": "Додај прекидач", @@ -75,7 +67,6 @@ "BirthLocation": "Место рођења", "BirthDateValue": "Рођен", "Audio": "Звук", - "AttributeNew": "Ново", "AroundTime": "Около", "AnyLanguage": "Било који језик", "AlwaysPlaySubtitles": "Увек налепи титлове", @@ -124,7 +115,6 @@ "CancelSeries": "Откажи серију", "CancelRecording": "Откажи снимање", "ButtonWebsite": "Веб сајт", - "ButtonUp": "Горе", "ButtonUninstall": "Деинсталирај", "ButtonTrailer": "Трејлер", "ButtonSubtitles": "Титлови", @@ -132,11 +122,9 @@ "ButtonSplit": "Подели", "ButtonStop": "Заустави", "ButtonStart": "Почни", - "ButtonSort": "Сортирај", "ButtonSignOut": "Одјавите се", "ButtonSignIn": "Пријавите се", "ButtonShutdown": "Искључи", - "ButtonShuffle": "Промешај", "ButtonSettings": "Подешавања", "ButtonSend": "Пошаљи", "ButtonSelectView": "Изаберите приказ", diff --git a/src/strings/sv.json b/src/strings/sv.json index 23c68d9e84..604179f9f6 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -30,7 +30,6 @@ "Artists": "Artister", "AsManyAsPossible": "Så många som möjligt", "AspectRatio": "Bildförhållande", - "AttributeNew": "Ny", "Audio": "Ljud", "Backdrop": "Fondbild", "Backdrops": "Fondbilder", @@ -49,19 +48,12 @@ "ButtonAddScheduledTaskTrigger": "Lägg till utlösare", "ButtonAddServer": "Lägg till server", "ButtonAddUser": "Ny användare", - "ButtonArrowDown": "Ned", "ButtonArrowLeft": "Vänster", "ButtonArrowRight": "Höger", - "ButtonArrowUp": "Upp", "ButtonAudioTracks": "Ljudspår", "ButtonBack": "Föregående", "ButtonCancel": "Avbryt", "ButtonChangeServer": "Byt server", - "ButtonConnect": "Anslut", - "ButtonDelete": "Ta bort", - "ButtonDeleteImage": "Ta bort bild", - "ButtonDown": "Ner", - "ButtonDownload": "Ladda ned", "ButtonEdit": "Ändra", "ButtonEditImages": "Ändra bilder", "ButtonEditOtherUserPreferences": "Ändra den här användarens profil, bild och personliga inställningar.", @@ -74,7 +66,6 @@ "ButtonManualLogin": "Manuell inloggning", "ButtonMore": "Mer", "ButtonNetwork": "Nätverk", - "ButtonNew": "Nytillkommet", "ButtonNextTrack": "Nästa spår", "ButtonOff": "Av", "ButtonOk": "OK", @@ -100,16 +91,13 @@ "ButtonSelectView": "Välj vy", "ButtonSend": "Skicka", "ButtonSettings": "Inställningar", - "ButtonShuffle": "Blanda", "ButtonShutdown": "Stäng av", "ButtonSignIn": "Logga in", "ButtonSignOut": "Logga ut", - "ButtonSort": "Sortera", "ButtonStop": "Stopp", "ButtonSubmit": "Bekräfta", "ButtonSubtitles": "Undertexter", "ButtonUninstall": "Avinstallera", - "ButtonUp": "Upp", "ButtonWebsite": "Hemsida", "CancelRecording": "Avbryt inspelning", "CancelSeries": "Avbryt serie", @@ -176,7 +164,6 @@ "EditImages": "Ändra bilder", "EditMetadata": "Redigera metadata", "EditSubtitles": "Ändra undertexter", - "EnableBackdrops": "Fondbilder", "EnableBackdropsHelp": "Visar fondbilder i bakgrunden av vissa sidor vid bläddring i biblioteket.", "EnableCinemaMode": "Bioläge", "EnableColorCodedBackgrounds": "Färgkodade bakgrundsbilder", @@ -246,7 +233,6 @@ "HeaderAddUser": "Lägg till användare", "HeaderAdditionalParts": "Ytterligare delar", "HeaderAlbumArtists": "Albumartister", - "HeaderAlbums": "Album", "HeaderAlert": "Varning", "HeaderAllowMediaDeletionFrom": "Tillåt mediaborttagning från", "HeaderApiKey": "API-nyckel", @@ -261,7 +247,6 @@ "HeaderCastAndCrew": "Medverkande", "HeaderCastCrew": "Rollista & besättning", "HeaderChannelAccess": "Kanalåtkomst", - "HeaderChannels": "Kanaler", "HeaderChapterImages": "Kapitelbilder", "HeaderCodecProfile": "Profil för videokodning", "HeaderCodecProfileHelp": "Avkodarprofiler bestämmer begränsningarna hos en enhet när den spelar upp olika kodningstyper. Om en begränsning är aktuell kommer innehållet att kodas om, även om kodningstypen sig är inställd för direkt avspelning.", @@ -302,7 +287,6 @@ "HeaderForKids": "För barn", "HeaderForgotPassword": "Glömt Lösenord", "HeaderFrequentlyPlayed": "Ofta spelade", - "HeaderGenres": "Genrer", "HeaderGuideProviders": "Källor för programguide", "HeaderHttpHeaders": "HTTP headers", "HeaderIdentification": "Identifiering", @@ -312,7 +296,6 @@ "HeaderImageSettings": "Bildinställningar", "HeaderInstall": "Installera", "HeaderInstantMix": "Direktmix", - "HeaderItems": "Objekt", "HeaderKeepRecording": "Fortsätt spela in", "HeaderKeepSeries": "Behåll serie", "HeaderKodiMetadataHelp": "Jellyfin har stöd för NFO-metadatafiler. För att aktivera eller inaktivera NFO-metadata, använd Metadata-fliken för att konfigurera NFO-stöd för dina mediatyper.", @@ -333,7 +316,6 @@ "HeaderMediaInfo": "Medieinformation", "HeaderMetadataSettings": "Metadatainställningar", "HeaderMoreLikeThis": "Mer som denna", - "HeaderMovies": "Filmer", "HeaderMusicQuality": "Musikkvalitet", "HeaderMusicVideos": "Musikvideor", "HeaderMyDevice": "Min enhet", @@ -393,7 +375,6 @@ "HeaderServerSettings": "Serverinställningar", "HeaderSettings": "Inställningar", "HeaderSetupLibrary": "Sätt upp dina mediabibliotek", - "HeaderShutdown": "Stäng av", "HeaderSortBy": "Sortera efter", "HeaderSortOrder": "Sortering", "HeaderSpecialEpisodeInfo": "Information om specialavsnitt", @@ -424,7 +405,6 @@ "HeaderXmlDocumentAttributes": "XML-dokumentattribut", "HeaderXmlSettings": "XML-inställningar", "HeaderYears": "År", - "HeadersFolders": "Mappar", "Help": "Hjälp", "Hide": "Dölj", "HideWatchedContentFromLatestMedia": "Dölj visat innehåll ifrån senaste media", @@ -635,7 +615,6 @@ "LabelNewPassword": "Nytt lösenord:", "LabelNewPasswordConfirm": "Bekräfta nytt lösenord:", "LabelNewsCategories": "Nyhetskategorier:", - "LabelNext": "Nästa", "LabelNotificationEnabled": "Aktivera denna meddelandetyp", "LabelNumber": "Nr:", "LabelNumberOfGuideDays": "Antal dagars tablå att hämta:", @@ -659,7 +638,6 @@ "LabelPreferredDisplayLanguage": "Föredraget visningsspråk:", "LabelPreferredDisplayLanguageHelp": "Att översätta Jellyfin är ett pågående projekt.", "LabelPreferredSubtitleLanguage": "Önskat språk för undertexter:", - "LabelPrevious": "Föregående", "LabelProfileAudioCodecs": "Kodning av ljud:", "LabelProfileCodecs": "Videokodningar:", "LabelProfileCodecsHelp": "Åtskilda med kommatecken, detta kan lämnas tomt för att gälla för alla kodningsformat.", @@ -673,7 +651,6 @@ "LabelPublicHttpPortHelp": "Det publika portnumret som ska mappas till den lokala porten för HTTP.", "LabelPublicHttpsPort": "Publikt portnummer för HTTPS:", "LabelPublicHttpsPortHelp": "Det publika portnumret som ska mappas till den lokala porten för HTTPS.", - "LabelReadHowYouCanContribute": "Se hur du kan hjälpa till.", "LabelReasonForTranscoding": "Orsak för omkodning:", "LabelRecord": "Spela in:", "LabelRecordingPath": "Standard inspelningssökväg:", @@ -866,7 +843,6 @@ "MessageNoNextUpItems": "Hittade inget. Sätt igång och titta!", "MessageNoPluginConfiguration": "Detta tillägg har inga inställningar att konfigurera.", "NoSubtitleSearchResultsFound": "Inga resultat hittades.", - "NoSubtitles": "Inga", "NoSubtitlesHelp": "Undertexter kommer inte visas per standard. Det kan fortfarande sättas på manuellt under uppspelning.", "None": "Inga", "NumLocationsValue": "{0} mappar", @@ -1128,23 +1104,15 @@ "SystemDlnaProfilesHelp": "Systemprofiler är skrivskyddade. Ändringar av en systemprofil resulterar att en ny anpassad profil skapas.", "TabAdvanced": "Avancerat", "TabAlbumArtists": "Albumartister", - "TabAlbums": "Album", "TabCatalog": "Katalog", - "TabChannels": "Kanaler", "TabCodecs": "Kodningsformat", - "TabCollections": "Samlingar", "TabContainers": "Behållare", "TabDashboard": "Kontrollpanel", - "TabDevices": "Enheter", "TabDirectPlay": "Direktuppspelning", "TabEpisodes": "Avsnitt", - "TabFavorites": "Favoriter", - "TabGenres": "Genrer", - "TabGuide": "TV-guide", "TabLatest": "Nytillkommet", "TabLiveTV": "Live-TV", "TabLogs": "Loggfiler", - "TabMovies": "Filmer", "TabMusic": "Musik", "TabMusicVideos": "Musikvideor", "TabMyPlugins": "Mina tillägg", @@ -1164,8 +1132,6 @@ "TabScheduledTasks": "Schemalagda aktiviteter", "TabSeries": "Serie", "TabSettings": "Inställningar", - "TabShows": "Serier", - "TabSongs": "Låtar", "TabStreaming": "Strömning", "TabUpcoming": "Kommande", "TabUsers": "Användare", @@ -1455,7 +1421,6 @@ "LabelLibraryPageSizeHelp": "Sätter en begränsad sidstorlek i bibliotek. Sätt 0 för att avaktivera begränsad sidstorlek.", "ApiKeysCaption": "Lista av aktiva API-nycklar", "DeinterlaceMethodHelp": "Välj metod för borttagning av inflätning vid konvertering av inflätat inehåll.", - "TabDVR": "PVR", "SaveChanges": "Spara ändringar", "LabelRequireHttps": "Kräv HTTPS", "LabelChromecastVersion": "Chromecast-version", diff --git a/src/strings/tr.json b/src/strings/tr.json index 80098c3222..ba47bd7f6b 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -4,20 +4,16 @@ "AllLibraries": "Bütün kütüphaneler", "AllowRemoteAccess": "Bu Jellyfin sunucusuna uzaktan bağlanmaya izin ver.", "AllowRemoteAccessHelp": "Eğer işaretlenmemişse, bütün uzak bağlantılar bloke edilicek.", - "AttributeNew": "Yeni", "MessageBrowsePluginCatalog": "Mevcut eklentileri görebilmek için eklenti katologuna göz atın.", "ButtonAddUser": "Kullanıcı Ekle", "ButtonArrowRight": "Sağ", "ButtonBack": "Geri", "ButtonCancel": "İptal", - "ButtonDelete": "Sil", - "ButtonDeleteImage": "Resmi Sil", "ButtonEdit": "Düzenle", "ButtonFilter": "Filtrele", "ButtonHome": "Anasayfa", "ButtonInfo": "Bilgi", "ButtonManualLogin": "Manuel Giriş", - "ButtonNew": "Yeni", "ButtonOk": "Tamam", "ButtonPause": "Duraklat", "ButtonPlay": "Oynat", @@ -31,7 +27,6 @@ "ButtonSettings": "Ayarlar", "ButtonSignIn": "Giriş Yapın", "ButtonSignOut": "Çıkış Yap", - "ButtonSort": "Sırala", "ButtonStop": "Durdur", "ButtonSubtitles": "Altyazılar", "ChannelAccessHelp": "Bu kullanıcıyla paylaşmak üzere kanalları seç. Yöneticiler bütün kanalları metada yöneticisi ile düzenleyebilecekler.", @@ -54,7 +49,6 @@ "Friday": "Cuma", "HeaderActiveRecordings": "Aktif Kayıtlar", "HeaderAddUser": "Kullanıcı Ekle", - "HeaderChannels": "Kanallar", "HeaderCodecProfile": "Codec Profili", "HeaderContinueWatching": "İzlemeye Devam Et", "HeaderCustomDlnaProfiles": "Özel Profiller", @@ -106,9 +100,7 @@ "LabelName": "İsim:", "LabelNewPassword": "Yeni şifre:", "LabelNewPasswordConfirm": "Yeni şifreyi onayla:", - "LabelNext": "Sonraki", "LabelPassword": "Şifre:", - "LabelPrevious": "Önceki", "LabelProfileAudioCodecs": "Ses Codec:", "LabelProfileCodecs": "Codecler:", "LabelProfileVideoCodecs": "Video Codec:", @@ -201,17 +193,11 @@ "TabAccess": "Erişim", "TabAdvanced": "Gelişmiş", "TabAlbumArtists": "Albüm Sanatçıları", - "TabAlbums": "Albümler", "TabCatalog": "Katalog", - "TabChannels": "Kanallar", "TabCodecs": "Codecler", "TabEpisodes": "Bölümler", - "TabFavorites": "Favoriler", - "TabGenres": "Türler", - "TabGuide": "Kılavuz", "TabInfo": "Bilgi", "TabLatest": "En yeni", - "TabMovies": "Filmler", "TabMusic": "Muzik", "TabMusicVideos": "Klipler", "TabMyPlugins": "Eklentilerim", @@ -224,8 +210,6 @@ "TabSeries": "Seriler", "TabServer": "Sunucu", "TabSettings": "Ayarlar", - "TabShows": "Diziler", - "TabSongs": "Şarkılar", "TabTrailers": "Fragmanlar", "TabUpcoming": "Gelecek", "TellUsAboutYourself": "Kendinizden bahsedin", @@ -277,7 +261,6 @@ "AllowMediaConversion": "Medya dönüşümüne izin ver", "AllowHWTranscodingHelp": "Ayarlayıcının anında akışları dönüştürmesine izin verin. Bu, sunucunun gerektirdiği kodlamanın azaltılmasına yardımcı olabilir.", "ColorSpace": "Renk uzayı", - "ButtonConnect": "Bağlan", "ColorTransfer": "Renk transferi", "ButtonPreviousTrack": "Önceki parça", "ButtonProfile": "Profil", @@ -324,20 +307,15 @@ "ButtonGotIt": "Anlaşıldı", "ButtonMore": "Dahası", "ButtonOpen": "Aç", - "ButtonArrowUp": "Yukarı", "ButtonNetwork": "Ağ", - "ButtonDownload": "İndir", "ButtonNextTrack": "Sonraki parça", "ButtonOff": "Kapalı", "ButtonParentalControl": "Ebeveyn Kontrolü", - "ButtonArrowDown": "Aşağı", "ButtonArrowLeft": "Sol", - "ButtonDown": "Aşağı", "ButtonGuide": "Rehber", "ButtonLibraryAccess": "Kütüphane erişimi", "ButtonScanAllLibraries": "Tüm Kütüphaneleri Tara", "ButtonSelectView": "Görünüm seç", - "ButtonShuffle": "Karıştır", "ButtonShutdown": "Kapat", "ChannelNameOnly": "Yalnızca {0} kanalı", "ConfirmDeleteItems": "Bu öğeleri silmek, onları hem dosya sisteminden hem de medya kitaplığınızdan siler. Devam etmek istediğinize emin misiniz?", @@ -349,7 +327,6 @@ "Display": "Görüntüle", "DisplayInMyMedia": "Ana ekranda görüntüleme", "DisplayInOtherHomeScreenSections": "En son medya gibi ana ekran bölümlerinde görüntüleyin ve izlemeye devam edin", - "EnableBackdrops": "Arka planında", "BurnSubtitlesHelp": "Sunucunun video işlendiği esnada, altyazının görüntüye gömülmesini sağlar. Performansı çok düşürür, zorunda kalmadıkça bu özelliği seçmeyin. Görüntü tabanlı biçimleri (VOBSUB, PGS, SUB / IDX, vb.) Ve bazı ASS / SSA altyazıların görüntüye gömülmesi için Otomatik'i seçin.", "ConfirmDeleteItem": "Bu öğeyi silmek, onu hem dosya sisteminden hem de medya kütüphanenizden siler. Devam etmek istediğinize emin misiniz?", "ValueSpecialEpisodeName": "Özel - {0}", @@ -389,7 +366,6 @@ "CancelRecording": "Kayıttan Vazgeç", "CancelSeries": "Dizileri iptal et", "ButtonUninstall": "Kaldır", - "ButtonUp": "Yukarı", "ButtonWebsite": "Website", "Categories": "Kategoriler", "DrmChannelsNotImported": "DRM'li kanallar içe aktarılmayacak.", @@ -423,7 +399,6 @@ "EnableCinemaMode": "Sinema Modu", "EnableColorCodedBackgrounds": "Renk kodlu arka planlar", "HeaderGuideProviders": "TV Rehberi Veri Sağlayıcıları", - "HeaderGenres": "Türler", "HeaderForgotPassword": "Parolanızı mı unuttunuz", "HeaderForKids": "Çocuklar için", "HeaderFetcherSettings": "Alıcı Ayarları", @@ -479,7 +454,6 @@ "HeaderApiKey": "API Anahtarı", "HeaderAllowMediaDeletionFrom": "Medyadan Silinmeye İzin Ver", "HeaderAlert": "Alarm", - "HeaderAlbums": "Albümler", "HeaderAdmin": "Yönetici", "HeaderAdditionalParts": "İlave parçalar", "HeaderAddUpdateImage": "Resim Ekle / Güncelle", @@ -575,7 +549,6 @@ "HeaderMyMedia": "Benim Medyam", "HeaderMyDevice": "Benim Cihazım", "HeaderMusicQuality": "Müzik Kalitesi", - "HeaderMovies": "Filmler", "HeaderMoreLikeThis": "Buna Benzer Daha Fazla", "HeaderMetadataSettings": "Meta Verisi Ayarları", "HeaderMediaInfo": "Medya Bilgisi", @@ -590,7 +563,6 @@ "HeaderLatestMusic": "Son Müzik", "HeaderKeepSeries": "Seriyi Sakla", "HeaderKeepRecording": "Kaydı Sakla", - "HeaderItems": "Öğeler", "HeaderInstall": "Yükle", "HeaderImageOptions": "Resim Seçenekleri", "HeaderIdentifyItemHelp": "Bir veya daha fazla arama kriteri giriniz. Faha fazla arama sonucu için kriter kaldırın.", @@ -645,7 +617,6 @@ "Identify": "Tanımla", "Horizontal": "Yatay", "Help": "Yardım", - "HeadersFolders": "Klasörler", "HeaderYears": "Yıl", "HeaderXmlSettings": "Xml Ayarları", "HeaderXmlDocumentAttributes": "Xml Döküman Öznitelikleri", @@ -665,7 +636,6 @@ "HeaderSpecialEpisodeInfo": "Özel Bölüm Bilgisi", "HeaderSortOrder": "Sıralama Düzeni", "HeaderSortBy": "Sırala", - "HeaderShutdown": "Kapat", "HeaderSettings": "Ayarlar", "LabelLogs": "Günlük:", "HeaderSelectMetadataPathHelp": "İçinde meta veri depolamak istediğiniz yola göz atın veya bu yolu girin. Klasörün yazılabilir olması gerekir.", diff --git a/src/strings/uk.json b/src/strings/uk.json index a1100e1e69..329f0ca95c 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -4,7 +4,6 @@ "ButtonAddUser": "Додати користувача", "ButtonCancel": "Скасувати", "ButtonFilter": "Фільтр", - "ButtonNew": "Нове", "ButtonRename": "Перейменувати", "ButtonResetPassword": "Скинути пароль", "ButtonSignOut": "Вийти", @@ -15,14 +14,12 @@ "FolderTypeMovies": "Фільми", "FolderTypeMusic": "Музика", "FolderTypeTvShows": "ТБ", - "HeaderAlbums": "Альбоми", "HeaderBooks": "Книги", "HeaderDeleteDevice": "Видалить пристрій", "HeaderLatestEpisodes": "Нещодавно переглянуті серії", "HeaderLatestMedia": "Нещодавно переглянуті", "HeaderLatestMovies": "Нещодавні фільми", "HeaderLatestMusic": "Остання музика", - "HeaderMovies": "Фільми", "HeaderSeasons": "Сезони", "HeaderSeries": "Series", "HeaderSettings": "Налаштування", @@ -35,9 +32,7 @@ "LabelDeathDate": "Дата смерті:", "LabelLanguage": "Мова:", "LabelNewPassword": "Новий пароль:", - "LabelNext": "Вперед", "LabelPath": "Шлях:", - "LabelPrevious": "Назад", "Like": "Подобається", "MediaInfoAspectRatio": "Співвідношення сторін", "MediaInfoChannels": "Канали", @@ -62,10 +57,7 @@ "ParentalRating": "Parental Rating", "Save": "Зберігти", "Settings": "Налаштування", - "TabCollections": "Колекції", "TabEpisodes": "Епізоди", - "TabGenres": "Жанри", - "TabMovies": "Фільми", "TabNetworks": "Мережі", "TabNotifications": "Повідомлення", "TabPassword": "Пароль", @@ -143,7 +135,6 @@ "Auto": "Автоматично", "AuthProviderHelp": "Оберіть сервіс аутентифікації, який буде використаний для автентифікації пароля даного користувача.", "Audio": "Аудіо", - "AttributeNew": "Новий", "AspectRatio": "Співвідношення сторін", "AskAdminToCreateLibrary": "Попросіть адміністратора створити медіатеку.", "Ascending": "У порядку зростання", @@ -191,7 +182,6 @@ "CancelSeries": "Скасувати серіал", "CancelRecording": "Скасувати запис", "ButtonWebsite": "Веб-сайт", - "ButtonUp": "Вгору", "ButtonUninstall": "Видалити", "ButtonTrailer": "Трейлер", "ButtonTogglePlaylist": "Плейлист", @@ -200,10 +190,8 @@ "ButtonSplit": "Розділити", "ButtonStop": "Зупинити", "ButtonStart": "Почати", - "ButtonSort": "Сортувати", "ButtonSignIn": "Вхід", "ButtonShutdown": "Завершити роботу", - "ButtonShuffle": "Перемішати", "ButtonSettings": "Налаштування", "ButtonSend": "Надіслати", "ButtonSelectView": "Вибрати вигляд", @@ -240,18 +228,11 @@ "ButtonEditOtherUserPreferences": "Редагувати профіль, зображення та особисті налаштування даного користувача.", "ButtonEditImages": "Редагувати зображення", "ButtonEdit": "Редагувати", - "ButtonDownload": "Завантажити", - "ButtonDown": "Вниз", - "ButtonDeleteImage": "Видалити зображення", - "ButtonDelete": "Видалити", - "ButtonConnect": "Підключитись", "ButtonChangeServer": "Змінити сервер", "ButtonBack": "Назад", "ButtonAudioTracks": "Аудіозаписи", - "ButtonArrowUp": "Вниз", "ButtonArrowRight": "Вправо", "ButtonArrowLeft": "Вліво", - "ButtonArrowDown": "Вниз", "ButtonAddServer": "Додати сервер", "ButtonAddScheduledTaskTrigger": "Додати тригер", "ButtonAddMediaLibrary": "Додати медіатеку", diff --git a/src/strings/vi.json b/src/strings/vi.json index 431644be16..438dfe4632 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -4,13 +4,10 @@ "MessageBrowsePluginCatalog": "Duyệt qua các danh mục plugin của chúng tôi để xem các plugin có sẵn.", "ButtonAddUser": "Thêm người dùng", "ButtonCancel": "Thoát", - "ButtonDeleteImage": "Xóa hình ảnh", - "ButtonNew": "Mới", "ButtonRemove": "Gỡ bỏ", "ButtonResetPassword": "Reset mật khẩu", "ButtonSelectDirectory": "Lựa chọn trực tiếp", "ButtonSignOut": "Sign out", - "ButtonSort": "Phân loại", "Delete": "Xóa", "DeleteImage": "Xóa hình ảnh", "DeleteImageConfirmation": "Bạn có chắc muốn xóa hình ảnh này?", @@ -41,8 +38,6 @@ "LabelName": "Tên:", "LabelNewPassword": "Mật khẩu mới:", "LabelNewPasswordConfirm": "Xác nhận mật khẩu mới:", - "LabelNext": "Tiếp theo", - "LabelPrevious": "Trước", "LabelSaveLocalMetadata": "Lưu các ảnh nghệ thuật và metadata vào trong các thư mục media", "LabelSaveLocalMetadataHelp": "Lưu các ảnh nghệ thuật và metadata vào trong các thư mục media, sẽ đưa chúng vào một nơi bạn có thể chỉnh sửa dễ dàng hơn.", "LabelTime": "Thời gian:", @@ -89,12 +84,9 @@ "SettingsSaved": "Lưu các cài đặt.", "Sunday": "Chủ Nhật", "TabAlbumArtists": "Các Album nghệ sỹ", - "TabAlbums": "Các Album", "TabCatalog": "Danh mục", "TabEpisodes": "Các tập phim", - "TabGenres": "Các thể loại", "TabLatest": "Mới nhất", - "TabMovies": "Các phim", "TabMusicVideos": "Các video âm nhạc", "TabMyPlugins": "Các plugin của tôi", "TabNetworks": "Các mạng", @@ -102,7 +94,6 @@ "TabProfile": "Hồ sơ", "TabProfiles": "Hồ sơ", "TabServer": "Máy chủ", - "TabSongs": "Các ca khúc", "TabUpcoming": "Sắp diễn ra", "TellUsAboutYourself": "Nói cho chúng tôi biết đôi điều về Bạn", "ThisWizardWillGuideYou": "Thủ thuật này sẽ hướng dẫn quá trình cài đặt cho bạn. Để bắt đầu, vui lòng lựa chọn ngôn ngữ bạn ưa thích.", @@ -141,17 +132,11 @@ "ButtonEditOtherUserPreferences": "Chỉnh sửa thông tin, hình ảnh và sở thích cá nhân.", "ButtonEditImages": "Sửa hình ảnh", "ButtonEdit": "Sửa", - "ButtonDownload": "Tải", - "ButtonDown": "Xuống", - "ButtonDelete": "Xoá", - "ButtonConnect": "Kết nối", "ButtonChangeServer": "Đổi máy chủ", "ButtonBack": "Lùi", "ButtonAudioTracks": "Track âm thanh", - "ButtonArrowUp": "Lên", "ButtonArrowRight": "Phải", "ButtonArrowLeft": "Trái", - "ButtonArrowDown": "Xuống", "ButtonAddServer": "Thêm máy chủ", "ButtonAddScheduledTaskTrigger": "Thêm kích hoạt", "ButtonAddMediaLibrary": "Thêm thư viện Media", @@ -170,7 +155,6 @@ "Auto": "Tự động", "AuthProviderHelp": "Chọn Nhà cung cấp xác thực sẽ được sử dụng để xác thực mật khẩu người dùng này.", "Audio": "Âm thanh", - "AttributeNew": "Tạo mới", "AspectRatio": "Tỷ lệ khung hình", "AskAdminToCreateLibrary": "Yêu cầu quản trị viên tạo thư viện.", "Ascending": "Tăng dần", @@ -208,11 +192,9 @@ "ButtonSelectServer": "Chọn máy chủ", "ButtonScanAllLibraries": "Quét tất cả các thư viện", "ButtonOk": "Đồng Ý", - "ButtonShuffle": "Xáo trộn", "Categories": "Phân loại", "CancelRecording": "Ngưng ghi hình", "ButtonWebsite": "Trang web", - "ButtonUp": "Lên", "ButtonUninstall": "Gỡ cài đặt", "ButtonTrailer": "Tóm tắt", "ButtonSubtitles": "Phụ đề", @@ -297,7 +279,6 @@ "DoNotRecord": "Không ghi lại", "EnableCinemaMode": "Chế độ rạp phim", "EnableBackdropsHelp": "Hiển thị phông nền phía sau một số trang khi xem thư viện.", - "EnableBackdrops": "Phông nền", "EditSubtitles": "Chỉnh sửa phụ đề", "EditMetadata": "Chỉnh sửa thông tin", "EditImages": "Chỉnh sửa hình ảnh", @@ -321,7 +302,6 @@ "HeaderConfigureRemoteAccess": "Thiết Lập Truy Cập Từ Xa", "HeaderCodecProfile": "Bộ Giải Mã", "HeaderChapterImages": "Hình Ảnh Phân Đoạn", - "HeaderChannels": "Kênh", "HeaderChannelAccess": "Quyền Truy Cập Kênh", "HeaderCastCrew": "Diễn Viên & Ê-kíp", "HeaderCastAndCrew": "Diễn Viên & Ê-kíp", @@ -339,7 +319,6 @@ "HeaderApiKey": "API Key", "HeaderAllowMediaDeletionFrom": "Cho Phép Xoá Nội Dung", "HeaderAlert": "Thông Báo", - "HeaderAlbums": "Albums", "HeaderAlbumArtists": "Nghệ Sĩ Album", "HeaderAdmin": "Quản Trị", "HeaderAdditionalParts": "Phần Bổ Sung", @@ -443,7 +422,6 @@ "HeaderMyDevice": "Thiết Bị Của Tôi", "HeaderMusicVideos": "Video Âm Nhạc", "HeaderMusicQuality": "Chất Lượng Âm Nhạc", - "HeaderMovies": "Phim", "HeaderMoreLikeThis": "Nội Dung Tương Tự", "HeaderMetadataSettings": "Cài Đặt Dữ Liệu Bổ Trợ", "HeaderMediaInfo": "Thông Tin Nội Dung", @@ -464,7 +442,6 @@ "HeaderKodiMetadataHelp": "Để bật hoặc tắt dữ liệu từ NFO, hãy chỉnh sửa thư viện trong phần cài đặt thư viện của Jellyfin và điều chỉnh phần lưu trữ dữ liệu bổ trợ.", "HeaderKeepSeries": "Lưu Series", "HeaderKeepRecording": "Tiếp Tục Ghi Âm/Ghi Hình", - "HeaderItems": "Mục", "HeaderInstantMix": "Trộn Lẫn Nhanh", "HeaderInstall": "Cài Đặt", "HeaderImageSettings": "Thiết Lập Hình Ảnh", @@ -476,7 +453,6 @@ "HeaderHttpHeaders": "HTTP Headers", "HeaderHome": "Trang Chủ", "HeaderGuideProviders": "Nhà Cung Cấp Lịch Phát Sóng TV", - "HeaderGenres": "Thể Loại", "HeaderForgotPassword": "Quên Mật Khẩu", "HeaderForKids": "Dành Cho Trẻ Em", "HeaderFetcherSettings": "Cài Đặt Chương Trình Tải Xuống", @@ -554,7 +530,6 @@ "HeaderStopRecording": "Ngừng Ghi Hình/Ghi Âm", "HeaderSpecialFeatures": "Những Phần Đặc Biệt Nổi Bật", "HeaderSpecialEpisodeInfo": "Thông Tin Tập Đặc Biệt", - "HeaderShutdown": "Tắt Máy Chủ", "LabelCustomDeviceDisplayNameHelp": "Cung cấp một tên hiển thị riêng hoặc bỏ trống để sử dụng tên có sẵn của thiết bị.", "LabelCustomDeviceDisplayName": "Tên hiển thị:", "LabelCustomCssHelp": "Áp dụng tuỳ chỉnh riêng của bạn vào giao diện trang web.", @@ -630,7 +605,6 @@ "HideWatchedContentFromLatestMedia": "Ẩn những nội dung đã xem khỏi phần nội dung mới nhất", "Hide": "Ẩn", "Help": "Trợ Giúp", - "HeadersFolders": "Thư Mục", "HeaderYears": "Năm", "HeaderXmlSettings": "Cài Đặt XML", "HeaderXmlDocumentAttributes": "Những Thuộc Tính Tài Liệu XML", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index ec3af3ea13..9de331b018 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -32,7 +32,6 @@ "Artists": "艺术家", "AsManyAsPossible": "尽可能多", "Ascending": "升序", - "AttributeNew": "新增", "Audio": "音频", "Auto": "自动", "Backdrop": "背景", @@ -51,19 +50,12 @@ "ButtonAddScheduledTaskTrigger": "添加触发器", "ButtonAddServer": "添加服务器", "ButtonAddUser": "添加用户", - "ButtonArrowDown": "下", "ButtonArrowLeft": "左", "ButtonArrowRight": "右", - "ButtonArrowUp": "上", "ButtonAudioTracks": "音轨", "ButtonBack": "返回", "ButtonCancel": "取消", "ButtonChangeServer": "更改服务器", - "ButtonConnect": "连接", - "ButtonDelete": "删除", - "ButtonDeleteImage": "删除图片", - "ButtonDown": "下", - "ButtonDownload": "下载", "ButtonEdit": "编辑", "ButtonEditImages": "修改图片", "ButtonEditOtherUserPreferences": "编辑这个用户的用户配置,图片和个人参数。", @@ -78,7 +70,6 @@ "ButtonManualLogin": "手动登录", "ButtonMore": "更多", "ButtonNetwork": "网络", - "ButtonNew": "新增", "ButtonNextTrack": "下一音轨", "ButtonOff": "关", "ButtonOk": "确定", @@ -104,18 +95,15 @@ "ButtonSelectView": "选择视图", "ButtonSend": "发送", "ButtonSettings": "设置", - "ButtonShuffle": "随机播放", "ButtonShutdown": "关机", "ButtonSignIn": "登录", "ButtonSignOut": "退出", - "ButtonSort": "排序", "ButtonStart": "开始", "ButtonStop": "停止", "ButtonSubmit": "提交", "ButtonSubtitles": "字幕", "ButtonTrailer": "预告片", "ButtonUninstall": "卸载", - "ButtonUp": "上", "ButtonWebsite": "网站", "CancelRecording": "取消录制", "CancelSeries": "取消系列", @@ -177,7 +165,6 @@ "EditImages": "修改图片", "EditMetadata": "编辑元数据", "EditSubtitles": "修改字幕", - "EnableBackdrops": "背景图", "EnableBackdropsHelp": "当浏览媒体库时背景图将作为一些页面的背景显示。", "EnableCinemaMode": "影院模式", "EnableDisplayMirroring": "显示镜像", @@ -251,7 +238,6 @@ "HeaderAdditionalParts": "附加部分", "HeaderAdmin": "管理", "HeaderAlbumArtists": "专辑作家", - "HeaderAlbums": "专辑", "HeaderAlert": "警报", "HeaderAllowMediaDeletionFrom": "允许从中删除媒体", "HeaderApiKey": "API 密钥", @@ -265,7 +251,6 @@ "HeaderCastAndCrew": "演员表", "HeaderCastCrew": "演职人员", "HeaderChannelAccess": "频道访问", - "HeaderChannels": "频道", "HeaderChapterImages": "剧集图片", "HeaderCodecProfile": "编解码器配置", "HeaderCodecProfileHelp": "编解码器的配置文件标明了设备播放特定编码时的限制。如果在限制之内则媒体将被转码,否则编解码器将被配置为直接播放。", @@ -307,7 +292,6 @@ "HeaderForKids": "给儿童", "HeaderForgotPassword": "忘记密码", "HeaderFrequentlyPlayed": "多次播放", - "HeaderGenres": "风格", "HeaderGuideProviders": "电视指南数据提供方", "HeaderHttpHeaders": "HTTP 头部", "HeaderIdentification": "身份识别", @@ -318,7 +302,6 @@ "HeaderImageSettings": "图片设置", "HeaderInstall": "安装", "HeaderInstantMix": "速成合辑", - "HeaderItems": "项目", "HeaderKodiMetadataHelp": "要启用或禁用 NFO 元数据, 请编辑库, 然后找到“元数据储户”部分。", "HeaderLatestEpisodes": "最新剧集", "HeaderLatestMedia": "最新媒体", @@ -339,7 +322,6 @@ "HeaderMediaInfo": "媒体信息", "HeaderMetadataSettings": "元数据设置", "HeaderMoreLikeThis": "更多类似的", - "HeaderMovies": "电影", "HeaderMusicVideos": "音乐视频", "HeaderMyDevice": "我的设备", "HeaderMyMedia": "我的媒体", @@ -395,7 +377,6 @@ "HeaderServerSettings": "服务器设置", "HeaderSettings": "设置", "HeaderSetupLibrary": "设置你的媒体库", - "HeaderShutdown": "关机", "HeaderSortBy": "排序方式", "HeaderSortOrder": "排序顺序", "HeaderSpecialEpisodeInfo": "特别剧集信息", @@ -428,7 +409,6 @@ "HeaderXmlDocumentAttributes": "XML文档属性", "HeaderXmlSettings": "XML设置", "HeaderYears": "年份", - "HeadersFolders": "文件夹", "Help": "帮助", "Hide": "隐藏", "HideWatchedContentFromLatestMedia": "从最新媒体中隐藏已观看的内容", @@ -644,7 +624,6 @@ "LabelNewPassword": "新密码:", "LabelNewPasswordConfirm": "新密码确认:", "LabelNewsCategories": "新分类:", - "LabelNext": "下一个", "LabelNotificationEnabled": "启用此通知", "LabelNumber": "编号:", "LabelNumberOfGuideDays": "下载几天的节目指南:", @@ -671,7 +650,6 @@ "LabelPreferredDisplayLanguage": "首选显示语言:", "LabelPreferredDisplayLanguageHelp": "Jellyfin的翻译工作是一个不断推进的工程项目。", "LabelPreferredSubtitleLanguage": "字幕语言偏好:", - "LabelPrevious": "上一个", "LabelProfileAudioCodecs": "音频编解码器:", "LabelProfileCodecs": "编解码器:", "LabelProfileCodecsHelp": "以逗号分隔。留空则适用于所有编解码器。", @@ -685,7 +663,6 @@ "LabelPublicHttpPortHelp": "映射到本地 HTTP 端口的公开端口号。", "LabelPublicHttpsPort": "公开 HTTPS 端口号:", "LabelPublicHttpsPortHelp": "映射到本地 HTTPS 端口的公开端口号。", - "LabelReadHowYouCanContribute": "了解如何做出贡献。", "LabelReasonForTranscoding": "转码原因:", "LabelRecord": "录制:", "LabelRecordingPath": "默认录制路径:", @@ -888,7 +865,6 @@ "MessageNoNextUpItems": "没有发现。开始看你的节目!", "MessageNoPluginConfiguration": "此插件没有配置选项。", "NoSubtitleSearchResultsFound": "未找到结果。", - "NoSubtitles": "无字幕", "NoSubtitlesHelp": "字幕将默认不被加载,但你仍然可以在播放时手动打开字幕。", "None": "无", "Normal": "普通", @@ -1156,24 +1132,16 @@ "TabAccess": "访问", "TabAdvanced": "高级", "TabAlbumArtists": "专辑艺术家", - "TabAlbums": "专辑", "TabCatalog": "目录", - "TabChannels": "频道", "TabCodecs": "编解码器", - "TabCollections": "收藏", "TabContainers": "媒体载体", "TabDashboard": "控制台", - "TabDevices": "设备", "TabDirectPlay": "直接播放", "TabEpisodes": "剧集", - "TabFavorites": "我的最爱", - "TabGenres": "风格", - "TabGuide": "指南", "TabInfo": "信息", "TabLatest": "最新", "TabLiveTV": "电视直播", "TabLogs": "日志", - "TabMovies": "电影", "TabMusic": "音乐", "TabMusicVideos": "音乐视频", "TabMyPlugins": "我的插件", @@ -1194,8 +1162,6 @@ "TabSeries": "电视剧", "TabServer": "服务器", "TabSettings": "设置", - "TabShows": "节目", - "TabSongs": "歌曲", "TabStreaming": "流媒体传输", "TabTrailers": "预告片", "TabUpcoming": "即将发布", @@ -1458,7 +1424,6 @@ "HeaderRemoteAccessSettings": "远程访问设置", "HeaderHttpsSettings": "HTTPS 设置", "ApiKeysCaption": "当前启用的 API 密钥", - "TabDVR": "DVR", "SaveChanges": "保存更改", "LabelRequireHttpsHelp": "开启后服务器将自动将所有 HTTP 请求重定向到 HTTPS。如果服务器没有启用 HTTPS 则不生效。", "LabelRequireHttps": "强制 HTTPS", diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index b8f48d474c..454bbea0c2 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -3,12 +3,9 @@ "ButtonAddScheduledTaskTrigger": "新增觸發點", "ButtonAddUser": "添加用戶", "ButtonCancel": "取消", - "ButtonDelete": "删除", - "ButtonDeleteImage": "刪除圖像", "ButtonEdit": "編輯", "ButtonFilter": "過濾", "ButtonManualLogin": "手動登入", - "ButtonNew": "新增", "ButtonOk": "確定", "ButtonPlay": "播放", "ButtonQuickStartGuide": "快速入門指南", @@ -21,7 +18,6 @@ "ButtonSelectDirectory": "選擇目錄", "ButtonSignIn": "登入", "ButtonSignOut": "登出", - "ButtonSort": "排序", "ButtonSubmit": "提交", "ButtonSubtitles": "字幕", "ChannelAccessHelp": "選擇此用戶共享頻道。管理員將能夠使用資料管理器而編輯所有文件夾。", @@ -47,7 +43,6 @@ "HeaderBooks": "書籍", "HeaderBranding": "界面", "HeaderCastCrew": "演員陣容", - "HeaderChannels": "頻道", "HeaderCustomDlnaProfiles": "自定配置", "HeaderDeviceAccess": "允許裝置通行", "HeaderDevices": "裝置", @@ -141,19 +136,16 @@ "LabelName": "名稱:", "LabelNewPassword": "新密碼:", "LabelNewPasswordConfirm": "新密碼確認:", - "LabelNext": "下一個", "LabelNumberOfGuideDays": "下載電視指南日數", "LabelNumberOfGuideDaysHelp": "下載更多電視指南資料會提供更好時間表查看能力,但將需要更長的下載時間。自動基於頻道數目來選擇。", "LabelPassword": "密碼:", "LabelPath": "路徑:", "LabelPreferredDisplayLanguage": "首選語言:", "LabelPreferredDisplayLanguageHelp": "翻譯 Jellyfin 是一個進行中的項目。", - "LabelPrevious": "前一個", "LabelPublicHttpPort": "公共 http 連接埠號碼:", "LabelPublicHttpPortHelp": "公共連接埠號碼應映射到本地 http 連接埠。", "LabelPublicHttpsPort": "公共 https 連接埠號碼:", "LabelPublicHttpsPortHelp": "公共連接埠號碼應映射到本地 https 連接埠。", - "LabelReadHowYouCanContribute": "了解如何作出貢獻。", "LabelSaveLocalMetadata": "儲存媒體圖片和資料屬性到媒體所屬的文件夾", "LabelSaveLocalMetadataHelp": "直接儲存媒體圖片和資料到媒體文件夾,讓編輯工作更容易。", "LabelSelectUsers": "選擇用戶:", @@ -276,19 +268,11 @@ "TabAccess": "可以通行", "TabAdvanced": "進階", "TabAlbumArtists": "唱片歌手", - "TabAlbums": "專輯", "TabCatalog": "目錄", - "TabChannels": "頻道", - "TabCollections": "藏品", "TabDashboard": "狀態", - "TabDevices": "裝置", "TabEpisodes": "劇集", - "TabFavorites": "我的最受", - "TabGenres": "風格", - "TabGuide": "指南", "TabInfo": "資訊", "TabLatest": "最新", - "TabMovies": "電影", "TabMusic": "音樂", "TabMusicVideos": "MV", "TabMyPlugins": "我的插件", @@ -302,8 +286,6 @@ "TabSeries": "電視劇", "TabServer": "伺服器", "TabSettings": "設定", - "TabShows": "節目", - "TabSongs": "歌曲", "TabTrailers": "預告", "TabUpcoming": "即將發佈", "TabUsers": "用戶", @@ -357,7 +339,6 @@ "Albums": "專輯", "Absolute": "絕對", "AuthProviderHelp": "選擇用於驗證該用戶密碼的身份驗證提供程序。", - "AttributeNew": "新", "AspectRatio": "長寬比", "AskAdminToCreateLibrary": "要求管理員創建一個庫。", "Ascending": "上升", @@ -449,15 +430,11 @@ "ButtonForgotPassword": "忘記密碼", "ButtonEditOtherUserPreferences": "更改用戶個人檔案,圖片及個人偏好。", "ButtonEditImages": "更改圖片", - "ButtonDownload": "下載", - "ButtonConnect": "連接", "ButtonChangeServer": "更換伺服器", "ButtonBack": "返回", "ButtonAudioTracks": "音軌", - "ButtonArrowUp": "箭咀上", "ButtonArrowRight": "箭咀右", "ButtonArrowLeft": "箭咀左", - "ButtonArrowDown": "箭咀下", "ButtonAddServer": "新增伺服器", "ButtonAddMediaLibrary": "新增媒體櫃", "ButtonAddImage": "新增圖片", @@ -470,13 +447,11 @@ "Backdrop": "背景", "AlwaysPlaySubtitles": "經常播放", "Display": "顯示", - "EnableBackdrops": "背景", "EditImages": "更改圖片", "DownloadsValue": "下載數目 {0}", "Download": "下載", "DisplayInMyMedia": "在主頁顯示", "ButtonSyncPlay": "SyncPlay", - "ButtonDown": "向下", "BurnSubtitlesHelp": "確定若服務器對視頻進行轉碼時是否嵌入字幕。 關閉這功能將使用更少時間。 選擇'自動'可嵌入基於圖像的格式字幕(VOBSUB,PGS,SUB,IDX等)和某些ASS或SSA字幕。", "MessageBrowsePluginCatalog": "瀏覽我們的插件目錄以查看可用的插件。", "BoxRear": "盒裝(背面)", @@ -490,8 +465,6 @@ "ColorPrimaries": "主色調", "CinemaModeConfigurationHelp": "影院模式可在播放主影片前加入預告片及自定引言片段,帶來戲院式體驗。", "ChangingMetadataImageSettingsNewContent": "任何資料變更只適用於新加入到媒體庫的內容。如要更改舊有媒體的內容,請手動刷新資料。", - "ButtonUp": "上", - "ButtonShuffle": "隨機播放", "ButtonSelectView": "選擇介面", "ButtonOff": "關閉", "ButtonLibraryAccess": "媒體庫存取", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index c937cdb161..f9f9bce7a7 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -7,8 +7,6 @@ "ButtonAddServer": "新增伺服器", "ButtonAddUser": "新增使用者", "ButtonCancel": "取消", - "ButtonDelete": "刪除", - "ButtonDeleteImage": "刪除圖像", "ButtonEdit": "編輯", "ButtonEditImages": "編輯圖片", "ButtonFilter": "過濾", @@ -16,7 +14,6 @@ "ButtonGotIt": "我知道了", "ButtonGuide": "節目表", "ButtonHome": "首頁", - "ButtonNew": "建立", "ButtonOk": "確定", "ButtonPlay": "播放", "ButtonQuickStartGuide": "快速入門指南", @@ -28,7 +25,6 @@ "ButtonSelectServer": "選擇伺服器", "ButtonSignIn": "登入", "ButtonSignOut": "登出", - "ButtonSort": "排序", "ConfirmDeleteItem": "刪除此項目時,也會一併從檔案系統及媒體櫃中刪除。確定要刪除嗎?", "ConfirmDeletion": "確定刪除", "Continuing": "繼續", @@ -58,7 +54,6 @@ "HeaderAdditionalParts": "附加部份", "HeaderAdmin": "管理", "HeaderCastCrew": "拍攝人員及演員", - "HeaderChannels": "頻道", "HeaderCustomDlnaProfiles": "自訂設定檔", "HeaderDeleteItem": "刪除項目", "HeaderEasyPinCode": "簡易 PIN 碼", @@ -126,10 +121,8 @@ "LabelName": "名字:", "LabelNewPassword": "新密碼:", "LabelNewPasswordConfirm": "確認新密碼:", - "LabelNext": "下一個", "LabelPassword": "密碼:", "LabelPlaylist": "播放清單:", - "LabelPrevious": "上一個", "LabelRefreshMode": "更新模式:", "LabelSaveLocalMetadata": "將媒體圖像及中繼資料存到媒體所在的資料夾", "LabelSaveLocalMetadataHelp": "直接儲存圖片及中繼資料到媒體所在的資料夾能使編輯更容易。", @@ -248,16 +241,11 @@ "Sunday": "星期天", "TabAdvanced": "進階", "TabAlbumArtists": "專輯歌手", - "TabAlbums": "專輯", "TabCatalog": "目錄", - "TabChannels": "頻道", "TabEpisodes": "單元", - "TabGenres": "類型", - "TabGuide": "節目表", "TabInfo": "資訊", "TabLatest": "最新", "TabLiveTV": "電視", - "TabMovies": "電影", "TabMusic": "音樂", "TabMyPlugins": "我的附加元件", "TabNetworks": "網路", @@ -268,8 +256,6 @@ "TabSeries": "電視劇", "TabServer": "伺服器", "TabSettings": "設定", - "TabShows": "節目", - "TabSongs": "歌曲", "TabTrailers": "預告", "TabUpcoming": "接下來", "TellUsAboutYourself": "介紹一下自己", @@ -309,7 +295,6 @@ "AsManyAsPossible": "越多越好", "Ascending": "遞增", "AspectRatio": "長寬比", - "AttributeNew": "新增", "Audio": "音訊", "Auto": "自動", "Backdrop": "背景", @@ -323,7 +308,6 @@ "ButtonAddMediaLibrary": "新增媒體櫃", "ButtonArrowLeft": "左", "ButtonArrowRight": "右", - "ButtonArrowUp": "上", "ButtonAudioTracks": "音軌", "ButtonBack": "返回", "ButtonChangeServer": "更換伺服器", @@ -339,10 +323,6 @@ "Box": "盒子", "BoxRear": "盒子(背面)", "BurnSubtitlesHelp": "根據字幕格式決定伺服器在影片轉檔時是否燒錄字幕。避免燒錄字幕時消耗過多伺服器資源。選擇「自動」以燒錄圖片格式的字幕(如 VOBSUB、PGS 或 SUB/IDX 等)與複雜的 ASS/SSA 字幕。", - "ButtonArrowDown": "下", - "ButtonConnect": "連結", - "ButtonDown": "下", - "ButtonDownload": "下載", "ButtonEditOtherUserPreferences": "編輯使用者個人檔案、大頭貼和個人設定。", "ButtonFullscreen": "全螢幕", "ButtonInfo": "詳細資料", @@ -366,7 +346,6 @@ "ButtonSelectView": "選擇顯示方式", "ButtonSend": "傳送", "ButtonSettings": "設定", - "ButtonShuffle": "隨機播放", "ButtonShutdown": "關機", "ButtonStart": "開始", "ButtonStop": "停止", @@ -374,7 +353,6 @@ "ButtonSubtitles": "字幕", "ButtonTrailer": "預告片", "ButtonUninstall": "解除安裝", - "ButtonUp": "上", "ButtonWebsite": "網站", "CancelRecording": "取消錄影", "CancelSeries": "取消系列", @@ -436,7 +414,6 @@ "EasyPasswordHelp": "你的簡易 PIN 碼將會用於在支援的 Jellyfin 應用上進行離線存取,同時也可被用於區域網路的登入。", "EditMetadata": "編輯中繼資料", "EditSubtitles": "編輯字幕", - "EnableBackdrops": "背景", "EnableBackdropsHelp": "瀏覽媒體庫時背景圖將作為頁面的背景。", "EnableCinemaMode": "影院模式", "EnableColorCodedBackgrounds": "色彩背景", @@ -501,7 +478,6 @@ "HeaderAddToPlaylist": "加到播放清單", "HeaderAddUpdateImage": "新增/更新圖片", "HeaderAlbumArtists": "專輯演出者", - "HeaderAlbums": "專輯", "HeaderAlert": "通知", "HeaderAllowMediaDeletionFrom": "允許從中刪除媒體", "HeaderApiKey": "API 金鑰", @@ -560,7 +536,6 @@ "HeaderFavoriteVideos": "最愛的影片", "HeaderFetcherSettings": "擷取器設置", "HeaderForKids": "給兒童", - "HeaderGenres": "類型", "HeaderHttpHeaders": "HTTP 標頭", "HeaderIdentification": "身份識別", "HeaderIdentificationCriteriaHelp": "至少輸入一個識別標準。", @@ -568,7 +543,6 @@ "HeaderIdentifyItemHelp": "輸入一個或多個搜索條件。刪除條件可得到更多搜索結果。", "HeaderImageOptions": "圖片選項", "HeaderInstall": "安裝", - "HeaderItems": "項目", "HeaderKeepRecording": "繼續錄製", "HeaderKeepSeries": "保存系列", "HeaderKodiMetadataHelp": "要啟用或停用 NFO 中繼資料,請在設定裡「建立媒體庫」頁面中編輯「中繼資料儲存」部分。", @@ -585,7 +559,6 @@ "HeaderMediaInfo": "媒體資訊", "HeaderMetadataSettings": "中繼資料設定", "HeaderMoreLikeThis": "更多類似的", - "HeaderMovies": "電影", "HeaderMusicQuality": "音質", "HeaderMyDevice": "我的裝置", "HeaderMyMedia": "我的媒體", @@ -625,7 +598,6 @@ "HeaderServerSettings": "伺服器設定", "HeaderSettings": "設定", "HeaderSetupLibrary": "設置你的媒體庫", - "HeaderShutdown": "關機", "HeaderSortBy": "分類", "HeaderSortOrder": "分類順序", "HeaderSpecialEpisodeInfo": "特集資訊", @@ -673,7 +645,6 @@ "HeaderXmlDocumentAttributes": "XML 檔案屬性", "HeaderXmlSettings": "XML 設置", "HeaderYears": "年份", - "HeadersFolders": "資料夾", "Hide": "隱藏", "HideWatchedContentFromLatestMedia": "從最新媒體中隱藏已觀看的內容", "Home": "首頁", @@ -784,7 +755,6 @@ "LabelVersionInstalled": "{0} 已安裝", "DashboardVersionNumber": "版本:{0}", "DashboardServerName": "伺服器:{0}", - "NoSubtitles": "無", "List": "清單", "OptionAllowMediaPlayback": "允許播放媒體", "OneChannel": "單聲道", @@ -795,7 +765,6 @@ "ResumeAt": "從 {0} 繼續播放", "Settings": "設定", "TabAccess": "存取", - "TabDevices": "裝置", "TabDirectPlay": "直接播放", "ThemeSongs": "主題曲", "ThemeVideos": "主題曲影片", @@ -1015,7 +984,6 @@ "TabCodecs": "編碼", "TabContainers": "影片容器", "TabDashboard": "控制台", - "TabFavorites": "最愛", "TabLogs": "日誌", "TabNotifications": "通知", "TabOther": "其他", @@ -1366,7 +1334,6 @@ "LabelProtocolInfoHelp": "當響應來自裝置的 GetProtocolInfo(獲取協議訊息)請求時,該值將被使用。", "LabelPublicHttpPortHelp": "公開連接埠應映射到本地 HTTP 連接埠。", "LabelPublicHttpsPortHelp": "公開連接埠應映射到本地 HTTPS 連接埠。", - "LabelReadHowYouCanContribute": "瞭解如何一同貢獻。", "LabelSelectFolderGroups": "自動將以下資料夾中的內容分組到視圖中,例如電影、音樂和電視:", "LabelStatus": "狀態:", "LiveBroadcasts": "直播", @@ -1377,7 +1344,6 @@ "SaveSubtitlesIntoMediaFoldersHelp": "將字幕存儲在影片檔案旁邊可以讓管理更方便。", "ScanForNewAndUpdatedFiles": "掃描新的和有修改的文件", "Schedule": "排程", - "TabCollections": "收藏", "TabNetworking": "網路", "TitlePlayback": "播放", "ValueConditions": "條件:{0}", @@ -1491,7 +1457,6 @@ "ButtonCast": "投放", "Writers": "作者", "ViewAlbumArtist": "檢視專輯演出者", - "TabDVR": "DVR", "TabRepositories": "儲存庫", "MessageSyncPlayErrorAccessingGroups": "存取群組清單時發生錯誤。", "MessageSyncPlayLibraryAccessDenied": "存取受限。", From 369d7b2f5a1092488260b7959c35bf0a1e2d6833 Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 13 Aug 2020 21:56:01 +0900 Subject: [PATCH 361/463] merge weekday strings --- .../accessSchedule/accessSchedule.template.html | 14 +++++++------- .../homeScreenSettings.template.html | 14 +++++++------- src/components/homesections/homesections.js | 4 ++-- .../dashboard/plugins/available/index.js | 2 +- .../dashboard/scheduledtasks/scheduledtask.html | 16 ++++++++-------- src/controllers/dashboard/users/useredit.html | 2 +- .../dashboard/users/userlibraryaccess.html | 2 +- .../dashboard/users/userparentalcontrol.html | 2 +- .../dashboard/users/userpassword.html | 2 +- src/controllers/itemDetails/index.html | 4 ++-- src/controllers/itemDetails/index.js | 4 ++-- src/controllers/livetv.html | 2 +- src/controllers/livetv/livetvsuggested.js | 6 +++--- src/controllers/music/musicrecommended.js | 2 +- src/controllers/shows/tvrecommended.html | 2 +- src/scripts/editorsidebar.js | 2 +- src/scripts/libraryMenu.js | 6 +++--- 17 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/components/accessSchedule/accessSchedule.template.html b/src/components/accessSchedule/accessSchedule.template.html index e209fbc1ff..c0f83ccec6 100644 --- a/src/components/accessSchedule/accessSchedule.template.html +++ b/src/components/accessSchedule/accessSchedule.template.html @@ -12,13 +12,13 @@
@@ -38,7 +38,7 @@ - + @@ -51,7 +51,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -77,7 +77,7 @@ - + @@ -90,7 +90,7 @@ - + @@ -103,7 +103,7 @@ - + diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 6198894088..e933cf2c3a 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -696,12 +696,12 @@ import 'css!./homesections'; serverId: apiClient.serverId() }) + '" class="button-flat button-flat-mini sectionTitleTextButton">'; html += '

'; - html += globalize.translate('HeaderNextUp'); + html += globalize.translate('NextUp'); html += '

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

' + globalize.translate('HeaderNextUp') + '

'; + html += '

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

'; } html += '
'; diff --git a/src/controllers/dashboard/plugins/available/index.js b/src/controllers/dashboard/plugins/available/index.js index 22b28e0f5a..b7c3505aa1 100644 --- a/src/controllers/dashboard/plugins/available/index.js +++ b/src/controllers/dashboard/plugins/available/index.js @@ -28,7 +28,7 @@ function getHeaderText(category) { } else if (category === 'Theme') { category = 'Themes'; } else if (category === 'LiveTV') { - category = 'HeaderLiveTV'; + category = 'LiveTV'; } else if (category === 'ScreenSaver') { category = 'HeaderScreenSavers'; } diff --git a/src/controllers/dashboard/scheduledtasks/scheduledtask.html b/src/controllers/dashboard/scheduledtasks/scheduledtask.html index 4dab484905..dc17d9bf07 100644 --- a/src/controllers/dashboard/scheduledtasks/scheduledtask.html +++ b/src/controllers/dashboard/scheduledtasks/scheduledtask.html @@ -31,18 +31,18 @@ - +
diff --git a/src/controllers/dashboard/users/useredit.html b/src/controllers/dashboard/users/useredit.html index a097144cc3..400c0c35bf 100644 --- a/src/controllers/dashboard/users/useredit.html +++ b/src/controllers/dashboard/users/useredit.html @@ -14,7 +14,7 @@ ${TabProfile} ${TabAccess} ${TabParentalControl} - ${TabPassword} + ${HeaderPassword}

${ButtonEditOtherUserPreferences} diff --git a/src/controllers/dashboard/users/userlibraryaccess.html b/src/controllers/dashboard/users/userlibraryaccess.html index f0a239c6a6..363e52a716 100644 --- a/src/controllers/dashboard/users/userlibraryaccess.html +++ b/src/controllers/dashboard/users/userlibraryaccess.html @@ -14,7 +14,7 @@ ${TabProfile} ${TabAccess} ${TabParentalControl} - ${TabPassword} + ${HeaderPassword}

diff --git a/src/controllers/dashboard/users/userparentalcontrol.html b/src/controllers/dashboard/users/userparentalcontrol.html index fd763ca26d..ffbd183a29 100644 --- a/src/controllers/dashboard/users/userparentalcontrol.html +++ b/src/controllers/dashboard/users/userparentalcontrol.html @@ -12,7 +12,7 @@ ${TabProfile} ${TabAccess} ${TabParentalControl} - ${TabPassword} + ${HeaderPassword}
diff --git a/src/controllers/dashboard/users/userpassword.html b/src/controllers/dashboard/users/userpassword.html index 51df2e2cb0..0f6ea2d78e 100644 --- a/src/controllers/dashboard/users/userpassword.html +++ b/src/controllers/dashboard/users/userpassword.html @@ -12,7 +12,7 @@ ${TabProfile} ${TabAccess} ${TabParentalControl} - ${TabPassword} + ${HeaderPassword}
diff --git a/src/controllers/itemDetails/index.html b/src/controllers/itemDetails/index.html index 8c16daba99..bd0821eebe 100644 --- a/src/controllers/itemDetails/index.html +++ b/src/controllers/itemDetails/index.html @@ -147,14 +147,14 @@
-

${HeaderSchedule}

+

${Schedule}

-

${HeaderNextUp}

+

${NextUp}

diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 9d4ba09392..c57190139f 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -785,7 +785,7 @@ import 'emby-select'; function setPeopleHeader(page, item) { if (item.MediaType == 'Audio' || item.Type == 'MusicAlbum' || item.MediaType == 'Book' || item.MediaType == 'Photo') { - page.querySelector('#peopleHeader').innerHTML = globalize.translate('HeaderPeople'); + page.querySelector('#peopleHeader').innerHTML = globalize.translate('People'); } else { page.querySelector('#peopleHeader').innerHTML = globalize.translate('HeaderCastAndCrew'); } @@ -1432,7 +1432,7 @@ import 'emby-select'; name: globalize.translate('HeaderVideos'), mediaType: 'Video' }, { - name: globalize.translate('HeaderSeries'), + name: globalize.translate('Series'), type: 'Series' }, { name: globalize.translate('Albums'), diff --git a/src/controllers/livetv.html b/src/controllers/livetv.html index 0e02947c12..753521f40b 100644 --- a/src/controllers/livetv.html +++ b/src/controllers/livetv.html @@ -1,4 +1,4 @@ -
+
diff --git a/src/controllers/livetv/livetvsuggested.js b/src/controllers/livetv/livetvsuggested.js index 9fec9a2707..346630012a 100644 --- a/src/controllers/livetv/livetvsuggested.js +++ b/src/controllers/livetv/livetvsuggested.js @@ -172,11 +172,11 @@ function getTabs() { }, { name: globalize.translate('Channels') }, { - name: globalize.translate('TabRecordings') + name: globalize.translate('Recordings') }, { - name: globalize.translate('HeaderSchedule') + name: globalize.translate('Schedule') }, { - name: globalize.translate('TabSeries') + name: globalize.translate('Series') }]; } diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index 4a04f9e827..65ecd79f65 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -185,7 +185,7 @@ import 'flexStyles'; }, { name: globalize.translate('Artists') }, { - name: globalize.translate('TabPlaylists') + name: globalize.translate('Playlists') }, { name: globalize.translate('Songs') }, { diff --git a/src/controllers/shows/tvrecommended.html b/src/controllers/shows/tvrecommended.html index bdc21fdc81..2302279ed7 100644 --- a/src/controllers/shows/tvrecommended.html +++ b/src/controllers/shows/tvrecommended.html @@ -26,7 +26,7 @@
-

${HeaderNextUp}

+

${NextUp}

diff --git a/src/scripts/editorsidebar.js b/src/scripts/editorsidebar.js index 2489335969..7c15eae221 100644 --- a/src/scripts/editorsidebar.js +++ b/src/scripts/editorsidebar.js @@ -86,7 +86,7 @@ import 'material-icons'; if (result.TotalRecordCount) { nodes.push({ id: 'livetv', - text: globalize.translate('HeaderLiveTV'), + text: globalize.translate('LiveTV'), state: { opened: false }, diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 5ee485e815..d237eead9d 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -377,7 +377,7 @@ import 'flexStyles'; pageIds: ['dashboardGeneralPage'], icon: 'settings' }, { - name: globalize.translate('TabUsers'), + name: globalize.translate('HeaderUsers'), href: 'userprofiles.html', pageIds: ['userProfilesPage', 'newUserPage', 'editUserPage', 'userLibraryAccessPage', 'userParentalControlPage', 'userPasswordPage'], icon: 'people' @@ -417,10 +417,10 @@ import 'flexStyles'; }); links.push({ divider: true, - name: globalize.translate('TabLiveTV') + name: globalize.translate('LiveTV') }); links.push({ - name: globalize.translate('TabLiveTV'), + name: globalize.translate('LiveTV'), href: 'livetvstatus.html', pageIds: ['liveTvStatusPage', 'liveTvTunerPage'], icon: 'live_tv' From d1858bd03001c6458d4da45cbe9ffea00c93438f Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 13 Aug 2020 22:02:55 +0900 Subject: [PATCH 362/463] remove more unused translations --- src/strings/af.json | 8 +------- src/strings/ar.json | 20 -------------------- src/strings/bg-bg.json | 20 -------------------- src/strings/ca.json | 20 -------------------- src/strings/cs.json | 20 -------------------- src/strings/da.json | 20 -------------------- src/strings/de.json | 20 -------------------- src/strings/el.json | 19 ------------------- src/strings/en-gb.json | 20 -------------------- src/strings/en-us.json | 20 -------------------- src/strings/es-ar.json | 20 -------------------- src/strings/es-mx.json | 20 -------------------- src/strings/es.json | 20 -------------------- src/strings/es_419.json | 20 -------------------- src/strings/fa.json | 20 -------------------- src/strings/fi.json | 20 -------------------- src/strings/fr-ca.json | 3 --- src/strings/fr.json | 20 -------------------- src/strings/gsw.json | 11 ----------- src/strings/he.json | 20 +------------------- src/strings/hr.json | 19 ------------------- src/strings/hu.json | 20 -------------------- src/strings/id.json | 3 --- src/strings/is-is.json | 10 ---------- src/strings/it.json | 20 -------------------- src/strings/ja.json | 19 ------------------- src/strings/kk.json | 20 -------------------- src/strings/ko.json | 20 -------------------- src/strings/lt-lt.json | 17 ----------------- src/strings/lv.json | 20 -------------------- src/strings/ms.json | 3 --- src/strings/nb.json | 20 -------------------- src/strings/nl.json | 20 -------------------- src/strings/pl.json | 20 -------------------- src/strings/pt-br.json | 20 -------------------- src/strings/pt-pt.json | 20 -------------------- src/strings/pt.json | 20 -------------------- src/strings/ro.json | 20 -------------------- src/strings/ru.json | 20 -------------------- src/strings/sk.json | 20 -------------------- src/strings/sl-si.json | 20 -------------------- src/strings/sr.json | 2 -- src/strings/sv.json | 20 -------------------- src/strings/tr.json | 16 ---------------- src/strings/uk.json | 5 ----- src/strings/vi.json | 10 ---------- src/strings/zh-cn.json | 20 -------------------- src/strings/zh-hk.json | 16 ---------------- src/strings/zh-tw.json | 20 -------------------- 49 files changed, 2 insertions(+), 839 deletions(-) diff --git a/src/strings/af.json b/src/strings/af.json index 53b658836e..f18b2fc14b 100644 --- a/src/strings/af.json +++ b/src/strings/af.json @@ -122,21 +122,16 @@ "ThemeVideos": "Tema Videos", "ThemeSongs": "Tema Liedjies", "TellUsAboutYourself": "Vertel ons van jouself", - "TabUsers": "Gebruikers", "TabUpcoming": "Komende", "TabTrailers": "Voorprente", "TabStreaming": "Stroom", "TabSettings": "Instellings", "TabServer": "Bediener", - "TabSeries": "Reekse", "TabScheduledTasks": "Geskeduleerde Take", "TabResumeSettings": "Hervat", "TabResponses": "Reaksies", - "TabRecordings": "Opnames", "TabProfiles": "Profiele", "TabProfile": "Profiel", - "TabPlaylists": "Speel lyste", - "TabPassword": "Wagwoord", "TabParentalControl": "Ouer Beheer", "TabOther": "Ander", "TabNotifications": "Kennisgewings", @@ -145,6 +140,5 @@ "TabNetworks": "Netwerke", "TabMusicVideos": "Musiek Videos", "TabMusic": "Musiek", - "TabLogs": "Logs", - "TabLiveTV": "Lewendige TV" + "TabLogs": "Logs" } diff --git a/src/strings/ar.json b/src/strings/ar.json index 24020ed834..23cb2c9cab 100644 --- a/src/strings/ar.json +++ b/src/strings/ar.json @@ -183,8 +183,6 @@ "HeaderLibraries": "المكتبات", "HeaderLibraryAccess": "صلاحيات المكتبة", "HeaderLibraryFolders": "مجلدات الوسائط", - "HeaderLiveTV": "التلفاز المباشر", - "HeaderLiveTv": "التلفاز المباشر", "HeaderLoginFailure": "فشل في تسجيل الدخول", "HeaderMedia": "الوسائط", "HeaderMediaFolders": "مجلدات الوسائط", @@ -193,13 +191,11 @@ "HeaderMusicVideos": "الفيديوهات الموسيقية", "HeaderMyMedia": "وسائطي", "HeaderNewApiKey": "مفتاح API جديد", - "HeaderNextUp": "التالي", "HeaderOtherItems": "عناصر أخرى", "HeaderParentalRatings": "التصنيف الأبوي", "HeaderPassword": "كلمة السر", "HeaderPasswordReset": "إعادة تهيئة كلمة السر", "HeaderPaths": "مسارات", - "HeaderPeople": "الناس", "HeaderPinCodeReset": "أعد تهيئة الرمز الشخصي", "HeaderPlayAll": "تشغيل الكل", "HeaderPlayback": "تشغيل الوسائط", @@ -220,7 +216,6 @@ "HeaderRevisionHistory": "تاريخ المراجعات", "HeaderRunningTasks": "المهام المشغّلة", "HeaderScenes": "المشاهد", - "HeaderSchedule": "الجدول", "HeaderSeasons": "المواسم", "HeaderSelectCertificatePath": "إختر مسار الشهادة", "HeaderSelectMetadataPath": "إختر مسار واصفات البيانات", @@ -232,7 +227,6 @@ "HeaderSelectTranscodingPath": "إختر المسار المؤقت للتشفير البيني", "HeaderSelectTranscodingPathHelp": "تصفح أو أدخل المسار الذي ترغب أن يُستخدم لملفات التشفير البيني. يجب أن يكون هذا المجلد قابل للكتابة فيه.", "HeaderSendMessage": "أرسل رسالة", - "HeaderSeries": "المسلسلات", "HeaderServerSettings": "إعدادات الخادم", "HeaderSettings": "الإعدادات", "HeaderSetupLibrary": "ضبط مكتبة المحتوى الخاصة بك", @@ -669,7 +663,6 @@ "OptionExternallyDownloaded": "الإنزال من الخارج", "OptionExtractChapterImage": "تفعيل استخلاص صور الأبواب", "OptionFavorite": "المفضلات", - "OptionFriday": "الجمعة", "OptionHasSpecialFeatures": "المحتويات الخاصة", "OptionHasSubtitles": "الترجمة", "OptionHasThemeSong": "أغنية الشارة", @@ -687,10 +680,8 @@ "OptionLikes": "المحببات", "OptionMax": "الحد الأقصى", "OptionMissingEpisode": "حلفة مفقودة", - "OptionMonday": "الأثنين", "OptionNameSort": "الاسم", "OptionNone": "لا شيء", - "OptionOnAppStartup": "بناء على تشغيل الخادم", "OptionOnInterval": "بناء على فترة", "OptionParentalRating": "التصنيف الأبوي", "OptionPlainStorageFolders": "غرض جميع المجلدات كمجلدات تخزين بسيطة", @@ -712,19 +703,14 @@ "OptionResElement": "عناصر res", "OptionResumable": "إمكانية التكملة", "OptionRuntime": "زمن التشغيل", - "OptionSaturday": "السبت", "OptionSaveMetadataAsHidden": "حفظ واصفات البيانات والصور كملفات مخفية", "OptionSaveMetadataAsHiddenHelp": "إن تغيير هذه سيطبق على واصفات البيانات الجديدة من الآن. أما واصفات البيانات الموجودة مسبقاً، فهي ستحدث من قبل الخادم في المرة القادمة التي يتم حفظها.", "OptionSpecialEpisode": "حصريات", - "OptionSunday": "الأحد", - "OptionThursday": "الخميس", "OptionTrackName": "اسم المقطوعة", - "OptionTuesday": "الثلاثاء", "OptionTvdbRating": "تقييم Tvdb", "OptionUnairedEpisode": "حلفة لم تبثّ", "OptionUnplayed": "غير معزوف", "OptionWakeFromSleep": "استيقظ من السبات", - "OptionWednesday": "الأربعاء", "OptionWeekdays": "أيام الأسبوع", "OptionWeekends": "أيام العطلة", "OptionWeekly": "أسبوعي", @@ -772,7 +758,6 @@ "TabEpisodes": "الحلقات", "TabInfo": "معلومات", "TabLatest": "الاخير", - "TabLiveTV": "التلفاز المباشر", "TabLogs": "الكشوفات", "TabMusic": "الموسيقى", "TabMusicVideos": "الفيديوهات الموسيقية", @@ -782,22 +767,17 @@ "TabNotifications": "إشعارات", "TabOther": "أخرى", "TabParentalControl": "التحكم الأبوي", - "TabPassword": "كلمة السر", - "TabPlaylists": "قوائم التشغيل", "TabPlugins": "الملحقات", "TabProfile": "عريضة", "TabProfiles": "الحسابات", - "TabRecordings": "المقاطع المسجلة", "TabResponses": "الردود", "TabResumeSettings": "استئناف الإعدادات", "TabScheduledTasks": "المهام المجدولة", - "TabSeries": "المسلسلات", "TabServer": "الخادم", "TabSettings": "الإعدادات", "TabStreaming": "التشغيل التدفقي", "TabTrailers": "العروض الإعلانية", "TabUpcoming": "القادم", - "TabUsers": "المستخدمون", "TellUsAboutYourself": "اخبرنا عن نفسك", "ThisWizardWillGuideYou": "مرشد الاعدادات سيساعدك خلال خطوات عملية الاعدادات. للبدء، الرجاء اختيار لغتك المفضلة.", "Thursday": "الخميس", diff --git a/src/strings/bg-bg.json b/src/strings/bg-bg.json index 4ab46a6eab..1cc469a9fd 100644 --- a/src/strings/bg-bg.json +++ b/src/strings/bg-bg.json @@ -180,8 +180,6 @@ "HeaderLibraryFolders": "Папки на библиотеката", "HeaderLibraryOrder": "Подредба на библиотеката", "HeaderLibrarySettings": "Настройки на библиотеката", - "HeaderLiveTV": "Телевизия на живо", - "HeaderLiveTv": "Телевизия на живо", "HeaderMedia": "Медия", "HeaderMediaFolders": "Медийни папки", "HeaderMediaInfo": "Сведения", @@ -195,12 +193,10 @@ "HeaderNewApiKey": "Нов ППИ ключ", "HeaderNewDevices": "Нови устройства", "HeaderNextEpisodePlayingInValue": "Следващият епизод ще се пусне след {0}", - "HeaderNextUp": "Следва", "HeaderOnNow": "На живо сега", "HeaderParentalRatings": "Родителска оценка", "HeaderPassword": "Парола", "HeaderPaths": "Пътища", - "HeaderPeople": "Хора", "HeaderPlayAll": "Пускане на всичко", "HeaderPlayOn": "Пускане на", "HeaderPleaseSignIn": "Моля, влезте", @@ -216,12 +212,10 @@ "HeaderRevisionHistory": "Списък с промени", "HeaderRunningTasks": "Изпълняващи се задачи", "HeaderScenes": "Сцени", - "HeaderSchedule": "Разписание", "HeaderSeasons": "Сезони", "HeaderSecondsValue": "{0} секунди", "HeaderSelectPath": "Изберете път", "HeaderSendMessage": "Изпращане на съобщение", - "HeaderSeries": "Сериал", "HeaderServerSettings": "Настройки на сървъра", "HeaderSettings": "Настройки", "HeaderSetupLibrary": "Настройте своите медийни библиотеки", @@ -530,7 +524,6 @@ "OptionEveryday": "Всеки ден", "OptionExternallyDownloaded": "Външно сваляне", "OptionFavorite": "Любими", - "OptionFriday": "Петък", "OptionHasSpecialFeatures": "Специални функции", "OptionHasSubtitles": "Субтитри", "OptionHasThemeSong": "Фонова песен", @@ -544,11 +537,9 @@ "OptionIsSD": "СК", "OptionLikes": "Харесвания", "OptionMissingEpisode": "Липсващи епизоди", - "OptionMonday": "Понеделник", "OptionNameSort": "Име", "OptionNew": "Нов…", "OptionNone": "Нищо", - "OptionOnAppStartup": "Като се стартира приложението", "OptionOnInterval": "През интервал", "OptionParentalRating": "Родителска оценка", "OptionPlainStorageFolders": "Показвай всички папки като папки за обикновено съхранение", @@ -564,16 +555,11 @@ "OptionRequirePerfectSubtitleMatch": "Да се изтеглят само субтитри, които пасват идеално на файловете ми", "OptionResumable": "Възобновляемост", "OptionRuntime": "Времетраене", - "OptionSaturday": "Събота", "OptionSpecialEpisode": "Специални", - "OptionSunday": "Неделя", - "OptionThursday": "Четвъртък", "OptionTrackName": "Име на песента", - "OptionTuesday": "Вторник", "OptionUnairedEpisode": "Неизлъчени епизоди", "OptionUnplayed": "Непускано", "OptionWakeFromSleep": "Събуждане от сън", - "OptionWednesday": "Сряда", "OptionWeekly": "Ежеседмично", "OriginalAirDateValue": "Дата на първоначално излъчване: {0}", "Overview": "Обобщение", @@ -657,7 +643,6 @@ "TabEpisodes": "Епизоди", "TabInfo": "Информация", "TabLatest": "Последни", - "TabLiveTV": "Телевизия на живо", "TabLogs": "Журнали", "TabMusic": "Музика", "TabMusicVideos": "Музикални клипове", @@ -667,22 +652,17 @@ "TabNotifications": "Известия", "TabOther": "Други", "TabParentalControl": "Родителски контрол", - "TabPassword": "Парола", - "TabPlaylists": "Списъци", "TabPlugins": "Приставки", "TabProfile": "Профил", "TabProfiles": "Профили", - "TabRecordings": "Записи", "TabResponses": "Отговори", "TabResumeSettings": "Възобнови", "TabScheduledTasks": "Планирани задачи", - "TabSeries": "Сериали", "TabServer": "Сървър", "TabSettings": "Настройки", "TabStreaming": "Излъчване", "TabTrailers": "Трейлъри", "TabUpcoming": "Предстоящи", - "TabUsers": "Потребители", "Tags": "Етикети", "TagsValue": "Етикети: {0}", "TellUsAboutYourself": "Разкажете за себе си", diff --git a/src/strings/ca.json b/src/strings/ca.json index c5f7f2d6de..413fef4792 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -172,8 +172,6 @@ "HeaderLibraryFolders": "Directoris de la Llibreria", "HeaderLibraryOrder": "Ordre de la llibreria", "HeaderLibrarySettings": "Preferències de la Biblioteca", - "HeaderLiveTV": "TV en Directe", - "HeaderLiveTv": "TV en Directe", "HeaderMediaFolders": "Directoris Multimèdia", "HeaderMediaInfo": "Info Multimèdia", "HeaderMetadataSettings": "Preferències de Metadades", @@ -183,14 +181,12 @@ "HeaderMyMediaSmall": "Els meus mitjans (petit)", "HeaderNewApiKey": "Nova Clau Api", "HeaderNextEpisodePlayingInValue": "Reproduint proper episodi en {0}", - "HeaderNextUp": "A continuació", "HeaderNextVideoPlayingInValue": "Reproduint proper vídeo en {0}", "HeaderOnNow": "En Directe Ara", "HeaderParentalRatings": "Classificacions Parentals", "HeaderPassword": "Contrasenya", "HeaderPasswordReset": "Reiniciar Contrasenya", "HeaderPaths": "Directoris", - "HeaderPeople": "Gent", "HeaderPlayAll": "Reprodueix Tot", "HeaderPlaybackError": "Error de Reproducció", "HeaderPleaseSignIn": "Si et plau, inicia sessió", @@ -204,12 +200,10 @@ "HeaderRestart": "Reiniciar", "HeaderRunningTasks": "Tasques Corrent", "HeaderScenes": "Escenes", - "HeaderSchedule": "Horari", "HeaderSeasons": "Temporades", "HeaderSecondsValue": "{0} segons", "HeaderSelectServer": "Seleccionar Servidor", "HeaderSendMessage": "Enviar Missatge", - "HeaderSeries": "Sèries:", "HeaderSeriesOptions": "Opcions de Sèries", "HeaderServerSettings": "Preferències del Servidor", "HeaderSettings": "Preferències", @@ -511,7 +505,6 @@ "OptionEveryday": "Cada dia", "OptionExternallyDownloaded": "Descàrrega externa", "OptionFavorite": "Preferits", - "OptionFriday": "Divendres", "OptionHasSpecialFeatures": "Característiques Especials", "OptionHasSubtitles": "Subtítols", "OptionHasThemeSong": "Cançó Temàtica", @@ -523,11 +516,9 @@ "OptionImdbRating": "Qualificació IMDb", "OptionLikes": "M'agrada", "OptionMissingEpisode": "Episodis Perduts", - "OptionMonday": "Dilluns", "OptionNameSort": "Nom", "OptionNew": "Nou...", "OptionNone": "Cap", - "OptionOnAppStartup": "En arrencar l'aplicació", "OptionOnInterval": "En un interval", "OptionParentalRating": "Classificació Parental", "OptionPlayCount": "Nombre de Reproduccions", @@ -538,18 +529,13 @@ "OptionReleaseDate": "Data de Publicació", "OptionResumable": "Continuable", "OptionRuntime": "Temps d'exec.", - "OptionSaturday": "Dissabte", "OptionSaveMetadataAsHidden": "Desa les metadades i les imatges com a fitxers ocults", "OptionSpecialEpisode": "Especials", "OptionSubstring": "Subcadena", - "OptionSunday": "Diumenge", - "OptionThursday": "Dijous", - "OptionTuesday": "Dimarts", "OptionTvdbRating": "Valoració TVDB", "OptionUnairedEpisode": "Episodis No Emesos", "OptionUnplayed": "No reproduït", "OptionWakeFromSleep": "Despertar", - "OptionWednesday": "Dimecres", "OptionWeekdays": "Entre setmana", "OptionWeekends": "Cap de setmana", "OptionWeekly": "Setmanal", @@ -624,7 +610,6 @@ "TabEpisodes": "Episodis", "TabInfo": "Informació", "TabLatest": "Novetats", - "TabLiveTV": "TV en Directe", "TabMusic": "Música", "TabMusicVideos": "Vídeos musicals", "TabMyPlugins": "Els meus complements", @@ -633,20 +618,15 @@ "TabNotifications": "Notificacions", "TabOther": "Altres", "TabParentalControl": "Control Parental", - "TabPassword": "Contrasenya", - "TabPlaylists": "Llistes de reproducció", "TabPlugins": "Complements", "TabProfile": "Perfil", "TabProfiles": "Perfils", - "TabRecordings": "Enregistraments", "TabResponses": "Respostes", "TabScheduledTasks": "Tasques Programades", - "TabSeries": "Sèries", "TabServer": "Servidor", "TabSettings": "Preferències", "TabTrailers": "Tràilers", "TabUpcoming": "Properament", - "TabUsers": "Usuaris", "Tags": "Etiquetes", "TellUsAboutYourself": "Explica'ns sobre tu", "TheseSettingsAffectSubtitlesOnThisDevice": "Aquestes preferències afecten els subtítols d'aquest dispositiu", diff --git a/src/strings/cs.json b/src/strings/cs.json index daa4573874..d796f36a43 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -293,7 +293,6 @@ "HeaderMyMediaSmall": "Moje média (malé)", "HeaderNewApiKey": "Nový klíč API", "HeaderNextEpisodePlayingInValue": "Přehrávání další epizody za {0}", - "HeaderNextUp": "Nadcházející", "HeaderNextVideoPlayingInValue": "Přehrávání dalšího videa za {0}", "HeaderOnNow": "Právě teď", "HeaderOtherItems": "Další položky", @@ -301,7 +300,6 @@ "HeaderPassword": "Heslo", "HeaderPasswordReset": "Obnova hesla", "HeaderPaths": "Cesty", - "HeaderPeople": "Lidé", "HeaderPinCodeReset": "Obnovit Pin kód", "HeaderPlayAll": "Přehrát vše", "HeaderPlayback": "Přehrání média", @@ -323,7 +321,6 @@ "HeaderRevisionHistory": "Historie verzí", "HeaderRunningTasks": "Běžící úlohy", "HeaderScenes": "Scény", - "HeaderSchedule": "Naplánování úlohy", "HeaderSeasons": "Sezóny", "HeaderSecondsValue": "{0} sekund", "HeaderSelectCertificatePath": "Vyber cestu k certifikátu", @@ -336,7 +333,6 @@ "HeaderSelectTranscodingPath": "Zvolte dočasnou složku pro překódovávání médií", "HeaderSelectTranscodingPathHelp": "Vyberte nebo zadejte složku pro soubory překódování. Složka musí být zapisovatelná.", "HeaderSendMessage": "Poslat zprávu", - "HeaderSeries": "Seriál", "HeaderSeriesOptions": "Nastavení seriálu", "HeaderServerSettings": "Nastavení serveru", "HeaderSettings": "Nastavení", @@ -856,7 +852,6 @@ "OptionExternallyDownloaded": "Externí stažení", "OptionExtractChapterImage": "Povolit extrakci obrázků z videa", "OptionFavorite": "Oblíbené", - "OptionFriday": "Pátek", "OptionHasSpecialFeatures": "Speciální funkce", "OptionHasSubtitles": "Titulky", "OptionHasThemeSong": "Tematická hudba", @@ -871,11 +866,9 @@ "OptionImdbRating": "Hodnocení IMDb", "OptionLikes": "Líbí se", "OptionMissingEpisode": "Chybějící episody", - "OptionMonday": "Pondělí", "OptionNameSort": "Název", "OptionNew": "Nový…", "OptionNone": "Žádný", - "OptionOnAppStartup": "Při spuštění aplikace", "OptionOnInterval": "V intervalu", "OptionParentalRating": "Rodičovské hodnocení", "OptionPlainStorageFolders": "Zobrazit všechny složky jako obyčejné složky pro ukládání", @@ -894,20 +887,15 @@ "OptionResElement": "Prvek \"res\"", "OptionResumable": "Pozastavavitelný", "OptionRuntime": "Délka", - "OptionSaturday": "Sobota", "OptionSaveMetadataAsHidden": "Ukládat metadata a obrázky jako skryté soubory", "OptionSaveMetadataAsHiddenHelp": "Změna se projeví u všech nově uložených metadat. Existující soubory metadat se aktualizují při příštím uložení serverem.", "OptionSpecialEpisode": "Speciální", "OptionSubstring": "subřetězec", - "OptionSunday": "Neděle", - "OptionThursday": "Čtvrtek", "OptionTrackName": "Název skladby", - "OptionTuesday": "Úterý", "OptionTvdbRating": "Tvdb hodnocení", "OptionUnairedEpisode": "Neodvysílané epizody", "OptionUnplayed": "Neshlédnuto", "OptionWakeFromSleep": "Probuzení ze spánku", - "OptionWednesday": "Středa", "OptionWeekdays": "Pracovní dny", "OptionWeekends": "Víkendy", "OptionWeekly": "Týdenní", @@ -1042,21 +1030,16 @@ "TabNotifications": "Oznámení", "TabOther": "Další", "TabParentalControl": "Rodičovská kontrola", - "TabPassword": "Heslo", - "TabPlaylists": "Playlisty", "TabPlugins": "Zásuvné moduly", "TabProfile": "Profil", "TabProfiles": "Profily", - "TabRecordings": "Nahrané", "TabResponses": "Odpovědi", "TabResumeSettings": "Obnovit", "TabScheduledTasks": "Naplánované úlohy", - "TabSeries": "Série", "TabSettings": "Nastavení", "TabStreaming": "Streamování", "TabTrailers": "Upoutávky", "TabUpcoming": "Nadcházející", - "TabUsers": "Uživatelé", "Tags": "Tagy", "TellUsAboutYourself": "Řekněte nám něco o sobě", "TheseSettingsAffectSubtitlesOnThisDevice": "Tato nastavení ovlivní titulky na tomto zařízení", @@ -1176,8 +1159,6 @@ "HeaderFetcherSettings": "Nastavení načítání", "HeaderImageOptions": "Volby obrázku", "HeaderKodiMetadataHelp": "Chcete-li povolit nebo zakázat metadata v souborech NFO, upravte nastavení knihovny v sekci ukládání metadat.", - "HeaderLiveTV": "Televize", - "HeaderLiveTv": "Televize", "HeaderLiveTvTunerSetup": "Nastavení televizního tuneru", "HeaderNewDevices": "Nové zařízení", "HeaderPhotoAlbums": "Fotoalba", @@ -1316,7 +1297,6 @@ "TV": "TV", "TabDirectPlay": "Přímé přehrávání", "TabInfo": "Info", - "TabLiveTV": "Televize", "TabServer": "Server", "TagsValue": "Tagy: {0}", "ThemeSongs": "Tematická hudba", diff --git a/src/strings/da.json b/src/strings/da.json index e5c8655645..20e237c7fe 100644 --- a/src/strings/da.json +++ b/src/strings/da.json @@ -261,14 +261,12 @@ "HeaderMyMedia": "Mine medier", "HeaderNewApiKey": "Ny API Nøgle", "HeaderNewDevices": "Nye Enheder", - "HeaderNextUp": "Næste", "HeaderOnNow": "Vises Nu", "HeaderOtherItems": "Andre elementer", "HeaderParentalRatings": "Aldersgrænser", "HeaderPassword": "Adgangskode", "HeaderPasswordReset": "Nulstil adgangskode", "HeaderPaths": "Stier", - "HeaderPeople": "Mennesker", "HeaderPinCodeReset": "Nulstil pinkode", "HeaderPlayAll": "Afspil Alle", "HeaderPlayback": "Medieafspilning", @@ -291,7 +289,6 @@ "HeaderRevisionHistory": "Revisionshistorik", "HeaderRunningTasks": "Kørende opgaver", "HeaderScenes": "Scener", - "HeaderSchedule": "Skema", "HeaderSeasons": "Sæsoner", "HeaderSelectCertificatePath": "Vælg certifikatsti", "HeaderSelectMetadataPath": "Vælg Metadata Path", @@ -303,7 +300,6 @@ "HeaderSelectTranscodingPath": "Vælg \"Transcoding Temporary Path\"", "HeaderSelectTranscodingPathHelp": "Vælg eller indtast stien som skal benyttes til midlertidige transkodningsfiler. Mappen må ikke være skrivebeskyttet.", "HeaderSendMessage": "Send besked", - "HeaderSeries": "Series", "HeaderSeriesOptions": "Serieindstillinger", "HeaderServerSettings": "Serverindstillinger", "HeaderSettings": "Indstillinger", @@ -789,7 +785,6 @@ "OptionExternallyDownloaded": "Ekstern hentning", "OptionExtractChapterImage": "Aktiver udvinding af kapitelbillede", "OptionFavorite": "Favoritter", - "OptionFriday": "Fredag", "OptionHasSpecialFeatures": "Specielle egenskaber", "OptionHasSubtitles": "Undertekster", "OptionHasThemeSong": "Temasang", @@ -803,11 +798,9 @@ "OptionImdbRating": "IMDB bedømmelse", "OptionMax": "Maks", "OptionMissingEpisode": "Manglende episoder", - "OptionMonday": "Mandag", "OptionNameSort": "Navn", "OptionNew": "Ny...", "OptionNone": "Ingen", - "OptionOnAppStartup": "Ved opstart", "OptionOnInterval": "Interval", "OptionParentalRating": "Aldersgrænse", "OptionPlainStorageFolders": "Vis alle mapper som standardmapper", @@ -826,20 +819,15 @@ "OptionRequirePerfectSubtitleMatch": "Download kun undertekster der er perfekte matches for mine videofiler", "OptionResumable": "Kan genoptages", "OptionRuntime": "Varighed", - "OptionSaturday": "Lørdag", "OptionSaveMetadataAsHidden": "Gem metadata og billeder som skjulte filer", "OptionSaveMetadataAsHiddenHelp": "Ændring af dette vil blive anvendt på nyt metadata gemt fremadrettet. Allerede eksisterende metadata-filer opdateres næste gang de gemmes af Jellyfin Server.", "OptionSpecialEpisode": "Særudsendelser", "OptionSubstring": "Delstreng", - "OptionSunday": "Søndag", - "OptionThursday": "Torsdag", "OptionTrackName": "Nummerets navn", - "OptionTuesday": "Tirsdag", "OptionTvdbRating": "TVDB bedømmelse", "OptionUnairedEpisode": "Ikke sendte episoder", "OptionUnplayed": "Ikke afspillet", "OptionWakeFromSleep": "Vågner fra dvale", - "OptionWednesday": "Onsdag", "OptionWeekdays": "Hverdage", "OptionWeekends": "Weekender", "OptionWeekly": "Ugentlig", @@ -958,20 +946,15 @@ "TabNotifications": "Underretninger", "TabOther": "Andet", "TabParentalControl": "Forældrekontrol", - "TabPassword": "Adgangskode", - "TabPlaylists": "Afspilningslister", "TabPlugins": "Tilføjelser", "TabProfile": "Profil", "TabProfiles": "Profiler", - "TabRecordings": "Optagelser", "TabResponses": "Svar", "TabResumeSettings": "Genoptag", "TabScheduledTasks": "Planlagte opgaver", - "TabSeries": "Serier", "TabSettings": "Indstillinger", "TabTrailers": "Trailere", "TabUpcoming": "Kommende", - "TabUsers": "Brugere", "TellUsAboutYourself": "Fortæl os lidt om dig selv", "ThisWizardWillGuideYou": "Denne guide vil hjælpe dig igennem opsætningen. For at begynde, vælg venligst dit fortrukne sprog.", "Thursday": "Torsdag", @@ -1031,7 +1014,6 @@ "AllLanguages": "Alle sprog", "AlwaysPlaySubtitles": "Afspil Altid", "AlwaysPlaySubtitlesHelp": "Undertekster, der matcher dine sprogindstillinger, vil altid blive indlæst uanset lydsprog.", - "HeaderLiveTV": "Live-TV", "Shows": "Serier", "Songs": "Sange", "AnyLanguage": "Hvilken som helst sprog", @@ -1115,7 +1097,6 @@ "HeaderDownloadSync": "Hentning Og Sync", "HeaderFavoritePlaylists": "Favorit Afspilningslister", "HeaderLibraryOrder": "Bibliotektsorden", - "HeaderLiveTv": "Live TV", "HeaderMusicQuality": "Musik Kvalitet", "HeaderMyMediaSmall": "Mine Medier (lille)", "HeaderNavigation": "Navigation", @@ -1280,7 +1261,6 @@ "TV": "TV", "TabCodecs": "Codeks", "TabInfo": "Information", - "TabLiveTV": "Live TV", "TabLogs": "Log", "TabServer": "Server", "TabStreaming": "Streamer", diff --git a/src/strings/de.json b/src/strings/de.json index 2e28c73d2f..84a34bc9cf 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -316,8 +316,6 @@ "HeaderLibraryFolders": "Bibliotheksverzeichnisse", "HeaderLibraryOrder": "Bibliotheksreihenfolge", "HeaderLibrarySettings": "Bibliothekseinstellungen", - "HeaderLiveTV": "Live TV", - "HeaderLiveTv": "Live-TV", "HeaderLiveTvTunerSetup": "TV Tuner Setup", "HeaderLoginFailure": "Login Fehler", "HeaderMedia": "Medien", @@ -333,7 +331,6 @@ "HeaderNewApiKey": "Neuer API-Schlüssel", "HeaderNewDevices": "Neue Geräte", "HeaderNextEpisodePlayingInValue": "Nächste Episode wird abgespielt in {0}", - "HeaderNextUp": "Als Nächstes", "HeaderNextVideoPlayingInValue": "Nächstes Video wird abgespielt in {0}", "HeaderOnNow": "Gerade läuft", "HeaderOtherItems": "Andere Inhalte", @@ -341,7 +338,6 @@ "HeaderPassword": "Passwort", "HeaderPasswordReset": "Passwort zurücksetzen", "HeaderPaths": "Pfade", - "HeaderPeople": "Personen", "HeaderPhotoAlbums": "Fotoalben", "HeaderPinCodeReset": "PIN Code zurücksetzen", "HeaderPlayAll": "Alle abspielen", @@ -365,7 +361,6 @@ "HeaderRevisionHistory": "Versionsverlauf", "HeaderRunningTasks": "Laufende Aufgaben", "HeaderScenes": "Szenen", - "HeaderSchedule": "Zeitplan", "HeaderSeasons": "Staffeln", "HeaderSecondsValue": "{0} Sekunden", "HeaderSelectCertificatePath": "Wählen Sie einen Zertifikat Ordner", @@ -378,7 +373,6 @@ "HeaderSelectTranscodingPath": "Wähle Pfad für temporäre Transkodierdateien", "HeaderSelectTranscodingPathHelp": "Suche oder gib den Pfad für die Speicherung Transkodierdateien an. Das Verzeichnis muss beschreibbar sein.", "HeaderSendMessage": "Nachricht senden", - "HeaderSeries": "Serien", "HeaderSeriesOptions": "Serienoptionen", "HeaderSeriesStatus": "Serienstatus", "HeaderServerSettings": "Server Einstellungen", @@ -926,7 +920,6 @@ "OptionExternallyDownloaded": "Externer Download", "OptionExtractChapterImage": "Aktiviere Kapitelbild-Extrahierung", "OptionFavorite": "Favoriten", - "OptionFriday": "Freitag", "OptionHasSpecialFeatures": "Besonderes Merkmal", "OptionHasSubtitles": "Untertitel", "OptionHasThemeSong": "Titellied", @@ -940,10 +933,8 @@ "OptionImdbRating": "IMDb Bewertung", "OptionLikes": "Mag ich", "OptionMissingEpisode": "Fehlende Episoden", - "OptionMonday": "Montag", "OptionNew": "Neu…", "OptionNone": "Keines", - "OptionOnAppStartup": "Bei Anwendungsstart", "OptionOnInterval": "Nach einem Intervall", "OptionParentalRating": "Altersfreigabe", "OptionPlainStorageFolders": "Zeige alle Verzeichnisse als reine Speicherorte an", @@ -961,17 +952,12 @@ "OptionResElement": "Res Element", "OptionResumable": "Fortsetzen", "OptionRuntime": "Dauer", - "OptionSaturday": "Samstag", "OptionSaveMetadataAsHidden": "Speichere Metadaten und Bilder als versteckte Dateien", "OptionSaveMetadataAsHiddenHelp": "Änderungen werden sich auf neue Metadaten angewendet. Bereits existierende Metadaten werden bei der nächsten Speicherung des Servers auf den neusten Stand gebracht.", - "OptionSunday": "Sonntag", - "OptionThursday": "Donnerstag", - "OptionTuesday": "Dienstag", "OptionTvdbRating": "TVDB Bewertung", "OptionUnairedEpisode": "Nicht ausgestrahlte Episoden", "OptionUnplayed": "Ungesehen", "OptionWakeFromSleep": "Aufwachen nach dem Schlafen", - "OptionWednesday": "Mittwoch", "OptionWeekdays": "Wöchentlich", "OptionWeekends": "An Wochenenden", "OptionWeekly": "Wöchentlich", @@ -1113,7 +1099,6 @@ "TabDirectPlay": "Direktwiedergabe", "TabEpisodes": "Episoden", "TabLatest": "Neueste", - "TabLiveTV": "Live-TV", "TabMusic": "Musik", "TabMusicVideos": "Musikvideos", "TabMyPlugins": "Meine Plugins", @@ -1122,19 +1107,14 @@ "TabNotifications": "Benachrichtigungen", "TabOther": "Andere", "TabParentalControl": "Kindersicherung", - "TabPassword": "Passwort", - "TabPlaylists": "Wiedergabelisten", "TabProfile": "Profil", "TabProfiles": "Profile", - "TabRecordings": "Aufnahmen", "TabResponses": "Antworten", "TabResumeSettings": "Fortsetzen", "TabScheduledTasks": "Geplante Aufgaben", - "TabSeries": "Serie", "TabSettings": "Einstellungen", "TabTrailers": "Trailer", "TabUpcoming": "Bevorstehend", - "TabUsers": "Benutzer", "TellUsAboutYourself": "Sagen Sie uns etwas über sich selbst", "ThemeSongs": "Titelsongs", "ThemeVideos": "Titelvideos", diff --git a/src/strings/el.json b/src/strings/el.json index 1a15e1b994..56d19b0c4a 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -298,8 +298,6 @@ "HeaderLibraryFolders": "Φάκελος βιβλιοθηκών", "HeaderLibraryOrder": "Διάταξη Βιβλιοθήκης", "HeaderLibrarySettings": "Ρυθμίσεις Βιβλιοθήκης", - "HeaderLiveTV": "Ζωντανή Τηλεόραση", - "HeaderLiveTv": "ΖΩΝΤΑΝΗ ΤΗΛΕΩΡΑΣΗ", "HeaderLoginFailure": "Αποτυχία εισόδου", "HeaderMedia": "Πολυμέσα", "HeaderMediaFolders": "Φάκελοι Πολυμέσων", @@ -314,7 +312,6 @@ "HeaderNewApiKey": "Νέο κλειδί API", "HeaderNewDevices": "Νέες Συσκευές", "HeaderNextEpisodePlayingInValue": "Επόμενο επεισόδιο που θα παιχτεί σε {0}", - "HeaderNextUp": "Επόμενο", "HeaderNextVideoPlayingInValue": "Επόμενη αναπαραγωγή βίντεο σε {0}", "HeaderOnNow": "Τώρα", "HeaderOtherItems": "Άλλα Στοιχεία", @@ -343,12 +340,10 @@ "HeaderRevisionHistory": "Ιστορικό αναθεωρήσεων", "HeaderRunningTasks": "Προγραμματισμένες Εργασίες", "HeaderScenes": "Σκηνές", - "HeaderSchedule": "Πρόγραμμα", "HeaderSeasons": "Κύκλοι", "HeaderSecondsValue": "{0} δευτερόλεπτα", "HeaderSelectServer": "Επιλογή Διακομιστή", "HeaderSendMessage": "Αποστολή Μηνύματος", - "HeaderSeries": "Σειρές", "HeaderSeriesOptions": "Επιλογές Σειρών", "HeaderSeriesStatus": "Κατάσταση Σειράς", "HeaderServerSettings": "Ρυθμίσεις διακομιστή", @@ -827,7 +822,6 @@ "OptionEveryday": "Κάθε μέρα", "OptionExternallyDownloaded": "Εξωτερική λήψη", "OptionFavorite": "Αγαπημένα", - "OptionFriday": "Παρασκευή", "OptionHasSpecialFeatures": "Ειδικά Χαρακτηριστικά", "OptionHasSubtitles": "Υπότιτλοι", "OptionHasThemeSong": "Θεματικό Τραγούδι", @@ -840,11 +834,9 @@ "OptionLikes": "Συμπαθεί", "OptionMax": "Μέγιστο", "OptionMissingEpisode": "Ελλειπή Επεισόδια", - "OptionMonday": "Δευτέρα", "OptionNameSort": "Όνομα", "OptionNew": "Νέο...", "OptionNone": "Κανένα", - "OptionOnAppStartup": "Κατά την εκκίνηση της εφαρμογής", "OptionOnInterval": "Σε ένα διάστημα", "OptionParentalRating": "Αξιολόγηση γονέων", "OptionPlainStorageFolders": "Εμφάνιση όλων των φακέλων ως φακέλων απλού χώρου αποθήκευσης", @@ -858,18 +850,13 @@ "OptionProfileVideo": "Βίντεο", "OptionReleaseDate": "Ημερομηνία Προβολής", "OptionResumable": "Αναληπτέος", - "OptionSaturday": "Σάββατο", "OptionSaveMetadataAsHidden": "Αποθηκεύστε τα μεταδεδομένα και τις εικόνες ως κρυφά αρχεία", "OptionSubstring": "Υποσύνολο", - "OptionSunday": "Κυρ", - "OptionThursday": "Πέμπτη", "OptionTrackName": "Όνομα Αρχείου", - "OptionTuesday": "Τρίτη", "OptionTvdbRating": "Tvdb Βαθμολογία", "OptionUnairedEpisode": "Επεισόδια που δεν προβλήθηκαν", "OptionUnplayed": "Δεν παίχθηκε", "OptionWakeFromSleep": "Επανεργοποιήση", - "OptionWednesday": "Τετάρτη", "OptionWeekdays": "Καθημερινές", "OptionWeekends": "Σαββατοκύριακα", "OptionWeekly": "Εβδομαδιαία", @@ -1010,21 +997,16 @@ "TabNotifications": "Ειδοποιήσεις", "TabOther": "Άλλα", "TabParentalControl": "Γονικός έλεγχος", - "TabPassword": "Κωδικός", - "TabPlaylists": "Λίστες αναπαραγωγής", "TabPlugins": "Πρόσθετα", "TabProfile": "Προφίλ", "TabProfiles": "Προφίλ", - "TabRecordings": "Εγγραφές", "TabResponses": "Απαντήσεις", "TabScheduledTasks": "Προγραμματισμένες Εργασίες", - "TabSeries": "Σειρές", "TabServer": "Διακομιστής", "TabSettings": "Ρυθμισεις", "TabStreaming": "Ροή", "TabTrailers": "Τρέιλερς", "TabUpcoming": "Επερχόμενα", - "TabUsers": "Χρήστες", "Tags": "Ετικέτες", "TagsValue": "Ετικέτες: {0}", "TellUsAboutYourself": "Πείτε μας για εσάς", @@ -1098,7 +1080,6 @@ "HeaderSelectMetadataPath": "Επιλέξτε Διαδρομή Μεταδεδομένων", "HeaderSelectCertificatePath": "Επιλέξτε Διαδρομή Πιστοποιητικού", "HeaderRemoveMediaFolder": "Αφαίρεση Φακέλου Μέσων", - "HeaderPeople": "Πρόσωπα", "HeaderIdentification": "Ταυτοποίηση", "HeaderHome": "Αρχική", "HeaderGuideProviders": "Πάροχοι Δεδομένων Προγράμματος Τηλεόρασης", diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index 2714f21147..023475923e 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -39,8 +39,6 @@ "Genres": "Genres", "HeaderAlbumArtists": "Album Artists", "HeaderContinueWatching": "Continue Watching", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", "Movies": "Movies", "Photos": "Photos", "Playlists": "Playlists", @@ -382,7 +380,6 @@ "HeaderLibraryFolders": "Library Folders", "HeaderLibraryOrder": "Library Order", "HeaderLibrarySettings": "Library Settings", - "HeaderLiveTv": "Live TV", "HeaderLiveTvTunerSetup": "Live TV Tuner Setup", "HeaderLoginFailure": "Login Failure", "HeaderMedia": "Media", @@ -445,11 +442,9 @@ "TheseSettingsAffectSubtitlesOnThisDevice": "These settings affect subtitles on this device", "TabSettings": "Settings", "TabServer": "Server", - "TabSeries": "Series", "TabScheduledTasks": "Scheduled Tasks", "TabResumeSettings": "Resume", "TabResponses": "Responses", - "TabRecordings": "Recordings", "TabOther": "Other", "TabNotifications": "Notifications", "TabNetworks": "Networks", @@ -570,20 +565,16 @@ "OptionWeekly": "Weekly", "OptionWeekends": "Weekends", "OptionWeekdays": "Weekdays", - "OptionWednesday": "Wednesday", "OptionWakeFromSleep": "Wake from sleep", "OptionUnplayed": "Unplayed", "OptionUnairedEpisode": "Unaired Episodes", "OptionTrackName": "Track Name", "OptionThumbCard": "Thumb card", "OptionThumb": "Thumb", - "OptionThursday": "Thursday", - "OptionSunday": "Sunday", "OptionSubstring": "Substring", "OptionSpecialEpisode": "Specials", "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by Jellyfin Server.", "OptionSaveMetadataAsHidden": "Save metadata and images as hidden files", - "OptionSaturday": "Saturday", "OptionRuntime": "Runtime", "OptionResumable": "Resumable", "OptionResElement": "res element", @@ -601,7 +592,6 @@ "OptionPlainStorageFoldersHelp": "If enabled, all folders are represented in DIDL as \"object.container.storageFolder\" instead of a more specific type, such as \"object.container.person.musicArtist\".", "OptionParentalRating": "Parental Rating", "OptionOnInterval": "On an interval", - "OptionOnAppStartup": "On application startup", "OptionNone": "None", "OptionNew": "New…", "OptionMissingEpisode": "Missing Episodes", @@ -885,7 +875,6 @@ "TellUsAboutYourself": "Tell us about yourself", "TagsValue": "Tags: {0}", "Tags": "Tags", - "TabUsers": "Users", "TabUpcoming": "Upcoming", "TabTrailers": "Trailers", "LabelDisplayMode": "Display mode:", @@ -898,10 +887,8 @@ "TabProfiles": "Profiles", "TabProfile": "Profile", "TabPlugins": "Plugins", - "TabPlaylists": "Playlists", "TabNfoSettings": "NFO Settings", "TabNetworking": "Networking", - "TabLiveTV": "Live TV", "TabLatest": "Latest", "TabInfo": "Info", "TabEpisodes": "Episodes", @@ -1217,7 +1204,6 @@ "OptionHasThemeSong": "Theme Song", "OptionHasSubtitles": "Subtitles", "OptionHasSpecialFeatures": "Special Features", - "OptionFriday": "Friday", "OptionExtractChapterImage": "Enable chapter image extraction", "OptionExternallyDownloaded": "External download", "OptionEquals": "Equals", @@ -1269,13 +1255,11 @@ "ValueOneMovie": "1 movie", "ValueOneEpisode": "1 episode", "ValueEpisodeCount": "{0} episodes", - "TabPassword": "Password", "TabParentalControl": "Parental Control", "SkipEpisodesAlreadyInMyLibraryHelp": "Episodes will be compared using season and episode numbers, when available.", "RefreshQueued": "Refresh queued.", "Play": "Play", "PasswordResetProviderHelp": "Choose a Password Reset Provider to be used when this user requests a password reset", - "OptionTuesday": "Tuesday", "OptionReleaseDate": "Release Date", "OptionDisplayFolderViewHelp": "Display folders alongside your other media libraries. This can be useful if you'd like to have a plain folder view.", "OptionDislikes": "Dislikes", @@ -1315,7 +1299,6 @@ "Save": "Save", "People": "People", "OptionNameSort": "Name", - "OptionMonday": "Monday", "MusicAlbum": "Music Album", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, and Albums. Click the + button to start creating collections.", "ShowTitle": "Show title", @@ -1331,7 +1314,6 @@ "HeaderServerSettings": "Server Settings", "HeaderSeriesStatus": "Series Status", "HeaderSeriesOptions": "Series Options", - "HeaderSeries": "Series", "HeaderSendMessage": "Send Message", "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", "HeaderSubtitleDownloads": "Subtitle Downloads", @@ -1345,7 +1327,6 @@ "HeaderSelectCertificatePath": "Select Certificate Path", "HeaderSecondsValue": "{0} Seconds", "HeaderSeasons": "Seasons", - "HeaderSchedule": "Schedule", "HeaderScenes": "Scenes", "HeaderRunningTasks": "Running Tasks", "HeaderRevisionHistory": "Revision History", @@ -1369,7 +1350,6 @@ "HeaderPlayAll": "Play All", "HeaderPinCodeReset": "Reset Pin Code", "HeaderPhotoAlbums": "Photo Albums", - "HeaderPeople": "People", "HeaderHome": "Home", "HeaderFavoritePeople": "Favourite People", "FetchingData": "Fetching additional data", diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 355ef9c96c..0f37014b76 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -379,8 +379,6 @@ "HeaderLibraryFolders": "Library Folders", "HeaderLibraryOrder": "Library Order", "HeaderLibrarySettings": "Library Settings", - "HeaderLiveTV": "Live TV", - "HeaderLiveTv": "Live TV", "HeaderLiveTvTunerSetup": "Live TV Tuner Setup", "HeaderLoginFailure": "Login Failure", "HeaderMedia": "Media", @@ -397,7 +395,6 @@ "HeaderNewApiKey": "New API Key", "HeaderNewDevices": "New Devices", "HeaderNextEpisodePlayingInValue": "Next Episode Playing in {0}", - "HeaderNextUp": "Next Up", "HeaderNextVideoPlayingInValue": "Next Video Playing in {0}", "HeaderOnNow": "On Now", "HeaderOtherItems": "Other Items", @@ -405,7 +402,6 @@ "HeaderPassword": "Password", "HeaderPasswordReset": "Password Reset", "HeaderPaths": "Paths", - "HeaderPeople": "People", "HeaderPhotoAlbums": "Photo Albums", "HeaderPinCodeReset": "Reset Pin Code", "HeaderPlayAll": "Play All", @@ -431,7 +427,6 @@ "HeaderRevisionHistory": "Revision History", "HeaderRunningTasks": "Running Tasks", "HeaderScenes": "Scenes", - "HeaderSchedule": "Schedule", "HeaderSeasons": "Seasons", "HeaderSecondsValue": "{0} Seconds", "HeaderSelectCertificatePath": "Select Certificate Path", @@ -444,7 +439,6 @@ "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcode files. The folder must be writeable.", "HeaderSendMessage": "Send Message", - "HeaderSeries": "Series", "HeaderSeriesOptions": "Series Options", "HeaderSeriesStatus": "Series Status", "HeaderServerAddressSettings": "Server Address Settings", @@ -1139,7 +1133,6 @@ "OptionExternallyDownloaded": "External download", "OptionExtractChapterImage": "Enable chapter image extraction", "OptionFavorite": "Favorites", - "OptionFriday": "Friday", "OptionHasSpecialFeatures": "Special Features", "OptionHasSubtitles": "Subtitles", "OptionHasThemeSong": "Theme Song", @@ -1160,11 +1153,9 @@ "OptionLoginAttemptsBeforeLockoutHelp": "A value of zero means inheriting the default of three attempts for normal users and five for administrators. Setting this to -1 will disable the feature.", "OptionMax": "Max", "OptionMissingEpisode": "Missing Episodes", - "OptionMonday": "Monday", "OptionNameSort": "Name", "OptionNew": "New…", "OptionNone": "None", - "OptionOnAppStartup": "On application startup", "OptionOnInterval": "On an interval", "OptionParentalRating": "Parental Rating", "OptionPlainStorageFolders": "Display all folders as plain storage folders", @@ -1192,22 +1183,17 @@ "OptionResElement": "res element", "OptionResumable": "Resumable", "OptionRuntime": "Runtime", - "OptionSaturday": "Saturday", "OptionSaveMetadataAsHidden": "Save metadata and images as hidden files", "OptionSaveMetadataAsHiddenHelp": "Changing this will apply to new metadata saved going forward. Existing metadata files will be updated the next time they are saved by the server.", "OptionSpecialEpisode": "Specials", "OptionSubstring": "Substring", - "OptionSunday": "Sunday", - "OptionThursday": "Thursday", "OptionThumb": "Thumb", "OptionThumbCard": "Thumb card", "OptionTrackName": "Track Name", - "OptionTuesday": "Tuesday", "OptionTvdbRating": "TVDB Rating", "OptionUnairedEpisode": "Unaired Episodes", "OptionUnplayed": "Unplayed", "OptionWakeFromSleep": "Wake from sleep", - "OptionWednesday": "Wednesday", "OptionWeekdays": "Weekdays", "OptionWeekends": "Weekends", "OptionWeekly": "Weekly", @@ -1374,7 +1360,6 @@ "TabEpisodes": "Episodes", "TabInfo": "Info", "TabLatest": "Latest", - "TabLiveTV": "Live TV", "TabLogs": "Logs", "TabMusic": "Music", "TabMusicVideos": "Music Videos", @@ -1385,22 +1370,17 @@ "TabNotifications": "Notifications", "TabOther": "Other", "TabParentalControl": "Parental Control", - "TabPassword": "Password", - "TabPlaylists": "Playlists", "TabPlugins": "Plugins", "TabProfile": "Profile", "TabProfiles": "Profiles", - "TabRecordings": "Recordings", "TabResponses": "Responses", "TabResumeSettings": "Resume", "TabScheduledTasks": "Scheduled Tasks", - "TabSeries": "Series", "TabServer": "Server", "TabSettings": "Settings", "TabStreaming": "Streaming", "TabTrailers": "Trailers", "TabUpcoming": "Upcoming", - "TabUsers": "Users", "Tags": "Tags", "TagsValue": "Tags: {0}", "TellUsAboutYourself": "Tell us about yourself", diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 0ae3654a9b..3ff15ab72b 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -5,8 +5,6 @@ "FolderTypeTvShows": "TV", "HeaderAddUser": "Agregar Usuario", "HeaderLatestEpisodes": "Últimos capítulos", - "HeaderLiveTV": "TV en vivo", - "HeaderSeries": "Series", "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar capítulos no disponibles en temporadas", "LabelFinish": "Terminar", "LabelYoureDone": "Ha terminado!", @@ -35,7 +33,6 @@ "Genres": "Géneros", "HeaderAlbumArtists": "Artistas de álbum", "HeaderContinueWatching": "Seguir viendo", - "HeaderNextUp": "Siguiente", "Movies": "Películas", "Photos": "Fotos", "Playlists": "Listas de reproducción", @@ -373,7 +370,6 @@ "HeaderMedia": "Medios", "HeaderLoginFailure": "Error al iniciar sesión", "HeaderLiveTvTunerSetup": "Configuración del sintonizador de TV en vivo", - "HeaderLiveTv": "TV en vivo", "HeaderLibrarySettings": "Configuraciones de biblioteca", "HeaderLibraryOrder": "Orden de biblioteca", "HeaderLibraryFolders": "Carpetas de biblioteca", @@ -410,7 +406,6 @@ "HeaderPlayAll": "Reproducir todo", "HeaderPinCodeReset": "Restablecer código PIN", "HeaderPhotoAlbums": "Álbumes de fotos", - "HeaderPeople": "Personas", "HeaderPaths": "Rutas", "HeaderPasswordReset": "Restablecer contraseña", "HeaderPassword": "Contraseña", @@ -493,7 +488,6 @@ "HeaderSelectCertificatePath": "Seleccionar ruta del certificado", "HeaderSecondsValue": "{0} segundos", "HeaderSeasons": "Temporadas", - "HeaderSchedule": "Programación", "HeaderScenes": "Escenas", "HeaderRunningTasks": "Ejecución de tareas", "HeaderRevisionHistory": "Revisión histórica", @@ -1213,21 +1207,16 @@ "OptionWeekly": "Semanal", "OptionWeekends": "Fines de semana", "OptionWeekdays": "Días de la semana", - "OptionWednesday": "Miércoles", "OptionWakeFromSleep": "Despertarse del sueño", "OptionUnplayed": "No reproducido", "OptionTvdbRating": "Calificación de TVDB", - "OptionTuesday": "Martes", "OptionTrackName": "Nombre de la pista", "OptionThumbCard": "Tarjeta del pulgar", "OptionThumb": "Pulgar", - "OptionThursday": "Jueves", - "OptionSunday": "Domingo", "OptionSubstring": "Subcadena", "OptionSpecialEpisode": "Especiales", "OptionSaveMetadataAsHiddenHelp": "Cambiar esto se aplicará a los nuevos metadatos guardados en el futuro. Los archivos de metadatos existentes se actualizarán la próxima vez que el servidor Jellyfin los guarde.", "OptionSaveMetadataAsHidden": "Guardar metadatos e imágenes como archivos ocultos", - "OptionSaturday": "Sábado", "OptionRuntime": "Tiempo de ejecución", "OptionResumable": "Reanudable", "OptionResElement": "elemento res", @@ -1255,11 +1244,9 @@ "OptionPlainStorageFolders": "Mostrar todas las carpetas como carpetas de almacenamiento sin formato", "OptionParentalRating": "Calificación parental", "OptionOnInterval": "En un intervalo", - "OptionOnAppStartup": "En el inicio de la aplicación", "OptionNone": "Ninguno", "OptionNew": "Nuevo…", "OptionNameSort": "Nombre", - "OptionMonday": "Lunes", "OptionMax": "Máx.", "OptionLoginAttemptsBeforeLockoutHelp": "Un valor de cero significa heredar el valor predeterminado de tres intentos para usuarios normales y cinco para administradores. Establecer esto en -1 deshabilitará la función.", "OptionLoginAttemptsBeforeLockout": "Determina cuántos intentos de inicio de sesión incorrectos se pueden realizar antes de que ocurra el bloqueo.", @@ -1279,7 +1266,6 @@ "OptionHasThemeSong": "Tema musical", "OptionHasSubtitles": "Subtítulos", "OptionHasSpecialFeatures": "Características especiales", - "OptionFriday": "Viernes", "OptionFavorite": "Favoritos", "OptionExtractChapterImage": "Habilitar la extracción de imágenes de capítulos", "OptionExternallyDownloaded": "Descarga externa", @@ -1372,7 +1358,6 @@ "ThemeSongs": "Canciones temáticas", "TagsValue": "Etiquetas: {0}", "Tags": "Etiquetas", - "TabUsers": "Usuarios", "TabUpcoming": "Próximamente", "MarkUnplayed": "Marcar no reproducido", "MarkPlayed": "Marcar reproducido", @@ -1382,16 +1367,12 @@ "TabStreaming": "Transmisión", "TabSettings": "Configuraciones", "TabServer": "Servidor", - "TabSeries": "Series", "TabScheduledTasks": "Tareas programadas", "TabResumeSettings": "Continuar", "TabResponses": "Respuestas", - "TabRecordings": "Grabaciones", "TabProfiles": "Perfiles", "TabProfile": "Perfil", "TabPlugins": "Complementos", - "TabPlaylists": "Listas de reproducción", - "TabPassword": "Contraseña", "TabParentalControl": "Control parental", "TabOther": "Otro", "TabNotifications": "Notificaciones", @@ -1402,7 +1383,6 @@ "TabMusicVideos": "Videos musicales", "TabMusic": "Música", "TabLogs": "Registros", - "TabLiveTV": "TV en vivo", "TabLatest": "Último", "TabInfo": "Información", "TabDirectPlay": "Reproducción directa", diff --git a/src/strings/es-mx.json b/src/strings/es-mx.json index e682b2f4cb..c7669c4429 100644 --- a/src/strings/es-mx.json +++ b/src/strings/es-mx.json @@ -332,8 +332,6 @@ "HeaderLibraryFolders": "Carpetas de bibliotecas", "HeaderLibraryOrder": "Orden de las bibliotecas", "HeaderLibrarySettings": "Configuraciones de biblioteca", - "HeaderLiveTV": "TV en vivo", - "HeaderLiveTv": "TV en vivo", "HeaderLiveTvTunerSetup": "Configuración del sintonizador de TV", "HeaderLoginFailure": "Falló el inicio de sesión", "HeaderMedia": "Medios", @@ -349,7 +347,6 @@ "HeaderNewApiKey": "Nueva clave API", "HeaderNewDevices": "Nuevos dispositivos", "HeaderNextEpisodePlayingInValue": "El siguiente episodio se reproducirá en {0}", - "HeaderNextUp": "A continuación", "HeaderNextVideoPlayingInValue": "El siguiente video se reproducirá en {0}", "HeaderOnNow": "Transmitiendo ahora", "HeaderOtherItems": "Otros elementos", @@ -357,7 +354,6 @@ "HeaderPassword": "Contraseña", "HeaderPasswordReset": "Restablecer contraseña", "HeaderPaths": "Rutas", - "HeaderPeople": "Personas", "HeaderPhotoAlbums": "Álbumes de fotos", "HeaderPinCodeReset": "Restablecer código PIN", "HeaderPlayAll": "Reproducir todo", @@ -382,7 +378,6 @@ "HeaderRevisionHistory": "Historial de versiones", "HeaderRunningTasks": "Tareas en ejecución", "HeaderScenes": "Escenas", - "HeaderSchedule": "Programación", "HeaderSeasons": "Temporadas", "HeaderSecondsValue": "{0} segundos", "HeaderSelectCertificatePath": "Selecciona la ruta del certificado", @@ -395,7 +390,6 @@ "HeaderSelectTranscodingPath": "Selecciona la ruta para los archivos temporales de transcodificación", "HeaderSelectTranscodingPathHelp": "Explora o introduce la ruta a utilizar para los archivos temporales de transcodificación. Se debe tener permisos de escritura en dicha carpeta.", "HeaderSendMessage": "Enviar mensaje", - "HeaderSeries": "Series", "HeaderSeriesOptions": "Opciones de serie", "HeaderSeriesStatus": "Estado de la serie", "HeaderServerSettings": "Configuración del servidor", @@ -973,7 +967,6 @@ "OptionExternallyDownloaded": "Descarga externa", "OptionExtractChapterImage": "Habilitar la extracción de imágenes de los capítulos", "OptionFavorite": "Favoritos", - "OptionFriday": "Viernes", "OptionHasSpecialFeatures": "Características especiales", "OptionHasSubtitles": "Subtítulos", "OptionHasThemeSong": "Canción temática", @@ -989,11 +982,9 @@ "OptionLikes": "Me gusta", "OptionMax": "Máximo", "OptionMissingEpisode": "Episodios faltantes", - "OptionMonday": "Lunes", "OptionNameSort": "Nombre", "OptionNew": "Nuevo…", "OptionNone": "Ninguno", - "OptionOnAppStartup": "Al iniciar la aplicación", "OptionOnInterval": "En un intervalo", "OptionParentalRating": "Clasificación parental", "OptionPlainStorageFolders": "Mostrar todas las carpetas como carpetas de almacenamiento simples", @@ -1014,20 +1005,15 @@ "OptionResElement": "Elemento res", "OptionResumable": "Reanudable", "OptionRuntime": "Duración", - "OptionSaturday": "Sábado", "OptionSaveMetadataAsHidden": "Guardar metadatos e imágenes como archivos ocultos", "OptionSaveMetadataAsHiddenHelp": "Cambiar esto se aplicará a los nuevos metadatos guardados en el futuro. Los archivos de metadatos existentes serán actualizados la próxima vez que sean guardados por el servidor Jellyfin.", "OptionSpecialEpisode": "Especiales", "OptionSubstring": "Subcadena", - "OptionSunday": "Domingo", - "OptionThursday": "Jueves", "OptionTrackName": "Nombre de la pista", - "OptionTuesday": "Martes", "OptionTvdbRating": "Calificación de TVDB", "OptionUnairedEpisode": "Episodios no emitidos", "OptionUnplayed": "No reproducido", "OptionWakeFromSleep": "Despertar de la suspensión", - "OptionWednesday": "Miércoles", "OptionWeekdays": "Días de semana", "OptionWeekends": "Fines de semana", "OptionWeekly": "Semanal", @@ -1171,7 +1157,6 @@ "TabDirectPlay": "Reproducción directa", "TabEpisodes": "Episodios", "TabLatest": "Recientes", - "TabLiveTV": "TV en vivo", "TabLogs": "Registros", "TabMusic": "Música", "TabMusicVideos": "Videos musicales", @@ -1181,12 +1166,9 @@ "TabNotifications": "Notificaciones", "TabOther": "Otros", "TabParentalControl": "Control parental", - "TabPassword": "Contraseña", - "TabPlaylists": "Listas de reproducción", "TabPlugins": "Complementos", "TabProfile": "Perfil", "TabProfiles": "Perfiles", - "TabRecordings": "Grabaciones", "TabResponses": "Respuestas", "TabResumeSettings": "Reanudar", "TabScheduledTasks": "Tareas programadas", @@ -1195,7 +1177,6 @@ "TabStreaming": "Transmisión", "TabTrailers": "Trailers", "TabUpcoming": "Próximamente", - "TabUsers": "Usuarios", "Tags": "Etiquetas", "TagsValue": "Etiquetas: {0}", "TellUsAboutYourself": "Háblanos de ti", @@ -1337,7 +1318,6 @@ "TV": "TV", "TabCodecs": "Códecs", "TabInfo": "Información", - "TabSeries": "Series", "ValueMinutes": "{0} min", "ValueSeriesCount": "{0} series", "Vertical": "Vertical", diff --git a/src/strings/es.json b/src/strings/es.json index 3bd59126a9..09e5f5fcf4 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -287,8 +287,6 @@ "HeaderLibraryFolders": "Carpetas de la biblioteca", "HeaderLibraryOrder": "Orden de la biblioteca", "HeaderLibrarySettings": "Ajustes de la biblioteca", - "HeaderLiveTV": "Televisión en directo", - "HeaderLiveTv": "Televisión en directo", "HeaderLiveTvTunerSetup": "Ajustes del sintonizador de televisión", "HeaderLoginFailure": "Fallo de inicio de sesión", "HeaderMedia": "Medios", @@ -303,7 +301,6 @@ "HeaderNewApiKey": "Nueva clave API", "HeaderNewDevices": "Nuevos dispositivos", "HeaderNextEpisodePlayingInValue": "Siguiente episodio empezará en {0}", - "HeaderNextUp": "Siguiente", "HeaderNextVideoPlayingInValue": "Siguiente vídeo empezará en {0}", "HeaderOnNow": "Transmitiendo ahora", "HeaderOtherItems": "Otros elementos", @@ -311,7 +308,6 @@ "HeaderPassword": "Contraseña", "HeaderPasswordReset": "Reestablecer contraseña", "HeaderPaths": "Ruta", - "HeaderPeople": "Gente", "HeaderPinCodeReset": "Restablecer código PIN", "HeaderPlayAll": "Reproducir todo", "HeaderPlayOn": "Reproducir en", @@ -335,7 +331,6 @@ "HeaderRevisionHistory": "Histórico de revisiones", "HeaderRunningTasks": "Tareas en ejecución", "HeaderScenes": "Escenas", - "HeaderSchedule": "Horario", "HeaderSeasons": "Temporadas", "HeaderSecondsValue": "{0} segundos", "HeaderSelectCertificatePath": "Elige la ruta del certificado", @@ -348,7 +343,6 @@ "HeaderSelectTranscodingPath": "Ruta para los archivos temporales de las conversiones", "HeaderSelectTranscodingPathHelp": "Busca o escribe la ruta que se utilizará para guardar los archivos que se generarán mientras se convierten los archivos. Jellyfin debe tener permisos de escritura en la carpeta.", "HeaderSendMessage": "Enviar mensaje", - "HeaderSeries": "Series", "HeaderSeriesOptions": "Opciones de series", "HeaderServerSettings": "Ajustes del servidor", "HeaderSettings": "Ajustes", @@ -895,7 +889,6 @@ "OptionExternallyDownloaded": "Descarga externa", "OptionExtractChapterImage": "Habilitar la extracción de imágenes de los capítulos", "OptionFavorite": "Favoritos", - "OptionFriday": "Viernes", "OptionHasSpecialFeatures": "Características especiales", "OptionHasSubtitles": "Subtítulos", "OptionHasThemeSong": "Banda sonora", @@ -910,11 +903,9 @@ "OptionLikes": "Me gusta", "OptionMax": "Máximo", "OptionMissingEpisode": "Episodios que faltan", - "OptionMonday": "Lunes", "OptionNameSort": "Nombre", "OptionNew": "Nuevo…", "OptionNone": "Nada", - "OptionOnAppStartup": "Al iniciar la aplicación", "OptionOnInterval": "En un intervalo", "OptionParentalRating": "Clasificación parental", "OptionPlainStorageFolders": "Ver todas las carpetas como carpetas de almacenamiento sin formato", @@ -935,19 +926,14 @@ "OptionResElement": "Elemento res", "OptionResumable": "Se puede continuar", "OptionRuntime": "Tiempo", - "OptionSaturday": "Sábado", "OptionSaveMetadataAsHidden": "Guardar las etiquetas e imágenes como archivos ocultos", "OptionSaveMetadataAsHiddenHelp": "La configuración se aplicará a las nuevas etiquetas que se creen. Las etiquetas existentes se actualizarán la próxima vez que sean guardadas por Jellyfin.", "OptionSpecialEpisode": "Especiales", - "OptionSunday": "Domingo", - "OptionThursday": "Jueves", "OptionTrackName": "Nombre de pista", - "OptionTuesday": "Martes", "OptionTvdbRating": "Valoración TVDB", "OptionUnairedEpisode": "Episodios no emitidos", "OptionUnplayed": "No reproducido", "OptionWakeFromSleep": "Despertar", - "OptionWednesday": "Miércoles", "OptionWeekdays": "Días de la semana", "OptionWeekends": "Fines de semana", "OptionWeekly": "Semanal", @@ -1075,7 +1061,6 @@ "TabDirectPlay": "Reproducción directa", "TabEpisodes": "Episodios", "TabLatest": "Novedades", - "TabLiveTV": "Televisión en directo", "TabMusic": "Música", "TabMusicVideos": "Videos musicales", "TabMyPlugins": "Mis extensiones", @@ -1084,11 +1069,8 @@ "TabNotifications": "Notificaciones", "TabOther": "Otros", "TabParentalControl": "Control parental", - "TabPassword": "Contraseña", - "TabPlaylists": "Listas de reproducción", "TabProfile": "Perfil", "TabProfiles": "Perfiles", - "TabRecordings": "Grabaciones", "TabResponses": "Respuestas", "TabResumeSettings": "Reanudación", "TabScheduledTasks": "Tareas programadas", @@ -1096,7 +1078,6 @@ "TabSettings": "Opciones", "TabStreaming": "Transmisión", "TabUpcoming": "Próximos", - "TabUsers": "Usuarios", "Tags": "Etiquetas", "TellUsAboutYourself": "Háblenos acerca de usted", "TheseSettingsAffectSubtitlesOnThisDevice": "Estas opciones afectan a los subtítulos en este dispositivo", @@ -1332,7 +1313,6 @@ "TabInfo": "Info", "TabLogs": "Registros", "TabPlugins": "Extensiones", - "TabSeries": "Series", "TabTrailers": "Tráilers", "TagsValue": "Etiquetas: {0}", "ThemeSongs": "Banda sonora", diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 815018e9c3..326ffd5914 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -6,8 +6,6 @@ "Playlists": "Listas de reproducción", "Photos": "Fotos", "Movies": "Películas", - "HeaderNextUp": "A continuación", - "HeaderLiveTV": "TV en vivo", "HeaderFavoriteSongs": "Canciones favoritas", "HeaderFavoriteShows": "Programas favoritos", "HeaderFavoriteEpisodes": "Episodios favoritos", @@ -130,21 +128,16 @@ "TellUsAboutYourself": "Háblanos de ti", "TagsValue": "Etiquetas: {0}", "Tags": "Etiquetas", - "TabUsers": "Usuarios", "TabUpcoming": "Próximamente", "TabStreaming": "Transmisión", "TabSettings": "Configuración", "TabServer": "Servidor", - "TabSeries": "Series", "TabScheduledTasks": "Tareas programadas", "TabResumeSettings": "Reanudar", "TabResponses": "Respuestas", - "TabRecordings": "Grabaciones", "TabProfiles": "Perfiles", "TabProfile": "Perfil", "TabPlugins": "Complementos", - "TabPlaylists": "Listas de reproducción", - "TabPassword": "Contraseña", "TabParentalControl": "Control parental", "TabOther": "Otros", "TabNotifications": "Notificaciones", @@ -155,7 +148,6 @@ "TabMusicVideos": "Videos musicales", "TabMusic": "Música", "TabLogs": "Registros", - "TabLiveTV": "TV en vivo", "TabInfo": "Información", "TabEpisodes": "Episodios", "TabDirectPlay": "Reproducción directa", @@ -172,11 +164,9 @@ "OptionPlainStorageFolders": "Mostrar todas las carpetas como carpetas de almacenamiento simples", "OptionParentalRating": "Clasificación parental", "OptionOnInterval": "En un intervalo", - "OptionOnAppStartup": "Al iniciar la aplicación", "OptionNone": "Ninguno", "OptionNew": "Nuevo…", "OptionNameSort": "Nombre", - "OptionMonday": "Lunes", "OptionMissingEpisode": "Episodios faltantes", "OptionMax": "Máximo", "OptionLoginAttemptsBeforeLockoutHelp": "Un valor de cero significa heredar el valor predeterminado de tres intentos para los usuarios normales y cinco para los administradores. Ajustar esto a -1 deshabilitará la función.", @@ -197,7 +187,6 @@ "OptionHasThemeSong": "Canción temática", "OptionHasSubtitles": "Subtítulos", "OptionHasSpecialFeatures": "Características especiales", - "OptionFriday": "Viernes", "OptionFavorite": "Favoritos", "OptionExtractChapterImage": "Habilitar la extracción de imágenes de los capítulos", "OptionExternallyDownloaded": "Descarga externa", @@ -611,21 +600,16 @@ "OptionWeekly": "Semanal", "OptionWeekends": "Fines de semana", "OptionWeekdays": "Días de semana", - "OptionWednesday": "Miércoles", "OptionWakeFromSleep": "Despertar de la suspensión", "OptionUnplayed": "No reproducido", "OptionUnairedEpisode": "Episodios no emitidos", "OptionTvdbRating": "Calificación de TVDB", - "OptionTuesday": "Martes", "OptionTrackName": "Nombre de la pista", "OptionThumb": "Miniatura", - "OptionThursday": "Jueves", - "OptionSunday": "Domingo", "OptionSubstring": "Subcadena", "OptionSpecialEpisode": "Especiales", "OptionSaveMetadataAsHiddenHelp": "Cambiar esto se aplicará a los nuevos metadatos guardados en el futuro. Los archivos de metadatos existentes serán actualizados la próxima vez que sean guardados por el servidor Jellyfin.", "OptionSaveMetadataAsHidden": "Guardar metadatos e imágenes como archivos ocultos", - "OptionSaturday": "Sábado", "OptionRuntime": "Duración", "OptionResumable": "Reanudable", "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.", @@ -1021,7 +1005,6 @@ "HeaderSelectCertificatePath": "Selecciona la ruta del certificado", "HeaderSecondsValue": "{0} segundos", "HeaderSeasons": "Temporadas", - "HeaderSchedule": "Programación", "HeaderScenes": "Escenas", "HeaderRunningTasks": "Tareas en ejecución", "HeaderRevisionHistory": "Historial de versiones", @@ -1047,7 +1030,6 @@ "HeaderPlayAll": "Reproducir todo", "HeaderPinCodeReset": "Restablecer código PIN", "HeaderPhotoAlbums": "Álbumes de fotos", - "HeaderPeople": "Personas", "HeaderPaths": "Rutas", "HeaderPasswordReset": "Restablecer contraseña", "HeaderPassword": "Contraseña", @@ -1071,7 +1053,6 @@ "HeaderMedia": "Medios", "HeaderLoginFailure": "Falló el inicio de sesión", "HeaderLiveTvTunerSetup": "Configuración del sintonizador de TV", - "HeaderLiveTv": "TV en vivo", "HeaderLibrarySettings": "Configuraciones de biblioteca", "HeaderLibraryOrder": "Orden de las bibliotecas", "HeaderLibraryFolders": "Carpetas de bibliotecas", @@ -1336,7 +1317,6 @@ "HeaderServerAddressSettings": "Configuración de la dirección del servidor", "HeaderSeriesStatus": "Estado de la serie", "HeaderSeriesOptions": "Opciones de serie", - "HeaderSeries": "Series", "HeaderSendMessage": "Enviar mensaje", "HeaderSelectTranscodingPathHelp": "Explora o escribe la ruta para los archivos de transcodificación. Se tienen que tener permisos de escritura en esa carpeta.", "HeaderSelectTranscodingPath": "Selecciona la ruta para los archivos temporales de transcodificación", diff --git a/src/strings/fa.json b/src/strings/fa.json index a764f28998..61c2f8f26c 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -30,7 +30,6 @@ "HeaderInstantMix": "درهم کردن فوری", "HeaderKodiMetadataHelp": "برای فعال یا غیرفعال سازی ابرداده‌های Nfo ، یک کتابخانه را در صفحه تنظیم کتابخانه Jellyfin ویرایش کرده و قسمت سرورهای ابرداده را مسیردهی کنید.", "HeaderLatestEpisodes": "آخرین قسمت ها", - "HeaderNextUp": "قسمت بعدی", "HeaderPaths": "مسیرها", "HeaderPlayAll": "پخش همه", "HeaderPreferredMetadataLanguage": "زبان مدنظر اطلاعات محتوی", @@ -86,7 +85,6 @@ "TabMusicVideos": "موزیک ویدیوها", "TabNetworks": "شبکه ها", "TabNotifications": "اعلان ها", - "TabPassword": "رمز عبور", "TabProfile": "پروفایل", "TabProfiles": "پروفایل ها", "TabUpcoming": "بزودی", @@ -109,7 +107,6 @@ "HeaderFavoriteAlbums": "آلبوم‌های مورد علاقه", "HeaderFavoriteArtists": "هنرمندان مورد علاقه", "HeaderFavoriteSongs": "آهنگ‌های مورد علاقه", - "HeaderLiveTV": "پخش زنده", "Movies": "فیلم‌ها", "Photos": "عکس‌ها", "Playlists": "لیست‌های پخش", @@ -292,7 +289,6 @@ "HeaderPlayOn": "پخش در", "HeaderPinCodeReset": "بازنشانی پین کد", "HeaderPhotoAlbums": "آلبوم‌های عکس", - "HeaderPeople": "افراد", "HeaderPasswordReset": "بازنشانی گذرواژه", "HeaderPassword": "گذرواژه", "HeaderParentalRatings": "رتبه بندی والدین", @@ -314,7 +310,6 @@ "HeaderMedia": "رسانه", "HeaderLoginFailure": "ورود ناموفق", "HeaderLiveTvTunerSetup": "تنظیم تلویزیون زنده", - "HeaderLiveTv": "تلویزیون زنده", "HeaderLibrarySettings": "تنظیمات کتابخانه", "HeaderLibraryOrder": "ترتیت کتابخانه", "HeaderLibraryFolders": "پوشه‌های کتابخانه", @@ -428,7 +423,6 @@ "TabMyPlugins": "افزونه‌های من", "TabMusic": "موسیقی‌ها", "TabLogs": "واقعه نگار‌ها", - "TabLiveTV": "تلویزیون زنده", "LatestFromLibrary": "جدیدترین‌های {0}", "Large": "بزرگ", "LabelffmpegPath": "مسیر FFmpeg:", @@ -495,7 +489,6 @@ "ThemeSongs": "آهنگ‌های تم", "TagsValue": "برچسب‌ها: {0}", "Tags": "برچسب‌ها", - "TabUsers": "کاربران", "Absolute": "کامل", "Writer": "نویسنده", "Whitelist": "لیست سفید", @@ -566,12 +559,9 @@ "AdditionalNotificationServices": "برای نصب سرویس‌های اعلان اضافی، در فروشگاه افزونه‌ها جستجو کنید.", "OptionThumbCard": "کارت بندانگشتی", "OptionThumb": "بندانگشتی", - "OptionThursday": "پنجشنبه", - "OptionSunday": "یکشنبه", "OptionSubstring": "زیررشته", "OptionSpecialEpisode": "ویژه‌ها", "OptionSaveMetadataAsHidden": "ذخیره فراداده‌ها و عکس‌ها به عنوان فایل‌های پنهان", - "OptionSaturday": "شنبه", "OptionRuntime": "زمان اجرا", "OptionResumable": "قابل از سرگیری", "OptionResElement": "عنصر res", @@ -617,13 +607,10 @@ "TabStreaming": "در حال پخش", "TabSettings": "تنظیمات", "TabServer": "سرور", - "TabSeries": "سریال‌ها", "TabScheduledTasks": "وظایف زمان بندی شده", "TabResumeSettings": "ادامه", "TabResponses": "پاسخ‌ها", - "TabRecordings": "ضبط‌ها", "TabPlugins": "افزونه‌ها", - "TabPlaylists": "لیست‌های پخش", "TabParentalControl": "رتبه بندی والدین", "TabOther": "سایر", "TabNfoSettings": "تنظیمات NFO", @@ -654,11 +641,9 @@ "OptionWeekly": "هفتگی", "OptionWeekends": "آخر هفته ها", "OptionWeekdays": "روز های هفته", - "OptionWednesday": "چهارشنبه", "OptionWakeFromSleep": "از خواب بیدار شدن", "OptionUnairedEpisode": "قسمت های پخش نشده", "OptionTvdbRating": "نمره TVDB", - "OptionTuesday": "سه شنبه", "OptionTrackName": "نام ترک", "OptionRequirePerfectSubtitleMatchHelp": "نتیجه کامل زیرنویس ها را به صورتی فیلتر می کند که فقط مواردی را که دقیقا با فایل تصویری شما آزمایش و تأیید شده اند ،شامل شود. حذف این گزینه احتمال بارگیری زیرنویس ها را افزایش می دهد ، اما شانس متن زیرنویس ناهماهنگ یا غلط نیز افزایش می یابد.", "ServerNameIsShuttingDown": "سرور جلی فین - {0} در حال خاموش شدن می باشد.", @@ -991,7 +976,6 @@ "OptionEveryday": "Every day", "OptionExternallyDownloaded": "External download", "OptionExtractChapterImage": "Enable chapter image extraction", - "OptionFriday": "Friday", "OptionHasSpecialFeatures": "Special Features", "OptionHasSubtitles": "Subtitles", "OptionHasThemeSong": "Theme Song", @@ -1000,7 +984,6 @@ "OptionHideUser": "Hide this user from login screens", "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", "HeaderSendMessage": "Send Message", - "HeaderSeries": "Series", "HeaderSeriesOptions": "Series Options", "HeaderSeriesStatus": "Series Status", "HeaderServerAddressSettings": "Server Address Settings", @@ -1089,11 +1072,9 @@ "OptionLoginAttemptsBeforeLockoutHelp": "A value of zero means inheriting the default of three attempts for normal users and five for administrators. Setting this to -1 will disable the feature.", "OptionMax": "Max", "OptionMissingEpisode": "Missing Episodes", - "OptionMonday": "Monday", "OptionNameSort": "Name", "OptionNew": "New…", "OptionNone": "None", - "OptionOnAppStartup": "On application startup", "LabelMaxResumePercentageHelp": "Titles are assumed fully played if stopped after this time.", "LabelMaxScreenshotsPerItem": "Maximum number of screenshots per item:", "LabelMaxStreamingBitrate": "Maximum streaming quality:", @@ -1224,7 +1205,6 @@ "HeaderRevisionHistory": "Revision History", "HeaderRunningTasks": "Running Tasks", "HeaderScenes": "Scenes", - "HeaderSchedule": "Schedule", "HeaderSeasons": "Seasons", "HeaderSecondsValue": "{0} Seconds", "HeaderSelectCertificatePath": "Select Certificate Path", diff --git a/src/strings/fi.json b/src/strings/fi.json index 3b17554efc..7eddf8e17f 100644 --- a/src/strings/fi.json +++ b/src/strings/fi.json @@ -13,7 +13,6 @@ "FileReadCancelled": "Tiedoston luku on peruutettu.", "FileReadError": "Virhe tiedoston luvun aikana.", "FolderTypeTvShows": "TV-sarjat", - "HeaderSeries": "Sarjat", "LabelAudioLanguagePreference": "Äänen ensisijainen kieli:", "LabelCountry": "Maa:", "LabelCurrentPassword": "Tämän hetkinen salsana:", @@ -36,7 +35,6 @@ "PasswordSaved": "Salasana tallennettu.", "Save": "Tallenna", "SettingsSaved": "Asetukset tallennettu.", - "TabPassword": "Salasana", "TabProfile": "Profiili", "TabProfiles": "Profiilit", "TellUsAboutYourself": "Kerro meille itsestäsi", @@ -217,8 +215,6 @@ "CopyStreamURL": "Kopioi Toiston Osoite", "ButtonAddImage": "Lisää kuva", "Movies": "Elokuvat", - "HeaderNextUp": "Seuraavaksi", - "HeaderLiveTV": "Live-TV", "HeaderFavoriteSongs": "Lempikappaleet", "HeaderFavoriteShows": "Lempisarjat", "HeaderFavoriteEpisodes": "Lempijaksot", @@ -306,10 +302,8 @@ "OptionPoster": "Juliste", "OptionPlayCount": "Toistokerrat", "OptionPlayed": "Toistettu", - "OptionOnAppStartup": "Käynnistyksen yhteydessä", "OptionNew": "Uusi…", "OptionNameSort": "Nimi", - "OptionMonday": "Maanantai", "OptionMissingEpisode": "Puuttuvat jaksot", "OptionMax": "Maksimi", "OptionList": "Lista", @@ -324,7 +318,6 @@ "OptionHasThemeSong": "Tunnuskappale", "OptionHasSubtitles": "Tekstitykset", "OptionHasSpecialFeatures": "Erikoisominaisuudet", - "OptionFriday": "Perjantai", "OptionFavorite": "Suosikit", "OptionExtractChapterImage": "Ota käyttöön kappalekuvien luonti", "OptionExternallyDownloaded": "Ulkoinen lataus", @@ -419,7 +412,6 @@ "HeaderSeriesStatus": "Sarjan status", "HeaderSeriesOptions": "Sarjan asetukset", "HeaderSelectTranscodingPath": "Valitse transkoodauksen väliaikainen polku", - "HeaderSchedule": "Ajastus", "HeaderScenes": "Kohtaukset", "HeaderResponseProfile": "Vastausprofiili", "HeaderRemoveMediaLocation": "Poista mediasijainti", @@ -489,7 +481,6 @@ "HeaderMediaInfo": "Mediainfo", "HeaderMediaFolders": "Mediakansiot", "HeaderMedia": "Media", - "HeaderLiveTv": "Live-TV", "HeaderLibraryFolders": "Kirjaston kansiot", "HeaderLatestMedia": "Uusin media", "HeaderLatestRecordings": "Uusimmat tallenteet", @@ -641,24 +632,19 @@ "ThemeSongs": "Tunnuslaulut", "TagsValue": "Tunnisteet: {0}", "Tags": "Tunnisteet", - "TabUsers": "Käyttäjät", "TabUpcoming": "Tulevat", "TabSettings": "Asetukset", "TabServer": "Palvelin", - "TabSeries": "Sarjat", "TabScheduledTasks": "Ajastetut tehtävät", "TabResumeSettings": "Jatka", "TabResponses": "Vastaukset", - "TabRecordings": "Tallennukset", "TabPlugins": "Liitännäiset", - "TabPlaylists": "Soittolistat", "TabNfoSettings": "NFO-asetukset", "TabNetworks": "Verkot", "TabMyPlugins": "Omat liittännäiseni", "TabMusicVideos": "Musiikkivideot", "TabMusic": "Musiikki", "TabLogs": "Lokit", - "TabLiveTV": "Live-TV", "TabLatest": "Uusimmat", "TabInfo": "Tiedot", "TabEpisodes": "Jaksot", @@ -870,7 +856,6 @@ "HeaderRestart": "Uudelleenkäynnistys", "HeaderProfile": "Profiili", "HeaderPlayAll": "Toista kaikki", - "HeaderPeople": "Ihmiset", "HeaderPassword": "Salasana", "HeaderNewApiKey": "Uusi API-avain", "HeaderNavigation": "Navigaatio", @@ -946,11 +931,6 @@ "LabelContentType": "Sisältötyyppi:", "LabelChannels": "Kanavat:", "LabelCertificatePasswordHelp": "Jos sertifikaattisi vaatii salasanaa, laita se tähän.", - "OptionWednesday": "Keskiviikko", - "OptionTuesday": "Tiistai", - "OptionThursday": "Torstai", - "OptionSunday": "Sunnuntai", - "OptionSaturday": "Lauantai", "LabelRuntimeMinutes": "Pituus (minuutteja):", "LabelReleaseDate": "Julkaisupäivä:", "Genre": "Tyylilaji", diff --git a/src/strings/fr-ca.json b/src/strings/fr-ca.json index e7deac36f9..15973b5f36 100644 --- a/src/strings/fr-ca.json +++ b/src/strings/fr-ca.json @@ -23,9 +23,7 @@ "HeaderDeleteItem": "Supprimer l'élément", "HeaderMyMedia": "Mes Médias", "HeaderMyMediaSmall": "Mes médias (petit)", - "HeaderNextUp": "À Suivre", "HeaderRemoteControl": "Télécommande", - "HeaderSeries": "Series:", "Help": "Aide", "ItemCount": "{0} articles", "LabelFinish": "Terminer", @@ -103,7 +101,6 @@ "Folders": "Dossiers", "Genres": "Genres", "HeaderAlbumArtists": "Artistes de l'album", - "HeaderLiveTV": "TV en direct", "Movies": "Films", "Photos": "Photos", "Playlists": "Listes de lecture", diff --git a/src/strings/fr.json b/src/strings/fr.json index 61710fede0..4bab5a6179 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -331,8 +331,6 @@ "HeaderLibraryFolders": "Dossiers de la médiathèque", "HeaderLibraryOrder": "Ordre de la médiathèque", "HeaderLibrarySettings": "Paramètres de la médiathèque", - "HeaderLiveTV": "TV en direct", - "HeaderLiveTv": "TV en direct", "HeaderLiveTvTunerSetup": "Configuration du Tuner TV en direct", "HeaderLoginFailure": "Échec de la connexion", "HeaderMedia": "Média", @@ -348,7 +346,6 @@ "HeaderNewApiKey": "Nouvelle clé API", "HeaderNewDevices": "Nouveaux appareils", "HeaderNextEpisodePlayingInValue": "Lecture du prochain épisode dans {0}", - "HeaderNextUp": "À suivre", "HeaderNextVideoPlayingInValue": "Lecture de la prochaine vidéo dans {0}", "HeaderOnNow": "En ce moment", "HeaderOtherItems": "Autres éléments", @@ -356,7 +353,6 @@ "HeaderPassword": "Mot de passe", "HeaderPasswordReset": "Mot de passe réinitialisé", "HeaderPaths": "Chemins", - "HeaderPeople": "Personnes", "HeaderPhotoAlbums": "Albums photo", "HeaderPinCodeReset": "Réinitialiser le code PIN", "HeaderPlayAll": "Tout lire", @@ -381,7 +377,6 @@ "HeaderRevisionHistory": "Historique des révisions", "HeaderRunningTasks": "Tâches en cours d'exécution", "HeaderScenes": "Scènes", - "HeaderSchedule": "Planning", "HeaderSeasons": "Saisons", "HeaderSecondsValue": "{0} secondes", "HeaderSelectCertificatePath": "Sélectionnez le chemin du certificat", @@ -394,7 +389,6 @@ "HeaderSelectTranscodingPath": "Sélectionner le chemin d'accès du dossier temporaire de transcodage", "HeaderSelectTranscodingPathHelp": "Parcourir ou saisir le chemin d'accès à utiliser pour les fichiers de transcodage. Le dossier doit être accessible en écriture.", "HeaderSendMessage": "Envoyer un message", - "HeaderSeries": "Séries", "HeaderSeriesOptions": "Options de la série", "HeaderSeriesStatus": "Statut de la série", "HeaderServerSettings": "Paramètres du serveur", @@ -970,7 +964,6 @@ "OptionExternallyDownloaded": "Téléchargement externe", "OptionExtractChapterImage": "Activer l'extraction des images de chapitres", "OptionFavorite": "Favoris", - "OptionFriday": "Vendredi", "OptionHasSpecialFeatures": "Bonus", "OptionHasSubtitles": "Sous-titres", "OptionHasThemeSong": "Chanson thème", @@ -986,11 +979,9 @@ "OptionLikes": "Aimés", "OptionMax": "Maximum", "OptionMissingEpisode": "Épisodes manquantes", - "OptionMonday": "Lundi", "OptionNameSort": "Nom", "OptionNew": "Nouveau…", "OptionNone": "Aucun", - "OptionOnAppStartup": "Au démarrage de l'application", "OptionOnInterval": "Par intervalle", "OptionParentalRating": "Classification parentale", "OptionPlainStorageFolders": "Afficher tous les dossiers en tant que simples dossiers de stockage", @@ -1011,20 +1002,15 @@ "OptionResElement": "Résolution d'élément", "OptionResumable": "Reprise possible", "OptionRuntime": "Durée", - "OptionSaturday": "Samedi", "OptionSaveMetadataAsHidden": "Enregistrer les métadonnées et les images en tant que fichier cachés", "OptionSaveMetadataAsHiddenHelp": "La modification s'appliquera aux nouvelles métadonnées enregistrées à l'avenir. Les fichiers de métadonnées existants seront mis à jour la prochaine fois qu'ils seront enregistrés par le serveur.", "OptionSpecialEpisode": "Spéciaux", "OptionSubstring": "Sous-chaîne", - "OptionSunday": "Dimanche", - "OptionThursday": "Jeudi", "OptionTrackName": "Titre", - "OptionTuesday": "Mardi", "OptionTvdbRating": "Note d'évaluation TVDB", "OptionUnairedEpisode": "Épisodes non diffusés", "OptionUnplayed": "Non lu", "OptionWakeFromSleep": "Sortie de veille", - "OptionWednesday": "Mercredi", "OptionWeekdays": "Jours de la semaine", "OptionWeekends": "Week-ends", "OptionWeekly": "Hebdomadaire", @@ -1164,7 +1150,6 @@ "TabDirectPlay": "Lecture directe", "TabEpisodes": "Épisodes", "TabLatest": "Derniers", - "TabLiveTV": "TV en direct", "TabLogs": "Journaux", "TabMusic": "Musique", "TabMusicVideos": "Vidéos musicales", @@ -1173,20 +1158,15 @@ "TabNfoSettings": "Paramètres NFO", "TabOther": "Autre", "TabParentalControl": "Contrôle Parental", - "TabPassword": "Mot de passe", - "TabPlaylists": "Listes de lecture", "TabProfile": "Profil", "TabProfiles": "Profils", - "TabRecordings": "Enregistrements", "TabResponses": "Réponses", "TabResumeSettings": "Reprise", "TabScheduledTasks": "Tâches planifiées", - "TabSeries": "Séries", "TabServer": "Serveur", "TabSettings": "Paramètres", "TabTrailers": "Bandes-annonces", "TabUpcoming": "À venir", - "TabUsers": "Utilisateurs", "Tags": "Étiquettes", "TagsValue": "Mots clés: {0}", "TellUsAboutYourself": "Parlez-nous de vous", diff --git a/src/strings/gsw.json b/src/strings/gsw.json index 1b23cb29b1..f144e1ca65 100644 --- a/src/strings/gsw.json +++ b/src/strings/gsw.json @@ -21,10 +21,8 @@ "HeaderFrequentlyPlayed": "Vell gspellt", "HeaderLatestEpisodes": "Letschti Episode", "HeaderLatestMovies": "Letschti Film", - "HeaderNextUp": "Als Nächstes", "HeaderPaths": "Pfad", "HeaderRecentlyPlayed": "Erst grad dezue gfüegt", - "HeaderSeries": "Series", "HeaderUsers": "User", "LabelArtists": "Artist:", "LabelArtistsHelp": "Trenn mehreri iisträg dur es ;", @@ -66,10 +64,8 @@ "OptionEnableAccessToAllLibraries": "Aktiviere de Zuegriff zu allne Bibliotheke", "OptionEnded": "Beendent", "OptionFavorite": "Favorite", - "OptionFriday": "Friitig", "OptionHasSubtitles": "Undertitel", "OptionImdbRating": "IMDB Bewertig", - "OptionMonday": "Mäntig", "OptionParentalRating": "Altersfriigab", "OptionPlayCount": "Zähler", "OptionPlayed": "Gspellt", @@ -77,12 +73,7 @@ "OptionReleaseDate": "Release Ziit", "OptionResumable": "Chan fortgsetzt werde", "OptionRuntime": "Laufziit", - "OptionSaturday": "Samstig", - "OptionSunday": "Sonntig", - "OptionThursday": "Donnstig", - "OptionTuesday": "Tsischtig", "OptionUnplayed": "Ungspellt", - "OptionWednesday": "Mittwoch", "ParentalRating": "Parental Rating", "Saturday": "Samstig", "Save": "Speichere", @@ -98,7 +89,6 @@ "TabMyPlugins": "Miini Plugins", "TabNetworks": "Studios", "TabNotifications": "Mitteilige", - "TabPassword": "Passwort", "TabProfile": "Profil", "TabProfiles": "Profil", "TabUpcoming": "Usstehend", @@ -125,7 +115,6 @@ "HeaderFavoriteEpisodes": "Lieblingsepisoden", "HeaderFavoriteShows": "Lieblingsserien", "HeaderFavoriteSongs": "Lieblingslieder", - "HeaderLiveTV": "Live-Fernseh", "Movies": "Film", "Photos": "Fotis", "Playlists": "Wedergabeliste", diff --git a/src/strings/he.json b/src/strings/he.json index d3a6b1ee19..667db59d9e 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -103,12 +103,10 @@ "HeaderLatestMovies": "סרטים אחרונים שהוספו", "HeaderLatestMusic": "מוזיקה אחרונה", "HeaderLatestRecordings": "הקלטות אחרונות", - "HeaderLiveTV": "שידורים חיים", "HeaderMediaFolders": "ספריות מדיה", "HeaderMetadataSettings": "הגדרות מטא-דאטה", "HeaderMusicVideos": "קליפים", "HeaderMyMedia": "המדיה שלי", - "HeaderNextUp": "הבא בתור", "HeaderPaths": "נתיבים", "HeaderPlayAll": "נגן הכל", "HeaderPleaseSignIn": "אנא היכנס", @@ -116,7 +114,6 @@ "HeaderRecordingOptions": "אפשרויות הקלטה", "HeaderRunningTasks": "משימות רצות", "HeaderScenes": "סצנות", - "HeaderSeries": "סדרה", "HeaderSeriesOptions": "אפשרויות סדרה", "HeaderServerSettings": "הגדרות שרת", "HeaderSetupLibrary": "הגדר את ספריית המדיה שלך", @@ -319,7 +316,6 @@ "OptionDvd": "DVD", "OptionEnded": "הסתיים", "OptionFavorite": "מועדפים", - "OptionFriday": "שישי", "OptionHasSpecialFeatures": "מאפיינים מיוחדים", "OptionHasSubtitles": "כתוביות", "OptionHasThemeSong": "שיר נושא", @@ -329,10 +325,8 @@ "OptionImdbRating": "דירוג IMDb", "OptionLikes": "נבחרים", "OptionMissingEpisode": "פרקים חסרים", - "OptionMonday": "שני", "OptionNameSort": "שם", "OptionNew": "חדש…", - "OptionOnAppStartup": "בהפעלת התוכנה", "OptionOnInterval": "כל פרק זמן", "OptionParentalRating": "דירוג בקרת הורים", "OptionPlayCount": "כמות ניגונים", @@ -344,17 +338,12 @@ "OptionProfileVideoAudio": "צליל וידאו", "OptionResumable": "ניתן להמשיך", "OptionRuntime": "זמן ריצה", - "OptionSaturday": "שבת", "OptionSpecialEpisode": "ספיישלים", - "OptionSunday": "ראשון", - "OptionThursday": "חמישי", "OptionTrackName": "שם הרצועה", - "OptionTuesday": "שלישי", "OptionTvdbRating": "דירוג TVDB", "OptionUnairedEpisode": "פרקים שלא שודרו", "OptionUnplayed": "לא נוגן", "OptionWakeFromSleep": "הער ממצב שינה", - "OptionWednesday": "רביעי", "OptionWeekly": "כל שבוע", "OriginalAirDateValue": "תאריך אוויר מקורי: {0}", "Overview": "סקירה כללית", @@ -432,17 +421,13 @@ "TabEpisodes": "פרקים", "TabInfo": "מידע", "TabLatest": "אחרון", - "TabLiveTV": "שידור ישיר", "TabMusic": "מוסיקה", "TabMusicVideos": "קליפים", "TabMyPlugins": "התוספים שלי", "TabNetworks": "רשתות", "TabNotifications": "התראות", - "TabPassword": "סיסמא", "TabProfile": "פרופיל", "TabProfiles": "פרופילים", - "TabRecordings": "הקלטות", - "TabSeries": "סדרות", "TabServer": "שרת", "TabSettings": "הגדרות", "TabTrailers": "טריילרים", @@ -577,7 +562,6 @@ "HeaderPlayOn": "נגן על", "HeaderPinCodeReset": "איפוס קוד סיכה", "HeaderPhotoAlbums": "אלבומי תמונות", - "HeaderPeople": "אנשים", "HeaderPasswordReset": "איפוס סיסמה", "HeaderPassword": "סיסמה", "HeaderOtherItems": "פריטים אחרים", @@ -587,7 +571,6 @@ "HeaderNewApiKey": "‫מפתח API חדש", "HeaderNavigation": "ניווט", "HeaderMyDevice": "המכשיר שלי", - "HeaderLiveTv": "שידורים חיים", "HeaderLibrarySettings": "הגדרות ספרייה", "HeaderLibraryFolders": "תיקיות הספרייה", "HeaderLibraries": "ספריות", @@ -822,6 +805,5 @@ "OptionEnableExternalContentInSuggestions": "הפעל תוכן חיצוני בהמלצות", "OptionEnableAccessToAllLibraries": "אפשר גישה לכל הספריות", "OptionEnableAccessToAllChannels": "אפשר גישה לכל הערוצים", - "HeaderSyncPlaySelectGroup": "הצטרף לקבוצה", - "TabUsers": "משתמשים" + "HeaderSyncPlaySelectGroup": "הצטרף לקבוצה" } diff --git a/src/strings/hr.json b/src/strings/hr.json index cf4aba1e9d..afbdbf2c22 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -213,8 +213,6 @@ "HeaderLibraries": "Biblioteke", "HeaderLibraryAccess": "Pristup biblioteci", "HeaderLibraryFolders": "Mape medija", - "HeaderLiveTV": "TV uživo", - "HeaderLiveTv": "TV uživo", "HeaderLoginFailure": "Neuspjela prijava", "HeaderMedia": "Medij", "HeaderMediaFolders": "Medijska mapa", @@ -224,7 +222,6 @@ "HeaderMusicVideos": "Muzički spotovi", "HeaderMyMedia": "Moji mediji", "HeaderNewApiKey": "Novi API ključ", - "HeaderNextUp": "Sljedeće je", "HeaderOtherItems": "Ostale stavke", "HeaderPassword": "Lozinka", "HeaderPasswordReset": "Poništenje lozinke", @@ -248,7 +245,6 @@ "HeaderRevisionHistory": "Povijest revizije", "HeaderRunningTasks": "Zadatci koji se izvode", "HeaderScenes": "Scene", - "HeaderSchedule": "Raspored", "HeaderSeasons": "Sezone", "HeaderSelectCertificatePath": "Odaberi putanju certifikata", "HeaderSelectMetadataPath": "Odaberite putanju meta-podataka", @@ -260,7 +256,6 @@ "HeaderSelectTranscodingPath": "Odaberite privremenu putanju konvertiranja", "HeaderSelectTranscodingPathHelp": "Pregledajte ili unesite putanju za korištenje konvertiranja privremenih datoteka. U mapu se mora moći pisati.", "HeaderSendMessage": "Pošalji poruku", - "HeaderSeries": "Serija", "HeaderSeriesOptions": "Opcije serija", "HeaderServerSettings": "Postavke Servera", "HeaderSettings": "Postavke", @@ -726,7 +721,6 @@ "OptionExternallyDownloaded": "Vanjsko preuzimanje", "OptionExtractChapterImage": "Omogući preuzimanje slika iz poglavlja", "OptionFavorite": "Omiljeni", - "OptionFriday": "Petak", "OptionHasSpecialFeatures": "Specijalne opcije", "OptionHasSubtitles": "Titlovi", "OptionHasThemeSong": "Pjesma teme", @@ -742,11 +736,9 @@ "OptionLikes": "Volim", "OptionMax": "Maksimalno", "OptionMissingEpisode": "Epizode koje nedostaju", - "OptionMonday": "Ponedjeljak", "OptionNameSort": "Nazivu", "OptionNew": "Novo…", "OptionNone": "Ništa", - "OptionOnAppStartup": "Kada se aplikacija pokrene", "OptionOnInterval": "U intervalu", "OptionParentalRating": "Roditeljska ocjena", "OptionPlainStorageFolders": "Prikaži sve mape kako jednostavne mape za skladištenje", @@ -764,20 +756,15 @@ "OptionRequirePerfectSubtitleMatch": "Samo preuzimanje titlova prijevoda koji su savršen izbor za moje video datoteke", "OptionResumable": "Nastavi", "OptionRuntime": "Trajanje", - "OptionSaturday": "Subota", "OptionSaveMetadataAsHidden": "Spremite meta-podatke i slike kao skrivene datoteke", "OptionSaveMetadataAsHiddenHelp": "Promjena ovoga će se primjenjivati na nove meta-podatke spremljene unaprijed. Postojeće datoteke meta-podataka će se ažurirati sljedeći puta kada ih spremi Jellyfin Server.", "OptionSpecialEpisode": "Specijal", "OptionSubstring": "Podniz", - "OptionSunday": "Nedjelja", - "OptionThursday": "Četvrtak", "OptionTrackName": "Nazivu pjesme", - "OptionTuesday": "Utorak", "OptionTvdbRating": "Ocjeni Tvdb", "OptionUnairedEpisode": "Ne emitirane epizode", "OptionUnplayed": "Neizvođeni", "OptionWakeFromSleep": "Pokreni iz stanja mirovanja", - "OptionWednesday": "Srijeda", "OptionWeekdays": "Radni dani", "OptionWeekends": "Vikendi", "OptionWeekly": "Tjedno", @@ -872,7 +859,6 @@ "TabDirectPlay": "Direktna reprodukcija", "TabEpisodes": "Epizode", "TabLatest": "Zadnje", - "TabLiveTV": "TV uživo", "TabLogs": "Dnevnici", "TabMusic": "Glazba", "TabMusicVideos": "Muzički spotovi", @@ -882,21 +868,16 @@ "TabNotifications": "Obavijesti", "TabOther": "Ostalo", "TabParentalControl": "Roditeljska kontrola", - "TabPassword": "Lozinka", - "TabPlaylists": "Popisi", "TabPlugins": "Dodaci", "TabProfile": "Profil", "TabProfiles": "Profili", - "TabRecordings": "Snimke", "TabResponses": "Odazivi", "TabResumeSettings": "Postavke nastavka", "TabScheduledTasks": "Zakazani zadaci", - "TabSeries": "Serije", "TabSettings": "Postavke", "TabStreaming": "Strujanje", "TabTrailers": "Kratki filmovi", "TabUpcoming": "Uskoro", - "TabUsers": "Korisnici", "Tags": "Oznake", "TellUsAboutYourself": "Recite nam nešto o sebi", "ThisWizardWillGuideYou": "Ovaj pomoćnik će Vas voditi kroz proces podešavanja. Za početak, odaberite željeni jezik.", diff --git a/src/strings/hu.json b/src/strings/hu.json index 9baf2220b6..644e7eb746 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -150,12 +150,10 @@ "HeaderMyDevice": "Jelenlegi eszköz", "HeaderMyMedia": "Médiatáram", "HeaderMyMediaSmall": "Médiatáram (kicsi)", - "HeaderNextUp": "Következik", "HeaderOnNow": "Most", "HeaderParentalRatings": "Korhatár besorolás", "HeaderPassword": "Jelszó", "HeaderPaths": "Útvonalak", - "HeaderPeople": "Személyek", "HeaderPinCodeReset": "Pin kód visszaállítása", "HeaderPlayAll": "Összes vetítése", "HeaderPlayOn": "Vetítés itt", @@ -174,7 +172,6 @@ "HeaderSelectMetadataPath": "Válaszd ki a metaadat útvonalat", "HeaderSelectServer": "Szerver Kiválasztás", "HeaderSendMessage": "Üzenet küldése", - "HeaderSeries": "Sorozatok", "HeaderSettings": "Beállítások", "HeaderSetupLibrary": "Média könyvtárak beállítása", "HeaderSortBy": "Megjelenítés", @@ -374,7 +371,6 @@ "OptionEnableAccessToAllLibraries": "Hozzáférés engedélyezése minden könyvtárhoz", "OptionExternallyDownloaded": "Külső letöltés", "OptionFavorite": "Kedvencek", - "OptionFriday": "Péntek", "OptionHasSpecialFeatures": "Speciális lehetőségek", "OptionHasSubtitles": "Feliratok", "OptionHasThemeSong": "Főcímdal", @@ -385,7 +381,6 @@ "OptionImdbRating": "IMDb értékelés", "OptionLikes": "Kedveltek", "OptionMissingEpisode": "Hiányzó Epizódok", - "OptionMonday": "Hétfő", "OptionNameSort": "Név", "OptionNew": "Új…", "OptionParentalRating": "Korhatár besorolás", @@ -396,14 +391,9 @@ "OptionReleaseDate": "Megjelenés dátuma", "OptionResumable": "Folytatható", "OptionRuntime": "Játékidő", - "OptionSaturday": "Szombat", - "OptionSunday": "Vasárnap", - "OptionThursday": "Csütörtök", "OptionTrackName": "Sáv Címe", - "OptionTuesday": "Kedd", "OptionUnairedEpisode": "Nem vetített Epizódok", "OptionUnplayed": "Nemjátszott", - "OptionWednesday": "Szerda", "OptionWeekly": "Heti", "OriginalAirDateValue": "Eredeti vetítés dátuma: {0}", "PackageInstallCancelled": "{0} ({1} verzió) telepítése megszakítva.", @@ -480,19 +470,14 @@ "TabNotifications": "Értesítések", "TabOther": "Egyéb", "TabParentalControl": "Szülői Felügyelet", - "TabPassword": "Jelszó", - "TabPlaylists": "Lejátszási listák", "TabPlugins": "Bővítmények", "TabProfile": "Profil", "TabProfiles": "Profilok", - "TabRecordings": "Felvételek", "TabScheduledTasks": "Ütemezett feladatok", - "TabSeries": "Sorozatok", "TabServer": "Szerver", "TabSettings": "Beállítások", "TabTrailers": "Előzetesek", "TabUpcoming": "Hamarosan érkezik", - "TabUsers": "Felhasználók", "Tags": "Címkék", "TellUsAboutYourself": "Mondj valamit magadról", "ThisWizardWillGuideYou": "Ez a varázsló végigvezet a telepítésen. A kezdéshez válasz nyelvet.", @@ -692,8 +677,6 @@ "HeaderKodiMetadataHelp": "Az Nfo metaadatok engedélyezéséhez vagy letiltásához szerkeszd a könyvtárat és keresd meg a metaadat letöltő részt.", "HeaderLatestMusic": "Legújabb Zene", "HeaderLatestRecordings": "Legújabb Felvételek", - "HeaderLiveTV": "Élő TV", - "HeaderLiveTv": "Élő TV", "HeaderLoginFailure": "Bejelentkezési hiba", "HeaderMusicQuality": "Zene minősége", "HeaderNewApiKey": "Új API kulcs", @@ -731,7 +714,6 @@ "EnableThemeVideos": "Videótémák", "EnableThemeVideosHelp": "Videó témájának lejátszása háttérben a könyvtár böngészése közben.", "HeaderBlockItemsWithNoRating": "Blokkolja azokat az elemeket amelyek tiltott, vagy nem felismerhető minősítésűek:", - "HeaderSchedule": "Ütemezés", "HeaderSeriesStatus": "Sorozat állapot", "HeaderSpecialEpisodeInfo": "Speciális epizód információ", "HeaderStartNow": "Indítás most", @@ -1067,7 +1049,6 @@ "OptionIsSD": "SD", "OptionMax": "Max", "OptionNone": "Egyik sem", - "OptionOnAppStartup": "Alkalmazás indításakor", "OptionOnInterval": "Időközönként", "OptionPlainStorageFolders": "Az összes mappa megjelenítése egyszerű tároló mappaként", "OptionPlainVideoItems": "Az összes videó megjelenítése egyszerű videófelvételként", @@ -1156,7 +1137,6 @@ "SystemDlnaProfilesHelp": "A rendszerprofilok csak olvashatóak. A rendszerprofil módosításai egy új egyéni profilba kerülnek.", "TV": "TV", "TabDirectPlay": "Közvetlen lejátszás", - "TabLiveTV": "Élő TV", "TabResponses": "Válaszok", "TabResumeSettings": "Folytatás", "TabStreaming": "Streaming", diff --git a/src/strings/id.json b/src/strings/id.json index a11d411afa..8bf0d7eafd 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -4,7 +4,6 @@ "FolderTypeTvShows": "TV", "HeaderAddUser": "Tambah User", "HeaderEasyPinCode": "Kode Pin Mudah", - "HeaderSeries": "Series", "HeaderSetupLibrary": "Atur pustaka media Anda", "LabelContentType": "Tipe konten:", "LabelCountry": "Negara:", @@ -30,7 +29,6 @@ "WizardCompleted": "Itu semua yang kami butuhkan saat ini. Jellyfin sudah memulai mengkoleksi informasi pustaka media. Lihatlah beberapa aplikasi kami, kemudian klik Selesai untuk menuju ke Dashboard Server", "Collections": "Koleksi", "Folders": "Folder", - "HeaderNextUp": "Selanjutnya", "Albums": "Album", "Books": "Buku", "Favorites": "Favorit", @@ -43,7 +41,6 @@ "HeaderAlbumArtists": "Album Artis", "HeaderContinueWatching": "Masih Melihat", "Artists": "Artis", - "HeaderLiveTV": "TV Live", "AllowMediaConversion": "Izinkan konversi media", "AllEpisodes": "Semua episode", "AllChannels": "Semua saluran", diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 264b341b62..bd1c81c21a 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -26,7 +26,6 @@ "ShowAdvancedSettings": "Birta ítarlegar stillingar", "TabAccess": "Aðgangur", "TabNotifications": "Tilkynningar", - "TabPassword": "Lykilorð", "WelcomeToProject": "Velkomin/n í Jellyfin!", "Anytime": "Hvenær sem er", "Genres": "Tegundir", @@ -61,12 +60,10 @@ "HeaderFavoriteSongs": "Uppáhalds Lög", "Play": "Spila", "Folders": "Möppur", - "OptionSunday": "Sunnudagur", "OptionSubstring": "Undirstrengur", "OptionSpecialEpisode": "Sérstakt", "OptionTvdbRating": "TVDB einkunn", "OptionWakeFromSleep": "Vekja frá svefni", - "OptionWednesday": "Miðvikudagur", "PackageInstallCancelled": "{0} hætt við uppsetningu.", "AddToPlayQueue": "Bæta í spilunarlista", "AddedOnValue": "Bætti við {0}", @@ -110,8 +107,6 @@ "PerfectMatch": "Passar fullkomlega", "Channels": "Stöðvar", "Collections": "Söfn", - "OptionSaturday": "Laugardagur", - "OptionThursday": "Fimmtudagur", "OptionUnairedEpisode": "Ófrumsýndir þættir", "OptionUnplayed": "Óspilað", "OptionWeekdays": "Vikudagar", @@ -121,8 +116,6 @@ "OptionBluray": "Blu-ray", "Yesterday": "Í gær", "Absolute": "Heildartala", - "HeaderLiveTV": "Sjónvarp í beinni útsendingu", - "HeaderNextUp": "Næst á dagskrá", "OptionCommunityRating": "Einkunn almennings", "OptionCriticRating": "Einkunn gagnrýnenda", "OptionCustomUsers": "Sérsniðið", @@ -152,7 +145,6 @@ "HeaderRestart": "Endurræsa", "HeaderProfileInformation": "Upplýsingar um prófíl", "HeaderProfile": "Prófíll", - "HeaderPeople": "Fólk", "HeaderPassword": "Lykilorð", "HeaderLatestMovies": "Kvikmyndir, nýlega bætt við", "HeaderLatestEpisodes": "Þættir, nýlega bætt við", @@ -294,7 +286,6 @@ "HeaderLatestMusic": "Tónlist, nýlega bætt við", "HeaderMetadataSettings": "Stillingar lýsigagna", "HeaderMedia": "Margmiðlunarsafn", - "HeaderLiveTv": "Sjónvarp í beinni útsendingu", "HeaderLoginFailure": "Innskráning Mistókst", "HeaderMyDevice": "Tækið mitt", "HeaderMusicVideos": "Tónlistarmyndbönd", @@ -408,7 +399,6 @@ "ThemeVideos": "Þemu myndbönd", "ThemeSongs": "Þemu lög", "TellUsAboutYourself": "Segðu okkur frá sjálfum þér", - "TabUsers": "Notendur", "TabUpcoming": "Væntanlegt", "TabTrailers": "Sýnishorn", "TabResumeSettings": "Halda áfram", diff --git a/src/strings/it.json b/src/strings/it.json index af6de16491..758cb25f6e 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -317,8 +317,6 @@ "HeaderLibraryFolders": "Cartelle Libreria", "HeaderLibraryOrder": "Ordine Libreria", "HeaderLibrarySettings": "Impostazioni della Libreria", - "HeaderLiveTV": "Diretta TV", - "HeaderLiveTv": "Diretta TV", "HeaderLiveTvTunerSetup": "Configura Ricevitore TV", "HeaderLoginFailure": "Errore di accesso", "HeaderMediaFolders": "Cartelle dei media", @@ -333,14 +331,12 @@ "HeaderNewApiKey": "Nuova Chiave API", "HeaderNewDevices": "Nuovi Dispositivi", "HeaderNextEpisodePlayingInValue": "Il prossimo Episodio verrà riprodotto in {0}", - "HeaderNextUp": "Prossimo", "HeaderNextVideoPlayingInValue": "Il prossimo Video verrà riprodotto in {0}", "HeaderOnNow": "In onda ora", "HeaderOtherItems": "Altri elmenti", "HeaderParentalRatings": "Valutazioni genitori", "HeaderPasswordReset": "Reset della Password", "HeaderPaths": "Percorsi", - "HeaderPeople": "Persone", "HeaderPhotoAlbums": "Album foto", "HeaderPinCodeReset": "Resetta il codice PIN", "HeaderPlayAll": "Riproduci Tutti", @@ -365,7 +361,6 @@ "HeaderRevisionHistory": "Cronologia delle revisioni", "HeaderRunningTasks": "Operazioni in corso", "HeaderScenes": "Scene", - "HeaderSchedule": "Programmazione", "HeaderSeasons": "Stagioni", "HeaderSecondsValue": "{0} Secondi", "HeaderSelectCertificatePath": "Seleziona il percorso del Certificato", @@ -378,7 +373,6 @@ "HeaderSelectTranscodingPath": "Selezionare Percorso Temporaneo Transcodifica", "HeaderSelectTranscodingPathHelp": "Sfoglia o immettere il percorso da utilizzare per la transcodifica dei file temporanei. La cartella deve essere scrivibile.", "HeaderSendMessage": "Invia un messaggio", - "HeaderSeries": "Serie", "HeaderSeriesOptions": "Impostazioni Serie TV", "HeaderSeriesStatus": "Stato Serie TV", "HeaderServerSettings": "Impostazioni server", @@ -930,7 +924,6 @@ "OptionExternallyDownloaded": "Download Esterno", "OptionExtractChapterImage": "Abilita estrazione dell'immagine dei capitoli", "OptionFavorite": "Preferiti", - "OptionFriday": "Venerdì", "OptionHasSpecialFeatures": "Contenuti speciali", "OptionHasSubtitles": "Sottotitoli", "OptionHasThemeSong": "Sigla", @@ -944,11 +937,9 @@ "OptionImdbRating": "Voto IMDB", "OptionLikes": "Mi piace", "OptionMissingEpisode": "Episodi mancanti", - "OptionMonday": "Lunedì", "OptionNameSort": "Nome", "OptionNew": "Nuovo…", "OptionNone": "Nessuno", - "OptionOnAppStartup": "All'avvio", "OptionOnInterval": "Su intervallo", "OptionParentalRating": "Classificazione per genitori", "OptionPlainStorageFolders": "Visualizzare tutte le cartelle come normali cartelle di archiviazione", @@ -967,20 +958,15 @@ "OptionResElement": "res element", "OptionResumable": "Interrotto", "OptionRuntime": "Durata", - "OptionSaturday": "Sabato", "OptionSaveMetadataAsHidden": "Salvare i metadati e le immagini come file nascosti", "OptionSaveMetadataAsHiddenHelp": "La modifica di questo si applicherà ai nuovi metadati che verranno salvati in avanti. I file di metadati esistenti verranno aggiornati la prossima volta che vengono salvati da Jellyfin Server.", "OptionSpecialEpisode": "Speciali", "OptionSubstring": "Sottostringa", - "OptionSunday": "Domenica", - "OptionThursday": "Giovedì", "OptionTrackName": "Titolo Traccia", - "OptionTuesday": "Martedì", "OptionTvdbRating": "Voto TVDB", "OptionUnairedEpisode": "Episodi mai andati in onda", "OptionUnplayed": "Non visto", "OptionWakeFromSleep": "Risveglio", - "OptionWednesday": "Mercoledì", "OptionWeekdays": "Feriali", "OptionWeekends": "Il Weekend", "OptionWeekly": "Settimanale", @@ -1122,7 +1108,6 @@ "TabDirectPlay": "Riproduzione Diretta", "TabEpisodes": "Episodi", "TabLatest": "Novità", - "TabLiveTV": "Tv in Diretta", "TabMusic": "Musica", "TabMusicVideos": "Video Musicali", "TabMyPlugins": "I miei Plug-in", @@ -1131,18 +1116,14 @@ "TabNotifications": "Notifiche", "TabOther": "Altro", "TabParentalControl": "Controllo Genitore", - "TabPlaylists": "Playlist", "TabProfile": "Profilo", "TabProfiles": "Profili", - "TabRecordings": "Registrazioni", "TabResponses": "Risposte", "TabResumeSettings": "Riprendi", "TabScheduledTasks": "Operazioni Pianificate", - "TabSeries": "Serie TV", "TabSettings": "Impostazioni", "TabTrailers": "Trailer", "TabUpcoming": "In Arrivo", - "TabUsers": "Utenti", "Tags": "Tag", "TellUsAboutYourself": "Parlaci di te", "ThemeSongs": "Temi canzoni", @@ -1362,7 +1343,6 @@ "TabInfo": "Informazioni", "TabLogs": "Log", "TabNetworking": "Rete", - "TabPassword": "Password", "TabPlugins": "Plugin", "TabServer": "Server", "TabStreaming": "Streaming", diff --git a/src/strings/ja.json b/src/strings/ja.json index 31f377875d..b3b97e3c28 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -356,8 +356,6 @@ "HeaderLibraryFolders": "ライブラリフォルダ", "HeaderLibraryOrder": "ライブラリの順番", "HeaderLibrarySettings": "ライブラリ設定", - "HeaderLiveTV": "ライブTV", - "HeaderLiveTv": "ライブTV", "HeaderLiveTvTunerSetup": "ライブTV チューナーのセットアップ", "HeaderLoginFailure": "ログイン失敗", "HeaderMedia": "メディア", @@ -372,7 +370,6 @@ "HeaderNewApiKey": "新規のAPIキー", "HeaderNewDevices": "新規のデバイス", "HeaderNextEpisodePlayingInValue": "次のエピソードの再生まで {0}", - "HeaderNextUp": "次", "HeaderNextVideoPlayingInValue": "次のビデオの再生まで{0}", "HeaderOnNow": "今", "HeaderOtherItems": "その他のアイテム", @@ -380,7 +377,6 @@ "HeaderPassword": "パスワード", "HeaderPasswordReset": "パスワードリセット", "HeaderPaths": "パス", - "HeaderPeople": "人", "HeaderPhotoAlbums": "フォトアルバム", "HeaderPinCodeReset": "PINコードのリセット", "HeaderPlayAll": "すべて再生", @@ -405,7 +401,6 @@ "HeaderRevisionHistory": "更新履歴", "HeaderRunningTasks": "実行中のタスク", "HeaderScenes": "シーン", - "HeaderSchedule": "スケジュール", "HeaderSeasons": "シーズン", "HeaderSecondsValue": "{0} 秒", "HeaderSelectCertificatePath": "証明書のパスを選択", @@ -418,7 +413,6 @@ "HeaderSelectTranscodingPath": "トランスコーディング用の一時パスの選択", "HeaderSelectTranscodingPathHelp": "トランスコードファイルの保存先を参照またはパスを入力してください。 フォルダは書き込み可能でなければなりません。", "HeaderSendMessage": "メッセージの送信", - "HeaderSeries": "シリーズ", "HeaderSeriesOptions": "シリーズオプション", "HeaderSeriesStatus": "シリーズの状態", "HeaderServerSettings": "サーバー設定", @@ -552,7 +546,6 @@ "OptionUnplayed": "未再生", "OptionUnairedEpisode": "未放送のエピソード", "OptionWakeFromSleep": "スリープから起動", - "OptionWednesday": "水曜日", "OptionWeekdays": "平日", "ParentalRating": "個人評価", "PasswordResetConfirmation": "本当にパスワードを再設定しますか?", @@ -572,7 +565,6 @@ "TabDirectPlay": "直接再生", "TabEpisodes": "エピソード", "LabelDefaultUser": "デフォルトユーザー:", - "TabSeries": "シリーズ", "Trailers": "トレーラー", "LabelRecord": "レコード:", "MediaInfoAnamorphic": "アナモフィック", @@ -602,7 +594,6 @@ "SeriesSettings": "シリーズ設計", "SeriesYearToPresent": "{0} - 現在", "SubtitleOffset": "字幕オフセット", - "TabPassword": "パスワード", "ThemeSongs": "テーマ曲", "ThemeVideos": "テーマビデオ", "ValueMusicVideoCount": "{0} ミュージックビデオ", @@ -660,12 +651,8 @@ "MessageImageFileTypeAllowed": "JPEGとPNGファイルのみサポートしています。", "NoSubtitleSearchResultsFound": "何も見つかりません。", "OptionRandom": "ランダム", - "OptionSaturday": "土曜日", "OptionSubstring": "字幕", - "OptionSunday": "日曜日", - "OptionThursday": "木曜日", "OptionTrackName": "トラック名", - "OptionTuesday": "火曜日", "OptionTvdbRating": "TVDB評価", "OptionWeekends": "休日", "Overview": "概要", @@ -727,7 +714,6 @@ "TabDashboard": "ダッシュボード", "TabInfo": "情報", "TabLatest": "最新", - "TabLiveTV": "ライブTV", "TabLogs": "ログ", "TabMusic": "ミュージック", "TabMusicVideos": "ミュージックビデオ", @@ -987,7 +973,6 @@ "OptionEnableExternalContentInSuggestions": "おすすめの欄に外部のコンテンツを使う", "OptionEnableM2tsMode": "M2TSモードを有効化", "OptionFavorite": "お気に入り", - "OptionFriday": "金曜日", "OptionHasSpecialFeatures": "特別な機能", "OptionHasSubtitles": "字幕", "OptionHasThemeSong": "テーマ曲", @@ -996,7 +981,6 @@ "OptionHideUser": "ログインスクリーンからこのユーザーを隠す", "OptionHomeVideos": "フォト", "OptionIsHD": "HD", - "OptionMonday": "月曜日", "OptionProtocolHls": "HTTPライブストリーミング", "MediaInfoDefault": "デフォルト", "OptionSpecialEpisode": "スペシャル", @@ -1010,7 +994,6 @@ "TabNotifications": "通知", "TabOther": "その他", "TabParentalControl": "ペアレンタルコントロール", - "TabPlaylists": "プレイリスト", "TabPlugins": "プラグイン", "TabProfile": "プロフィール", "TabProfiles": "プロフィール", @@ -1020,7 +1003,6 @@ "TabStreaming": "ストリーミング", "TabTrailers": "トレーラー", "MessageContactAdminToResetPassword": "パスワードをリセットするためにシステムの管理者に連絡してください。", - "TabUsers": "ユーザー", "TagsValue": "タグ: {0}", "MessageInvalidUser": "ユーザー名かパスワードが無効です。再試行してください。", "MessageYouHaveVersionInstalled": "バージョン {0} がインストールされています。", @@ -1052,7 +1034,6 @@ "LabelCustomDeviceDisplayNameHelp": "任意の表示名を提供するか、空白のままにしてデバイスネームで報告する。", "LabelArtistsHelp": "複数のアーティストは「;」で分ける。", "Identify": "識別する", - "TabRecordings": "録画", "Recordings": "録画", "RecordingScheduled": "録画をスケジュールしました。", "RecordingCancelled": "録画をキャンセルしました。", diff --git a/src/strings/kk.json b/src/strings/kk.json index ef542a0705..3f20e5ca10 100644 --- a/src/strings/kk.json +++ b/src/strings/kk.json @@ -343,8 +343,6 @@ "HeaderLibraryFolders": "Tasyǵyshhanalyq qaltalar", "HeaderLibraryOrder": "Tasyǵyshhana reti", "HeaderLibrarySettings": "Tasyǵyshhana parametrleri", - "HeaderLiveTV": "Efır", - "HeaderLiveTv": "Efırlik TD", "HeaderLiveTvTunerSetup": "Efırlik TD túnerdi ornatý", "HeaderLoginFailure": "Kirý sátsizdigi", "HeaderMedia": "Tasyǵyshderekter", @@ -360,7 +358,6 @@ "HeaderNewApiKey": "Jańa API-kilt", "HeaderNewDevices": "Jańa qurylǵylar", "HeaderNextEpisodePlayingInValue": "Kelesi bólim {0} ishinde oınatylady", - "HeaderNextUp": "Kezekti", "HeaderNextVideoPlayingInValue": "Kelesi beıne {0} ishinde oınatylady", "HeaderOnNow": "Efırde", "HeaderOtherItems": "Basqa tarmaqtar", @@ -368,7 +365,6 @@ "HeaderPassword": "Paról", "HeaderPasswordReset": "Paróldi ysyrý", "HeaderPaths": "Joldar", - "HeaderPeople": "Adamdar", "HeaderPhotoAlbums": "Fotoálbomdar", "HeaderPinCodeReset": "PIN-kodty ysyrý", "HeaderPlayAll": "Bárin oınatý", @@ -393,7 +389,6 @@ "HeaderRevisionHistory": "Ózgerister tarıhy", "HeaderRunningTasks": "Oryndalyp jatqan tapsyrmalar", "HeaderScenes": "Sahnalar", - "HeaderSchedule": "Is kestesi", "HeaderSeasons": "Maýsymdar", "HeaderSecondsValue": "{0} sekónd", "HeaderSelectCertificatePath": "Kýálik jolyn tańdaý", @@ -406,7 +401,6 @@ "HeaderSelectTranscodingPath": "Qaıta kodtaýdyń ýaqytsha faıldaryeyń jolyn tańdaý", "HeaderSelectTranscodingPathHelp": "Qaıta kodtaýdyń ýaqytsha faıldaryn paıdalaný úshin joldy sholyńyz nemese engizińiz. Osy qalta jazý úshin qol jetimdi bolýy qajet.", "HeaderSendMessage": "Habar jiberý", - "HeaderSeries": "Telehıkaıalar", "HeaderSeriesOptions": "Telehıkaıa opsıalary", "HeaderSeriesStatus": "Telehıkaıa kúıi", "HeaderServerSettings": "Server parametrleri", @@ -994,7 +988,6 @@ "OptionExternallyDownloaded": "Syrttan júktelgen", "OptionExtractChapterImage": "Sahna sýretin bólip alýdy qosý", "OptionFavorite": "Tańdaýlylar", - "OptionFriday": "juma", "OptionHasSpecialFeatures": "Arnaıy múmkindikter", "OptionHasSubtitles": "Sýbtıtrler", "OptionHasThemeSong": "Taqyryptyq áýen", @@ -1010,11 +1003,9 @@ "OptionLikes": "Unatýlar", "OptionMax": "Eń joǵary", "OptionMissingEpisode": "Joq bólimder", - "OptionMonday": "dúısenbi", "OptionNameSort": "Aty", "OptionNew": "Jańa…", "OptionNone": "Eshqandaı", - "OptionOnAppStartup": "Qoldanba iske qosylǵanda", "OptionOnInterval": "Aralyqta", "OptionParentalRating": "Jastas sanat", "OptionPlainStorageFolders": "Barlyq qaltalardy kádimgi saqtama qaltalary retinde beıneleý", @@ -1038,20 +1029,15 @@ "OptionRequirePerfectSubtitleMatchHelp": "Keremet sáıkestik talap etilgende tek qana naqty beıne faılyńyzben synaqtaýdan jáne tekserýden ótken sýbtıtrler súziledi. Belgini alastaý sýbtıtrlerdi júkteý yqtımaldyǵyn arttyrady, biraq qate ýaqyty bar nemese burys bolý sýbtıtrler mátininiń múmkindikterin ósiredi.", "OptionResumable": "Jalǵastyralatyn", "OptionRuntime": "Uzaqtyǵy", - "OptionSaturday": "senbi", "OptionSaveMetadataAsHidden": "Metaderekter men sýretterdi jasyryn faıldar retinde saqtaý", "OptionSaveMetadataAsHiddenHelp": "Osy ózgertý bolashaqta saqtalatyn jańa metaderekter úshin qoldanylady. Bar metaderek faıldar olar Jellyfin serveri arqyly saqtalǵanda kelesi joly jańartylady.", "OptionSpecialEpisode": "Arnaıy bólimder", "OptionSubstring": "Ishki jol", - "OptionSunday": "jeksenbi", - "OptionThursday": "beısenbi", "OptionTrackName": "Jolshyq aty", - "OptionTuesday": "seısenbi", "OptionTvdbRating": "TVDB baǵalaýy", "OptionUnairedEpisode": "Kórsetilmegen bólimder", "OptionUnplayed": "Oınatylmaǵan", "OptionWakeFromSleep": "Uıqydan oıatýda", - "OptionWednesday": "sársenbi", "OptionWeekdays": "Jumys kúnderi", "OptionWeekends": "Demalys kúnderi", "OptionWeekly": "Apta saıyn", @@ -1199,7 +1185,6 @@ "TabEpisodes": "TD-bólimder", "TabInfo": "Profaıl týraly", "TabLatest": "Eń keıingi", - "TabLiveTV": "Efırlik TD", "TabLogs": "Jurnaldar", "TabMusic": "Mýzyka", "TabMusicVideos": "Mýzykalyq beıneler", @@ -1209,22 +1194,17 @@ "TabNotifications": "Habarlandyrýlar", "TabOther": "Basqalar", "TabParentalControl": "Mazmundy basqarý", - "TabPassword": "Paról", - "TabPlaylists": "Oınatý tizimderi", "TabPlugins": "Plagınder", "TabProfile": "Profaıl", "TabProfiles": "Profaıldar", - "TabRecordings": "Jazbalar", "TabResponses": "Ún qatýlar", "TabResumeSettings": "Jalǵastyrý", "TabScheduledTasks": "Josparlaýshy", - "TabSeries": "Telehıkaıalar", "TabServer": "Server", "TabSettings": "Parametrler", "TabStreaming": "Tasymaldaný", "TabTrailers": "Treılerler", "TabUpcoming": "Kútilgen", - "TabUsers": "Paıdalanýshylar", "Tags": "Tegter", "TagsValue": "Tegter: {0}", "TellUsAboutYourself": "Ózińiz týraly aıtyńyz", diff --git a/src/strings/ko.json b/src/strings/ko.json index dcdb1f5a8f..62c924e517 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -155,8 +155,6 @@ "HeaderLibraryAccess": "라이브러리 접근", "HeaderLibraryFolders": "라이브러리 폴더", "HeaderLibrarySettings": "라이브러리 설정", - "HeaderLiveTV": "실시간 TV", - "HeaderLiveTv": "실시간 TV", "HeaderLoginFailure": "로그인 실패", "HeaderMedia": "미디어", "HeaderMediaFolders": "미디어 폴더", @@ -166,7 +164,6 @@ "HeaderMyMedia": "내 미디어", "HeaderMyMediaSmall": "내 미디어 (작음)", "HeaderNewApiKey": "새 API 키", - "HeaderNextUp": "다음으로", "HeaderParentalRatings": "자녀 보호 등급", "HeaderPassword": "비밀번호", "HeaderPasswordReset": "비밀번호 재설정", @@ -189,7 +186,6 @@ "HeaderRevisionHistory": "리비전 이력", "HeaderRunningTasks": "실행중인 작업", "HeaderScenes": "장면", - "HeaderSchedule": "일정", "HeaderSeasons": "시즌", "HeaderSelectMetadataPath": "메타데이터 경로 선택", "HeaderSelectMetadataPathHelp": "메타데이터를 보관할 경로를 탐색 또는 입력하세요. 쓰기 가능한 폴더여야 합니다.", @@ -200,7 +196,6 @@ "HeaderSelectTranscodingPath": "트랜스코딩 임시 경로 선택", "HeaderSelectTranscodingPathHelp": "트랜스코딩 임시 파일에 사용할 경로를 탐색 또는 입력하세요. 쓰기 가능한 폴더여야 합니다.", "HeaderSendMessage": "메시지 전송", - "HeaderSeries": "시리즈", "HeaderServerSettings": "서버 설정", "HeaderSettings": "설정", "HeaderSetupLibrary": "미디어 라이브러리 설정", @@ -554,7 +549,6 @@ "OptionEveryday": "매일", "OptionExternallyDownloaded": "외부 다운로드", "OptionFavorite": "즐겨찾기", - "OptionFriday": "금요일", "OptionHasSpecialFeatures": "특별한 기능", "OptionHasSubtitles": "자막", "OptionHasThemeSong": "테마송", @@ -569,10 +563,8 @@ "OptionLikes": "좋아함", "OptionMax": "최대", "OptionMissingEpisode": "누락된 에피소드", - "OptionMonday": "월요일", "OptionNameSort": "제목", "OptionNone": "없음", - "OptionOnAppStartup": "애플리케이션 시작할 때", "OptionOnInterval": "기간", "OptionParentalRating": "등급", "OptionPlainStorageFolders": "모든 폴더를 일반 저장소 폴더로 표시", @@ -591,18 +583,13 @@ "OptionResElement": "res 요소", "OptionResumable": "이어보기", "OptionRuntime": "상영 시간", - "OptionSaturday": "토요일", "OptionSaveMetadataAsHidden": "메타데이터와 이미지를 숨김 파일로 저장", "OptionSpecialEpisode": "스페셜", - "OptionSunday": "일요일", - "OptionThursday": "목요일", "OptionTrackName": "트랙 이름", - "OptionTuesday": "화요일", "OptionTvdbRating": "TVDb 평점", "OptionUnairedEpisode": "방송하지 않은 에피소드", "OptionUnplayed": "재생되지 않음", "OptionWakeFromSleep": "슬립모드에서 깨우기", - "OptionWednesday": "수요일", "OptionWeekdays": "주중", "OptionWeekends": "주말", "OptionWeekly": "주", @@ -665,7 +652,6 @@ "TabEpisodes": "에피소드", "TabInfo": "정보", "TabLatest": "최근", - "TabLiveTV": "실시간 TV", "TabLogs": "로그", "TabMusic": "음악", "TabMusicVideos": "뮤직비디오", @@ -674,21 +660,16 @@ "TabNotifications": "알림", "TabOther": "기타", "TabParentalControl": "자녀 보호", - "TabPassword": "비밀번호", - "TabPlaylists": "재생목록", "TabPlugins": "플러그인", "TabProfile": "프로필", "TabProfiles": "프로필", - "TabRecordings": "녹화", "TabResponses": "반응", "TabScheduledTasks": "예약 작업", - "TabSeries": "시리즈", "TabServer": "서버", "TabSettings": "설정", "TabStreaming": "스트리밍", "TabTrailers": "예고편", "TabUpcoming": "방송 예정", - "TabUsers": "사용자", "Tags": "태그", "TellUsAboutYourself": "자신에 대해 알려주세요", "ThisWizardWillGuideYou": "이 마법사는 설정 과정을 안내합니다. 시작하려면 선호하는 언어를 선택하세요.", @@ -1065,7 +1046,6 @@ "HeaderSortOrder": "정렬 순서", "HeaderSortBy": "정렬 기준", "HeaderRecordingPostProcessing": "녹화 후처리 작업", - "HeaderPeople": "사람들", "HeaderOtherItems": "다른 항목", "HeaderLibraryOrder": "라이브러리 순서", "HeaderDefaultRecordingSettings": "기본 녹화 설정", diff --git a/src/strings/lt-lt.json b/src/strings/lt-lt.json index 39277004a2..0d66a6456a 100644 --- a/src/strings/lt-lt.json +++ b/src/strings/lt-lt.json @@ -115,7 +115,6 @@ "HeaderMetadataSettings": "Metaduomenų nustatymai", "HeaderMoreLikeThis": "Daugiau panašių", "HeaderMusicVideos": "Muzikiniai klipai", - "HeaderNextUp": "Toliau eilėje", "HeaderPaths": "Keliai", "HeaderPleaseSignIn": "Prašau prisijungti", "HeaderPreferredMetadataLanguage": "Pageidaujama metaduomenų kalba", @@ -345,7 +344,6 @@ "OptionEnableAccessToAllLibraries": "Leisti prieigą prie visų bibliotekos", "OptionEnded": "Pasibaigė", "OptionFavorite": "Mėgstami", - "OptionFriday": "Penktadienis", "OptionHasSpecialFeatures": "Ypatingos serijos", "OptionHasSubtitles": "Subtitrai", "OptionHasThemeSong": "Teminė daina", @@ -359,10 +357,8 @@ "OptionIsSD": "SH", "OptionLikes": "Patinka", "OptionMissingEpisode": "Trūkstamos serijos", - "OptionMonday": "Pirmadienis", "OptionNameSort": "Vardas", "OptionNew": "Naujas...", - "OptionOnAppStartup": "Paleidus programą", "OptionOnInterval": "Pasikartojantis", "OptionParentalRating": "Tėvų reitingas", "OptionPlayCount": "Rodymų kiekis", @@ -371,17 +367,12 @@ "OptionReleaseDate": "Išleidimo data", "OptionResumable": "Pratęsiamas", "OptionRuntime": "Trukmė", - "OptionSaturday": "Šeštadienis", "OptionSpecialEpisode": "Ypatingos", - "OptionSunday": "Sekmadienis", - "OptionThursday": "Ketvirtadienis", "OptionTrackName": "Dainos pavadinimas", - "OptionTuesday": "Antradienis", "OptionTvdbRating": "Tvdb vertinimas", "OptionUnairedEpisode": "Nerodytos serijos", "OptionUnplayed": "Nerodyta", "OptionWakeFromSleep": "Žadinti iš miego", - "OptionWednesday": "Trečiadienis", "OptionWeekly": "Savaitinis", "OriginalAirDateValue": "Pirmo eterio data: {0}", "Overview": "Apžvalga", @@ -458,11 +449,8 @@ "TabNetworks": "Tinklai", "TabNotifications": "Pranešimai", "TabOther": "Kita", - "TabPassword": "Slaptažodis", "TabProfile": "Profilis", "TabProfiles": "Profiliai", - "TabRecordings": "Įrašai", - "TabSeries": "Laidos", "TabServer": "Serveris", "TabSettings": "Nustatymai", "TabTrailers": "Anonsai", @@ -657,7 +645,6 @@ "HeaderDeveloperInfo": "Kūrėjo informacija", "HeaderDevices": "Įrenginiai", "HeaderDirectPlayProfile": "Tiesioginio leidimo profilis", - "HeaderLiveTV": "TV gyvai", "ButtonTrailer": "Anonsas", "Depressed": "Spaudžiamas", "DirectPlaying": "Tiesioginis leidimas", @@ -706,7 +693,6 @@ "HeaderSelectTranscodingPath": "Išrinkite kelią į aplanką laikiniems perkodavimo failams", "HeaderSelectTranscodingPathHelp": "Suraskite arba įrašykite kelią serverio į aplanką laikinų perkodavimo failų saugojimui. Aplankalas turi būti su rašymo teise.", "HeaderSendMessage": "Siųsti žinutę", - "HeaderSeries": "Serialai", "HeaderSeriesStatus": "Serialo būsena", "HeaderServerSettings": "Serverio nustatymai", "HeaderSubtitleProfile": "Subtitrų profilis", @@ -846,7 +832,6 @@ "LabelPreferredSubtitleLanguage": "Pageidautina titrų kalba:", "HeaderChannelAccess": "Prieiga prie kanalų", "LabelProfileAudioCodecs": "Garso takelio kodekas:", - "HeaderLiveTv": "TV gyvai", "HeaderLiveTvTunerSetup": "Imtuvo nustatymai", "FetchingData": "Gaunami papildomi duomenys", "FileReadError": "Nuskaitant failą įvyko klaida.", @@ -925,7 +910,6 @@ "HeaderOnNow": "Gyvai dabar", "HeaderOtherItems": "Kiti elementai", "HeaderParentalRatings": "Amžiaus kategorijos", - "HeaderPeople": "Žmonės", "HeaderPhotoAlbums": "Nuotraukų albumai", "HeaderPinCodeReset": "Nustatyti PIN kodą iš naujo", "HeaderPlayAll": "Leisti visus", @@ -935,7 +919,6 @@ "HeaderProfile": "Profilis", "HeaderProfileInformation": "Apie profilį", "HeaderResponseProfileHelp": "Atsakymo profiliai suteikia galimybę pritaikyti prie prietaiso siunčiamą informaciją, kai grojama tam tikros rūšies medijos.", - "HeaderSchedule": "Tvarkaraštis", "HeaderSeasons": "Sezonai", "HeaderSecondsValue": "{0} s", "HeaderSelectMetadataPath": "Metaduomenų kelio išrinkimas", diff --git a/src/strings/lv.json b/src/strings/lv.json index e952b25fa9..ee712f615b 100644 --- a/src/strings/lv.json +++ b/src/strings/lv.json @@ -252,13 +252,11 @@ "HeaderServerSettings": "Servera Iestatījumi", "HeaderSeriesStatus": "Sēriju Status", "HeaderSeriesOptions": "Sēriju Opcijas", - "HeaderSeries": "Sērijas", "HeaderSendMessage": "Sūtīt Ziņojumu", "HeaderSelectServerCachePath": "Izvēlies Servera Keša Ceļu", "HeaderSelectServer": "Izvēlies Serveri", "HeaderSecondsValue": "{0} Sekundes", "HeaderSeasons": "Sezonas", - "HeaderSchedule": "Grafiks", "HeaderRevisionHistory": "Revīziju Vēsture", "HeaderRestart": "Restartēt", "HeaderRemoveMediaLocation": "Noņemt Multvides Atrašanās Vietu", @@ -273,12 +271,10 @@ "HeaderPlayAll": "Atskaņot Visu", "HeaderPinCodeReset": "Atiestatīt Pin Kodu", "HeaderPhotoAlbums": "Foto Albūmi", - "HeaderPeople": "Cilvēki", "HeaderPaths": "Ceļi", "HeaderPasswordReset": "Paroles Nomaiņa", "HeaderPassword": "Parole", "HeaderNextVideoPlayingInValue": "Nākamais Video tiks atskaņots pēc {0}", - "HeaderNextUp": "Nākamais", "HeaderNextEpisodePlayingInValue": "Nākamā Epizode tiks atskaņota pēc: {0}", "HeaderNewDevices": "Jaunas Ierīces", "HeaderNewApiKey": "Jauna API Atslēga", @@ -294,8 +290,6 @@ "HeaderMediaFolders": "Multvides Mapes", "HeaderMedia": "Multvide", "HeaderLiveTvTunerSetup": "Tiešraides TV Tūnera Uzstādīšana", - "HeaderLiveTv": "Tiešraides TV", - "HeaderLiveTV": "Tiešraides TV", "HeaderLibrarySettings": "Bibliotēku Iestatījumi", "HeaderLibraryOrder": "Bibliotēku Kārtojums", "HeaderLibraryFolders": "Bibliotēku Mapes", @@ -670,20 +664,15 @@ "TellUsAboutYourself": "Pastāsti mums par sevi", "TagsValue": "Tagi: {0}", "Tags": "Tagi", - "TabUsers": "Lietotāji", "TabTrailers": "Treileri", "TabStreaming": "Straumēšana", "TabSettings": "Iestatījumi", "TabServer": "Serveris", - "TabSeries": "Sērijas", "TabResumeSettings": "Turpināt", "TabResponses": "Atbildes", - "TabRecordings": "Ieraksti", "TabProfiles": "Profili", "TabProfile": "Profils", "TabPlugins": "Paplašinājumi", - "TabPlaylists": "Atskaņošanas Saraksti", - "TabPassword": "Parole", "TabParentalControl": "Vecāku Pārvaldība", "TabOther": "Cits", "TabNotifications": "Paziņojumi", @@ -694,7 +683,6 @@ "TabMusicVideos": "Mūzikas Video", "TabMusic": "Mūzika", "TabLogs": "Logs", - "TabLiveTV": "Tiešraides TV", "TabLatest": "Jaunākais", "TabInfo": "Info", "TabEpisodes": "Epizodes", @@ -748,14 +736,12 @@ "OptionOnInterval": "Pēc intervāla", "OptionNone": "Neviens", "OptionNew": "Jauns...", - "OptionMonday": "Pirmdien", "OptionList": "Saraksts", "OptionLikes": "Patīk", "OptionIsSD": "SD", "OptionIsHD": "HD", "OptionHasTrailer": "Treileris", "OptionHasSubtitles": "Subtitri", - "OptionFriday": "Piektdien", "OptionFavorite": "Favorīti", "OptionEveryday": "Katru dienu", "OptionEnded": "Beidzies", @@ -1083,16 +1069,11 @@ "OptionWeekly": "Iknedēļu", "OptionWeekends": "Nedēļas nogalēs", "OptionWeekdays": "Darba dienās", - "OptionWednesday": "Trešdiena", "OptionWakeFromSleep": "Modināt no miega", "OptionUnplayed": "Neatskaņots", - "OptionTuesday": "Otrdiena", "OptionTrackName": "Celiņa Nosaukums", "OptionThumb": "Sīktēls", - "OptionThursday": "Ceturtdiena", - "OptionSunday": "Svētdiena", "OptionSaveMetadataAsHidden": "Saglabāt metadatus un attēlus kā paslēptas datnes", - "OptionSaturday": "Sestdiena", "OptionRequirePerfectSubtitleMatch": "Lejupielādēt tikai subtitrus, kas perfekti sakrīt ar manām video datnēm", "OptionRegex": "Regex", "OptionProtocolHls": "HTTP Tiešraides Straumes", @@ -1100,7 +1081,6 @@ "OptionPremiereDate": "Pirmizrādes Datums", "OptionPoster": "Plakāts", "OptionPlayCount": "Atskaņošanas Skaits", - "OptionOnAppStartup": "Lietotnes sāknēšanā", "OptionNameSort": "Nosaukums", "OptionMissingEpisode": "Trūkstošās Epizodes", "OptionMax": "Maksimums", diff --git a/src/strings/ms.json b/src/strings/ms.json index 772cb3e043..786d2b7707 100644 --- a/src/strings/ms.json +++ b/src/strings/ms.json @@ -2,7 +2,6 @@ "ButtonSignOut": "Sign out", "Delete": "Padam", "FolderTypeTvShows": "TV", - "HeaderSeries": "Series", "LabelFinish": "Habis", "LabelYoureDone": "Kamu Selesai!", "ParentalRating": "Parental Rating", @@ -90,8 +89,6 @@ "Channels": "Saluran", "ButtonSyncPlay": "SyncPlay", "Movies": "Filem", - "HeaderNextUp": "Seterusnya", - "HeaderLiveTV": "TV Siaran Langsung", "HeaderFavoriteSongs": "Lagu-lagu Kegemaran", "HeaderFavoriteShows": "Rancangan-rancangan Kegemaran", "HeaderFavoriteEpisodes": "Episod-episod Kegemaran", diff --git a/src/strings/nb.json b/src/strings/nb.json index d9e0b3c8ec..66b383b616 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -269,14 +269,12 @@ "HeaderMyMediaSmall": "Min media (liten)", "HeaderNewApiKey": "Ny API-nøkkel", "HeaderNewDevices": "Nye enheter", - "HeaderNextUp": "Neste", "HeaderOnNow": "Spiller nå", "HeaderOtherItems": "Andre elementer", "HeaderParentalRatings": "Foreldresensur", "HeaderPassword": "Passord", "HeaderPasswordReset": "Tilbakestill passord", "HeaderPaths": "Filbaner", - "HeaderPeople": "Personer", "HeaderPinCodeReset": "Tilbakestill PIN-kode", "HeaderPlayAll": "Spill alle", "HeaderPlayOn": "Forsett avspilling", @@ -300,7 +298,6 @@ "HeaderRevisionHistory": "Revisjonshistorikk", "HeaderRunningTasks": "Kjørende oppgaver", "HeaderScenes": "Kapitler", - "HeaderSchedule": "Timeplan", "HeaderSeasons": "Sesonger", "HeaderSelectCertificatePath": "Velg sertifikatplassering", "HeaderSelectMetadataPath": "Velg metadataplassering", @@ -312,7 +309,6 @@ "HeaderSelectTranscodingPath": "Velg filbane for midlertidig lagring av omkodede filer", "HeaderSelectTranscodingPathHelp": "Bla eller skriv inn filbanen som skal brukes for midlertidig lagring av omkodede filer. Mappen må være skrivbar.", "HeaderSendMessage": "Send melding", - "HeaderSeries": "Serier", "HeaderSeriesOptions": "Serievalg", "HeaderServerSettings": "Serverinnstillinger", "HeaderSettings": "Innstillinger", @@ -792,7 +788,6 @@ "OptionExternallyDownloaded": "Ekstern nedlasting", "OptionExtractChapterImage": "Aktiver uthenting av kapittelbilder", "OptionFavorite": "Favoritter", - "OptionFriday": "Fredag", "OptionHasSpecialFeatures": "Spesialfunksjoner", "OptionHasSubtitles": "Undertekster", "OptionHasThemeSong": "Temasang", @@ -806,11 +801,9 @@ "OptionLikes": "Liker", "OptionMax": "Maks", "OptionMissingEpisode": "Manglende episoder", - "OptionMonday": "Mandag", "OptionNameSort": "Navn", "OptionNew": "Ny…", "OptionNone": "Ingen", - "OptionOnAppStartup": "Ved applikasjonsoppstart", "OptionOnInterval": "Per intervall", "OptionParentalRating": "Aldersgrense", "OptionPlainStorageFolders": "Vis alle mapper som enkle lagringsmapper", @@ -830,20 +823,15 @@ "OptionRequirePerfectSubtitleMatchHelp": "Å kreve en perfekt match vil filtrere bort undertekster slik at kun de som har blitt testet og verifisert mot nøyaktig samme video-fil gjenstår. Dersom du deaktiverer innstillingen øker sannsynligheten for at undertekster lastes ned, men sjansen øker også for at feilsynkronisert eller feilaktig undertekst lastes ned.", "OptionResumable": "Kan gjenopptas", "OptionRuntime": "Spilletid", - "OptionSaturday": "Lørdag", "OptionSaveMetadataAsHidden": "Lagre metadata og bilder som skjulte filer", "OptionSaveMetadataAsHiddenHelp": "Endring av denne innstillingen vil gjelde ny metadata som lagres fra nå av. Eksisterende metadata vil bli oppdatert neste gang de lagres av Jellyfin-serveren.", "OptionSpecialEpisode": "Spesialepisoder", "OptionSubstring": "Deltekst", - "OptionSunday": "Søndag", - "OptionThursday": "Torsdag", "OptionTrackName": "Låtnavn", - "OptionTuesday": "Tirsdag", "OptionTvdbRating": "TVDB-vurdering", "OptionUnairedEpisode": "Kommende episoder", "OptionUnplayed": "Ikke sett", "OptionWakeFromSleep": "Våkne fra dvale", - "OptionWednesday": "Onsdag", "OptionWeekdays": "Ukedager", "OptionWeekends": "Helger", "OptionWeekly": "Ukentlig", @@ -971,20 +959,15 @@ "TabNotifications": "Varslinger", "TabOther": "Annet", "TabParentalControl": "Foreldrekontroll", - "TabPassword": "Passord", - "TabPlaylists": "Spillelister", "TabPlugins": "Programtillegg", "TabProfile": "Profil", "TabProfiles": "Profiler", - "TabRecordings": "Opptak", "TabResponses": "Svar", "TabResumeSettings": "Fortsettelse", "TabScheduledTasks": "Planlagte oppgaver", - "TabSeries": "Serier", "TabSettings": "Innstillinger", "TabTrailers": "Trailere", "TabUpcoming": "Kommende", - "TabUsers": "Brukere", "Tags": "Tagger", "TellUsAboutYourself": "Fortell oss litt om deg selv", "ThisWizardWillGuideYou": "Denne veiviseren vil hjelpe deg gjennom installasjonsprosessen. Velg ønsket språk for å komme i gang.", @@ -1180,7 +1163,6 @@ "LabelAudioCodec": "Lydkodek:", "LabelAudioSampleRate": "Samplingsfrekvens for lyd:", "OptionRegex": "Regulært uttrykk", - "HeaderLiveTV": "Direkte-TV", "HeaderMedia": "Media", "LabelDropImageHere": "Dra og slipp bildet her, eller klikk for å bla igjennom.", "LabelMetadataSavers": "Lagring av metadata:", @@ -1228,7 +1210,6 @@ "HeaderFavoriteArtists": "Favorittartister", "HeaderFavoriteSongs": "Favorittsanger", "HeaderHome": "Hjem", - "HeaderLiveTv": "Direkte-TV", "HeaderNextEpisodePlayingInValue": "Neste episode starter om {0}", "HeaderNextVideoPlayingInValue": "Neste video starter om {0}", "HeaderSeriesStatus": "Seriestatus", @@ -1349,7 +1330,6 @@ "SubtitleOffset": "Forskyvet underteksting", "TV": "TV", "TabInfo": "Informasjon", - "TabLiveTV": "Direkte-TV", "TabNetworking": "Nettverk", "Trailers": "Trailere", "Transcoding": "Omkoding", diff --git a/src/strings/nl.json b/src/strings/nl.json index 5dee8dbf47..8d5e5c78a4 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -336,7 +336,6 @@ "HeaderNewApiKey": "Nieuwe API sleutel", "HeaderNewDevices": "Nieuwe Apparaten", "HeaderNextEpisodePlayingInValue": "Volgende Aflevering over {0}", - "HeaderNextUp": "Volgende", "HeaderNextVideoPlayingInValue": "Volgende Afgespeeld over {0}", "HeaderOnNow": "Aan het spelen", "HeaderOtherItems": "Overige Items", @@ -344,7 +343,6 @@ "HeaderPassword": "Wachtwoord", "HeaderPasswordReset": "Wachtwoord resetten", "HeaderPaths": "Paden", - "HeaderPeople": "Personen", "HeaderPhotoAlbums": "Foto-albums", "HeaderPinCodeReset": "Reset Pincode", "HeaderPlayAll": "Alles afspelen", @@ -369,7 +367,6 @@ "HeaderRevisionHistory": "Versie geschiedenis", "HeaderRunningTasks": "Actieve taken", "HeaderScenes": "Hoofdstukken", - "HeaderSchedule": "Schema", "HeaderSeasons": "Seizoenen", "HeaderSecondsValue": "{0} Seconden", "HeaderSelectCertificatePath": "Selecteer Certificaat Pad", @@ -382,7 +379,6 @@ "HeaderSelectTranscodingPath": "Selecteer Tijdelijke Transcodeer Pad", "HeaderSelectTranscodingPathHelp": "Blader of voer het pad in om te gebruiken voor het transcoderen van tijdelijke bestanden. De map moet schrijfbaar zijn.", "HeaderSendMessage": "Stuur bericht", - "HeaderSeries": "Series", "HeaderSeriesOptions": "Series Opties", "HeaderSeriesStatus": "Seriestatus", "HeaderServerSettings": "Server Instellingen", @@ -918,7 +914,6 @@ "OptionExternallyDownloaded": "Externe download", "OptionExtractChapterImage": "Inschakelen uitpakken van hoofdstuk afbeeldingen", "OptionFavorite": "Favorieten", - "OptionFriday": "Vrijdag", "OptionHasSpecialFeatures": "Extra's", "OptionHasSubtitles": "Ondertiteling", "OptionHasThemeSong": "Thema Lied", @@ -932,11 +927,9 @@ "OptionImdbRating": "IMDb Waardering", "OptionLikes": "Leuk", "OptionMissingEpisode": "Ontbrekende Afleveringen", - "OptionMonday": "Maandag", "OptionNameSort": "Naam", "OptionNew": "Nieuw…", "OptionNone": "Geen", - "OptionOnAppStartup": "Op applicatie start", "OptionOnInterval": "Op interval", "OptionParentalRating": "Kijkwijzer classificatie", "OptionPlainStorageFolders": "Alle mappen weergeven als gewone opslagmappen", @@ -956,19 +949,14 @@ "OptionRequirePerfectSubtitleMatchHelp": "Een perfecte match vereisen zal de ondertitels filteren om alleen ondertitels te downloaden die getest en geverifieerd zijn met je exacte videobestand. Dit uitvinken zal de kans om ondertitels te vinden vergroten, maar ook de kans op een niet gesynchroniseerd of foute ondertitel vergroten.", "OptionResumable": "Hervatbaar", "OptionRuntime": "Speelduur", - "OptionSaturday": "Zaterdag", "OptionSaveMetadataAsHidden": "Metagegevens en afbeeldingen opslaan als verborgen bestanden", "OptionSaveMetadataAsHiddenHelp": "Het veranderen van dit zal gelden voor nieuwe metadata die wordt opgeslagen. Bestaande metadata bestanden zullen de volgende keer dat ze worden opgeslagen door Jellyfin Server worden bijgewerkt.", "OptionSubstring": "Subtekenreeks", - "OptionSunday": "Zondag", - "OptionThursday": "Donderdag", "OptionTrackName": "Naam van Nummer", - "OptionTuesday": "Dinsdag", "OptionTvdbRating": "TVDB Waardering", "OptionUnairedEpisode": "Toekomstige Afleveringen", "OptionUnplayed": "Niet afgespeeld", "OptionWakeFromSleep": "Uit slaapstand halen", - "OptionWednesday": "Woensdag", "OptionWeekdays": "Week dagen", "OptionWeekends": "Weekend", "OptionWeekly": "Wekelijks", @@ -1117,18 +1105,13 @@ "TabNotifications": "Meldingen", "TabOther": "Overig", "TabParentalControl": "Ouderlijk toezicht", - "TabPassword": "Wachtwoord", - "TabPlaylists": "Afspeellijst", "TabProfile": "Profiel", "TabProfiles": "Profielen", - "TabRecordings": "Opnamen", "TabResponses": "Reacties", "TabResumeSettings": "Hervatten", "TabScheduledTasks": "Geplande taken", - "TabSeries": "Serie", "TabSettings": "Instellingen", "TabUpcoming": "Binnenkort op TV", - "TabUsers": "Gebruikers", "Tags": "Labels", "TagsValue": "Labels: {0}", "TellUsAboutYourself": "Vertel ons over uzelf", @@ -1205,7 +1188,6 @@ "HeaderCastAndCrew": "Acteurs en medewerkers", "HeaderCastCrew": "Acteurs & medewerkers", "Art": "Afbeeldingen", - "HeaderLiveTV": "Live TV", "HeaderHttpHeaders": "HTTP Headers", "HeaderStatus": "Status", "AuthProviderHelp": "Selecteer een authenticatie provider om het wachtwoord van deze gebruiker te verifiëren.", @@ -1217,7 +1199,6 @@ "HeaderFavoriteSongs": "Favoriete nummers", "HeaderFavoriteVideos": "Favoriete Films", "HeaderInstantMix": "Directe Mix", - "HeaderLiveTv": "Live TV", "HeaderMedia": "Media", "HeaderTracks": "Nummers", "HeaderTuners": "Stemmers", @@ -1243,7 +1224,6 @@ "LabelSize": "Grootte:", "CopyStreamURLSuccess": "URL succesvol gekopieerd.", "CopyStreamURL": "Kopieer Stream URL", - "TabLiveTV": "Live TV", "ValueAlbumCount": "{0} albums", "FetchingData": "Meer data op aan het halen", "HeaderFavoriteBooks": "Favoriete Boeken", diff --git a/src/strings/pl.json b/src/strings/pl.json index d4f88b4b44..cb23cf40e6 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -341,8 +341,6 @@ "HeaderLibraryFolders": "Foldery biblioteki", "HeaderLibraryOrder": "Kolejność biblioteki", "HeaderLibrarySettings": "Ustawienia biblioteki", - "HeaderLiveTV": "Telewizja", - "HeaderLiveTv": "Telewizja", "HeaderLiveTvTunerSetup": "Konfiguracja tunera telewizyjnego", "HeaderLoginFailure": "Niepowodzenie logowania", "HeaderMedia": "Multimedia", @@ -358,7 +356,6 @@ "HeaderNewApiKey": "Nowy Klucz API", "HeaderNewDevices": "Nowe urządzenia", "HeaderNextEpisodePlayingInValue": "Następne odcinek za {0}", - "HeaderNextUp": "Do obejrzenia", "HeaderNextVideoPlayingInValue": "Następne wideo za {0}", "HeaderOnNow": "Teraz", "HeaderOtherItems": "Inne pozycje", @@ -366,7 +363,6 @@ "HeaderPassword": "Hasło", "HeaderPasswordReset": "Czyszczenie hasła", "HeaderPaths": "Foldery", - "HeaderPeople": "Osoby", "HeaderPhotoAlbums": "Albumy fotografii", "HeaderPinCodeReset": "Wyczyść kod PIN", "HeaderPlayAll": "Odtwarzaj wszystko", @@ -391,7 +387,6 @@ "HeaderRevisionHistory": "Historia zmian", "HeaderRunningTasks": "Uruchomione zadania", "HeaderScenes": "Sceny", - "HeaderSchedule": "Harmonogram", "HeaderSeasons": "Sezony", "HeaderSecondsValue": "{0} sekund", "HeaderSelectCertificatePath": "Wybierz folder certyfikatu", @@ -404,7 +399,6 @@ "HeaderSelectTranscodingPath": "Wybierz folder tymczasowy transkodowania", "HeaderSelectTranscodingPathHelp": "Przeglądaj lub wprowadź folder plików tymczasowych transkodowania. Folder musi umożliwiać zapis plików.", "HeaderSendMessage": "Wyślij wiadomość", - "HeaderSeries": "Seriale", "HeaderSeriesOptions": "Opcje nagrywania serialu", "HeaderSeriesStatus": "Stan serialu", "HeaderServerSettings": "Ustawienia serwera", @@ -984,7 +978,6 @@ "OptionExternallyDownloaded": "Pobieranie zewnętrzne", "OptionExtractChapterImage": "Wydobywaj obrazy rozdziałów", "OptionFavorite": "Ulubione", - "OptionFriday": "Piątek", "OptionHasSpecialFeatures": "Funkcje Specjalne", "OptionHasSubtitles": "Napisy", "OptionHasThemeSong": "Piosenka Przewodnia", @@ -1000,11 +993,9 @@ "OptionLikes": "Lubie", "OptionMax": "Maksymalny", "OptionMissingEpisode": "Brakujące Odcinki", - "OptionMonday": "Poniedziałek", "OptionNameSort": "Nazwa", "OptionNew": "Nowa…", "OptionNone": "Brak", - "OptionOnAppStartup": "Podczas uruchomienia aplikacji", "OptionOnInterval": "Cyklicznie", "OptionParentalRating": "Kategoria wiekowa", "OptionPlainStorageFolders": "Wyświetlaj wszystkie foldery jako zwyczajne foldery", @@ -1029,20 +1020,15 @@ "OptionResElement": "Element res", "OptionResumable": "Do wznowienia", "OptionRuntime": "Długość filmu", - "OptionSaturday": "Sobota", "OptionSaveMetadataAsHidden": "Zapisuj metadane i obrazy jako pliki ukryte", "OptionSaveMetadataAsHiddenHelp": "Zmiana ta będzie miała zastosowanie do nowych metadanych zapisanych w przyszłości. Istniejące pliki metadanych zostaną zaktualizowane przy następnym zapisie przez serwer.", "OptionSpecialEpisode": "Specjalne", "OptionSubstring": "Podwyrażenie", - "OptionSunday": "Niedziela", - "OptionThursday": "Czwartek", "OptionTrackName": "Nazwa utworu", - "OptionTuesday": "Wtorek", "OptionTvdbRating": "Ocena TVDB", "OptionUnairedEpisode": "Odcinki o planowanej emisji", "OptionUnplayed": "Nieobejrzany", "OptionWakeFromSleep": "Wybudź z uspienia", - "OptionWednesday": "Środa", "OptionWeekdays": "Dni Tygodnia", "OptionWeekends": "Weekendy", "OptionWeekly": "Cotygodniowo", @@ -1190,7 +1176,6 @@ "TabEpisodes": "Odcinki", "TabInfo": "Informacje", "TabLatest": "Ostatnio dodane", - "TabLiveTV": "Telewizja", "TabLogs": "Dziennik zdarzeń", "TabMusic": "Muzyka", "TabMusicVideos": "Teledyski", @@ -1200,22 +1185,17 @@ "TabNotifications": "Powiadomienia", "TabOther": "Inne", "TabParentalControl": "Kontrola rodzicielska", - "TabPassword": "Hasło", - "TabPlaylists": "Listy odtwarzania", "TabPlugins": "Wtyczki", "TabProfile": "Profil", "TabProfiles": "Profile", - "TabRecordings": "Nagrania", "TabResponses": "Odpowiedzi", "TabResumeSettings": "Wznawianie", "TabScheduledTasks": "Harmonogram zadań", - "TabSeries": "Seriale", "TabServer": "Serwer", "TabSettings": "Ustawienia", "TabStreaming": "Transmitowanie", "TabTrailers": "Zwiastuny", "TabUpcoming": "Wkrótce", - "TabUsers": "Użytkownicy", "Tags": "Znaczniki", "TagsValue": "Znaczniki: {0}", "TellUsAboutYourself": "Opowiedz nam o sobie", diff --git a/src/strings/pt-br.json b/src/strings/pt-br.json index 71913399f6..25f6afd31e 100644 --- a/src/strings/pt-br.json +++ b/src/strings/pt-br.json @@ -329,8 +329,6 @@ "HeaderLibraryFolders": "Pastas da Biblioteca", "HeaderLibraryOrder": "Ordem da Biblioteca", "HeaderLibrarySettings": "Configurações da Biblioteca", - "HeaderLiveTV": "TV ao Vivo", - "HeaderLiveTv": "TV ao Vivo", "HeaderLiveTvTunerSetup": "Configuração do Sintonizador da TV ao Vivo", "HeaderLoginFailure": "Falha no Login", "HeaderMedia": "Mídia", @@ -346,7 +344,6 @@ "HeaderNewApiKey": "Nova Chave de API", "HeaderNewDevices": "Novos Dispositivos", "HeaderNextEpisodePlayingInValue": "Reproduzindo Próximo Episódio em {0}", - "HeaderNextUp": "A Seguir", "HeaderNextVideoPlayingInValue": "Reproduzindo Próximo Vídeo em {0}", "HeaderOnNow": "Em Exibição", "HeaderOtherItems": "Outros Itens", @@ -354,7 +351,6 @@ "HeaderPassword": "Senha", "HeaderPasswordReset": "Redefinição de Senha", "HeaderPaths": "Locais", - "HeaderPeople": "Pessoas", "HeaderPhotoAlbums": "Álbuns de Fotos", "HeaderPinCodeReset": "Redefinir Código Pin", "HeaderPlayAll": "Reproduzir Tudo", @@ -379,7 +375,6 @@ "HeaderRevisionHistory": "Histórico de Versões", "HeaderRunningTasks": "Tarefas em Execução", "HeaderScenes": "Cenas", - "HeaderSchedule": "Programação", "HeaderSeasons": "Temporadas", "HeaderSecondsValue": "{0} Segundos", "HeaderSelectCertificatePath": "Selecionar Local do Certificado", @@ -392,7 +387,6 @@ "HeaderSelectTranscodingPath": "Selecionar Local Temporário da Transcodificação", "HeaderSelectTranscodingPathHelp": "Navegue ou digite o local para usar para arquivos temporários de transcodificação. A pasta deve ter permissão de gravação.", "HeaderSendMessage": "Enviar Mensagem", - "HeaderSeries": "Séries", "HeaderSeriesOptions": "Opções da Série", "HeaderSeriesStatus": "Status da Série", "HeaderServerSettings": "Configurações de Servidor", @@ -956,7 +950,6 @@ "OptionExternallyDownloaded": "Download externo", "OptionExtractChapterImage": "Ativar extração de imagens de capítulos", "OptionFavorite": "Favoritos", - "OptionFriday": "Sexta-feira", "OptionHasSpecialFeatures": "Recursos Especiais", "OptionHasSubtitles": "Legendas", "OptionHasThemeSong": "Música-Tema", @@ -971,11 +964,9 @@ "OptionLikes": "Curtidas", "OptionMax": "Máx", "OptionMissingEpisode": "Episódios em Falta", - "OptionMonday": "Segunda-feira", "OptionNameSort": "Nome", "OptionNew": "Novo…", "OptionNone": "Nenhum", - "OptionOnAppStartup": "Ao iniciar a aplicação", "OptionOnInterval": "Em um intervalo", "OptionParentalRating": "Classificação Etária", "OptionPlainStorageFolders": "Exibir todas as pastas como pastas de armazenamento", @@ -997,19 +988,14 @@ "OptionResElement": "elemento res", "OptionResumable": "Retomável", "OptionRuntime": "Duração", - "OptionSaturday": "Sábado", "OptionSaveMetadataAsHidden": "Salvar metadados e imagens como arquivos ocultos", "OptionSaveMetadataAsHiddenHelp": "Isto será aplicado sobre novos metadados salvos. Os arquivos de metadados existentes serão atualizados na próxima vez que forem salvos no Servidor Jellyfin.", "OptionSpecialEpisode": "Especiais", - "OptionSunday": "Domingo", - "OptionThursday": "Quinta-feira", "OptionTrackName": "Nome da Faixa", - "OptionTuesday": "Terça-feira", "OptionTvdbRating": "Avaliação TVDB", "OptionUnairedEpisode": "Episódios a Estrear", "OptionUnplayed": "Não reproduzido", "OptionWakeFromSleep": "Despertar da hibernação", - "OptionWednesday": "Quarta-feira", "OptionWeekdays": "Dias da semana", "OptionWeekends": "Fins de semana", "OptionWeekly": "Semanal", @@ -1150,7 +1136,6 @@ "TabDirectPlay": "Reprodução Direta", "TabEpisodes": "Episódios", "TabLatest": "Recentes", - "TabLiveTV": "TV ao Vivo", "TabMusic": "Música", "TabMusicVideos": "Videoclipes", "TabMyPlugins": "Meus Plugins", @@ -1159,19 +1144,14 @@ "TabNotifications": "Notificações", "TabOther": "Outros", "TabParentalControl": "Controle dos Pais", - "TabPassword": "Senha", - "TabPlaylists": "Listas de Reprodução", "TabProfile": "Perfil", "TabProfiles": "Perfis", - "TabRecordings": "Gravações", "TabResponses": "Respostas", "TabResumeSettings": "Retomar", "TabScheduledTasks": "Tarefas Agendadas", - "TabSeries": "Séries", "TabServer": "Servidor", "TabSettings": "Configurações", "TabUpcoming": "A Seguir", - "TabUsers": "Usuários", "TellUsAboutYourself": "Conte-nos sobre você", "ThemeSongs": "Músicas-tema", "ThemeVideos": "Vídeos-tema", diff --git a/src/strings/pt-pt.json b/src/strings/pt-pt.json index 2d6890ff6d..02fa88aaf6 100644 --- a/src/strings/pt-pt.json +++ b/src/strings/pt-pt.json @@ -155,8 +155,6 @@ "HeaderLibraryAccess": "Acesso à Biblioteca", "HeaderLibraryFolders": "Pastas Multimédia", "HeaderLibrarySettings": "Configurações da Biblioteca", - "HeaderLiveTV": "TV em Direto", - "HeaderLiveTv": "TV em Direto", "HeaderLoginFailure": "Falha no Login", "HeaderMedia": "Multimédia", "HeaderMediaFolders": "Pastas Multimédia", @@ -165,12 +163,10 @@ "HeaderMusicVideos": "Videoclips", "HeaderMyMedia": "O Meu Conteúdo", "HeaderNewApiKey": "Nova Chave da API", - "HeaderNextUp": "A Seguir", "HeaderParentalRatings": "Classificações Parentais", "HeaderPassword": "Palavra-passe", "HeaderPasswordReset": "Redefinição de Palavra-Passe", "HeaderPaths": "Localizações", - "HeaderPeople": "Pessoas", "HeaderPinCodeReset": "Redefinir Código PIN", "HeaderPlayAll": "Reproduzir Todos", "HeaderPlayback": "Reprodução de Multimédia", @@ -190,7 +186,6 @@ "HeaderRevisionHistory": "Histórico de Versões", "HeaderRunningTasks": "Tarefas em Execução", "HeaderScenes": "Cenas", - "HeaderSchedule": "Agendamentos", "HeaderSelectCertificatePath": "Selecione a Localização do Certificado", "HeaderSelectMetadataPath": "Selecione a Localização dos Metadados", "HeaderSelectMetadataPathHelp": "Procure ou introduza a localização da pasta para guardar os metadados. O Servidor Jellyfin deve ter acesso de escrita a essa pasta.", @@ -201,7 +196,6 @@ "HeaderSelectTranscodingPath": "Selecione o Local Temporário da Transcodificação", "HeaderSelectTranscodingPathHelp": "Procure ou introduza a localização da pasta para guardar os ficheiros temporários de transcodificação. O Servidor Jellyfin deve ter acesso de escrita a essa pasta.", "HeaderSendMessage": "Enviar mensagem", - "HeaderSeries": "Série", "HeaderServerSettings": "Configurações do Servidor", "HeaderSettings": "Configurações", "HeaderSetupLibrary": "Configurar Bibliotecas Multimédia", @@ -555,7 +549,6 @@ "OptionEveryday": "Todos os dias", "OptionExternallyDownloaded": "Download Externo", "OptionFavorite": "Favoritos", - "OptionFriday": "Sexta", "OptionHasSpecialFeatures": "Extras", "OptionHasSubtitles": "Legendas", "OptionHasThemeSong": "Música de Tema", @@ -569,11 +562,9 @@ "OptionLikes": "Gostos", "OptionMax": "Máx", "OptionMissingEpisode": "Episódios em Falta", - "OptionMonday": "Segunda", "OptionNameSort": "Nome", "OptionNew": "Nova…", "OptionNone": "Nenhum", - "OptionOnAppStartup": "Ao iniciar a aplicação", "OptionOnInterval": "Num intervalo", "OptionParentalRating": "Classificação Parental", "OptionPlainStorageFolders": "Mostrar todas as pastas como pastas de armazenamento simples", @@ -593,18 +584,13 @@ "OptionResElement": "elemento res", "OptionResumable": "Retomável", "OptionRuntime": "Duração", - "OptionSaturday": "Sábado", "OptionSaveMetadataAsHidden": "Guardar metadados e imagens como ficheiros ocultos", "OptionSpecialEpisode": "Especiais", - "OptionSunday": "Domingo", - "OptionThursday": "Quinta", "OptionTrackName": "Nome da pista", - "OptionTuesday": "Terça", "OptionTvdbRating": "Classificação no TVDB", "OptionUnairedEpisode": "Episódios por Estrear", "OptionUnplayed": "Por reproduzir", "OptionWakeFromSleep": "Retomar da suspensão", - "OptionWednesday": "Quarta", "OptionWeekdays": "Dias da semana", "OptionWeekends": "Fins-de-semana", "OptionWeekly": "Semanalmente", @@ -657,7 +643,6 @@ "TabDirectPlay": "Reprodução Direta", "TabEpisodes": "Episódios", "TabLatest": "Mais recente", - "TabLiveTV": "TV em Direto", "TabMusic": "Música", "TabMusicVideos": "Videoclips", "TabMyPlugins": "As Minhas Extensões", @@ -666,19 +651,14 @@ "TabNotifications": "Notificações", "TabOther": "Outro", "TabParentalControl": "Controlo Parental", - "TabPassword": "Palavra-passe", - "TabPlaylists": "Listas de Reprodução", "TabPlugins": "Extensões", "TabProfile": "Perfil", "TabProfiles": "Perfis", - "TabRecordings": "Gravações", "TabResponses": "Respostas", "TabScheduledTasks": "Tarefas Agendadas", - "TabSeries": "Séries", "TabServer": "Servidor", "TabSettings": "Configurações", "TabUpcoming": "Próximos", - "TabUsers": "Utilizadores", "TellUsAboutYourself": "Fale-nos sobre si", "ThisWizardWillGuideYou": "Este assistente irá ajudá-lo durante o processo de configuração. Para começar, selecione o idioma.", "Thursday": "Quinta", diff --git a/src/strings/pt.json b/src/strings/pt.json index 324f08a064..95842bb22a 100644 --- a/src/strings/pt.json +++ b/src/strings/pt.json @@ -33,20 +33,15 @@ "Thursday": "Quinta", "ThisWizardWillGuideYou": "Este assistente ajudá-lo-á durante o processo de configuração. Para começar, selecione o idioma.", "TellUsAboutYourself": "Fale-nos sobre si", - "TabUsers": "Utilizadores", "TabUpcoming": "Próximos", "TabStreaming": "Transmissão", "TabSettings": "Configurações", "TabServer": "Servidor", - "TabSeries": "Séries", "TabScheduledTasks": "Tarefas Agendadas", "TabResponses": "Respostas", - "TabRecordings": "Gravações", "TabProfiles": "Perfis", "TabProfile": "Perfil", "TabPlugins": "Extensões", - "TabPlaylists": "Listas de Reprodução", - "TabPassword": "Palavra-passe", "TabParentalControl": "Controlo Parental", "TabOther": "Outro", "TabNotifications": "Notificações", @@ -55,7 +50,6 @@ "TabMyPlugins": "As Minhas Extensões", "TabMusicVideos": "Videoclips", "TabMusic": "Música", - "TabLiveTV": "TV em Directo", "TabLatest": "Mais recente", "TabEpisodes": "Episódios", "TabDirectPlay": "Reprodução Directa", @@ -156,19 +150,14 @@ "OptionWeekly": "Semanalmente", "OptionWeekends": "Fins-de-semana", "OptionWeekdays": "Dias da semana", - "OptionWednesday": "Quarta", "OptionWakeFromSleep": "Retomar da suspensão", "OptionUnplayed": "Por reproduzir", "OptionUnairedEpisode": "Episódios por Estrear", "OptionTvdbRating": "Classificação no TVDB", - "OptionTuesday": "Terça", "OptionTrackName": "Nome da pista", - "OptionThursday": "Quinta", - "OptionSunday": "Domingo", "OptionSubstring": "Subcadeia", "OptionSpecialEpisode": "Especiais", "OptionSaveMetadataAsHidden": "Guardar metadados e imagens como ficheiros ocultos", - "OptionSaturday": "Sábado", "OptionRuntime": "Duração", "OptionResumable": "Retomável", "OptionResElement": "elemento res", @@ -190,7 +179,6 @@ "OptionPlainStorageFolders": "Mostrar todas as pastas como simples pastas de armazenamento", "OptionParentalRating": "Classificação Parental", "OptionOnInterval": "Num intervalo", - "OptionOnAppStartup": "Ao iniciar a aplicação", "OptionNone": "Nenhum", "OptionNew": "Nova...", "OptionNameSort": "Nome", @@ -501,7 +489,6 @@ "HeaderServerSettings": "Configurações do Servidor", "HeaderSeriesStatus": "Estado da Série", "HeaderSeriesOptions": "Opções da Série", - "HeaderSeries": "Série", "HeaderSendMessage": "Enviar mensagem", "HeaderSelectTranscodingPathHelp": "Procure ou introduza a localização da pasta para guardar os ficheiros temporários de transcodificação. O Servidor Jellyfin deve ter acesso de escrita a essa pasta.", "HeaderSelectTranscodingPath": "Seleccione o Local Temporário da Transcodificação", @@ -514,7 +501,6 @@ "HeaderSelectCertificatePath": "Seleccione a Localização do Certificado", "HeaderSecondsValue": "{0} Segundos", "HeaderSeasons": "Temporadas", - "HeaderSchedule": "Agendamentos", "HeaderScenes": "Cenas", "HeaderRunningTasks": "Tarefas em Execução", "HeaderRevisionHistory": "Histórico de Versões", @@ -539,7 +525,6 @@ "HeaderPlayAll": "Reproduzir Todos", "HeaderPinCodeReset": "Redefinir Código PIN", "HeaderPhotoAlbums": "Álbuns de Fotografias", - "HeaderPeople": "Pessoas", "HeaderPaths": "Localizações", "HeaderPasswordReset": "Redefinição de Palavra-Passe", "HeaderPassword": "Palavra-passe", @@ -547,7 +532,6 @@ "HeaderOtherItems": "Outros Itens", "HeaderOnNow": "No Ar", "HeaderNextVideoPlayingInValue": "Reprodução do próximo vídeo começa em {0}", - "HeaderNextUp": "A Seguir", "HeaderNextEpisodePlayingInValue": "Reprodução do próximo episódio começa em {0}", "HeaderNewDevices": "Novos Dispositivos", "HeaderNewApiKey": "Nova Chave da API", @@ -562,8 +546,6 @@ "HeaderMediaFolders": "Pastas Multimédia", "HeaderMedia": "Multimédia", "HeaderLiveTvTunerSetup": "Configurar Sintonizador de TV", - "HeaderLiveTv": "TV ao Vivo", - "HeaderLiveTV": "TV em Directo", "HeaderLibrarySettings": "Configurações da Biblioteca", "HeaderLibraryOrder": "Ordenação da Biblioteca", "HeaderLibraryFolders": "Pastas Multimédia", @@ -971,7 +953,6 @@ "ButtonChangeServer": "Alterar Servidor", "ButtonCancel": "Cancelar", "ButtonBack": "Voltar", - "OptionMonday": "Segunda", "OptionMissingEpisode": "Episódios em Falta", "OptionMax": "Máximo", "OptionLikes": "Gostos", @@ -984,7 +965,6 @@ "OptionHasThemeSong": "Música de Tema", "OptionHasSubtitles": "Legendas", "OptionHasSpecialFeatures": "Extras", - "OptionFriday": "Sexta", "OptionFavorite": "Favoritos", "OptionExternallyDownloaded": "Download Externo", "OptionEveryday": "Todos os dias", diff --git a/src/strings/ro.json b/src/strings/ro.json index 7fcce88aa2..6eeeeba01f 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -41,13 +41,11 @@ "HeaderLatestEpisodes": "Cele Mai Noi Episoade", "HeaderLatestMovies": "Cele mai noi Filme", "HeaderLatestRecordings": "Cele mai recente înregistrări", - "HeaderNextUp": "Urmează", "HeaderPaths": "Căi", "HeaderPleaseSignIn": "Vă rugăm, autentificați-vă", "HeaderPreferredMetadataLanguage": "Limba preferata pentru metadata", "HeaderRecentlyPlayed": "Rulate Recent", "HeaderRemoteControl": "Control la distanță", - "HeaderSeries": "Seriale", "HeaderSetupLibrary": "Configurați-vă bibliotecile media", "HeaderTaskTriggers": "Declanșatori Sarcini", "HeaderUsers": "Utilizatori", @@ -137,7 +135,6 @@ "OptionEnableAccessToAllLibraries": "Activează accesul la toate bibliotecile", "OptionEnded": "Anulat", "OptionFavorite": "Favorite", - "OptionFriday": "Vineri", "OptionHasSpecialFeatures": "Caracteristici Speciale", "OptionHasSubtitles": "Subtitrări", "OptionHasThemeSong": "Audio de Fundal", @@ -146,7 +143,6 @@ "OptionHideUserFromLoginHelp": "Folositor pentru conturi private sau de administrator ascunse. Utilizatorul va trebui să se conecteze manual prin introducerea numelui de utilizator și a parolei.", "OptionImdbRating": "Rating IMDb", "OptionLikes": "Like-uri", - "OptionMonday": "Luni", "OptionNameSort": "Nume", "OptionParentalRating": "Limită de vârstă", "OptionPlayCount": "Contorizare rulări", @@ -155,13 +151,8 @@ "OptionReleaseDate": "Dată Lansare", "OptionResumable": "Poate fi continuat", "OptionRuntime": "Timp Rulare", - "OptionSaturday": "Sâmbătă", - "OptionSunday": "Duminică", - "OptionThursday": "Joi", "OptionTrackName": "Nume melodie", - "OptionTuesday": "Marți", "OptionUnplayed": "Nerulat", - "OptionWednesday": "Miercuri", "ParentalRating": "Parental Rating", "Saturday": "Sâmbătă", "Save": "Salveaza", @@ -178,11 +169,8 @@ "TabNetworks": "Rețele TV", "TabNotifications": "Notificări", "TabOther": "Altele", - "TabPassword": "Parolă", "TabProfile": "Profil", "TabProfiles": "Profile", - "TabRecordings": "Înregistrări", - "TabSeries": "Seriale", "TabSettings": "Setări", "TabTrailers": "Trailere", "TabUpcoming": "Urmează să apară", @@ -429,7 +417,6 @@ "HeaderParentalRatings": "Evaluări parentale", "HeaderPassword": "Parolă", "HeaderPasswordReset": "Resetare Parolă", - "HeaderPeople": "Persoane", "HeaderPhotoAlbums": "Albume Fotografii", "HeaderPinCodeReset": "Resetare cod PIN", "HeaderPlayAll": "Redare tot", @@ -448,7 +435,6 @@ "HeaderRevisionHistory": "Istoricul reviziilor", "HeaderRunningTasks": "În desfășurare", "HeaderScenes": "Scene", - "HeaderSchedule": "Planificare", "HeaderSeasons": "Sezoane", "HeaderSecondsValue": "{0} Secunde", "HeaderSelectCertificatePath": "Selectați ruta certificatului", @@ -487,7 +473,6 @@ "HeaderKeepSeries": "Păstrează seriile", "HeaderLatestMedia": "Cele mai recente media", "HeaderLibraryOrder": "Ordinea Bibliotecii", - "HeaderLiveTv": "TV în Direct", "HeaderContinueListening": "Continuați să ascultați", "Down": "In jos", "EveryNDays": "La fiecare {0} zile", @@ -505,7 +490,6 @@ "Folders": "Dosare", "HeaderAlbumArtists": "Album Artiști", "HeaderFavoriteSongs": "Melodii Favorite", - "HeaderLiveTV": "TV în Direct", "Movies": "Filme", "Playlists": "Liste redare", "Shows": "Spectacole", @@ -1259,7 +1243,6 @@ "OptionPlainStorageFoldersHelp": "Toate dosarele sunt reprezentate în DIDL ca „object.container.storageFolder” în loc de un tip mai specific, cum ar fi „object.container.person.musicArtist”.", "OptionPlainStorageFolders": "Afișați toate dosarele ca dosare simple de stocare", "OptionOnInterval": "La un interval", - "OptionOnAppStartup": "La pornirea aplicației", "OptionNone": "Nici unul", "OptionNew": "Nou…", "OptionMissingEpisode": "Episoade lipsă", @@ -1351,19 +1334,16 @@ "ThemeSongs": "Melodiile temei", "TagsValue": "Etichete: {0}", "Tags": "Etichete", - "TabUsers": "Utilizatori", "TabStreaming": "Transmitere", "TabServer": "Server", "TabScheduledTasks": "Task-uri programate", "TabResumeSettings": "Continuă", "TabResponses": "Răspunsuri", "TabPlugins": "Pluginuri", - "TabPlaylists": "Liste redare", "TabParentalControl": "Control Parental", "TabNfoSettings": "Setări NFO", "TabNetworking": "Rețele", "TabLogs": "Jurnal", - "TabLiveTV": "TV în Direct", "TabInfo": "Info", "TabDirectPlay": "Redare directă", "TabDashboard": "Tablou de bord", diff --git a/src/strings/ru.json b/src/strings/ru.json index f7ec2e0715..9989a4c47e 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -344,8 +344,6 @@ "HeaderLibraryFolders": "Медиатечные папки", "HeaderLibraryOrder": "Порядок медиатек", "HeaderLibrarySettings": "Параметры медиатеки", - "HeaderLiveTV": "Эфир", - "HeaderLiveTv": "Эфир", "HeaderLiveTvTunerSetup": "Установка и настройка тюнера", "HeaderLoginFailure": "Сбой входа", "HeaderMedia": "Медиаданные", @@ -361,7 +359,6 @@ "HeaderNewApiKey": "Новый API-ключ", "HeaderNewDevices": "Новые устройства", "HeaderNextEpisodePlayingInValue": "Следующий эпизод воспроизводится через {0}", - "HeaderNextUp": "Очередное", "HeaderNextVideoPlayingInValue": "Следующее видео воспроизводится через {0}", "HeaderOnNow": "В эфире", "HeaderOtherItems": "Прочие элементы", @@ -369,7 +366,6 @@ "HeaderPassword": "Пароль", "HeaderPasswordReset": "Сброс пароля", "HeaderPaths": "Пути", - "HeaderPeople": "Люди", "HeaderPhotoAlbums": "Фотоальбомы", "HeaderPinCodeReset": "Сброс PIN-кода", "HeaderPlayAll": "Воспроизвести все", @@ -394,7 +390,6 @@ "HeaderRevisionHistory": "История изменений", "HeaderRunningTasks": "Выполняющиеся задачи", "HeaderScenes": "Сцены", - "HeaderSchedule": "Расписание", "HeaderSeasons": "Сезоны", "HeaderSecondsValue": "{0} с", "HeaderSelectCertificatePath": "Выбор пути к сертификату", @@ -407,7 +402,6 @@ "HeaderSelectTranscodingPath": "Выбор пути для временных файлов перекодировки", "HeaderSelectTranscodingPathHelp": "Найдите или введите путь, чтобы использовать для файлов перекодировки. Папка должна быть доступна для записи.", "HeaderSendMessage": "Передача сообщения", - "HeaderSeries": "Сериалы", "HeaderSeriesOptions": "Опции сериала", "HeaderSeriesStatus": "Статус сериала", "HeaderServerSettings": "Параметры сервера", @@ -996,7 +990,6 @@ "OptionExternallyDownloaded": "Внешние загружаемые", "OptionExtractChapterImage": "Включить извлечение изображений сцен", "OptionFavorite": "Избранное", - "OptionFriday": "пятница", "OptionHasSpecialFeatures": "Доп. материалы", "OptionHasSubtitles": "Субтитры", "OptionHasThemeSong": "Тематическая мелодия", @@ -1012,11 +1005,9 @@ "OptionLikes": "Нравящиеся", "OptionMax": "Макс.", "OptionMissingEpisode": "Отсутствующие эпизоды", - "OptionMonday": "понедельник", "OptionNameSort": "Название", "OptionNew": "Новое…", "OptionNone": "Ничего", - "OptionOnAppStartup": "При запуске приложения", "OptionOnInterval": "В интервале", "OptionParentalRating": "Возрастная категория", "OptionPlainStorageFolders": "Отображать все папки, как обычные папки хранения", @@ -1040,20 +1031,15 @@ "OptionRequirePerfectSubtitleMatchHelp": "Требование полного соответствия, при котором будут отфильтровываться только те субтитры, которые были проверены и подтверждены на соответствие с вашим видеофайлом. Если снять данный флажок, повысится вероятность загрузки субтитров, но увеличатся шансы несовпадения по времени или неверного текста субтитров.", "OptionResumable": "Возможно возобновление", "OptionRuntime": "Длительность", - "OptionSaturday": "суббота", "OptionSaveMetadataAsHidden": "Сохранять метаданные и изображения в виде скрытых файлов", "OptionSaveMetadataAsHiddenHelp": "Это изменение будет применено к новым метаданным сохраняемым в будущем. Существующие файлы метаданных будут обновлены в следующий раз, когда они будут сохраняться на Jellyfin Server.", "OptionSpecialEpisode": "Спецэпизоды", "OptionSubstring": "Подстрока", - "OptionSunday": "воскресенье", - "OptionThursday": "четверг", "OptionTrackName": "Название трека", - "OptionTuesday": "вторник", "OptionTvdbRating": "Оценка TVDB", "OptionUnairedEpisode": "Ожидаемые эпизоды", "OptionUnplayed": "Невоспроизведённое", "OptionWakeFromSleep": "Выход из спящего режима", - "OptionWednesday": "среда", "OptionWeekdays": "В будни", "OptionWeekends": "Выходные", "OptionWeekly": "Еженедельно", @@ -1203,7 +1189,6 @@ "TabEpisodes": "Эпизоды", "TabInfo": "Инфо", "TabLatest": "Новейшее", - "TabLiveTV": "Эфир", "TabLogs": "Журналы", "TabMusic": "Музыка", "TabMusicVideos": "Муз. видео", @@ -1213,22 +1198,17 @@ "TabNotifications": "Уведомления", "TabOther": "Другое", "TabParentalControl": "Управление содержанием", - "TabPassword": "Пароль", - "TabPlaylists": "Плей-листы", "TabPlugins": "Плагины", "TabProfile": "Профиль", "TabProfiles": "Профили", - "TabRecordings": "Записи", "TabResponses": "Отклики", "TabResumeSettings": "Возобновление", "TabScheduledTasks": "Планировщик", - "TabSeries": "Сериалы", "TabServer": "Сервер", "TabSettings": "Параметры", "TabStreaming": "Трансляция", "TabTrailers": "Трейлеры", "TabUpcoming": "Ожидаемое", - "TabUsers": "Пользователи", "Tags": "Теги", "TagsValue": "Теги: {0}", "TellUsAboutYourself": "Расскажите о себе", diff --git a/src/strings/sk.json b/src/strings/sk.json index d8572ca1b2..9968b15c6a 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -205,8 +205,6 @@ "HeaderLibraryFolders": "Priečinky knižnice", "HeaderLibraryOrder": "Poradie knižnice", "HeaderLibrarySettings": "Nastavenia knižnice", - "HeaderLiveTV": "Živá TV", - "HeaderLiveTv": "Živá TV", "HeaderMedia": "Médiá", "HeaderMediaInfo": "Informácie o médiu", "HeaderMetadataSettings": "Nastavenia metadát", @@ -219,13 +217,11 @@ "HeaderNewApiKey": "Nový kľúč API", "HeaderNewDevices": "Nové zariadenia", "HeaderNextEpisodePlayingInValue": "Ďalšia epizóda sa spustí o {0}", - "HeaderNextUp": "Nasleduje", "HeaderNextVideoPlayingInValue": "Ďalšie video sa spustí o {0}", "HeaderOtherItems": "Iné položky", "HeaderPassword": "Heslo", "HeaderPasswordReset": "Obnoviť heslo", "HeaderPaths": "Cesty", - "HeaderPeople": "Ľudia", "HeaderPhotoAlbums": "Albumy fotografií", "HeaderPinCodeReset": "Obnoviť PIN kód", "HeaderPlayAll": "Prehrať všetko", @@ -240,13 +236,11 @@ "HeaderRevisionHistory": "História revízií", "HeaderRunningTasks": "Bežiace úlohy", "HeaderScenes": "Scény", - "HeaderSchedule": "Rozvrh", "HeaderSeasons": "Série", "HeaderSecondsValue": "{0} sekúnd", "HeaderSelectPath": "Vybrať priečinok", "HeaderSelectServer": "Vybrať server", "HeaderSendMessage": "Poslať správu", - "HeaderSeries": "Seriál", "HeaderServerSettings": "Nastavenia servera", "HeaderSettings": "Nastavenia", "HeaderSetupLibrary": "Nastavte Vaše knižnice médií", @@ -596,7 +590,6 @@ "OptionEquals": "Sa rovná", "OptionEveryday": "Každý deň", "OptionFavorite": "Obľúbené", - "OptionFriday": "Piatok", "OptionHasSubtitles": "Titulky", "OptionHasThemeSong": "Tématická hudba", "OptionHasThemeVideo": "Tématické video", @@ -606,11 +599,9 @@ "OptionImdbRating": "Hodnotenie IMDb", "OptionLikes": "Páči sa", "OptionMissingEpisode": "Chýbajúce epizódy", - "OptionMonday": "Pondelok", "OptionNameSort": "Názov", "OptionNew": "Nové…", "OptionNone": "Žiadne", - "OptionOnAppStartup": "Pri spustení aplikácie", "OptionParentalRating": "Rodičovské hodnotenie", "OptionPlainVideoItems": "Zobraziť všetky videá ako obyčajné video položky", "OptionPlayCount": "Počet prehraní", @@ -621,17 +612,12 @@ "OptionReleaseDate": "Dátum vydania", "OptionResumable": "Pozastaviteľný", "OptionRuntime": "Dĺžka", - "OptionSaturday": "Sobota", "OptionSaveMetadataAsHidden": "Uložiť metadáta a obrázky ako skryté súbory", - "OptionSunday": "Nedeľa", - "OptionThursday": "Štvrtok", "OptionTrackName": "Názov skladby", - "OptionTuesday": "Utorok", "OptionTvdbRating": "TVDB hodnotenie", "OptionUnairedEpisode": "Nevysielané epizódy", "OptionUnplayed": "Neprehrané", "OptionWakeFromSleep": "Zobudiť zo spánku", - "OptionWednesday": "Streda", "OptionWeekdays": "Pracovné dni", "OptionWeekends": "Víkendy", "OptionWeekly": "Týždenne", @@ -736,7 +722,6 @@ "TabDashboard": "Dashboard", "TabEpisodes": "Epizódy", "TabLatest": "Najnovšie", - "TabLiveTV": "Živá TV", "TabMusic": "Hudba", "TabMusicVideos": "Hudobné videá", "TabMyPlugins": "Moje zásuvné moduly", @@ -745,19 +730,15 @@ "TabNotifications": "Upozornenia", "TabOther": "Iné", "TabParentalControl": "Rodičovská kontrola", - "TabPassword": "Heslo", "TabPlugins": "Zásuvné moduly", "TabProfile": "Profil", "TabProfiles": "Profily", - "TabRecordings": "Nahrávky", "TabResponses": "Odpovede", "TabResumeSettings": "Pokračovať", "TabScheduledTasks": "Naplánované úlohy", - "TabSeries": "Seriály", "TabSettings": "Nastavenia", "TabTrailers": "Trailery", "TabUpcoming": "Nadchádzajúce", - "TabUsers": "Užívatelia", "TellUsAboutYourself": "Povedzte nám niečo o sebe", "ThisWizardWillGuideYou": "Tento sprievodca Vám pomôže prejsť inštalačným procesom. Pre začatie zvoľte preferovaný jazyk.", "Thursday": "Štvrtok", @@ -938,7 +919,6 @@ "SortName": "Zoradiť podľa názvu", "TabDirectPlay": "Priame prehrávanie", "TabLogs": "Záznamy", - "TabPlaylists": "Playlisty", "TabServer": "Server", "TabStreaming": "Streamovanie", "Tags": "Tagy", diff --git a/src/strings/sl-si.json b/src/strings/sl-si.json index 22d0d60317..f9588653ab 100644 --- a/src/strings/sl-si.json +++ b/src/strings/sl-si.json @@ -10,7 +10,6 @@ "HeaderFrequentlyPlayed": "Pogosto Predvajano", "HeaderPaths": "Poti", "HeaderRecentlyPlayed": "Nazadnje Predvajano", - "HeaderSeries": "Serije", "HeaderSettings": "Nastavitve", "HeaderUser": "Uporabnik", "LabelArtists": "Izvajalci:", @@ -45,7 +44,6 @@ "TabMusic": "Glasba", "TabMyPlugins": "Moji dodatki", "TabNetworks": "Omrezja", - "TabPassword": "Geslo", "TabProfile": "Profil", "TabProfiles": "Profili", "TabUpcoming": "Prihajajoče", @@ -87,8 +85,6 @@ "Genres": "Zvrsti", "HeaderAlbumArtists": "Izvajalci albuma", "HeaderContinueWatching": "Nadaljuj gledanje", - "HeaderLiveTV": "TV v živo", - "HeaderNextUp": "Sledi", "Movies": "Filmi", "AllowedRemoteAddressesHelp": "Z vejico ločen seznam IP naslovov ali IP/maska omrežij, ki jim je dovoljen oddaljeni dostop. Če pustite prazno, bodo dovoljeni vsi oddaljeni naslovi.", "AlwaysPlaySubtitles": "Vedno prikaži", @@ -261,7 +257,6 @@ "HeaderSelectCertificatePath": "Izberi pot certifikata", "HeaderSecondsValue": "{0} sekund", "HeaderSeasons": "Sezone", - "HeaderSchedule": "Urnik", "HeaderScenes": "Scene", "HeaderRunningTasks": "Aktivna opravila", "HeaderRestart": "Ponovni zagon", @@ -283,7 +278,6 @@ "HeaderPlayAll": "Predvajaj vse", "HeaderPinCodeReset": "Ponastavi PIN kodo", "HeaderPhotoAlbums": "Foto albumi", - "HeaderPeople": "Osebe", "HeaderPasswordReset": "Ponastavi geslo", "HeaderPassword": "Geslo", "HeaderParentalRatings": "Ocena za starše", @@ -304,7 +298,6 @@ "HeaderMedia": "Predstavnost", "HeaderLoginFailure": "Neuspešna prijava", "HeaderLiveTvTunerSetup": "Nastavitev sprejemnika za TV v živo", - "HeaderLiveTv": "TV v živo", "HeaderLibrarySettings": "Nastavitve knjižnice", "HeaderLibraryOrder": "Vrstni red knjižnic", "HeaderLibraryFolders": "Mape knjižnjice", @@ -762,18 +755,15 @@ "Smart": "Pametno", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Te nastavitve veljajo tudi za predvajanja Chromecast, ki jih začne ta naprava.", "TabDashboard": "Nadzorna plošča", - "TabLiveTV": "TV v živo", "PinCodeResetConfirmation": "Ali ste prepričani, da želite ponastaviti PIN kodo?", "PreferEmbeddedTitlesOverFileNames": "Prioritiziraj vdelane naslove pred imeni datotek", "PreferEmbeddedTitlesOverFileNamesHelp": "To vpliva na privzeto prikazan naslov, ko ni na voljo internetnih ali lokalnih metapodatkov.", "Rate": "Oceni", "RecentlyWatched": "Nedavno ogledano", "RecommendationBecauseYouLike": "Ker vam je všeč {0}", - "OptionSunday": "Nedelja", "OptionTvdbRating": "TVDB ocena", "OptionUnairedEpisode": "Nepredvajane epizode", "PleaseEnterNameOrId": "Prosimo vnesite ime ali zunanji ID.", - "OptionWednesday": "Sreda", "OptionWeekends": "Vikendi", "Previous": "Prejšnji", "People": "Ljudje", @@ -802,9 +792,7 @@ "TabNetworking": "Omrežje", "OptionSaveMetadataAsHiddenHelp": "Spreminjanje tega bo veljalo za metapodatke shranjene v prihodnje. Obstoječi metapodatki bodo posodobljeni, ko jih bo strežnik naslednjič spremenil.", "OptionSubstring": "Podniz", - "OptionThursday": "Četrtek", "OptionTrackName": "Ime skladbe", - "OptionTuesday": "Torek", "OptionWakeFromSleep": "Prebudi iz spanja", "OptionWeekdays": "Delovni dnevi", "OptionWeekly": "Tedensko", @@ -833,7 +821,6 @@ "Producer": "Producent", "Premiere": "Premiera", "OptionRuntime": "Trajanje", - "OptionSaturday": "Sobota", "MediaInfoLayout": "Razporeditev", "Like": "Všeč mi je", "LabelPlayDefaultAudioTrack": "Predvajaj privzeti zvočni posnetek ne glede na jezik", @@ -992,9 +979,7 @@ "OptionProfileAudio": "Zvok", "OptionPremiereDate": "Datum premiere", "OptionOnInterval": "V intervalu", - "OptionOnAppStartup": "Ob zagonu aplikacije", "OptionNew": "Novo…", - "OptionMonday": "Ponedeljek", "OptionMissingEpisode": "Manjkajoče epizode", "OptionLoginAttemptsBeforeLockoutHelp": "Vrednost nič (0) pomeni 3 poskuse za običajne uporabnike in 5 za skrbnike. Nastavite na -1 za onemogočanje te funkcije.", "OptionLoginAttemptsBeforeLockout": "Določa število spodletelih poskusov prijave pred zaklenitvijo uporabnika.", @@ -1004,7 +989,6 @@ "OptionHomeVideos": "Slike", "OptionHideUser": "Skrij tega uporabnika z vstopne strani", "OptionHasTrailer": "Napovednik", - "OptionFriday": "Petek", "OptionEveryday": "Vsak dan", "OptionDvd": "DVD", "OptionDownloadMenuImage": "Meni", @@ -1128,7 +1112,6 @@ "Trailers": "Napovedniki", "TitleHardwareAcceleration": "Strojno pospeševanje", "Thursday": "Četrtek", - "TabUsers": "Uporabniki", "TabTrailers": "Napovedniki", "ClientSettings": "Nastavitve odjemalca", "ButtonTogglePlaylist": "Seznam predvajanja", @@ -1314,16 +1297,13 @@ "TabStreaming": "Pretakanje", "TabSettings": "Nastavitve", "TabServer": "Strežnik", - "TabSeries": "Serije", "TabScheduledTasks": "Načrtovana opravila", "TabResumeSettings": "Nadaljuj", "HeaderUninstallPlugin": "Odstrani dodatek", "UninstallPluginConfirmation": "Ali ste prepričan, da želite odstraniti {0}?", "ServerRestartNeededAfterPluginInstall": "Po namestitvi dodatka bo potreben ponoven zagon jellyfin strežnika.", "TabResponses": "Odzivi", - "TabRecordings": "Posnetki", "TabPlugins": "Dodatki", - "TabPlaylists": "Seznami predvajanja", "TabOther": "Ostalo", "TabNotifications": "Obvestila", "TabNfoSettings": "Nastavitve NFO", diff --git a/src/strings/sr.json b/src/strings/sr.json index c302c0a580..22e2343e5e 100644 --- a/src/strings/sr.json +++ b/src/strings/sr.json @@ -6,8 +6,6 @@ "Playlists": "Листе", "Photos": "Фотографије", "Movies": "Филмови", - "HeaderNextUp": "Следеће горе", - "HeaderLiveTV": "ТВ уживо", "HeaderFavoriteSongs": "Омиљене песме", "HeaderFavoriteShows": "Омиљене серије", "HeaderFavoriteEpisodes": "Омиљене епизоде", diff --git a/src/strings/sv.json b/src/strings/sv.json index 604179f9f6..e4a81cfd42 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -309,8 +309,6 @@ "HeaderLibraryFolders": "Biblioteksmappar", "HeaderLibraryOrder": "Biblioteksordning", "HeaderLibrarySettings": "Biblioteksinställningar", - "HeaderLiveTV": "Live-TV", - "HeaderLiveTv": "Live-TV", "HeaderLoginFailure": "Misslyckad inloggning", "HeaderMediaFolders": "Mediamappar", "HeaderMediaInfo": "Medieinformation", @@ -324,14 +322,12 @@ "HeaderNewApiKey": "Ny API-nyckel", "HeaderNewDevices": "Nya enheter", "HeaderNextEpisodePlayingInValue": "Nästa avsnitt börjar om {0}", - "HeaderNextUp": "Nästa", "HeaderNextVideoPlayingInValue": "Nästa video börjar om {0}", "HeaderOnNow": "Visas nu", "HeaderOtherItems": "Övriga objekt", "HeaderPassword": "Lösenord", "HeaderPasswordReset": "Återställning av lösenordet", "HeaderPaths": "Sökvägar", - "HeaderPeople": "Personer", "HeaderPhotoAlbums": "Fotoalbum", "HeaderPinCodeReset": "Återställ pinkod", "HeaderPlayAll": "Spela upp alla", @@ -356,7 +352,6 @@ "HeaderRevisionHistory": "Revisionshistorik", "HeaderRunningTasks": "Pågående aktiviteter", "HeaderScenes": "Kapitel", - "HeaderSchedule": "Schema", "HeaderSeasons": "Säsonger", "HeaderSecondsValue": "{0} sekunder", "HeaderSelectCertificatePath": "Välj sökväg för certifikat", @@ -369,7 +364,6 @@ "HeaderSelectTranscodingPath": "Välj plats för mellanlagring vid omkodning", "HeaderSelectTranscodingPathHelp": "Bläddra fram till eller ange plats för omkodarens mellanlagring. Katalogen måste vara tillgänglig för skrivning.", "HeaderSendMessage": "Skicka meddelande", - "HeaderSeries": "Serier", "HeaderSeriesOptions": "Seriealternativ", "HeaderSeriesStatus": "Seriestatus", "HeaderServerSettings": "Serverinställningar", @@ -922,7 +916,6 @@ "OptionExternallyDownloaded": "Extern nerladdning", "OptionExtractChapterImage": "Aktivera extrahering av kapitelbilder", "OptionFavorite": "Favoriter", - "OptionFriday": "Fredag", "OptionHasSpecialFeatures": "Extramaterial", "OptionHasSubtitles": "Undertexter", "OptionHasThemeSong": "Ledmotiv", @@ -936,11 +929,9 @@ "OptionImdbRating": "Betyg på IMDB", "OptionLikes": "Gillar", "OptionMissingEpisode": "Saknade avsnitt", - "OptionMonday": "Måndag", "OptionNameSort": "Namn", "OptionNew": "Ny…", "OptionNone": "Inga", - "OptionOnAppStartup": "När servern startar", "OptionOnInterval": "Med visst intervall", "OptionParentalRating": "Föräldraklassning", "OptionPlainStorageFolders": "Visa alla mappar som vanliga lagringsmappar", @@ -961,19 +952,14 @@ "OptionRequirePerfectSubtitleMatchHelp": "Att kräva en perfekt matchning filtrerar undertexter till att bara inkludera de som testats och verifierats med din exakta videofil. Stänger du av detta ökas chansen att undertexter laddas ned, men ökar chanserna att de är osynkade eller felaktiga.", "OptionResumable": "Kan återupptas", "OptionRuntime": "Speltid", - "OptionSaturday": "Lördag", "OptionSaveMetadataAsHidden": "Spara metadata och bilder som dolda filer", "OptionSpecialEpisode": "Specialavsnitt", "OptionSubstring": "Delsträng", - "OptionSunday": "Söndag", - "OptionThursday": "Torsdag", "OptionTrackName": "Spårnamn", - "OptionTuesday": "Tisdag", "OptionTvdbRating": "TVDB-betyg", "OptionUnairedEpisode": "Ej sända avsnitt", "OptionUnplayed": "Ej visad", "OptionWakeFromSleep": "Vakna ur energisparläge", - "OptionWednesday": "Onsdag", "OptionWeekdays": "Veckodagar", "OptionWeekends": "Helger", "OptionWeekly": "Varje vecka", @@ -1111,7 +1097,6 @@ "TabDirectPlay": "Direktuppspelning", "TabEpisodes": "Avsnitt", "TabLatest": "Nytillkommet", - "TabLiveTV": "Live-TV", "TabLogs": "Loggfiler", "TabMusic": "Musik", "TabMusicVideos": "Musikvideor", @@ -1121,20 +1106,15 @@ "TabNotifications": "Meddelanden", "TabOther": "Övrigt", "TabParentalControl": "Föräldralås", - "TabPassword": "Lösenord", - "TabPlaylists": "Spellistor", "TabPlugins": "Tillägg", "TabProfile": "Profil", "TabProfiles": "Profiler", - "TabRecordings": "Inspelningar", "TabResponses": "Svar", "TabResumeSettings": "Återuppta", "TabScheduledTasks": "Schemalagda aktiviteter", - "TabSeries": "Serie", "TabSettings": "Inställningar", "TabStreaming": "Strömning", "TabUpcoming": "Kommande", - "TabUsers": "Användare", "Tags": "Etiketter", "TagsValue": "Etiketter: {0}", "TellUsAboutYourself": "Berätta om dig själv", diff --git a/src/strings/tr.json b/src/strings/tr.json index ba47bd7f6b..2bae4757f4 100644 --- a/src/strings/tr.json +++ b/src/strings/tr.json @@ -63,7 +63,6 @@ "HeaderLibraryFolders": "Media Klasörleri", "HeaderMediaFolders": "Media Klasörleri", "HeaderMusicVideos": "Müzik vidyoları", - "HeaderNextUp": "Sonraki hafta", "HeaderPlayAll": "Hepsini oynat", "HeaderPleaseSignIn": "Lütfen Giriş Yapın", "HeaderPreferredMetadataLanguage": "Tercih Edilen Meta Dili", @@ -72,7 +71,6 @@ "HeaderResponseProfile": "Profil Görüntüleme", "HeaderScenes": "Sahneler", "HeaderSendMessage": "Mesaj Gönder", - "HeaderSeries": "Series", "HeaderServerSettings": "Sunucu ayarları", "HeaderSetupLibrary": "Medya kütüphanelerini kur", "HeaderStatus": "Durum", @@ -149,7 +147,6 @@ "OptionEnableAccessToAllLibraries": "Bütün kütüphanelere erişim izni ver", "OptionEnded": "Bitmiş", "OptionFavorite": "Favoriler", - "OptionFriday": "Cuma", "OptionHasSubtitles": "Altyazı", "OptionHasThemeSong": "Tema Şarkısı", "OptionHasThemeVideo": "Tema Videosu", @@ -157,7 +154,6 @@ "OptionHideUser": "Bu kullanıcıyı giriş ekranında gösterme", "OptionImdbRating": "İMDb Reyting", "OptionLikes": "Beğenilenler", - "OptionMonday": "Pazartesi", "OptionNameSort": "İsim", "OptionPlayCount": "Oynatma sayacı", "OptionPlayed": "Çalındı", @@ -168,15 +164,10 @@ "OptionReleaseDate": "Yayınlanma Tarihi", "OptionResumable": "Başlatılabilir", "OptionRuntime": "Süresi", - "OptionSaturday": "Cumartesi", "OptionSpecialEpisode": "Özel", - "OptionSunday": "Pazar", - "OptionThursday": "Perşembe", "OptionTrackName": "Parça İsmi", - "OptionTuesday": "Salı", "OptionTvdbRating": "TVDB Puanı", "OptionUnplayed": "Çalınmayan", - "OptionWednesday": "Çarşamba", "OptionWeekly": "Haftalık", "ParentalRating": "Ebeveyn değeri", "PasswordMatchError": "Parola ve Sifre Eslesmelidir.", @@ -203,11 +194,8 @@ "TabMyPlugins": "Eklentilerim", "TabNetworks": "Ağlar", "TabNotifications": "Bildirimler", - "TabPassword": "Şifre", "TabProfile": "Profil", "TabProfiles": "Profiller", - "TabRecordings": "Kayıtlar", - "TabSeries": "Seriler", "TabServer": "Sunucu", "TabSettings": "Ayarlar", "TabTrailers": "Fragmanlar", @@ -247,7 +235,6 @@ "HeaderFavoriteAlbums": "Favori Albümler", "HeaderFavoriteArtists": "Favori Sanatçılar", "HeaderFavoriteSongs": "Favori Şarkılar", - "HeaderLiveTV": "Canlı TV", "Movies": "Filmler", "Photos": "Fotoğraflar", "Playlists": "Çalma listeleri", @@ -520,7 +507,6 @@ "HeaderSelectCertificatePath": "Sertifika Yolunu Seç", "HeaderSecondsValue": "{0} Saniye", "HeaderSeasons": "Sezonlar", - "HeaderSchedule": "Zamanla", "HeaderRunningTasks": "Çalışan Görevler", "HeaderRevisionHistory": "Revizyon Geçmişi", "HeaderRestart": "Yeniden Başlat", @@ -535,7 +521,6 @@ "HeaderPlayback": "Medya Oynatma", "HeaderPinCodeReset": "Pin Kodunu Sıfırla", "HeaderPhotoAlbums": "Fotoğraf Albümleri", - "HeaderPeople": "Kişiler", "HeaderPasswordReset": "Şifre Sıfırlama", "HeaderPassword": "Şifre", "HeaderParentalRatings": "Ebeveyn Derecelendirmeleri", @@ -555,7 +540,6 @@ "HeaderMedia": "Medya", "HeaderLoginFailure": "Giriş Başarısız", "HeaderLiveTvTunerSetup": "Canlı TV istasyon Kurulumu", - "HeaderLiveTv": "Canlı TV", "HeaderLibrarySettings": "Kütüphane Ayarları", "HeaderLibraryOrder": "Kütüphane Sırası", "HeaderLibraryAccess": "Kütüphane Erişimi", diff --git a/src/strings/uk.json b/src/strings/uk.json index 329f0ca95c..ff69296e07 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -21,7 +21,6 @@ "HeaderLatestMovies": "Нещодавні фільми", "HeaderLatestMusic": "Остання музика", "HeaderSeasons": "Сезони", - "HeaderSeries": "Series", "HeaderSettings": "Налаштування", "HeaderTracks": "Доріжки", "HeaderUsers": "Користувачі", @@ -60,12 +59,10 @@ "TabEpisodes": "Епізоди", "TabNetworks": "Мережі", "TabNotifications": "Повідомлення", - "TabPassword": "Пароль", "TabPlugins": "Додатки", "TabProfile": "Профіль", "TabProfiles": "Профілі", "TabTrailers": "Трейлери", - "TabUsers": "Користувачі", "ValueAlbumCount": "{0} альбомів", "ValueDiscNumber": "Диск {0}", "ValueEpisodeCount": "{0} епізодів", @@ -102,7 +99,6 @@ "Movies": "Фільми", "Collections": "Колекції", "Folders": "Каталоги", - "HeaderNextUp": "Наступний", "HeaderAlbumArtists": "Виконавці альбому", "HeaderFavoriteSongs": "Улюблені пісні", "Favorites": "Улюблені", @@ -110,7 +106,6 @@ "Genres": "Жанри", "Books": "Книги", "Artists": "Виконавці", - "HeaderLiveTV": "Ефірне ТБ", "Channels": "Канали", "HeaderFavoriteArtists": "Улюблені виконавці", "HeaderFavoriteShows": "Улюблені шоу", diff --git a/src/strings/vi.json b/src/strings/vi.json index 438dfe4632..48e59ca057 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -23,7 +23,6 @@ "HeaderLatestEpisodes": "Các tập phim mới nhất", "HeaderLatestMovies": "Phim mới nhất", "HeaderRecentlyPlayed": "Phát gần đây", - "HeaderSeries": "Series", "HeaderStatus": "Trạng thái", "HeaderSystemDlnaProfiles": "Hồ sơ hệ thống", "HeaderUsers": "dùng", @@ -67,12 +66,9 @@ "OptionIsHD": "Độ nét cao", "OptionIsSD": "Độ nét tiêu chuẩn", "OptionLikes": "Thích", - "OptionMonday": "Thứ Hai", "OptionNameSort": "Tên", "OptionPlayCount": "Số lần phát", "OptionRuntime": "Thời gian phát", - "OptionSaturday": "Thứ Bảy", - "OptionSunday": "Chủ Nhật", "OptionTrackName": "Tên bài", "ParentalRating": "Parental Rating", "PasswordMatchError": "Mật khẩu và mật khẩu xác nhận cần phải khớp nhau .", @@ -90,7 +86,6 @@ "TabMusicVideos": "Các video âm nhạc", "TabMyPlugins": "Các plugin của tôi", "TabNetworks": "Các mạng", - "TabPassword": "Mật khẩu", "TabProfile": "Hồ sơ", "TabProfiles": "Hồ sơ", "TabServer": "Máy chủ", @@ -404,7 +399,6 @@ "HeaderPlayAll": "Phát Tất Cả", "HeaderPinCodeReset": "Đặt Lại Mã PIN", "HeaderPhotoAlbums": "Album Ảnh", - "HeaderPeople": "Nhân Vật", "HeaderPaths": "Đường Dẫn", "HeaderPasswordReset": "Đặt Lại Mật Khẩu", "HeaderPassword": "Mật Khẩu", @@ -412,7 +406,6 @@ "HeaderOtherItems": "Những Mục Khác", "HeaderOnNow": "Phát Sóng Hiện Tại", "HeaderNextVideoPlayingInValue": "Video Tiếp Theo Sẽ Phát trong {0}", - "HeaderNextUp": "Tiếp Theo", "HeaderNextEpisodePlayingInValue": "Tập Tiếp Theo Sẽ Được Chạy trong {0}", "HeaderNewDevices": "Thiết Bị Mới", "HeaderNewApiKey": "Mã API Mới", @@ -429,8 +422,6 @@ "HeaderMedia": "Nội Dung", "HeaderLoginFailure": "Đăng Nhập Không Thành Công", "HeaderLiveTvTunerSetup": "Cài Đặt Bộ Bắt Sóng TV", - "HeaderLiveTv": "Truyền Hình Trực Tiếp", - "HeaderLiveTV": "Truyền Hình Trực Tiếp", "HeaderLibrarySettings": "Cài Đặt Thư Viện", "HeaderLibraryOrder": "Thứ Tự Thư Viện", "HeaderLibraryFolders": "Thư Mục Của Thư Viện", @@ -504,7 +495,6 @@ "HeaderSelectCertificatePath": "Chọn Đường Dẫn Đến Chứng Chỉ", "HeaderSecondsValue": "{0} Giây", "HeaderSeasons": "Phần", - "HeaderSchedule": "Lịch Phát Sóng", "HeaderScenes": "Phân Cảnh", "HeaderRunningTasks": "Những Tác Vụ Hoạt Động", "HeaderRevisionHistory": "Lịch Sử Chỉnh Sửa", diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 9de331b018..b14bec8277 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -313,8 +313,6 @@ "HeaderLibraryFolders": "媒体文件夹", "HeaderLibraryOrder": "媒体库顺序", "HeaderLibrarySettings": "媒体库设置", - "HeaderLiveTV": "电视直播", - "HeaderLiveTv": "电视直播", "HeaderLiveTvTunerSetup": "电视直播协调器安装", "HeaderLoginFailure": "登录失败", "HeaderMedia": "媒体", @@ -328,14 +326,12 @@ "HeaderMyMediaSmall": "我的媒体 (小)", "HeaderNewApiKey": "新 API 密钥", "HeaderNewDevices": "新设备", - "HeaderNextUp": "接下来", "HeaderOnNow": "现在", "HeaderOtherItems": "其他项目", "HeaderParentalRatings": "家长分级", "HeaderPassword": "密码", "HeaderPasswordReset": "密码重置", "HeaderPaths": "路径", - "HeaderPeople": "人物", "HeaderPhotoAlbums": "相册", "HeaderPinCodeReset": "重置PIN码", "HeaderPlayAll": "全部播放", @@ -359,7 +355,6 @@ "HeaderRevisionHistory": "修订历史", "HeaderRunningTasks": "运行的任务", "HeaderScenes": "场景", - "HeaderSchedule": "计划", "HeaderSeasons": "季", "HeaderSecondsValue": "{0} 秒", "HeaderSelectCertificatePath": "选择证书路径", @@ -372,7 +367,6 @@ "HeaderSelectTranscodingPath": "选择临时解码路径", "HeaderSelectTranscodingPathHelp": "浏览或输入一个路径用于转码文件,此文件夹必须可写。", "HeaderSendMessage": "发送消息", - "HeaderSeries": "电视剧", "HeaderSeriesOptions": "系列选项", "HeaderServerSettings": "服务器设置", "HeaderSettings": "设置", @@ -949,7 +943,6 @@ "OptionExternallyDownloaded": "外部下载", "OptionExtractChapterImage": "开启剧集图片提取", "OptionFavorite": "我的最爱", - "OptionFriday": "星期五", "OptionHasSpecialFeatures": "特殊功能", "OptionHasSubtitles": "字幕", "OptionHasThemeSong": "主题曲", @@ -967,11 +960,9 @@ "OptionLikes": "喜欢", "OptionMax": "最大", "OptionMissingEpisode": "缺少的剧集", - "OptionMonday": "星期一", "OptionNameSort": "名字", "OptionNew": "新建…", "OptionNone": "没有", - "OptionOnAppStartup": "在程序启动时", "OptionOnInterval": "在一个期间", "OptionParentalRating": "家长分级", "OptionPlainStorageFolders": "显示所有文件夹作为一般存储文件夹", @@ -996,20 +987,15 @@ "OptionResElement": "res 元素", "OptionResumable": "可恢复播放", "OptionRuntime": "播放时长", - "OptionSaturday": "星期六", "OptionSaveMetadataAsHidden": "保存媒体资料和图像为隐藏文件", "OptionSaveMetadataAsHiddenHelp": "更改此项将应用于以后保存的元数据。现有元数据文件将在下一次服务器保存它们时被更新。", "OptionSpecialEpisode": "特集", "OptionSubstring": "子串", - "OptionSunday": "星期天", - "OptionThursday": "星期四", "OptionTrackName": "曲目名称", - "OptionTuesday": "星期二", "OptionTvdbRating": "TVDB 评分", "OptionUnairedEpisode": "尚未发布的剧集", "OptionUnplayed": "未播放", "OptionWakeFromSleep": "从睡眠中唤醒", - "OptionWednesday": "星期三", "OptionWeekdays": "工作日", "OptionWeekends": "周末", "OptionWeekly": "每周", @@ -1140,7 +1126,6 @@ "TabEpisodes": "剧集", "TabInfo": "信息", "TabLatest": "最新", - "TabLiveTV": "电视直播", "TabLogs": "日志", "TabMusic": "音乐", "TabMusicVideos": "音乐视频", @@ -1150,22 +1135,17 @@ "TabNotifications": "通知", "TabOther": "其他", "TabParentalControl": "家长控制", - "TabPassword": "密码", - "TabPlaylists": "播放列表", "TabPlugins": "插件", "TabProfile": "个人配置", "TabProfiles": "配置", - "TabRecordings": "录制", "TabResponses": "响应", "TabResumeSettings": "恢复", "TabScheduledTasks": "计划任务", - "TabSeries": "电视剧", "TabServer": "服务器", "TabSettings": "设置", "TabStreaming": "流媒体传输", "TabTrailers": "预告片", "TabUpcoming": "即将发布", - "TabUsers": "用户", "Tags": "标签", "TellUsAboutYourself": "请介绍一下你自己", "ThemeSongs": "主题曲", diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 454bbea0c2..6cdb6f13a9 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -56,9 +56,7 @@ "HeaderLatestRecordings": "最近錄影的節目", "HeaderMediaFolders": "媒體文件夾", "HeaderMusicVideos": "MV", - "HeaderNextUp": "接下來", "HeaderPaths": "路徑", - "HeaderPeople": "人物", "HeaderPleaseSignIn": "請登入", "HeaderRecentlyPlayed": "最近播放", "HeaderRemoteControl": "遙控器", @@ -66,7 +64,6 @@ "HeaderRunningTasks": "運行任務", "HeaderScenes": "場景", "HeaderSeasons": "季度劇集", - "HeaderSeries": "電視劇:", "HeaderSetupLibrary": "建立你的媒體資料庫", "HeaderSpecialFeatures": "特色", "HeaderStatus": "狀態", @@ -216,7 +213,6 @@ "OptionEnableAccessToAllLibraries": "允許所有媒體庫通行", "OptionEnded": "完成", "OptionFavorite": "我的最愛", - "OptionFriday": "星期五", "OptionHasSpecialFeatures": "特色", "OptionHasSubtitles": "字幕", "OptionHasThemeSong": "主題曲", @@ -230,9 +226,7 @@ "OptionIsSD": "標清", "OptionLikes": "正評", "OptionMissingEpisode": "缺少的劇集", - "OptionMonday": "星期一", "OptionNameSort": "名稱", - "OptionOnAppStartup": "在伺服器啟動", "OptionOnInterval": "每個時段", "OptionParentalRating": "家長評級", "OptionPlayCount": "播放次數", @@ -243,17 +237,12 @@ "OptionReleaseDate": "發佈日期", "OptionResumable": "能夠恢復", "OptionRuntime": "運行時間", - "OptionSaturday": "星期六", "OptionSpecialEpisode": "特集", - "OptionSunday": "星期日", - "OptionThursday": "星期四", "OptionTrackName": "曲目名稱", - "OptionTuesday": "星期二", "OptionTvdbRating": "Tvdb 評分", "OptionUnairedEpisode": "尚未播放的劇集", "OptionUnplayed": "未播放", "OptionWakeFromSleep": "從休眠中恢復", - "OptionWednesday": "星期三", "OptionWeekly": "每週", "ParentalRating": "Parental Rating", "Play": "播放", @@ -279,16 +268,12 @@ "TabNetworks": "網絡", "TabNotifications": "通知", "TabOther": "其它", - "TabPassword": "密碼", "TabProfile": "簡介", "TabProfiles": "簡介", - "TabRecordings": "錄影", - "TabSeries": "電視劇", "TabServer": "伺服器", "TabSettings": "設定", "TabTrailers": "預告", "TabUpcoming": "即將發佈", - "TabUsers": "用戶", "TellUsAboutYourself": "介紹一下自己", "ThisWizardWillGuideYou": "此教學協助您完成安裝過程。首先,請選擇您的語言。", "Thursday": "星期四", @@ -322,7 +307,6 @@ "Playlists": "播放清單", "Photos": "相片", "Movies": "電影", - "HeaderLiveTV": "電視直播", "HeaderFavoriteSongs": "最愛的歌曲", "HeaderFavoriteShows": "最愛的節目", "HeaderFavoriteEpisodes": "最愛的劇集", diff --git a/src/strings/zh-tw.json b/src/strings/zh-tw.json index f9f9bce7a7..6361242d4e 100644 --- a/src/strings/zh-tw.json +++ b/src/strings/zh-tw.json @@ -67,11 +67,8 @@ "HeaderLatestEpisodes": "最新劇集", "HeaderLatestMovies": "最新電影", "HeaderLatestRecordings": "最新錄影的節目", - "HeaderLiveTV": "電視直播", - "HeaderLiveTv": "電視", "HeaderMediaFolders": "媒體資料夾", "HeaderMusicVideos": "MV", - "HeaderNextUp": "接下來", "HeaderPaths": "路徑", "HeaderPlayAll": "全部播放", "HeaderPleaseSignIn": "請登入", @@ -80,7 +77,6 @@ "HeaderScenes": "場景", "HeaderSelectServer": "選擇伺服器", "HeaderSelectServerCachePath": "選擇伺服器快取路徑", - "HeaderSeries": "系列", "HeaderSpecialFeatures": "特色", "HeaderStatus": "狀態", "HeaderSystemDlnaProfiles": "系統設定", @@ -179,7 +175,6 @@ "OptionDvd": "DVD", "OptionEnded": "完結", "OptionFavorite": "我的最愛", - "OptionFriday": "星期五", "OptionHasSubtitles": "字幕", "OptionHasThemeSong": "主題曲", "OptionHasThemeVideo": "主題影片", @@ -189,10 +184,8 @@ "OptionIsSD": "標清", "OptionLikes": "喜歡", "OptionMissingEpisode": "缺少了的單元", - "OptionMonday": "星期一", "OptionNameSort": "名字", "OptionNew": "新增…", - "OptionOnAppStartup": "在伺服器啟動", "OptionOnInterval": "每時段", "OptionParentalRating": "家長評級", "OptionPlayCount": "播放次數", @@ -200,17 +193,12 @@ "OptionPremiereDate": "首映日期", "OptionResumable": "可恢復", "OptionRuntime": "播放長度", - "OptionSaturday": "星期六", "OptionSpecialEpisode": "特集", - "OptionSunday": "星期天", - "OptionThursday": "星期四", "OptionTrackName": "曲目名稱", - "OptionTuesday": "星期二", "OptionTvdbRating": "TVDB 評分", "OptionUnairedEpisode": "還未發佈的單元", "OptionUnplayed": "未播放", "OptionWakeFromSleep": "從休眠中回復", - "OptionWednesday": "星期三", "OptionWeekly": "每週", "OriginalAirDateValue": "原始播出日期:{0}", "ParentalRating": "Parental Rating", @@ -245,15 +233,11 @@ "TabEpisodes": "單元", "TabInfo": "資訊", "TabLatest": "最新", - "TabLiveTV": "電視", "TabMusic": "音樂", "TabMyPlugins": "我的附加元件", "TabNetworks": "網路", - "TabPassword": "密碼", "TabProfile": "設定", "TabProfiles": "設定", - "TabRecordings": "錄影", - "TabSeries": "電視劇", "TabServer": "伺服器", "TabSettings": "設定", "TabTrailers": "預告", @@ -572,7 +556,6 @@ "HeaderOtherItems": "其他項目", "HeaderPassword": "密碼", "HeaderPasswordReset": "重設密碼", - "HeaderPeople": "使用者", "HeaderPhotoAlbums": "相簿", "HeaderPinCodeReset": "重設PIN碼", "HeaderPlayOn": "播放在", @@ -622,7 +605,6 @@ "HeaderProfileServerSettingsHelp": "這些數值將控制伺服器如何呈現給設備。", "HeaderResponseProfile": "回覆設定檔", "HeaderResponseProfileHelp": "當播放某些類型的媒體時,回覆設定檔提供一種方法來發送自定訊息到設備。", - "HeaderSchedule": "日程表", "HeaderSelectCertificatePath": "選擇證書路徑", "HeaderSelectMetadataPath": "選擇中繼資料路徑", "HeaderSubtitleProfile": "字幕設定檔", @@ -880,7 +862,6 @@ "RecentlyWatched": "最近觀賞", "RecommendationBecauseYouLike": "因為您喜歡 {0}", "SearchResults": "搜尋結果", - "TabPlaylists": "播放清單", "TabPlugins": "附加元件", "Transcoding": "轉檔", "ValueTimeLimitMultiHour": "時間限制:{0} 小時", @@ -907,7 +888,6 @@ "RepeatMode": "重複模式", "Runtime": "運行時間", "TV": "電視", - "TabUsers": "使用者", "Trailers": "預告", "LabelImageFetchersHelp": "啟用並按優先順序排序您的首選圖片擷取器。", "LabelDownMixAudioScale": "縮混時的音訊增強:", From ce74cb0602132cfbb4cee40df130257230a47943 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Thu, 13 Aug 2020 15:37:09 +0200 Subject: [PATCH 363/463] Fix lint --- src/components/appRouter.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 83c93fdaf3..28826c55cc 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -323,7 +323,6 @@ class AppRouter { } import('text!' + url).then(({default: html}) => { - console.warn(html) this.loadContent(ctx, route, html, request); }); } From b6a5f67d364d799037c840f50b78fb99964118af Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 15:08:55 +0000 Subject: [PATCH 364/463] Added translation using Weblate (Tamil) --- src/strings/ta.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/ta.json diff --git a/src/strings/ta.json b/src/strings/ta.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/ta.json @@ -0,0 +1 @@ +{} From d7e2cdf3db346751dd33d68f6828fc4e4d776298 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 15:10:14 +0000 Subject: [PATCH 365/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 0967ef424b..be27ef78bb 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1 +1,8 @@ -{} +{ + "AddToPlayQueue": "வரிசையில் விளையாட சேர்க்கவும்", + "AddToCollection": "சேகரிப்பில் சேர்க்கவும்", + "Add": "சேர்", + "Actor": "நடிகர்", + "AccessRestrictedTryAgainLater": "அணுகல் தற்போது தடைசெய்யப்பட்டுள்ளது. பின்னர் மீண்டும் முயற்சிக்கவும்.", + "Absolute": "அறுதி" +} From d1fadd1419b9a94d0e584f4649416ee7f57531aa Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 15:13:36 +0000 Subject: [PATCH 366/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index be27ef78bb..0f527990a1 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -4,5 +4,8 @@ "Add": "சேர்", "Actor": "நடிகர்", "AccessRestrictedTryAgainLater": "அணுகல் தற்போது தடைசெய்யப்பட்டுள்ளது. பின்னர் மீண்டும் முயற்சிக்கவும்.", - "Absolute": "அறுதி" + "Absolute": "அறுதி", + "AdditionalNotificationServices": "கூடுதல் அறிவிப்பு சேவைகளை நிறுவ சொருகி பட்டியலை உலாவுக.", + "AddedOnValue": "{0} சேர்க்கப்பட்டது", + "AddToPlaylist": "பட்டியலில் சேர்" } From 61c4d3ac6652dc96feedc2ac493ed7d4d6e49abd Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 15:15:30 +0000 Subject: [PATCH 367/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 0f527990a1..1b4d9bb974 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -7,5 +7,6 @@ "Absolute": "அறுதி", "AdditionalNotificationServices": "கூடுதல் அறிவிப்பு சேவைகளை நிறுவ சொருகி பட்டியலை உலாவுக.", "AddedOnValue": "{0} சேர்க்கப்பட்டது", - "AddToPlaylist": "பட்டியலில் சேர்" + "AddToPlaylist": "பட்டியலில் சேர்", + "AirDate": "ஒளிபரப்பப்பட்ட தேதி" } From 702594cc1b65c7ef475b3cd57d6522220388d0ca Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 15:16:08 +0000 Subject: [PATCH 368/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 1b4d9bb974..9f4302528d 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -8,5 +8,34 @@ "AdditionalNotificationServices": "கூடுதல் அறிவிப்பு சேவைகளை நிறுவ சொருகி பட்டியலை உலாவுக.", "AddedOnValue": "{0} சேர்க்கப்பட்டது", "AddToPlaylist": "பட்டியலில் சேர்", - "AirDate": "ஒளிபரப்பப்பட்ட தேதி" + "AirDate": "ஒளிபரப்பப்பட்ட தேதி", + "AsManyAsPossible": "முடிந்தவரை பல", + "Artists": "கலைஞர்", + "Artist": "கலைஞர்", + "Art": "கலை", + "AroundTime": "சுற்றி", + "Anytime": "எப்போது வேண்டுமானாலும்", + "AnyLanguage": "எந்த மொழியும்", + "AlwaysPlaySubtitlesHelp": "ஆடியோ மொழியைப் பொருட்படுத்தாமல் மொழி விருப்பத்துடன் பொருந்தக்கூடிய வசன வரிகள் ஏற்றப்படும்.", + "AlwaysPlaySubtitles": "எப்போதும் ப்ளே", + "AllowedRemoteAddressesHelp": "தொலைதூரத்துடன் இணைக்க அனுமதிக்கப்படும் நெட்வொர்க்குகளுக்கான ஐபி முகவரிகள் அல்லது ஐபி / நெட்மாஸ்க் உள்ளீடுகளின் கமாவால் பிரிக்கப்பட்ட பட்டியல். காலியாக இருந்தால், எல்லா தொலை முகவரிகளும் அனுமதிக்கப்படும்.", + "AllowRemoteAccessHelp": "தேர்வு செய்யப்படாவிட்டால், எல்லா தொலைநிலை இணைப்புகளும் தடுக்கப்படும்.", + "AllowRemoteAccess": "இந்த சேவையகத்திற்கு தொலை இணைப்புகளை அனுமதிக்கவும்.", + "AllowFfmpegThrottlingHelp": "ஒரு டிரான்ஸ்கோட் அல்லது ரீமக்ஸ் தற்போதைய பின்னணி நிலையிலிருந்து வெகு தொலைவில் இருக்கும்போது, செயல்முறையை இடைநிறுத்துங்கள், இதனால் அது குறைந்த ஆதாரங்களை நுகரும். அடிக்கடி தேடாமல் பார்க்கும்போது இது மிகவும் பயனுள்ளதாக இருக்கும். பின்னணி சிக்கல்களை நீங்கள் சந்தித்தால் இதை அணைக்கவும்.", + "AllowFfmpegThrottling": "த்ரோட்டில் டிரான்ஸ்கோட்கள்", + "AllowOnTheFlySubtitleExtractionHelp": "வீடியோ டிரான்ஸ்கோடிங்கைத் தடுக்க உதவும் வகையில் உட்பொதிக்கப்பட்ட வசனங்களை வீடியோக்களிலிருந்து பிரித்தெடுத்து வாடிக்கையாளர்களுக்கு எளிய உரையில் வழங்கலாம். சில கணினிகளில் இது நீண்ட நேரம் எடுக்கும் மற்றும் பிரித்தெடுக்கும் செயல்பாட்டின் போது வீடியோ பிளேபேக் நிறுத்தப்படும். கிளையன்ட் சாதனத்தால் பூர்வீகமாக ஆதரிக்கப்படாதபோது உட்பொதிக்கப்பட்ட வசன வரிகள் வீடியோ டிரான்ஸ்கோடிங்கில் எரிக்கப்படுவதை முடக்கு.", + "AllowOnTheFlySubtitleExtraction": "பறக்கையில் வசன வரிகள் பிரித்தெடுக்க அனுமதிக்கவும்", + "AllowMediaConversionHelp": "மாற்றும் ஊடக அம்சத்திற்கான அணுகலை வழங்கவும் அல்லது மறுக்கவும்.", + "AllowMediaConversion": "ஊடக மாற்றத்தை அனுமதிக்கவும்", + "AllowHWTranscodingHelp": "ட்யூனரை பறக்கும்போது ஸ்ட்ரீம்களை டிரான்ஸ்கோட் செய்ய அனுமதிக்கவும். இது சேவையகத்திற்கு தேவையான டிரான்ஸ்கோடிங்கைக் குறைக்க உதவும்.", + "AllLibraries": "அனைத்து நூலகங்களும்", + "AllLanguages": "அனைத்து மொழிகளையும்", + "AllEpisodes": "எல்லா அத்தியாயங்களும்", + "AllComplexFormats": "அனைத்து சிக்கலான வடிவங்களும் (ASS, SSA, VOBSUB, PGS, SUB, IDX,…)", + "AllChannels": "எல்லா சேனல்களும்", + "All": "அனைத்தும்", + "Alerts": "விழிப்பூட்டல்கள்", + "AlbumArtist": "கலைஞர்", + "Album": "ஆல்பம்", + "Aired": "ஒளிபரப்பானது" } From e309a05507b35ff72bb6767f2f30ff2c11fd6f25 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 15:30:22 +0000 Subject: [PATCH 369/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 9f4302528d..6832774720 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -37,5 +37,11 @@ "Alerts": "விழிப்பூட்டல்கள்", "AlbumArtist": "கலைஞர்", "Album": "ஆல்பம்", - "Aired": "ஒளிபரப்பானது" + "Aired": "ஒளிபரப்பானது", + "AuthProviderHelp": "இந்த பயனரின் கடவுச்சொல்லை அங்கீகரிக்க பயன்படும் அங்கீகார வழங்குநரைத் தேர்ந்தெடுக்கவும்.", + "Audio": "ஒலி", + "AttributeNew": "புதியது", + "AspectRatio": "விகிதம்", + "AskAdminToCreateLibrary": "ஒரு நூலகத்தை உருவாக்க நிர்வாகியிடம் கேளுங்கள்.", + "Ascending": "ஏறுவரிசை" } From fc825eeaa2ba4e75ab4bfc645d0776aa754347e5 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 15:32:32 +0000 Subject: [PATCH 370/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 6832774720..3fb9377a50 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -43,5 +43,17 @@ "AttributeNew": "புதியது", "AspectRatio": "விகிதம்", "AskAdminToCreateLibrary": "ஒரு நூலகத்தை உருவாக்க நிர்வாகியிடம் கேளுங்கள்.", - "Ascending": "ஏறுவரிசை" + "Ascending": "ஏறுவரிசை", + "BoxSet": "பெட்டி தொகுப்பு", + "Box": "பெட்டி", + "Books": "புத்தகங்கள்", + "BookLibraryHelp": "ஆடியோ மற்றும் உரை புத்தகங்கள் துணைபுரிகின்றன. {0} புத்தக பெயரிடும் வழிகாட்டியை மதிப்பாய்வு செய்யவும் {1}.", + "Blacklist": "தடுப்புப்பட்டியல்", + "BirthPlaceValue": "பிறந்த இடம்: {0}", + "BirthLocation": "பிறந்த இடம்", + "BirthDateValue": "பிறப்பு: {0}", + "Banner": "பதாகை", + "Backdrops": "பின்புலங்கள்", + "Backdrop": "பின்னணி", + "Auto": "தானாக" } From 23a8fc85e5af520ea6e30064666c001574d567f6 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 15:39:49 +0000 Subject: [PATCH 371/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 3fb9377a50..e6978da08e 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -55,5 +55,39 @@ "Banner": "பதாகை", "Backdrops": "பின்புலங்கள்", "Backdrop": "பின்னணி", - "Auto": "தானாக" + "Auto": "தானாக", + "ButtonArrowLeft": "இடப்பக்கம்", + "ButtonArrowDown": "கீழே", + "ButtonAddUser": "பயனரைச் சேர்க்கவும்", + "ButtonAddServer": "சேவையகத்தைச் சேர்க்கவும்", + "ButtonAddScheduledTaskTrigger": "தூண்டுதலைச் சேர்க்கவும்", + "ButtonAddMediaLibrary": "ஊடக நூலகத்தைச் சேர்க்கவும்", + "ButtonAddImage": "படத்தைச் சேர்க்கவும்", + "BurnSubtitlesHelp": "வீடியோக்களை டிரான்ஸ்கோட் செய்யும் போது சேவையகம் வசன வரிகள் எரிக்க வேண்டுமா என்பதை தீர்மானிக்கிறது. இதைத் தவிர்ப்பது செயல்திறனை பெரிதும் மேம்படுத்தும். பட அடிப்படையிலான வடிவங்கள் (VOBSUB, PGS, SUB, IDX,…) மற்றும் சில ASS அல்லது SSA வசன வரிகள் எரிக்க ஆட்டோவைத் தேர்ந்தெடுக்கவும்.", + "MessageBrowsePluginCatalog": "கிடைக்கக்கூடிய செருகுநிரல்களைக் காண எங்கள் சொருகி பட்டியலை உலாவுக.", + "Browse": "உலவ", + "BoxRear": "பெட்டி (பின்புறம்)", + "ValueSpecialEpisodeName": "சிறப்பு - {0}", + "Sync": "ஒத்திசைவு", + "Songs": "பாட்டுகள்", + "Shows": "தொடர்கள்", + "Playlists": "தொடர் பட்டியல்கள்", + "Photos": "புகைப்படங்கள்", + "Movies": "திரைப்படங்கள்", + "HeaderNextUp": "அடுத்ததாக", + "HeaderLiveTV": "நேரடித் தொலைக்காட்சி", + "HeaderFavoriteSongs": "பிடித்த பாட்டுகள்", + "HeaderFavoriteArtists": "பிடித்த கலைஞர்கள்", + "HeaderFavoriteAlbums": "பிடித்த ஆல்பங்கள்", + "HeaderFavoriteEpisodes": "பிடித்த அத்தியாயங்கள்", + "HeaderFavoriteShows": "பிடித்த தொடர்கள்", + "HeaderContinueWatching": "தொடர்ந்து பார்", + "HeaderAlbumArtists": "இசைக் கலைஞர்கள்", + "Genres": "வகைகள்", + "Folders": "கோப்புறைகள்", + "Favorites": "பிடித்தவை", + "Collections": "தொகுப்புகள்", + "Channels": "சேனல்கள்", + "Albums": "ஆல்பங்கள்", + "Preview": "முன்னோட்டம்" } From efe0d70cfc5506e9f2b2e2c217f11590a4a7f681 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 15:51:18 +0000 Subject: [PATCH 372/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index e6978da08e..7b1eb9c09c 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -89,5 +89,7 @@ "Collections": "தொகுப்புகள்", "Channels": "சேனல்கள்", "Albums": "ஆல்பங்கள்", - "Preview": "முன்னோட்டம்" + "Preview": "முன்னோட்டம்", + "ButtonArrowUp": "மேலே", + "ButtonArrowRight": "வலப்பக்க" } From 91b61389b9552962990b3c0cc099f14e2d7e2dad Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 16:00:18 +0000 Subject: [PATCH 373/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 7b1eb9c09c..c88908c2c9 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -91,5 +91,21 @@ "Albums": "ஆல்பங்கள்", "Preview": "முன்னோட்டம்", "ButtonArrowUp": "மேலே", - "ButtonArrowRight": "வலப்பக்க" + "ButtonArrowRight": "வலப்பக்க", + "ButtonGotIt": "அறிந்துகொண்டேன்", + "ButtonFullscreen": "முழு திரை", + "ButtonForgotPassword": "கடவுச்சொல்லை மறந்துவிட்டீர்களா", + "ButtonFilter": "வடிகட்டு", + "ButtonEditOtherUserPreferences": "இந்த பயனரின் சுயவிவரம், படம் மற்றும் தனிப்பட்ட விருப்பங்களைத் திருத்தவும்.", + "ButtonEditImages": "படங்களைத் திருத்து", + "ButtonEdit": "தொகு", + "ButtonDownload": "பதிவிறக்க", + "ButtonDown": "கீழே", + "ButtonDeleteImage": "படத்தை நீக்கு", + "ButtonDelete": "அழி", + "ButtonConnect": "இணை", + "ButtonChangeServer": "சேவையகத்தை மாற்று", + "ButtonCancel": "ரத்துசெய்", + "ButtonBack": "பின்னால்", + "ButtonAudioTracks": "ஒலிப்பதிவுகள்" } From e1b28f24f60deaa6c473352d07fcb21a01e9d294 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 16:07:33 +0000 Subject: [PATCH 374/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 49 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index c88908c2c9..85cfbe8794 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -107,5 +107,52 @@ "ButtonChangeServer": "சேவையகத்தை மாற்று", "ButtonCancel": "ரத்துசெய்", "ButtonBack": "பின்னால்", - "ButtonAudioTracks": "ஒலிப்பதிவுகள்" + "ButtonAudioTracks": "ஒலிப்பதிவுகள்", + "ButtonUp": "மேலே", + "ButtonUninstall": "நிறுவல் நீக்கு", + "ButtonTrailer": "டிரெய்லர்", + "ButtonTogglePlaylist": "பிளேலிஸ்ட்", + "ButtonSubtitles": "வசன வரிகள்", + "ButtonSubmit": "சமர்ப்பிக்கவும்", + "ButtonSplit": "பிரிக்கவும்", + "ButtonStop": "நிறுத்து", + "ButtonStart": "தொடங்கு", + "ButtonSort": "வகைபடுத்து", + "ButtonSignOut": "வெளியேறு", + "ButtonSignIn": "உள்நுழைக", + "ButtonShutdown": "பணிநிறுத்தம்", + "ButtonShuffle": "கலக்கு", + "ButtonSettings": "அமைப்புகள்", + "ButtonSend": "அனுப்புக", + "ButtonSelectView": "பார்வையைத் தேர்ந்தெடுக்கவும்", + "ButtonSelectServer": "சேவையகத்தைத் தேர்ந்தெடுக்கவும்", + "ButtonSelectDirectory": "கோப்பகத்தைத் தேர்ந்தெடுக்கவும்", + "ButtonScanAllLibraries": "அனைத்து நூலகங்களையும் ஸ்கேன் செய்யுங்கள்", + "ButtonRevoke": "திரும்பப் பெறு", + "ButtonResume": "மீண்டும் தொடர்", + "ButtonRestart": "மறுதொடக்கம்", + "ButtonResetPassword": "கடவுச்சொல்லை மீட்டமைக்க", + "ButtonResetEasyPassword": "எளிதான முள் குறியீட்டை மீட்டமைக்கவும்", + "ButtonRename": "மறுபெயரிடு", + "ButtonRemove": "அகற்று", + "ButtonRefreshGuideData": "வழிகாட்டி தரவைப் புதுப்பிக்கவும்", + "ButtonRefresh": "புதுப்பிப்பு", + "ButtonQuickStartGuide": "விரைவு தொடக்க வழிகாட்டி", + "ButtonProfile": "சுயவிவரம்", + "ButtonPreviousTrack": "முந்தைய பாடல்", + "ButtonPlay": "வாசிக்கவும்", + "ButtonPause": "இடைநிறுத்தம்", + "ButtonParentalControl": "பெற்றோர் கட்டுப்பாடு", + "ButtonOpen": "திற", + "ButtonOk": "சரி", + "ButtonOff": "முடக்கு", + "ButtonNextTrack": "அடுத்த பாடல்", + "ButtonNew": "புதியது", + "ButtonNetwork": "வலைப்பின்னல்", + "ButtonMore": "மேலும்", + "ButtonManualLogin": "கைமுறை புகுபதிகை", + "ButtonLibraryAccess": "நூலக அணுகல்", + "ButtonInfo": "தகவல்", + "ButtonHome": "முகப்பு", + "ButtonGuide": "வழிகாட்டி" } From a334467ba17853b971c6287100ab68074ff5e22c Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 16:26:01 +0000 Subject: [PATCH 375/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 85cfbe8794..876a6d0cb8 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -154,5 +154,9 @@ "ButtonLibraryAccess": "நூலக அணுகல்", "ButtonInfo": "தகவல்", "ButtonHome": "முகப்பு", - "ButtonGuide": "வழிகாட்டி" + "ButtonGuide": "வழிகாட்டி", + "Categories": "பிரிவுகள்", + "CancelSeries": "தொடரை ரத்துசெய்", + "CancelRecording": "பதிவை ரத்துசெய்", + "ButtonWebsite": "இணையதளம்" } From be079275e3d1ae086f75d109d3e4de4b464269f2 Mon Sep 17 00:00:00 2001 From: tokyotexture Date: Thu, 13 Aug 2020 16:59:59 +0000 Subject: [PATCH 376/463] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index 23c68d9e84..a9730d3f4a 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -19,7 +19,7 @@ "AllowHWTranscodingHelp": "Tillåt TV-mottagaren att omkoda strömmar. Det kan minska behovet av omkodning på Jellyfin Servern.", "AllowOnTheFlySubtitleExtraction": "Tillåt undertextsextrahering under uppspelning", "AllowOnTheFlySubtitleExtractionHelp": "Inbäddade undertexter kan extraheras ur videor och skickas till klienter i textformat för att förhindra omkodning. I vissa system kan detta ta en lång tid och förhindra videouppspelningen under extraheringsprocessen. Avaktivera detta för att bränna in inbäddade undertexter genom omkodning när de inte stöds av klienten.", - "AllowRemoteAccess": "Tillåt fjärranslutningar till denna Jellyfin-server.", + "AllowRemoteAccess": "Tillåt fjärranslutningar till denna server.", "AllowRemoteAccessHelp": "Om avaktiverat så blockeras alla fjärranslutningar.", "AlwaysPlaySubtitles": "Visa alltid", "AlwaysPlaySubtitlesHelp": "Undertexter på det önskade språket kommer att laddas oavsett ljudspårets språk.", @@ -121,7 +121,7 @@ "Collections": "Samlingar", "CommunityRating": "Användaromdöme", "Composer": "Kompositör", - "ConfigureDateAdded": "Konfigurera hur tillagt datum bestäms i Jellyfin servern under Biblioteksinställningar", + "ConfigureDateAdded": "Konfigurera hur tillagt datum bestäms under Biblioteksinställningar", "ConfirmDeleteImage": "Ta bort bild?", "ConfirmDeleteItem": "Tar du bort det här objeketet så tas det bort från både ditt filsystem och mediabibliotek. Är du säker på att du vill fortsätta?", "ConfirmDeleteItems": "Tar du bort dessa objekt tas dom också bort ifrån både ditt filsystem och mediabibliotek. Är du säker på att du vill fortsätta?", @@ -1255,7 +1255,7 @@ "ButtonGuide": "Guide", "Blacklist": "Svartlista", "Auto": "Automatisk", - "AuthProviderHelp": "Välj en autentiserings leverantör som ska användas för att autentisera denna användarens lösenord.", + "AuthProviderHelp": "Välj en autentiseringsleverantör som ska användas för att autentisera denna användarens lösenord.", "Ascending": "Stigande", "AllowedRemoteAddressesHelp": "Kommaavgränsad lista av IP-adresser eller IP/nätmask poster för nätverk som kommer bli tillåtna att ansluta avlägset. Om fältet lämnas tomt så kommer alla avlägsna adresser tillåtas.", "AllowMediaConversionHelp": "Tillåt eller neka tillgång till media konvertings funktionen.", From 2aa18a8b1db8239c6f60af3805e7bc28adb9a428 Mon Sep 17 00:00:00 2001 From: tokyotexture Date: Thu, 13 Aug 2020 17:05:18 +0000 Subject: [PATCH 377/463] Translated using Weblate (Japanese) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ja/ --- src/strings/ja.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ja.json b/src/strings/ja.json index f57a1ea672..2459773a26 100644 --- a/src/strings/ja.json +++ b/src/strings/ja.json @@ -23,7 +23,7 @@ "AllowMediaConversionHelp": "メディア変換機能へのアクセスを許可もしくは、拒否します。", "AllowOnTheFlySubtitleExtraction": "字幕の抽出の許可/拒否", "AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコードを防ぐために、ビデオから抽出してプレーンテキストでクライアントに配信できます。 システムによっては、これに時間がかかり、抽出中にビデオの再生が止まることがあります。 これを無効にし、埋め込み字幕がクライアントデバイスでネイティブにサポートされていない場合、ビデオのトランスコードが強制されます。", - "AllowRemoteAccess": "Jellyfin Serverへのリモート接続の許可。", + "AllowRemoteAccess": "サーバへのリモート接続の許可。", "AllowRemoteAccessHelp": "チェックが入っていない場合すべてのリモート接続をブロックします。", "AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/マスク長 空白のままにすると、すべてのリモートアドレスが許可されます。", "AlwaysPlaySubtitles": "常に有効", From de2b26bbfcf9aa5b27a3d77a360de06ec0bbafc8 Mon Sep 17 00:00:00 2001 From: WontTell Date: Thu, 13 Aug 2020 17:07:25 +0000 Subject: [PATCH 378/463] 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 | 54 ++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 7f1702c910..a168eb6c90 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -61,7 +61,7 @@ "LastSeen": "Ultima vez visto {0}", "PersonRole": "como {0}", "ListPaging": "{0}-{1} de {2}", - "WriteAccessRequired": "El servidor Jellyfin requiere permiso de escritura en esta carpeta. Por favor, asegúrate de tener acceso de escritura e inténtalo de nuevo.", + "WriteAccessRequired": "Jellyfin requiere permiso de escritura en esta carpeta. Por favor, asegúrate de tener acceso de escritura e inténtalo de nuevo.", "PathNotFound": "No se pudo encontrar la ruta. Por favor, asegúrate de que la ruta es válida e inténtalo de nuevo.", "Yesterday": "Ayer", "Yes": "Sí", @@ -352,7 +352,7 @@ "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Las siguientes ubicaciones de medios se removerán de tu biblioteca:", "MessageSettingsSaved": "Configuraciones guardadas.", "MessageReenableUser": "Ver abajo para volver a habilitar", - "MessagePluginInstallDisclaimer": "Los complementos desarrollados por miembros de la comunidad Jellyfin son una gran forma de mejorar tu experiencia con Jellyfin con características y beneficios adicionales. Antes de instalar, por favor, conoce el impacto que pueden ocasionar en tu servidor Jellyfin, tales como escaneo más largo de bibliotecas, procesamiento en segundo plano adicional y reducción de la estabilidad del sistema.", + "MessagePluginInstallDisclaimer": "Los complementos desarrollados por miembros de la comunidad son una gran forma de mejorar tu experiencia con características y beneficios adicionales. Antes de instalar, por favor, conoce el impacto que pueden ocasionar en tu servidor, tales como escaneo más largo de bibliotecas, procesamiento en segundo plano adicional y reducción de la estabilidad del sistema.", "MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento por favor, inicia sesión en tu servidor local directamente.", "MessagePleaseWait": "Por favor, espera. Esto podría tomar un minuto.", "MessagePleaseEnsureInternetMetadata": "Por favor, asegúrate de que la descarga de metadatos de Internet está habilitada.", @@ -378,7 +378,7 @@ "MessageEnablingOptionLongerScans": "Habilitar esta opción podría resultar en escaneos de bibliotecas significativamente más largos.", "MessageDownloadQueued": "Descarga puesta en la cola.", "MessageDirectoryPickerLinuxInstruction": "Para Linux en Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, debes conceder al usuario del servicio al menos permisos de lectura a tus ubicaciones de almacenamiento.", - "MessageDirectoryPickerBSDInstruction": "Para BSD, quizás necesites configurar el almacenamiento dentro de tu «FreeNAS Jail» de manera que permita a Jellyfin accederlo.", + "MessageDirectoryPickerBSDInstruction": "Para BSD, quizás necesites configurar el almacenamiento dentro de tu «jail FreeNAS» de manera que Jellyfin pueda acceder a tus medios.", "List": "Lista", "Like": "Me gusta", "LibraryAccessHelp": "Selecciona las bibliotecas que deseas compartir con este usuario. Los administradores podrán editar todas las carpetas utilizando el gestor de metadatos.", @@ -514,10 +514,10 @@ "SettingsWarning": "Cambiar estos valores podría causar inestabilidad o fallas de conexión. Si experimentas cualquier problema, recomendamos volver a los valores por defecto.", "SettingsSaved": "Configuración guardada.", "Settings": "Configuración", - "ServerUpdateNeeded": "Este servidor Jellyfin necesita ser actualizado. Para descargar la última versión, por favor, visita {0}", - "ServerRestartNeededAfterPluginInstall": "El servidor Jellyfin necesitará reiniciarse después de instalar un complemento.", - "ServerNameIsShuttingDown": "El servidor Jellyfin - {0} se está apagando.", - "ServerNameIsRestarting": "El servidor Jellyfin - {0} se está reiniciando.", + "ServerUpdateNeeded": "Este servidor necesita ser actualizado. Para descargar la última versión, por favor, visita {0}", + "ServerRestartNeededAfterPluginInstall": "Jellyfin necesitará reiniciarse después de instalar un complemento.", + "ServerNameIsShuttingDown": "El servidor en {0} se está apagando.", + "ServerNameIsRestarting": "El servidor en {0} se está reiniciando.", "SeriesYearToPresent": "{0} - Actualidad", "SeriesSettings": "Configuración de la serie", "SeriesRecordingScheduled": "Grabación de series programadas.", @@ -585,9 +585,9 @@ "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Esto utiliza la información del episodio desde los metadatos incrustados si están disponibles.", "PreferEmbeddedTitlesOverFileNamesHelp": "Esto determina el título mostrado por defecto cuando no hay disponibles metadatos en Internet o localmente.", "PreferEmbeddedTitlesOverFileNames": "Preferir títulos incrustados a los nombres de archivo", - "MessagePluginInstalled": "El complemento ha sido instalado con éxito. El servidor Jellyfin necesitará ser reiniciado para que los cambios surtan efecto.", + "MessagePluginInstalled": "El complemento ha sido instalado con éxito. El servidor necesitará ser reiniciado para que los cambios surtan efecto.", "PleaseSelectTwoItems": "Por favor, selecciona al menos dos elementos.", - "PleaseRestartServerName": "Por favor, reinicia el servidor Jellyfin - {0}.", + "PleaseRestartServerName": "Por favor, reinicia Jellyfin en {0}.", "PleaseEnterNameOrId": "Por favor, introduce un nombre o ID externo.", "PleaseConfirmPluginInstallation": "Por favor, haz clic en OK para confirmar que has leído lo que se encuentra arriba y que deseas proceder con la instalación del complemento.", "PleaseAddAtLeastOneFolder": "Por favor, agrega al menos una carpeta a esta biblioteca dando clic al botón Agregar.", @@ -608,7 +608,7 @@ "PerfectMatch": "Coincidencia perfecta", "People": "Personas", "PasswordSaved": "Contraseña guardada.", - "PasswordResetProviderHelp": "Elige un proveedor de restablecimiento de contraseña para usar cuando este usuario solicite un restablecimiento de contraseña", + "PasswordResetProviderHelp": "Elige un proveedor de restablecimiento de contraseña para usar cuando este usuario solicite un restablecimiento de contraseña.", "HeaderResetPassword": "Restablecer contraseña", "PasswordResetConfirmation": "¿Estás seguro de querer restablecer la contraseña?", "PasswordResetComplete": "La contraseña ha sido restablecida.", @@ -634,7 +634,7 @@ "OptionSunday": "Domingo", "OptionSubstring": "Subcadena", "OptionSpecialEpisode": "Especiales", - "OptionSaveMetadataAsHiddenHelp": "Cambiar esto se aplicará a los nuevos metadatos guardados en el futuro. Los archivos de metadatos existentes serán actualizados la próxima vez que sean guardados por el servidor Jellyfin.", + "OptionSaveMetadataAsHiddenHelp": "Cambiar esto se aplicará a los nuevos metadatos guardados en el futuro. Los archivos de metadatos existentes serán actualizados la próxima vez que sean guardados por el servidor.", "OptionSaveMetadataAsHidden": "Guardar metadatos e imágenes como archivos ocultos", "OptionSaturday": "Sábado", "OptionRuntime": "Duración", @@ -722,7 +722,7 @@ "LabelOverview": "Resumen:", "LabelOriginalTitle": "Título original:", "LabelOriginalAspectRatio": "Relación de aspecto original:", - "LabelOptionalNetworkPathHelp": "Si esta carpeta es compartida en su red, proveer la ruta del recurso compartido de red puede permitir a las aplicaciones Jellyfin en otros dispositivos acceder a los archivos de medios directamente. Por ejemplo, {0} o {1}.", + "LabelOptionalNetworkPathHelp": "Si esta carpeta es compartida en su red, proveer la ruta del recurso compartido de red puede permitir a los clientes en otros dispositivos acceder a los archivos de medios directamente. Por ejemplo, {0} o {1}.", "LabelOptionalNetworkPath": "Carpeta de red compartida:", "LabelNumberOfGuideDaysHelp": "Descargar más días de datos de programación permite programar con mayor anticipación y ver más listados, pero tomará más tiempo en descargar. Auto hará la selección basada en el número de canales.", "LabelNumberOfGuideDays": "Número de días de datos de la programación a descargar:", @@ -754,7 +754,7 @@ "LabelMinResumeDuration": "Duración mínima para la reanudación:", "LabelMinBackdropDownloadWidth": "Anchura mínima de descarga de imágenes de fondo:", "LabelMethod": "Método:", - "LabelMetadataSaversHelp": "Selecciona los formatos de archivo con los que se guardarán tus metadatos.", + "LabelMetadataSaversHelp": "Selecciona los formatos de archivo a usar cuando se guarden tus metadatos.", "LabelMetadataSavers": "Grabadores de metadatos:", "LabelMetadataReadersHelp": "Ordena tus fuentes de metadatos locales por prioridad. El primer archivo encontrado será leído.", "LabelMetadataReaders": "Lectores de metadatos:", @@ -772,7 +772,7 @@ "LabelIconMaxWidth": "Ancho máximo del ícono:", "LabelIconMaxHeightHelp": "Resolución máxima de los íconos expuestos vía upnp:icon.", "LabelIconMaxHeight": "Altura máxima del ícono:", - "LabelHttpsPortHelp": "El número de puerto TCP al que el servidor HTTPS de Jellyfin debería enlazar.", + "LabelHttpsPortHelp": "El número de puerto TCP para el servidor HTTPS.", "LabelHttpsPort": "Número de puerto local HTTPS:", "LabelHomeScreenSectionValue": "Sección {0} de la pantalla de inicio:", "LabelHomeNetworkQuality": "Calidad en red local:", @@ -780,9 +780,9 @@ "LabelHardwareAccelerationType": "Aceleración por hardware:", "LabelEncoderPreset": "Codificación H264 y H265 preestablecida:", "LabelH264Crf": "CRF de codificación H264:", - "LabelGroupMoviesIntoCollectionsHelp": "Cuando se muestran listados de películas, las películas que pertenecen a una colección serán mostradas agrupadas en un solo artículo.", + "LabelGroupMoviesIntoCollectionsHelp": "Cuando se muestran listados de películas, las películas que estén en alguna colección serán mostradas agrupadas en un solo artículo.", "LabelGroupMoviesIntoCollections": "Agrupar películas en colecciones", - "LabelServerNameHelp": "Este nombre se usará para identificar el servidor y se predeterminará al nombre de la computadora del servidor.", + "LabelServerNameHelp": "Este nombre se usará para identificar el servidor y se predeterminará al nombre del servidor.", "LabelFriendlyName": "Nombre amistoso:", "LabelFormat": "Formato:", "LabelForgotPasswordUsernameHelp": "Introduce tu nombre de usuario, si lo recuerdas.", @@ -803,7 +803,7 @@ "LabelEnableSingleImageInDidlLimit": "Limitar a una sola imagen incrustada", "LabelEnableRealtimeMonitorHelp": "Los cambios en los archivos serán procesados inmediatamente, en los sistemas de archivo soportados.", "LabelEnableRealtimeMonitor": "Activar monitoreo en tiempo real", - "LabelEnableHttpsHelp": "Permite que el servidor escuche en el puerto HTTPS configurado. También se debe configurar un certificado válido para que esto surta efecto.", + "LabelEnableHttpsHelp": "Escuchar en el puerto HTTPS configurado. También se debe proporcionar un certificado válido para que esto surta efecto.", "LabelEnableHttps": "Habilitar HTTPS", "LabelEnableHardwareDecodingFor": "Habilitar decodificación por hardware para:", "LabelEnableDlnaServerHelp": "Permite a dispositivos UPnP en tu red explorar y reproducir contenido.", @@ -812,8 +812,8 @@ "LabelEnableDlnaPlayTo": "Habilitar Reproducir En mediante DLNA", "LabelEnableDlnaDebugLoggingHelp": "Crea grandes archivos de registro y solo se debe usar cuando se requiera para solucionar problemas.", "LabelEnableDlnaDebugLogging": "Habilitar el registro de depuración de DLNA", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre búsquedas SSDP realizadas por Jellyfin.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de descubrimiento de clientes (segundos)", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la duración en segundos entre búsquedas SSDP.", + "LabelEnableDlnaClientDiscoveryInterval": "Intervalo de descubrimiento de clientes", "LabelEnableBlastAliveMessagesHelp": "Habilita esto si el servidor no es detectado de manera confiable por otros dispositivos UPnP en tu red.", "LabelEnableBlastAliveMessages": "Bombardeo de mensajes de vida", "LabelEnableAutomaticPortMapHelp": "Redirecciona automáticamente los puertos públicos de tu router a los puertos locales de tu servidor a través de UPnP. Esto puede no funcionar con algunos modelos de routers o configuraciones de red. Los cambios no se aplicarán hasta después de reiniciar el servidor.", @@ -876,8 +876,8 @@ "MessageCreateAccountAt": "Crear una cuenta en {0}", "MessageContactAdminToResetPassword": "Por favor, contacta a tu administrador para restablecer tu contraseña.", "MessageConfirmShutdown": "¿Estás seguro de que deseas apagar el servidor?", - "MessageConfirmRevokeApiKey": "¿Estás seguro de querer revocar esta clave API? La conexión de la aplicación con el servidor Jellyfin será terminada abruptamente.", - "MessageConfirmRestart": "¿Estás seguro de que deseas reiniciar el servidor Jellyfin?", + "MessageConfirmRevokeApiKey": "¿Estás seguro de querer revocar esta clave API? La conexión de la aplicación a este servidor será terminada abruptamente.", + "MessageConfirmRestart": "¿Estás seguro de que deseas reiniciar Jellyfin?", "MessageConfirmRemoveMediaLocation": "¿Estás seguro de querer remover esta ubicación?", "MessageConfirmRecordingCancellation": "¿Cancelar grabación?", "MessageConfirmProfileDeletion": "¿Estás seguro de querer eliminar este perfil?", @@ -939,7 +939,7 @@ "LabelBitrate": "Velocidad de bits:", "LabelBirthYear": "Año de nacimiento:", "LabelBirthDate": "Fecha de nacimiento:", - "LabelBindToLocalNetworkAddressHelp": "Sobrescribe la dirección IP local del servidor HTTP. Si se deja vacío, el servidor se vinculará a todas las direcciones disponibles. Para cambiar este valor se necesita reiniciar el servidor.", + "LabelBindToLocalNetworkAddressHelp": "Sobrescribe la dirección IP local del servidor HTTP. Si se deja vacío, el servidor se vinculará a todas las direcciones disponibles. Cambiar este valor requiere un reinicio.", "LabelBindToLocalNetworkAddress": "Vincular a la dirección de red local:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Actualizar automáticamente los metadatos desde Internet:", "LabelAuthProvider": "Proveedor de autenticación:", @@ -1146,7 +1146,7 @@ "LabelLoginDisclaimerHelp": "Un mensaje que se mostrará en la parte inferior de la página de inicio de sesión.", "LabelLoginDisclaimer": "Aviso legal:", "LabelLockItemToPreventChanges": "Bloquear este elemento para evitar cambios futuros", - "LabelLocalHttpServerPortNumberHelp": "El número de puerto TCP al que el servidor HTTP de Jellyfin debería enlazar.", + "LabelLocalHttpServerPortNumberHelp": "El número de puerto TCP para el servidor HTTP.", "LabelLocalHttpServerPortNumber": "Número de puerto local HTTP:", "LabelLineup": "Programación:", "LabelLibraryPageSizeHelp": "Establece el número de elementos a mostrar en una página de biblioteca. Establece en 0 para deshabilitar el paginado.", @@ -1273,10 +1273,10 @@ "ErrorPleaseSelectLineup": "Por favor, selecciona una programación e inténtalo de nuevo. Si no hay disponible ninguna, entonces, por favor, verifica que tu nombre de usuario, contraseña, y código postal sean correctos.", "ErrorStartHourGreaterThanEnd": "La hora de finalización debe ser mayor que la hora de inicio.", "ErrorGettingTvLineups": "Hubo un error al descargar la programación de TV. Por favor, asegúrate de que tu información sea correcta e inténtalo de nuevo.", - "ErrorDeletingItem": "Hubo un error eliminando el elemento del servidor Jellyfin. Por favor, verifica que el servidor Jellyfin tiene permisos de escritura en la carpeta del medio e inténtalo de nuevo.", + "ErrorDeletingItem": "Hubo un error eliminando el elemento del servidor. Por favor, verifica que Jellyfin tenga permisos de escritura en la carpeta del medio e inténtalo de nuevo.", "ErrorAddingXmlTvFile": "Hubo un error accediendo al archivo XMLTV. Por favor, asegúrate de que el archivo existe e inténtalo de nuevo.", "ErrorAddingTunerDevice": "Hubo un error al agregar el dispositivo sintonizador. Por favor, asegúrate de que esté disponible e inténtalo de nuevo.", - "ErrorAddingMediaPathToVirtualFolder": "Hubo un error agregando la ruta de medios. Por favor, asegúrate de que la ruta es válida y que el proceso del servidor Jellyfin tiene acceso a ese destino.", + "ErrorAddingMediaPathToVirtualFolder": "Hubo un error agregando la ruta de medios. Por favor, asegúrate de que la ruta es válida y que Jellyfin tiene acceso a ese destino.", "ErrorAddingListingsToSchedulesDirect": "Hubo un error agregando la programación de tu cuenta de Schedules Direct. Schedules Direct solo permite un numero limitado de programaciones por cuenta. Tal vez necesites acceder al sitio web de Schedules Direct y eliminar otras programaciones de tu cuenta antes de continuar.", "Episodes": "Episodios", "Episode": "Episodio", @@ -1326,7 +1326,7 @@ "Directors": "Directores", "DirectStreaming": "Transmisión directa", "DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco poder de procesamiento sin ninguna perdida en la calidad de video.", - "DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video será reempaquetado sobre la marcha antes de transmitirlo al dispositivo.", + "DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video será reempaquetado sobre la marcha antes de ser enviado al dispositivo.", "DirectPlaying": "Reproducción directa", "DeviceAccessHelp": "Esto solo se aplica a los dispositivos que pueden ser identificados de manera única y no impedirá el acceso desde navegadores. Filtrar el acceso a los dispositivos de los usuarios les impedirá usar nuevos dispositivos hasta que hayan sido aprobados aquí.", "DetectingDevices": "Detectando dispositivos", @@ -1366,7 +1366,7 @@ "ConfirmDeleteItems": "Eliminar estos elementos los eliminará tanto del sistema como de tu biblioteca de medios. ¿Estás seguro de querer continuar?", "ConfirmDeleteItem": "Eliminar este elemento lo eliminará tanto del sistema como de tu biblioteca de medios. ¿Estás seguro de querer continuar?", "ConfirmDeleteImage": "¿Eliminar imagen?", - "ConfigureDateAdded": "Configura cómo se determina la fecha de adición en el panel de control del servidor Jellyfin en la configuración de la biblioteca", + "ConfigureDateAdded": "Configura cómo se determina la fecha de adición en el panel de control en la configuración de la biblioteca", "Composer": "Compositor", "CommunityRating": "Calificación de la comunidad", "ColorTransfer": "Transferencia de color", From 89d1957c9fe8a855c850093a8633ae8e348d6cdd Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Thu, 13 Aug 2020 16:38:45 +0000 Subject: [PATCH 379/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 876a6d0cb8..1e594ffd71 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -69,7 +69,7 @@ "BoxRear": "பெட்டி (பின்புறம்)", "ValueSpecialEpisodeName": "சிறப்பு - {0}", "Sync": "ஒத்திசைவு", - "Songs": "பாட்டுகள்", + "Songs": "பாடல்கள்", "Shows": "தொடர்கள்", "Playlists": "தொடர் பட்டியல்கள்", "Photos": "புகைப்படங்கள்", @@ -158,5 +158,11 @@ "Categories": "பிரிவுகள்", "CancelSeries": "தொடரை ரத்துசெய்", "CancelRecording": "பதிவை ரத்துசெய்", - "ButtonWebsite": "இணையதளம்" + "ButtonWebsite": "இணையதளம்", + "ClientSettings": "வாடிக்கையாளர் அமைப்புகள்", + "CinemaModeConfigurationHelp": "சினிமா பயன்முறை தியேட்டர் அனுபவத்தை உங்கள் வாழ்க்கை அறைக்கு நேராக கொண்டு வருகிறது, முக்கிய அம்சத்திற்கு முன் டிரெய்லர்கள் மற்றும் தனிப்பயன் அறிமுகங்களை இயக்கும் திறன் கொண்டது.", + "ChannelNumber": "சேனல் எண்", + "ChannelNameOnly": "சேனல் {0} மட்டுமே", + "ChannelAccessHelp": "இந்த பயனருடன் பகிர சேனல்களைத் தேர்ந்தெடுக்கவும். நிர்வாகிகள் மெட்டாடேட்டா நிர்வாகியைப் பயன்படுத்தி அனைத்து சேனல்களையும் திருத்த முடியும்.", + "ChangingMetadataImageSettingsNewContent": "மெட்டாடேட்டா அல்லது கலைப்படைப்பு பதிவிறக்க அமைப்புகளுக்கான மாற்றங்கள் உங்கள் நூலகத்தில் சேர்க்கப்பட்ட புதிய உள்ளடக்கத்திற்கு மட்டுமே பொருந்தும். இருக்கும் தலைப்புகளில் மாற்றங்களைப் பயன்படுத்த, அவற்றின் மெட்டாடேட்டாவை கைமுறையாக புதுப்பிக்க வேண்டும்." } From 96d1ce9b68221902ca594a6d072f7fd4da212720 Mon Sep 17 00:00:00 2001 From: WontTell Date: Thu, 13 Aug 2020 17:33:23 +0000 Subject: [PATCH 380/463] Translated using Weblate (Spanish (Latin America)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_419/ --- src/strings/es_419.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index a168eb6c90..d495cdca9c 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -1502,7 +1502,7 @@ "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 uno temporal.", "ButtonSyncPlay": "SyncPlay", "MessageNoGenresAvailable": "Permitir a algunos proveedores de metadatos obtener géneros desde Internet.", "MessageAddRepository": "Si desea agregar un repositorio, haga clic en el botón al lado del encabezado y complete la información solicitada.", From d6ab99b59db6c73878758d4d02ed326e4478e8be Mon Sep 17 00:00:00 2001 From: Matjaz Zavski Date: Thu, 13 Aug 2020 21:22:42 +0200 Subject: [PATCH 381/463] Update src/elements/emby-checkbox/emby-checkbox.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/elements/emby-checkbox/emby-checkbox.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elements/emby-checkbox/emby-checkbox.js b/src/elements/emby-checkbox/emby-checkbox.js index 74a1696298..d44c58ed48 100644 --- a/src/elements/emby-checkbox/emby-checkbox.js +++ b/src/elements/emby-checkbox/emby-checkbox.js @@ -10,7 +10,7 @@ import 'webcomponents'; function onKeyDown(e) { // Don't submit form on enter // Real (non-emulator) Tizen does nothing on Space - if ((e.keyCode === 13 || e.keyCode === 32) && !browser.firefox) { + if (e.keyCode === 13 || (e.keyCode === 32 && browser.tizen)) { e.preventDefault(); this.checked = !this.checked; From ee54714603fb446e1cb7cc48b7f6ea75beda934c Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Thu, 13 Aug 2020 21:25:38 +0200 Subject: [PATCH 382/463] Applied the same fix to the emby-radio.js --- src/elements/emby-radio/emby-radio.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 6fd2529085..8bd4f9fb84 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -9,7 +9,7 @@ import 'webcomponents'; function onKeyDown(e) { // Don't submit form on enter // Real (non-emulator) Tizen does nothing on Space - if (e.keyCode === 13 || e.keyCode === 32) { + if (e.keyCode === 13 || (e.keyCode === 32 && browser.tizen)) { e.preventDefault(); if (!this.checked) { From ffcc1181dcbca59438d36744991206b48df7f194 Mon Sep 17 00:00:00 2001 From: matjaz321 Date: Thu, 13 Aug 2020 22:41:49 +0200 Subject: [PATCH 383/463] small cr fix --- src/elements/emby-radio/emby-radio.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elements/emby-radio/emby-radio.js b/src/elements/emby-radio/emby-radio.js index 8bd4f9fb84..7c468a84a6 100644 --- a/src/elements/emby-radio/emby-radio.js +++ b/src/elements/emby-radio/emby-radio.js @@ -1,6 +1,7 @@ import layoutManager from 'layoutManager'; import 'css!./emby-radio'; import 'webcomponents'; +import browser from 'browser'; /* eslint-disable indent */ From 5de2498f12cb4370dae14e3d418e3332dbda8835 Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 13 Aug 2020 22:30:00 +0100 Subject: [PATCH 384/463] Update recordingcreator.js --- src/components/recordingcreator/recordingcreator.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/components/recordingcreator/recordingcreator.js b/src/components/recordingcreator/recordingcreator.js index 43a91b4992..9cb4e41d2e 100644 --- a/src/components/recordingcreator/recordingcreator.js +++ b/src/components/recordingcreator/recordingcreator.js @@ -184,13 +184,7 @@ function showEditor(itemId, serverId) { init(dlg); - currentRecordingFields = new recordingFields({ - parent: dlg.querySelector('.recordingFields'), - programId: itemId, - serverId: serverId - }); - - events.on(currentRecordingFields, 'recordingchanged', onRecordingChanged); + reload(dlg, itemId, serverId); currentRecordingFields = new recordingFields({ parent: dlg.querySelector('.recordingFields'), From b1c96575f229c62d4b069cc53304f7ad55c6a921 Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 13 Aug 2020 22:31:31 +0100 Subject: [PATCH 385/463] remove missed require --- src/components/recordingcreator/recordingeditor.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/recordingcreator/recordingeditor.js b/src/components/recordingcreator/recordingeditor.js index 5bd3d73c67..096ea3b62c 100644 --- a/src/components/recordingcreator/recordingeditor.js +++ b/src/components/recordingcreator/recordingeditor.js @@ -2,7 +2,6 @@ import dialogHelper from 'dialogHelper'; import globalize from 'globalize'; import layoutManager from 'layoutManager'; import connectionManager from 'connectionManager'; -import require from 'require'; import loading from 'loading'; import scrollHelper from 'scrollHelper'; import 'scrollStyles'; @@ -91,7 +90,7 @@ function showEditor(itemId, serverId, options) { options = options || {}; currentResolve = resolve; - require(['text!./recordingeditor.template.html'], function (template) { + import('text!./recordingeditor.template.html').then(({default: template}) => { const dialogOptions = { removeOnClose: true, scrollY: false From f333cc3cb7f25a0f3966e9037baa177f12351bf7 Mon Sep 17 00:00:00 2001 From: Marius Lindvall Date: Thu, 13 Aug 2020 21:46:33 +0000 Subject: [PATCH 386/463] =?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 | 90 +++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 66b383b616..814490cabc 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -17,7 +17,7 @@ "AllowHWTranscodingHelp": "Tillat at tuneren omkoder strømmer fortløpende. Dette kan bidra til å redusere mendgen omkoding som må utføres av serveren.", "AllowMediaConversion": "Tillat konvertering av media", "AllowMediaConversionHelp": "Tillatt eller forby tilgang til å konvertere media.", - "AllowRemoteAccess": "Tillat eksterne tilkoblinger til denne Jellyfin-serveren.", + "AllowRemoteAccess": "Tillat eksterne tilkoblinger til denne serveren.", "AllowRemoteAccessHelp": "Alle tilkoblinger via nettverk vil blokkeres dersom du ikke aktiverer denne innstillingen.", "Anytime": "Når som helst", "AroundTime": "Rundt", @@ -96,7 +96,7 @@ "ColorSpace": "Fargeutvalg", "ColorTransfer": "Overføring av farger", "Composer": "Komponist", - "ConfigureDateAdded": "Konfigurer hvordan \"Dato lagt til\" bestemmes på Jellyfin-serveren sitt dashbord under instillinger for Bibliotek", + "ConfigureDateAdded": "Konfigurer hvordan \"Dato lagt til\" bestemmes på dashbordet under innstillingene for bibliotek", "ConfirmDeleteImage": "Slett bilde?", "ConfirmDeleteItem": "Sletting av elementet vil slette det fra både filsystemet og biblioteket. Er du sikker på at du vil fortsette?", "ConfirmDeleteItems": "Sletting av disse elementene vil slette dem fra både filsystemet og mediebiblioteket. Er du sikker på at du vil fortsette?", @@ -141,7 +141,7 @@ "EndsAtValue": "Slutter klokken {0}", "Episodes": "Episoder", "ErrorAddingListingsToSchedulesDirect": "Det oppstod en feil når du la oppstillingen til Schedules Direct-kontoen din. Schedules Direct tillater kun et begrenset antall oppstillinger per konto. Det kan hende du må logge inn på Schedules Direct-nettstedet og fjerne andre lister fra kontoen din før du fortsetter.", - "ErrorAddingMediaPathToVirtualFolder": "Det oppstod en feil med å legge inn filbane til media. Vennligst sørg for at filbanen er gyldig og at Jellyfin-serverprosessen har tilgang til filbanen.", + "ErrorAddingMediaPathToVirtualFolder": "Det oppstod en feil med å legge inn filbane til media. Vennligst sørg for at filbanen er gyldig og at Jellyfin har tilgang til filbanen.", "ErrorAddingTunerDevice": "Det oppstod en feil når tuneren skulle legges til. Vennligst sørg for at den er tilgjengelig og prøv på nytt.", "ErrorAddingXmlTvFile": "Det oppstod en feil under lesing av XMLTV-filen. Vennligst sørg for at filen finnes og prøv igjen.", "ErrorGettingTvLineups": "Det oppstod en feil under nedlastning av TV-oversikten. Vennligst sørg for at informasjonen er korrekt og prøv igjen.", @@ -188,7 +188,7 @@ "HeaderAllowMediaDeletionFrom": "Tillat sletting av media fra", "HeaderApiKey": "API-nøkkel", "HeaderApiKeys": "API-nøkler", - "HeaderApiKeysHelp": "Eksterne programmer trenger en API-nøkkel for å kunne kommunisere med Jellyfin-serveren. Nøklene utstedes ved å logge på med en Jellyfin-konto, eller ved å manuelt gi programmet en nøkkel.", + "HeaderApiKeysHelp": "Eksterne programmer trenger en API-nøkkel for å kunne kommunisere med serveren. Nøklene utstedes ved å logge på med en vanlig brukerkonto eller gjennom å manuelt gi programmet en nøkkel.", "HeaderAudioBooks": "Lydbøker", "HeaderAudioSettings": "Lydinnstillinger", "HeaderBooks": "Bøker", @@ -285,7 +285,7 @@ "HeaderPreferredMetadataLanguage": "Foretrukket språk for metadata", "HeaderProfile": "Profil", "HeaderProfileInformation": "Profilinformasjon", - "HeaderProfileServerSettingsHelp": "Disse verdiene styrer hvordan Jellyfin-serveren presenterer seg selv for enheten.", + "HeaderProfileServerSettingsHelp": "Disse verdiene styrer hvordan serveren presenterer seg selv for klienter.", "HeaderRecentlyPlayed": "Nylig avspilt", "HeaderRecordingOptions": "Opptaksvalg", "HeaderRecordingPostProcessing": "Etterbehandling av opptak", @@ -307,7 +307,7 @@ "HeaderSelectServerCachePath": "Velg filbane for mellomlagring", "HeaderSelectServerCachePathHelp": "Bla eller skriv inn filbanen som skal brukes for mellomlagring av serverdata. Mappen må være skrivbar.", "HeaderSelectTranscodingPath": "Velg filbane for midlertidig lagring av omkodede filer", - "HeaderSelectTranscodingPathHelp": "Bla eller skriv inn filbanen som skal brukes for midlertidig lagring av omkodede filer. Mappen må være skrivbar.", + "HeaderSelectTranscodingPathHelp": "Bla eller skriv inn filbanen som skal brukes for omkodede filer. Mappen må være skrivbar.", "HeaderSendMessage": "Send melding", "HeaderSeriesOptions": "Serievalg", "HeaderServerSettings": "Serverinnstillinger", @@ -344,8 +344,8 @@ "HideWatchedContentFromLatestMedia": "Skjul sett innhold fra nyeste media", "Identify": "Identifiser", "Images": "Bilder", - "ImportFavoriteChannelsHelp": "Hvis aktivert, vil kun kanaler som er markert som favoritt på tuneren bli importert.", - "ImportMissingEpisodesHelp": "Hvis aktivert, vil informasjon om manglende episoder importeres til Jellyfin-databasen og de vil vises under sesonger og serier. Dette kan føre til at skanning av biblioteket tar betydelig lengre tid.", + "ImportFavoriteChannelsHelp": "Kun kanaler som er markert som favoritt på tuneren bli importert.", + "ImportMissingEpisodesHelp": "Informasjon om manglende episoder vil bli importet til databasen og bli vist under sesonger og serier. Dette kan føre til at skanning av biblioteket tar betydelig lengre tid.", "InstallingPackage": "Installerer {0} (versjon {1})", "InstantMix": "Direktemiks", "ItemCount": "{0} elementer", @@ -369,14 +369,14 @@ "LabelAppName": "Applikasjonsnavn", "LabelAppNameExample": "Eksempel: Sickbeard, Sonarr", "LabelArtists": "Artister:", - "LabelArtistsHelp": "Separer med semikolon ;", + "LabelArtistsHelp": "Separer flere artister med et semikolon.", "LabelAudioLanguagePreference": "Foretrukket språk på lydspor:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Oppdater metadata automatisk fra Internett:", "LabelBindToLocalNetworkAddress": "Bind til lokal nettverksadresse:", - "LabelBindToLocalNetworkAddressHelp": "Valgfritt. Overstyrer den lokale IP-adressen som HTTP-serveren bindes til. Hvis tomt, vil serveren binde seg til alle tilgjengelige adresser. Endringer av denne verdien krever omstart av Jellyfin-serveren.", + "LabelBindToLocalNetworkAddressHelp": "Overstyr den lokale IP-adressen til HTTP-serveren. Hvis tomt, vil serveren binde seg til alle tilgjengelige adresser. Endringer av denne verdien krever en omstart.", "LabelBirthDate": "Fødselsdato:", "LabelBirthYear": "Fødselsår:", - "LabelBlastMessageInterval": "Intervall mellom keepalive-meldinger (sekunder)", + "LabelBlastMessageInterval": "Intervall mellom keepalive-meldinger", "LabelBlastMessageIntervalHelp": "Bestemmer intervallet i sekunder mellom keepalive-meldinger.", "LabelCachePath": "Filbane for mellomlagring:", "LabelCachePathHelp": "Angi en egendefinert plassering for mellomlagrede filer, som f.eks. bilder. La feltet stå tomt for å bruke standardverdi.", @@ -392,7 +392,7 @@ "LabelCurrentPassword": "Nåværende passord:", "LabelCustomCertificatePath": "Egendefinert filbane for SSL-sertifikat:", "LabelCustomCss": "Tilpasset CSS:", - "LabelCustomCssHelp": "Bruk tilpasset CSS-kode for å endre stil på web-grensesnittet.", + "LabelCustomCssHelp": "Bruk tilpassede stiler på web-grensesnittet.", "LabelCustomDeviceDisplayName": "Visningsnavn:", "LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det være tomt for å bruke navnet som enheten rapporterer.", "LabelCustomRating": "Egen aldersgrense:", @@ -421,8 +421,8 @@ "LabelEnableAutomaticPortMapHelp": "Automatisk koble eksterne porter på ruteren til lokale porter på serveren din via UPnP. Dette fungerer ikke med alle rutere eller nettverkskonfigurasjoner. Endringer trer ikke kraft før serveren startes på nytt.", "LabelEnableBlastAliveMessages": "Kringkast keepalive-meldinger", "LabelEnableBlastAliveMessagesHelp": "Aktiver hvis serveren ikke blir konsekvent oppdaget av andre UPnP-enheter på nettverket ditt.", - "LabelEnableDlnaClientDiscoveryInterval": "Oppdateringsintervall for klient (i sekunder)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bestemmer intervallet i sekunder mellom SSDP-søk utført av Jellyfin.", + "LabelEnableDlnaClientDiscoveryInterval": "Oppdateringsintervall for klient", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bestemmer intervallet i sekunder mellom SSDP-søk.", "LabelEnableDlnaDebugLogging": "Aktiver DLNA debug-logging", "LabelEnableDlnaDebugLoggingHelp": "Dette vil lage store loggfiler og burde kun benyttes for feilsøking.", "LabelEnableDlnaPlayTo": "Aktiver DLNA Play To", @@ -444,16 +444,16 @@ "LabelFinish": "Fullfør", "LabelForgotPasswordUsernameHelp": "Skriv inn brukernavnet ditt, dersom du husker det.", "LabelFriendlyName": "Egendefinert navn:", - "LabelServerNameHelp": "Dette navnet vil bli brukt for å identifisere denne serveren. Standardverdien er serverens maskinnavn.", + "LabelServerNameHelp": "Dette navnet vil bli brukt for å identifisere denne serveren. Standardverdien er serverens tjenernavn.", "LabelGroupMoviesIntoCollections": "Gruppér filmer i samlinger", - "LabelGroupMoviesIntoCollectionsHelp": "Ved visning av filmlister vil filmer som tilhører en samling bli vist som ett gruppeelement.", + "LabelGroupMoviesIntoCollectionsHelp": "Ved visning av filmlister, vil filmer i en samling bli vist som ett gruppert element.", "LabelH264Crf": "CRF-verdi for H264-koding:", "LabelEncoderPreset": "Forhåndsinnstilling for H264-koding:", "LabelHardwareAccelerationType": "Maskinvareakselerasjon:", "LabelHardwareAccelerationTypeHelp": "Maskinvareakselerasjon krever ytterligere konfigurasjon.", "LabelHomeScreenSectionValue": "Hjemskjermseksjon {0}:", "LabelHttpsPort": "Lokal HTTPS-port:", - "LabelHttpsPortHelp": "TCP-portnummeret som Jellyfin sin HTTPS-server skal benytte.", + "LabelHttpsPortHelp": "TCP-portnummeret for HTTPS-serveren.", "LabelIconMaxHeight": "Makshøyde for ikon:", "LabelIconMaxHeightHelp": "Maks oppløsning for ikoner eksponert via upnp:icon.", "LabelIconMaxWidth": "Maksbredde for ikon:", @@ -477,7 +477,7 @@ "LabelLanguage": "Språk:", "LabelLineup": "Oppstilling:", "LabelLocalHttpServerPortNumber": "Lokal HTTP-port:", - "LabelLocalHttpServerPortNumberHelp": "TCP-portnummeret som Jellyfin sin HTTP-server skal benytte.", + "LabelLocalHttpServerPortNumberHelp": "TCP-portnummeret for HTTP-serveren.", "LabelLockItemToPreventChanges": "Lås dette elementet for å hindre fremtidige endringer", "LabelLoginDisclaimer": "Ansvarsfraskrivelse ved innlogging:", "LabelLoginDisclaimerHelp": "En melding som vises på bunnen av innloggingssiden.", @@ -498,7 +498,7 @@ "LabelMetadataPathHelp": "Spesifiser en egen plassering for nedlastede omslagsbilder og metadata.", "LabelMetadataReaders": "Metadatalesere:", "LabelMetadataReadersHelp": "Ranger dine foretrukne lokale kilder for metadata i prioritert rekkefølge. Den første filen som blir funnet vil leses inn.", - "LabelMetadataSaversHelp": "Velg filformatene metadataen din skal lagres til.", + "LabelMetadataSaversHelp": "Velg filformatene som skal brukes ved lagring av metadata.", "LabelMethod": "Metode:", "LabelMinBackdropDownloadWidth": "Minimum bredde for nedlastede bakgrunner:", "LabelMinResumeDuration": "Minimum fortsettelsesvarighet:", @@ -513,7 +513,7 @@ "LabelMovieCategories": "Filmkategorier:", "LabelMoviePrefix": "Filmprefiks:", "LabelMoviePrefixHelp": "Hvis et prefiks benyttes i filmtitler, skriv det inn her slik at serveren kan håndtere det på riktig måte.", - "LabelMovieRecordingPath": "Filbane for filmopptak (valgfritt):", + "LabelMovieRecordingPath": "Filbane for filmopptak:", "LabelMusicStreamingTranscodingBitrate": "Bithastighet for omkoding av musikk:", "LabelMusicStreamingTranscodingBitrateHelp": "Spesifiser høyeste tillatte bithastighet ved musikkstrømming.", "LabelName": "Navn:", @@ -525,8 +525,8 @@ "LabelNumber": "Nummer:", "LabelNumberOfGuideDays": "Antall dager med TV-guidedata som skal lastes ned:", "LabelNumberOfGuideDaysHelp": "Nedlasting av TV-guide for flere dager gir muligheten for å planlegge lenger i forveien og for å se flere listinger, men vil også føre til at nedlastningen tar lenger tid. Auto vil velge basert på antall kanaler.", - "LabelOptionalNetworkPath": "(Valgfritt) Delt nettverksmappe:", - "LabelOptionalNetworkPathHelp": "Hvis denne mappen er delt på nettverket, vil Jellyfin-apper på andre enheter kunne få tilgang til mediefilene direkte dersom du spesifiserer nettverksbanen her. For eksempel, {0} eller {1}.", + "LabelOptionalNetworkPath": "Delt nettverksmappe:", + "LabelOptionalNetworkPathHelp": "Hvis denne mappen er delt på nettverket, vil klienter på andre enheter kunne få tilgang til mediefilene direkte dersom du spesifiserer nettverksbanen her. For eksempel, {0} eller {1}.", "LabelOriginalAspectRatio": "Originalt sideforhold:", "LabelOriginalTitle": "Original tittel:", "LabelOverview": "Oversikt:", @@ -564,7 +564,7 @@ "LabelRefreshMode": "Oppdateringsmodus:", "LabelReleaseDate": "Utgivelsesdato:", "LabelRemoteClientBitrateLimit": "Maksimal bithastighet for strømming til Internett (Mbps):", - "LabelRuntimeMinutes": "Spilletid (minutter):", + "LabelRuntimeMinutes": "Spilletid:", "LabelSaveLocalMetadata": "Lagre omslagsbilder og metadata i medie-mappene", "LabelSaveLocalMetadataHelp": "Lagring av omslagsbilder og metadata direkte i mediemapper vil legge dem på et sted hvor de lett kan endres på.", "LabelScheduledTaskLastRan": "Sist kjørt {0}, tok {1}.", @@ -575,7 +575,7 @@ "LabelSelectVersionToInstall": "Velg versjon å installere:", "LabelSendNotificationToUsers": "Send varslingen til:", "LabelSerialNumber": "Serienummer", - "LabelSeriesRecordingPath": "Plassering for serieopptak (valgfritt):", + "LabelSeriesRecordingPath": "Plassering for serieopptak:", "LabelServerHost": "Vertsnavn:", "LabelServerHostHelp": "192.168.1.100:8096 eller https://dinserver.no", "LabelSkipIfAudioTrackPresent": "Hopp over dersom standard lydspor matcher nedlastingsspråket", @@ -624,7 +624,7 @@ "LabelYoureDone": "Du er ferdig!", "LabelZipCode": "Postnummer:", "LabelffmpegPath": "Filbane til FFmpeg:", - "LabelffmpegPathHelp": "Filbanen til applikasjonsfilen for FFmpeg, eller mappen som inneholder FFmpeg.", + "LabelffmpegPathHelp": "Filbanen til applikasjonsfilen for FFmpeg eller mappen som inneholder FFmpeg.", "LatestFromLibrary": "Siste {0}", "LibraryAccessHelp": "Velg bibliotekene som skal deles med denne brukren. Administratorer vil ha mulighet til å gjøre endringer i alle mapper ved å bruke metadatabehandleren.", "Like": "Liker", @@ -662,13 +662,13 @@ "MessageConfirmProfileDeletion": "Er du sikker på at du vil slette denne profilen?", "MessageConfirmRecordingCancellation": "Avbryt opptak?", "MessageConfirmRemoveMediaLocation": "Er du sikker på at du vil slette denne plasseringen?", - "MessageConfirmRestart": "Er du sikker på at du vil starte Jellyfin-serveren på nytt?", - "MessageConfirmRevokeApiKey": "Er du sikker på at du vil tilbakekalle denne API-nøkkelen? Applikasjonens tilkobling til Jellyfin-serveren vil bli avbrutt umiddelbart.", + "MessageConfirmRestart": "Er du sikker på at du vil starte Jellyfin på nytt?", + "MessageConfirmRevokeApiKey": "Er du sikker på at du vil tilbakekalle denne API-nøkkelen? Applikasjonens tilkobling til denne serveren vil bli avbrutt umiddelbart.", "MessageConfirmShutdown": "Er du sikker på at du vil avslutte serveren?", "MessageContactAdminToResetPassword": "Vennligst kontakt systemadministratoren for hjelp til å tilbakestille passordet ditt.", "MessageCreateAccountAt": "Opprett en konto hos {0}", "MessageDeleteTaskTrigger": "Er du sikker på at du vil slette denne oppgaveutløseren?", - "MessageDirectoryPickerBSDInstruction": "På BSD-systemer må du kanskje endre lagringsinnstillinger i FreeNAS Jail slik at Jellyfin har tilgang dit.", + "MessageDirectoryPickerBSDInstruction": "På BSD-systemer må du kanskje endre lagringsinnstillinger i FreeNAS Jail slik at Jellyfin har tilgang til mediene dine.", "MessageDirectoryPickerLinuxInstruction": "På Linux-systemer med Arch Linux, CentOS, Debian, Fedora, openSUSE eller Ubuntu må du minimum gi tjenestebrukeren lesetilgang til lagringsplassene dine.", "MessageDownloadQueued": "Nedlasting lagt i kø.", "MessageEnablingOptionLongerScans": "Aktivering av dette alternativet kan føre til at skanning av biblioteket tar betydelig lenger tid.", @@ -690,7 +690,7 @@ "MessagePleaseEnsureInternetMetadata": "Vennligst sørg for at nedlasting av metadata fra internett er slått på.", "MessagePleaseWait": "Vennligst vent. Dette kan ta noe tid.", "MessagePluginConfigurationRequiresLocalAccess": "Logg inn direkte på din lokale server for å konfigurere dette programtillegget.", - "MessagePluginInstallDisclaimer": "Programtillegg utviklet av Jellyfin-samfunnet er en god måte å forbedre opplevelsen din av Jellyfin gjennom ekstra funksjoner og fordeler. Før installasjon bør du være klar over virkningen de kan ha på Jellyfin-serveren, som lengre skanning av bibliotek, ekstra bakgrunnsbehandling og redusert systemstabilitet.", + "MessagePluginInstallDisclaimer": "Programtillegg utviklet av brukersamfunnet er en god måte å forbedre opplevelsen din gjennom ekstra funksjoner og fordeler. Før installasjon bør du være klar over virkningen de kan ha på serveren din, som lengre skanning av bibliotek, ekstra bakgrunnsbehandling og redusert systemstabilitet.", "MessageReenableUser": "Se under for å reaktivere", "MessageSettingsSaved": "Innstillinger lagret.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Følgende medieplassering vil bli fjernet fra biblioteket ditt:", @@ -698,7 +698,7 @@ "MessageUnsetContentHelp": "Innhold vises som enkle mapper. For beste resultat, bruk metadatabehandleren for å sette innholdstypen for undermapper.", "MessageYouHaveVersionInstalled": "Du har for øyeblikket versjon {0} installert.", "MetadataManager": "Metadatabehandler", - "MetadataSettingChangeHelp": "Endring av metadatainnstillinger vil gjelde nytt innhold som legges til fra nå av. For å oppdatere eksisterende innhold, åpne detaljer-menyen og klikk på oppdateringsknappen, eller kjør masseoppdatering ved hjelp av metadatabehandleren.", + "MetadataSettingChangeHelp": "Endring av metadatainnstillinger vil gjelde nytt innhold lagt til fra nå av. For å oppdatere eksisterende innhold, åpne detaljer-menyen og klikk på oppdateringsknappen, eller kjør masseoppdatering ved hjelp av metadatabehandleren.", "MinutesAfter": "minutter etter", "MinutesBefore": "minutter før", "Monday": "Mandag", @@ -742,7 +742,7 @@ "OptionAllowVideoPlaybackTranscoding": "Tillat filmavspilling som krever omkoding", "OptionAscending": "Økende", "OptionAutomaticallyGroupSeries": "Slå sammen serier som er spredt over flere mapper automatisk", - "OptionAutomaticallyGroupSeriesHelp": "Hvis aktivert, vil serier som er spredt over flere mapper innenfor dette biblioteket bli slått sammen automatisk til en enkelt serie.", + "OptionAutomaticallyGroupSeriesHelp": "Serier som er spredt over flere mapper innenfor dette biblioteket bli slått sammen automatisk til en enkelt serie.", "OptionBlockBooks": "Bøker", "OptionBlockChannelContent": "Innhold fra Internettkanal", "OptionBlockLiveTvChannels": "Direkte-TV-kanaler", @@ -761,7 +761,7 @@ "OptionDatePlayed": "Dato avspilt", "OptionDescending": "Fallende", "OptionDisableUser": "Deaktiver denne brukeren", - "OptionDisableUserHelp": "Hvis deaktivert vil ikke serveren godta noen tilkoblinger fra denne brukeren. Eksisterende tilkoblinger vil avsluttes umiddelbart.", + "OptionDisableUserHelp": "Serveren vil ikke godta noen tilkoblinger fra denne brukeren. Eksisterende tilkoblinger vil avsluttes umiddelbart.", "OptionDislikes": "Misliker", "OptionDisplayFolderView": "Vis en mappevisning for å vise enkle mediemapper", "OptionDisplayFolderViewHelp": "Vis mapper ved siden av andre mediebibliotek. Dette kan være nyttig hvis du vil ha en enkel mappevisning.", @@ -796,7 +796,7 @@ "OptionHideUserFromLoginHelp": "Praktisk for private eller skjulte administratorer. Brukeren vil måtte logge inn manuelt ved å skrive inn brukernavn og passord.", "OptionHlsSegmentedSubtitles": "HLS-segmenterte undertekster", "OptionIgnoreTranscodeByteRangeRequests": "Ignorer byte range-forespørsler ved omkoding", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Hvis aktivert vil disse forespørslene bli besvart, men byte-range-hodet vil ignoreres.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Disse forespørslene bli besvart, men byte-range-hodet vil ignoreres.", "OptionImdbRating": "IMDb-vurdering", "OptionLikes": "Liker", "OptionMax": "Maks", @@ -807,9 +807,9 @@ "OptionOnInterval": "Per intervall", "OptionParentalRating": "Aldersgrense", "OptionPlainStorageFolders": "Vis alle mapper som enkle lagringsmapper", - "OptionPlainStorageFoldersHelp": "Hvis aktivert, vil alle mapper bli representert i DIDL som \"object.container.storageFolder\" istedet for en mer spesifikk type, som \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Alle mapper representeres i DIDL som \"object.container.storageFolder\" istedet for en mer spesifikk type, som \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Vis alle videoer som enkle videoelementer", - "OptionPlainVideoItemsHelp": "Hvis aktivert, blir alle videoer representert i DIDL som \"object.item.videoItem\" i stedet for en mer bestemt type, for eksempel \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "Alle videoer representerer i DIDL som \"object.item.videoItem\" i stedet for en mer bestemt type, for eksempel \"object.item.videoItem.movie\".", "OptionPlayCount": "Antall avspillinger", "OptionPlayed": "Avspilt", "OptionPremiereDate": "Premieredato", @@ -1057,7 +1057,7 @@ "General": "Generelt", "ChangingMetadataImageSettingsNewContent": "Endringer gjort i innstillinger for metadata eller omslagsbilder vil kun gjelde nytt innhold i biblioteket ditt. For å endre eksisterende innhold, må du oppdatere dets metadata manuelt.", "DefaultSubtitlesHelp": "Undertekster lastes inn basert på flaggene \"standard\" og \"tvungen\" i videoens integrerte metadata. Språkpreferanser tas høyde for dersom flere valg er tilgjengelig.", - "DirectStreamHelp2": "Direktestrømming av en fil bruker veldig lite ressurser uten tap av videokvalitet.", + "DirectStreamHelp2": "Direktestrømming bruker veldig lite ressurser med minimalt tap av videokvalitet.", "DisplayInMyMedia": "Vis på hjem-skjermen", "DisplayInOtherHomeScreenSections": "Vis i seksjoner på hjem-skjermen, som f.eks. siste spilte media og fortsett å se", "EnableThemeSongsHelp": "Spill av temamusikk i bakgrunnen mens du blar i biblioteket.", @@ -1139,7 +1139,7 @@ "EnableNextVideoInfoOverlayHelp": "Vis informasjon om den neste videoen i spillelisten ved slutten av en video.", "ExtractChapterImagesHelp": "Uthenting av kapittelbilder vil gjøre det mulig for klienter å vise bilder i menyer for å velge kapitel. Denne prosessen kan være treg, ressurskrevende, og kan kreve flere gigabyte med lagringsplass. Prosessen kjører når videoer oppdages, samt som en daglig planlagt hendelse. Tidsplanen kan endres i innstillinger for planlagte hendelser. Det anbefales ikke at denne prosessen kjøres når det er mange aktive brukere innlogget.", "Extras": "Ekstramateriale", - "HeaderKodiMetadataHelp": "For å aktivere eller deaktivere NFO-metadata, gå til bibliotekoppsettet i Jellyfin og finn valgene for lagring av metadata.", + "HeaderKodiMetadataHelp": "For å aktivere eller deaktivere NFO-metadata, endre biblioteket og finn valgene for lagring av metadata.", "OptionArtist": "Artist", "HeaderPhotoAlbums": "Fotoalbum", "HeaderSecondsValue": "{0} sekunder", @@ -1172,7 +1172,7 @@ "LanNetworksHelp": "Kommaseparert liste over IP-adresser eller IP/nettverksmaske for nettverk som skal regnes som lokalt nettverk når båndbreddebegrensninger skal håndheves. Hvis satt, vil alle andre IP-adresser bli regnet for å være på eksternt nettverk og vil dermed være underlagt båndbreddebegrensningene for eksterne nettverk. Hvis tomt, vil kun serverens subnettverk bli regnet for å være på det lokale nettverket.", "LearnHowYouCanContribute": "Finn ut hvordan du kan bidra.", "SeriesYearToPresent": "{0} - Nå", - "LabelBaseUrlHelp": "Legger til en egendefinert undermappe til serverens nettadresse. For eksempel: http://example.com/<baseurl>", + "LabelBaseUrlHelp": "Legg til en egendefinert undermappe til serverens nettadresse. For eksempel: http://example.com/<baseurl>", "LabelFont": "Skrifttype:", "LabelMatchType": "Matchtype:", "OptionPosterCard": "Plakatkort", @@ -1188,7 +1188,7 @@ "EnableExternalVideoPlayers": "Eksterne videospillere", "EnableExternalVideoPlayersHelp": "En liste over eksterne spillere vil vises når du starter videoavspilling.", "EnableNextVideoInfoOverlay": "Vis informasjon om neste video under avspilling", - "ErrorDeletingItem": "Det oppstod en feil under sletting av elementet fra Jellyfin-serveren. Vennligst sørg for at Jellyfin-serveren har skrivetilgang til mappen og prøv igjen.", + "ErrorDeletingItem": "Det oppstod en feil under sletting av elementet fra serveren. Vennligst sørg for at Jellyfin har skrivetilgang til mappen og prøv igjen.", "ExtraLarge": "Ekstra stor", "FetchingData": "Henter ytterligere data", "Folders": "Mapper", @@ -1290,10 +1290,10 @@ "OnlyForcedSubtitles": "Kun tvungen", "OnlyForcedSubtitlesHelp": "Bare last inn undertekster merket som tvungen.", "OnlyImageFormats": "Bare bildeformater (VOBSUB, PGS, SUB)", - "OptionAllowMediaPlaybackTranscodingHelp": "Begrensning av tilgang til omkoding kan føre til avspillingsfeil i Jellyfin-apper grunnet at medieformater ikke støtes.", + "OptionAllowMediaPlaybackTranscodingHelp": "Begrensning av tilgang til omkoding kan føre til avspillingsfeil hos klienter grunnet at medieformater ikke støttes.", "OptionAllowSyncTranscoding": "Tillat nedlastning og synkronisering av media som krever omkoding", "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", - "OptionDownloadImagesInAdvanceHelp": "Som standard vil de fleste bilder kun lastes ned når de blir forespurt av en Jellyfin-app. Aktiver denne innstillingen for å laste ned alle bilder på forhånd når ny media oppdages. Dette kan føre til at skanning av biblioteket tar betydelig lenger tid.", + "OptionDownloadImagesInAdvanceHelp": "Som standard vil de fleste bilder kun lastes ned når de blir forespurt av en klient. Aktiver denne innstillingen for å laste ned alle bilder på forhånd når ny media oppdages. Dette kan føre til at skanning av biblioteket tar betydelig lenger tid.", "OptionDownloadLogoImage": "Logo", "OptionDownloadThumbImage": "Miniatyrbilde", "OptionHasTrailer": "Trailer", @@ -1416,7 +1416,7 @@ "MessageSyncPlayGroupDoesNotExist": "Kunne ikke bli med i gruppen fordi den ikke finnes.", "MessageSyncPlayPlaybackPermissionRequired": "Tillatelse for avspilling kreves.", "MessageSyncPlayNoGroupsAvailable": "Ingen grupper tilgjengelige. Begynn å spill noe først.", - "MessageSyncPlayGroupWait": "{0} bufrer...", + "MessageSyncPlayGroupWait": "{0} bufrer…", "MessageSyncPlayUserLeft": "{0} har forlatt gruppen.", "MessageSyncPlayUserJoined": "{0} har blitt med i gruppen.", "MessageSyncPlayDisabled": "SyncPlay deaktivert.", @@ -1437,7 +1437,7 @@ "LabelRequireHttps": "Krev HTTPS", "LabelStable": "Stabil", "LabelChromecastVersion": "Chromecast-versjon", - "LabelEnableHttpsHelp": "Aktiverer at serveren skal lytte på den valgte HTTPS-porten. Et gyldig sertifikat må også være konfigurert for at dette skal tre i kraft.", + "LabelEnableHttpsHelp": "Lytt på den valgte HTTPS-porten. Et gyldig sertifikat må også være angitt for at dette skal tre i kraft.", "LabelEnableHttps": "Aktiver HTTPS", "HeaderSyncPlayEnabled": "SyncPlay aktivert", "HeaderSyncPlaySelectGroup": "Bli med i en gruppe", @@ -1467,5 +1467,7 @@ "LabelRepositoryNameHelp": "Et egendefinert navn for å skille denne kilden fra andre som er lagt til på serveren din.", "ClearQueue": "Tøm køen", "ViewAlbumArtist": "Vis albumartist", - "StopPlayback": "Stopp avspilling" + "StopPlayback": "Stopp avspilling", + "NextTrack": "Hopp til neste", + "LabelUnstable": "Ustabil" } From cfc28c1b58d06393b449701ddd525600f8108991 Mon Sep 17 00:00:00 2001 From: WontTell Date: Thu, 13 Aug 2020 21:57:28 +0000 Subject: [PATCH 387/463] 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index f57a4a17d4..9f0422227a 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -1414,7 +1414,7 @@ "Backdrops": "Imágenes de fondo", "Backdrop": "Imagen de fondo", "Auto": "Auto", - "AuthProviderHelp": "Selecciona el proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", + "AuthProviderHelp": "Selecciona un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", "Audio": "Audio", "AspectRatio": "Relación de aspecto", "AskAdminToCreateLibrary": "Pide a un administrador crear una biblioteca.", @@ -1472,7 +1472,7 @@ "LabelUnstable": "Inestable", "Preview": "Vista previa", "SubtitleVerticalPositionHelp": "Número de línea donde aparece el texto. Números positivos representan de arriba hacia abajo. Números negativos representan de abajo hacia arriba.", - "LabelSubtitleVerticalPosition": "Posición Vertical:", + "LabelSubtitleVerticalPosition": "Posición vertical:", "PreviousTrack": "Saltar al anterior", "MessageGetInstalledPluginsError": "Ocurrió un error buscando la lista de plugins instalados.", "MessagePluginInstallError": "Ocurrió un error instalando el plugin." From 844262e8a00d91bfaf5c6809c5775607a6b257f8 Mon Sep 17 00:00:00 2001 From: Marius Lindvall Date: Thu, 13 Aug 2020 22:00:53 +0000 Subject: [PATCH 388/463] =?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 | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/strings/nb.json b/src/strings/nb.json index 814490cabc..9a31970159 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -824,7 +824,7 @@ "OptionResumable": "Kan gjenopptas", "OptionRuntime": "Spilletid", "OptionSaveMetadataAsHidden": "Lagre metadata og bilder som skjulte filer", - "OptionSaveMetadataAsHiddenHelp": "Endring av denne innstillingen vil gjelde ny metadata som lagres fra nå av. Eksisterende metadata vil bli oppdatert neste gang de lagres av Jellyfin-serveren.", + "OptionSaveMetadataAsHiddenHelp": "Endring av denne innstillingen vil gjelde ny metadata som lagres fra nå av. Eksisterende metadata vil bli oppdatert neste gang de lagres av serveren.", "OptionSpecialEpisode": "Spesialepisoder", "OptionSubstring": "Deltekst", "OptionTrackName": "Låtnavn", @@ -860,9 +860,9 @@ "PleaseAddAtLeastOneFolder": "Vennligst legg til minst en mappe til dette biblioteket ved å trykke på Legg til-knappen.", "PleaseConfirmPluginInstallation": "Klikk på OK for å bekrefte at du har lest ovenfor og ønsker å fortsette med installasjon av programtillegget.", "PleaseEnterNameOrId": "Vennligst skriv et navn eller en ekstern ID.", - "PleaseRestartServerName": "Vennligst start Jellyfin-serveren på nytt - {0}.", + "PleaseRestartServerName": "Vennligst start Jellyfin på nytt på {0}.", "PleaseSelectTwoItems": "Vennligst velg minst to elementer.", - "MessagePluginInstalled": "Programtillegget ble installert. Jellyfin-serveren må startes på nytt for at endringene skal tre i kraft.", + "MessagePluginInstalled": "Programtillegget ble installert. Serveren må startes på nytt for at endringene skal tre i kraft.", "PreferEmbeddedTitlesOverFileNames": "Foretrekk integrerte titler fremfor filnavn", "PreferEmbeddedTitlesOverFileNamesHelp": "Dette avgjør standard visningstittel når det ikke er noen metadata eller lokale metadata tilgjengelige.", "Premieres": "Premierer", @@ -883,7 +883,7 @@ "RecordingScheduled": "Opptak planlagt.", "Recordings": "Opptak", "Refresh": "Oppdater", - "RefreshDialogHelp": "Metadata blir oppdatert basert på innstillinger og internett-tjenester som er aktivert i dashbordet for Jellyfin-serveren.", + "RefreshDialogHelp": "Metadata blir oppdatert basert på innstillinger og internett-tjenester som er aktivert i dashbordet.", "RefreshMetadata": "Oppdater metadata", "RefreshQueued": "Oppdatering satt i kø.", "ReleaseDate": "Utgivelsesdato", @@ -917,10 +917,10 @@ "SeriesDisplayOrderHelp": "Sorter episoder etter sendt dato, DVD-rekkefølge eller absolutt nummerering.", "SeriesRecordingScheduled": "Serieopptak planlagt.", "SeriesSettings": "Serieinnstillinger", - "ServerNameIsRestarting": "Jellyfin-server - {0} starter om.", - "ServerNameIsShuttingDown": "Jellyfin-server - {0} avsluttes.", - "ServerRestartNeededAfterPluginInstall": "Jellyfin-serveren trenger en omstart etter installasjon av et programtillegg.", - "ServerUpdateNeeded": "Denne Jellyfin-serveren må oppdateres. For å laste ned siste versjon, vennligst besøk {0}", + "ServerNameIsRestarting": "Serveren på {0} starter om.", + "ServerNameIsShuttingDown": "Serveren på {0} avsluttes.", + "ServerRestartNeededAfterPluginInstall": "Jellyfin trenger en omstart etter installasjon av et programtillegg.", + "ServerUpdateNeeded": "Denne serveren må oppdateres. For å laste ned siste versjon, vennligst besøk {0}", "Settings": "Innstillinger", "SettingsSaved": "Innstillinger lagret.", "SettingsWarning": "Endring av disse verdiene kan føre til ustabilitet eller tilkoblingsfeil. Hvis du opplever problemer anbefaler vi at du endrer dem tilbake til standardverdiene.", @@ -1304,7 +1304,7 @@ "OptionProfileVideo": "Video", "OptionProtocolHls": "HTTP-direktestrømming", "OptionProtocolHttp": "HTTP", - "PasswordResetProviderHelp": "Velg hvilken metode for tilbakestilling av passord som skal benyttes når denne brukeren ber om å tilbakestille passordet", + "PasswordResetProviderHelp": "Velg hvilken metode for tilbakestilling av passord som skal benyttes når denne brukeren ber om å tilbakestille passordet.", "PerfectMatch": "Perfekt match", "PlaybackData": "Avspillingsdata", "PlayCount": "Antall avspillinger", @@ -1390,7 +1390,7 @@ "LastSeen": "Sist sett {0}", "PersonRole": "som {0}", "ListPaging": "{0}-{1} av {2}", - "WriteAccessRequired": "Jellyfin Server krever skrivetilgang til denne mappen. Vennligst påse at skrivetilgang er gitt og prøv igjen.", + "WriteAccessRequired": "Jellyfin krever skrivetilgang til denne mappen. Vennligst påse at skrivetilgang er gitt og prøv igjen.", "PathNotFound": "Banen ble ikke funnet. Påse at banen er gyldig og prøv igjen.", "YadifBob": "YADIF Bob", "Yadif": "YADIF", @@ -1469,5 +1469,11 @@ "ViewAlbumArtist": "Vis albumartist", "StopPlayback": "Stopp avspilling", "NextTrack": "Hopp til neste", - "LabelUnstable": "Ustabil" + "LabelUnstable": "Ustabil", + "Preview": "Forhåndsvis", + "SubtitleVerticalPositionHelp": "Linjenummer hvor teksten dukker opp. Positive tall indikerer ovenfra og ned. Negative tall indikerer nedenfra og opp.", + "LabelSubtitleVerticalPosition": "Vertikal posisjon:", + "PreviousTrack": "Hopp til forrige", + "MessageGetInstalledPluginsError": "En feil oppstod under henting av listen over installerte tillegg.", + "MessagePluginInstallError": "En feil oppstod under installasjon av tillegget." } From 79215f76b66643bc92b226f66fe5ef9d15ec59e4 Mon Sep 17 00:00:00 2001 From: WontTell Date: Thu, 13 Aug 2020 22:06:42 +0000 Subject: [PATCH 389/463] 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 9f0422227a..c50a878b46 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -1474,6 +1474,6 @@ "SubtitleVerticalPositionHelp": "Número de línea donde aparece el texto. Números positivos representan de arriba hacia abajo. Números negativos representan de abajo hacia arriba.", "LabelSubtitleVerticalPosition": "Posición vertical:", "PreviousTrack": "Saltar al anterior", - "MessageGetInstalledPluginsError": "Ocurrió un error buscando la lista de plugins instalados.", - "MessagePluginInstallError": "Ocurrió un error instalando el plugin." + "MessageGetInstalledPluginsError": "Ocurrió un error buscando la lista de complementos instalados.", + "MessagePluginInstallError": "Ocurrió un error instalando el complemento." } From c6881e6f311915bc69024f4632bfc18016f67f80 Mon Sep 17 00:00:00 2001 From: WontTell Date: Thu, 13 Aug 2020 22:08:32 +0000 Subject: [PATCH 390/463] 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 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index c50a878b46..34506b0ce7 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -158,7 +158,7 @@ "OptionPoster": "Póster", "OptionPlayed": "Reproducido", "OptionPlayCount": "Contador de reproducciones", - "OptionPlainVideoItemsHelp": "Todos los videos serán representados en DIDL como «object.item.videoItem» en vez de un tipo más específico, como «object.item.videoItem.movie».", + "OptionPlainVideoItemsHelp": "Todos los videos serán representados en DIDL como «object.item.videoItem» en lugar de un tipo más específico, como «object.item.videoItem.movie».", "OptionPlainVideoItems": "Mostrar todos los videos como elementos de video simples", "OptionPlainStorageFoldersHelp": "Todos las carpetas serán representadas en DIDL como «object.container.storageFolder» en lugar de un tipo más específico, como «object.container.person.musicArtist».", "OptionPlainStorageFolders": "Mostrar todas las carpetas como carpetas de almacenamiento simples", @@ -208,7 +208,7 @@ "OptionDownloadPrimaryImage": "Principal", "OptionDownloadMenuImage": "Menú", "OptionDownloadLogoImage": "Logo", - "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes se descargan cuando son solicitadas por un cliente. Habilita esta opción para descargarlas todas por por adelantado a medida que se agreguen nuevos medios. Esto podría causar que los escaneos de bibliotecas sean significativamente más largos.", + "OptionDownloadImagesInAdvanceHelp": "Por defecto, la mayoría de las imágenes se descargan cuando son solicitadas por un cliente. Habilita esta opción para descargarlas todas por adelantado, a medida que se agreguen nuevos medios. Esto podría causar que los escaneos de bibliotecas sean significativamente más largos.", "OptionDownloadImagesInAdvance": "Descargar las imágenes con antelación", "OptionDownloadDiscImage": "Disco", "OptionDownloadBoxImage": "Caja", @@ -237,7 +237,7 @@ "OptionBlockChannelContent": "Contenido de canales de Internet", "OptionBlockBooks": "Libros", "OptionBanner": "Banner", - "OptionAutomaticallyGroupSeriesHelp": "Series que estén repartidas en múltiples carpetas dentro de esta biblioteca serán fusionadas en una sola serie.", + "OptionAutomaticallyGroupSeriesHelp": "Series que estén repartidas en múltiples carpetas dentro de esta biblioteca serán automáticamente fusionadas en una sola serie.", "OptionAutomaticallyGroupSeries": "Fusionar automáticamente series esparcidas a través de múltiples carpetas", "OptionAutomatic": "Automático", "OptionAuto": "Automático", @@ -250,7 +250,7 @@ "OptionAllowRemoteSharedDevicesHelp": "Los dispositivos DLNA se considerarán compartidos hasta que un usuario comience a controlarlos.", "OptionAllowRemoteSharedDevices": "Permitir control remoto de dispositivos compartidos", "OptionAllowRemoteControlOthers": "Permitir control remoto de otros usuarios", - "OptionAllowMediaPlaybackTranscodingHelp": "Restringir el acceso a la transcodificación podría causar fallas en reproducción en las aplicaciones debido a formatos de medios no soportados.", + "OptionAllowMediaPlaybackTranscodingHelp": "Restringir el acceso a la transcodificación podría causar fallas en la reproducción en los clientes debido a formatos de medios no soportados.", "OptionAllowMediaPlayback": "Permitir reproducción de medios", "OptionAllowManageLiveTv": "Permitir gestión de grabación de TV en vivo", "OptionAllowLinkSharingHelp": "Solo son compartidas páginas web que contienen información sobre los medios. Los archivos de medios nunca son compartidos públicamente. Los compartidos tienen un límite de tiempo y expirarán después de {0} días.", From a15eda7d3f3f94147b7025ce90630c5984fd8eea Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Thu, 13 Aug 2020 23:29:42 +0000 Subject: [PATCH 391/463] Translated using Weblate (Slovak) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sk/ --- src/strings/sk.json | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/strings/sk.json b/src/strings/sk.json index 9968b15c6a..7aef8eb515 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -10,7 +10,7 @@ "AllLanguages": "Všetky jazyky", "AllLibraries": "Všetky knižnice", "AllowMediaConversion": "Povoliť konverziu médií", - "AllowRemoteAccess": "Povoliť vzdialené pripojenia k tomuto Jellyfin serveru.", + "AllowRemoteAccess": "Povoliť vzdialené pripojenia k tomuto serveru.", "AllowRemoteAccessHelp": "Nezaškrtnuté znamená, že všetky vzdialené pripojenia budú blokované.", "AlwaysPlaySubtitles": "Vždy prehrať", "AnyLanguage": "Akýkoľvek jazyk", @@ -491,7 +491,7 @@ "MessageConfirmProfileDeletion": "Ste si istý, že chcete zmazať tento profil?", "MessageConfirmRecordingCancellation": "Zrušiť nahrávanie?", "MessageConfirmRemoveMediaLocation": "Ste si istý, že chcete odobrať toto umiestnenie?", - "MessageConfirmRestart": "Ste si istý, že chcete reštartovať Jellyfin Server?", + "MessageConfirmRestart": "Ste si istý, že chcete reštartovať Jellyfin?", "MessageConfirmShutdown": "Ste si istý, že chcete vypnúť server?", "MessageEnablingOptionLongerScans": "Povolenie tejto možnosti môže mať za následok podstatne dlhšie skenovania knižníc.", "MessageFileReadError": "Pri čítaní súboru nastala chyba.", @@ -647,9 +647,9 @@ "Played": "Prehrané", "PleaseAddAtLeastOneFolder": "Pridajte prosím aspoň jeden priečinok do tejto knižnice kliknutím na tlačidlo Pridať.", "PleaseEnterNameOrId": "Prosím, zadajte meno alebo externé ID.", - "PleaseRestartServerName": "Prosím reštartujte Jellyfin Server - {0}.", + "PleaseRestartServerName": "Prosím reštartujte Jellyfin na {0}.", "PleaseSelectTwoItems": "Vyberte prosím aspoň dve položky.", - "MessagePluginInstalled": "Rozšírenie bolo úspešne nainštalované. Je potrebný reštart Jellyfin Server aby sa prejavili zmeny.", + "MessagePluginInstalled": "Rozšírenie bolo úspešne nainštalované. Je potrebný reštart servera aby sa prejavili zmeny.", "Premiere": "Premiéra", "Premieres": "Premiéry", "Previous": "Predchádzajúce", @@ -691,10 +691,10 @@ "SendMessage": "Poslať správu", "Series": "Seriály", "SeriesSettings": "Nastavenia série", - "ServerNameIsRestarting": "Jellyfin Server - {0} sa reštartuje.", - "ServerNameIsShuttingDown": "Jellyfin Server - {0} sa vypína.", - "ServerRestartNeededAfterPluginInstall": "Po inštalácii zásuvného modulu bude potrebný reštart Jellyfin servera.", - "ServerUpdateNeeded": "Tento Jellyfin server treba aktualizovať. Najnovšiu verziu nájdete na {0}", + "ServerNameIsRestarting": "Server {0} sa reštartuje.", + "ServerNameIsShuttingDown": "Server {0} sa vypína.", + "ServerRestartNeededAfterPluginInstall": "Jellyfin bude nutné po inštalácií zásuvného modulu reštartovať.", + "ServerUpdateNeeded": "Tento server je nutné aktualizovať. Pokiaľ chcete stiahnuť najnovšiu verziu, navštívte prosím {0}", "Settings": "Nastavenia", "SettingsSaved": "Nastavenia uložené.", "Share": "Zdieľať", @@ -859,7 +859,7 @@ "EnableCinemaMode": "Kino režim", "EnableNextVideoInfoOverlay": "Zobraziť informácie o nasledujúcom videu počas prehrávania", "EnableNextVideoInfoOverlayHelp": "Na konci videa sa zobrazia informácie o nasledujúcom videu v aktuálnom playliste.", - "ErrorAddingMediaPathToVirtualFolder": "Pri pridávaní cesty k mediám nastala chyba. Uistite sa prosím, že cesta je platná, a že proces Jellyfin servera má prístup k umiestneniu.", + "ErrorAddingMediaPathToVirtualFolder": "Pri pridávaní cesty k mediám nastala chyba. Uistite sa prosím, že cesta je platná, a že Jellyfin má prístup k umiestneniu.", "HeaderAddScheduledTaskTrigger": "Pridať spúšťač", "HeaderAddToPlaylist": "Pridať do playlistu", "HeaderAlert": "Upozornenie", @@ -1063,7 +1063,7 @@ "ErrorSavingTvProvider": "Nastala chyba pri ukladaní sprostredkovateľa TV vysielania. Prosím, uistite sa, že je prístupný a skúste to znova.", "ErrorPleaseSelectLineup": "Prosím, vyberte lineup a skúste to znova. Pokiaľ nie je k dispozícií žiaden lineup, skontrolujte, či je vaše používateľské meno, heslo a PSČ správne.", "ErrorGettingTvLineups": "Nastala chyba pri sťahovaní rozpisov TV programov. Prosím, uistite sa že vaše informácie sú správne a skúste to znova.", - "ErrorDeletingItem": "Nastala chyba pri vymazávaní položky z Jellyfin Servera. Prosím, overte, či Jellyfin Server má práva pre zapisovanie do priečinku s médiami a skúste to znova.", + "ErrorDeletingItem": "Nastala chyba pri vymazávaní položky zo servera. Prosím, overte, či Jellyfin má práva pre zapisovanie do priečinku s médiami a skúste to znova.", "ErrorAddingXmlTvFile": "Nastala chyba pri prístupe k XMLTV súboru. Prosím, uistite sa že súbor existuje a skúste to znova.", "ErrorAddingTunerDevice": "Nastala chyba pri pridávaní tunera. Prosím, uistite sa že je dostupný a skúste to znova.", "EnableThemeVideosHelp": "Prehrať videá úvodných zvučiek na pozadí počas prechádzania knižnice.", @@ -1080,7 +1080,7 @@ "CustomDlnaProfilesHelp": "Vytvorte si vlastný profil pre nové zariadenie alebo pre prepísanie systémového profilu.", "CopyStreamURLSuccess": "URL úspešne skopírovaná.", "CopyStreamURL": "Kopírovať URL adresu streamu", - "ConfigureDateAdded": "Konfigurácia, ako sa pridáva dátum, je definovaná v dashboarde Jellyfin Servera pod nastavením Knižnice", + "ConfigureDateAdded": "Konfigurácia pridávania dátumu je definovaná v dashboarde pod nastavením knižnice", "ColorTransfer": "Farba prenosu", "ColorPrimaries": "Primárna farba", "CinemaModeConfigurationHelp": "Kino režim prináša zážitok ako z kina priamo do vašej obývačky s možnosťou prehrať trailery a vlastné intrá pred hlavným programom.", @@ -1139,11 +1139,11 @@ "PleaseConfirmPluginInstallation": "Prosím, kliknite na OK pre potvrdenie, že ste prečítali text uvedený vyššie a chcete pokračovať v inštalácií zásuvného modulu.", "PlaybackData": "Podrobnosti prehrávania", "PlayAllFromHere": "Prehrať všetko odtiaľto", - "PasswordResetProviderHelp": "Zvoľte poskytovateľa obnovy hesla, ktorý bude použitý, keď používateľ požiada o obnovu hesla", + "PasswordResetProviderHelp": "Zvoľte poskytovateľa obnovy hesla, ktorý bude použitý, keď používateľ požiada o obnovu hesla.", "OptionThumbCard": "Náhľadové kartičky", "OptionSubstring": "Podreťazec", "OptionSpecialEpisode": "Špeciály", - "OptionSaveMetadataAsHiddenHelp": "Zmena bude platiť pre nové metadáta uložené v budúcnosti. Existujúce metadáta budú aktualizované na ďalší raz, akonáhle budú uložené Jellyfin Serverom.", + "OptionSaveMetadataAsHiddenHelp": "Zmena bude platiť pre nové metadáta uložené v budúcnosti. Existujúce metadáta budú aktualizované na ďalší raz, akonáhle budú uložené serverom.", "OptionResElement": "Zdrojový element", "OptionRequirePerfectSubtitleMatchHelp": "Vyžadovanie dokonalej zhody filtruje titulky tak, aby obsahovali iba tie ktoré boli odskúšané a overené pre váš konkrétny video súbor. Zrušenie zaškrtnutia tohoto zvýši pravdepodobnosť sťahovania tituliek, ale zvýši šancu chybného časovania alebo nesprávneho textu tituliek.", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Toto je vyžadované pre niektoré zariadenia, ktoré nevedia moc dobre časovo pretáčať.", @@ -1192,7 +1192,7 @@ "MessageUnsetContentHelp": "Obsah bude zobrazený ako jednoduché priečinky. Pre lepšie výsledky použite manažér metadát na nastavenie typu obsahu podpriečinkov.", "MessageUnableToConnectToServer": "Nie sme schopný sa aktuálne pripojiť k vybranému serveru. Prosím, uistite sa že je spustený a skúste to znovu.", "MessageReenableUser": "Pozrite nižšie pre znovu-povolenie", - "MessagePluginInstallDisclaimer": "Zásuvné moduly vytvorené členmi Jellyfin komunity sú úžasná cesta ako zlepšiť váš Jellyfin zážitok s dodatočnými funkciami a benefitmi. Pred inštaláciou sa prosím oboznámte s efektmi, ktoré môžu mať vplyv na váš Jellyfin Server, ako dlhšie prehľadávanie knižníc, dodatočné procesy na pozadí a zníženie stability systému.", + "MessagePluginInstallDisclaimer": "Zásuvné moduly vytvorené členmi komunity sú úžasná cesta ako zlepšiť váš zážitok s dodatočnými funkciami a benefitmi. Pred inštaláciou sa prosím oboznámte s efektmi, ktoré môžu mať vplyv na váš server, ako dlhšie prehľadávanie knižníc, dodatočné procesy na pozadí a zníženie stability systému.", "MessagePluginConfigurationRequiresLocalAccess": "Pre konfiguráciu tohoto zásuvného modulu sa prihláste priamo na lokálny server.", "MessagePlayAccessRestricted": "Prehrávanie tohoto obsahuje je aktuálne obmedzené. Prosím, kontaktujte svojho administrátora servera pre viac informácií.", "MessagePasswordResetForUsers": "Nasledujúci používatelia si nechali obnoviť heslo. Teraz sa môžu prihlásiť s PIN kódom, ktorý použijú k vykonaniu obnovy hesla.", @@ -1204,11 +1204,11 @@ "MessageForgotPasswordFileCreated": "Nasledujúci súbor bol vytvorený na vašom serveri a obsahuje inštrukcie, ako postupovať:", "MessageDownloadQueued": "Sťahovanie zaradené do fronty.", "MessageDirectoryPickerLinuxInstruction": "Pre Linuxové distribúcie Arch Linux, CentOS, Debian, Fedora, openSUSE alebo Ubuntu, je potrebné udeliť používateľovi služby oprávnenie aspoň na čítanie.", - "MessageDirectoryPickerBSDInstruction": "Pre BSD možno budete potrebovať nakonfigurovať úložisko priamo vo vašom FreeNAS Jail aby k nim mohol pristupovať Jellyfin.", + "MessageDirectoryPickerBSDInstruction": "Pre BSD možno budete potrebovať nakonfigurovať úložisko priamo vo vašom FreeNAS Jail aby mohol Jellyfin pristupovať k vašim médiám.", "MessageDeleteTaskTrigger": "Naozaj chcete vymazať tento trigger úlohy?", "MessageCreateAccountAt": "Vytvoriť účet v {0}", "MessageContactAdminToResetPassword": "Prosím, kontaktujte vášho systémového administrátora k obnoveniu hesla.", - "MessageConfirmRevokeApiKey": "Ste si istý, že chcete odvolať tento API kľúč? Aplikácie pripojené k Jellyfin Serveru budú rázne ukončené.", + "MessageConfirmRevokeApiKey": "Ste si istý, že chcete odvolať tento API kľúč? Aplikácie pripojené k tomuto serveru budú rázne ukončené.", "Menu": "Menu", "MediaIsBeingConverted": "Médium sa konvertuje do formátu, ktorý je kompatibilný so zariadením, kde sa médium prehráva.", "MediaInfoStreamTypeEmbeddedImage": "Vložený obrázok", @@ -1288,7 +1288,7 @@ "LabelPersonRoleHelp": "Príklad: Vodič nákladiaku so zmrzlinou", "LabelPasswordResetProvider": "Poskytovateľ obnovy hesla:", "LabelParentNumber": "Číslo rodiča:", - "LabelOptionalNetworkPathHelp": "Pokiaľ je tento priečinok zdielaný vo vašej sieti, môže poskytovanie cesty k zdielanému priečinku umožniť Jellyfin aplikáciám priamy prístup k mediálnym súborom. Napríklad, {0} alebo {1}.", + "LabelOptionalNetworkPathHelp": "Pokiaľ je tento priečinok zdielaný vo vašej sieti, môže poskytovanie cesty k zdielanému priečinku umožniť klientom priamy prístup k mediálnym súborom. Napríklad, {0} alebo {1}.", "LabelNumberOfGuideDaysHelp": "Stiahnutím viacerých dní umožní sprievodca naplánovať a zobraziť viac vecí do budúcnosti, sťahovanie však môže trvať dlhšie. Auto vyberie možnosť podľa počtu kanálov.", "LabelNumberOfGuideDays": "Počet dní pre stiahnutie dát sprievodcu:", "LabelMusicStreamingTranscodingBitrateHelp": "Špecifikujte maximálny dátový tok pre streamovanie hudby.", @@ -1339,12 +1339,12 @@ "LabelEnableDlnaPlayTo": "Povoliť DLNA prehrávanie", "LabelEnableDlnaDebugLoggingHelp": "Vytvára veľké súbory s logami a mal by sa použiť len v prípade potreby odstraňovania problémov.", "LabelEnableDlnaDebugLogging": "Povoliť loggovanie DLNA debugu", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Určuje dobu trvania v sekundách medzi SSDP vyhľadávaniami vykonanými Jellyfinom.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Určuje dobu trvania v sekundách medzi SSDP vyhľadávaniami.", "LabelEnableDlnaClientDiscoveryInterval": "Interval pre objavenie klienta", "LabelEnableAutomaticPortMapHelp": "Automatické namapovanie vejerného portu na lokálny port serveru cez UPnP. Toto nemusí fungovať so všetkými modelmi routerov alebo sieťových konfigurácií. Zmeny sa vykonajú až po reštarte servera.", "LabelEmbedAlbumArtDidlHelp": "Niektoré zariadenia preferujú túto metódu pre získavanie obrázku albumu. Ostatným môže zlyhať prehrávanie pokiaľ je táto možnosť povolená.", "LabelBlastMessageIntervalHelp": "Určuje dobu v sekundách medzi vysielaniami správ o serveri.", - "LabelBindToLocalNetworkAddressHelp": "Prepísať lokálnu IP adresu http serveru. Pokiaľ zostane prázdna, server sa naviaže na všetky dostupné adresy. Pri zmene tejto hodnoty sa vyžaduje reštart Jellyfin Servera.", + "LabelBindToLocalNetworkAddressHelp": "Prepísať lokálnu IP adresu http serveru. Pokiaľ zostane prázdna, server sa naviaže na všetky dostupné adresy. Pri zmene tejto hodnoty sa vyžaduje reštart.", "LabelAlbumArtPN": "Obrázok albumu PN:", "LabelAlbumArtMaxWidthHelp": "Maximálne rozlíšenie obrázku albumu prostredníctvom upnp:albumArtURI.", "LabelAlbumArtMaxHeightHelp": "Maximálne rozlíšenie obrázku albumu prostredníctvom upnp:albumArtURI.", @@ -1380,7 +1380,7 @@ "LastSeen": "Naposledy videný {0}", "PersonRole": "ako {0}", "ListPaging": "{0}-{1} z {2}", - "WriteAccessRequired": "Jellyfin Server vyžaduje práva na zapisovanie do tohoto priečinku. Prosím, uistite sa že má práva na zapisovanie a skúste to znova.", + "WriteAccessRequired": "Server vyžaduje práva na zapisovanie do tohoto priečinku. Prosím, uistite sa že má práva na zapisovanie a skúste to znova.", "PathNotFound": "Táto cesta nebola nájdená. Prosím, uistite sa že cesta je správna a skúste to znovu.", "YadifBob": "YADIF Bob", "Yadif": "YADIF", @@ -1444,7 +1444,7 @@ "SyncPlayAccessHelp": "Vyberte úroveň prístupu pre tohto používateľa k funkcií SyncPlay. SyncPlay umožňuje zosynchronizovať prehrávanie s ostatnými zariadeniami.", "EnableDetailsBannerHelp": "Zobrazí banner na vrchnej časti detailu položky.", "EnableDetailsBanner": "Detail banneru", - "EnableBlurHashHelp": "Obrázky, ktoré sa stále načítavajú budú zobrazené ako dočasný obrázok s rozmazaným pozadím", + "EnableBlurHashHelp": "Obrázky, ktoré sa stále načítavajú budú zobrazené ako dočasný obrázok s rozmazaným pozadím.", "EnableBlurHash": "Povoliť obrázok s rozmazaným pozadím pre chýbajúce obrázky", "ShowMore": "Zobraziť viac", "ShowLess": "Zobraziť menej", From d544c7cb37cf47fe65b9fc0ddac3d0e8dd7325c6 Mon Sep 17 00:00:00 2001 From: WontTell Date: Thu, 13 Aug 2020 23:29:37 +0000 Subject: [PATCH 392/463] 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 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/es_419.json b/src/strings/es_419.json index 34506b0ce7..4014556e9e 100644 --- a/src/strings/es_419.json +++ b/src/strings/es_419.json @@ -1000,7 +1000,7 @@ "HeaderSelectServerCachePath": "Seleccionar ruta para la caché del servidor", "HeaderSelectServer": "Seleccionar servidor", "HeaderSelectPath": "Seleccionar ruta", - "HeaderSelectMetadataPathHelp": "Explora o escribe la ruta donde deseas guardar los metadatos. Se tienen que tener permisos de escritura en esa carpeta.", + "HeaderSelectMetadataPathHelp": "Explora o introduce la ruta que deseas usar para los metadatos. Se debe tener permisos de escritura en esa carpeta.", "HeaderSelectMetadataPath": "Selecciona la ruta para los metadatos", "HeaderSelectCertificatePath": "Selecciona la ruta del certificado", "HeaderSecondsValue": "{0} segundos", @@ -1283,7 +1283,7 @@ "Disabled": "Desactivado", "Directors": "Directores", "DirectStreaming": "Transmisión directa", - "DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco poder de procesamiento sin ninguna perdida en la calidad de video.", + "DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco poder de procesamiento sin pérdida en la calidad de video.", "DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video será reempaquetado sobre la marcha antes de ser enviado al dispositivo.", "DirectPlaying": "Reproducción directa", "DeviceAccessHelp": "Esto solo se aplica a los dispositivos que pueden ser identificados de manera única y no impedirá el acceso desde navegadores. Filtrar el acceso a los dispositivos de los usuarios les impedirá usar nuevos dispositivos hasta que hayan sido aprobados aquí.", @@ -1318,7 +1318,7 @@ "HeaderSeriesStatus": "Estado de la serie", "HeaderSeriesOptions": "Opciones de serie", "HeaderSendMessage": "Enviar mensaje", - "HeaderSelectTranscodingPathHelp": "Explora o escribe la ruta para los archivos de transcodificación. Se tienen que tener permisos de escritura en esa carpeta.", + "HeaderSelectTranscodingPathHelp": "Explora o introduce la ruta para los archivos de transcodificación. Se debe tener permisos de escritura en esa carpeta.", "HeaderSelectTranscodingPath": "Selecciona la ruta para los archivos temporales de transcodificación", "ConfirmDeleteItems": "Eliminar estos elementos los eliminará tanto del sistema como de tu biblioteca de medios. ¿Estás seguro de querer continuar?", "ConfirmDeleteItem": "Eliminar este elemento lo eliminará tanto del sistema como de tu biblioteca de medios. ¿Estás seguro de querer continuar?", From 195430ceff8125b80def5b94f0d203980e085b4a Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Fri, 14 Aug 2020 05:48:59 +0200 Subject: [PATCH 393/463] Use ES6 imports for clientUtils --- src/scripts/clientUtils.js | 62 +++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index b576f0504e..719d722a2b 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -1,3 +1,4 @@ + export function getCurrentUser() { return window.ApiClient.getCurrentUser(false); } @@ -5,7 +6,7 @@ export function getCurrentUser() { //TODO: investigate url prefix support for serverAddress function export function serverAddress() { if (AppInfo.isNativeApp) { - var apiClient = window.ApiClient; + const apiClient = window.ApiClient; if (apiClient) { return apiClient.serverAddress(); @@ -14,15 +15,15 @@ export function serverAddress() { return null; } - var urlLower = window.location.href.toLowerCase(); - var index = urlLower.lastIndexOf('/web'); + const urlLower = window.location.href.toLowerCase(); + const index = urlLower.lastIndexOf('/web'); if (index != -1) { return urlLower.substring(0, index); } - var loc = window.location; - var address = loc.protocol + '//' + loc.hostname; + const loc = window.location; + let address = loc.protocol + '//' + loc.hostname; if (loc.port) { address += ':' + loc.port; @@ -32,7 +33,7 @@ export function serverAddress() { } export function getCurrentUserId() { - var apiClient = window.ApiClient; + const apiClient = window.ApiClient; if (apiClient) { return apiClient.getCurrentUserId(); @@ -48,7 +49,7 @@ export function onServerChanged(userId, accessToken, apiClient) { export function logout() { ConnectionManager.logout().then(function () { - var loginPage; + let loginPage; if (AppInfo.isNativeApp) { loginPage = 'selectserver.html'; @@ -80,39 +81,47 @@ export function navigate(url, preserveQueryString) { throw new Error('url cannot be null or empty'); } - var queryString = getWindowLocationSearch(); + const queryString = getWindowLocationSearch(); if (preserveQueryString && queryString) { url += queryString; } return new Promise(function (resolve, reject) { - require(['appRouter'], function (appRouter) { + import('appRouter').then(({default: appRouter}) => { return appRouter.show(url).then(resolve, reject); }); }); } export function processPluginConfigurationUpdateResult() { - require(['loading', 'toast'], function (loading, toast) { - loading.hide(); - toast.default(Globalize.translate('MessageSettingsSaved')); - }); + Promise.all([ + import('loading'), + import('toast') + ]) + .then(([{default: loading}, {default: toast}]) => { + loading.hide(); + toast.default(Globalize.translate('MessageSettingsSaved')); + }); } export function processServerConfigurationUpdateResult(result) { - require(['loading', 'toast'], function (loading, toast) { - loading.hide(); - toast.default(Globalize.translate('MessageSettingsSaved')); - }); + Promise.all([ + import('loading'), + import('toast') + ]) + .then(([{default: loading}, {default: toast}]) => { + loading.hide(); + toast.default(Globalize.translate('MessageSettingsSaved')); + }); } export function processErrorResponse(response) { - require(['loading'], function (loading) { + import('loading').then(({default: loading}) => { loading.hide(); }); - var status = '' + response.status; + let status = '' + response.status; if (response.statusText) { status = response.statusText; @@ -126,14 +135,14 @@ export function processErrorResponse(response) { export function alert(options) { if (typeof options == 'string') { - return void require(['toast'], function (toast) { + return void import('toast').then(({default: toast}) => { toast.default({ text: options }); }); } - require(['alert'], function (alert) { + import('alert').then(({default: alert}) => { alert.default({ title: options.title || Globalize.translate('HeaderAlert'), text: options.message @@ -142,7 +151,7 @@ export function alert(options) { } export function capabilities(appHost) { - var capabilities = { + let capabilities = { PlayableMediaTypes: ['Audio', 'Video'], SupportedCommands: ['MoveUp', 'MoveDown', 'MoveLeft', 'MoveRight', 'PageUp', 'PageDown', 'PreviousLetter', 'NextLetter', 'ToggleOsd', 'ToggleContextMenu', 'Select', 'Back', 'SendKey', 'SendString', 'GoHome', 'GoToSettings', 'VolumeUp', 'VolumeDown', 'Mute', 'Unmute', 'ToggleMute', 'SetVolume', 'SetAudioStreamIndex', 'SetSubtitleStreamIndex', 'DisplayContent', 'GoToSearch', 'DisplayMessage', 'SetRepeatMode', 'SetShuffleQueue', 'ChannelUp', 'ChannelDown', 'PlayMediaSource', 'PlayTrailers'], SupportsPersistentIdentifier: self.appMode === 'cordova' || self.appMode === 'android', @@ -161,22 +170,19 @@ export function selectServer() { } export function hideLoadingMsg() { - 'use strict'; - require(['loading'], function(loading) { + import('loading').then(({default: loading}) => { loading.hide(); }); } export function showLoadingMsg() { - 'use strict'; - require(['loading'], function(loading) { + import('loading').then(({default: loading}) => { loading.show(); }); } export function confirm(message, title, callback) { - 'use strict'; - require(['confirm'], function(confirm) { + import('confirm').then(({default: confirm}) => { confirm(message, title).then(function() { callback(!0); }).catch(function() { From e05efaec4c6491777af4066db38ec638011e85ad Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Fri, 14 Aug 2020 04:45:17 +0000 Subject: [PATCH 394/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 95 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 3 deletions(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 1e594ffd71..8d4076c491 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1,5 +1,5 @@ { - "AddToPlayQueue": "வரிசையில் விளையாட சேர்க்கவும்", + "AddToPlayQueue": "இசைத்தல் வரிசையில் சேர்", "AddToCollection": "சேகரிப்பில் சேர்க்கவும்", "Add": "சேர்", "Actor": "நடிகர்", @@ -151,7 +151,7 @@ "ButtonNetwork": "வலைப்பின்னல்", "ButtonMore": "மேலும்", "ButtonManualLogin": "கைமுறை புகுபதிகை", - "ButtonLibraryAccess": "நூலக அணுகல்", + "ButtonLibraryAccess": "நூலக அனுமதி", "ButtonInfo": "தகவல்", "ButtonHome": "முகப்பு", "ButtonGuide": "வழிகாட்டி", @@ -164,5 +164,94 @@ "ChannelNumber": "சேனல் எண்", "ChannelNameOnly": "சேனல் {0} மட்டுமே", "ChannelAccessHelp": "இந்த பயனருடன் பகிர சேனல்களைத் தேர்ந்தெடுக்கவும். நிர்வாகிகள் மெட்டாடேட்டா நிர்வாகியைப் பயன்படுத்தி அனைத்து சேனல்களையும் திருத்த முடியும்.", - "ChangingMetadataImageSettingsNewContent": "மெட்டாடேட்டா அல்லது கலைப்படைப்பு பதிவிறக்க அமைப்புகளுக்கான மாற்றங்கள் உங்கள் நூலகத்தில் சேர்க்கப்பட்ட புதிய உள்ளடக்கத்திற்கு மட்டுமே பொருந்தும். இருக்கும் தலைப்புகளில் மாற்றங்களைப் பயன்படுத்த, அவற்றின் மெட்டாடேட்டாவை கைமுறையாக புதுப்பிக்க வேண்டும்." + "ChangingMetadataImageSettingsNewContent": "மெட்டாடேட்டா அல்லது கலைப்படைப்பு பதிவிறக்க அமைப்புகளுக்கான மாற்றங்கள் உங்கள் நூலகத்தில் சேர்க்கப்பட்ட புதிய உள்ளடக்கத்திற்கு மட்டுமே பொருந்தும். இருக்கும் தலைப்புகளில் மாற்றங்களைப் பயன்படுத்த, அவற்றின் மெட்டாடேட்டாவை கைமுறையாக புதுப்பிக்க வேண்டும்.", + "Episode": "அத்தியாயம்", + "EndsAtValue": "{0} இல் முடிகிறது", + "Ended": "முடிந்தது", + "EnableDetailsBannerHelp": "உருப்படி விவரங்கள் பக்கத்தின் மேலே ஒரு பேனர் படத்தைக் காண்பி.", + "EnableDetailsBanner": "விவரங்கள் பேனர்", + "EnableThemeVideosHelp": "நூலகத்தில் உலாவும்போது பின்னணியில் தீம் வீடியோக்களை இயக்குங்கள்.", + "EnableThemeVideos": "தீம் வீடியோக்கள்", + "EnableThemeSongsHelp": "நூலகத்தில் உலாவும்போது பின்னணியில் தீம் பாடல்களை இயக்குங்கள்.", + "EnableThemeSongs": "தீம் பாடல்கள்", + "EnableStreamLoopingHelp": "நேரடி ஸ்ட்ரீம்களில் சில வினாடிகள் மட்டுமே தரவு இருந்தால் தொடர்ந்து இயக்கப்பட வேண்டும். தேவைப்படாதபோது இதை இயக்குவது சிக்கல்களை ஏற்படுத்தக்கூடும்.", + "EnableStreamLooping": "ஆட்டோ-லூப் லைவ் ஸ்ட்ரீம்கள்", + "EnablePhotosHelp": "பிற ஊடக கோப்புகளுடன் படங்கள் கண்டறியப்பட்டு காண்பிக்கப்படும்.", + "EnablePhotos": "புகைப்படங்களைக் காண்பி", + "EnableNextVideoInfoOverlayHelp": "ஒரு வீடியோவின் முடிவில், தற்போதைய பிளேலிஸ்ட்டில் வரும் அடுத்த வீடியோ பற்றிய தகவலைக் காண்பி.", + "EnableNextVideoInfoOverlay": "பிளேபேக்கின் போது அடுத்த வீடியோ தகவலைக் காட்டு", + "EnableHardwareEncoding": "வன்பொருள் குறியாக்கத்தை இயக்கு", + "EnableExternalVideoPlayersHelp": "வீடியோ பிளேபேக்கைத் தொடங்கும்போது வெளிப்புற பிளேயர் மெனு காண்பிக்கப்படும்.", + "EnableExternalVideoPlayers": "வெளிப்புற வீடியோ பிளேயர்கள்", + "EnableDisplayMirroring": "காட்சி பிரதிபலிப்பு", + "EnableDecodingColorDepth10Vp9": "VP9 க்கு 10-பிட் வன்பொருள் டிகோடிங்கை இயக்கவும்", + "EnableDecodingColorDepth10Hevc": "HEVC க்கு 10-பிட் வன்பொருள் டிகோடிங்கை இயக்கவும்", + "EnableColorCodedBackgrounds": "வண்ண குறியிடப்பட்ட பின்னணிகள்", + "EnableCinemaMode": "சினிமா பயன்முறை", + "EnableBackdropsHelp": "நூலகத்தை உலாவும்போது சில பக்கங்களின் பின்னணியில் பின்னணியைக் காண்பி.", + "EditSubtitles": "வசன வரிகள் திருத்து", + "EditMetadata": "மெட்டாடேட்டாவைத் திருத்து", + "EditImages": "படங்களைத் திருத்து", + "Edit": "தொகு", + "EasyPasswordHelp": "உங்கள் எளிதான முள் குறியீடு ஆதரிக்கப்பட்ட கிளையண்ட்களில் ஆஃப்லைன் அணுகலுக்காகப் பயன்படுத்தப்படுகிறது, மேலும் நெட்வொர்க் உள்நுழைவிலும் எளிதாகப் பயன்படுத்தலாம்.", + "DropShadow": "நிழல் விட்டுவிடு", + "DrmChannelsNotImported": "டிஆர்எம் கொண்ட சேனல்கள் இறக்குமதி செய்யப்படாது.", + "DownloadsValue": "{0} பதிவிறக்கங்கள்", + "Download": "பதிவிறக்க", + "Down": "கீழ்", + "DoNotRecord": "பதிவு செய்ய வேண்டாம்", + "DisplayModeHelp": "இடைமுகத்திற்கு நீங்கள் விரும்பும் தளவமைப்பு பாணியைத் தேர்ந்தெடுக்கவும்.", + "DisplayMissingEpisodesWithinSeasonsHelp": "சேவையக உள்ளமைவில் டிவி நூலகங்களுக்கும் இது இயக்கப்பட வேண்டும்.", + "DisplayMissingEpisodesWithinSeasons": "காணாமல் போன அத்தியாயங்களை பருவங்களுக்குள் காண்பி", + "DisplayInOtherHomeScreenSections": "சமீபத்திய மீடியா போன்ற முகப்புத் திரைப் பிரிவுகளில் காண்பிக்கவும், தொடர்ந்து பார்க்கவும்", + "DisplayInMyMedia": "முகப்புத் திரையில் காட்சி", + "Display": "காட்சி", + "Dislike": "விரும்பவில்லை", + "Disconnect": "துண்டிக்கவும்", + "Disc": "வட்டு", + "Disabled": "முடக்கப்பட்டது", + "Directors": "இயக்குநர்கள்", + "Director": "இயக்குனர்", + "DirectStreaming": "நேரடி ஸ்ட்ரீமிங்", + "DirectStreamHelp2": "வீடியோ தரத்தில் குறைந்த இழப்புடன் நேரடி ஸ்ட்ரீம் மிகக் குறைந்த செயலாக்க சக்தியைப் பயன்படுத்துகிறது.", + "DirectStreamHelp1": "தீர்மானம் மற்றும் மீடியா வகை (H.264, AC3, போன்றவை) தொடர்பான சாதனத்துடன் ஊடகங்கள் இணக்கமாக உள்ளன, ஆனால் பொருந்தாத கோப்பு கொள்கலனில் (mkv, avi, wmv, போன்றவை). சாதனத்திற்கு அனுப்பப்படுவதற்கு முன்பு வீடியோ பறக்கையில் மீண்டும் தொகுக்கப்படும்.", + "DirectPlaying": "நேரடி விளையாட்டு", + "DeviceAccessHelp": "இது தனிப்பட்ட முறையில் அடையாளம் காணக்கூடிய சாதனங்களுக்கு மட்டுமே பொருந்தும் மற்றும் உலாவி அணுகலைத் தடுக்காது. பயனர் சாதன அணுகலை வடிகட்டுவது, அவை இங்கு அங்கீகரிக்கப்படும் வரை புதிய சாதனங்களைப் பயன்படுத்துவதைத் தடுக்கும்.", + "DetectingDevices": "சாதனங்களைக் கண்டறிதல்", + "Desktop": "டெஸ்க்டாப்", + "Descending": "இறங்கு வரிசை", + "Depressed": "மனச்சோர்வு", + "DeleteUserConfirmation": "இந்த பயனரை நீக்க விரும்புகிறீர்களா?", + "DeleteUser": "பயனரை நீக்கு", + "DeleteMedia": "மீடியாவை நீக்கு", + "DeleteImageConfirmation": "இந்த படத்தை நீக்க விரும்புகிறீர்களா?", + "DeleteImage": "படத்தை நீக்கு", + "DeleteDeviceConfirmation": "இந்த சாதனத்தை நீக்க விரும்புகிறீர்களா? அடுத்த முறை ஒரு பயனர் உள்நுழையும்போது அது மீண்டும் தோன்றும்.", + "Delete": "அழி", + "DeinterlaceMethodHelp": "ஒன்றோடொன்று உள்ளடக்கத்தை டிரான்ஸ்கோடிங் செய்யும்போது பயன்படுத்த வேண்டிய deinterlacing முறையைத் தேர்ந்தெடுக்கவும்.", + "DefaultSubtitlesHelp": "உட்பொதிக்கப்பட்ட மெட்டாடேட்டாவில் இயல்புநிலை மற்றும் கட்டாயக் கொடிகளின் அடிப்படையில் வசன வரிகள் ஏற்றப்படுகின்றன. பல விருப்பங்கள் கிடைக்கும்போது மொழி விருப்பத்தேர்வுகள் கருதப்படுகின்றன.", + "DefaultMetadataLangaugeDescription": "இவை உங்கள் இயல்புநிலைகள் மற்றும் ஒவ்வொரு நூலக அடிப்படையில் தனிப்பயனாக்கலாம்.", + "ErrorDefault": "கோரிக்கையை செயலாக்குவதில் பிழை ஏற்பட்டது. பின்னர் மீண்டும் முயற்சிக்கவும்.", + "Default": "இயல்புநிலை", + "DeathDateValue": "இறந்தது: {0}", + "DatePlayed": "விளையாடிய தேதி", + "DateAdded": "தேதி சேர்க்கப்பட்டது", + "CustomDlnaProfilesHelp": "புதிய சாதனத்தை குறிவைக்க அல்லது கணினி சுயவிவரத்தை மேலெழுத தனிப்பயன் சுயவிவரத்தை உருவாக்கவும்.", + "CriticRating": "விமர்சன மதிப்பீடு", + "CopyStreamURLSuccess": "URL வெற்றிகரமாக நகலெடுக்கப்பட்டது.", + "CopyStreamURL": "ஸ்ட்ரீம் URL ஐ நகலெடுக்கவும்", + "Continuing": "தொடர்கிறது", + "ContinueWatching": "தொடர்ந்து பார்த்துக் கொள்ளுங்கள்", + "Connect": "இணைக்கவும்", + "ConfirmEndPlayerSession": "ஜெல்லிஃபினை {0} இல் நிறுத்த விரும்புகிறீர்களா?", + "ConfirmDeletion": "நீக்குதலை உறுதிப்படுத்தவும்", + "ConfirmDeleteItems": "இந்த உருப்படிகளை நீக்குவது கோப்பு முறைமை மற்றும் உங்கள் ஊடக நூலகம் இரண்டிலிருந்தும் அவற்றை நீக்கும். நீங்கள் தொடர விரும்புகிறீர்களா?", + "ConfirmDeleteItem": "இந்த உருப்படியை நீக்குவது கோப்பு முறைமை மற்றும் உங்கள் ஊடக நூலகம் இரண்டிலிருந்தும் நீக்கப்படும். நீங்கள் தொடர விரும்புகிறீர்களா?", + "ConfirmDeleteImage": "படத்தை நீக்கவா?", + "ConfigureDateAdded": "நூலக அமைப்புகளின் கீழ் டாஷ்போர்டில் சேர்க்கப்பட்ட தேதி எவ்வாறு தீர்மானிக்கப்படுகிறது என்பதை உள்ளமைக்கவும்", + "Composer": "இசையமைப்பாளர்", + "CommunityRating": "சமூக மதிப்பீடு", + "ColorTransfer": "வண்ண பரிமாற்றம்", + "ColorSpace": "வண்ண இடம்", + "ColorPrimaries": "வண்ண முதன்மைகள்" } From 922623d726d4244a133b3aeb0ccd356dd63a963f Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Fri, 14 Aug 2020 06:37:09 +0000 Subject: [PATCH 395/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 8d4076c491..d8bfbeff95 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -253,5 +253,16 @@ "CommunityRating": "சமூக மதிப்பீடு", "ColorTransfer": "வண்ண பரிமாற்றம்", "ColorSpace": "வண்ண இடம்", - "ColorPrimaries": "வண்ண முதன்மைகள்" + "ColorPrimaries": "வண்ண முதன்மைகள்", + "EveryNDays": "ஒவ்வொரு {0} நாட்களும்", + "ErrorSavingTvProvider": "டிவி வழங்குநரைச் சேமிப்பதில் பிழை ஏற்பட்டது. அணுகக்கூடியது என்பதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "ErrorPleaseSelectLineup": "தயவுசெய்து ஒரு வரிசையைத் தேர்ந்தெடுத்து மீண்டும் முயற்சிக்கவும். வரிசைகள் எதுவும் கிடைக்கவில்லை என்றால், உங்கள் பயனர்பெயர், கடவுச்சொல் மற்றும் அஞ்சல் குறியீடு சரியானதா என்பதை சரிபார்க்கவும்.", + "ErrorStartHourGreaterThanEnd": "இறுதி நேரம் தொடக்க நேரத்தை விட அதிகமாக இருக்க வேண்டும்.", + "ErrorGettingTvLineups": "டிவி வரிசைகளை பதிவிறக்குவதில் பிழை ஏற்பட்டது. உங்கள் தகவல் சரியானது என்பதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "ErrorDeletingItem": "சேவையகத்திலிருந்து உருப்படியை நீக்குவதில் பிழை ஏற்பட்டது. ஜெல்லிஃபின் மீடியா கோப்புறையில் எழுத அணுகல் உள்ளதா என்பதை சரிபார்த்து மீண்டும் முயற்சிக்கவும்.", + "ErrorAddingXmlTvFile": "XMLTV கோப்பை அணுகுவதில் பிழை ஏற்பட்டது. கோப்பு இருப்பதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "ErrorAddingTunerDevice": "ட்யூனர் சாதனத்தைச் சேர்ப்பதில் பிழை ஏற்பட்டது. அணுகக்கூடியது என்பதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "ErrorAddingMediaPathToVirtualFolder": "ஊடக பாதையைச் சேர்ப்பதில் பிழை ஏற்பட்டது. பாதை செல்லுபடியாகும் என்பதை உறுதிப்படுத்தவும், அந்த இடத்திற்கு ஜெல்லிஃபின் அணுகல் உள்ளது.", + "ErrorAddingListingsToSchedulesDirect": "உங்கள் அட்டவணைகள் நேரடி கணக்கில் வரிசையைச் சேர்ப்பதில் பிழை ஏற்பட்டது. அட்டவணைகள் நேரடி ஒரு கணக்கிற்கு ஒரு குறிப்பிட்ட எண்ணிக்கையிலான வரிசைகளை மட்டுமே அனுமதிக்கிறது. தொடர்வதற்கு முன் நீங்கள் அட்டவணைகள் நேரடி இணையதளத்தில் உள்நுழைந்து மற்றவர்களின் பட்டியலை உங்கள் கணக்கிலிருந்து அகற்ற வேண்டும்.", + "Episodes": "அத்தியாயங்கள்" } From f6517bba29fa910abc84a33ebd7811e57d36efa1 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Fri, 14 Aug 2020 06:57:43 +0000 Subject: [PATCH 396/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 72 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index d8bfbeff95..d7f135ff02 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -264,5 +264,75 @@ "ErrorAddingTunerDevice": "ட்யூனர் சாதனத்தைச் சேர்ப்பதில் பிழை ஏற்பட்டது. அணுகக்கூடியது என்பதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", "ErrorAddingMediaPathToVirtualFolder": "ஊடக பாதையைச் சேர்ப்பதில் பிழை ஏற்பட்டது. பாதை செல்லுபடியாகும் என்பதை உறுதிப்படுத்தவும், அந்த இடத்திற்கு ஜெல்லிஃபின் அணுகல் உள்ளது.", "ErrorAddingListingsToSchedulesDirect": "உங்கள் அட்டவணைகள் நேரடி கணக்கில் வரிசையைச் சேர்ப்பதில் பிழை ஏற்பட்டது. அட்டவணைகள் நேரடி ஒரு கணக்கிற்கு ஒரு குறிப்பிட்ட எண்ணிக்கையிலான வரிசைகளை மட்டுமே அனுமதிக்கிறது. தொடர்வதற்கு முன் நீங்கள் அட்டவணைகள் நேரடி இணையதளத்தில் உள்நுழைந்து மற்றவர்களின் பட்டியலை உங்கள் கணக்கிலிருந்து அகற்ற வேண்டும்.", - "Episodes": "அத்தியாயங்கள்" + "Episodes": "அத்தியாயங்கள்", + "HeaderConfirmPluginInstallation": "செருகுநிரல் நிறுவலை உறுதிப்படுத்தவும்", + "HeaderConfigureRemoteAccess": "தொலைநிலை அணுகலை உள்ளமைக்கவும்", + "HeaderCodecProfileHelp": "குறிப்பிட்ட கோடெக்குகளை இயக்கும்போது கோடெக் சுயவிவரங்கள் சாதனத்தின் வரம்புகளைக் குறிக்கின்றன. ஒரு வரம்பு பொருந்தினால், கோடெக் நேரடி விளையாட்டிற்காக கட்டமைக்கப்பட்டிருந்தாலும், மீடியா டிரான்ஸ்கோட் செய்யப்படும்.", + "HeaderCodecProfile": "கோடெக் சுயவிவரம்", + "HeaderChapterImages": "பாடம் படங்கள்", + "HeaderChannelAccess": "சேனல் அணுகல்", + "HeaderCastCrew": "நடிகர்கள் & குழு", + "HeaderCastAndCrew": "நடிகர்கள் & குழு", + "HeaderCancelSeries": "தொடரை ரத்துசெய்", + "HeaderCancelRecording": "பதிவை ரத்துசெய்", + "HeaderBranding": "பிராண்டிங்", + "HeaderBooks": "புத்தகங்கள்", + "HeaderBlockItemsWithNoRating": "இல்லை அல்லது அங்கீகரிக்கப்படாத மதிப்பீட்டு தகவல் இல்லாத உருப்படிகளைத் தடு:", + "HeaderAudioSettings": "ஆடியோ அமைப்புகள்", + "HeaderAudioBooks": "ஆடியோ புத்தகங்கள்", + "HeaderAppearsOn": "தோன்றும்", + "HeaderApp": "செயலி", + "ApiKeysCaption": "தற்போது இயக்கப்பட்ட API விசைகளின் பட்டியல்", + "HeaderApiKeysHelp": "சேவையகத்துடன் தொடர்புகொள்வதற்கு வெளிப்புற பயன்பாடுகள் ஏபிஐ விசையை வைத்திருக்க வேண்டும். விசைகள் ஒரு சாதாரண பயனர் கணக்கில் உள்நுழைந்து அல்லது பயன்பாட்டிற்கு ஒரு விசையை கைமுறையாக வழங்குவதன் மூலம் வழங்கப்படுகின்றன.", + "HeaderApiKeys": "API விசைகள்", + "HeaderApiKey": "API விசை", + "HeaderAllowMediaDeletionFrom": "இருந்து மீடியாவை நீக்க அனுமதிக்கவும்", + "HeaderAlert": "எச்சரிக்கை", + "HeaderAdmin": "நிர்வாகம்", + "HeaderAdditionalParts": "கூடுதல் பாகங்கள்", + "HeaderAddUser": "பயனரைச் சேர்க்கவும்", + "HeaderAddUpdateImage": "படத்தைச் சேர்க்கவும் / புதுப்பிக்கவும்", + "HeaderAddToPlaylist": "பட்டியலில் சேர்", + "HeaderAddToCollection": "சேகரிப்பில் சேர்", + "HeaderAddScheduledTaskTrigger": "தூண்டுதலைச் சேர்க்கவும்", + "HeaderActivity": "செயல்பாடு", + "HeaderActiveRecordings": "செயலில் பதிவுகள்", + "HeaderActiveDevices": "செயலில் உள்ள சாதனங்கள்", + "HeaderAccessScheduleHelp": "சில மணிநேரங்களுக்கான அணுகலைக் கட்டுப்படுத்த அணுகல் அட்டவணையை உருவாக்கவும்.", + "HeaderAccessSchedule": "அணுகல் அட்டவணை", + "HardwareAccelerationWarning": "வன்பொருள் முடுக்கம் இயக்குவது சில சூழல்களில் உறுதியற்ற தன்மையை ஏற்படுத்தக்கூடும். உங்கள் இயக்க முறைமை மற்றும் வீடியோ இயக்கிகள் முழுமையாக புதுப்பித்த நிலையில் இருப்பதை உறுதிசெய்க. இதை இயக்கிய பின் வீடியோவை இயக்குவதில் சிக்கல் இருந்தால், நீங்கள் அமைப்பை எதுவும் இல்லை என மாற்ற வேண்டும்.", + "HDPrograms": "HD நிரல்கள்", + "EncoderPresetHelp": "செயல்திறனை மேம்படுத்த வேகமான மதிப்பை அல்லது தரத்தை மேம்படுத்த மெதுவான மதிப்பைத் தேர்வுசெய்க.", + "H264CrfHelp": "நிலையான விகித காரணி (CRF) என்பது x264 குறியாக்கிக்கான இயல்புநிலை தர அமைப்பாகும். நீங்கள் 0 மற்றும் 51 க்கு இடையில் மதிப்புகளை அமைக்கலாம், அங்கு குறைந்த மதிப்புகள் சிறந்த தரத்தை ஏற்படுத்தும் (அதிக கோப்பு அளவுகளின் இழப்பில்). சேன் மதிப்புகள் 18 முதல் 28 வரை உள்ளன. X264 இன் இயல்புநிலை 23 ஆகும், எனவே இதை நீங்கள் ஒரு தொடக்க புள்ளியாக பயன்படுத்தலாம்.", + "GuideProviderSelectListings": "பட்டியல்களைத் தேர்ந்தெடுக்கவும்", + "GuideProviderLogin": "உள்நுழைய", + "Guide": "வழிகாட்டி", + "GuestStar": "விருந்தினர் நட்சத்திரம்", + "GroupVersions": "குழு பதிப்புகள்", + "GroupBySeries": "தொடர் அடிப்படையில் குழு", + "Genre": "வகை", + "General": "பொது", + "Fullscreen": "முழு திரை", + "Friday": "வெள்ளி", + "FormatValue": "வடிவம்: {0}", + "FolderTypeUnset": "கலப்பு உள்ளடக்கம்", + "FolderTypeTvShows": "தொலைக்காட்சி நிகழ்ச்சிகள்", + "FolderTypeMusicVideos": "இசை கானொளி", + "FolderTypeMusic": "இசை", + "FolderTypeMovies": "திரைப்படங்கள்", + "FolderTypeBooks": "புத்தகங்கள்", + "Filters": "வடிப்பான்கள்", + "FileReadError": "கோப்பைப் படிக்கும்போது பிழை ஏற்பட்டது.", + "FileReadCancelled": "படித்த கோப்பு ரத்து செய்யப்பட்டது.", + "FileNotFound": "கோப்பு கிடைக்கவில்லை.", + "File": "கோப்பு", + "FetchingData": "கூடுதல் தரவைப் பெறுகிறது", + "Features": "அம்சங்கள்", + "Favorite": "பிடித்தது", + "FastForward": "வேகமாக முன்னோக்கி", + "FFmpegSavePathNotFound": "நீங்கள் உள்ளிட்ட பாதையைப் பயன்படுத்தி FFmpeg ஐ எங்களால் கண்டுபிடிக்க முடியவில்லை. FFprobe தேவைப்படுகிறது மற்றும் அதே கோப்புறையில் இருக்க வேண்டும். இந்த கூறுகள் பொதுவாக ஒரே பதிவிறக்கத்தில் ஒன்றாக தொகுக்கப்படுகின்றன. பாதையை சரிபார்த்து மீண்டும் முயற்சிக்கவும்.", + "Extras": "கூடுதல்", + "ExtractChapterImagesHelp": "அத்தியாயப் படங்களை பிரித்தெடுப்பது வாடிக்கையாளர்களுக்கு வரைகலை காட்சி தேர்வு மெனுக்களைக் காண்பிக்கும். செயல்முறை மெதுவாகவும், வள தீவிரமாகவும் இருக்கலாம், மேலும் பல ஜிகாபைட் இடம் தேவைப்படலாம். வீடியோக்கள் கண்டுபிடிக்கப்பட்டதும், இரவு திட்டமிடப்பட்ட பணியாகவும் இது இயங்குகிறது. திட்டமிடப்பட்ட பணிகள் பகுதியில் அட்டவணை கட்டமைக்கப்படுகிறது. அதிகபட்ச பயன்பாட்டு நேரங்களில் இந்த பணியை இயக்க பரிந்துரைக்கப்படவில்லை.", + "ExtraLarge": "கூடுதல் பெரியது", + "ExitFullscreen": "முழு திரையில் இருந்து வெளியேறவும்" } From 429cc400fae7cfac1cd053404ee4d3c8091753d6 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Fri, 14 Aug 2020 07:51:36 +0000 Subject: [PATCH 397/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index d7f135ff02..3e87f8da5f 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -334,5 +334,41 @@ "Extras": "கூடுதல்", "ExtractChapterImagesHelp": "அத்தியாயப் படங்களை பிரித்தெடுப்பது வாடிக்கையாளர்களுக்கு வரைகலை காட்சி தேர்வு மெனுக்களைக் காண்பிக்கும். செயல்முறை மெதுவாகவும், வள தீவிரமாகவும் இருக்கலாம், மேலும் பல ஜிகாபைட் இடம் தேவைப்படலாம். வீடியோக்கள் கண்டுபிடிக்கப்பட்டதும், இரவு திட்டமிடப்பட்ட பணியாகவும் இது இயங்குகிறது. திட்டமிடப்பட்ட பணிகள் பகுதியில் அட்டவணை கட்டமைக்கப்படுகிறது. அதிகபட்ச பயன்பாட்டு நேரங்களில் இந்த பணியை இயக்க பரிந்துரைக்கப்படவில்லை.", "ExtraLarge": "கூடுதல் பெரியது", - "ExitFullscreen": "முழு திரையில் இருந்து வெளியேறவும்" + "ExitFullscreen": "முழு திரையில் இருந்து வெளியேறவும்", + "HeaderFeatureAccess": "அம்ச அணுகல்", + "HeaderFavoritePlaylists": "பிடித்த இசைப்பட்டியல்கள்", + "HeaderFavoriteVideos": "பிடித்த வீடியோக்கள்", + "HeaderFavoritePeople": "பிடித்த மக்கள்", + "HeaderFavoriteMovies": "பிடித்த திரைப்படங்கள்", + "HeaderFavoriteBooks": "பிடித்த புத்தகங்கள்", + "HeaderExternalIds": "வெளி ஐடிகள்:", + "HeaderError": "பிழை", + "HeaderEpisodes": "அத்தியாயங்கள்", + "HeaderEnabledFieldsHelp": "ஒரு புலத்தை பூட்டவும், அதன் தரவு மாற்றப்படுவதைத் தடுக்கவும் தேர்வுநீக்கு.", + "HeaderEnabledFields": "இயக்கப்பட்ட புலங்கள்", + "HeaderEditImages": "படங்களைத் திருத்து", + "HeaderEasyPinCode": "எளிதாக பின் குறியீடு", + "HeaderDVR": "டி.வி.ஆர்", + "HeaderDownloadSync": "பதிவிறக்கம் & ஒத்திசை", + "HeaderDirectPlayProfileHelp": "சாதனம் சொந்த முறையில் கையாளக்கூடிய வடிவமைப்புகளைக் குறிக்க நேரடி ப்ளே சுயவிவரங்களைச் சேர்க்கவும்.", + "HeaderDirectPlayProfile": "நேரடி ப்ளே சுயவிவரம்", + "HeaderDevices": "சாதனங்கள்", + "HeaderDeviceAccess": "சாதன அணுகல்", + "HeaderDeveloperInfo": "உருவாக்குனர் தகவல்", + "HeaderDetectMyDevices": "எனது சாதனங்களைக் கண்டறியவும்", + "HeaderDeleteTaskTrigger": "பணி தூண்டுதலை நீக்கு", + "HeaderDeleteProvider": "வழங்குநரை நீக்கு", + "HeaderDeleteItems": "உருப்படிகளை நீக்கு", + "HeaderDeleteItem": "உருப்படியை நீக்கு", + "HeaderDeleteDevice": "சாதனத்தை நீக்கு", + "HeaderDefaultRecordingSettings": "இயல்புநிலை பதிவு அமைப்புகள்", + "HeaderDateIssued": "வழங்கப்பட்ட தேதி", + "HeaderCustomDlnaProfiles": "தனிப்பயன் சுயவிவரங்கள்", + "HeaderContinueListening": "தொடர்ந்து கேளுங்கள்", + "HeaderContainerProfileHelp": "குறிப்பிட்ட வடிவங்களை இயக்கும்போது கொள்கலன் சுயவிவரங்கள் சாதனத்தின் வரம்புகளைக் குறிக்கின்றன. ஒரு வரம்பு பொருந்தினால், நேரடி விளையாட்டுக்காக வடிவமைப்பு கட்டமைக்கப்பட்டிருந்தாலும், மீடியா டிரான்ஸ்கோட் செய்யப்படும்.", + "HeaderContainerProfile": "கொள்கலன் சுயவிவரம்", + "HeaderConnectionFailure": "இணைப்பு தோல்வி", + "HeaderConnectToServer": "சேவையகத்துடன் இணைக்கவும்", + "HeaderConfirmRevokeApiKey": "API விசையைத் திரும்பப்பெறுக", + "HeaderConfirmProfileDeletion": "சுயவிவர நீக்குதலை உறுதிப்படுத்தவும்" } From de798ebb9f8ff10bce3750d67cd6429fbd4a6f6a Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Fri, 14 Aug 2020 08:12:52 +0000 Subject: [PATCH 398/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 101 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 3e87f8da5f..30f7ea85ba 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -22,7 +22,7 @@ "AllowRemoteAccessHelp": "தேர்வு செய்யப்படாவிட்டால், எல்லா தொலைநிலை இணைப்புகளும் தடுக்கப்படும்.", "AllowRemoteAccess": "இந்த சேவையகத்திற்கு தொலை இணைப்புகளை அனுமதிக்கவும்.", "AllowFfmpegThrottlingHelp": "ஒரு டிரான்ஸ்கோட் அல்லது ரீமக்ஸ் தற்போதைய பின்னணி நிலையிலிருந்து வெகு தொலைவில் இருக்கும்போது, செயல்முறையை இடைநிறுத்துங்கள், இதனால் அது குறைந்த ஆதாரங்களை நுகரும். அடிக்கடி தேடாமல் பார்க்கும்போது இது மிகவும் பயனுள்ளதாக இருக்கும். பின்னணி சிக்கல்களை நீங்கள் சந்தித்தால் இதை அணைக்கவும்.", - "AllowFfmpegThrottling": "த்ரோட்டில் டிரான்ஸ்கோட்கள்", + "AllowFfmpegThrottling": "திராட்டில் ட்ரான்ஸ்கோட்கள்", "AllowOnTheFlySubtitleExtractionHelp": "வீடியோ டிரான்ஸ்கோடிங்கைத் தடுக்க உதவும் வகையில் உட்பொதிக்கப்பட்ட வசனங்களை வீடியோக்களிலிருந்து பிரித்தெடுத்து வாடிக்கையாளர்களுக்கு எளிய உரையில் வழங்கலாம். சில கணினிகளில் இது நீண்ட நேரம் எடுக்கும் மற்றும் பிரித்தெடுக்கும் செயல்பாட்டின் போது வீடியோ பிளேபேக் நிறுத்தப்படும். கிளையன்ட் சாதனத்தால் பூர்வீகமாக ஆதரிக்கப்படாதபோது உட்பொதிக்கப்பட்ட வசன வரிகள் வீடியோ டிரான்ஸ்கோடிங்கில் எரிக்கப்படுவதை முடக்கு.", "AllowOnTheFlySubtitleExtraction": "பறக்கையில் வசன வரிகள் பிரித்தெடுக்க அனுமதிக்கவும்", "AllowMediaConversionHelp": "மாற்றும் ஊடக அம்சத்திற்கான அணுகலை வழங்கவும் அல்லது மறுக்கவும்.", @@ -370,5 +370,102 @@ "HeaderConnectionFailure": "இணைப்பு தோல்வி", "HeaderConnectToServer": "சேவையகத்துடன் இணைக்கவும்", "HeaderConfirmRevokeApiKey": "API விசையைத் திரும்பப்பெறுக", - "HeaderConfirmProfileDeletion": "சுயவிவர நீக்குதலை உறுதிப்படுத்தவும்" + "HeaderConfirmProfileDeletion": "சுயவிவர நீக்குதலை உறுதிப்படுத்தவும்", + "HeaderSortBy": "மூலம் வரிசைப்படுத்து", + "HeaderSetupLibrary": "உங்கள் மீடியா நூலகங்களை அமைக்கவும்", + "HeaderSettings": "அமைப்புகள்", + "HeaderServerSettings": "சேவையக அமைப்புகள்", + "HeaderServerAddressSettings": "சேவையக முகவரி அமைப்புகள்", + "HeaderSeriesStatus": "தொடர் நிலை", + "HeaderSeriesOptions": "தொடர் விருப்பங்கள்", + "HeaderSendMessage": "செய்தியை அனுப்பு", + "HeaderSelectTranscodingPathHelp": "டிரான்ஸ்கோட் கோப்புகளுக்கு பயன்படுத்த பாதையை உலாவவும் அல்லது உள்ளிடவும். கோப்புறை எழுதக்கூடியதாக இருக்க வேண்டும்.", + "HeaderSelectTranscodingPath": "டிரான்ஸ்கோடிங் தற்காலிக பாதையைத் தேர்ந்தெடுக்கவும்", + "HeaderSelectServerCachePathHelp": "சேவையக தேக்கக கோப்புகளுக்கு பயன்படுத்த பாதையை உலாவவும் அல்லது உள்ளிடவும். கோப்புறை எழுதக்கூடியதாக இருக்க வேண்டும்.", + "HeaderSelectServerCachePath": "சேவையக தேக்கக பாதையைத் தேர்ந்தெடுக்கவும்", + "HeaderSelectServer": "சேவையகத்தைத் தேர்ந்தெடுக்கவும்", + "HeaderSelectPath": "பாதையைத் தேர்ந்தெடுக்கவும்", + "HeaderSelectMetadataPathHelp": "மெட்டாடேட்டாவிற்கு நீங்கள் பயன்படுத்த விரும்பும் பாதையை உலாவவும் அல்லது உள்ளிடவும். கோப்புறை எழுதக்கூடியதாக இருக்க வேண்டும்.", + "HeaderSelectMetadataPath": "மெட்டாடேட்டா பாதையைத் தேர்ந்தெடுக்கவும்", + "HeaderSelectCertificatePath": "சான்றிதழ் பாதையைத் தேர்ந்தெடுக்கவும்", + "HeaderSecondsValue": "{0} விநாடிகள்", + "HeaderSeasons": "பருவங்கள்", + "HeaderScenes": "காட்சிகள்", + "HeaderRunningTasks": "இயங்கும் பணிகள்", + "HeaderRevisionHistory": "திருத்த வரலாறு", + "HeaderRestart": "மறுதொடக்கம்", + "HeaderResponseProfileHelp": "சில வகையான மீடியாக்களை இயக்கும்போது சாதனத்திற்கு அனுப்பப்பட்ட தகவல்களைத் தனிப்பயனாக்க பதில் சுயவிவரங்கள் ஒரு வழியை வழங்குகின்றன.", + "HeaderResponseProfile": "பதில் சுயவிவரம்", + "HeaderRemoveMediaLocation": "மீடியா இருப்பிடத்தை அகற்று", + "HeaderRemoveMediaFolder": "மீடியா கோப்புறையை அகற்று", + "HeaderRemoteControl": "தொலையியக்கி", + "HeaderRemoteAccessSettings": "தொலைநிலை அணுகல் அமைப்புகள்", + "HeaderRecordingPostProcessing": "பதிவு செயலாக்கம் பதிவு செய்தல்", + "HeaderRecordingOptions": "பதிவு செய்தல் விருப்பங்கள்", + "HeaderRecentlyPlayed": "சமீபத்தில் இசையப்பட்டுள்ளது", + "HeaderProfileServerSettingsHelp": "இந்த மதிப்புகள் சேவையகம் எவ்வாறு வாடிக்கையாளர்களுக்கு முன்வைக்கும் என்பதைக் கட்டுப்படுத்துகிறது.", + "HeaderProfileInformation": "சுயவிவர தகவல்", + "HeaderProfile": "சுயவிவரம்", + "HeaderPreferredMetadataLanguage": "விருப்பமான மெட்டாடேட்டா மொழி", + "HeaderPluginInstallation": "செருகுநிரல் நிறுவல்", + "HeaderPleaseSignIn": "உள்நுழைக", + "HeaderPlaybackError": "பின்னணி பிழை", + "HeaderPlayback": "மீடியா பிளேபேக்", + "HeaderPlayOn": "இயக்கு", + "HeaderPlayAll": "அனைத்தும் இயக்கு", + "HeaderPinCodeReset": "பின் குறியீட்டை மீட்டமை", + "HeaderPhotoAlbums": "புகைப்பட ஆல்பங்கள்", + "HeaderPaths": "பாதைகள்", + "HeaderPasswordReset": "கடவுச்சொல் மீட்டமைப்பு", + "HeaderPassword": "கடவுச்சொல்", + "HeaderParentalRatings": "பெற்றோர் மதிப்பீடுகள்", + "HeaderOtherItems": "பிற உருப்படிகள்", + "HeaderOnNow": "இப்போது", + "HeaderNextVideoPlayingInValue": "அடுத்த வீடியோ {0} இல் இயங்குகிறது", + "HeaderNextEpisodePlayingInValue": "அடுத்த எபிசோட் {0} இல் விளையாடுகிறது", + "HeaderNewDevices": "புதிய சாதனங்கள்", + "HeaderNewApiKey": "புதிய API விசை", + "HeaderNavigation": "வழிசெலுத்தல்", + "HeaderMyMediaSmall": "எனது மீடியா (சிறியது)", + "HeaderMyMedia": "எனது மீடியா", + "HeaderMyDevice": "என் உபகரணம்", + "HeaderMusicVideos": "இசை கானொளி", + "HeaderMusicQuality": "இசை தரம்", + "HeaderMoreLikeThis": "இது போன்றது", + "HeaderMetadataSettings": "மெட்டாடேட்டா அமைப்புகள்", + "HeaderMediaInfo": "மீடியா தகவல்", + "HeaderMediaFolders": "மீடியா கோப்புறைகள்", + "HeaderMedia": "மீடியா", + "HeaderLoginFailure": "உள்நுழைவு தோல்வி", + "HeaderLiveTvTunerSetup": "லைவ் டிவி ட்யூனர் அமைப்பு", + "HeaderLibrarySettings": "நூலக அமைப்புகள்", + "HeaderLibraryOrder": "நூலக ஆணை", + "HeaderLibraryFolders": "நூலக கோப்புறைகள்", + "HeaderLibraryAccess": "நூலக அணுகல்", + "HeaderLibraries": "நூலகங்கள்", + "HeaderLatestRecordings": "சமீபத்திய பதிவுகள்", + "HeaderLatestMusic": "சமீபத்திய இசை", + "HeaderLatestMovies": "சமீபத்திய திரைப்படங்கள்", + "HeaderLatestMedia": "சமீபத்திய மீடியா", + "HeaderLatestEpisodes": "சமீபத்திய அத்தியாயங்கள்", + "HeaderKodiMetadataHelp": "NFO மெட்டாடேட்டாவை இயக்க அல்லது முடக்க, ஒரு நூலகத்தைத் திருத்தி மெட்டாடேட்டா சேவர்ஸ் பகுதியைக் கண்டறியவும்.", + "HeaderKeepSeries": "தொடரை வைத்திருங்கள்", + "HeaderKeepRecording": "பதிவுசெய்து கொள்ளுங்கள்", + "HeaderInstantMix": "உடனடி கலவை", + "HeaderInstall": "நிறுவு", + "HeaderImageSettings": "பட அமைப்புகள்", + "HeaderImageOptions": "பட விருப்பங்கள்", + "HeaderIdentifyItemHelp": "ஒன்று அல்லது அதற்கு மேற்பட்ட தேடல் அளவுகோல்களை உள்ளிடவும். தேடல் முடிவுகளை அதிகரிக்க அளவுகோல்களை அகற்று.", + "HeaderIdentificationHeader": "அடையாள தலைப்பு", + "HeaderIdentificationCriteriaHelp": "குறைந்தது ஒரு அடையாள அளவுகோல்களை உள்ளிடவும்.", + "HeaderIdentification": "அடையாளம்", + "HeaderHttpsSettings": "HTTPS அமைப்புகள்", + "HeaderHttpHeaders": "HTTP தலைப்புகள்", + "HeaderHome": "முகப்பு", + "HeaderGuideProviders": "டிவி வழிகாட்டி தரவு வழங்குநர்கள்", + "HeaderFrequentlyPlayed": "அடிக்கடி இசைக்கும்", + "HeaderForgotPassword": "கடவுச்சொல்லை மறந்துவிட்டீர்களா", + "HeaderForKids": "குழந்தைகளுக்காக", + "HeaderFetcherSettings": "பெறுதல் அமைப்புகள்", + "HeaderFetchImages": "படங்களை பெறுங்கள்:" } From 06689b91aec063a46ec87ff13bb8c3c4b5057d46 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Fri, 14 Aug 2020 09:53:35 +0000 Subject: [PATCH 399/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 30f7ea85ba..e3bd7a66af 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -467,5 +467,44 @@ "HeaderForgotPassword": "கடவுச்சொல்லை மறந்துவிட்டீர்களா", "HeaderForKids": "குழந்தைகளுக்காக", "HeaderFetcherSettings": "பெறுதல் அமைப்புகள்", - "HeaderFetchImages": "படங்களை பெறுங்கள்:" + "HeaderFetchImages": "படங்களை பெறுங்கள்:", + "Home": "முகப்பு", + "HideWatchedContentFromLatestMedia": "சமீபத்திய மீடியாவிலிருந்து பார்த்த உள்ளடக்கத்தை மறை", + "Hide": "மறை", + "Help": "உதவி", + "HeaderYears": "ஆண்டுகள்", + "HeaderXmlSettings": "XML அமைப்புகள்", + "HeaderXmlDocumentAttributes": "XML ஆவண பண்புக்கூறுகள்", + "HeaderXmlDocumentAttribute": "XML ஆவண பண்புக்கூறு", + "HeaderVideos": "வீடியோக்கள்", + "HeaderVideoTypes": "வீடியோ வகைகள்", + "HeaderVideoType": "வீடியோ வகை", + "HeaderVideoQuality": "வீடியோ தரம்", + "HeaderUsers": "பயனர்கள்", + "HeaderUser": "பயனர்", + "HeaderUploadImage": "படத்தை பதிவேற்றம் செய்யவும்", + "HeaderUpcomingOnTV": "தொலைக்காட்சியில் வரவிருக்கும்", + "HeaderTypeText": "உரையை உள்ளிடவும்", + "HeaderTypeImageFetchers": "{0} படத்தை எடுப்பவர்கள்", + "HeaderTuners": "ட்யூனர்கள்", + "HeaderTunerDevices": "ட்யூனர் சாதனங்கள்", + "HeaderTranscodingProfileHelp": "டிரான்ஸ்கோடிங் தேவைப்படும்போது எந்த வடிவங்களைப் பயன்படுத்த வேண்டும் என்பதைக் குறிக்க டிரான்ஸ்கோடிங் சுயவிவரங்களைச் சேர்க்கவும்.", + "HeaderTranscodingProfile": "டிரான்ஸ்கோடிங் சுயவிவரம்", + "HeaderTracks": "தடங்கள்", + "HeaderThisUserIsCurrentlyDisabled": "இந்த பயனர் தற்போது முடக்கப்பட்டுள்ளது", + "HeaderTaskTriggers": "பணி தூண்டுதல்கள்", + "HeaderSystemDlnaProfiles": "கணினி சுயவிவரங்கள்", + "HeaderSyncPlayEnabled": "ஒத்திசைவு இயக்கப்பட்டது", + "HeaderSyncPlaySelectGroup": "ஒரு குழுவில் சேர", + "HeaderSubtitleProfilesHelp": "சாதனம் ஆதரிக்கும் வசன வடிவங்களை வசன சுயவிவரங்கள் விவரிக்கின்றன.", + "HeaderSubtitleProfiles": "வசன சுயவிவரங்கள்", + "HeaderSubtitleProfile": "வசன சுயவிவரம்", + "HeaderSubtitleDownloads": "வசன பதிவிறக்கங்கள்", + "HeaderSubtitleAppearance": "வசனத் தோற்றம்", + "HeaderStopRecording": "பதிவு செய்வதை நிறுத்து", + "HeaderStatus": "நிலை", + "HeaderStartNow": "இப்போதே துவக்கு", + "HeaderSpecialFeatures": "சிறப்பு அம்சங்கள்", + "HeaderSpecialEpisodeInfo": "சிறப்பு எபிசோட் தகவல்", + "HeaderSortOrder": "வரிசைப்படுத்து வரிசை" } From 01c2ec079345f2d1ef7ebd7370cd48e4f93a656c Mon Sep 17 00:00:00 2001 From: Yangjin Cho Date: Fri, 14 Aug 2020 11:53:58 +0000 Subject: [PATCH 400/463] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ko/ --- src/strings/ko.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ko.json b/src/strings/ko.json index 62c924e517..79153c0962 100644 --- a/src/strings/ko.json +++ b/src/strings/ko.json @@ -740,7 +740,7 @@ "AllowMediaConversion": "미디어 변환 허용", "AllowOnTheFlySubtitleExtraction": "실시간 자막 추출 허용", "AllowOnTheFlySubtitleExtractionHelp": "비디오 트랜스코딩을 방지하기 위해 내장된 자막을 비디오에서 추출하여 텍스트로 클라이언트에 전송할 수 있습니다. 다만, 일부 시스템에서 추출 과정은 긴 시간이 걸리고 비디오 재생을 멈출 수 있습니다. 클라이언트에서 트랜스코딩을 사용할 수 없는 경우 이 기능을 비활성화하여 트랜스코딩 시 자막을 영상에 삽입하십시오.", - "AllowRemoteAccess": "이 Jellyfin 서버에 원격 접속을 허용합니다.", + "AllowRemoteAccess": "이 서버에 원격 접속을 허용합니다.", "AllowRemoteAccessHelp": "비 활성화할 시, 모든 외부 접속은 차단됩니다.", "AllowedRemoteAddressesHelp": "외부 접속을 허용할 IP 혹은 IP 넷마스크를 반점(,)으로 구분하여 입력하십시오. 공란일시, 모든 외부 접속이 허용됩니다.", "AlwaysPlaySubtitles": "항상 표시", From 31dd08030123017e461cba5509314b27f101c2db Mon Sep 17 00:00:00 2001 From: nothing nowhere Date: Fri, 14 Aug 2020 14:41:00 +0000 Subject: [PATCH 401/463] Added translation using Weblate (Bengali (Bangladesh)) --- src/strings/bn_BD.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/strings/bn_BD.json diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/bn_BD.json @@ -0,0 +1 @@ +{} From efa11cfe03c449d258ea436cb2570de7f9acc60b Mon Sep 17 00:00:00 2001 From: nothing nowhere Date: Fri, 14 Aug 2020 14:45:48 +0000 Subject: [PATCH 402/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index 0967ef424b..9d0d42982f 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -1 +1,4 @@ -{} +{ + "Actor": "অভিনেতা", + "AccessRestrictedTryAgainLater": "অ্যাক্সেস বর্তমানে সীমাবদ্ধ। অনুগ্রহ করে একটু পরে আবার চেষ্টা করুন." +} From 58c49ab85a9eb8c80a9321c7e8949a82f1472087 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Fri, 14 Aug 2020 17:10:13 +0200 Subject: [PATCH 403/463] Update src/scripts/clientUtils.js Co-authored-by: Cameron --- src/scripts/clientUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index 719d722a2b..fa9f232439 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -143,7 +143,7 @@ export function alert(options) { } import('alert').then(({default: alert}) => { - alert.default({ + alert({ title: options.title || Globalize.translate('HeaderAlert'), text: options.message }).then(options.callback || function () {}); From 5b0018850e8689cb9411f45f3724316e560d5351 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Fri, 14 Aug 2020 17:10:20 +0200 Subject: [PATCH 404/463] Update src/scripts/clientUtils.js Co-authored-by: Cameron --- src/scripts/clientUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index fa9f232439..d94a08e56e 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -112,7 +112,7 @@ export function processServerConfigurationUpdateResult(result) { ]) .then(([{default: loading}, {default: toast}]) => { loading.hide(); - toast.default(Globalize.translate('MessageSettingsSaved')); + toast.(Globalize.translate('MessageSettingsSaved')); }); } From 7f9f3cf206950baae1ad2591b4a302546a42d717 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Fri, 14 Aug 2020 17:10:27 +0200 Subject: [PATCH 405/463] Update src/scripts/clientUtils.js Co-authored-by: Cameron --- src/scripts/clientUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index d94a08e56e..eb3105a0a2 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -136,7 +136,7 @@ export function processErrorResponse(response) { export function alert(options) { if (typeof options == 'string') { return void import('toast').then(({default: toast}) => { - toast.default({ + toast({ text: options }); }); From 6cad03ec5346461b916f7bd7f20ccdb3a3362f86 Mon Sep 17 00:00:00 2001 From: DecentM Date: Fri, 14 Aug 2020 15:18:23 +0000 Subject: [PATCH 406/463] Translated using Weblate (Hungarian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/hu/ --- src/strings/hu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/hu.json b/src/strings/hu.json index 644e7eb746..9a409e920f 100644 --- a/src/strings/hu.json +++ b/src/strings/hu.json @@ -1471,7 +1471,7 @@ "PreviousTrack": "Ugrás az előzőhöz", "NextTrack": "Ugrás a következőre", "LabelUnstable": "Instabil", - "SubtitleVerticalPositionHelp": "Annak a sornak a száma, ahol a szöveg megjelenik. A pozitív számok fentről lefelé mutatnak. A negatív számok alulról felfelé mutatnak.", + "SubtitleVerticalPositionHelp": "Annak a sornak a száma, ahol a szöveg megjelenik. Pozitív számok fentről lefele számolnak, negatív számok pedig lentről felfelé.", "Preview": "Előnézet", "LabelSubtitleVerticalPosition": "Függőleges pozíció:", "MessageGetInstalledPluginsError": "Hiba történt a jelenleg telepített bővítmények lekérdezése során.", From c88e6a30ae6664606ad254dd51bcfa73d44a6d4a Mon Sep 17 00:00:00 2001 From: nothing nowhere Date: Fri, 14 Aug 2020 14:53:02 +0000 Subject: [PATCH 407/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index 9d0d42982f..7166a05f05 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -1,4 +1,20 @@ { "Actor": "অভিনেতা", - "AccessRestrictedTryAgainLater": "অ্যাক্সেস বর্তমানে সীমাবদ্ধ। অনুগ্রহ করে একটু পরে আবার চেষ্টা করুন." + "AccessRestrictedTryAgainLater": "অ্যাক্সেস বর্তমানে সীমাবদ্ধ। অনুগ্রহ করে একটু পরে আবার চেষ্টা করুন.", + "AllLibraries": "সব লাইব্রেরি", + "AllLanguages": "সব ভাষা", + "AllEpisodes": "সব এপিসোড", + "AllComplexFormats": "সমস্ত জটিল ফর্ম্যাট", + "AllChannels": "সব চ্যানেল", + "All": "সবগুলি", + "Alerts": "এলার্টস", + "Albums": "অ্যালবাম সমূহ", + "AlbumArtist": "অ্যালবাম আর্টিস্ট", + "Album": "অ্যালবাম", + "AirDate": "উন্মুক্তের তারিখ", + "AdditionalNotificationServices": "আরো নোটিফিকেশন সার্ভিস ইনস্টল করতে প্লাগিন ক্যাটালগে ব্রাউস করুন।", + "AddedOnValue": "এডেড {০}", + "AddToPlaylist": "প্লেলিস্টে অ্যাড করুন", + "AddToPlayQueue": "প্লে কিউ তে অ্যাড করুন", + "AddToCollection": "কালেকশন এ অ্যাড করুন" } From 395d12e01cb0def13f90db05314dca3b00856002 Mon Sep 17 00:00:00 2001 From: nothing things Date: Fri, 14 Aug 2020 15:58:42 +0000 Subject: [PATCH 408/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 67 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index 7166a05f05..e56b7b2723 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -16,5 +16,70 @@ "AddedOnValue": "এডেড {০}", "AddToPlaylist": "প্লেলিস্টে অ্যাড করুন", "AddToPlayQueue": "প্লে কিউ তে অ্যাড করুন", - "AddToCollection": "কালেকশন এ অ্যাড করুন" + "AddToCollection": "কালেকশন এ অ্যাড করুন", + "ButtonPlay": "চালান", + "ButtonPause": "বিরতি", + "ButtonParentalControl": "অভিভাবকীয় নিয়ন্ত্রণ", + "ButtonOpen": "খুলুন", + "ButtonOk": "আচ্ছা", + "ButtonOff": "বন্ধ", + "ButtonNextTrack": "পরবর্তী ট্র্যাক", + "ButtonNetwork": "নেটওয়ার্ক", + "ButtonMore": "আরও", + "ButtonLibraryAccess": "লাইব্রেরি অ্যাক্সেস", + "ButtonInfo": "তথ্য", + "ButtonHome": "হোম", + "ButtonGuide": "গাইড", + "ButtonGotIt": "বুঝেছি", + "ButtonFullscreen": "ফুলস্ক্রিন", + "ButtonForgotPassword": "পাসওয়ার্ড ভুলে গেছি", + "ButtonFilter": "ফিলটার", + "ButtonEditOtherUserPreferences": "এই ব্যবহারকারীর প্রোফাইল, ছবি এবং ব্যক্তিগত পছন্দগুলি এডিট করুন।", + "ButtonEditImages": "ছবিগুলি এডিট করুন", + "ButtonEdit": "এডিট করুন", + "ButtonChangeServer": "সার্ভার পরিবর্তন করুন", + "ButtonCancel": "বাতিল", + "ButtonBack": "অনগ্রসর", + "ButtonAudioTracks": "অডিও ট্র্যাকস", + "ButtonArrowRight": "ডান", + "ButtonArrowLeft": "বাম", + "ButtonAddUser": "ব্যবহারকারী যুক্ত করুন", + "ButtonAddServer": "সার্ভার যোগ করুন", + "ButtonAddScheduledTaskTrigger": "ট্রিগার যুক্ত করুন", + "ButtonAddMediaLibrary": "মিডিয়া লাইব্রেরি যুক্ত করুন", + "ButtonAddImage": "ছবি", + "MessageBrowsePluginCatalog": "এভিলেবল প্লাগইনগুলি দেখতে আমাদের প্লাগইন ক্যাটালগ ব্রাউজ করুন।", + "Browse": "ব্রাউজ", + "BoxRear": "বক্স (পিছন)", + "BoxSet": "বক্স সেট", + "Box": "বক্স", + "Books": "বই", + "BookLibraryHelp": "অডিও এবং পাঠ্য বই সমর্থিত। {0} বইয়ের নামকরণ গাইড {1} পর্যালোচনা করুন।", + "Blacklist": "নিষিদ্ধ তালিকা", + "BirthPlaceValue": "জন্ম স্থান: {0}", + "BirthLocation": "জন্মের অবস্থান", + "BirthDateValue": "জন্ম: {0}", + "Banner": "ব্যানার", + "Backdrop": "ব্যাকড্রপ", + "Auto": "অটো", + "Audio": "অডিও", + "AskAdminToCreateLibrary": "একজন প্রশাসককে একটি লাইব্রেরি তৈরি করতে বলুন।", + "Ascending": "ঊর্ধ্বগামী", + "AsManyAsPossible": "যতটা সম্ভব", + "Artists": "শিল্পীবৃন্দ", + "Artist": "শিল্পী", + "Art": "শিল্প", + "AroundTime": "কাছাকাছি", + "Anytime": "যে কোনো সময়", + "AnyLanguage": "যেকোনো ভাষা", + "AlwaysPlaySubtitlesHelp": "ভাষার পছন্দের সাথে মিলিয়ে সাবটাইটেলগুলি লোড করা হবে।", + "AlwaysPlaySubtitles": "সর্বদা চালান", + "AllowRemoteAccessHelp": "যদি টিক না দেয়া হয়, সব রিমোট সংযোগ ব্লক করা হবে।", + "AllowRemoteAccess": "এই সার্ভারে দূরবর্তী সংযোগের অনুমতি দিন।", + "AllowFfmpegThrottling": "থ্রটল ট্রান্সকোড", + "AllowOnTheFlySubtitleExtraction": "অনদাফ্লাই সাবটাইটেল বেরকরার অনুমতি", + "AllowMediaConversion": "মিডিয়া কনভার্টের অনুমতি দিন", + "AllowHWTranscodingHelp": "টিউনার কে স্ট্রিম ট্রান্সকোড করার সুযোগ দিন। এটি সার্ভার ট্রান্সকোডিং কমাতে সাহায্য করতে পারে।", + "Aired": "উন্মুক্ত করন", + "Add": "যোগ" } From 0c84585275e4662781871e8f7a0fbec98bba5dd5 Mon Sep 17 00:00:00 2001 From: nothing things Date: Fri, 14 Aug 2020 16:43:11 +0000 Subject: [PATCH 409/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index e56b7b2723..66f80428cb 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -81,5 +81,6 @@ "AllowMediaConversion": "মিডিয়া কনভার্টের অনুমতি দিন", "AllowHWTranscodingHelp": "টিউনার কে স্ট্রিম ট্রান্সকোড করার সুযোগ দিন। এটি সার্ভার ট্রান্সকোডিং কমাতে সাহায্য করতে পারে।", "Aired": "উন্মুক্ত করন", - "Add": "যোগ" + "Add": "যোগ", + "ButtonPreviousTrack": "পূর্ববর্তী ট্র্যাক" } From 4a6492cf11d952fc14625977958b5dbc130ba7c0 Mon Sep 17 00:00:00 2001 From: nothing things Date: Fri, 14 Aug 2020 16:43:21 +0000 Subject: [PATCH 410/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index 66f80428cb..a100ff2890 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -82,5 +82,6 @@ "AllowHWTranscodingHelp": "টিউনার কে স্ট্রিম ট্রান্সকোড করার সুযোগ দিন। এটি সার্ভার ট্রান্সকোডিং কমাতে সাহায্য করতে পারে।", "Aired": "উন্মুক্ত করন", "Add": "যোগ", - "ButtonPreviousTrack": "পূর্ববর্তী ট্র্যাক" + "ButtonPreviousTrack": "পূর্ববর্তী ট্র্যাক", + "ButtonProfile": "প্রোফাইল" } From 2710cbe43bd09242d82314b957ae33a0630f0b39 Mon Sep 17 00:00:00 2001 From: nothing things Date: Fri, 14 Aug 2020 16:43:33 +0000 Subject: [PATCH 411/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index a100ff2890..b9d652688c 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -83,5 +83,14 @@ "Aired": "উন্মুক্ত করন", "Add": "যোগ", "ButtonPreviousTrack": "পূর্ববর্তী ট্র্যাক", - "ButtonProfile": "প্রোফাইল" + "ButtonProfile": "প্রোফাইল", + "ButtonResume": "রিসিউম", + "ButtonRestart": "রিস্টার্ট", + "ButtonResetPassword": "পাসওয়ার্ড রিসেট করুন", + "ButtonResetEasyPassword": "সহজ পিন কোডটি রিসেট করুন", + "ButtonRename": "নামান্তর", + "ButtonRemove": "সরান", + "ButtonRefreshGuideData": "গাইড ডেটা রিফ্রেশ করুন", + "ButtonRefresh": "রিফ্রেশ", + "ButtonQuickStartGuide": "দ্রুত শুরু করার নির্দেশাবলী" } From 4600d09402ee42257702795addcf5f57e59a8339 Mon Sep 17 00:00:00 2001 From: nothing things Date: Fri, 14 Aug 2020 17:10:47 +0000 Subject: [PATCH 412/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index b9d652688c..f6082e7268 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -92,5 +92,14 @@ "ButtonRemove": "সরান", "ButtonRefreshGuideData": "গাইড ডেটা রিফ্রেশ করুন", "ButtonRefresh": "রিফ্রেশ", - "ButtonQuickStartGuide": "দ্রুত শুরু করার নির্দেশাবলী" + "ButtonQuickStartGuide": "দ্রুত শুরু করার নির্দেশাবলী", + "CopyStreamURL": "স্ট্রিম ইউআরএল কপি", + "ContinueWatching": "দেখা অব্যাহত রাখুন", + "Connect": "কানেক্ট", + "ConfirmEndPlayerSession": "আপনি কি জেলিফিনকে {0} এ বন্ধ করতে চান?", + "ConfirmDeletion": "মোছার বিষয়টি নিশ্চিত করুন", + "ConfirmDeleteItems": "এই আইটেমগুলি মোছা ফাইল ফাইল এবং আপনার মিডিয়া লাইব্রেরি উভয় থেকে মুছে ফেলা হবে। আপনি কি তাই চান?", + "ConfirmDeleteItem": "এই আইটেমটি মোছার ফলে এটি ফাইল সিস্টেম এবং আপনার মিডিয়া লাইব্রেরি উভয় থেকে মুছে যাবে। আপনি কি তাই চান?", + "ConfirmDeleteImage": "ছবি মুছবেন?", + "Absolute": "গুণাতীত" } From 4a72b02601207ccc487d83c14a7bb3a0541ea383 Mon Sep 17 00:00:00 2001 From: nothing things Date: Fri, 14 Aug 2020 17:19:42 +0000 Subject: [PATCH 413/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index f6082e7268..8d76889291 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -101,5 +101,6 @@ "ConfirmDeleteItems": "এই আইটেমগুলি মোছা ফাইল ফাইল এবং আপনার মিডিয়া লাইব্রেরি উভয় থেকে মুছে ফেলা হবে। আপনি কি তাই চান?", "ConfirmDeleteItem": "এই আইটেমটি মোছার ফলে এটি ফাইল সিস্টেম এবং আপনার মিডিয়া লাইব্রেরি উভয় থেকে মুছে যাবে। আপনি কি তাই চান?", "ConfirmDeleteImage": "ছবি মুছবেন?", - "Absolute": "গুণাতীত" + "Absolute": "গুণাতীত", + "CriticRating": "ক্রিটিক রেটিং" } From 9726ec8079a35b75974c48004191c74f154a1f06 Mon Sep 17 00:00:00 2001 From: nothing things Date: Fri, 14 Aug 2020 17:25:03 +0000 Subject: [PATCH 414/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index 8d76889291..b35c836efd 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -102,5 +102,12 @@ "ConfirmDeleteItem": "এই আইটেমটি মোছার ফলে এটি ফাইল সিস্টেম এবং আপনার মিডিয়া লাইব্রেরি উভয় থেকে মুছে যাবে। আপনি কি তাই চান?", "ConfirmDeleteImage": "ছবি মুছবেন?", "Absolute": "গুণাতীত", - "CriticRating": "ক্রিটিক রেটিং" + "CriticRating": "ক্রিটিক রেটিং", + "DefaultMetadataLangaugeDescription": "এগুলি আপনার প্রত্যাশিত এবং প্রতি লাইব্রেরির ভিত্তিতে কাস্টমাইজ করা যায়।", + "ErrorDefault": "অনুরোধটি প্রক্রিয়াতে একটি সমস্যা হয়েছে । অনুগ্রহ করে একটু পরে আবার চেষ্টা করুন।", + "Default": "প্রত্যাশিত", + "DeathDateValue": "মৃত: {0}", + "DatePlayed": "তারিখে চলেছে", + "DateAdded": "তারিখে এসেছে", + "CustomDlnaProfilesHelp": "নতুন ডিভাইসের সিস্টেম প্রোফাইল ওভাররাইড করতে একটি কাস্টম প্রোফাইল তৈরি করুন।" } From 157fa25b1d932c3e8f61cb402daef0c639944cd8 Mon Sep 17 00:00:00 2001 From: nothing things Date: Fri, 14 Aug 2020 17:32:56 +0000 Subject: [PATCH 415/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index b35c836efd..2c32123975 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -109,5 +109,11 @@ "DeathDateValue": "মৃত: {0}", "DatePlayed": "তারিখে চলেছে", "DateAdded": "তারিখে এসেছে", - "CustomDlnaProfilesHelp": "নতুন ডিভাইসের সিস্টেম প্রোফাইল ওভাররাইড করতে একটি কাস্টম প্রোফাইল তৈরি করুন।" + "CustomDlnaProfilesHelp": "নতুন ডিভাইসের সিস্টেম প্রোফাইল ওভাররাইড করতে একটি কাস্টম প্রোফাইল তৈরি করুন।", + "DeleteImageConfirmation": "আপনি কি নিশ্চিত যে আপনি এই চিত্রটি মুছতে চান?", + "DeleteImage": "ছবি মুছুন", + "DeleteDeviceConfirmation": "আপনি কি নিশ্চিত যে আপনি এই ডিভাইসটি মুছতে চান? এটি পরবর্তীতে ব্যবহারকারীর সাইন ইন করার পর ব্যবহারকারীর সাথে এটি আবার প্রদর্শিত হবে।", + "Delete": "মুছে ফেলুন", + "DeinterlaceMethodHelp": "ইন্টারলেসড কন্টেন্ট ট্রান্সকোড করার সময় ব্যবহারের জন্য ডিএনটারলেসিং পদ্ধতিটি নির্বাচন করুন।", + "DefaultSubtitlesHelp": "এম্বেড থাকা মেটাডেটাতে ডিফল্ট এবং জোর করে দেওয়া ফ্ল্যাগের উপর ভিত্তি করে সাবটাইটেলগুলি লোড করা হয়। ভাষা পছন্দগুলি বিবেচনা করা হয় যখন একাধিক বিকল্প থাকে।" } From dc682bce172f79badedbdeb97440921ff9eca024 Mon Sep 17 00:00:00 2001 From: nothing things Date: Fri, 14 Aug 2020 17:36:50 +0000 Subject: [PATCH 416/463] Translated using Weblate (Bengali (Bangladesh)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/bn_BD/ --- src/strings/bn_BD.json | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/strings/bn_BD.json b/src/strings/bn_BD.json index 2c32123975..e13514fda4 100644 --- a/src/strings/bn_BD.json +++ b/src/strings/bn_BD.json @@ -115,5 +115,32 @@ "DeleteDeviceConfirmation": "আপনি কি নিশ্চিত যে আপনি এই ডিভাইসটি মুছতে চান? এটি পরবর্তীতে ব্যবহারকারীর সাইন ইন করার পর ব্যবহারকারীর সাথে এটি আবার প্রদর্শিত হবে।", "Delete": "মুছে ফেলুন", "DeinterlaceMethodHelp": "ইন্টারলেসড কন্টেন্ট ট্রান্সকোড করার সময় ব্যবহারের জন্য ডিএনটারলেসিং পদ্ধতিটি নির্বাচন করুন।", - "DefaultSubtitlesHelp": "এম্বেড থাকা মেটাডেটাতে ডিফল্ট এবং জোর করে দেওয়া ফ্ল্যাগের উপর ভিত্তি করে সাবটাইটেলগুলি লোড করা হয়। ভাষা পছন্দগুলি বিবেচনা করা হয় যখন একাধিক বিকল্প থাকে।" + "DefaultSubtitlesHelp": "এম্বেড থাকা মেটাডেটাতে ডিফল্ট এবং জোর করে দেওয়া ফ্ল্যাগের উপর ভিত্তি করে সাবটাইটেলগুলি লোড করা হয়। ভাষা পছন্দগুলি বিবেচনা করা হয় যখন একাধিক বিকল্প থাকে।", + "EditSubtitles": "সাবটাইটেল এডিট করুন", + "EditMetadata": "মেটাডেটা এডিট করুন", + "EditImages": "ছবিগুলি এডিট করুন", + "Edit": "এডিট", + "EasyPasswordHelp": "আপনার সহজ পিন কোড সমর্থিত ক্লায়েন্ট অফলাইন অ্যাকসেসের জন্য ব্যবহার করা হয় এছাড়াও সহজ-নেটওয়ার্কে ব্যবহার করা যেতে পারে।", + "DrmChannelsNotImported": "ডিআরএম সহ চ্যানেলগুলি ইম্পোর্ট করা হবে না।", + "DownloadsValue": "{0} ডাউনলোড সমূহ", + "Download": "ডাউনলোড", + "Down": "নিচে", + "DoNotRecord": "রেকর্ড করবেন না", + "DisplayMissingEpisodesWithinSeasonsHelp": "এটি অবশ্যই সার্ভার কনফিগারেশনে টিভি লাইব্রেরির জন্য ইনেবল করতে হবে।", + "DisplayInOtherHomeScreenSections": "সর্বশেষ মিডিয়া হিসাবে হোম স্ক্রিন বিভাগে প্রদর্শন করুন এবং দেখা চালিয়ে যান", + "DisplayInMyMedia": "হোম স্ক্রিনে প্রদর্শন করুন", + "Display": "ডিসপ্লে", + "Dislike": "ডিসলাইক", + "Disconnect": "ডিসকানেক্ট", + "Disc": "ডিস্ক", + "Directors": "পরিচালকবৃন্দ", + "Director": "পরিচালক", + "DirectPlaying": "ডাইরেক্ট প্লেয়িং", + "DetectingDevices": "ডিভাইস সনাক্ত করা হচ্ছে", + "Desktop": "ডেস্কটপ", + "Descending": "ডিসেন্ডিং", + "Depressed": "অবনমিত", + "DeleteUserConfirmation": "আপনি কি নিশ্চিত যে আপনি এই ব্যবহারকারীকে মুছতে চান?", + "DeleteUser": "ব্যবহারকারী মুছুন", + "DeleteMedia": "মিডিয়া মুছুন" } From c91a6195d75af7e78f9479afc72e9cee816a9551 Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Fri, 14 Aug 2020 20:00:46 +0200 Subject: [PATCH 417/463] Update src/scripts/clientUtils.js Co-authored-by: Cameron --- src/scripts/clientUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index eb3105a0a2..b8ed8c038b 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -112,7 +112,7 @@ export function processServerConfigurationUpdateResult(result) { ]) .then(([{default: loading}, {default: toast}]) => { loading.hide(); - toast.(Globalize.translate('MessageSettingsSaved')); + toast(Globalize.translate('MessageSettingsSaved')); }); } From e606681872e86d56c9b06da272f4ca184c956b8b Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Fri, 14 Aug 2020 20:00:57 +0200 Subject: [PATCH 418/463] Update src/scripts/clientUtils.js Co-authored-by: Cameron --- src/scripts/clientUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index b8ed8c038b..bf61bb1dd3 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -101,7 +101,7 @@ export function processPluginConfigurationUpdateResult() { ]) .then(([{default: loading}, {default: toast}]) => { loading.hide(); - toast.default(Globalize.translate('MessageSettingsSaved')); + toast(Globalize.translate('MessageSettingsSaved')); }); } From afa56c18af901acf49fccb96db3ad58c7cc82daa Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 22 May 2020 22:23:18 -0600 Subject: [PATCH 419/463] Support for faster playback rates. The HTML5 video element already has a well-supported "playbackRate" attribute which can be used to increase playback rate. This change wires up that control to be displayed in the Jellyfish web player. The playback rates offered are between 0.5x and 2x in 0.25x increments, which matches the YouTube player. This change also wires up the ">" and "<" key events to increase and decrease the playback rate, which mirrors the keyboard shortcuts supported by YouTube. --- src/components/playback/playbackmanager.js | 49 +++++++++++++++++++ src/components/playback/playersettingsmenu.js | 35 +++++++++++++ src/controllers/playback/video/index.js | 6 +++ src/plugins/htmlVideoPlayer/plugin.js | 25 ++++++++++ src/scripts/inputManager.js | 6 +++ src/strings/en-us.json | 1 + 6 files changed, 122 insertions(+) diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index 8502b551af..96268a51d9 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -1112,6 +1112,52 @@ class PlaybackManager { } }; + self.increasePlaybackRate = function (player) { + player = player || self._currentPlayer; + if (player) { + let current = self.getPlaybackRate(player); + let supported = self.getSupportedPlaybackRates(player); + + let index = -1; + for (let i = 0, length = supported.length; i < length; i++) { + if (supported[i].id === current) { + index = i; + break; + } + } + + index = Math.min(index + 1, supported.length - 1); + self.setPlaybackRate(supported[index].id, player); + } + }; + + self.decreasePlaybackRate = function (player) { + player = player || self._currentPlayer; + if (player) { + let current = self.getPlaybackRate(player); + let supported = self.getSupportedPlaybackRates(player); + + let index = -1; + for (let i = 0, length = supported.length; i < length; i++) { + if (supported[i].id === current) { + index = i; + break; + } + } + + index = Math.max(index - 1, 0); + self.setPlaybackRate(supported[index].id, player); + } + }; + + self.getSupportedPlaybackRates = function (player) { + player = player || self._currentPlayer; + if (player && player.getSupportedPlaybackRates) { + return player.getSupportedPlaybackRates(); + } + return []; + }; + let brightnessOsdLoaded; self.setBrightness = function (val, player) { player = player || self._currentPlayer; @@ -3697,6 +3743,9 @@ class PlaybackManager { case 'SetAspectRatio': this.setAspectRatio(cmd.Arguments.AspectRatio, player); break; + case 'PlaybackRate': + this.setPlaybackRate(cmd.Arguments.PlaybackRate, player); + break; case 'SetBrightness': this.setBrightness(cmd.Arguments.Brightness, player); break; diff --git a/src/components/playback/playersettingsmenu.js b/src/components/playback/playersettingsmenu.js index 71dd7a86ff..cd227afcb4 100644 --- a/src/components/playback/playersettingsmenu.js +++ b/src/components/playback/playersettingsmenu.js @@ -149,6 +149,28 @@ function showAspectRatioMenu(player, btn) { }); } +function showPlaybackRateMenu(player, btn) { + // each has a name and id + const currentId = playbackManager.getPlaybackRate(player); + const menuItems = playbackManager.getSupportedPlaybackRates(player).map(i => ({ + id: i.id, + name: i.name, + selected: i.id === currentId + })); + + return actionsheet.show({ + items: menuItems, + positionTo: btn + }).then(function (id) { + if (id) { + playbackManager.setPlaybackRate(id, player); + return Promise.resolve(); + } + + return Promise.reject(); + }); +} + function showWithUser(options, player, user) { var supportedCommands = playbackManager.getSupportedCommands(player); @@ -166,6 +188,17 @@ function showWithUser(options, player, user) { }); } + if (supportedCommands.indexOf('PlaybackRate') !== -1) { + const currentPlaybackRateId = playbackManager.getPlaybackRate(player); + const currentPlaybackRate = playbackManager.getSupportedPlaybackRates(player).filter(i => i.id === currentPlaybackRateId)[0]; + + menuItems.push({ + name: globalize.translate('PlaybackRate'), + id: 'playbackrate', + asideText: currentPlaybackRate ? currentPlaybackRate.name : null + }); + } + if (user && user.Policy.EnableVideoPlaybackTranscoding) { var secondaryQualityText = getQualitySecondaryText(player); @@ -230,6 +263,8 @@ function handleSelectedOption(id, options, player) { return showQualityMenu(player, options.positionTo); case 'aspectratio': return showAspectRatioMenu(player, options.positionTo); + case 'playbackrate': + return showPlaybackRateMenu(player, options.positionTo); case 'repeatmode': return showRepeatModeMenu(player, options.positionTo); case 'stats': diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 73540cd636..ea84b9c3f5 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1243,6 +1243,12 @@ import 'css!assets/css/videoosd'; } break; } + case '>': + playbackManager.increasePlaybackRate(currentPlayer); + break; + case '<': + playbackManager.decreasePlaybackRate(currentPlayer); + break; } } diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index ba497729bb..33f15a741f 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1634,6 +1634,31 @@ function tryRemoveElement(elem) { return null; } + getSupportedPlaybackRates() { + return [{ + name: '0.5x', + id: 0.5 + }, { + name: '0.75x', + id: 0.75 + }, { + name: '1x', + id: 1.0 + }, { + name: '1.25x', + id: 1.25 + }, { + name: '1.5x', + id: 1.5 + }, { + name: '1.75x', + id: 1.75 + }, { + name: '2x', + id: 2.0 + }]; + } + setVolume(val) { const mediaElement = this.#mediaElement; if (mediaElement) { diff --git a/src/scripts/inputManager.js b/src/scripts/inputManager.js index 077af39bf7..baa3deb0aa 100644 --- a/src/scripts/inputManager.js +++ b/src/scripts/inputManager.js @@ -185,6 +185,12 @@ import appHost from 'apphost'; 'changezoom': () => { playbackManager.toggleAspectRatio(); }, + 'increaseplaybackrate': () => { + playbackManager.increasePlaybackRate(); + }, + 'decreaseplaybackrate': () => { + playbackManager.decreasePlaybackRate(); + }, 'changeaudiotrack': () => { playbackManager.changeAudioStream(); }, diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 0f37014b76..38b79613e2 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1220,6 +1220,7 @@ "Play": "Play", "PlayAllFromHere": "Play all from here", "PlaybackData": "Playback Data", + "PlaybackRate": "Playback Rate", "PlayCount": "Play count", "PlayFromBeginning": "Play from beginning", "PlayNext": "Play next", From 7c211e68e63c327439bc759d96d0a0220cd8530f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 15 Aug 2020 01:15:43 +0000 Subject: [PATCH 420/463] Bump eslint from 7.6.0 to 7.7.0 Bumps [eslint](https://github.com/eslint/eslint) from 7.6.0 to 7.7.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v7.6.0...v7.7.0) Signed-off-by: dependabot-preview[bot] --- package.json | 2 +- yarn.lock | 20 +++++--------------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 27508faa1b..fb3c2dbd30 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "css-loader": "^4.2.1", "cssnano": "^4.1.10", "del": "^5.1.0", - "eslint": "^7.6.0", + "eslint": "^7.7.0", "eslint-plugin-compat": "^3.5.1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.21.2", diff --git a/yarn.lock b/yarn.lock index 269b3b93cd..b507238470 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1293,17 +1293,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.12.2, ajv@^6.5.5: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.10.0, ajv@^6.10.2: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5: version "6.12.3" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== @@ -4044,10 +4034,10 @@ eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint@^7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.6.0.tgz#522d67cfaea09724d96949c70e7a0550614d64d6" - integrity sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w== +eslint@^7.7.0: + version "7.7.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.7.0.tgz#18beba51411927c4b64da0a8ceadefe4030d6073" + integrity sha512-1KUxLzos0ZVsyL81PnRN335nDtQ8/vZUD6uMtWbF+5zDtjKcsklIi78XoE0MVL93QvWTu+E5y44VyyCsOMBrIg== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" From de3a1646b0c5e6ceb6a70473ad7ede709fe2f0ee Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 07:27:09 +0000 Subject: [PATCH 421/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index e3bd7a66af..c07bf68bbc 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -506,5 +506,21 @@ "HeaderStartNow": "இப்போதே துவக்கு", "HeaderSpecialFeatures": "சிறப்பு அம்சங்கள்", "HeaderSpecialEpisodeInfo": "சிறப்பு எபிசோட் தகவல்", - "HeaderSortOrder": "வரிசைப்படுத்து வரிசை" + "HeaderSortOrder": "வரிசைப்படுத்து வரிசை", + "LabelAccessStart": "ஆரம்பிக்கும் நேரம்:", + "LabelAccessEnd": "இறுதி நேரம்:", + "LabelAccessDay": "வாரத்தின் நாள்:", + "LabelAbortedByServerShutdown": "(சேவையக பணிநிறுத்தத்தால் கைவிடப்பட்டது)", + "Label3DFormat": "3D வடிவம்:", + "Kids": "குழந்தைகள்", + "Items": "உருப்படிகள்", + "ItemCount": "{0} உருப்படிகள்", + "InstantMix": "உடனடி கலவை", + "InstallingPackage": "{0} (பதிப்பு {1}) ஐ நிறுவுகிறது", + "ImportMissingEpisodesHelp": "காணாமல் போன அத்தியாயங்கள் பற்றிய தகவல்கள் உங்கள் தரவுத்தளத்தில் இறக்குமதி செய்யப்பட்டு பருவங்கள் மற்றும் தொடர்களில் காண்பிக்கப்படும். இது கணிசமாக நீண்ட நூலக ஸ்கேன்களை ஏற்படுத்தக்கூடும்.", + "ImportFavoriteChannelsHelp": "ட்யூனர் சாதனத்தில் பிடித்ததாகக் குறிக்கப்பட்ட சேனல்கள் மட்டுமே இறக்குமதி செய்யப்படும்.", + "Images": "படங்கள்", + "Identify": "அடையாளம் காணவும்", + "HttpsRequiresCert": "பாதுகாப்பான இணைப்புகளை இயக்க, நீங்கள் மறைகுறியாக்கம் போன்ற நம்பகமான SSL சான்றிதழை வழங்க வேண்டும். தயவுசெய்து ஒரு சான்றிதழை வழங்கவும் அல்லது பாதுகாப்பான இணைப்புகளை முடக்கவும்.", + "Horizontal": "கிடைமட்ட" } From b408ff53314c3084f59b579af25ba678b176e96c Mon Sep 17 00:00:00 2001 From: millallo Date: Sat, 15 Aug 2020 07:49:10 +0000 Subject: [PATCH 422/463] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index 758cb25f6e..cb73ea2cdb 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -20,7 +20,7 @@ "AllowHWTranscodingHelp": "Abilita il sintonizzatore per codificare i flussi al volo. Ciò potrebbe contribuire a ridurre la transcodifica richiesta dal server.", "AllowOnTheFlySubtitleExtraction": "Consenti l'estrazione sottotitoli al volo", "AllowOnTheFlySubtitleExtractionHelp": "I sottotitoli incorporati possono essere estratti dai video e consegnati ai client in testo semplice per evitare la transcodifica dei video. In alcuni sistemi questo può richiedere molto tempo e causare un rallentamento della riproduzione video durante il processo di estrazione. Disattivare questa opzione per avere i sottotitoli incorporati con la transcodifica video quando non sono supportati nativamente dal dispositivo client.", - "AllowRemoteAccess": "Abilita connessioni remote a questo Server Jellyfin.", + "AllowRemoteAccess": "Abilita connessioni remote a questo server.", "AllowRemoteAccessHelp": "Se deselezionato, tutte le connessioni remote saranno bloccate.", "AllowedRemoteAddressesHelp": "Elenco separato da virgola di indirizzi IP o voci IP / maschera di rete per reti che potranno connettersi da remoto. Se lasciato vuoto, saranno consentiti tutti gli indirizzi remoti.", "AlwaysPlaySubtitles": "Riproduci sempre", @@ -110,7 +110,7 @@ "ColorTransfer": "Trasferimento Colore", "CommunityRating": "Voto del pubblico", "Composer": "Compositore", - "ConfigureDateAdded": "Scegli come determinare la data di aggiunta dal pannello di controllo del Server Jellyfin, nelle impostazioni della Libreria", + "ConfigureDateAdded": "Scegli come determinare la data di aggiunta dal pannello di controllo nelle impostazioni della libreria", "ConfirmDeleteImage": "Elimina immagine?", "ConfirmDeleteItem": "L'eliminazione di questo elemento lo cancellerà sia dal disco che dalla libreria multimediale. Sei sicuro di voler continuare?", "ConfirmDeleteItems": "L'eliminazione di questi elementi li cancellerà sia dal disco che dalla tua libreria multimediale. Sei sicuro di voler continuare?", @@ -187,7 +187,7 @@ "EndsAtValue": "Finirà alle {0}", "Episodes": "Episodi", "ErrorAddingListingsToSchedulesDirect": "C'è stato un errore nell'aggiunta della tua lista all'account Schedules Direct.\nSchedules Direct permette solo un numero limitato di selezioni per account. Potresti aver bisogno di accedere al sito Schedules Direct e rimuoverne alcune prima di procedere.", - "ErrorAddingMediaPathToVirtualFolder": "C'è stato un errore durante l'aggiunta del percorso. Per favore controlla che il percorso sia valido, e che Jellyfin Server abbia l'accesso alla posizione indicata.", + "ErrorAddingMediaPathToVirtualFolder": "C'è stato un errore durante l'aggiunta del percorso. Per favore controlla che il percorso sia valido, e che Jellyfin abbia l'accesso alla posizione indicata.", "ErrorAddingTunerDevice": "Si è verificato un errore durante l'aggiunta del sintonizzatore. Si prega di assicurarsi che sia accessibile e riprovare.", "ErrorAddingXmlTvFile": "Si è verificato un errore durante l'accesso al file XMLTV. Si prega di assicurarsi che il file esista e riprovare.", "ErrorDeletingItem": "Si è verificato un errore durante l'eliminazione dell'elemento da Jellyfin Server. Verifica che Jellyfin Server abbia accesso in scrittura sulla cartella multimediale e riprova.", From 882ede13bd5b3f7f21de168bdf8e32e6e99259f3 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 08:05:45 +0000 Subject: [PATCH 423/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index c07bf68bbc..1e490e6969 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -522,5 +522,42 @@ "Images": "படங்கள்", "Identify": "அடையாளம் காணவும்", "HttpsRequiresCert": "பாதுகாப்பான இணைப்புகளை இயக்க, நீங்கள் மறைகுறியாக்கம் போன்ற நம்பகமான SSL சான்றிதழை வழங்க வேண்டும். தயவுசெய்து ஒரு சான்றிதழை வழங்கவும் அல்லது பாதுகாப்பான இணைப்புகளை முடக்கவும்.", - "Horizontal": "கிடைமட்ட" + "Horizontal": "கிடைமட்ட", + "LabelBlockContentWithTags": "குறிச்சொற்களைக் கொண்ட உருப்படிகளைத் தடு:", + "LabelBlastMessageIntervalHelp": "உயிருள்ள செய்திகளுக்கு இடையில் வினாடிகளில் கால அளவை தீர்மானிக்கிறது.", + "LabelBlastMessageInterval": "உயிருள்ள செய்தி இடைவெளி", + "LabelBitrate": "பிட்ரேட்:", + "LabelBirthYear": "பிறந்த வருடம்:", + "LabelBirthDate": "பிறந்த தேதி:", + "LabelBindToLocalNetworkAddressHelp": "HTTP சேவையகத்திற்கான உள்ளூர் ஐபி முகவரியை மேலெழுதவும். காலியாக இருந்தால், கிடைக்கக்கூடிய எல்லா முகவரிகளுடனும் சேவையகம் பிணைக்கப்படும். இந்த மதிப்பை மாற்ற மறுதொடக்கம் தேவை.", + "LabelBindToLocalNetworkAddress": "உள்ளூர் பிணைய முகவரியுடன் பிணைக்கவும்:", + "LabelAutomaticallyRefreshInternetMetadataEvery": "இணையத்திலிருந்து மெட்டாடேட்டாவை தானாக புதுப்பிக்கவும்:", + "LabelAuthProvider": "அங்கீகார வழங்குநர்:", + "LabelAudioSampleRate": "ஆடியோ மாதிரி வீதம்:", + "LabelAudioLanguagePreference": "விருப்பமான ஆடியோ மொழி:", + "LabelAudioCodec": "ஆடியோ கோடெக்:", + "LabelAudioChannels": "ஆடியோ சேனல்கள்:", + "LabelAudioBitrate": "ஆடியோ பிட்ரேட்:", + "LabelAudioBitDepth": "ஆடியோ பிட் ஆழம்:", + "LabelAudio": "ஆடியோ", + "LabelArtistsHelp": "அரைக்காற்புள்ளியுடன் பல கலைஞர்களைப் பிரிக்கவும்.", + "LabelArtists": "கலைஞர்கள்:", + "LabelAppNameExample": "எடுத்துக்காட்டு: Sickbeard, Sonarr", + "LabelAppName": "பயன்பாட்டின் பெயர்", + "LabelAllowedRemoteAddressesMode": "தொலை ஐபி முகவரி வடிகட்டி பயன்முறை:", + "LabelAllowedRemoteAddresses": "தொலை ஐபி முகவரி வடிப்பான்:", + "LabelAllowHWTranscoding": "வன்பொருள் டிரான்ஸ்கோடிங்கை அனுமதிக்கவும்", + "LabelAlbumArtists": "ஆல்பம் கலைஞர்கள்:", + "LabelAlbumArtPN": "ஆல்பம் படம் PN:", + "LabelAlbumArtMaxWidthHelp": "ஆல்பம் படத்தின் அதிகபட்ச தெளிவுத்திறன் upnp வழியாக வெளிப்படுத்தப்படுகிறது: albumArtURI.", + "LabelAlbumArtMaxWidth": "ஆல்பம் படம் அதிகபட்ச அகலம்:", + "LabelAlbumArtMaxHeightHelp": "ஆல்பம் படத்தின் அதிகபட்ச தெளிவுத்திறன் upnp வழியாக வெளிப்படுத்தப்படுகிறது: albumArtURI.", + "LabelAlbumArtMaxHeight": "ஆல்பம் படம் அதிகபட்ச உயரம்:", + "LabelAlbumArtHelp": "ஆல்பம் கலைக்கு PN பயன்படுத்தப்படுகிறது, dlna: profileID பண்புக்கூறு upnp: albumArtURI. சில சாதனங்களுக்கு படத்தின் அளவைப் பொருட்படுத்தாமல் ஒரு குறிப்பிட்ட மதிப்பு தேவைப்படுகிறது.", + "LabelAlbum": "ஆல்பம்:", + "LabelAirsBeforeSeason": "பருவத்திற்கு முன் ஒளிபரப்பாகிறது:", + "LabelAirsBeforeEpisode": "அத்தியாயத்திற்கு முன் ஒளிபரப்பாகிறது:", + "LabelAirsAfterSeason": "பருவத்திற்குப் பிறகு ஒளிபரப்பாகிறது:", + "LabelAirTime": "ஒளிபரப்பப்பட்ட நேரம்:", + "LabelAirDays": "ஒளிபரப்பப்பட்ட நாட்கள்:" } From 78e64420fef7e1f1bc28da505acf514ec2028ab1 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 08:39:24 +0000 Subject: [PATCH 424/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 57 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 1e490e6969..36eb028372 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -24,10 +24,10 @@ "AllowFfmpegThrottlingHelp": "ஒரு டிரான்ஸ்கோட் அல்லது ரீமக்ஸ் தற்போதைய பின்னணி நிலையிலிருந்து வெகு தொலைவில் இருக்கும்போது, செயல்முறையை இடைநிறுத்துங்கள், இதனால் அது குறைந்த ஆதாரங்களை நுகரும். அடிக்கடி தேடாமல் பார்க்கும்போது இது மிகவும் பயனுள்ளதாக இருக்கும். பின்னணி சிக்கல்களை நீங்கள் சந்தித்தால் இதை அணைக்கவும்.", "AllowFfmpegThrottling": "திராட்டில் ட்ரான்ஸ்கோட்கள்", "AllowOnTheFlySubtitleExtractionHelp": "வீடியோ டிரான்ஸ்கோடிங்கைத் தடுக்க உதவும் வகையில் உட்பொதிக்கப்பட்ட வசனங்களை வீடியோக்களிலிருந்து பிரித்தெடுத்து வாடிக்கையாளர்களுக்கு எளிய உரையில் வழங்கலாம். சில கணினிகளில் இது நீண்ட நேரம் எடுக்கும் மற்றும் பிரித்தெடுக்கும் செயல்பாட்டின் போது வீடியோ பிளேபேக் நிறுத்தப்படும். கிளையன்ட் சாதனத்தால் பூர்வீகமாக ஆதரிக்கப்படாதபோது உட்பொதிக்கப்பட்ட வசன வரிகள் வீடியோ டிரான்ஸ்கோடிங்கில் எரிக்கப்படுவதை முடக்கு.", - "AllowOnTheFlySubtitleExtraction": "பறக்கையில் வசன வரிகள் பிரித்தெடுக்க அனுமதிக்கவும்", + "AllowOnTheFlySubtitleExtraction": "வசன வரிகள் பிரித்தெடுக்க அனுமதிக்கவும்", "AllowMediaConversionHelp": "மாற்றும் ஊடக அம்சத்திற்கான அணுகலை வழங்கவும் அல்லது மறுக்கவும்.", "AllowMediaConversion": "ஊடக மாற்றத்தை அனுமதிக்கவும்", - "AllowHWTranscodingHelp": "ட்யூனரை பறக்கும்போது ஸ்ட்ரீம்களை டிரான்ஸ்கோட் செய்ய அனுமதிக்கவும். இது சேவையகத்திற்கு தேவையான டிரான்ஸ்கோடிங்கைக் குறைக்க உதவும்.", + "AllowHWTranscodingHelp": "ட்யூனரை பயன்படுத்தும்போது ஸ்ட்ரீம்களை டிரான்ஸ்கோட் செய்ய அனுமதிக்கவும். இது சேவையகத்திற்கு தேவையான டிரான்ஸ்கோடிங்கைக் குறைக்க உதவும்.", "AllLibraries": "அனைத்து நூலகங்களும்", "AllLanguages": "அனைத்து மொழிகளையும்", "AllEpisodes": "எல்லா அத்தியாயங்களும்", @@ -559,5 +559,56 @@ "LabelAirsBeforeEpisode": "அத்தியாயத்திற்கு முன் ஒளிபரப்பாகிறது:", "LabelAirsAfterSeason": "பருவத்திற்குப் பிறகு ஒளிபரப்பாகிறது:", "LabelAirTime": "ஒளிபரப்பப்பட்ட நேரம்:", - "LabelAirDays": "ஒளிபரப்பப்பட்ட நாட்கள்:" + "LabelAirDays": "ஒளிபரப்பப்பட்ட நாட்கள்:", + "LabelEmbedAlbumArtDidl": "Didlல் ஆல்பம் கலையை உட்பொதிக்கவும்", + "LabelEasyPinCode": "எளிதாக பின் குறியீடு:", + "LabelDynamicExternalId": "{0} ஐடி:", + "LabelDropShadow": "வீழ்நிழல்:", + "LabelDroppedFrames": "கைவிடப்பட்ட பிரேம்கள்:", + "LabelDropImageHere": "படத்தை இங்கே இணைக்கவும் அல்லது உலவ கிளிக் செய்யவும்.", + "LabelDownloadLanguages": "மொழிகளைப் பதிவிறக்குங்கள்:", + "LabelDownMixAudioScaleHelp": "குறைக்கும் போது ஆடியோவை அதிகரிக்கவும். ஒன்றின் மதிப்பு அசல் ஒலி அளவை பாதுகாக்கும்.", + "LabelDownMixAudioScale": "குறைக்கும் போது ஆடியோ ஏற்றம்:", + "LabelDisplaySpecialsWithinSeasons": "அவர்கள் ஒளிபரப்பிய பருவங்களுக்குள் சிறப்புகளைக் காண்பி", + "LabelDisplayOrder": "காட்சி வரிசை:", + "LabelDisplayName": "காட்சி பெயர்:", + "LabelDisplayMode": "காட்சி முறை:", + "LabelDisplayMissingEpisodesWithinSeasons": "காணாமல் போன அத்தியாயங்களை பருவங்களுக்குள் காண்பி", + "LabelDisplayLanguageHelp": "ஜெல்லிஃபின் மொழிபெயர்ப்பது ஒரு தொடர்ச்சியான திட்டம்.", + "LabelDisplayLanguage": "காட்சி மொழி:", + "LabelDiscNumber": "வட்டு எண்:", + "LabelDidlMode": "DIDL பயன்முறை:", + "LabelDeviceDescription": "சாதன விளக்கம்", + "LabelDeinterlaceMethod": "நீக்குதல் முறை:", + "LabelDefaultUserHelp": "இணைக்கப்பட்ட சாதனங்களில் எந்த பயனர் நூலகம் காட்டப்பட வேண்டும் என்பதை தீர்மானிக்கிறது. சுயவிவரங்களைப் பயன்படுத்தி ஒவ்வொரு சாதனத்திற்கும் இது மேலெழுதப்படலாம்.", + "LabelDefaultUser": "இயல்புநிலை பயனர்:", + "LabelDefaultScreen": "இயல்புநிலை திரை:", + "LabelDeathDate": "இறப்பு தேதி:", + "LabelDay": "நாள்:", + "LabelDateTimeLocale": "தேதி நேர இடம்:", + "LabelDateAddedBehaviorHelp": "ஒரு மெட்டாடேட்டா மதிப்பு இருந்தால், இந்த விருப்பங்களில் ஒன்றுக்கு முன்பே இது எப்போதும் பயன்படுத்தப்படும்.", + "LabelDateAddedBehavior": "புதிய உள்ளடக்கத்திற்கான தேதி சேர்க்கப்பட்ட நடத்தை:", + "LabelDateAdded": "சேர்க்கப்பட்ட தேதி:", + "LabelCustomRating": "தனிப்பயன் மதிப்பீடு:", + "LabelCustomDeviceDisplayNameHelp": "தனிப்பயன் காட்சி பெயரை வழங்கவும் அல்லது சாதனத்தால் புகாரளிக்கப்பட்ட பெயரைப் பயன்படுத்த காலியாக விடவும்.", + "LabelCustomDeviceDisplayName": "காட்சி பெயர்:", + "LabelCustomCssHelp": "வலை இடைமுகத்தில் உங்கள் சொந்த தனிப்பயன் பாணிகளைப் பயன்படுத்துங்கள்.", + "LabelCustomCss": "தனிப்பயன் CSS:", + "LabelCustomCertificatePathHelp": "தனிப்பயன் களத்தில் TLS ஆதரவை இயக்க சான்றிதழ் மற்றும் தனிப்பட்ட விசையைக் கொண்ட PKCS # 12 கோப்பிற்கான பாதை.", + "LabelCustomCertificatePath": "தனிப்பயன் SSL சான்றிதழ் பாதை:", + "LabelCurrentPassword": "தற்போதைய கடவுச்சொல்:", + "LabelCriticRating": "விமர்சன மதிப்பீடு:", + "LabelCountry": "நாடு:", + "LabelCorruptedFrames": "சிதைந்த பிரேம்கள்:", + "LabelContentType": "உள்ளடக்க வகை:", + "LabelCommunityRating": "சமூக மதிப்பீடு:", + "LabelCollection": "தொகுப்பு:", + "LabelChannels": "சேனல்கள்:", + "LabelCertificatePasswordHelp": "உங்கள் சான்றிதழுக்கு கடவுச்சொல் தேவைப்பட்டால், அதை இங்கே உள்ளிடவும்.", + "LabelCertificatePassword": "சான்றிதழ் கடவுச்சொல்:", + "LabelCancelled": "ரத்து செய்யப்பட்டது", + "LabelCachePathHelp": "படங்கள் போன்ற சேவையக தற்காலிக சேமிப்பு கோப்புகளுக்கான தனிப்பயன் இருப்பிடத்தைக் குறிப்பிடவும். சேவையக இயல்புநிலையைப் பயன்படுத்த காலியாக விடவும்.", + "LabelCachePath": "தற்காலிக சேமிப்பு பாதை:", + "LabelCache": "தற்காலிக சேமிப்பு:", + "LabelBurnSubtitles": "வசன வரிகள் பதிக்க:" } From 1e35883943b3805727a9c2a7f4a12525d81da8eb Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 09:02:57 +0000 Subject: [PATCH 425/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 156 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 155 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 36eb028372..48c82a6eee 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -610,5 +610,159 @@ "LabelCachePathHelp": "படங்கள் போன்ற சேவையக தற்காலிக சேமிப்பு கோப்புகளுக்கான தனிப்பயன் இருப்பிடத்தைக் குறிப்பிடவும். சேவையக இயல்புநிலையைப் பயன்படுத்த காலியாக விடவும்.", "LabelCachePath": "தற்காலிக சேமிப்பு பாதை:", "LabelCache": "தற்காலிக சேமிப்பு:", - "LabelBurnSubtitles": "வசன வரிகள் பதிக்க:" + "LabelBurnSubtitles": "வசன வரிகள் பதிக்க:", + "LabelPleaseRestart": "வலை கிளையண்டை கைமுறையாக மீண்டும் ஏற்றிய பிறகு மாற்றங்கள் நடைமுறைக்கு வரும்.", + "LabelPlayMethod": "விளையாட்டு முறை:", + "LabelPlaylist": "பிளேலிஸ்ட்:", + "LabelPlayerDimensions": "பிளேயர் பரிமாணங்கள்:", + "LabelPlayer": "பிளேயர்:", + "LabelPlayDefaultAudioTrack": "மொழியைப் பொருட்படுத்தாமல் இயல்புநிலை ஆடியோ டிராக்கை இயக்கு", + "LabelPlaceOfBirth": "பிறந்த இடம்:", + "LabelPersonRoleHelp": "எடுத்துக்காட்டு: ஐஸ்கிரீம் டிரக் டிரைவர்", + "LabelPersonRole": "பங்கு:", + "LabelPath": "பாதை:", + "LabelPasswordRecoveryPinCode": "அஞ்சல் குறியீடு:", + "LabelPasswordResetProvider": "கடவுச்சொல் மீட்டமை வழங்குநர்:", + "LabelPasswordConfirm": "கடவுச்சொல் (உறுதிப்படுத்து):", + "LabelPassword": "கடவுச்சொல்:", + "LabelParentalRating": "பெற்றோர் மதிப்பீடு:", + "LabelParentNumber": "பெற்றோர் எண்:", + "LabelOverview": "கண்ணோட்டம்:", + "LabelOriginalTitle": "அசல் தலைப்பு:", + "LabelOriginalAspectRatio": "அசல் விகித விகிதம்:", + "LabelOptionalNetworkPathHelp": "இந்த கோப்புறை உங்கள் பிணையத்தில் பகிரப்பட்டால், பிணைய பகிர்வு பாதையை வழங்குவது பிற சாதனங்களில் உள்ள வாடிக்கையாளர்களுக்கு மீடியா கோப்புகளை நேரடியாக அணுக அனுமதிக்கும். எடுத்துக்காட்டாக, {0} அல்லது {1}.", + "LabelOptionalNetworkPath": "பகிரப்பட்ட பிணைய கோப்புறை:", + "LabelNumberOfGuideDaysHelp": "வழிகாட்டி தரவின் அதிக நாட்கள் பதிவிறக்குவது முன்கூட்டியே திட்டமிடவும் மேலும் பட்டியல்களைக் காணவும் திறனை வழங்குகிறது, ஆனால் பதிவிறக்குவதற்கு அதிக நேரம் எடுக்கும். சேனல்களின் எண்ணிக்கையின் அடிப்படையில் ஆட்டோ தேர்வு செய்யும்.", + "LabelNumberOfGuideDays": "பதிவிறக்க வழிகாட்டி தரவின் நாட்களின் எண்ணிக்கை:", + "LabelNumber": "எண்:", + "LabelNotificationEnabled": "இந்த அறிவிப்பை இயக்கவும்", + "LabelNewsCategories": "செய்தி பிரிவுகள்:", + "LabelNewPasswordConfirm": "புதிய கடவு சொல்லை உறுதி செய்:", + "LabelNewPassword": "புதிய கடவுச்சொல்:", + "LabelNewName": "புதிய பெயர்:", + "LabelUnstable": "நிலையற்றது", + "LabelStable": "நிலையானது", + "LabelChromecastVersion": "Chromecast பதிப்பு", + "LabelName": "பெயர்:", + "LabelMusicStreamingTranscodingBitrateHelp": "இசையை ஸ்ட்ரீமிங் செய்யும் போது அதிகபட்ச பிட்ரேட்டைக் குறிப்பிடவும்.", + "LabelMusicStreamingTranscodingBitrate": "இசை டிரான்ஸ்கோடிங் பிட்ரேட்:", + "LabelMovieRecordingPath": "திரைப்பட பதிவு பாதை:", + "LabelMoviePrefixHelp": "திரைப்பட தலைப்புகளுக்கு ஒரு முன்னொட்டு பயன்படுத்தப்பட்டால், அதை இங்கே உள்ளிடவும், இதனால் சேவையகம் அதை சரியாக கையாள முடியும்.", + "LabelMoviePrefix": "திரைப்பட முன்னொட்டு:", + "LabelMovieCategories": "திரைப்பட பிரிவுகள்:", + "LabelMonitorUsers": "இதிலிருந்து செயல்பாட்டைக் கண்காணிக்கவும்:", + "LabelModelUrl": "மாதிரி URL", + "LabelModelNumber": "மாதிரி எண்", + "LabelModelName": "மாதிரி பெயர்", + "LabelModelDescription": "மாதிரி விளக்கம்", + "LabelMinScreenshotDownloadWidth": "குறைந்தபட்ச ஸ்கிரீன்ஷாட் பதிவிறக்க அகலம்:", + "LabelMinResumePercentageHelp": "இந்த நேரத்திற்கு முன் நிறுத்தப்பட்டால் தலைப்புகள் காட்டப்படாது என்று கருதப்படுகிறது.", + "LabelMinResumePercentage": "குறைந்தபட்ச மறுதொடக்கம் சதவீதம்:", + "LabelMinResumeDurationHelp": "பின்னணி இருப்பிடத்தைச் சேமிக்கும் மற்றும் மீண்டும் தொடங்க அனுமதிக்கும் வினாடிகளில் மிகக் குறுகிய வீடியோ நீளம்.", + "LabelMinResumeDuration": "குறைந்தபட்ச மறுதொடக்கம் காலம்:", + "LabelMinBackdropDownloadWidth": "குறைந்தபட்ச பின்னணி பதிவிறக்க அகலம்:", + "LabelMethod": "முறை:", + "LabelMetadataSaversHelp": "உங்கள் மெட்டாடேட்டாவைச் சேமிக்கும்போது பயன்படுத்த கோப்பு வடிவங்களைத் தேர்வுசெய்க.", + "LabelMetadataSavers": "மெட்டாடேட்டா சேமிப்பாளர்கள்:", + "LabelMetadataReadersHelp": "உங்கள் விருப்பமான உள்ளூர் மெட்டாடேட்டா ஆதாரங்களை முன்னுரிமையின் அடிப்படையில் வரிசைப்படுத்தவும். கண்டுபிடிக்கப்பட்ட முதல் கோப்பு படிக்கப்படும்.", + "LabelMetadataReaders": "மெட்டாடேட்டா வாசகர்கள்:", + "LabelMetadataPathHelp": "பதிவிறக்கம் செய்யப்பட்ட கலைப்படைப்பு மற்றும் மெட்டாடேட்டாவிற்கான தனிப்பயன் இருப்பிடத்தைக் குறிப்பிடவும்.", + "LabelMetadataPath": "மெட்டாடேட்டா பாதை:", + "LabelMetadataDownloadersHelp": "முன்னுரிமைக்கு ஏற்ப உங்களுக்கு விருப்பமான மெட்டாடேட்டா பதிவிறக்கிகளை இயக்கவும் தரவரிசைப்படுத்தவும். காணாமல் போன தகவல்களை நிரப்ப மட்டுமே குறைந்த முன்னுரிமை பதிவிறக்கிகள் பயன்படுத்தப்படும்.", + "LabelMetadataDownloadLanguage": "விருப்பமான பதிவிறக்க மொழி:", + "LabelMetadata": "மெட்டாடேட்டா:", + "LabelMessageTitle": "செய்தி தலைப்பு:", + "LabelMessageText": "செய்தி உரை:", + "LabelMaxStreamingBitrateHelp": "ஸ்ட்ரீமிங் செய்யும் போது அதிகபட்ச பிட்ரேட்டைக் குறிப்பிடவும்.", + "LabelMaxStreamingBitrate": "அதிகபட்ச ஸ்ட்ரீமிங் தரம்:", + "LabelMaxScreenshotsPerItem": "ஒரு உருப்படிக்கு அதிகபட்ச ஸ்கிரீன் ஷாட்கள்:", + "LabelMaxResumePercentageHelp": "இந்த நேரத்திற்குப் பிறகு நிறுத்தப்பட்டால் தலைப்புகள் முழுமையாக விளையாடப்படும் என்று கருதப்படுகிறது.", + "LabelMaxResumePercentage": "அதிகபட்ச மறுதொடக்கம் சதவீதம்:", + "LabelMaxParentalRating": "அனுமதிக்கப்பட்ட அதிகபட்ச பெற்றோர் மதிப்பீடு:", + "LabelMaxChromecastBitrate": "Chromecast ஸ்ட்ரீமிங் தரம்:", + "LabelMaxBackdropsPerItem": "ஒரு உருப்படிக்கு அதிகபட்ச பின்னணி எண்ணிக்கை:", + "LabelMatchType": "பொருந்தும் வகை:", + "LabelManufacturerUrl": "உற்பத்தியாளர் URL", + "LabelManufacturer": "உற்பத்தியாளர்:", + "LabelLogs": "பதிவுகள்:", + "LabelLoginDisclaimerHelp": "உள்நுழைவு பக்கத்தின் கீழே காண்பிக்கப்படும் செய்தி.", + "LabelLoginDisclaimer": "உள்நுழைவு மறுப்பு:", + "LabelLockItemToPreventChanges": "எதிர்கால மாற்றங்களைத் தடுக்க இந்த உருப்படியைப் பூட்டவும்", + "LabelLocalHttpServerPortNumberHelp": "HTTP சேவையகத்திற்கான TCP போர்ட் எண்.", + "LabelLocalHttpServerPortNumber": "உள்ளூர் HTTP போர்ட் எண்:", + "LabelLineup": "வரிசை:", + "LabelLibraryPageSizeHelp": "நூலகப் பக்கத்தில் காண்பிக்க வேண்டிய பொருட்களின் அளவை அமைக்கிறது. பேஜிங்கை முடக்க 0 என அமைக்கவும்.", + "LabelLibraryPageSize": "நூலக பக்க அளவு:", + "LabelLanguage": "மொழி:", + "LabelLanNetworks": "LAN நெட்வொர்க்குகள்:", + "LabelKodiMetadataUserHelp": "பிற பயன்பாடுகளைப் பயன்படுத்த வாட்ச் தரவை NFO கோப்புகளில் சேமிக்கவும்.", + "LabelKodiMetadataUser": "இதற்காக பயனர் கண்காணிப்பு தரவை NFO கோப்புகளில் சேமிக்கவும்:", + "LabelKodiMetadataSaveImagePathsHelp": "Kodi வழிகாட்டுதல்களுக்கு இணங்காத படக் கோப்பு பெயர்கள் உங்களிடம் இருந்தால் இது பரிந்துரைக்கப்படுகிறது.", + "LabelKodiMetadataSaveImagePaths": "பட வழிகளை nfo கோப்புகளுக்குள் சேமிக்கவும்", + "LabelKodiMetadataEnablePathSubstitutionHelp": "சேவையகத்தின் பாதை மாற்று அமைப்புகளைப் பயன்படுத்தி பட பாதைகளின் பாதை மாற்றீட்டை இயக்குகிறது.", + "LabelKodiMetadataEnablePathSubstitution": "பாதை மாற்றீட்டை இயக்கு", + "LabelKodiMetadataEnableExtraThumbsHelp": "படங்களை பதிவிறக்கும் போது அவை அதிகபட்ச கோடி தோல் பொருந்தக்கூடிய தன்மைக்காக எக்ஸ்ட்ராஃபனார்ட் மற்றும் எக்ஸ்ட்ராஹம்ப்ஸில் சேமிக்கப்படும்.", + "LabelKodiMetadataEnableExtraThumbs": "extrafanart-ஐ extrathumbs புலத்திற்கு நகலெடுக்கவும்", + "LabelKodiMetadataDateFormatHelp": "NFO கோப்புகளில் உள்ள அனைத்து தேதிகளும் இந்த வடிவமைப்பைப் பயன்படுத்தி பாகுபடுத்தப்படும்.", + "LabelKodiMetadataDateFormat": "வெளியீட்டு தேதி வடிவம்:", + "LabelKidsCategories": "குழந்தைகள் பிரிவுகள்:", + "LabelKeepUpTo": "தொடர்ந்து இருங்கள்:", + "LabelInternetQuality": "இணைய தரம்:", + "LabelInNetworkSignInWithEasyPasswordHelp": "உங்கள் உள்ளூர் நெட்வொர்க்கில் உள்ள வாடிக்கையாளர்களுக்கு உள்நுழைய எளிதான முள் குறியீட்டைப் பயன்படுத்தவும். உங்கள் வழக்கமான கடவுச்சொல் வீட்டிலிருந்து மட்டுமே தேவைப்படும். முள் குறியீடு காலியாக இருந்தால், உங்கள் வீட்டு நெட்வொர்க்கில் கடவுச்சொல் தேவையில்லை.", + "LabelInNetworkSignInWithEasyPassword": "எனது எளிதான முள் குறியீட்டைக் கொண்டு பிணைய உள்நுழைவை இயக்கவும்", + "LabelImportOnlyFavoriteChannels": "பிடித்ததாகக் குறிக்கப்பட்ட சேனல்களுக்கு கட்டுப்படுத்தவும்", + "LabelImageType": "பட வகை:", + "LabelImageFetchersHelp": "முன்னுரிமைக்கு ஏற்ப உங்களுக்கு விருப்பமான பட பெறுபவர்களை இயக்கவும் தரவரிசைப்படுத்தவும்.", + "LabelIdentificationFieldHelp": "ஒரு வழக்கு-உணர்வற்ற அடி மூலக்கூறு அல்லது ரீஜெக்ஸ் வெளிப்பாடு.", + "LabelIconMaxWidthHelp": "Upnp: ஐகான் வழியாக வெளிப்படும் ஐகான்களின் அதிகபட்ச தீர்மானம்.", + "LabelIconMaxWidth": "ஐகான் அதிகபட்ச அகலம்:", + "LabelIconMaxHeightHelp": "Upnp: ஐகான் வழியாக வெளிப்படும் ஐகான்களின் அதிகபட்ச தீர்மானம்.", + "LabelIconMaxHeight": "ஐகான் அதிகபட்ச உயரம்:", + "LabelHttpsPortHelp": "HTTPS சேவையகத்திற்கான TCP போர்ட் எண்.", + "LabelHttpsPort": "உள்ளூர் HTTPS போர்ட் எண்:", + "LabelHomeScreenSectionValue": "முகப்புத் திரை பிரிவு {0}:", + "LabelHomeNetworkQuality": "முகப்பு நெட்வொர்க் தரம்:", + "LabelHardwareAccelerationTypeHelp": "வன்பொருள் முடுக்கம் கூடுதல் உள்ளமைவு தேவை.", + "LabelHardwareAccelerationType": "வன்பொருள் முடுக்கம்:", + "LabelEncoderPreset": "H264 மற்றும் H265 குறியாக்க முன்னமைவு:", + "LabelH264Crf": "H264 குறியாக்கம் CRF:", + "LabelGroupMoviesIntoCollectionsHelp": "மூவி பட்டியல்களைக் காண்பிக்கும் போது, ஒரு தொகுப்பில் உள்ள திரைப்படங்கள் ஒரு குழுவாகக் காட்டப்படும்.", + "LabelGroupMoviesIntoCollections": "திரைப்படங்களை தொகுப்பாக குழு செய்யவும்", + "LabelServerNameHelp": "சேவையகத்தை அடையாளம் காண இந்த பெயர் பயன்படுத்தப்படும் மற்றும் சேவையகத்தின் ஹோஸ்ட்பெயருக்கு இயல்புநிலையாக இருக்கும்.", + "LabelFriendlyName": "நட்பு பெயர்:", + "LabelFormat": "வடிவம்:", + "LabelForgotPasswordUsernameHelp": "உங்கள் பயனர்பெயரை நினைவில் வைத்திருந்தால் உள்ளிடவும்.", + "LabelFont": "எழுத்துரு:", + "LabelFolder": "கோப்புறை:", + "LabelFinish": "முடி", + "LabelFileOrUrl": "கோப்பு அல்லது URL:", + "LabelFailed": "தோல்வி", + "LabelExtractChaptersDuringLibraryScanHelp": "நூலக ஸ்கேன் போது வீடியோக்கள் இறக்குமதி செய்யப்படும்போது அத்தியாய படங்களை உருவாக்கவும். இல்லையெனில், வழக்கமான பட ஸ்கேன் வேகமாக முடிக்க அனுமதிக்கும் அத்தியாயப் படங்கள் திட்டமிடப்பட்ட பணியின் போது அவை பிரித்தெடுக்கப்படும்.", + "LabelExtractChaptersDuringLibraryScan": "நூலக ஸ்கேன் போது அத்தியாய படங்களை பிரித்தெடுக்கவும்", + "LabelBaseUrlHelp": "சேவையக URL இல் தனிப்பயன் துணை அடைவைச் சேர்க்கவும். உதாரணத்திற்கு: http://example.com/<baseurl>", + "LabelBaseUrl": "அடிப்படை URL:", + "LabelEveryXMinutes": "ஒவ்வொரு:", + "LabelEvent": "நிகழ்வு:", + "LabelEpisodeNumber": "அத்தியாயம் எண்:", + "LabelEndDate": "கடைசி தேதி:", + "LabelEnableSingleImageInDidlLimitHelp": "Didlக்குள் பல படங்கள் பதிக்கப்பட்டிருந்தால் சில சாதனங்கள் சரியாக வழங்கப்படாது.", + "LabelEnableSingleImageInDidlLimit": "ஒற்றை உட்பொதிக்கப்பட்ட படத்திற்கு வரம்பு", + "LabelEnableRealtimeMonitorHelp": "கோப்புகளுக்கான மாற்றங்கள் ஆதரிக்கப்பட்ட கோப்பு முறைமைகளில் உடனடியாக செயல்படுத்தப்படும்.", + "LabelEnableRealtimeMonitor": "நிகழ்நேர கண்காணிப்பை இயக்கு", + "LabelEnableHttpsHelp": "கட்டமைக்கப்பட்ட HTTPS போர்ட்டில் கேளுங்கள். இது நடைமுறைக்கு வர செல்லுபடியாகும் சான்றிதழும் வழங்கப்பட வேண்டும்.", + "LabelEnableHttps": "HTTPS ஐ இயக்கு", + "LabelEnableHardwareDecodingFor": "இதற்கான வன்பொருள் டிகோடிங்கை இயக்கவும்:", + "LabelEnableDlnaServerHelp": "உள்ளடக்கத்தை உலவ மற்றும் இயக்க உங்கள் பிணையத்தில் உள்ள UPnP சாதனங்களை அனுமதிக்கிறது.", + "LabelEnableDlnaServer": "DLNA சேவையகத்தை இயக்கு", + "LabelEnableDlnaPlayToHelp": "உங்கள் நெட்வொர்க்கில் உள்ள சாதனங்களைக் கண்டறிந்து அவற்றை தொலைவிலிருந்து கட்டுப்படுத்தும் திறனை வழங்குகின்றன.", + "LabelEnableDlnaPlayTo": "DLNA Play To ஐ இயக்கு", + "LabelEnableDlnaDebugLoggingHelp": "பெரிய பதிவுக் கோப்புகளை உருவாக்கவும், சரிசெய்தல் நோக்கங்களுக்காக மட்டுமே பயன்படுத்தப்பட வேண்டும்.", + "LabelEnableDlnaDebugLogging": "DLNA பிழைத்திருத்த பதிவை இயக்கு", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "SSDP தேடல்களுக்கு இடையில் வினாடிகளில் கால அளவை தீர்மானிக்கிறது.", + "LabelEnableDlnaClientDiscoveryInterval": "கிளையண்ட் கண்டுபிடிப்பு இடைவெளி", + "LabelEnableBlastAliveMessagesHelp": "உங்கள் பிணையத்தில் உள்ள பிற UPnP சாதனங்களால் சேவையகம் நம்பகத்தன்மையுடன் கண்டறியப்படாவிட்டால் இதை இயக்கவும்.", + "LabelEnableBlastAliveMessages": "உயிருள்ள செய்திகளை வழங்கவும்", + "LabelEnableAutomaticPortMapHelp": "உங்கள் திசைவியின் பொது துறைமுகங்களை உங்கள் சேவையகத்தில் உள்ள உள்ளூர் துறைமுகங்களுக்கு UPnP வழியாக தானாக அனுப்பவும். இது சில திசைவி மாதிரிகள் அல்லது பிணைய உள்ளமைவுகளுடன் இயங்காது. சேவையகம் மறுதொடக்கம் செய்யப்படும் வரை மாற்றங்கள் பொருந்தாது.", + "LabelEnableAutomaticPortMap": "தானியங்கி போர்ட் மேப்பிங்கை இயக்கு", + "LabelEmbedAlbumArtDidlHelp": "ஆல்பம் படம் பெறுவதற்கு சில சாதனங்கள் இந்த முறையை விரும்புகின்றன. இயக்கப்பட்ட இந்த விருப்பத்துடன் மற்றவர்கள் விளையாடத் தவறலாம்." } From 18211bec86dceead2725ede379668d84178b7dcd Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 10:27:15 +0000 Subject: [PATCH 426/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 161 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 159 insertions(+), 2 deletions(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 48c82a6eee..b8d89d701e 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -612,7 +612,7 @@ "LabelCache": "தற்காலிக சேமிப்பு:", "LabelBurnSubtitles": "வசன வரிகள் பதிக்க:", "LabelPleaseRestart": "வலை கிளையண்டை கைமுறையாக மீண்டும் ஏற்றிய பிறகு மாற்றங்கள் நடைமுறைக்கு வரும்.", - "LabelPlayMethod": "விளையாட்டு முறை:", + "LabelPlayMethod": "பிளே முறை:", "LabelPlaylist": "பிளேலிஸ்ட்:", "LabelPlayerDimensions": "பிளேயர் பரிமாணங்கள்:", "LabelPlayer": "பிளேயர்:", @@ -764,5 +764,162 @@ "LabelEnableBlastAliveMessages": "உயிருள்ள செய்திகளை வழங்கவும்", "LabelEnableAutomaticPortMapHelp": "உங்கள் திசைவியின் பொது துறைமுகங்களை உங்கள் சேவையகத்தில் உள்ள உள்ளூர் துறைமுகங்களுக்கு UPnP வழியாக தானாக அனுப்பவும். இது சில திசைவி மாதிரிகள் அல்லது பிணைய உள்ளமைவுகளுடன் இயங்காது. சேவையகம் மறுதொடக்கம் செய்யப்படும் வரை மாற்றங்கள் பொருந்தாது.", "LabelEnableAutomaticPortMap": "தானியங்கி போர்ட் மேப்பிங்கை இயக்கு", - "LabelEmbedAlbumArtDidlHelp": "ஆல்பம் படம் பெறுவதற்கு சில சாதனங்கள் இந்த முறையை விரும்புகின்றன. இயக்கப்பட்ட இந்த விருப்பத்துடன் மற்றவர்கள் விளையாடத் தவறலாம்." + "LabelEmbedAlbumArtDidlHelp": "ஆல்பம் படம் பெறுவதற்கு சில சாதனங்கள் இந்த முறையை விரும்புகின்றன. இயக்கப்பட்ட இந்த விருப்பத்துடன் மற்றவர்கள் விளையாடத் தவறலாம்.", + "ManageRecording": "பதிவை நிர்வகிக்கவும்", + "ManageLibrary": "நூலகத்தை நிர்வகிக்கவும்", + "Logo": "லோகோ", + "LiveTV": "நேரடி தொலைக்காட்சி", + "LiveBroadcasts": "நேரடி ஒளிபரப்பு", + "Live": "நேரலை", + "List": "பட்டியல்", + "Like": "விருப்பம்", + "LibraryAccessHelp": "இந்த பயனருடன் பகிர நூலகங்களைத் தேர்ந்தெடுக்கவும். நிர்வாகிகள் மெட்டாடேட்டா நிர்வாகியைப் பயன்படுத்தி அனைத்து கோப்புறைகளையும் திருத்த முடியும்.", + "LeaveBlankToNotSetAPassword": "கடவுச்சொல் எதுவும் அமைக்க இந்த புலத்தை காலியாக விடலாம்.", + "LearnHowYouCanContribute": "நீங்கள் எவ்வாறு பங்களிக்க முடியும் என்பதை அறிக.", + "LatestFromLibrary": "சமீபத்திய {0}", + "Large": "பெரியது", + "LanNetworksHelp": "அலைவரிசை கட்டுப்பாடுகளைச் செயல்படுத்தும்போது உள்ளூர் பிணையத்தில் பரிசீலிக்கப்படும் நெட்வொர்க்குகளுக்கான ஐபி முகவரிகள் அல்லது ஐபி / நெட்மாஸ்க் உள்ளீடுகளின் கமாவால் பிரிக்கப்பட்ட பட்டியல். அமைக்கப்பட்டால், மற்ற அனைத்து ஐபி முகவரிகளும் வெளிப்புற நெட்வொர்க்கில் இருப்பதாகக் கருதப்படும் மற்றும் வெளிப்புற அலைவரிசை கட்டுப்பாடுகளுக்கு உட்பட்டதாக இருக்கும். காலியாக இருந்தால், சேவையகத்தின் சப்நெட் மட்டுமே உள்ளூர் பிணையத்தில் கருதப்படுகிறது.", + "LabelffmpegPathHelp": "Ffmpeg பயன்பாட்டுக் கோப்பு அல்லது ffmpeg கொண்ட கோப்புறையின் பாதை.", + "LabelffmpegPath": "FFmpeg பாதை:", + "LabelZipCode": "அஞ்சல் குறியீடு:", + "LabelYoureDone": "நீங்கள் முடித்துவிட்டீர்கள்!", + "LabelYear": "ஆண்டு:", + "LabelXDlnaDocHelp": "X_DLNADOC உறுப்பின் உள்ளடக்கத்தை urn: schemas-dlna-org: device-1-0 பெயர்வெளியில் தீர்மானிக்கிறது.", + "LabelXDlnaDoc": "X-DLNA ஆவணம்:", + "LabelXDlnaCapHelp": "X_DLNACAP உறுப்பின் உள்ளடக்கத்தை urn: schemas-dlna-org: device-1-0 பெயர்வெளியில் தீர்மானிக்கிறது.", + "LabelXDlnaCap": "X-DLNA திறன்:", + "LabelWeb": "வலை:", + "LabelVideoResolution": "வீடியோ தெளிவுத்திறன்:", + "LabelVideoCodec": "வீடியோ கோடெக்:", + "LabelVideoBitrate": "வீடியோ பிட்ரேட்:", + "LabelVideo": "வீடியோ", + "DashboardArchitecture": "கட்டமைப்பு: {0}", + "DashboardOperatingSystem": "இயக்க முறைமை: {0}", + "DashboardServerName": "சேவையகம்: {0}", + "DashboardVersionNumber": "பதிப்பு: {0}", + "LabelVersionInstalled": "{0} நிறுவப்பட்டது", + "LabelVersion": "பதிப்பு:", + "LabelValue": "மதிப்பு:", + "LabelVaapiDeviceHelp": "வன்பொருள் முடுக்கத்திற்கு பயன்படுத்தப்படும் ரெண்டர் முனை இது.", + "LabelVaapiDevice": "VA API சாதனம்:", + "LabelUsername": "பயனர்பெயர்:", + "LabelUserRemoteClientBitrateLimitHelp": "சேவையக பின்னணி அமைப்புகளில் அமைக்கப்பட்ட இயல்புநிலை உலகளாவிய மதிப்பை மேலெழுதவும்.", + "LabelUserLoginAttemptsBeforeLockout": "பயனர் பூட்டப்படுவதற்கு முன்பு தோல்வியுற்ற உள்நுழைவு முயற்சிகள்:", + "LabelUserLibraryHelp": "சாதனத்தில் காண்பிக்க வேண்டிய பயனர் நூலகத்தைத் தேர்ந்தெடுக்கவும். இயல்புநிலை அமைப்பைப் பெறுவதற்கு காலியாக விடவும்.", + "LabelUserLibrary": "பயனர் நூலகம்:", + "LabelUserAgent": "பயனர் முகவர்:", + "LabelUser": "பயனர்:", + "LabelUseNotificationServices": "பின்வரும் சேவைகளைப் பயன்படுத்தவும்:", + "LabelTypeText": "உரை", + "LabelTypeMetadataDownloaders": "{0} மெட்டாடேட்டா பதிவிறக்கிகள்:", + "LabelType": "வகை:", + "LabelTunerType": "ட்யூனர் வகை:", + "LabelTunerIpAddress": "ட்யூனர் ஐபி முகவரி:", + "LabelTriggerType": "தூண்டுதல் வகை:", + "LabelTranscodingVideoCodec": "வீடியோ கோடெக்:", + "LabelTranscodingThreadCountHelp": "டிரான்ஸ்கோடிங் செய்யும்போது பயன்படுத்த வேண்டிய அதிகபட்ச நூல்களைத் தேர்ந்தெடுக்கவும். நூல் எண்ணிக்கையைக் குறைப்பது CPU பயன்பாட்டைக் குறைக்கும், ஆனால் மென்மையான பின்னணி அனுபவத்திற்கு போதுமானதாக மாற்றாது.", + "LabelTranscodingThreadCount": "டிரான்ஸ்கோடிங் நூல் எண்ணிக்கை:", + "LabelTranscodingProgress": "டிரான்ஸ்கோடிங் முன்னேற்றம்:", + "LabelTranscodingFramerate": "டிரான்ஸ்கோடிங் ஃப்ரேம்ரேட்:", + "LabelTranscodes": "டிரான்ஸ்கோட்கள்:", + "LabelTranscodingTempPathHelp": "வாடிக்கையாளர்களுக்கு வழங்கப்பட்ட டிரான்ஸ்கோட் கோப்புகளுக்கான தனிப்பயன் பாதையை குறிப்பிடவும். சேவையக இயல்புநிலையைப் பயன்படுத்த காலியாக விடவும்.", + "LabelTranscodePath": "டிரான்ஸ்கோட் பாதை:", + "LabelTranscodingContainer": "கொள்கலன்:", + "LabelTranscodingAudioCodec": "ஆடியோ கோடெக்:", + "LabelTrackNumber": "ட்ராக் எண்:", + "LabelTitle": "தலைப்பு:", + "LabelTimeLimitHours": "கால எல்லை (மணிநேரம்):", + "LabelTime": "நேரம்:", + "LabelTheme": "தீம்:", + "LabelTextSize": "உரை அளவு:", + "LabelTextColor": "உரை நிறம்:", + "LabelTextBackgroundColor": "உரை பின்னணி நிறம்:", + "LabelTagline": "கோஷம்:", + "LabelTag": "குறிச்சொல்:", + "LabelTVHomeScreen": "டிவி பயன்முறை முகப்புத் திரை:", + "LabelSyncPlayAccess": "ஒத்திசைவு அணுகல்", + "LabelSyncPlayAccessNone": "இந்த பயனருக்கு முடக்கப்பட்டது", + "LabelSyncPlayAccessJoinGroups": "குழுக்களில் சேர பயனரை அனுமதிக்கவும்", + "LabelSyncPlayAccessCreateAndJoinGroups": "குழுக்களை உருவாக்க மற்றும் சேர பயனரை அனுமதிக்கவும்", + "LabelSyncPlayLeaveGroupDescription": "ஒத்திசைவை முடக்கு", + "LabelSyncPlayLeaveGroup": "குழுவிலிருந்து விலகு", + "LabelSyncPlayNewGroupDescription": "புதிய குழுவை உருவாக்கவும்", + "LabelSyncPlayNewGroup": "புதிய குழு", + "LabelSyncPlaySyncMethod": "ஒத்திசைவு முறை:", + "LabelSyncPlayPlaybackDiff": "பின்னணி நேர வேறுபாடு:", + "MillisecondsUnit": "ms", + "LabelSyncPlayTimeOffset": "சேவையகத்துடன் நேரம் ஈடுசெய்யப்பட்டது:", + "LabelSupportedMediaTypes": "ஆதரிக்கப்படும் ஊடக வகைகள்:", + "LabelSubtitles": "வசன வரிகள்", + "LabelSubtitlePlaybackMode": "வசன முறை:", + "LabelSubtitleFormatHelp": "எடுத்துக்காட்டு: srt", + "LabelSubtitleDownloaders": "வசன பதிவிறக்கிகள்:", + "LabelStreamType": "ஸ்ட்ரீம் வகை:", + "LabelStopping": "நிறுத்துகிறது", + "LabelStopWhenPossible": "சாத்தியமான வகையில் நிறுத்து:", + "LabelStatus": "நிலை:", + "LabelStartWhenPossible": "முடிந்தவரை தொடங்குங்கள்:", + "LabelSportsCategories": "விளையாட்டு பிரிவுகள்:", + "LabelSpecialSeasonsDisplayName": "சிறப்பு பருவ காட்சி பெயர்:", + "LabelSource": "மூலம்:", + "LabelSortTitle": "வரிசை தலைப்பு:", + "LabelSortOrder": "வரிசை வகை:", + "LabelSortBy": "வரிசைப்படுத்து:", + "LabelSonyAggregationFlagsHelp": "திரட்டலில் திரட்டல் ஃப்ளாக்ஸ் உறுப்பு உள்ளடக்கத்தை தீர்மானிக்கிறது: schemas-sonycom: av பெயர்வெளி.", + "LabelSonyAggregationFlags": "Sony திரட்டல் கொடிகள்:", + "LabelSkipIfGraphicalSubsPresentHelp": "வசன வரிகள் உரை பதிப்புகளை வைத்திருப்பது மிகவும் திறமையான விநியோகத்திற்கு வழிவகுக்கும் மற்றும் வீடியோ டிரான்ஸ்கோடிங்கின் சாத்தியத்தை குறைக்கும்.", + "LabelSkipIfGraphicalSubsPresent": "வீடியோவில் ஏற்கனவே உட்பொதிக்கப்பட்ட வசன வரிகள் இருந்தால் தவிர்க்கவும்", + "LabelSkipIfAudioTrackPresentHelp": "ஆடியோ மொழியைப் பொருட்படுத்தாமல் எல்லா வீடியோக்களுக்கும் வசன வரிகள் இருப்பதை உறுதிப்படுத்த இதைத் தேர்வுநீக்கவும்.", + "LabelSkipIfAudioTrackPresent": "இயல்புநிலை ஆடியோ டிராக் பதிவிறக்க மொழியுடன் பொருந்தினால் தவிர்க்கவும்", + "LabelSkipForwardLength": "முன்னோக்கி நீளத்தைத் தவிர்:", + "LabelSkipBackLength": "பின் நீளத்தைத் தவிர்:", + "LabelSize": "அளவு:", + "LabelSimultaneousConnectionLimit": "ஒரே நேரத்தில் ஸ்ட்ரீம் வரம்பு:", + "LabelServerName": "சேவையக பெயர்:", + "LabelServerHostHelp": "192.168.1.100:8096 or https://myserver.com", + "LabelServerHost": "தொகுப்பாளர்:", + "LabelSeriesRecordingPath": "தொடர் பதிவு பாதை:", + "LabelSerialNumber": "வரிசை எண்", + "LabelSendNotificationToUsers": "அறிவிப்பை இதற்கு அனுப்பவும்:", + "LabelSelectVersionToInstall": "நிறுவ பதிப்பைத் தேர்ந்தெடுக்கவும்:", + "LabelSelectUsers": "பயனர்களைத் தேர்ந்தெடுக்கவும்:", + "LabelSelectFolderGroupsHelp": "தேர்வு செய்யப்படாத கோப்புறைகள் தங்களது சொந்த பார்வையில் காண்பிக்கப்படும்.", + "LabelSelectFolderGroups": "திரைப்படங்கள், இசை மற்றும் டிவி போன்ற காட்சிகளில் பின்வரும் கோப்புறைகளிலிருந்து உள்ளடக்கத்தை தானாக தொகுக்கவும்:", + "LabelSeasonNumber": "பருவ எண்:", + "EnableFasterAnimationsHelp": "வேகமான அனிமேஷன்கள் மற்றும் மாற்றங்களைப் பயன்படுத்தவும்", + "EnableFasterAnimations": "வேகமான அனிமேஷன்கள்", + "LabelScreensaver": "ஸ்கிரீன்சேவர்:", + "LabelScheduledTaskLastRan": "கடைசியாக ஓடியது {0}, எடுத்துக் கொண்டது {1}.", + "LabelSaveLocalMetadataHelp": "கலைப்படைப்புகளை மீடியா கோப்புறைகளில் சேமிப்பது அவற்றை எளிதில் திருத்தக்கூடிய இடத்தில் வைக்கும்.", + "LabelSaveLocalMetadata": "கலைப்படைப்புகளை மீடியா கோப்புறைகளில் சேமிக்கவும்", + "LabelRuntimeMinutes": "இயக்க நேரம்:", + "LabelRequireHttpsHelp": "சரிபார்க்கப்பட்டால், சேவையகம் தானாகவே HTTP வழியாக அனைத்து கோரிக்கைகளையும் HTTPS க்கு திருப்பிவிடும். HTTPS இல் சேவையகம் கேட்கவில்லை என்றால் இது எந்த விளைவையும் ஏற்படுத்தாது.", + "LabelRequireHttps": "HTTPS தேவை", + "LabelRemoteClientBitrateLimitHelp": "நெட்வொர்க் சாதனங்களுக்கு வெளியே ஒரு விருப்பமான ஸ்ட்ரீம் பிட்ரேட் வரம்பு. உங்கள் இணைய இணைப்பு கையாளக்கூடியதை விட சாதனங்களை அதிக பிட்ரேட்டைக் கோருவதைத் தடுக்க இது பயனுள்ளதாக இருக்கும். பறக்கும்போது வீடியோக்களை குறைந்த பிட்ரேட்டுக்கு டிரான்ஸ்கோட் செய்வதற்காக இது உங்கள் சேவையகத்தில் CPU சுமை அதிகரிக்கும்.", + "LabelRemoteClientBitrateLimit": "இணைய ஸ்ட்ரீமிங் பிட்ரேட் வரம்பு (Mbps):", + "LabelReleaseDate": "வெளிவரும் தேதி:", + "LabelRefreshMode": "புதுப்பிப்பு பயன்முறை:", + "LabelRecordingPathHelp": "பதிவுகளைச் சேமிக்க இயல்புநிலை இருப்பிடத்தைக் குறிப்பிடவும். காலியாக இருந்தால், சேவையகத்தின் நிரல் தரவு கோப்புறை பயன்படுத்தப்படும்.", + "LabelRecordingPath": "இயல்புநிலை பதிவு பாதை:", + "LabelRecord": "பதிவு:", + "LabelReasonForTranscoding": "டிரான்ஸ்கோடிங்கிற்கான காரணம்:", + "LabelPublicHttpsPortHelp": "உள்ளூர் HTTPS துறைமுகத்துடன் பொருத்தப்பட வேண்டிய பொது துறைமுக எண்.", + "LabelPublicHttpsPort": "பொது HTTPS போர்ட் எண்:", + "LabelPublicHttpPortHelp": "உள்ளூர் HTTP துறைமுகத்துடன் பொருத்தப்பட வேண்டிய பொது போர்ட் எண்.", + "LabelPublicHttpPort": "பொது HTTP போர்ட் எண்:", + "LabelProtocolInfoHelp": "சாதனத்திலிருந்து GetProtocolInfo கோரிக்கைகளுக்கு பதிலளிக்கும் போது பயன்படுத்தப்படும் மதிப்பு.", + "LabelProtocolInfo": "நெறிமுறை தகவல்:", + "LabelProtocol": "நெறிமுறை:", + "LabelProfileVideoCodecs": "வீடியோ கோடெக்குகள்:", + "LabelProfileContainersHelp": "கமாவால் பிரிக்கப்பட்டது. எல்லா கொள்கலன்களுக்கும் விண்ணப்பிக்க இதை காலியாக விடலாம்.", + "LabelProfileContainer": "கொள்கலன்:", + "LabelProfileCodecsHelp": "கமாவால் பிரிக்கப்பட்டது. எல்லா கோடெக்குகளுக்கும் விண்ணப்பிக்க இதை காலியாக விடலாம்.", + "LabelProfileCodecs": "கோடெக்குகள்:", + "LabelProfileAudioCodecs": "ஆடியோ கோடெக்குகள்:", + "LabelPreferredSubtitleLanguage": "விருப்பமான வசன மொழி:", + "LabelPreferredDisplayLanguageHelp": "ஜெல்லிஃபின் மொழிபெயர்ப்பது ஒரு தொடர்ச்சியான திட்டம்.", + "LabelPreferredDisplayLanguage": "விருப்பமான காட்சி மொழி:", + "LabelPostProcessorArgumentsHelp": "பதிவு கோப்புக்கான பாதையாக {path} ஐப் பயன்படுத்தவும்.", + "LabelPostProcessorArguments": "பிந்தைய செயலி கட்டளை வரி வாதங்கள்:", + "LabelPostProcessor": "செயலாக்கத்திற்கு பிந்தைய பயன்பாடு:" } From 4e0a7c33078537b7cc926acfb1c6f178e2d72805 Mon Sep 17 00:00:00 2001 From: Kunio Date: Sat, 15 Aug 2020 12:09:52 +0000 Subject: [PATCH 427/463] Translated using Weblate (Swedish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/sv/ --- src/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/sv.json b/src/strings/sv.json index b1fb42537a..50ad99be59 100644 --- a/src/strings/sv.json +++ b/src/strings/sv.json @@ -138,7 +138,7 @@ "DetectingDevices": "Söker efter enheter", "DeviceAccessHelp": "Detta tillämpas endast för enheter som kan bli unikt identifierade och som inte förhindrar åtkomst till browsern. Filtering av användarenheter kommer att blockera dom från att använda nya enheter tills dom har blivit godkända här.", "DirectPlaying": "Direktuppspelning", - "DirectStreamHelp1": "Innehållet är kompatibelt med enheten vad gäller upplösning och medietyp (H.264, AC3 osv.) men är i ett inkompatibelt filformat (mkv, avi, wmv osv.). Videofilen kommer att packas om i realtid innan den strömmas till enheten.", + "DirectStreamHelp1": "Innehållet har en kompatibel upplösning och mediatyp (H.264, AC3, osv.) för enheten, men är i en inkompatibel filbehållare (mkv, avi, wmv, osv.). Videofilen kommer att packas om i realtid innan den strömmas till enheten.", "DirectStreamHelp2": "Direktströmning av en fil använder väldigt lite resurser av CPU'n utan att bildkvaliten försämras.", "DirectStreaming": "Direktströmning", "Director": "Regissör", From 134b6b7c3c56541339961766ad6154e258734391 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 12:17:38 +0000 Subject: [PATCH 428/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index b8d89d701e..5914a3bdd5 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -921,5 +921,6 @@ "LabelPreferredDisplayLanguage": "விருப்பமான காட்சி மொழி:", "LabelPostProcessorArgumentsHelp": "பதிவு கோப்புக்கான பாதையாக {path} ஐப் பயன்படுத்தவும்.", "LabelPostProcessorArguments": "பிந்தைய செயலி கட்டளை வரி வாதங்கள்:", - "LabelPostProcessor": "செயலாக்கத்திற்கு பிந்தைய பயன்பாடு:" + "LabelPostProcessor": "செயலாக்கத்திற்கு பிந்தைய பயன்பாடு:", + "MapChannels": "சேனல் மேப்பிங்" } From e7578a9b9c63e175f42bc812ee4199860f46351e Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 12:46:01 +0000 Subject: [PATCH 429/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 118 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 5914a3bdd5..b3aaad1a7b 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -922,5 +922,121 @@ "LabelPostProcessorArgumentsHelp": "பதிவு கோப்புக்கான பாதையாக {path} ஐப் பயன்படுத்தவும்.", "LabelPostProcessorArguments": "பிந்தைய செயலி கட்டளை வரி வாதங்கள்:", "LabelPostProcessor": "செயலாக்கத்திற்கு பிந்தைய பயன்பாடு:", - "MapChannels": "சேனல் மேப்பிங்" + "MapChannels": "சேனல் மேப்பிங்", + "MoveLeft": "இடதுபுறமாக நகர்த்தவும்", + "MoreMediaInfo": "மீடியா தகவல்", + "MoreUsersCanBeAddedLater": "டாஷ்போர்டுக்குள் இருந்து அதிகமான பயனர்களை பின்னர் சேர்க்கலாம்.", + "MoreFromValue": "{0} இலிருந்து மேலும்", + "Monday": "திங்கட்கிழமை", + "Mobile": "கைபேசி", + "MinutesBefore": "நிமிடங்களுக்கு முன்", + "MinutesAfter": "நிமிடங்கள் கழித்து", + "MetadataSettingChangeHelp": "மெட்டாடேட்டா அமைப்புகளை மாற்றுவது புதிய உள்ளடக்கத்தை முன்னோக்கி செல்லும். இருக்கும் உள்ளடக்கத்தைப் புதுப்பிக்க, விவரம் திரையைத் திறந்து புதுப்பிப்பு பொத்தானைக் கிளிக் செய்க, அல்லது மெட்டாடேட்டா நிர்வாகியைப் பயன்படுத்தி மொத்தமாக புதுப்பிப்புகளைச் செய்யுங்கள்.", + "MetadataManager": "மெட்டாடேட்டா மேலாளர்", + "Metadata": "மெட்டாடேட்டா", + "MessageSyncPlayErrorMedia": "ஒத்திசைவை இயக்குவதில் தோல்வி! மீடியா பிழை.", + "MessageSyncPlayErrorMissingSession": "ஒத்திசைவை இயக்குவதில் தோல்வி! அமர்வு இல்லை.", + "MessageSyncPlayErrorNoActivePlayer": "செயலில் உள்ள எந்த பிளேயரும் கிடைக்கவில்லை. ஒத்திசைவு முடக்கப்பட்டுள்ளது.", + "MessageSyncPlayErrorAccessingGroups": "குழுக்கள் பட்டியலை அணுகும்போது பிழை ஏற்பட்டது.", + "MessageSyncPlayLibraryAccessDenied": "இந்த உள்ளடக்கத்திற்கான அணுகல் தடைசெய்யப்பட்டுள்ளது.", + "MessageSyncPlayJoinGroupDenied": "ஒத்திசைவைப் பயன்படுத்த அனுமதி தேவை.", + "MessageSyncPlayCreateGroupDenied": "ஒரு குழுவை உருவாக்க அனுமதி தேவை.", + "MessageSyncPlayGroupDoesNotExist": "குழு இல்லாததால் குழுவில் சேர முடியவில்லை.", + "MessageSyncPlayPlaybackPermissionRequired": "பின்னணி அனுமதி தேவை.", + "MessageSyncPlayNoGroupsAvailable": "குழுக்கள் எதுவும் கிடைக்கவில்லை. முதலில் ஏதாவது வாசிக்க தொடங்குங்கள்.", + "MessageSyncPlayGroupWait": "{0} இடையகப்படுத்துகிறது…", + "MessageSyncPlayUserLeft": "{0} குழுவிலிருந்து வெளியேறினார்.", + "MessageSyncPlayUserJoined": "{0} குழுவில் சேர்ந்துள்ளார்.", + "MessageSyncPlayDisabled": "ஒத்திசைவு முடக்கப்பட்டது.", + "MessageSyncPlayEnabled": "ஒத்திசைவு இயக்கப்பட்டது.", + "MessageYouHaveVersionInstalled": "நீங்கள் தற்போது {0} பதிப்பை நிறுவியுள்ளீர்கள்.", + "MessageUnsetContentHelp": "உள்ளடக்கம் எளிய கோப்புறைகளாக காண்பிக்கப்படும். சிறந்த முடிவுகளுக்கு துணை கோப்புறைகளின் உள்ளடக்க வகைகளை அமைக்க மெட்டாடேட்டா நிர்வாகியைப் பயன்படுத்தவும்.", + "MessageUnableToConnectToServer": "தேர்ந்தெடுக்கப்பட்ட சேவையகத்துடன் இப்போது எங்களால் இணைக்க முடியவில்லை. இது இயங்குவதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "உங்கள் நூலகத்திலிருந்து பின்வரும் ஊடக இருப்பிடங்கள் அகற்றப்படும்:", + "MessageSettingsSaved": "அமைப்புகள் சேமிக்கப்பட்டன.", + "MessageReenableUser": "மீண்டும் இயக்க கீழே காண்க", + "MessagePluginInstallDisclaimer": "கூடுதல் அம்சங்கள் மற்றும் நன்மைகளுடன் உங்கள் அனுபவத்தை மேம்படுத்த சமூக உறுப்பினர்களால் உருவாக்கப்பட்ட செருகுநிரல்கள் சிறந்த வழியாகும். நிறுவுவதற்கு முன், உங்கள் சேவையகத்தில் அவை நீண்ட நூலக ஸ்கேன், கூடுதல் பின்னணி செயலாக்கம் மற்றும் கணினி நிலைத்தன்மை குறைதல் போன்ற விளைவுகளைப் பற்றி எச்சரிக்கையாக இருங்கள்.", + "MessagePluginConfigurationRequiresLocalAccess": "இந்த சொருகி கட்டமைக்க உங்கள் உள்ளூர் சேவையகத்தில் நேரடியாக உள்நுழைக.", + "MessagePleaseWait": "தயவுசெய்து காத்திருங்கள். இதற்கு ஒரு நிமிடம் ஆகலாம்.", + "MessagePleaseEnsureInternetMetadata": "இணைய மெட்டாடேட்டாவைப் பதிவிறக்குவது இயக்கப்பட்டிருப்பதை உறுதிசெய்க.", + "MessagePlayAccessRestricted": "இந்த உள்ளடக்கத்தின் பின்னணி தற்போது தடைசெய்யப்பட்டுள்ளது. மேலும் தகவலுக்கு உங்கள் சேவையக நிர்வாகியைத் தொடர்பு கொள்ளவும்.", + "MessagePasswordResetForUsers": "பின்வரும் பயனர்கள் தங்கள் கடவுச்சொற்களை மீட்டமைத்துள்ளனர். மீட்டமைப்பைச் செய்யப் பயன்படுத்தப்பட்ட முள் குறியீடுகளுடன் அவர்கள் இப்போது உள்நுழையலாம்.", + "MessageNothingHere": "இங்கு எதுவுமில்லை.", + "MessageNoTrailersFound": "இணைய டிரெய்லர்களின் நூலகத்தைச் சேர்ப்பதன் மூலம் உங்கள் திரைப்பட அனுபவத்தை மேம்படுத்த டிரெய்லர்கள் சேனலை நிறுவவும்.", + "MessageNoServersAvailable": "தானியங்கி சேவையக கண்டுபிடிப்பைப் பயன்படுத்தி சேவையகங்கள் எதுவும் கண்டுபிடிக்கப்படவில்லை.", + "MessageNoPluginsInstalled": "உங்களிடம் செருகுநிரல்கள் எதுவும் நிறுவப்படவில்லை.", + "MessageNoMovieSuggestionsAvailable": "திரைப்பட பரிந்துரைகள் எதுவும் தற்போது கிடைக்கவில்லை. உங்கள் திரைப்படங்களைப் பார்க்கவும் மதிப்பீடு செய்யவும் தொடங்கவும், பின்னர் உங்கள் பரிந்துரைகளைக் காண மீண்டும் வாருங்கள்.", + "MessageNoGenresAvailable": "இணையத்திலிருந்து வகைகளை இழுக்க சில மெட்டாடேட்டா வழங்குநர்களை இயக்கவும்.", + "MessageNoCollectionsAvailable": "திரைப்படங்கள், தொடர் மற்றும் ஆல்பங்களின் தனிப்பயனாக்கப்பட்ட குழுக்களை அனுபவிக்க தொகுப்புகள் உங்களை அனுமதிக்கின்றன. தொகுப்புகளை உருவாக்கத் தொடங்க + பொத்தானைக் கிளிக் செய்க.", + "MessageAddRepository": "நீங்கள் ஒரு களஞ்சியத்தைச் சேர்க்க விரும்பினால், தலைப்புக்கு அடுத்துள்ள பொத்தானைக் கிளிக் செய்து கோரப்பட்ட தகவலை நிரப்பவும்.", + "LabelRepositoryNameHelp": "உங்கள் சேவையகத்தில் சேர்க்கப்பட்ட மற்றவர்களிடமிருந்து இந்த களஞ்சியத்தை வேறுபடுத்துவதற்கான தனிப்பயன் பெயர்.", + "LabelRepositoryName": "களஞ்சிய பெயர்", + "LabelRepositoryUrlHelp": "நீங்கள் சேர்க்க விரும்பும் களஞ்சிய மேனிஃபெஸ்டின் இடம்.", + "LabelRepositoryUrl": "களஞ்சிய URL", + "HeaderNewRepository": "புதிய களஞ்சியம்", + "MessageNoRepositories": "களஞ்சியங்கள் இல்லை.", + "MessageNoAvailablePlugins": "கிடைக்கக்கூடிய செருகுநிரல்கள் இல்லை.", + "MessageLeaveEmptyToInherit": "பெற்றோர் உருப்படி அல்லது உலகளாவிய இயல்புநிலை மதிப்பிலிருந்து அமைப்புகளைப் பெறுவதற்கு காலியாக விடவும்.", + "MessageItemsAdded": "உருப்படிகள் சேர்க்கப்பட்டன.", + "MessageItemSaved": "உருப்படி சேமிக்கப்பட்டது.", + "MessageInvalidUser": "தவறான பயனர்பெயர் அல்லது கடவுச்சொல். தயவுசெய்து மீண்டும் முயற்சி செய்க.", + "MessageInvalidForgotPasswordPin": "தவறான அல்லது காலாவதியான முள் குறியீடு உள்ளிடப்பட்டது. தயவுசெய்து மீண்டும் முயற்சி செய்க.", + "MessageImageTypeNotSelected": "கீழ்தோன்றும் மெனுவிலிருந்து பட வகையைத் தேர்ந்தெடுக்கவும்.", + "MessageImageFileTypeAllowed": "JPEG மற்றும் PNG கோப்புகள் மட்டுமே ஆதரிக்கப்படுகின்றன.", + "MessageForgotPasswordInNetworkRequired": "கடவுச்சொல் மீட்டமைப்பு செயல்முறையைத் தொடங்க உங்கள் வீட்டு நெட்வொர்க்கில் மீண்டும் முயற்சிக்கவும்.", + "MessageForgotPasswordFileCreated": "பின்வரும் கோப்பு உங்கள் சேவையகத்தில் உருவாக்கப்பட்டது மற்றும் எவ்வாறு தொடரலாம் என்பதற்கான வழிமுறைகளைக் கொண்டுள்ளது:", + "MessageFileReadError": "கோப்பைப் படிப்பதில் பிழை ஏற்பட்டது. தயவுசெய்து மீண்டும் முயற்சி செய்க.", + "MessageEnablingOptionLongerScans": "இந்த விருப்பத்தை இயக்குவது கணிசமாக நீண்ட நூலக ஸ்கேன்களுக்கு வழிவகுக்கும்.", + "MessageDownloadQueued": "பதிவிறக்கம் வரிசைப்படுத்தப்பட்டுள்ளது.", + "MessageDirectoryPickerLinuxInstruction": "Arch Linux, CentOS, Debian, Fedora, openSUSE அல்லது Ubuntu ஆகியவற்றில் லினக்ஸைப் பொறுத்தவரை, சேவை பயனருக்கு உங்கள் சேமிப்பிட இருப்பிடங்களுக்கு குறைந்தபட்சம் படிக்க அணுகலை வழங்க வேண்டும்.", + "MessageDirectoryPickerBSDInstruction": "BSD ஐப் பொறுத்தவரை, உங்கள் FreeNAS சிறைக்குள் சேமிப்பிடத்தை உள்ளமைக்க வேண்டியிருக்கலாம், எனவே ஜெல்லிஃபின் உங்கள் மீடியாவை அணுக முடியும்.", + "MessageDeleteTaskTrigger": "இந்த பணி தூண்டுதலை நீக்க விரும்புகிறீர்களா?", + "MessageCreateAccountAt": "{0} இல் ஒரு கணக்கை உருவாக்கவும்", + "MessageContactAdminToResetPassword": "உங்கள் கடவுச்சொல்லை மீட்டமைக்க உங்கள் கணினி நிர்வாகியைத் தொடர்பு கொள்ளவும்.", + "MessageConfirmShutdown": "சேவையகத்தை நிறுத்த விரும்புகிறீர்களா?", + "MessageConfirmRevokeApiKey": "இந்த API விசையை திரும்பப் பெற விரும்புகிறீர்களா? இந்த சேவையகத்திற்கான பயன்பாட்டின் இணைப்பு திடீரென நிறுத்தப்படும்.", + "MessageConfirmRestart": "ஜெல்லிஃபின் மறுதொடக்கம் செய்ய விரும்புகிறீர்களா?", + "MessageConfirmRemoveMediaLocation": "இந்த இருப்பிடத்தை அகற்ற விரும்புகிறீர்களா?", + "MessageConfirmRecordingCancellation": "பதிவை ரத்து செய்யவா?", + "MessageConfirmProfileDeletion": "இந்த சுயவிவரத்தை நீக்க விரும்புகிறீர்களா?", + "MessageConfirmDeleteTunerDevice": "இந்த சாதனத்தை நீக்க விரும்புகிறீர்களா?", + "MessageConfirmDeleteGuideProvider": "இந்த வழிகாட்டி வழங்குநரை நீக்க விரும்புகிறீர்களா?", + "MessageConfirmAppExit": "நீங்கள் வெளியேற விரும்புகிறீர்களா?", + "MessageAreYouSureYouWishToRemoveMediaFolder": "இந்த மீடியா கோப்புறையை அகற்ற விரும்புகிறீர்களா?", + "MessageAreYouSureDeleteSubtitles": "இந்த வசன கோப்பை நீக்க விரும்புகிறீர்களா?", + "MessageAlreadyInstalled": "இந்த பதிப்பு ஏற்கனவே நிறுவப்பட்டுள்ளது.", + "Menu": "பட்டியல்", + "MediaIsBeingConverted": "மீடியா இயங்கும் சாதனத்துடன் பொருந்தக்கூடிய வடிவமாக ஊடகங்கள் மாற்றப்படுகின்றன.", + "MediaInfoStreamTypeVideo": "காணொளி", + "MediaInfoStreamTypeSubtitle": "வசன வரிகள்", + "MediaInfoStreamTypeEmbeddedImage": "உட்பொதிக்கப்பட்ட படம்", + "MediaInfoStreamTypeData": "தகவல்", + "MediaInfoStreamTypeAudio": "ஆடியோ", + "MediaInfoTimestamp": "நேர முத்திரை", + "MediaInfoSize": "அளவு", + "MediaInfoSampleRate": "மாதிரி விகிதம்", + "MediaInfoResolution": "தெளிவுத்திறன்", + "MediaInfoRefFrames": "குறிப்பு கட்டமைப்பு", + "MediaInfoProfile": "சுயவிவரம்", + "MediaInfoPixelFormat": "பிக்சல் வடிவம்", + "MediaInfoPath": "பாதை", + "MediaInfoLevel": "நிலை", + "MediaInfoLayout": "தளவமைப்பு", + "MediaInfoLanguage": "மொழி", + "MediaInfoInterlaced": "ஒன்றோடொன்று", + "MediaInfoFramerate": "ஃப்ரேமரேட்", + "MediaInfoForced": "கட்டாயப்படுத்தப்பட்டது", + "MediaInfoExternal": "வெளிப்புறம்", + "MediaInfoDefault": "இயல்புநிலை", + "MediaInfoContainer": "கொள்கலன்", + "MediaInfoCodecTag": "கோடெக் குறிச்சொல்", + "MediaInfoCodec": "கோடெக்", + "MediaInfoChannels": "சேனல்கள்", + "MediaInfoBitrate": "பிட்ரேட்", + "MediaInfoBitDepth": "பிட் ஆழம்", + "MediaInfoAspectRatio": "விகித விகிதம்", + "MediaInfoAnamorphic": "அனமார்பிக்", + "MaxParentalRatingHelp": "அதிக மதிப்பீட்டைக் கொண்ட உள்ளடக்கம் இந்த பயனரிடமிருந்து மறைக்கப்படும்.", + "MarkUnplayed": "வாசிக்கப்படாதது குறி இடு", + "MarkPlayed": "வாசிக்கப்பட்டது குறி இடு" } From 54ae6b543b651991118a2cb1f8358eebbd4665dc Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 13:49:57 +0000 Subject: [PATCH 430/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 114 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index b3aaad1a7b..bd031a66ff 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1038,5 +1038,117 @@ "MediaInfoAnamorphic": "அனமார்பிக்", "MaxParentalRatingHelp": "அதிக மதிப்பீட்டைக் கொண்ட உள்ளடக்கம் இந்த பயனரிடமிருந்து மறைக்கப்படும்.", "MarkUnplayed": "வாசிக்கப்படாதது குறி இடு", - "MarkPlayed": "வாசிக்கப்பட்டது குறி இடு" + "MarkPlayed": "வாசிக்கப்பட்டது குறி இடு", + "OptionEveryday": "தினமும்", + "OptionEstimateContentLength": "டிரான்ஸ்கோடிங் செய்யும் போது உள்ளடக்க நீளத்தை மதிப்பிடுங்கள்", + "OptionEquals": "சமம்", + "OptionEnded": "முடிந்தது", + "OptionEnableM2tsModeHelp": "Mpegts க்கு குறியாக்கம் செய்யும் போது m2ts பயன்முறையை இயக்கவும்.", + "OptionEnableM2tsMode": "M2ts பயன்முறையை இயக்கு", + "OptionEnableForAllTuners": "அனைத்து ட்யூனர் சாதனங்களுக்கும் இயக்கு", + "OptionEnableExternalContentInSuggestionsHelp": "பரிந்துரைக்கப்பட்ட உள்ளடக்கத்தில் இணைய டிரெய்லர்கள் மற்றும் நேரடி தொலைக்காட்சி நிரல்களை சேர்க்க அனுமதிக்கவும்.", + "OptionEnableExternalContentInSuggestions": "பரிந்துரைகளில் வெளிப்புற உள்ளடக்கத்தை இயக்கவும்", + "OptionEnableAccessToAllLibraries": "எல்லா நூலகங்களுக்கும் அணுகலை இயக்கவும்", + "OptionEnableAccessToAllChannels": "எல்லா சேனல்களுக்கும் அணுகலை இயக்கவும்", + "OptionEnableAccessFromAllDevices": "எல்லா சாதனங்களிலிருந்தும் அணுகலை இயக்கவும்", + "OptionEmbedSubtitles": "கொள்கலனுக்குள் உட்பொதிக்கவும்", + "OptionDvd": "டிவிடி", + "OptionDownloadThumbImage": "சிறுபடம்", + "OptionDownloadPrimaryImage": "முதன்மை", + "OptionDownloadMenuImage": "பட்டியல்", + "OptionDownloadLogoImage": "லோகோ", + "OptionDownloadImagesInAdvanceHelp": "இயல்பாக, பெரும்பாலான படங்கள் கிளையன்ட் கோரியபோது மட்டுமே பதிவிறக்கப்படும். புதிய மீடியா இறக்குமதி செய்யப்படுவதால், எல்லா படங்களையும் முன்கூட்டியே பதிவிறக்க இந்த விருப்பத்தை இயக்கவும். இது கணிசமாக நீண்ட நூலக ஸ்கேன்களை ஏற்படுத்தக்கூடும்.", + "OptionDownloadImagesInAdvance": "படங்களை முன்கூட்டியே பதிவிறக்கவும்", + "OptionDownloadDiscImage": "வட்டு", + "OptionDownloadBoxImage": "பெட்டி", + "OptionDownloadBannerImage": "பதாகை", + "OptionDownloadBackImage": "பின்னால்", + "OptionDownloadArtImage": "கலை", + "OptionDisplayFolderViewHelp": "உங்கள் பிற ஊடக நூலகங்களுடன் கோப்புறைகளைக் காண்பி. நீங்கள் ஒரு எளிய கோப்புறை காட்சியைப் பெற விரும்பினால் இது பயனுள்ளதாக இருக்கும்.", + "OptionDisplayFolderView": "எளிய மீடியா கோப்புறைகளைக் காட்ட கோப்புறை காட்சியைக் காண்பி", + "OptionDislikes": "வெறுப்புகள்", + "OptionDisableUserHelp": "இந்த பயனரிடமிருந்து எந்த இணைப்பையும் சேவையகம் அனுமதிக்காது. தற்போதுள்ள இணைப்புகள் திடீரென நிறுத்தப்படும்.", + "OptionDisableUser": "இந்த பயனரை முடக்கு", + "OptionDescending": "இறங்கு", + "OptionDatePlayed": "உடன் தேதி", + "OptionDateAddedImportTime": "நூலகத்தில் ஸ்கேன் செய்யப்பட்ட தேதியைப் பயன்படுத்தவும்", + "OptionDateAddedFileTime": "கோப்பு உருவாக்கும் தேதியைப் பயன்படுத்தவும்", + "OptionDateAdded": "சேர்த்த தேதி", + "OptionDaily": "தினசரி", + "OptionCustomUsers": "தனிப்பயன்", + "OptionCriticRating": "விமர்சன மதிப்பீடு", + "OptionContinuing": "தொடர்கிறது", + "OptionCommunityRating": "சமூக மதிப்பீடு", + "OptionCaptionInfoExSamsung": "CaptionInfoEx (சாம்சங்)", + "OptionBluray": "ப்ளூ-ரே", + "OptionBlockTvShows": "தொலைக்காட்சி நிகழ்ச்சிகள்", + "OptionBlockTrailers": "டிரெய்லர்கள்", + "OptionBlockMusic": "இசை", + "OptionBlockMovies": "திரைப்படங்கள்", + "OptionBlockLiveTvChannels": "நேரடி தொலைக்காட்சி சேனல்கள்", + "OptionBlockChannelContent": "இணைய சேனல் உள்ளடக்கம்", + "OptionBlockBooks": "புத்தகங்கள்", + "OptionBanner": "பதாகை", + "OptionAutomaticallyGroupSeriesHelp": "இந்த நூலகத்திற்குள் பல கோப்புறைகளில் பரவியிருக்கும் தொடர்கள் தானாக ஒரு தொடராக ஒன்றிணைக்கப்படும்.", + "OptionAutomaticallyGroupSeries": "பல கோப்புறைகளில் பரவியிருக்கும் தொடர்களை தானாக இணைக்கவும்", + "OptionAutomatic": "தானாக", + "OptionAuto": "தானாக", + "OptionAscending": "ஏறுதல்", + "OptionArtist": "கலைஞர்", + "OptionAllowVideoPlaybackTranscoding": "டிரான்ஸ்கோடிங் தேவைப்படும் வீடியோ பிளேபேக்கை அனுமதிக்கவும்", + "OptionAllowVideoPlaybackRemuxing": "மறு குறியாக்கம் இல்லாமல் மாற்றம் தேவைப்படும் வீடியோ பிளேபேக்கை அனுமதிக்கவும்", + "OptionAllowUserToManageServer": "சேவையகத்தை நிர்வகிக்க இந்த பயனரை அனுமதிக்கவும்", + "OptionAllowSyncTranscoding": "டிரான்ஸ்கோடிங் தேவைப்படும் மீடியா பதிவிறக்கம் மற்றும் ஒத்திசைவை அனுமதிக்கவும்", + "OptionAllowRemoteSharedDevicesHelp": "ஒரு பயனர் அவற்றைக் கட்டுப்படுத்தத் தொடங்கும் வரை DLNA சாதனங்கள் பகிரப்பட்டதாகக் கருதப்படுகின்றன.", + "OptionAllowRemoteSharedDevices": "பகிரப்பட்ட சாதனங்களின் தொலைநிலைக் கட்டுப்பாட்டை அனுமதிக்கவும்", + "OptionAllowRemoteControlOthers": "பிற பயனர்களின் ரிமோட் கண்ட்ரோலை அனுமதிக்கவும்", + "OptionAllowMediaPlaybackTranscodingHelp": "டிரான்ஸ்கோடிங்கிற்கான அணுகலைக் கட்டுப்படுத்துவது ஆதரிக்கப்படாத ஊடக வடிவங்கள் காரணமாக வாடிக்கையாளர்களுக்கு பின்னணி தோல்விகளை ஏற்படுத்தக்கூடும்.", + "OptionAllowMediaPlayback": "மீடியா பிளேபேக்கை அனுமதிக்கவும்", + "OptionAllowManageLiveTv": "லைவ் டிவி பதிவு நிர்வாகத்தை அனுமதிக்கவும்", + "OptionAllowLinkSharingHelp": "ஊடகத் தகவல்களைக் கொண்ட வலைப்பக்கங்கள் மட்டுமே பகிரப்படுகின்றன. மீடியா கோப்புகள் ஒருபோதும் பகிரங்கமாக பகிரப்படுவதில்லை. பங்குகள் நேர வரம்புக்குட்பட்டவை மற்றும் {0} நாட்களுக்குப் பிறகு காலாவதியாகும்.", + "OptionAllowLinkSharing": "சமூக ஊடக பகிர்வை அனுமதிக்கவும்", + "OptionAllowContentDownloading": "மீடியா பதிவிறக்க மற்றும் ஒத்திசைக்க அனுமதிக்கவும்", + "OptionAllowBrowsingLiveTv": "நேரடி தொலைக்காட்சி அணுகலை அனுமதிக்கவும்", + "OptionForceRemoteSourceTranscoding": "தொலைநிலை ஊடக மூலங்களின் டிரான்ஸ்கோடிங்கை கட்டாயப்படுத்தவும் (லைடிவி போன்றவை)", + "OptionAllowAudioPlaybackTranscoding": "டிரான்ஸ்கோடிங் தேவைப்படும் ஆடியோ பிளேபேக்கை அனுமதிக்கவும்", + "OptionAllUsers": "அனைத்து பயனாளர்கள்", + "OptionAlbumArtist": "ஆல்பம் கலைஞர்", + "OptionAlbum": "ஆல்பம்", + "OptionAdminUsers": "நிர்வாகிகள்", + "OnlyImageFormats": "பட வடிவங்கள் மட்டுமே (VOBSUB, PGS, SUB)", + "Option3D": "3D", + "OnlyForcedSubtitlesHelp": "கட்டாயமாக குறிக்கப்பட்ட வசன வரிகள் மட்டுமே ஏற்றப்படும்.", + "OnlyForcedSubtitles": "கட்டாயப்படுத்தப்பட்டது மட்டுமே", + "OneChannel": "ஒரு சேனல்", + "Off": "முடக்கு", + "NumLocationsValue": "{0} கோப்புறைகள்", + "Normal": "இயல்பானது", + "None": "எதுவுமில்லை", + "NoSubtitlesHelp": "முன்னிருப்பாக வசன வரிகள் ஏற்றப்படாது. பிளேபேக்கின் போது அவற்றை கைமுறையாக இயக்கலாம்.", + "NoSubtitleSearchResultsFound": "முடிவுகள் எதுவும் இல்லை.", + "MessageNoPluginConfiguration": "இந்த சொருகி கட்டமைக்க எந்த அமைப்புகளும் இல்லை.", + "MessageNoNextUpItems": "எதுவும் கிடைக்கவில்லை. உங்கள் நிகழ்ச்சிகளைப் பார்க்கத் தொடங்குங்கள்!", + "NoNewDevicesFound": "புதிய சாதனங்கள் எதுவும் கிடைக்கவில்லை. புதிய ட்யூனரைச் சேர்க்க, இந்த உரையாடலை மூடி சாதனத் தகவலை கைமுறையாக உள்ளிடவும்.", + "NoCreatedLibraries": "நீங்கள் இதுவரை எந்த நூலகங்களையும் உருவாக்கவில்லை என்று தெரிகிறது. {0} இப்போது ஒன்றை உருவாக்க விரும்புகிறீர்களா? {1}", + "No": "இல்லை", + "NextUp": "அடுத்தது", + "NextTrack": "அடுத்ததுக்குச் செல்க", + "Next": "அடுத்தது", + "News": "செய்தி", + "NewEpisodesOnly": "புதிய அத்தியாயங்கள் மட்டுமே", + "NewEpisodes": "புதிய அத்தியாயங்கள்", + "NewCollectionNameExample": "எடுத்துக்காட்டு: Star Wars Collection", + "NewCollectionHelp": "திரைப்படங்கள் மற்றும் பிற நூலக உள்ளடக்கங்களின் தனிப்பயனாக்கப்பட்ட குழுக்களை உருவாக்க தொகுப்புகள் உங்களை அனுமதிக்கின்றன.", + "NewCollection": "புதிய தொகுப்பு", + "Never": "ஒருபோதும்", + "Name": "பெயர்", + "MySubtitles": "எனது வசன வரிகள்", + "Mute": "முடக்கு", + "MusicVideo": "இசை கானொளி", + "MusicLibraryHelp": "{0} இசை பெயரிடும் வழிகாட்டியை {1} மதிப்பாய்வு செய்யவும்.", + "MusicArtist": "இசைக் கலைஞர்", + "MusicAlbum": "இசை ஆல்பம்", + "Movie": "திரைப்படம்", + "MovieLibraryHelp": "{0} மூவி பெயரிடும் வழிகாட்டியை {1} மதிப்பாய்வு செய்யவும்.", + "MoveRight": "வலதுபுறம் நகர்த்தவும்" } From 4095776ab3744930d6313b6e2825745672b5222a Mon Sep 17 00:00:00 2001 From: Ian Walton Date: Sat, 15 Aug 2020 11:41:54 -0400 Subject: [PATCH 431/463] Fix syncplay menu. --- src/scripts/libraryMenu.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index d237eead9d..d67250d5cb 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -8,7 +8,7 @@ import appRouter from 'appRouter'; import appHost from 'apphost'; import playbackManager from 'playbackManager'; import syncPlayManager from 'syncPlayManager'; -import groupSelectionMenu from 'groupSelectionMenu'; +import { show as showGroupSelectionMenu } from 'groupSelectionMenu'; import browser from 'browser'; import globalize from 'globalize'; import imageHelper from 'scripts/imagehelper'; @@ -208,7 +208,7 @@ import 'flexStyles'; function onSyncButtonClicked() { const btn = this; - groupSelectionMenu.show(btn); + showGroupSelectionMenu(btn); } function onSyncPlayEnabled(event, enabled) { From 8796cd246fffde1b2646a8d40546c9ab5eb6a5f6 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 15:19:29 +0000 Subject: [PATCH 432/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 90 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index bd031a66ff..7201ea80b4 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1150,5 +1150,93 @@ "MusicAlbum": "இசை ஆல்பம்", "Movie": "திரைப்படம்", "MovieLibraryHelp": "{0} மூவி பெயரிடும் வழிகாட்டியை {1} மதிப்பாய்வு செய்யவும்.", - "MoveRight": "வலதுபுறம் நகர்த்தவும்" + "MoveRight": "வலதுபுறம் நகர்த்தவும்", + "PlayAllFromHere": "அனைத்தையும் இங்கிருந்து வாசிக்கவும்", + "Play": "வாசிக்கவும்", + "PlaceFavoriteChannelsAtBeginning": "பிடித்த சேனல்களை ஆரம்பத்தில் வைக்கவும்", + "PinCodeResetConfirmation": "பின் குறியீட்டை மீட்டமைக்க விரும்புகிறீர்களா?", + "PinCodeResetComplete": "முள் குறியீடு மீட்டமைக்கப்பட்டது.", + "PictureInPicture": "படத்தினுள் படம்", + "Person": "நபர்", + "PerfectMatch": "சரியான பொருத்தம்", + "People": "மக்கள்", + "PasswordSaved": "கடவுச்சொல் சேமிக்கப்பட்டது.", + "PasswordResetProviderHelp": "இந்த பயனர் கடவுச்சொல் மீட்டமைப்பைக் கோரும்போது பயன்படுத்த கடவுச்சொல் மீட்டமைப்பு வழங்குநரைத் தேர்வுசெய்க.", + "HeaderResetPassword": "கடவுச்சொல்லை மீட்டமைக்க", + "PasswordResetConfirmation": "கடவுச்சொல்லை மீட்டமைக்க நிச்சயமாக விரும்புகிறீர்களா?", + "PasswordResetComplete": "கடவுச்சொல் மீட்டமைக்கப்பட்டது.", + "PasswordMatchError": "கடவுச்சொல் மற்றும் கடவுச்சொல் உறுதிப்படுத்தல் பொருந்த வேண்டும்.", + "ParentalRating": "பெற்றோர் மதிப்பீடு", + "PackageInstallFailed": "{0} (பதிப்பு {1}) நிறுவல் தோல்வியடைந்தது.", + "PackageInstallCompleted": "{0} (பதிப்பு {1}) நிறுவல் முடிந்தது.", + "PackageInstallCancelled": "{0} (பதிப்பு {1}) நிறுவல் ரத்து செய்யப்பட்டது.", + "Overview": "கண்ணோட்டம்", + "OriginalAirDateValue": "அசல் ஒளிபரப்பப்பட்ட தேதி: {0}", + "OptionWeekly": "வாராந்திர", + "OptionWeekends": "வார இறுதி நாட்கள்", + "OptionWeekdays": "வார நாட்கள்", + "OptionWakeFromSleep": "தூக்கத்திலிருந்து விழிப்பதற்கு", + "OptionUnplayed": "காட்டப்படாதது", + "OptionUnairedEpisode": "ஒளிபரப்பப்படாத அத்தியாயங்கள்", + "OptionTvdbRating": "TVDB மதிப்பீடு", + "OptionTrackName": "ட்ராக் பெயர்", + "OptionThumbCard": "சிறுபட அட்டை", + "OptionThumb": "சிறுபடம்", + "OptionSubstring": "மூலக்கூறு", + "OptionSpecialEpisode": "சிறப்பு", + "OptionSaveMetadataAsHiddenHelp": "இதை மாற்றுவது முன்னோக்கிச் செல்லும் புதிய மெட்டாடேட்டாவுக்கு பொருந்தும். தற்போதுள்ள மெட்டாடேட்டா கோப்புகள் அடுத்த முறை சேவையகத்தால் சேமிக்கப்படும் போது அவை புதுப்பிக்கப்படும்.", + "OptionSaveMetadataAsHidden": "மெட்டாடேட்டா மற்றும் படங்களை மறைக்கப்பட்ட கோப்புகளாக சேமிக்கவும்", + "OptionRuntime": "இயக்க நேரம்", + "OptionResumable": "மீண்டும் தொடங்கக்கூடியது", + "OptionResElement": "res கூறு", + "OptionRequirePerfectSubtitleMatchHelp": "சரியான பொருத்தம் தேவைப்பட்டால், உங்கள் சரியான வீடியோ கோப்புடன் சோதிக்கப்பட்ட மற்றும் சரிபார்க்கப்பட்டவற்றை மட்டுமே சேர்க்க வசன வரிகள் வடிகட்டப்படும். இதைத் தேர்வுசெய்வது வசன வரிகள் பதிவிறக்கம் செய்யப்படுவதற்கான வாய்ப்பை அதிகரிக்கும், ஆனால் தவறான அல்லது தவறான வசன உரைக்கான வாய்ப்புகளை அதிகரிக்கும்.", + "OptionRequirePerfectSubtitleMatch": "எனது வீடியோ கோப்புகளுக்கு சரியான பொருத்தமாக இருக்கும் வசன வரிகள் மட்டுமே பதிவிறக்கவும்", + "OptionReportByteRangeSeekingWhenTranscodingHelp": "நேரம் நன்றாகத் தேடாத சில சாதனங்களுக்கு இது தேவைப்படுகிறது.", + "OptionReportByteRangeSeekingWhenTranscoding": "டிரான்ஸ்கோடிங் செய்யும் போது பைட் தேடுவதை சேவையகம் ஆதரிக்கிறது என்று புகாரளிக்கவும்", + "OptionReleaseDate": "வெளியீட்டு தேதி", + "OptionRegex": "ரீஜெக்ஸ்", + "OptionRandom": "சீரற்ற", + "OptionProtocolHttp": "HTTP", + "OptionProtocolHls": "HTTP நேரடி ஒளிபரப்பு", + "OptionProfileVideoAudio": "வீடியோ ஆடியோ", + "OptionProfileVideo": "காணொளி", + "OptionProfilePhoto": "புகைப்படம்", + "OptionProfileAudio": "ஆடியோ", + "OptionPremiereDate": "பிரீமியர் தேதி", + "OptionPosterCard": "சுவரொட்டி அட்டை", + "OptionPoster": "சுவரொட்டி", + "OptionPlayed": "வாசிக்கப்பட்டது", + "OptionPlayCount": "ப்ளே கவுண்ட்", + "OptionPlainVideoItemsHelp": "எல்லா வீடியோக்களும் டிஐடிஎல்லில் \"object.item.videoItem\" என குறிப்பிடப்படுகின்றன, அதாவது \"object.item.videoItem.movie\" போன்ற ஒரு குறிப்பிட்ட வகைக்கு பதிலாக.", + "OptionPlainVideoItems": "எல்லா வீடியோக்களையும் எளிய வீடியோ உருப்படிகளாகக் காண்பி", + "OptionPlainStorageFoldersHelp": "அனைத்து கோப்புறைகளும் டிஐடிஎல்லில் \"object.container.storageFolder\" என குறிப்பிடப்படுகின்றன, அதாவது \"object.container.person.musicArtist\" போன்ற ஒரு குறிப்பிட்ட வகைக்கு பதிலாக.", + "OptionPlainStorageFolders": "எல்லா கோப்புறைகளையும் வெற்று சேமிப்பக கோப்புறைகளாகக் காண்பி", + "OptionParentalRating": "பெற்றோர் மதிப்பீடு", + "OptionOnInterval": "ஒரு இடைவெளியில்", + "OptionNone": "எதுவுமில்லை", + "OptionNew": "புதிய…", + "OptionNameSort": "பெயர்", + "OptionMissingEpisode": "தவறிய பாகங்கள்", + "OptionMax": "அதிகபட்சம்", + "OptionLoginAttemptsBeforeLockoutHelp": "பூஜ்ஜியத்தின் மதிப்பு என்பது சாதாரண பயனர்களுக்கான மூன்று முயற்சிகளின் இயல்புநிலையையும், நிர்வாகிகளுக்கு ஐந்து முயற்சிகளையும் பெறுவதாகும். இதை -1 ஆக அமைப்பது அம்சத்தை முடக்கும்.", + "OptionLoginAttemptsBeforeLockout": "கதவடைப்பு ஏற்படுவதற்கு முன்பு எத்தனை தவறான உள்நுழைவு முயற்சிகள் செய்யப்படலாம் என்பதை தீர்மானிக்கிறது.", + "OptionList": "பட்டியல்", + "OptionLikes": "விருப்பங்கள்", + "OptionIsSD": "எஸ்டி", + "OptionIsHD": "எச்டி", + "OptionImdbRating": "IMDb மதிப்பீடு", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "இந்த கோரிக்கைகள் மதிக்கப்படும், ஆனால் பைட் வரம்பு தலைப்பை புறக்கணிக்கும்.", + "OptionIgnoreTranscodeByteRangeRequests": "டிரான்ஸ்கோட் பைட் வரம்பு கோரிக்கைகளை புறக்கணிக்கவும்", + "OptionHomeVideos": "புகைப்படங்கள்", + "OptionHlsSegmentedSubtitles": "HLS பிரிக்கப்பட்ட வசன வரிகள்", + "OptionHideUserFromLoginHelp": "தனிப்பட்ட அல்லது மறைக்கப்பட்ட நிர்வாகி கணக்குகளுக்கு பயனுள்ளதாக இருக்கும். பயனர் தங்கள் பயனர்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிட்டு கைமுறையாக உள்நுழைய வேண்டும்.", + "OptionHideUser": "உள்நுழைவு திரைகளிலிருந்து இந்த பயனரை மறைக்கவும்", + "OptionHasTrailer": "டிரெய்லர்", + "OptionHasThemeVideo": "தீம் வீடியோ", + "OptionHasThemeSong": "தீம் பாடல்", + "OptionHasSubtitles": "வசன வரிகள்", + "OptionHasSpecialFeatures": "சிறப்பு அம்சங்கள்", + "OptionFavorite": "பிடித்தவை", + "OptionExtractChapterImage": "அத்தியாயம் படத்தை பிரித்தெடுப்பதை இயக்கு", + "OptionExternallyDownloaded": "வெளிப்புற பதிவிறக்க" } From 00cb7e0ca835a3d8bf86ef43f4556cc55c979203 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 15:47:31 +0000 Subject: [PATCH 433/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 7201ea80b4..fddfbfdf1c 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1238,5 +1238,6 @@ "OptionHasSpecialFeatures": "சிறப்பு அம்சங்கள்", "OptionFavorite": "பிடித்தவை", "OptionExtractChapterImage": "அத்தியாயம் படத்தை பிரித்தெடுப்பதை இயக்கு", - "OptionExternallyDownloaded": "வெளிப்புற பதிவிறக்க" + "OptionExternallyDownloaded": "வெளிப்புற பதிவிறக்க", + "PlaybackData": "பின்னணி தரவு" } From 50e4a179ebd88e7d05c58847254c4f9c4544e1fa Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 15:48:02 +0000 Subject: [PATCH 434/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index fddfbfdf1c..90d6c05dbd 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1239,5 +1239,7 @@ "OptionFavorite": "பிடித்தவை", "OptionExtractChapterImage": "அத்தியாயம் படத்தை பிரித்தெடுப்பதை இயக்கு", "OptionExternallyDownloaded": "வெளிப்புற பதிவிறக்க", - "PlaybackData": "பின்னணி தரவு" + "PlaybackData": "பின்னணி தரவு", + "PlayFromBeginning": "ஆரம்பத்தில் இருந்து வாசிக்கவும்", + "PlayCount": "வாசிப்பு எண்ணிக்கை" } From ef4caf2eb4369040b8b09634086cb127ea0d7cde Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 15:50:00 +0000 Subject: [PATCH 435/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 113 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 90d6c05dbd..edb5806508 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1241,5 +1241,116 @@ "OptionExternallyDownloaded": "வெளிப்புற பதிவிறக்க", "PlaybackData": "பின்னணி தரவு", "PlayFromBeginning": "ஆரம்பத்தில் இருந்து வாசிக்கவும்", - "PlayCount": "வாசிப்பு எண்ணிக்கை" + "PlayCount": "வாசிப்பு எண்ணிக்கை", + "StopRecording": "பதிவு செய்வதை நிறுத்துங்கள்", + "Sports": "விளையாட்டு", + "SortName": "பெயரை வரிசைப்படுத்து", + "SortChannelsBy": "சேனல்களை வரிசைப்படுத்து:", + "SortByValue": "{0} மூலம் வரிசைப்படுத்து", + "Sort": "வரிசைப்படுத்து", + "SmartSubtitlesHelp": "ஆடியோ வெளிநாட்டு மொழியில் இருக்கும்போது மொழி விருப்பத்துடன் பொருந்தக்கூடிய வசனங்கள் ஏற்றப்படும்.", + "Smart": "ஸ்மார்ட்", + "Smaller": "மிக சிறிய", + "SmallCaps": "சிறிய எழுத்துக்கள்", + "Small": "சிறிய", + "SkipEpisodesAlreadyInMyLibraryHelp": "எபிசோடுகள் கிடைக்கும்போது, சீசன் மற்றும் எபிசோட் எண்களைப் பயன்படுத்தி ஒப்பிடப்படும்.", + "SkipEpisodesAlreadyInMyLibrary": "எனது நூலகத்தில் ஏற்கனவே இருக்கும் அத்தியாயங்களை பதிவு செய்ய வேண்டாம்", + "SimultaneousConnectionLimitHelp": "அனுமதிக்கப்பட்ட ஒரே நேரத்தில் நீரோடைகளின் அதிகபட்ச எண்ணிக்கை. வரம்பில்லாமல் 0 ஐ உள்ளிடவும்.", + "Filter": "வடிகட்டு", + "New": "புதிய", + "Shuffle": "கலக்கு", + "ShowYear": "ஆண்டு காட்டு", + "ShowTitle": "தலைப்பைக் காட்டு", + "ShowMore": "மேலும் காட்ட", + "ShowLess": "குறைவாகக் காட்டு", + "ShowIndicatorsFor": "இதற்கான குறிகாட்டிகளைக் காட்டு:", + "ShowAdvancedSettings": "மேம்பட்ட அமைப்புகளைக் காட்டு", + "Share": "பகிர்", + "SettingsWarning": "இந்த மதிப்புகளை மாற்றுவது உறுதியற்ற தன்மை அல்லது இணைப்பு தோல்விகளை ஏற்படுத்தக்கூடும். உங்களுக்கு ஏதேனும் சிக்கல்கள் ஏற்பட்டால், அவற்றை இயல்புநிலைக்கு மாற்ற பரிந்துரைக்கிறோம்.", + "SettingsSaved": "அமைப்புகள் சேமிக்கப்பட்டன.", + "Settings": "அமைப்புகள்", + "ServerUpdateNeeded": "இந்த சேவையகத்தை புதுப்பிக்க வேண்டும். சமீபத்திய பதிப்பைப் பதிவிறக்க, தயவுசெய்து {0} ஐ பார்வையிடவும்", + "ServerRestartNeededAfterPluginInstall": "செருகுநிரலை நிறுவிய பின் ஜெல்லிஃபின் மறுதொடக்கம் செய்யப்பட வேண்டும்.", + "ServerNameIsShuttingDown": "{0} இல் உள்ள சேவையகம் மூடப்படும்.", + "ServerNameIsRestarting": "{0} இல் உள்ள சேவையகம் மறுதொடக்கம் செய்யப்படுகிறது.", + "SeriesYearToPresent": "{0} - தற்போது", + "SeriesSettings": "தொடர் அமைப்புகள்", + "SeriesRecordingScheduled": "தொடர் பதிவு திட்டமிடப்பட்டுள்ளது.", + "SeriesDisplayOrderHelp": "எபிசோட்களை ஒளிபரப்பப்பட்ட தேதி, டிவிடி ஆர்டர் அல்லது முழுமையான எண்ணால் வரிசைப்படுத்தவும்.", + "SeriesCancelled": "தொடர் ரத்து செய்யப்பட்டது.", + "Series": "தொடர்", + "SendMessage": "செய்தி அனுப்ப", + "SelectAdminUsername": "நிர்வாகி கணக்கிற்கான பயனர்பெயரைத் தேர்ந்தெடுக்கவும்.", + "Season": "பருவம்", + "SearchResults": "தேடல் முடிவுகள்", + "SearchForSubtitles": "வசன வரிகள் தேடுங்கள்", + "SearchForMissingMetadata": "காணாமல் போன மெட்டாடேட்டாவைத் தேடுங்கள்", + "SearchForCollectionInternetMetadata": "கலைப்படைப்பு மற்றும் மெட்டாடேட்டாவிற்கு இணையத்தில் தேடுங்கள்", + "Search": "தேடு", + "Screenshots": "ஸ்கிரீன்ஷாட்கள்", + "Screenshot": "ஸ்கிரீன்ஷாட்", + "Schedule": "அட்டவணை", + "ScanLibrary": "ஸ்கேன் நூலகம்", + "ScanForNewAndUpdatedFiles": "புதிய மற்றும் புதுப்பிக்கப்பட்ட கோப்புகளை ஸ்கேன் செய்யுங்கள்", + "SaveSubtitlesIntoMediaFoldersHelp": "வீடியோ கோப்புகளுக்கு அடுத்ததாக வசன வரிகள் சேமிப்பது அவற்றை எளிதாக நிர்வகிக்க அனுமதிக்கும்.", + "SaveSubtitlesIntoMediaFolders": "மீடியா கோப்புறைகளில் வசன வரிகளைச் சேமிக்கவும்", + "SaveChanges": "மாற்றங்களை சேமியுங்கள்", + "Save": "சேமியுங்கள்", + "Saturday": "சனிக்கிழமை", + "Runtime": "இயக்க நேரம்", + "Rewind": "முன்னோக்கிச்செலுத்து", + "ResumeAt": "{0} இலிருந்து மீண்டும் தொடங்குங்கள்", + "ReplaceExistingImages": "இருக்கும் படங்களை மாற்றவும்", + "ReplaceAllMetadata": "எல்லா மெட்டாடேட்டாவையும் மாற்றவும்", + "RepeatOne": "மீண்டும் ஒருமுறை", + "RepeatMode": "பயன்முறையை மீண்டும் செய்யவும்", + "RepeatEpisodes": "அத்தியாயங்களை மீண்டும் செய்யவும்", + "RepeatAll": "அனைத்தையும் மீண்டும் செய்யவும்", + "Repeat": "மீண்டும்", + "RemoveFromPlaylist": "பிளேலிஸ்ட்டில் இருந்து அகற்று", + "RemoveFromCollection": "சேகரிப்பிலிருந்து அகற்று", + "RememberMe": "என்னை நினைவிற்கொள்ளவும்", + "ReleaseDate": "வெளியீட்டு தேதி", + "RefreshQueued": "புதுப்பிப்பு வரிசைப்படுத்தப்பட்டுள்ளது.", + "RefreshMetadata": "மெட்டாடேட்டாவைப் புதுப்பிக்கவும்", + "RefreshDialogHelp": "டாஷ்போர்டில் இயக்கப்பட்ட அமைப்புகள் மற்றும் இணைய சேவைகளின் அடிப்படையில் மெட்டாடேட்டா புதுப்பிக்கப்படுகிறது.", + "Refresh": "புதுப்பிப்பு", + "Recordings": "பதிவுகள்", + "RecordingScheduled": "பதிவு திட்டமிடப்பட்டுள்ளது.", + "MessageChangeRecordingPath": "உங்கள் ரெக்கார்டிங் கோப்புறையை மாற்றுவது ஏற்கனவே இருக்கும் பதிவுகளை பழைய இடத்திலிருந்து புதிய இடத்திற்கு மாற்றாது. விரும்பினால் அவற்றை கைமுறையாக நகர்த்த வேண்டும்.", + "RecordingCancelled": "பதிவு ரத்து செய்யப்பட்டது.", + "RecordSeries": "தொடரை பதிவு செய்", + "Record": "பதிவு செய்", + "RecommendationStarring": "{0} நடித்த", + "RecommendationDirectedBy": "{0} ஐ இயக்கியது", + "RecommendationBecauseYouWatched": "நீங்கள் {0} பார்த்ததால்", + "RecommendationBecauseYouLike": "நீங்கள் {0} ஐ விரும்புவதால்", + "RecentlyWatched": "சமீபத்தில் பார்த்தது", + "Rate": "மதிப்பிடுங்கள்", + "Raised": "எழுப்பப்பட்ட", + "Quality": "தரம்", + "Programs": "நிகழ்ச்சிகள்", + "ProductionLocations": "தயாரிப்பு தளம்", + "Producer": "தயாரிப்பாளர்", + "Primary": "முதன்மை", + "PreviousTrack": "முந்தையதைத் தவிர்", + "Previous": "முந்தையது", + "Premieres": "பிரீமியர்ஸ்", + "Premiere": "பிரீமியர்", + "PreferEmbeddedEpisodeInfosOverFileNames": "கோப்பு பெயர்களில் உட்பொதிக்கப்பட்ட எபிசோட் தகவலை விரும்புங்கள்", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "இது உட்பொதிக்கப்பட்ட மெட்டாடேட்டாவிலிருந்து எபிசோட் தகவலைப் பெற்றால் பயன்படுத்துகிறது.", + "PreferEmbeddedTitlesOverFileNamesHelp": "இணைய மெட்டாடேட்டா அல்லது உள்ளூர் மெட்டாடேட்டா கிடைக்காதபோது இயல்புநிலை காட்சி தலைப்பை இது தீர்மானிக்கிறது.", + "PreferEmbeddedTitlesOverFileNames": "கோப்பு பெயர்களில் உட்பொதிக்கப்பட்ட தலைப்புகளை விரும்புங்கள்", + "MessageGetInstalledPluginsError": "தற்போது நிறுவப்பட்ட செருகுநிரல்களின் பட்டியலைப் பெறும்போது பிழை ஏற்பட்டது.", + "MessagePluginInstallError": "சொருகி நிறுவும் போது பிழை ஏற்பட்டது.", + "MessagePluginInstalled": "சொருகி வெற்றிகரமாக நிறுவப்பட்டுள்ளது. மாற்றங்கள் நடைமுறைக்கு வர சேவையகத்தை மறுதொடக்கம் செய்ய வேண்டும்.", + "PleaseSelectTwoItems": "குறைந்தது இரண்டு உருப்படிகளைத் தேர்ந்தெடுக்கவும்.", + "PleaseRestartServerName": "ஜெல்லிஃபினை {0} இல் மறுதொடக்கம் செய்யுங்கள்.", + "PleaseEnterNameOrId": "ஒரு பெயர் அல்லது வெளிப்புற ஐடியை உள்ளிடவும்.", + "PleaseConfirmPluginInstallation": "மேலே உள்ளதைப் படித்திருப்பதை உறுதிப்படுத்த சரி என்பதைக் கிளிக் செய்து, சொருகி நிறுவலைத் தொடர விரும்புகிறீர்கள்.", + "PleaseAddAtLeastOneFolder": "சேர் பொத்தானைக் கிளிக் செய்வதன் மூலம் இந்த நூலகத்தில் குறைந்தது ஒரு கோப்புறையாவது சேர்க்கவும்.", + "Played": "வாசிக்கப்பட்டது", + "PlaybackErrorNoCompatibleStream": "இந்த கிளையன்ட் ஊடகத்துடன் பொருந்தாது மற்றும் சேவையகம் இணக்கமான ஊடக வடிவமைப்பை அனுப்பவில்லை.", + "PlayNextEpisodeAutomatically": "அடுத்த அத்தியாயத்தை தானாக இயக்கு", + "PlayNext": "அடுத்ததை வாசிக்கவும்" } From 318ade8bbe0f8fd736ff57e886fdb1a453b35ee7 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 16:33:27 +0000 Subject: [PATCH 436/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 117 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index edb5806508..20d99250fb 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1352,5 +1352,120 @@ "Played": "வாசிக்கப்பட்டது", "PlaybackErrorNoCompatibleStream": "இந்த கிளையன்ட் ஊடகத்துடன் பொருந்தாது மற்றும் சேவையகம் இணக்கமான ஊடக வடிவமைப்பை அனுப்பவில்லை.", "PlayNextEpisodeAutomatically": "அடுத்த அத்தியாயத்தை தானாக இயக்கு", - "PlayNext": "அடுத்ததை வாசிக்கவும்" + "PlayNext": "அடுத்ததை வாசிக்கவும்", + "Yesterday": "நேற்று", + "Yes": "ஆம்", + "YadifBob": "யடிஃப் பாப்", + "Yadif": "யடிஃப்", + "XmlTvSportsCategoriesHelp": "இந்த வகைகளைக் கொண்ட நிகழ்ச்சிகள் விளையாட்டுத் திட்டங்களாகக் காட்டப்படும். '|' உடன் பலவற்றைப் பிரிக்கவும்.", + "XmlTvPathHelp": "XMLTV கோப்புக்கான பாதை. ஜெல்லிஃபின் இந்த கோப்பைப் படித்து புதுப்பிப்புகளுக்கு அவ்வப்போது சரிபார்க்கும். கோப்பை உருவாக்கி புதுப்பிக்க நீங்கள் பொறுப்பு.", + "XmlTvNewsCategoriesHelp": "இந்த வகைகளைக் கொண்ட நிகழ்ச்சிகள் செய்தித் திட்டங்களாகக் காட்டப்படும். '|' உடன் பலவற்றைப் பிரிக்கவும்.", + "XmlTvMovieCategoriesHelp": "இந்த வகைகளைக் கொண்ட நிகழ்ச்சிகள் திரைப்படங்களாக காண்பிக்கப்படும். '|' உடன் பலவற்றைப் பிரிக்கவும்.", + "XmlTvKidsCategoriesHelp": "இந்த வகைகளைக் கொண்ட நிகழ்ச்சிகள் குழந்தைகளுக்கான நிரல்களாக காண்பிக்கப்படும். '|' உடன் பலவற்றைப் பிரிக்கவும்.", + "XmlDocumentAttributeListHelp": "இந்த பண்புக்கூறுகள் ஒவ்வொரு XML பதிலின் மூல உறுப்புக்கும் பயன்படுத்தப்படுகின்றன.", + "Writers": "எழுத்தாளர்கள்", + "Writer": "எழுத்தாளர்", + "WizardCompleted": "இப்போது நமக்குத் தேவை அவ்வளவுதான். ஜெல்லிஃபின் உங்கள் ஊடக நூலகம் பற்றிய தகவல்களை சேகரிக்கத் தொடங்கியுள்ளார். எங்கள் சில பயன்பாடுகளைப் பாருங்கள், பின்னர் டாஷ்போர்டு ஐக் காண பினிஷ் என்பதைக் கிளிக் செய்க.", + "Whitelist": "அனுமதிப்பட்டியல்", + "WelcomeToProject": "ஜெல்லிஃபினுக்கு வருக!", + "Wednesday": "புதன்கிழமை", + "Watched": "ஏற்கனவே பார்த்தேன்", + "ViewPlaybackInfo": "பின்னணி தகவலைக் காண்க", + "ViewAlbumArtist": "ஆல்பம் கலைஞரைக் காண்க", + "ViewAlbum": "ஆல்பத்தைக் காண்க", + "Vertical": "செங்குத்தாக", + "ValueVideoCodec": "வீடியோ கோடெக்: {0}", + "ValueTimeLimitSingleHour": "கால எல்லை: 1 மணி நேரம்", + "ValueTimeLimitMultiHour": "கால எல்லை: {0} மணி", + "ValueSongCount": "{0} பாடல்கள்", + "ValueSeriesCount": "{0} தொடர்", + "ValueSeconds": "{0} விநாடிகள்", + "ValueOneSong": "1 பாடல்", + "ValueOneSeries": "1 தொடர்", + "ValueOneMusicVideo": "1 இசை வீடியோ", + "ValueOneMovie": "1 திரைப்படம்", + "ValueOneEpisode": "1 அத்தியாயம்", + "ValueOneAlbum": "1 ஆல்பம்", + "ValueMusicVideoCount": "{0} இசை வீடியோக்கள்", + "ValueMovieCount": "{0} திரைப்படங்கள்", + "ValueMinutes": "{0} நிமிடம்", + "ValueEpisodeCount": "{0} அத்தியாயங்கள்", + "ValueDiscNumber": "வட்டு {0}", + "ValueContainer": "கொள்கலன்: {0}", + "ValueConditions": "நிபந்தனைகள்: {0}", + "ValueCodec": "கோடெக்: {0}", + "ValueAudioCodec": "ஆடியோ கோடெக்: {0}", + "ValueAlbumCount": "{0} ஆல்பங்கள்", + "UserProfilesIntro": "சிறுமணி காட்சி அமைப்புகள், விளையாட்டு நிலை மற்றும் பெற்றோரின் கட்டுப்பாடுகள் ஆகியவற்றைக் கொண்ட பயனர் சுயவிவரங்களுக்கான ஆதரவை ஜெல்லிஃபின் கொண்டுள்ளது.", + "UserAgentHelp": "தனிப்பயன் பயனர் முகவர் HTTP தலைப்பை வழங்கவும்.", + "Upload": "பதிவேற்றவும்", + "Up": "மேலே", + "Unrated": "மதிப்பிடப்படாதது", + "Unplayed": "காட்டப்படாதது", + "Unmute": "முடக்கு நீக்கம்", + "HeaderUninstallPlugin": "செருகுநிரலை நிறுவல் நீக்கு", + "UninstallPluginConfirmation": "{0} ஐ நிறுவல் நீக்க விரும்புகிறீர்களா?", + "Uniform": "சீராக", + "TvLibraryHelp": "{0} டிவி பெயரிடும் வழிகாட்டியை {1} மதிப்பாய்வு செய்யவும்.", + "Tuesday": "செவ்வாய்", + "Transcoding": "டிரான்ஸ்கோடிங்", + "Trailers": "டிரெய்லர்கள்", + "TrackCount": "{0} தடங்கள்", + "Track": "தடம்", + "TitlePlayback": "பின்னணி", + "TitleHostingSettings": "ஹோஸ்டிங் அமைப்புகள்", + "TitleHardwareAcceleration": "வன்பொருள் முடுக்கம்", + "Thursday": "வியாழக்கிழமை", + "Thumb": "சிறுபடம்", + "ThisWizardWillGuideYou": "இந்த வழிகாட்டி அமைவு செயல்முறை மூலம் உங்களுக்கு வழிகாட்ட உதவும். தொடங்க, நீங்கள் விரும்பும் மொழியைத் தேர்ந்தெடுக்கவும்.", + "TheseSettingsAffectSubtitlesOnThisDevice": "இந்த அமைப்புகள் இந்த சாதனத்தில் வசன வரிகள் பாதிக்கின்றன", + "ThemeVideos": "தீம் வீடியோக்கள்", + "ThemeSongs": "தீம் பாடல்கள்", + "TellUsAboutYourself": "உங்களைப் பற்றி சொல்லுங்கள்", + "TagsValue": "குறிச்சொற்கள்: {0}", + "Tags": "குறிச்சொற்கள்", + "TabUpcoming": "வரவிருக்கும்", + "TabTrailers": "டிரெய்லர்கள்", + "TabStreaming": "ஸ்ட்ரீமிங்", + "TabSettings": "அமைப்புகள்", + "TabServer": "சேவையகம்", + "TabScheduledTasks": "திட்டமிடப்பட்ட பணிகள்", + "TabResumeSettings": "மீண்டும் தொடர்", + "TabResponses": "பதில்கள்", + "TabProfiles": "சுயவிவரங்கள்", + "TabProfile": "சுயவிவரம்", + "TabPlugins": "செருகுநிரல்கள்", + "TabParentalControl": "பெற்றோர் கட்டுப்பாடு", + "TabOther": "மற்றவை", + "TabNotifications": "அறிவிப்புகள்", + "TabNfoSettings": "NFO அமைப்புகள்", + "TabNetworking": "நெட்வொர்க்கிங்", + "TabNetworks": "நெட்வொர்க்குகள்", + "TabMyPlugins": "எனது செருகுநிரல்கள்", + "TabMusicVideos": "இசை கானொளி", + "TabMusic": "இசை", + "TabLogs": "பதிவுகள்", + "TabLatest": "அண்மை", + "TabInfo": "தகவல்", + "TabEpisodes": "அத்தியாயங்கள்", + "TabDirectPlay": "நேரடி நாடகம்", + "TabDashboard": "டாஷ்போர்டு", + "TabContainers": "கொள்கலன்கள்", + "TabCodecs": "கோடெக்குகள்", + "TabRepositories": "களஞ்சியங்கள்", + "TabCatalog": "அட்டவணை", + "TabAlbumArtists": "ஆல்பம் கலைஞர்கள்", + "TabAdvanced": "மேம்படுத்தபட்ட", + "TabAccess": "அணுகல்", + "TV": "தொலைக்காட்சி", + "SystemDlnaProfilesHelp": "கணினி சுயவிவரங்கள் படிக்க மட்டுமே. கணினி சுயவிவரத்திற்கான மாற்றங்கள் புதிய தனிப்பயன் சுயவிவரத்தில் சேமிக்கப்படும்.", + "SyncPlayAccessHelp": "இந்த பயனர் ஒத்திசைவு அம்சத்திற்கு அணுகல் அளவைத் தேர்ந்தெடுக்கவும். ஒத்திசைவு பிளேபேக்கை பிற சாதனங்களுடன் ஒத்திசைக்க உதவுகிறது.", + "Sunday": "ஞாயிற்றுக்கிழமை", + "Suggestions": "பரிந்துரைகள்", + "Subtitles": "வசன வரிகள்", + "SubtitleOffset": "வசன ஆஃப்செட்", + "SubtitleDownloadersHelp": "முன்னுரிமைக்கு ஏற்ப உங்களுக்கு விருப்பமான வசன பதிவிறக்கிகளை இயக்கவும் தரவரிசைப்படுத்தவும்.", + "SubtitleAppearanceSettingsDisclaimer": "இந்த அமைப்புகள் வரைகலை வசன வரிகள் (PGD, DVD போன்றவை) அல்லது அவற்றின் சொந்த பாணியை உட்பொதிக்கும் ASS/SSA வசன வரிகள் பொருந்தாது.", + "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "இந்தச் சாதனத்தால் தொடங்கப்பட்ட எந்த Chromecast இயக்கத்திற்கும் இந்த அமைப்புகள் பொருந்தும்.", + "Studios": "ஸ்டுடியோக்கள்" } From a00aba31d6375ca07574e9b514aedd712a610003 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 17:06:51 +0000 Subject: [PATCH 437/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 20d99250fb..35c4f265b7 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1467,5 +1467,6 @@ "SubtitleDownloadersHelp": "முன்னுரிமைக்கு ஏற்ப உங்களுக்கு விருப்பமான வசன பதிவிறக்கிகளை இயக்கவும் தரவரிசைப்படுத்தவும்.", "SubtitleAppearanceSettingsDisclaimer": "இந்த அமைப்புகள் வரைகலை வசன வரிகள் (PGD, DVD போன்றவை) அல்லது அவற்றின் சொந்த பாணியை உட்பொதிக்கும் ASS/SSA வசன வரிகள் பொருந்தாது.", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "இந்தச் சாதனத்தால் தொடங்கப்பட்ட எந்த Chromecast இயக்கத்திற்கும் இந்த அமைப்புகள் பொருந்தும்.", - "Studios": "ஸ்டுடியோக்கள்" + "Studios": "ஸ்டுடியோக்கள்", + "PathNotFound": "பாதை கண்டுபிடிக்க முடியவில்லை. பாதை செல்லுபடியாகும் என்பதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்." } From bce3f7f408a61a890c7443ad2a05ecdd6453e35b Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Sat, 15 Aug 2020 17:07:03 +0000 Subject: [PATCH 438/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index 35c4f265b7..d31fb8872e 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1468,5 +1468,26 @@ "SubtitleAppearanceSettingsDisclaimer": "இந்த அமைப்புகள் வரைகலை வசன வரிகள் (PGD, DVD போன்றவை) அல்லது அவற்றின் சொந்த பாணியை உட்பொதிக்கும் ASS/SSA வசன வரிகள் பொருந்தாது.", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "இந்தச் சாதனத்தால் தொடங்கப்பட்ட எந்த Chromecast இயக்கத்திற்கும் இந்த அமைப்புகள் பொருந்தும்.", "Studios": "ஸ்டுடியோக்கள்", - "PathNotFound": "பாதை கண்டுபிடிக்க முடியவில்லை. பாதை செல்லுபடியாகும் என்பதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்." + "PathNotFound": "பாதை கண்டுபிடிக்க முடியவில்லை. பாதை செல்லுபடியாகும் என்பதை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "SubtitleVerticalPositionHelp": "உரை தோன்றும் வரி எண். நேர்மறை எண்கள் மேல் கீழே குறிக்கின்றன. எதிர்மறை எண்கள் கீழே மேலே குறிக்கின்றன.", + "LabelSubtitleVerticalPosition": "செங்குத்து நிலை:", + "ClearQueue": "வரிசையை அழிக்கவும்", + "StopPlayback": "பிளேபேக்கை நிறுத்துங்கள்", + "ButtonPlayer": "பிளேயர்", + "ButtonCast": "நடிகர்கள்", + "ButtonSyncPlay": "ஒத்திசைவு", + "EnableBlurHashHelp": "இன்னும் ஏற்றப்படும் படங்கள் தனித்துவமான ஒதுக்கிடத்துடன் காண்பிக்கப்படும்.", + "EnableBlurHash": "படங்களுக்கு மங்கலான ஒதுக்கிடங்களை இயக்கவும்", + "UnsupportedPlayback": "DRM ஆல் பாதுகாக்கப்பட்ட உள்ளடக்கத்தை ஜெல்லிஃபின் டிக்ரிப்ட் செய்ய முடியாது, ஆனால் பாதுகாக்கப்பட்ட தலைப்புகள் உட்பட எல்லா உள்ளடக்கமும் பொருட்படுத்தாமல் முயற்சிக்கப்படும். குறியாக்கம் அல்லது ஊடாடும் தலைப்புகள் போன்ற பிற ஆதரிக்கப்படாத அம்சங்கள் காரணமாக சில கோப்புகள் முற்றிலும் கருப்பு நிறத்தில் தோன்றக்கூடும்.", + "OnApplicationStartup": "பயன்பாட்டு தொடக்கத்தில்", + "EveryXHours": "ஒவ்வொரு {0} மணி நேரமும்", + "EveryHour": "ஒவ்வொரு மணி நேரமும்", + "EveryXMinutes": "ஒவ்வொரு {0} நிமிடங்களும்", + "OnWakeFromSleep": "தூக்கத்திலிருந்து எழுந்தவுடன்", + "WeeklyAt": "{1} இல் {0}", + "DailyAt": "தினசரி {0}", + "LastSeen": "கடைசியாக பார்த்தது {0}", + "PersonRole": "{0} என", + "ListPaging": "{0} - {2} இன் {1}", + "WriteAccessRequired": "ஜெல்லிஃபினுக்கு இந்த கோப்புறையில் எழுத அணுகல் தேவை. எழுதும் அணுகலை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்." } From 5e87c87c023f3befc0ae19819ef1bd3e31a5f278 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sun, 16 Aug 2020 12:17:37 +0100 Subject: [PATCH 439/463] Update plugin.js --- src/plugins/sessionPlayer/plugin.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/sessionPlayer/plugin.js b/src/plugins/sessionPlayer/plugin.js index d4cbb8345f..cbeb6f34b4 100644 --- a/src/plugins/sessionPlayer/plugin.js +++ b/src/plugins/sessionPlayer/plugin.js @@ -450,6 +450,9 @@ class SessionPlayer { }); } + getRepeatMode() { + } + setQueueShuffleMode(mode) { sendCommandByName(this, 'SetShuffleQueue', { ShuffleMode: mode @@ -484,6 +487,9 @@ class SessionPlayer { return Promise.resolve([]); } + getCurrentPlaylistItemId() { + } + setCurrentPlaylistItem(playlistItemId) { return Promise.resolve(); } From f62014a2d4bca871afd8e9c916cb934ec8276933 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sun, 16 Aug 2020 12:19:38 +0100 Subject: [PATCH 440/463] Update plugin.js --- src/plugins/experimentalWarnings/plugin.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/experimentalWarnings/plugin.js b/src/plugins/experimentalWarnings/plugin.js index 7450040541..bc301f01af 100644 --- a/src/plugins/experimentalWarnings/plugin.js +++ b/src/plugins/experimentalWarnings/plugin.js @@ -2,8 +2,6 @@ import globalize from 'globalize'; import * as userSettings from 'userSettings'; import appHost from 'apphost'; -/*eslint prefer-const: "error"*/ - // TODO: Replace with date-fns // https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php function getWeek(date) { From bc8303aabc2ff6cf6d58e4418bd3c941f54bfc4c Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Aug 2020 12:23:07 +0000 Subject: [PATCH 441/463] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 9989a4c47e..14fb04f16f 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -23,7 +23,7 @@ "AllowMediaConversionHelp": "Предоставить или запретить доступ к компоненте преобразования медиаданных.", "AllowOnTheFlySubtitleExtraction": "Разрешить динамическое извлечение субтитров", "AllowOnTheFlySubtitleExtractionHelp": "Встроенные субтитры могут быть извлечены из видео и доставлены клиентам в виде обычного текста, в целях предотвращения перекодировки видео. На некоторых системах это может занять продолжительное время и вызвать задержки воспроизведения видео в процессе извлечения. Отключите этот параметр, чтобы встроенные субтитры записывались при перекодировании видео, если они изначально не поддерживаются клиентским устройством.", - "AllowRemoteAccess": "Разрешить удалённый доступ к данному серверу Jellyfin Server.", + "AllowRemoteAccess": "Разрешить удалённый доступ к данному серверу.", "AllowRemoteAccessHelp": "Если флажок снят, то все удалённые подключения будут заблокированы.", "AllowedRemoteAddressesHelp": "Список разделённых запятыми IP-адресов или записей IP/netmask сетей, которым разрешено удалённое соединение. Если оставить это поле пустым, то будут разрешены все удаленные адреса.", "AlwaysPlaySubtitles": "Воспроизводить всегда", From e7a4cc28c7ff7c51c6cfaf41b71f67ce6e886430 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 16 Aug 2020 15:07:47 +0200 Subject: [PATCH 442/463] Remove chromecastHelper definition --- src/scripts/site.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/scripts/site.js b/src/scripts/site.js index 14f9851adc..3f97826743 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -655,7 +655,6 @@ function initClient() { pluginManager: componentsPath + '/pluginManager', packageManager: componentsPath + '/packageManager', screensaverManager: componentsPath + '/screensavermanager', - chromecastHelper: 'plugins/chromecastPlayer/chromecastHelpers', appRouter: 'components/appRouter' }; From db3773dbc37f79a0e20646d3643b792d150c0a67 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 16 Aug 2020 12:45:23 +0000 Subject: [PATCH 443/463] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index 14fb04f16f..a3aabd93c3 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -204,7 +204,7 @@ "EndsAtValue": "Конец в {0}", "Episodes": "Эпизоды", "ErrorAddingListingsToSchedulesDirect": "Произошла ошибка добавления списка сопоставления в учётную запись Schedules Direct. В Schedules Direct разрешено только ограниченное число таких списков на каждую учётную запись. Вам может понадобится войти на сайт Schedules Direct, и изъять иные перечни из своей учётной записи, прежде чем приступить.", - "ErrorAddingMediaPathToVirtualFolder": "Произошла ошибка при добавлении пути к медиаданным. Убедитесь, что путь является действительным, а процесс Jellyfin Server имеет доступ к этому расположению.", + "ErrorAddingMediaPathToVirtualFolder": "Произошла ошибка при добавлении пути к медиаданным. Убедитесь, что путь действителен и Jellyfin имеет доступ к этому расположению.", "ErrorAddingTunerDevice": "Произошла ошибка при добавлении тюнерного устройства. Убедитесь, что оно доступно и повторите попытку.", "ErrorAddingXmlTvFile": "Произошла ошибка при доступе к XMLTV-файлу. Убедитесь, что файл существует и повторите попытку.", "ErrorDeletingItem": "Произошла ошибка при удалении элемента с Jellyfin Server. Проверьте, что у Jellyfin Server имеется доступ на запись в медиапапку и повторите попытку.", @@ -1473,5 +1473,7 @@ "LabelUnstable": "Нестабильная", "LabelSubtitleVerticalPosition": "Вертикальная позиция:", "SubtitleVerticalPositionHelp": "Номер строки, где появляется текст. Положительные числа означают сверху вниз. Отрицательные числа означают снизу вверх.", - "Preview": "Предварительный просмотр" + "Preview": "Предварительный просмотр", + "MessageGetInstalledPluginsError": "Произошла ошибка при получении списка установленных плагинов.", + "MessagePluginInstallError": "Во время установки плагина произошла ошибка." } From 7756b3164b3808660341ab2021061381ddace931 Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 16 Aug 2020 15:46:29 +0200 Subject: [PATCH 444/463] Fix suggestions --- src/components/packageManager.js | 4 ++-- src/components/pluginManager.js | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/packageManager.js b/src/components/packageManager.js index c20f6c5d3e..2a15a14f34 100644 --- a/src/components/packageManager.js +++ b/src/components/packageManager.js @@ -73,11 +73,11 @@ import pluginManager from 'pluginManager'; } addPackage(pkg) { - this.packagesList = this.packagesList.filter((p) => { + this.#packagesList = this.#packagesList.filter((p) => { return p.name !== pkg.name; }); - this.packagesList.push(pkg); + this.#packagesList.push(pkg); } removeUrl(url) { diff --git a/src/components/pluginManager.js b/src/components/pluginManager.js index b662cca836..55a5c230ff 100644 --- a/src/components/pluginManager.js +++ b/src/components/pluginManager.js @@ -135,8 +135,6 @@ import globalize from 'globalize'; })[0]; } - console.dir(plugin); - var url = plugin.baseUrl + '/' + path; if (addCacheParam) { From ea41aeaa2bfff1de4dff23cb6104306a68a0ec0d Mon Sep 17 00:00:00 2001 From: Ian Walton Date: Sun, 16 Aug 2020 13:37:25 -0400 Subject: [PATCH 445/463] Fix syncplay menu. (Single line fix.) --- src/scripts/libraryMenu.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index d67250d5cb..700fb52ad9 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -8,7 +8,7 @@ import appRouter from 'appRouter'; import appHost from 'apphost'; import playbackManager from 'playbackManager'; import syncPlayManager from 'syncPlayManager'; -import { show as showGroupSelectionMenu } from 'groupSelectionMenu'; +import * as groupSelectionMenu from 'groupSelectionMenu'; import browser from 'browser'; import globalize from 'globalize'; import imageHelper from 'scripts/imagehelper'; @@ -208,7 +208,7 @@ import 'flexStyles'; function onSyncButtonClicked() { const btn = this; - showGroupSelectionMenu(btn); + groupSelectionMenu.show(btn); } function onSyncPlayEnabled(event, enabled) { From bc6a1d5734c3b5a688d12d20387b1670c71814cd Mon Sep 17 00:00:00 2001 From: MrTimscampi Date: Sun, 16 Aug 2020 21:14:18 +0200 Subject: [PATCH 446/463] Fix linting issue --- src/components/appRouter.js | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/src/components/appRouter.js b/src/components/appRouter.js index 9734925657..28826c55cc 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -692,18 +692,12 @@ class AppRouter { return 'dashboard.html'; } -<<<<<<< HEAD - function show(path, options) { - if (path.indexOf('/') !== 0 && path.indexOf('://') === -1) { - path = '/' + path; -======= if (item === 'recordedtv') { return 'livetv.html?tab=3&serverId=' + options.serverId; } if (item === 'nextup') { return 'list.html?type=nextup&serverId=' + options.serverId; ->>>>>>> upstream/master } if (item === 'list') { @@ -851,31 +845,4 @@ class AppRouter { } } -<<<<<<< HEAD - appRouter.addRoute = addRoute; - appRouter.param = param; - appRouter.back = back; - appRouter.show = show; - appRouter.start = start; - appRouter.baseUrl = baseUrl; - appRouter.canGoBack = canGoBack; - appRouter.current = current; - appRouter.beginConnectionWizard = beginConnectionWizard; - appRouter.invokeShortcut = invokeShortcut; - appRouter.showItem = showItem; - appRouter.setTransparency = setTransparency; - appRouter.getRoutes = getRoutes; - appRouter.pushState = pushState; - appRouter.enableNativeHistory = enableNativeHistory; - appRouter.handleAnchorClick = page.clickHandler; - appRouter.TransparencyLevel = { - None: 0, - Backdrop: 1, - Full: 2 - }; - - return appRouter; -}); -======= export default new AppRouter(); ->>>>>>> upstream/master From 92531427df800276b473442793c94294f6ca4d90 Mon Sep 17 00:00:00 2001 From: Professor Vogelbloem Date: Sun, 16 Aug 2020 21:01:29 +0000 Subject: [PATCH 447/463] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 8d5e5c78a4..81a74fcb2c 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -22,7 +22,7 @@ "AllowMediaConversionHelp": "Toegang verlenen of weigeren tot de mediaconversie functie.", "AllowOnTheFlySubtitleExtraction": "Directe ondertitel extractie toestaan", "AllowOnTheFlySubtitleExtractionHelp": "Ingebakken ondertitels kunnen uit de video's gehaald worden en als tekst bezorgd worden aan de clients om transcodering te helpen voorkomen. Op sommige systemen kan dit een lange tijd duren en dit er voor zorgen dat het afspelen van video stopt tijdens de extractie. Schakel dit uit om ingebakken ondertiteling in de video te laten branden met transcodering als deze niet standaard ondersteund worden door het afspeelapparaat.", - "AllowRemoteAccess": "Externe verbindingen met deze Jellyfin Server toestaan.", + "AllowRemoteAccess": "Externe verbindingen met deze server toestaan.", "AllowRemoteAccessHelp": "Indien niet aangevinkt worden alle externe verbindingen geblokkeerd.", "AllowedRemoteAddressesHelp": "Komma-gescheiden lijst van IP-adressen of IP/netmask adressen voor netwerken die op afstand verbinding mogen maken. Indien blanco, worden alle externe adressen toegestaan.", "AlwaysPlaySubtitles": "Altijd afspelen", @@ -189,10 +189,10 @@ "EndsAtValue": "Eindigt om {0}", "Episodes": "Afleveringen", "ErrorAddingListingsToSchedulesDirect": "Er ging iets mis bij het toevoegen van de lineup aan uw Schedules Direct account. Schedules Direct staat maar een beperkt aantal lineups per account toe. Het kan nodig zijn dat u zich aan moet melden op de Schedules Direct website en andere lineups moet verwijderen voordat u verder kunt.", - "ErrorAddingMediaPathToVirtualFolder": "Er ging iets mis bij het toevoegen van het media pad. Controleer of het pad klopt en of het Jellyfin server process toegang heeft tot het pad.", + "ErrorAddingMediaPathToVirtualFolder": "Er ging iets mis bij het toevoegen van het media pad. Controleer of het pad klopt en of Jellyfin toegang heeft tot de locatie.", "ErrorAddingTunerDevice": "Er was een fout bij het toevoegen van de tuner. Controleer of deze toegankelijk is en probeer het opnieuw.", "ErrorAddingXmlTvFile": "Er is een fout opgetreden met de toegang tot XMLTV bestand. Zorg ervoor dat het bestand bestaat en probeer het opnieuw.", - "ErrorDeletingItem": "Er was een probleem bij het verwijderen van het item in Jellyfin Server. Controleer dat Jellyfin Server schrijfrechten op de map heeft en probeer het opnieuw.", + "ErrorDeletingItem": "Er was een probleem bij het verwijderen van het item in de server. Controleer of Jellyfin schrijfrechten op de map heeft en probeer het opnieuw.", "ErrorGettingTvLineups": "Er was een fout bij het downloaden van de TV lineup. Controleer of uw gegevens correct zijn en probeer het opnieuw.", "ErrorStartHourGreaterThanEnd": "Eind tijd moet na de start tijd liggen.", "ErrorPleaseSelectLineup": "Selecteer een lineup en probeer het opnieuw. Als er geen lineups beschibaar zijn, controleer dan of uw gebruikersnaam, wachtwoord en postcode correct zijn.", @@ -424,7 +424,7 @@ "Identify": "Identificeer", "Images": "Afbeeldingen", "ImportFavoriteChannelsHelp": "Alleen kanalen die als favoriet aangemerkt zijn op de tuner zullen geïmporteerd worden.", - "ImportMissingEpisodesHelp": "Indien ingeschakeld, wordt informatie over ontbrekende afleveringen in uw Jellyfin de database geïmporteerd en weergegeven in de seizoenen en series. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", + "ImportMissingEpisodesHelp": "Informatie over ontbrekende afleveringen zal in uw database worden geïmporteerd en weergegeven in seizoenen en series. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", "InstallingPackage": "Installeren van {0} (versie {1})", "Kids": "Kinderen", "Label3DFormat": "3D formaat:", @@ -454,7 +454,7 @@ "LabelAudioLanguagePreference": "Voorkeurs audiotaal:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Vernieuw metagegevens automatisch van het internet:", "LabelBindToLocalNetworkAddress": "Binden aan het lokale netwerk adres:", - "LabelBindToLocalNetworkAddressHelp": "Optioneel. Overrule het lokale IP-adres om aan de http-server te binden. Indien leeg gelaten, zal de server binden aan alle beschikbare adressen. Het veranderen van deze waarde vereist herstarten van Jellyfin Server.", + "LabelBindToLocalNetworkAddressHelp": "Overschrijf het lokale IP-adres voor de HTTP server. Indien leeg gelaten, zal de server binden aan alle beschikbare adressen. Het veranderen van deze waarde vereist een herstart.", "LabelBirthDate": "Geboortedatum:", "LabelBirthYear": "Geboorte jaar:", "LabelBlastMessageInterval": "Alive bericht interval", @@ -511,7 +511,7 @@ "LabelEnableBlastAliveMessages": "Alive berichten zenden", "LabelEnableBlastAliveMessagesHelp": "Zet dit aan als de server niet betrouwbaar door andere UPnP-apparaten op uw netwerk wordt gedetecteerd.", "LabelEnableDlnaClientDiscoveryInterval": "Interval voor het zoeken naar clients", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bepaalt de duur in seconden tussen SSDP zoekopdrachten uitgevoerd door Jellyfin.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bepaalt de duur in seconden tussen SSDP zoekopdrachten.", "LabelEnableDlnaDebugLogging": "DLNA foutopsporings logboek inschakelen", "LabelEnableDlnaDebugLoggingHelp": "Genereer grote logboekbestanden en is alleen bedoeld voor het troubleshooting doeleinden.", "LabelEnableDlnaPlayTo": "DLNA \"Play To\" inschakelen", @@ -625,7 +625,7 @@ "LabelNumberOfGuideDays": "Aantal dagen van de gids om te downloaden:", "LabelNumberOfGuideDaysHelp": "Het downloaden van meer dagen van de gids gegevens biedt de mogelijkheid verder vooruit te plannen en een beter overzicht geven, maar het zal ook langer duren om te downloaden. Auto kiest op basis van het aantal kanalen.", "LabelOptionalNetworkPath": "Gedeelde netwerkmap:", - "LabelOptionalNetworkPathHelp": "Als deze map wordt gedeeld op uw netwerk, kunnen middels het netwerkpad Jellyfin apps op andere apparaten rechtstreeks toegang tot mediabestanden krijgen. Bijvoorbeeld {0} or {1}.", + "LabelOptionalNetworkPathHelp": "Als deze map wordt gedeeld op uw netwerk, kunnen middels het netwerkpad clients op andere apparaten rechtstreeks toegang tot mediabestanden krijgen. Bijvoorbeeld {0} of {1}.", "LabelOriginalAspectRatio": "Originele aspect ratio:", "LabelOriginalTitle": "Orginele titel:", "LabelOverview": "Overzicht:", @@ -776,13 +776,13 @@ "MessageConfirmProfileDeletion": "Weet u zeker dat u dit profiel wilt verwijderen?", "MessageConfirmRecordingCancellation": "Opname annuleren?", "MessageConfirmRemoveMediaLocation": "Weet u zeker dat u deze locatie wilt verwijderen?", - "MessageConfirmRestart": "Weet u zeker dat u Jellyfin Server wilt herstarten?", - "MessageConfirmRevokeApiKey": "Weet u zeker dat u deze api sleutel in wilt trekken? De verbinding met Jellyfin Server zal direct verbroken worden.", + "MessageConfirmRestart": "Weet u zeker dat u Jellyfin wilt herstarten?", + "MessageConfirmRevokeApiKey": "Weet u zeker dat u deze API sleutel in wilt trekken? De verbinding van de applicatie met deze server zal plotseling verbroken worden.", "MessageConfirmShutdown": "Weet u zeker dat u de server wilt afsluiten?", "MessageContactAdminToResetPassword": "Neem contact op met de server beheerder om uw wachtwoord te resetten.", "MessageCreateAccountAt": "Maak een account bij {0}", "MessageDeleteTaskTrigger": "Weet u zeker dat u deze signaal taak wilt verwijderen?", - "MessageDirectoryPickerBSDInstruction": "Voor BSD kan het noodzakelijk zijn opslag op uw FreeNAS Jail te configureren voordat Jellyfin het kan benaderen.", + "MessageDirectoryPickerBSDInstruction": "Voor BSD moet u mogelijk de opslag in uw FreeNAS Jail configureren, zodat Jellyfin toegang heeft tot uw media.", "MessageDirectoryPickerLinuxInstruction": "Voor Linux op Arch Linux, CentOS, Debian, Fedora, openSUSE, of Ubuntu, moet u de service-gebruiker ten minste leestoegang tot uw opslaglocaties verlenen.", "MessageDownloadQueued": "Download in de wachtrij geplaatst.", "MessageEnablingOptionLongerScans": "Het inschakelen van deze optie kan leiden tot langere doorlooptijd van bibliotheek scans.", From cb45b4e8ad8ba0c172ac2b5e2e58ebfa8145a487 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Sun, 16 Aug 2020 17:35:22 +0000 Subject: [PATCH 448/463] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ru/ --- src/strings/ru.json | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/strings/ru.json b/src/strings/ru.json index a3aabd93c3..8982b7f187 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -126,7 +126,7 @@ "ColorTransfer": "Цветопередача", "CommunityRating": "Общественная оценка", "Composer": "Композитор", - "ConfigureDateAdded": "Как конфигурировать дату добавления определяется в Панели Jellyfin Server в параметрах Медиатеки", + "ConfigureDateAdded": "Как конфигурировать дату добавления определяется в Панели в параметрах Медиатеки", "ConfirmDeleteImage": "Удалить изображение?", "ConfirmDeleteItem": "При удалении данного элемента, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?", "ConfirmDeleteItems": "При удалении данных элементов, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?", @@ -207,7 +207,7 @@ "ErrorAddingMediaPathToVirtualFolder": "Произошла ошибка при добавлении пути к медиаданным. Убедитесь, что путь действителен и Jellyfin имеет доступ к этому расположению.", "ErrorAddingTunerDevice": "Произошла ошибка при добавлении тюнерного устройства. Убедитесь, что оно доступно и повторите попытку.", "ErrorAddingXmlTvFile": "Произошла ошибка при доступе к XMLTV-файлу. Убедитесь, что файл существует и повторите попытку.", - "ErrorDeletingItem": "Произошла ошибка при удалении элемента с Jellyfin Server. Проверьте, что у Jellyfin Server имеется доступ на запись в медиапапку и повторите попытку.", + "ErrorDeletingItem": "Произошла ошибка при удалении элемента с сервера. Проверьте, что у Jellyfinr имеется доступ на запись в медиапапку и повторите попытку.", "ErrorGettingTvLineups": "Произошла ошибка при загрузке списков сопоставления. Убедитесь, что ваши данные правильны и повторите попытку.", "ErrorStartHourGreaterThanEnd": "Конечное время должно быть позже, чем начальное время.", "ErrorPleaseSelectLineup": "Выделите список сопоставления и повторите попытку. Если списков сопоставления не имеется, то проверьте, что ваше имя пользователя, пароль и почтовый код являются верными.", @@ -480,12 +480,12 @@ "LabelAppName": "Название приложения", "LabelAppNameExample": "Пример: Sickbeard, Sonarr", "LabelArtists": "Исполнители:", - "LabelArtistsHelp": "Для разделения исполнителей используйте точку с запятой ;", + "LabelArtistsHelp": "Для разделения исполнителей используйте ; (точку с запятой).", "LabelAudio": "Аудио", "LabelAudioLanguagePreference": "Выбор языка аудио:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Автоматически обновлять метаданные из Интернета:", "LabelBindToLocalNetworkAddress": "Привязка к адресу в локальной сети:", - "LabelBindToLocalNetworkAddressHelp": "Переопределяется локальный IP-адрес для HTTP-сервера. Если поле пусто, то привязка сервера будет ко всем доступным адресам. При изменении данного значения потребуется перезапуск Jellyfin Server.", + "LabelBindToLocalNetworkAddressHelp": "Переопределяется локальный IP-адрес для HTTP-сервера. Если поле пусто, то привязка сервера будет ко всем доступным адресам. При изменении данного значения потребуется перезапуск.", "LabelBirthDate": "Дата рождения:", "LabelBirthYear": "Год рождения:", "LabelBlastMessageInterval": "Интервал сообщений проверки активности", @@ -544,7 +544,7 @@ "LabelEnableBlastAliveMessages": "Бомбардировать сообщениями проверки активности", "LabelEnableBlastAliveMessagesHelp": "Включите, если сервер надёжно не обнаруживается иными UPnP устройствами в своей сети.", "LabelEnableDlnaClientDiscoveryInterval": "Интервал обнаружения клиентов", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Определяется длительность в секундах между SSDP-запросами от Jellyfin.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Определяется длительность в секундах между SSDP-запросами.", "LabelEnableDlnaDebugLogging": "Включить журналирование отладки DLNA", "LabelEnableDlnaDebugLoggingHelp": "Создаются большие файлы Журнала, рекомендуется использовать только для поиска неполадок.", "LabelEnableDlnaPlayTo": "Включить DLNA-функцию Воспроизвести На", @@ -662,7 +662,7 @@ "LabelNumberOfGuideDays": "Число дней для загрузки данных телегида:", "LabelNumberOfGuideDaysHelp": "Больше дней загрузки данных телегида обеспечивает возможность заблаговременно назначать расписание и просматривать больше перечней, однако это займёт больше времени для загрузки. При значении «Авто» выбор определяется числом каналов.", "LabelOptionalNetworkPath": "Общедоступная сетевая папка:", - "LabelOptionalNetworkPathHelp": "Если данная папка является общей в сети, указание пути к сетевой папке может позволить Jellyfin-приложениям на других устройствах иметь прямой доступ к медиафайлам. Например, {0} или {1}.", + "LabelOptionalNetworkPathHelp": "Если данная папка является общей в сети, указание пути к сетевой папке может позволить клиентам на других устройствах иметь прямой доступ к медиафайлам. Например, {0} или {1}.", "LabelOriginalAspectRatio": "Исходное соотношение сторон:", "LabelOriginalTitle": "Оригинальное название:", "LabelOverview": "Обзор:", @@ -840,13 +840,13 @@ "MessageConfirmProfileDeletion": "Вы действительно хотите удалить данный профиль?", "MessageConfirmRecordingCancellation": "Отменить запись?", "MessageConfirmRemoveMediaLocation": "Вы действительно хотите изъять это расположение?", - "MessageConfirmRestart": "Вы действительно хотите перезапустить Jellyfin Server?", - "MessageConfirmRevokeApiKey": "Вы действительно хотите отозвать данный API-ключ? Подключение приложения к Jellyfin Server будет резко прекращено.", + "MessageConfirmRestart": "Вы действительно хотите перезапустить Jellyfin?", + "MessageConfirmRevokeApiKey": "Вы действительно хотите отозвать данный API-ключ? Подключение приложения к этому серверу будет резко прекращено.", "MessageConfirmShutdown": "Вы действительно хотите завершить работу сервера?", "MessageContactAdminToResetPassword": "Обратитесь к своему системному администратору, чтобы сбросить ваш пароль.", "MessageCreateAccountAt": "Создайте учётную запись на {0}", "MessageDeleteTaskTrigger": "Вы действительно хотите удалить данный триггер задачи?", - "MessageDirectoryPickerBSDInstruction": "Касаемо BSD, возможно, потребуется конфигурировать хранилище в вашем FreeNAS Jail для того, чтобы разрешить Jellyfin получить к нему доступ.", + "MessageDirectoryPickerBSDInstruction": "Касаемо BSD, возможно, потребуется конфигурировать хранилище в вашем FreeNAS Jail, чтобы Jellyfin мог получить доступ к медиаданным.", "MessageDirectoryPickerLinuxInstruction": "Для Linux на Arch Linux, CentOS, Debian, Fedora, openSUSE или Ubuntu, вы должны предоставить пользователю службы, по крайней мере, доступ для чтения к расположениям хранилища.", "MessageDownloadQueued": "Загрузка в очереди.", "MessageEnablingOptionLongerScans": "Включение этой опции может привести к значительному увеличению времени сканирования медиатеки.", @@ -868,7 +868,7 @@ "MessagePleaseEnsureInternetMetadata": "Убедитесь, что включена загрузка метаданных из Интернета.", "MessagePleaseWait": "Подождите. Это может занять минуту.", "MessagePluginConfigurationRequiresLocalAccess": "Чтобы конфигурировать данный плагин войдите непосредственно в свой локальный сервер.", - "MessagePluginInstallDisclaimer": "Плагины, созданные членами сообщества Jellyfin являются отличным способом повышения эффективности Jellyfin с помощью дополнительных функций и компонентов. Перед установкой примите во внимание влияние, которое они могут оказать на Jellyfin Server, например, длительные сканирования медиатеки, дополнительную фоновую обработку и снижение системной стабильности.", + "MessagePluginInstallDisclaimer": "Плагины, созданные членами сообщества являются отличным способом повышения эффективности с помощью дополнительных функций и компонентов. Перед установкой примите во внимание влияние, которое они могут оказать на сервер, например, длительные сканирования медиатеки, дополнительную фоновую обработку и снижение системной стабильности.", "MessageReenableUser": "См. ниже для разблокировки", "MessageSettingsSaved": "Параметры сохранены.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Из вашей медиатеки будут изъяты следующие расположения медиаданных:", @@ -1032,7 +1032,7 @@ "OptionResumable": "Возможно возобновление", "OptionRuntime": "Длительность", "OptionSaveMetadataAsHidden": "Сохранять метаданные и изображения в виде скрытых файлов", - "OptionSaveMetadataAsHiddenHelp": "Это изменение будет применено к новым метаданным сохраняемым в будущем. Существующие файлы метаданных будут обновлены в следующий раз, когда они будут сохраняться на Jellyfin Server.", + "OptionSaveMetadataAsHiddenHelp": "Это изменение будет применено к новым метаданным сохраняемым в будущем. Существующие файлы метаданных будут обновлены в следующий раз, когда они будут сохраняться на сервере.", "OptionSpecialEpisode": "Спецэпизоды", "OptionSubstring": "Подстрока", "OptionTrackName": "Название трека", @@ -1072,9 +1072,9 @@ "PleaseAddAtLeastOneFolder": "Добавьте, по крайней мере, одну папку к данной медиатеке, нажав кнопку Добавить.", "PleaseConfirmPluginInstallation": "Нажмите кнопку ОК, чтобы подтвердить, что вы прочитали вышеизложенное и хотите приступить к установке плагина.", "PleaseEnterNameOrId": "Введите название или внешний ID.", - "PleaseRestartServerName": "Перезапустите Jellyfin Server - {0}.", + "PleaseRestartServerName": "Перезапустите Jellyfin на {0}.", "PleaseSelectTwoItems": "Выберите хотя бы два элемента.", - "MessagePluginInstalled": "Плагин установлен успешно. Чтобы изменения вступили в силу, будет необходимо перезапустить Jellyfin Server.", + "MessagePluginInstalled": "Плагин установлен успешно. Чтобы изменения вступили в силу, будет необходимо перезапустить сервер.", "PreferEmbeddedTitlesOverFileNames": "Предпочитать внедрённые названия, чем имена файлов", "PreferEmbeddedTitlesOverFileNamesHelp": "Этим определяется отображаемое название по умолчанию, когда нет метаданных с интернета или локальные метаданные недоступны.", "Premiere": "Премьера", @@ -1137,10 +1137,10 @@ "SeriesRecordingScheduled": "Запись сериала назначена.", "SeriesSettings": "Параметры сериала", "SeriesYearToPresent": "{0} - Н/В", - "ServerNameIsRestarting": "Jellyfin Server - {0} перезапускается.", - "ServerNameIsShuttingDown": "Jellyfin Server - {0} завершает работу.", - "ServerRestartNeededAfterPluginInstall": "После установки плагина будет необходимо перезапустить Jellyfin Server.", - "ServerUpdateNeeded": "Данный Jellyfin Server нуждается в обновлении. Чтобы загрузить свежую версию, посетите {0}", + "ServerNameIsRestarting": "Сервер перезапускается в {0}.", + "ServerNameIsShuttingDown": "Сервер завершает работу в {0}.", + "ServerRestartNeededAfterPluginInstall": "После установки плагина будет необходимо перезапустить Jellyfin.", + "ServerUpdateNeeded": "Данный сервер нуждается в обновлении. Чтобы загрузить свежую версию, посетите {0}", "Settings": "Параметры", "SettingsSaved": "Параметры сохранены.", "SettingsWarning": "Изменение данных значений может привести к нестабильности или сбоям возможности подключения. Если вы испытываете любые проблемы, мы рекомендуем изменить их обратно к стандартным.", @@ -1324,7 +1324,7 @@ "OptionPosterCard": "Постер-карта", "OptionThumb": "Эскиз", "OptionThumbCard": "Эскиз-карта", - "PasswordResetProviderHelp": "Выберите поставщика сброса пароля, который использовуется при запросе пользователем сброса пароля", + "PasswordResetProviderHelp": "Выберите поставщика сброса пароля, который использовуется при запросе пользователем сброса пароля.", "PlaybackData": "Данные воспроизведения", "SubtitleOffset": "Сдвиг субтитров", "TabNetworking": "Работа в сети", @@ -1391,7 +1391,7 @@ "AlbumArtist": "Исполнитель альбома", "Album": "Альбом", "LastSeen": "Последний раз был {0}", - "WriteAccessRequired": "Jellyfin Server требуются права на запись в эту папку. Обеспечьте доступ для записи и попробуйте снова.", + "WriteAccessRequired": "Jellyfin требуются права на запись в эту папку. Обеспечьте доступ для записи и попробуйте снова.", "PathNotFound": "Путь не может быть найден. Убедитесь, что путь правильный и попробуйте снова.", "PreferEmbeddedEpisodeInfosOverFileNames": "Предпочитать встроенную информацию эпизода вместо имён файлов", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Используется информация об эпизоде из встроенных метаданных, если они доступны.", @@ -1446,7 +1446,7 @@ "MessageSyncPlayErrorNoActivePlayer": "Активный проигрыватель не найден. SyncPlay был отключен.", "ShowMore": "Показать больше", "ShowLess": "Показать меньше", - "EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с размытым заполнением", + "EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с уникальным заполнением.", "EnableBlurHash": "Включить размытые заполнители для изображений", "ButtonSyncPlay": "SyncPlay", "ButtonCast": "Транслировать", From 39b55a4f8d160678efcf401ac69643d059c1c723 Mon Sep 17 00:00:00 2001 From: Konctantin Date: Sun, 16 Aug 2020 21:00:31 +0000 Subject: [PATCH 449/463] Translated using Weblate (Ukrainian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/uk/ --- src/strings/uk.json | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/strings/uk.json b/src/strings/uk.json index ff69296e07..764f520524 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -243,5 +243,41 @@ "Backdrop": "Фон", "AroundTime": "Приблизно", "AlwaysPlaySubtitlesHelp": "Субтитри, що відповідають мовним параметрам, завантажуватимуться незалежно від мови звуку.", - "AllowFfmpegThrottlingHelp": "Коли перекодування або перепакування досить далеко випереджає поточну позицію відтворення, процес призупиняється, щоб зекономити ресурси. Це найкорисніше при перегляді, коли рідко міняється позиція відтворення. Вимкніть це, якщо виникнуть проблеми з відтворенням." + "AllowFfmpegThrottlingHelp": "Коли перекодування або перепакування досить далеко випереджає поточну позицію відтворення, процес призупиняється, щоб зекономити ресурси. Це найкорисніше при перегляді, коли рідко міняється позиція відтворення. Вимкніть це, якщо виникнуть проблеми з відтворенням.", + "ExitFullscreen": "Вийти з повноекранного режиму", + "Episodes": "Серії", + "Episode": "Серія", + "Ended": "Закінчилось", + "EnableThemeVideos": "Тематичні відео", + "EnableThemeSongs": "Тематичні пісні", + "EnablePhotos": "Показувати фото", + "EnableHardwareEncoding": "Ввімкнути апаратне кодування", + "EnableExternalVideoPlayers": "Зовнішні відеоплеєри", + "EnableCinemaMode": "Режим кіно", + "EditSubtitles": "Редагувати субтитри", + "EditMetadata": "Редагувати метадані", + "EditImages": "Редагувати зображення", + "Edit": "Редагувати", + "DownloadsValue": "{0} завантажень", + "Download": "Завантажити", + "Down": "Вниз", + "DoNotRecord": "Не записувати", + "Depressed": "Подавлений", + "ErrorDefault": "Виникла помилка при обробці запиту. Будь-ласка повторіть пізніше.", + "DatePlayed": "Дата програвання", + "DateAdded": "Дата додана", + "Default": "За замовчуванням", + "Delete": "Видалити", + "DeleteImage": "Видалити зображення", + "DeleteMedia": "Видалити медіа", + "DeleteUser": "Видалити користувача", + "Desktop": "Робочий стіл", + "DetectingDevices": "Виявлення пристроїв", + "DirectStreaming": "Пряме мовлення", + "Director": "Режисер", + "Directors": "Режисери", + "Disabled": "Відключено", + "Disc": "Диск", + "Display": "Дисплей", + "Disconnect": "Відключити" } From c2f946d96e79539b343f46ed76566914759e1219 Mon Sep 17 00:00:00 2001 From: Professor Vogelbloem Date: Sun, 16 Aug 2020 21:50:14 +0000 Subject: [PATCH 450/463] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/nl/ --- src/strings/nl.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/nl.json b/src/strings/nl.json index 81a74fcb2c..963adee2c0 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -804,14 +804,14 @@ "MessagePleaseEnsureInternetMetadata": "Zorg ervoor dat het downloaden van internet-metadata is ingeschakeld.", "MessagePleaseWait": "Even geduld. Dit kan even duren.", "MessagePluginConfigurationRequiresLocalAccess": "Om deze plugin te configuren moet u zich aanmelden direct op de lokale server.", - "MessagePluginInstallDisclaimer": "Plugins ontwikkeld door leden van de Jellyfin gemeenschap zijn een geweldige manier om uw Jellyfin ervaring met extra functies en voordelen te verbeteren. Alvorens te installeren, dient u zich bewust te zijn van de gevolgen die zij kunnen hebben op uw Jellyfin Server, zoals langere bibliotheek scans, extra achtergrondinformatie verwerking, en een verminderde stabiliteit van het systeem.", + "MessagePluginInstallDisclaimer": "Plugins ontwikkeld door leden van de gemeenschap zijn een geweldige manier om uw ervaring met extra functies en voordelen te verbeteren. Wees voor het installeren bewust van de effecten die zij op uw server kunnen hebben, zoals langere bibliotheek scans, extra achtergrondinformatie verwerking, en een verminderde stabiliteit van het systeem.", "MessageReenableUser": "Zie hieronder hoe opnieuw in te schakelen", "MessageSettingsSaved": "Instellingen opgeslagen.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "De volgende media locaties worden verwijderd uit de bibliotheek:", "MessageUnableToConnectToServer": "Het is momenteel niet mogelijk met de geselecteerde server te verbinden. Controleer dat deze draait en probeer het opnieuw.", "MessageUnsetContentHelp": "Inhoud zal als gewone folders worden getoond. Gebruik voor het beste resultaat de Metadata Manager om de inhoud types voor subfolders in te stellen.", "MessageYouHaveVersionInstalled": "Op dit moment is versie {0} geïnstalleerd.", - "MetadataSettingChangeHelp": "Veranderen van metadata instellingen zal nieuwe content die wordt toegevoegd beïnvloeden. Om de bestaande inhoud te vernieuwen, opent u het detail scherm en klik op de knop Vernieuwen, of doe een bulk vernieuwing met behulp van de metadata manager.", + "MetadataSettingChangeHelp": "Het veranderen van metadata instellingen zal nieuwe toegevoegd content beïnvloeden. Om de bestaande content te vernieuwen, opent u het detail scherm en klik op de vernieuw knop, of voer een bulk vernieuwing uit met behulp van de metadata manager.", "MinutesAfter": "minuten na", "MinutesBefore": "minuten voor", "Mobile": "Mobiel", @@ -895,7 +895,7 @@ "OptionDownloadBackImage": "Terug", "OptionDownloadDiscImage": "Schijf", "OptionDownloadImagesInAdvance": "Download afbeeldingen van tevoren", - "OptionDownloadImagesInAdvanceHelp": "Standaard worden de meeste afbeeldingen gedownload wanneer ze opgevraagd worden door een Jellyfin app. Activeer deze optie om alle afbeeldingen op voorhand te downloaden bij het importeren van nieuwe media. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", + "OptionDownloadImagesInAdvanceHelp": "Standaard worden de meeste afbeeldingen alleen gedownload wanneer ze opgevraagd worden door een client. Activeer deze optie om alle afbeeldingen van tevoren te downloaden bij het importeren van nieuwe media. Dit kan aanzienlijk langere bibliotheekscans veroorzaken.", "OptionDownloadPrimaryImage": "Primair", "OptionDownloadThumbImage": "Miniatuur", "OptionEmbedSubtitles": "Insluiten in container", From 4f87f6807b6e55f662f1a07fb75ccf370d5341e9 Mon Sep 17 00:00:00 2001 From: Franco Castillo Date: Mon, 17 Aug 2020 00:56:49 +0000 Subject: [PATCH 451/463] 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 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 3ff15ab72b..74eb87e842 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -1467,5 +1467,13 @@ "Writers": "Escritores", "ClearQueue": "Eliminar cola", "StopPlayback": "Detener reproducción", - "ViewAlbumArtist": "Ver artista del álbum" + "ViewAlbumArtist": "Ver artista del álbum", + "Preview": "Avance", + "SubtitleVerticalPositionHelp": "Número de línea donde aparece el texto. Los números positivos indican de arriba hacia abajo. Los números negativos indican de abajo hacia arriba.", + "LabelSubtitleVerticalPosition": "Posición vertical:", + "PreviousTrack": "Pasar al anterior", + "MessageGetInstalledPluginsError": "Se produjo un error al obtener la lista de complementos instalados actualmente.", + "MessagePluginInstallError": "Ocurrió un error al instalar el complemento.", + "NextTrack": "Pasar al siguiente", + "LabelUnstable": "Inestable" } From 15010b142611aa05e3fe849873c809e1e8907ccd Mon Sep 17 00:00:00 2001 From: Julien Machiels Date: Mon, 17 Aug 2020 04:26:38 +0200 Subject: [PATCH 452/463] Update src/scripts/clientUtils.js Co-authored-by: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/scripts/clientUtils.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/scripts/clientUtils.js b/src/scripts/clientUtils.js index bf61bb1dd3..564f5784b0 100644 --- a/src/scripts/clientUtils.js +++ b/src/scripts/clientUtils.js @@ -157,8 +157,7 @@ export function capabilities(appHost) { SupportsPersistentIdentifier: self.appMode === 'cordova' || self.appMode === 'android', SupportsMediaControl: true }; - appHost.getPushTokenInfo(); - return capabilities = Object.assign(capabilities, appHost.getPushTokenInfo()); + return Object.assign(capabilities, appHost.getPushTokenInfo()); } export function selectServer() { From 99686db96d65bd21285d8d5804a2a06e4fe9b2ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Mon, 17 Aug 2020 08:12:34 +0000 Subject: [PATCH 453/463] 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 d796f36a43..3156bf36bc 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1475,5 +1475,6 @@ "SubtitleVerticalPositionHelp": "Číslo řádku, na kterém se zobrazí text. Kladná čísla znamenají směr shora dolů. Záporná čísla zdola nahoru.", "LabelSubtitleVerticalPosition": "Svislé umístění:", "MessageGetInstalledPluginsError": "Při načítání seznamu nainstalovaných zásuvných modulů došlo k chybě.", - "MessagePluginInstallError": "Při instalaci zásuvného modulu došlo k chybě." + "MessagePluginInstallError": "Při instalaci zásuvného modulu došlo k chybě.", + "PlaybackRate": "Rychlost přehrávání" } From a43b49bc836e521b93f1c4fbb32f0a2e2eabeec6 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Mon, 17 Aug 2020 17:56:02 +0000 Subject: [PATCH 454/463] Translated using Weblate (Chinese (Simplified)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/zh_Hans/ --- src/strings/zh-cn.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index b14bec8277..8fe4e14565 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -1475,5 +1475,6 @@ "MessageGetInstalledPluginsError": "获取已安装插件列表时出现错误。", "MessagePluginInstallError": "安装插件时出现错误。", "NextTrack": "下一曲", - "LabelUnstable": "不稳定" + "LabelUnstable": "不稳定", + "PlaybackRate": "播放速率" } From 2584b140c9167c41f57783a842a6f747af311dc3 Mon Sep 17 00:00:00 2001 From: adrian gustavo martinez Date: Tue, 18 Aug 2020 03:59:00 +0000 Subject: [PATCH 455/463] Translated using Weblate (Spanish (Argentina)) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/es_AR/ --- src/strings/es-ar.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/strings/es-ar.json b/src/strings/es-ar.json index 74eb87e842..2883ac4445 100644 --- a/src/strings/es-ar.json +++ b/src/strings/es-ar.json @@ -61,7 +61,7 @@ "AllowMediaConversionHelp": "Permitir o denegar acceso a la opción de convertir medios.", "AllowOnTheFlySubtitleExtraction": "Permitir extracción de subtítulos al vuelo", "AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados se pueden extraer de los videos y entregar a los clientes en texto plano, para ayudar a evitar la transcodificación de videos. En algunos sistemas, esto puede llevar mucho tiempo y provocar que la reproducción de video se detenga durante el proceso de extracción. Deshabilite esto para que los subtítulos incrustados se graben con la transcodificación de video cuando el dispositivo cliente no los admite de forma nativa.", - "AllowRemoteAccess": "Permitir conexiones remotas a este servidor Jellyfin.", + "AllowRemoteAccess": "Permitir conexiones remotas a este servidor.", "AllowRemoteAccessHelp": "Si no está tildado, todas las conexiones remotas serán bloqueadas.", "AlwaysPlaySubtitles": "Reproducir siempre", "AnyLanguage": "Cualquier idioma", @@ -159,7 +159,7 @@ "ColorTransfer": "Transferencia de color", "CommunityRating": "Puntuación de la comunidad", "Composer": "Compositor", - "ConfigureDateAdded": "Configura cómo se va a determinar las fechas de adición en la pestaña Bibliotecas del panel del servidor Jellyfin", + "ConfigureDateAdded": "Configure cómo se determina la fecha agregada en el panel en la configuración de la biblioteca", "ConfirmDeleteImage": "¿Eliminar imagen?", "ConfirmDeleteItem": "Eliminar este elemento lo eliminará tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?", "ConfirmDeleteItems": "Eliminar estos elementos los eliminará tanto del sistema de archivos como de la biblioteca de medios. ¿Está seguro que desea continuar?", @@ -216,7 +216,7 @@ "EnableBackdropsHelp": "Muestra imágenes de fondo en el fondo de algunas páginas mientras se navega por la biblioteca.", "EnableCinemaMode": "Modo cine", "EnableColorCodedBackgrounds": "Habilitar colores en el fondo del código", - "AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.", + "AuthProviderHelp": "Seleccione un proveedor de autenticación para ser utilizado para autenticar la contraseña de este usuario.", "CriticRating": "Valoración crítica", "DefaultSubtitlesHelp": "Los subtítulos se cargan según los indicadores predeterminados y forzados en los metadatos incrustados. Las preferencias de idioma se consideran cuando hay varias opciones disponibles.", "Dislike": "No me gusta", From adbc5f3885e9d282cb29f2d93b53ed332202edc5 Mon Sep 17 00:00:00 2001 From: millallo Date: Tue, 18 Aug 2020 06:43:56 +0000 Subject: [PATCH 456/463] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index cb73ea2cdb..f84fa8e613 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -190,7 +190,7 @@ "ErrorAddingMediaPathToVirtualFolder": "C'è stato un errore durante l'aggiunta del percorso. Per favore controlla che il percorso sia valido, e che Jellyfin abbia l'accesso alla posizione indicata.", "ErrorAddingTunerDevice": "Si è verificato un errore durante l'aggiunta del sintonizzatore. Si prega di assicurarsi che sia accessibile e riprovare.", "ErrorAddingXmlTvFile": "Si è verificato un errore durante l'accesso al file XMLTV. Si prega di assicurarsi che il file esista e riprovare.", - "ErrorDeletingItem": "Si è verificato un errore durante l'eliminazione dell'elemento da Jellyfin Server. Verifica che Jellyfin Server abbia accesso in scrittura sulla cartella multimediale e riprova.", + "ErrorDeletingItem": "Si è verificato un errore durante l'eliminazione dell'elemento dal server. Verifica che Jellyfin abbia accesso in scrittura sulla cartella multimediale e riprova.", "ErrorGettingTvLineups": "Si è verificato un errore durante il download delle formazioni TV. Assicurarsi che le vostre informazioni siano corrette e riprovare.", "ErrorStartHourGreaterThanEnd": "Il tempo della fine deve essere maggiore del tempo di avvio.", "ErrorPleaseSelectLineup": "Si prega di selezionare una scaletta e riprovare. Se non ci sono formazioni disponibili, si prega allora di verificare che il vostro nome utente, password, e il codice postale siano corretti.", @@ -348,7 +348,7 @@ "HeaderPreferredMetadataLanguage": "Lingua Preferita per i Metadati", "HeaderProfile": "Profilo", "HeaderProfileInformation": "Informazioni sul profilo", - "HeaderProfileServerSettingsHelp": "Questi valori controllano come il Server Jellyfin si presenterà ad un dispositivo.", + "HeaderProfileServerSettingsHelp": "Questi valori controllano come il server si presenterà ai client.", "HeaderRecentlyPlayed": "Visti di recente", "HeaderRecordingOptions": "Opzioni di Registrazione", "HeaderRecordingPostProcessing": "Post-processing Registrazione", @@ -365,13 +365,13 @@ "HeaderSecondsValue": "{0} Secondi", "HeaderSelectCertificatePath": "Seleziona il percorso del Certificato", "HeaderSelectMetadataPath": "Selezionare Percorso Metadati", - "HeaderSelectMetadataPathHelp": "Sfoglia o inserire il percorso in cui vuoi archiviare i metadati. La cartella deve essere scrivibile.", + "HeaderSelectMetadataPathHelp": "Sfoglia o inserisci il percorso da usare per archiviare i metadati. La cartella deve essere scrivibile.", "HeaderSelectPath": "Seleziona Percorso", "HeaderSelectServer": "Scegli Server", "HeaderSelectServerCachePath": "Seleziona percorso Cache Server", "HeaderSelectServerCachePathHelp": "Sfoglia o immetti il percorso da utilizzare per i file di cache server. La cartella deve essere scrivibile.", "HeaderSelectTranscodingPath": "Selezionare Percorso Temporaneo Transcodifica", - "HeaderSelectTranscodingPathHelp": "Sfoglia o immettere il percorso da utilizzare per la transcodifica dei file temporanei. La cartella deve essere scrivibile.", + "HeaderSelectTranscodingPathHelp": "Sfoglia o inserisci il percorso da utilizzare per la transcodifica dei file. La cartella deve essere scrivibile.", "HeaderSendMessage": "Invia un messaggio", "HeaderSeriesOptions": "Impostazioni Serie TV", "HeaderSeriesStatus": "Stato Serie TV", @@ -418,8 +418,8 @@ "HttpsRequiresCert": "Per abilitare le connessioni sicure, dovrai fornire un certificato SSL affidabile, come Let's Encrypt. Per favore o fornisci un certificato, o disabilita le connessioni sicure.", "Identify": "Identifica", "Images": "Immagini", - "ImportFavoriteChannelsHelp": "Se abilitata, solo i canali che sono contrassegnati come preferiti sul dispositivo di sintonizzazione verranno importati.", - "ImportMissingEpisodesHelp": "Se abilitato, le informazioni relative agli episodi mancanti saranno importate nel database di Jellyfin e mostrate all'interno di Serie e Stagioni. Questo può causare scansioni della libreria più lente.", + "ImportFavoriteChannelsHelp": "Solo i canali che sono contrassegnati come preferiti sul dispositivo di sintonizzazione verranno importati.", + "ImportMissingEpisodesHelp": "Le informazioni relative agli episodi mancanti saranno importate nel database e mostrate all'interno di Serie e Stagioni. Questo può causare scansioni della libreria più lente.", "InstallingPackage": "Installazione di {0} (versione {1})", "InstantMix": "Mix istantaneo", "ItemCount": "{0} elementi", @@ -448,14 +448,14 @@ "LabelAppName": "Nome app", "LabelAppNameExample": "Esempio: Sickbeart, Sonarr", "LabelArtists": "Artisti:", - "LabelArtistsHelp": "Separa valori multipli usando ;", + "LabelArtistsHelp": "Separa più artisti usando il simbolo ;", "LabelAudioLanguagePreference": "Lingua audio preferita:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Aggiorna automaticamente i metadati da Internet:", "LabelBindToLocalNetworkAddress": "Assegna ad indirizzo di rete locale:", - "LabelBindToLocalNetworkAddressHelp": "Opzionale. Sovrascrivere l'indirizzo IP locale per associare il server http a. Se lasciato vuoto, il server verrà associato a tutti gli indirizzi disponibili. Modificare questo valore richiede di riavviare Jellyfin Server.", + "LabelBindToLocalNetworkAddressHelp": "Sovrascrive l'indirizzo IP locale del server HTTP. Se lasciato vuoto, il server verrà associato a tutti gli indirizzi disponibili. Modificare questo valore richiede il riavvio.", "LabelBirthDate": "Data di nascita:", "LabelBirthYear": "Anno di nascita:", - "LabelBlastMessageInterval": "Intervallo messaggi di presenza (secondi)", + "LabelBlastMessageInterval": "Intervallo messaggi di presenza", "LabelBlastMessageIntervalHelp": "Determina la durata in secondi fra i messaggi \"blast alive\".", "LabelBlockContentWithTags": "Blocco degli elementi con le etichette:", "LabelBurnSubtitles": "Applica sottotitoli:", @@ -474,13 +474,13 @@ "LabelCustomCertificatePath": "Percorso personalizzato certificato SSL:", "LabelCustomCertificatePathHelp": "Percorso del file PKCS #12 contenente il certificato e la chiave private per abilitare il supporto TLS in un dominio personalizzato.", "LabelCustomCss": "CSS Personalizzato:", - "LabelCustomCssHelp": "Applica il tuo stile personale all'interfaccia web.", + "LabelCustomCssHelp": "Applica il tuo stile personalizzato all'interfaccia web.", "LabelCustomDeviceDisplayName": "Nome da visualizzare:", "LabelCustomDeviceDisplayNameHelp": "Fornire un nome di visualizzazione personalizzato o lasciare vuoto per utilizzare il nome riportato dal dispositivo.", "LabelCustomRating": "Voto personalizzato:", "LabelDateAdded": "Aggiunto il:", "LabelDateAddedBehavior": "Data di comportamento per i nuovi contenuti:", - "LabelDateAddedBehaviorHelp": "Se un valore di metadati è presente sarà sempre utilizzato prima una di queste opzioni.", + "LabelDateAddedBehaviorHelp": "Se un valore di metadati è presente sarà sempre utilizzato prima di una di queste opzioni.", "LabelDateTimeLocale": "Data locale:", "LabelDay": "Giorno:", "LabelDeathDate": "Anno di morte:", @@ -509,8 +509,8 @@ "LabelEnableAutomaticPortMapHelp": "Automaticamente inoltra le porte pubbliche del router sul quelle locali del server tramite UPnP. Potrebbe non funzionare con alcuni modelli di router. I cambiamenti non saranno applicati fino ad il riavvio del server.", "LabelEnableBlastAliveMessages": "Invia segnale di presenza", "LabelEnableBlastAliveMessagesHelp": "Attivare questa opzione se il server non viene rilevato in modo affidabile da altri dispositivi UPnP in rete.", - "LabelEnableDlnaClientDiscoveryInterval": "Intervallo di ricerca dispositivi (secondi)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la durata in secondi tra le ricerche SSDP effettuate da Jellyfin.", + "LabelEnableDlnaClientDiscoveryInterval": "Intervallo di ricerca dei client", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la durata in secondi tra le ricerche SSDP.", "LabelEnableDlnaDebugLogging": "Abilita il debug del DLNA", "LabelEnableDlnaDebugLoggingHelp": "Crea file di grandi dimensioni e dovrà essere usato solo quando necessario per risolvere problemi.", "LabelEnableDlnaPlayTo": "Abilita DLNA su", @@ -519,7 +519,7 @@ "LabelEnableDlnaServerHelp": "Consente ai dispositivi UPnP nella tua rete di sfogliare i contenuti e riprodurli.", "LabelEnableHardwareDecodingFor": "Abilita la decodifica hardware per:", "LabelEnableRealtimeMonitor": "Abilita monitoraggio in tempo reale", - "LabelEnableRealtimeMonitorHelp": "Le modifiche saranno applicate immediatamente, sui file system supportati.", + "LabelEnableRealtimeMonitorHelp": "Le modifiche saranno applicate immediatamente sui file system supportati.", "LabelEnableSingleImageInDidlLimit": "Limitato a singola immagine incorporata", "LabelEnableSingleImageInDidlLimitHelp": "Alcuni dispositivi non renderanno correttamente se più immagini sono incorporati all'interno didl.", "LabelEndDate": "Data di fine:", @@ -1405,7 +1405,7 @@ "LabelChromecastVersion": "Versione Chromecast", "LabelRequireHttpsHelp": "Se selezionata, il server reindirizzerà tutte le richieste HTTP a HTTPS. Vale solo se il sever è configurato per l'ascolto in HTTPS.", "LabelRequireHttps": "Richiede HTTPS", - "LabelEnableHttpsHelp": "Abilita il server all'ascolto sulla porta HTTPS configurata. Il certificato deve essere configurato e valido per l'abilitazione.", + "LabelEnableHttpsHelp": "Ascolta sulla porta HTTPS configurata. Deve essere fornito un certificato valido per l'abilitazione.", "LabelEnableHttps": "Abilita HTTPS", "HeaderServerAddressSettings": "Configurazione Indirizzo Server", "HeaderRemoteAccessSettings": "Configurazione Access Remoto", From 89f07432ceee0ce74df4111dfdfc5185298fedb4 Mon Sep 17 00:00:00 2001 From: millallo Date: Tue, 18 Aug 2020 07:02:29 +0000 Subject: [PATCH 457/463] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index f84fa8e613..85dc28e5b3 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -534,7 +534,7 @@ "LabelForgotPasswordUsernameHelp": "Inserisci il tuo nome utente, se te lo ricordi.", "LabelFormat": "Formato:", "LabelFriendlyName": "Nome Condiviso:", - "LabelServerNameHelp": "Questo nome è usato per identificare il server e avrà come default il nome del pc.", + "LabelServerNameHelp": "Questo nome è usato per identificare il server e avrà come default l'hostname del server.", "LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collezioni", "LabelGroupMoviesIntoCollectionsHelp": "Quando si visualizzano le liste di film, quelli appartenenti ad una collezione saranno visualizzati come un elemento raggruppato.", "LabelH264Crf": "CRF di codifica H264:", @@ -544,7 +544,7 @@ "LabelHomeNetworkQuality": "Qualità della rete domestica:", "LabelHomeScreenSectionValue": "Pagina iniziale Sezione {0}:", "LabelHttpsPort": "Porta HTTPS locale:", - "LabelHttpsPortHelp": "Numero di porta TCP da associare al server HTTPS di Jellyfin.", + "LabelHttpsPortHelp": "Porta TCP da associare al server HTTPS.", "LabelIconMaxHeight": "Altezza icona massima:", "LabelIconMaxHeightHelp": "Risoluzione massima delle icone inviate tramite upnp:icon.", "LabelIconMaxWidth": "Larghezza massima icona:", @@ -572,7 +572,7 @@ "LabelLanguage": "Lingua:", "LabelLineup": "Allineare:", "LabelLocalHttpServerPortNumber": "Porta HTTP locale:", - "LabelLocalHttpServerPortNumberHelp": "Numero di porta TCP da associare al server HTTP di Jellyfin.", + "LabelLocalHttpServerPortNumberHelp": "Porta TCP da associare al server HTTP.", "LabelLockItemToPreventChanges": "Blocca questo elemento per impedire modifiche future", "LabelLoginDisclaimer": "Avviso Login:", "LabelLoginDisclaimerHelp": "Un messaggio che verrà visualizzato nella parte inferiore della pagina di accesso.", @@ -612,7 +612,7 @@ "LabelMovieCategories": "Categorie film:", "LabelMoviePrefix": "Prefisso film:", "LabelMoviePrefixHelp": "Se un prefisso viene applicato ai titoli di film, inseriscilo qui in modo che il server possa gestirlo correttamente.", - "LabelMovieRecordingPath": "Percorso di registrazione film (opzionale):", + "LabelMovieRecordingPath": "Percorso di registrazione film:", "LabelMusicStreamingTranscodingBitrate": "Musica trascodifica bitrate:", "LabelMusicStreamingTranscodingBitrateHelp": "Specifica il massimo bitrate per lo streaming musicale.", "LabelName": "Nome:", @@ -624,8 +624,8 @@ "LabelNumber": "Numero:", "LabelNumberOfGuideDays": "Numero di giorni per i quali scaricare i dati della guida:", "LabelNumberOfGuideDaysHelp": "Scaricando più giorni si avrà la possibilità di pianificare in anticipo più programmi e vedere più liste, ma il tempo di download si allungherà. 'Auto': MB sceglierà automaticamente in base al numero di canali.", - "LabelOptionalNetworkPath": "Cartella condivisa (Opzionale):", - "LabelOptionalNetworkPathHelp": "Se questa cartella è condivisa sulla rete, fornendo il percorso di condivisione di rete si può consentire alle applicazioni Jellyfin su altri dispositivi di accedere direttamente ai file multimediali. Ad esempio {0} oppure {1}.", + "LabelOptionalNetworkPath": "Cartella di rete condivisa:", + "LabelOptionalNetworkPathHelp": "Se questa cartella è condivisa sulla rete, fornendo il percorso di condivisione di rete si può consentire ai client su altri dispositivi di accedere direttamente ai file multimediali. Ad esempio {0} oppure {1}.", "LabelOriginalAspectRatio": "Aspetto originale:", "LabelOriginalTitle": "Titolo originale:", "LabelOverview": "Trama:", @@ -665,7 +665,7 @@ "LabelReleaseDate": "Data di uscita:", "LabelRemoteClientBitrateLimit": "Bitrate limite per lo streaming via internet (Mbps):", "LabelRemoteClientBitrateLimitHelp": "Un limite bitrate per-stream opzionale per tutti i dispositivi di rete. Ciò è utile per impedire ai dispositivi di richiedere un bitrate superiore a quello in grado di gestire la connessione a Internet. Questo può provocare un aumento del carico della CPU sul server per transcodificare i video in volo ad un bitrate inferiore.", - "LabelRuntimeMinutes": "Durata (minuti):", + "LabelRuntimeMinutes": "Durata:", "LabelSaveLocalMetadata": "Salva immagini nelle cartelle multimediali", "LabelSaveLocalMetadataHelp": "Il salvataggio di immagini direttamente nelle cartelle multimediali consentirà di tenerle in un posto dove possono essere facilmente modificati.", "LabelScheduledTaskLastRan": "Ultima esecuzione {0}, taking {1}.", @@ -677,7 +677,7 @@ "LabelSelectVersionToInstall": "Selezionare la versione da installare:", "LabelSendNotificationToUsers": "Invia notifiche a:", "LabelSerialNumber": "Numero di serie", - "LabelSeriesRecordingPath": "Percorso di registrazione serie TV (opzionale):", + "LabelSeriesRecordingPath": "Percorso di registrazione Serie TV:", "LabelSimultaneousConnectionLimit": "Limite stream simultanei:", "LabelSkipBackLength": "Durata salta indietro:", "LabelSkipForwardLength": "Durata salta avanti:", @@ -740,7 +740,7 @@ "LabelYoureDone": "Hai Finito!", "LabelZipCode": "Cap:", "LabelffmpegPath": "Percorso FFmpeg:", - "LabelffmpegPathHelp": "Il percorso all'applicazione ffmpeg, o alla cartella che la contiene.", + "LabelffmpegPathHelp": "Il percorso dell'applicazione ffmpeg o della cartella che la contiene.", "LanNetworksHelp": "Elenco separato da virgola di indirizzi IP o voci IP / maschera di rete per reti che saranno considerate sulla rete locale quando si applicano restrizioni di larghezza di banda. Se impostato, tutti gli altri indirizzi IP verranno considerati nella rete esterna e saranno soggetti alle limitazioni della larghezza di banda esterna. Se lasciato vuoto, solo la sottorete del server viene considerata nella rete locale.", "Large": "Grande", "LatestFromLibrary": "Ultimi {0}", @@ -786,13 +786,13 @@ "MessageConfirmProfileDeletion": "Sei sicuro di voler cancellare questo profilo?", "MessageConfirmRecordingCancellation": "Cancellare la registrazione?", "MessageConfirmRemoveMediaLocation": "Sei sicuro di voler rimuovere questa posizione?", - "MessageConfirmRestart": "Sei sicuro di voler riavviare il Server Jellyfin?", - "MessageConfirmRevokeApiKey": "Sei sicuro di voler revocare questa chiave api? La connessione dell'applicazione al Server Jellyfin terminerà immediatamente.", + "MessageConfirmRestart": "Sei sicuro di voler riavviare Jellyfin?", + "MessageConfirmRevokeApiKey": "Sei sicuro di voler revocare questa chiave API? La connessione dell'applicazione al Server terminerà immediatamente.", "MessageConfirmShutdown": "Sei sicuro di voler spegnere il server?", "MessageContactAdminToResetPassword": "Si prega di contattare l'amministratore di sistema per reimpostare la password.", "MessageCreateAccountAt": "Crea un account a {0}", "MessageDeleteTaskTrigger": "Sei sicuro di voler cancellare questo evento?", - "MessageDirectoryPickerBSDInstruction": "Per BSD, potrebbe essere necessario per configurare le unità all'interno della vostra prigione FreeNAS al fine di permettere ricamato accedervi.", + "MessageDirectoryPickerBSDInstruction": "Per BSD, potrebbe essere necessario configurare le unità all'interno della vostra FreeNAS Jail per permettere A Jellyfin di accedervi.", "MessageDirectoryPickerLinuxInstruction": "Per Linux su Arch Linux, CentOS, Debian, Fedora, openSUSE o Ubuntu, è necessario concedere all'utente del servizio almeno l'accesso alle posizioni di archiviazione.", "MessageDownloadQueued": "Scaricamento programmato.", "MessageEnablingOptionLongerScans": "L'abilitazione di questa opzione può rallentare significativamente le scansioni della libreria.", @@ -814,7 +814,7 @@ "MessagePleaseEnsureInternetMetadata": "Assicurarsi che il download dei metadati Internet sia abilitato.", "MessagePleaseWait": "Per favore attendi. La procedura potrebbe impiegare qualche minuto.", "MessagePluginConfigurationRequiresLocalAccess": "Per configurare questo plugin si prega di accedere al proprio server locale direttamente.", - "MessagePluginInstallDisclaimer": "I plugin creati dai membri della comunità Jellyfin sono un ottimo modo per migliorare l'esperienza di Jellyfin con funzionalità e vantaggi aggiuntivi. Prima di installare, si prega di notare gli effetti che possono avere sul tuo server Jellyfin, come le scansioni più lunghe della libreria, l'elaborazione di sfondo aggiuntiva e la stabilità del sistema diminuita.", + "MessagePluginInstallDisclaimer": "I plugin creati dai membri della comunità sono un ottimo modo per migliorare l'esperienza con funzionalità e vantaggi aggiuntivi. Prima di installarli, si prega di notare gli effetti che possono avere sul tuo Server, come le scansioni più lunghe della libreria, l'elaborazione di sfondo aggiuntiva e la stabilità del sistema diminuita.", "MessageReenableUser": "Guarda in basso per ri-abilitare", "MessageSettingsSaved": "Settaggi salvati.", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "I seguenti percorsi ai file multimediali saranno rimossi dalla tua libreria:", @@ -822,7 +822,7 @@ "MessageUnsetContentHelp": "Il contenuto verrà visualizzato come pianura cartelle. Per ottenere i migliori risultati utilizzare il gestore di metadati per impostare i tipi di contenuto di sottocartelle.", "MessageYouHaveVersionInstalled": "Attualmente hai la versione {0} installato.", "MetadataManager": "Gestisci Metadati", - "MetadataSettingChangeHelp": "Modificare le impostazioni dei metadati influenzerà il nuovo contenuto aggiunto in avanti. Per aggiornare i contenuti esistenti, aprire la schermata dei dettagli e fare click sul pulsante di aggiornamento oppure eseguire aggiornamenti di massa utilizzando il gestore di metadati.", + "MetadataSettingChangeHelp": "Modificare le impostazioni dei metadati influenzerà i futuri contenuti. Per aggiornare i contenuti esistenti, aprire la schermata dei dettagli e fare click sul pulsante di aggiornamento oppure eseguire aggiornamenti di massa utilizzando il gestore di metadati.", "MinutesAfter": "minuti dopo", "MinutesBefore": "minuti prima", "Monday": "Lunedì", @@ -866,7 +866,7 @@ "OptionAllowLinkSharingHelp": "Solo le pagine web contenente informazioni sui media sono condivise. I file media non vengono mai condivisi pubblicamente. Le condivisioni scadono dopo {0} giorni.", "OptionAllowManageLiveTv": "Consenti la gestione delle registrazioni TV", "OptionAllowMediaPlayback": "Consenti la riproduzione dei media", - "OptionAllowMediaPlaybackTranscodingHelp": "Limitare l'accesso alla transcodifica può causare errori di riproduzione nelle applicazioni Jellyfin a causa di formati multimediali non supportati.", + "OptionAllowMediaPlaybackTranscodingHelp": "Limitare l'accesso alla transcodifica può causare errori di riproduzione a causa di formati multimediali non supportati.", "OptionAllowRemoteControlOthers": "Consenti il controllo remoto di altri utenti", "OptionAllowRemoteSharedDevices": "Consenti il controllo remoto dei dispositivi condivisi", "OptionAllowRemoteSharedDevicesHelp": "I dispositivi DLNA sono considerati condivisi fino a quando un utente non inizia a controllarli.", @@ -878,7 +878,7 @@ "OptionAscending": "Crescente", "OptionAuto": "Automatico", "OptionAutomaticallyGroupSeries": "Fondi automaticamente le serie sparse su più cartelle", - "OptionAutomaticallyGroupSeriesHelp": "Se abilitato, le serie distribuite in più cartelle di questa libreria saranno automaticamente combinate in un'unica serie.", + "OptionAutomaticallyGroupSeriesHelp": "Le Serie TV distribuite su più cartelle di questa libreria saranno automaticamente combinate in un'unica Serie TV.", "OptionBlockBooks": "Libri", "OptionBlockChannelContent": "Contenuto di Canali Internet", "OptionBlockLiveTvChannels": "Canali TV in onda", @@ -897,7 +897,7 @@ "OptionDatePlayed": "Visto il", "OptionDescending": "Decrescente", "OptionDisableUser": "Disabilita questo utente", - "OptionDisableUserHelp": "Se disabilitato, il server non sarà disponibile per questo utente. Le connessioni esistenti verranno terminate.", + "OptionDisableUserHelp": "Il server non sarà disponibile per questo utente. Le connessioni esistenti verranno terminate.", "OptionDislikes": "Non mi piace", "OptionDisplayFolderView": "Visualizza cartelle come normali cartelle dei media", "OptionDisplayFolderViewHelp": "Visualizza le cartelle accanto alle librerie multimediali. Questo può essere utile se si desidera avere una vista di cartelle semplici.", @@ -1468,5 +1468,6 @@ "Writers": "Scrittori", "ClearQueue": "Svuota la coda", "StopPlayback": "Interrompi riproduzione", - "LabelUnstable": "Unstable" + "LabelUnstable": "Unstable", + "NextTrack": "Prossima traccia" } From 9bbf0500ee3dd75237a4cb1686395e7fe289d242 Mon Sep 17 00:00:00 2001 From: millallo Date: Tue, 18 Aug 2020 07:51:09 +0000 Subject: [PATCH 458/463] Translated using Weblate (Italian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/it/ --- src/strings/it.json | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/strings/it.json b/src/strings/it.json index 85dc28e5b3..9465c488cb 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -419,7 +419,7 @@ "Identify": "Identifica", "Images": "Immagini", "ImportFavoriteChannelsHelp": "Solo i canali che sono contrassegnati come preferiti sul dispositivo di sintonizzazione verranno importati.", - "ImportMissingEpisodesHelp": "Le informazioni relative agli episodi mancanti saranno importate nel database e mostrate all'interno di Serie e Stagioni. Questo può causare scansioni della libreria più lente.", + "ImportMissingEpisodesHelp": "Le informazioni relative agli episodi mancanti saranno importate nel database e mostrate all'interno di Serie e Stagioni. Questo può causare scansioni della libreria più lente.", "InstallingPackage": "Installazione di {0} (versione {1})", "InstantMix": "Mix istantaneo", "ItemCount": "{0} elementi", @@ -904,7 +904,7 @@ "OptionDownloadBackImage": "Indietro", "OptionDownloadDiscImage": "Disco", "OptionDownloadImagesInAdvance": "Scarica preventivamente le immagini", - "OptionDownloadImagesInAdvanceHelp": "Di default, la maggior parte delle immagini vengono scaricate solo quando richieste da un'applicazione Jellyfin. Abilita questa opzione per scaricare tutte le immagini in anticipo, quando nuovi file multimediali vengono importati. Ciò può causare scansioni delle librerie molto più lunghe.", + "OptionDownloadImagesInAdvanceHelp": "Di default, la maggior parte delle immagini vengono scaricate solo quando richieste dai client. Abilita questa opzione per scaricare tutte le immagini in anticipo, quando nuovi file multimediali vengono importati. Ciò può causare scansioni delle librerie molto più lunghe.", "OptionDownloadMenuImage": "Menù", "OptionDownloadPrimaryImage": "Locandina", "OptionDownloadThumbImage": "Foto", @@ -933,7 +933,7 @@ "OptionHlsSegmentedSubtitles": "HLS sottotitoli segmentati", "OptionHomeVideos": "Foto", "OptionIgnoreTranscodeByteRangeRequests": "Ignorare le richieste di intervallo di byte di trascodifica", - "OptionIgnoreTranscodeByteRangeRequestsHelp": "Se abilitata, queste richieste saranno onorate, ma ignorano l'intervallo di byte.", + "OptionIgnoreTranscodeByteRangeRequestsHelp": "Queste richieste saranno onorate, ma ignoreranno l'intervallo di byte.", "OptionImdbRating": "Voto IMDB", "OptionLikes": "Mi piace", "OptionMissingEpisode": "Episodi mancanti", @@ -943,9 +943,9 @@ "OptionOnInterval": "Su intervallo", "OptionParentalRating": "Classificazione per genitori", "OptionPlainStorageFolders": "Visualizzare tutte le cartelle come normali cartelle di archiviazione", - "OptionPlainStorageFoldersHelp": "Se abilitato, tutte le cartelle sono rappresentate in DIDL come \"object.container.storageFolder\" invece che di tipo più specifico, come \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Tutte le cartelle sono rappresentate in DIDL come \"object.container.storageFolder\" invece che di tipo più specifico, come \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Mostra tutti i video come normali file video", - "OptionPlainVideoItemsHelp": "Se attivato, tutti i video sono rappresentati in DIDL come \"object.item.videoItem\" invece che di tipo più specifico, come \"object.item.videoItem.movie\".", + "OptionPlainVideoItemsHelp": "Tutti i video sono rappresentati in DIDL come \"object.item.videoItem\" invece che di tipo più specifico, come \"object.item.videoItem.movie\".", "OptionPlayCount": "Riproduzioni", "OptionPlayed": "Visto", "OptionPremiereDate": "Data della prima", @@ -959,7 +959,7 @@ "OptionResumable": "Interrotto", "OptionRuntime": "Durata", "OptionSaveMetadataAsHidden": "Salvare i metadati e le immagini come file nascosti", - "OptionSaveMetadataAsHiddenHelp": "La modifica di questo si applicherà ai nuovi metadati che verranno salvati in avanti. I file di metadati esistenti verranno aggiornati la prossima volta che vengono salvati da Jellyfin Server.", + "OptionSaveMetadataAsHiddenHelp": "La modifica di questo si applicherà ai nuovi metadati che verranno salvati in avanti. I file di metadati esistenti verranno aggiornati la prossima volta che verranno salvati dal server.", "OptionSpecialEpisode": "Speciali", "OptionSubstring": "Sottostringa", "OptionTrackName": "Titolo Traccia", @@ -998,9 +998,9 @@ "PleaseAddAtLeastOneFolder": "Per favore aggiungi almeno una cartella alla raccolta cliccando sul pulsante Aggiungi.", "PleaseConfirmPluginInstallation": "Per favore premi OK per confermare che hai letto quanto precede e che vuoi procedere all'installazione del plug-in.", "PleaseEnterNameOrId": "Per favore inserisci un nome o un ID esterno.", - "PleaseRestartServerName": "Per favore riavvia Jellyfin Server - {0}.", + "PleaseRestartServerName": "Per favore riavvia Jellyfin su {0}.", "PleaseSelectTwoItems": "Seleziona almeno due elementi.", - "MessagePluginInstalled": "Il plugin è stato installato correttamente. Il server Jellyfin dovrà essere riavviato affinché le modifiche abbiano effetto.", + "MessagePluginInstalled": "Il plugin è stato installato correttamente. Il server dovrà essere riavviato affinché le modifiche abbiano effetto.", "PreferEmbeddedTitlesOverFileNames": "Preferisci titoli integrati ai nomi dei file", "PreferEmbeddedTitlesOverFileNamesHelp": "Determina il titolo predefinito usato quando non sono disponibili metadati locali o da Internet.", "Premiere": "Prima visione", @@ -1025,7 +1025,7 @@ "RecordingScheduled": "Registrazione pianificata.", "Recordings": "Registrazioni", "Refresh": "Aggiorna", - "RefreshDialogHelp": "I Metadati sono aggiornati in base alle impostazioni ed ai servizi Internet abilitati nel Pannello di Controllo del Server Jellyfin.", + "RefreshDialogHelp": "I Metadati sono aggiornati in base alle impostazioni ed ai servizi Internet abilitati nel Pannello di Controllo.", "RefreshMetadata": "Aggiorna metadati", "RefreshQueued": "Aggiornamento programmato.", "ReleaseDate": "Data di uscita", @@ -1063,10 +1063,10 @@ "SeriesRecordingScheduled": "Registrazione serie TV pianificata.", "SeriesSettings": "Impostazioni Serie TV", "SeriesYearToPresent": "{0} - Oggi", - "ServerNameIsRestarting": "Jellyfin Server - {0} si sta riavviando.", - "ServerNameIsShuttingDown": "Jellyfin Server - {0} si sta arrestando.", - "ServerRestartNeededAfterPluginInstall": "Il server Jellyfin dovrà essere riavviato dopo l'installazione di un plugin.", - "ServerUpdateNeeded": "Questo server Jellyfin deve essere aggiornato. Per scaricare l'ultima versione vai su {0}", + "ServerNameIsRestarting": "Il Server su {0} si sta riavviando.", + "ServerNameIsShuttingDown": "Il Server su {0} si sta arrestando.", + "ServerRestartNeededAfterPluginInstall": "Jellyfin dovrà essere riavviato dopo l'installazione di un plugin.", + "ServerUpdateNeeded": "Questo server deve essere aggiornato. Per scaricare l'ultima versione vai su {0}", "Settings": "Impostazioni", "SettingsSaved": "Settaggi salvati.", "SettingsWarning": "La modifica di questi valori può causare problemi di instabilità o di connettività. Se si verificano problemi, si consiglia di modificarli all'impostazione predefinita.", @@ -1262,7 +1262,7 @@ "OptionProtocolHls": "Streaming in Diretta HTTP", "OptionDownloadArtImage": "Art", "OptionMax": "Massimo", - "PasswordResetProviderHelp": "Scegli un Provider Reset Password da utilizzare quando questo utente ne richiede il reset", + "PasswordResetProviderHelp": "Scegli un provider di reset password da utilizzare quando questo utente ne richiederà il reset.", "PlaybackData": "Dati di Riproduzione", "TagsValue": "Tag: {0}", "Whitelist": "Lista bianca", @@ -1383,7 +1383,7 @@ "LastSeen": "Visto l'ultima volta {0}", "PersonRole": "nel ruolo di {0}", "ListPaging": "{0}-{1} di {2}", - "WriteAccessRequired": "Jellyfin Server richiede il permesso di scrittura su questa cartella. Verificare l'autorizzazione e riprovare.", + "WriteAccessRequired": "Jellyfin richiede il permesso di scrittura su questa cartella. Verificare l'autorizzazione e riprovare.", "PathNotFound": "Percorso non trovato. Assicurarsi che sia valido e riprovare.", "YadifBob": "YADIF Bob", "Yadif": "YADIF", @@ -1444,7 +1444,7 @@ "HeaderSyncPlaySelectGroup": "Unisciti a un gruppo", "EnableDetailsBannerHelp": "Mostra il banner nella parte superiore della pagina di dettaglio dell'elemento.", "EnableDetailsBanner": "Banner Dettagli", - "EnableBlurHashHelp": "Le immagini ancora da caricare saranno mostrate inizialmente sfocate", + "EnableBlurHashHelp": "Le immagini ancora da caricare saranno mostrate inizialmente sfocate.", "EnableBlurHash": "Abilita i segnaposto sfocati per le immagini", "ShowMore": "Mostra di più", "ShowLess": "Mostra meno", @@ -1469,5 +1469,10 @@ "ClearQueue": "Svuota la coda", "StopPlayback": "Interrompi riproduzione", "LabelUnstable": "Unstable", - "NextTrack": "Prossima traccia" + "NextTrack": "Prossima traccia", + "Preview": "Anteprima", + "LabelSubtitleVerticalPosition": "Posizione verticale:", + "PreviousTrack": "Traccia precedente", + "MessageGetInstalledPluginsError": "Errore durante la generazione della lista dei plugin installati.", + "MessagePluginInstallError": "Errore durante l'installazione del plugin." } From 5bf7fa6117bbbbc294f93399caf55c39600c113e Mon Sep 17 00:00:00 2001 From: welpher Date: Tue, 18 Aug 2020 18:06:40 +0800 Subject: [PATCH 459/463] Update zh-cn.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit collection prefer 集合 --- src/strings/zh-cn.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 8fe4e14565..5ea0a6a4b0 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -231,7 +231,7 @@ "HeaderActiveRecordings": "正在录制的节目", "HeaderActivity": "活动", "HeaderAddScheduledTaskTrigger": "添加触发", - "HeaderAddToCollection": "加入收藏", + "HeaderAddToCollection": "加入集合", "HeaderAddToPlaylist": "添加到播放列表", "HeaderAddUpdateImage": "添加/更新 图片", "HeaderAddUser": "添加用户", @@ -458,7 +458,7 @@ "LabelCertificatePassword": "证书密码:", "LabelCertificatePasswordHelp": "如果你的证书需要密码,请在此输入它。", "LabelChannels": "频道:", - "LabelCollection": "收藏:", + "LabelCollection": "集合:", "LabelCommunityRating": "公众评分:", "LabelContentType": "内容类型:", "LabelCorruptedFrames": "损坏的帧:", @@ -532,8 +532,8 @@ "LabelFormat": "格式:", "LabelFriendlyName": "好记的名称:", "LabelServerNameHelp": "此名称将用做服务器名,默认使用服务器的主机名。", - "LabelGroupMoviesIntoCollections": "批量添加电影到收藏", - "LabelGroupMoviesIntoCollectionsHelp": "显示电影列表时,同一收藏的电影将显示为一个分组。", + "LabelGroupMoviesIntoCollections": "批量添加电影到集合", + "LabelGroupMoviesIntoCollectionsHelp": "显示电影列表时,同一集合的电影将显示为一个分组。", "LabelH264Crf": "H264 CRF 编码质量等级:", "LabelEncoderPreset": "H264 和 H265 编码预设:", "LabelHardwareAccelerationType": "硬件加速:", @@ -846,7 +846,7 @@ "MySubtitles": "我的字幕", "Name": "名称", "Never": "从不", - "NewCollection": "新收藏", + "NewCollection": "新集合", "NewCollectionHelp": "“收藏”允许你为电影和其他媒体库内容创建个性化分组。", "NewCollectionNameExample": "例如:星球大战收藏", "NewEpisodes": "新剧集", @@ -1053,7 +1053,7 @@ "RefreshQueued": "列队已刷新。", "ReleaseDate": "发行日期", "RememberMe": "记住我", - "RemoveFromCollection": "从收藏中移除", + "RemoveFromCollection": "从集合中移除", "RemoveFromPlaylist": "从播放列表中移除", "Repeat": "重播", "RepeatAll": "全部循环", From ac9177bd9e3ec85a1e4faa7d515025e463795c92 Mon Sep 17 00:00:00 2001 From: Hilman Maulana Date: Tue, 18 Aug 2020 10:29:21 +0000 Subject: [PATCH 460/463] Translated using Weblate (Indonesian) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/id/ --- src/strings/id.json | 94 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 84 insertions(+), 10 deletions(-) diff --git a/src/strings/id.json b/src/strings/id.json index 8bf0d7eafd..006e0cd06e 100644 --- a/src/strings/id.json +++ b/src/strings/id.json @@ -39,7 +39,7 @@ "HeaderFavoriteEpisodes": "Episode Favorit", "HeaderFavoriteShows": "Tayangan Favorit", "HeaderAlbumArtists": "Album Artis", - "HeaderContinueWatching": "Masih Melihat", + "HeaderContinueWatching": "Lanjutkan Menonton", "Artists": "Artis", "AllowMediaConversion": "Izinkan konversi media", "AllEpisodes": "Semua episode", @@ -65,7 +65,7 @@ "ConfirmDeleteItems": "Penghapusan item-item ini akan menghapus baik pada sistem berkas maupun pustaka media Anda. Apakah Anda yakin untuk melanjutkan?", "ConfirmDeleteItem": "Penghapusan item ini akan menghapus baik pada sistem berkas maupun pustaka media Anda. Apakah Anda yakin untuk melanjutkan?", "ConfirmDeleteImage": "Hapus gambar?", - "ConfigureDateAdded": "Atur cara penentuan penambahan tanggal dalam dasbor Peladen Jellyfin lewat pengaturan Pustaka", + "ConfigureDateAdded": "Konfigurasikan bagaimana tanggal ditambahkan ditentukan di dasbor di bawah pengaturan pustaka", "Composer": "Komposer", "CommunityRating": "Peringkat komunitas", "ChannelNumber": "Nomor saluran", @@ -128,7 +128,7 @@ "Browse": "Jelajah", "BoxRear": "Kotak (belakang)", "Box": "Kotak", - "BookLibraryHelp": "Buku audio dan teks didukung. Perhatikan {0}panduan penamaan buku{1}.", + "BookLibraryHelp": "Audio dan buku teks didukung. Tinjau {0} panduan penamaan buku {1}.", "Blacklist": "Daftar hitam", "BirthPlaceValue": "Tempat lahir: {0}", "BirthLocation": "Tempat lahir", @@ -137,25 +137,25 @@ "Backdrops": "Latar belakang", "Backdrop": "Latar belakang", "Auto": "Auto", - "AuthProviderHelp": "Pilih Penyedia Autentikasi yang akan digunakan untuk mengautentikasi kata sandi pengguna ini.", + "AuthProviderHelp": "Pilih penyedia otentikasi yang akan digunakan untuk mengautentikasi kata sandi pengguna ini.", "Audio": "Audio", "AspectRatio": "Rasio perbandingan", "Ascending": "Urutan naik", "AsManyAsPossible": "Sebanyak mungkin", "Art": "Seni", - "AroundTime": "Sekitar {0}", + "AroundTime": "Sekitar", "Anytime": "Kapanpun", "AnyLanguage": "Bahasa apapun", "AlwaysPlaySubtitlesHelp": "Talop yang cocok dengan preferensi bahasa akan dimuat tanpa memperhatikan bahasa suaranya.", - "AlwaysPlaySubtitles": "Selalu putar talop", + "AlwaysPlaySubtitles": "Selalu Mainkan", "AllowedRemoteAddressesHelp": "Daftar yang dipisahkan dengan koma dari alamat IP atau catatan netmask untuk jaringan yang akan diperbolehkan untuk tersambuh dari jarak jauh. Jika dibiarkan kosong, seluruh alamat jarak jauh akan diperbolehkan.", "AllowRemoteAccessHelp": "Jika centang dihapus, semua koneksi jarak jauh akan diblokir.", - "AllowRemoteAccess": "Izinkan koneksi jarak jauh ke Peladen Jellyfin ini.", + "AllowRemoteAccess": "Izinkan koneksi jarak jauh ke server ini.", "AllowOnTheFlySubtitleExtraction": "Izinkan ekstraksi talop dengan cepat", "AllowMediaConversionHelp": "Izinkan atau tolak akses ke fitur konversi media.", "AllLibraries": "Semua pustaka", "AllLanguages": "Semua bahasa", - "AllComplexFormats": "Semua format kompleks (ASS, SSA, VOBSUB, PGS, SUB/IDK, dll.)", + "AllComplexFormats": "Semua Format Kompleks (ASS, SSA, VOBSUB, PGS, SUB, IDX,…)", "Channels": "Saluran", "Aired": "Disiarkan", "AirDate": "Tanggal siaran", @@ -175,6 +175,80 @@ "Alerts": "Peringatan", "AddedOnValue": "Ditambahkan {0}", "AllowFfmpegThrottling": "Transcode Tercekik", - "AllowOnTheFlySubtitleExtractionHelp": "Subtitle yang melekat di video dapat dikeluarkan dan dikirimkan kepada klien dalam bentuk text biasa dengan tujuan untuk menghalau terjadinya transcoding pada video. Pada beberapa system ini membutuhkan waktu yang lama dan dapat menyebabkan video playback menjadi terhenti dikarenakan proses ekstraksi. Non-aktifkan fitur ini untuk membiarkan subtitle langsung dilekatkan kepada video dengan cara transcoding ketika klien tidak mendukung fitur ini.", - "ButtonSyncPlay": "SyncPlay" + "AllowOnTheFlySubtitleExtractionHelp": "Subtitel yang disematkan dapat diekstrak dari video dan dikirim ke klien dalam teks biasa, untuk membantu mencegah transcoding video. Pada beberapa sistem, ini dapat memakan waktu lama dan menyebabkan pemutaran video terhenti selama proses ekstraksi. Nonaktifkan ini untuk menyematkan subtitle yang disematkan dengan transcoding video ketika mereka tidak didukung secara native oleh perangkat klien.", + "ButtonSyncPlay": "SyncPlay", + "EnablePhotosHelp": "Gambar akan terdeteksi dan ditampilkan bersama file media lainnya.", + "EnablePhotos": "Tampilkan foto", + "EnableNextVideoInfoOverlayHelp": "Di akhir video, tampilkan info tentang video berikutnya yang akan muncul di daftar putar saat ini.", + "EnableNextVideoInfoOverlay": "Tampilkan info video berikutnya selama pemutaran", + "EnableHardwareEncoding": "Aktifkan pengkodean perangkat keras", + "EnableExternalVideoPlayersHelp": "Menu pemutar eksternal akan ditampilkan saat memulai pemutaran video.", + "EnableExternalVideoPlayers": "Pemutar video eksternal", + "EnableDisplayMirroring": "Tampilan mirroring", + "EnableDecodingColorDepth10Vp9": "Aktifkan 10-Bit decoding hardware untuk VP9", + "EnableDecodingColorDepth10Hevc": "Aktifkan 10-Bit decoding hardware untuk HEVC", + "EnableColorCodedBackgrounds": "Latar belakang berkode warna", + "EnableCinemaMode": "Mode bioskop", + "EnableBackdropsHelp": "Menampilkan latar belakang di latar belakang beberapa halaman saat menjelajahi pustaka.", + "EditSubtitles": "Edit subtitle", + "EditMetadata": "Edit metadata", + "EditImages": "Edit Gambar", + "Edit": "Edit", + "EasyPasswordHelp": "Kode pin mudah Anda digunakan untuk akses offline di klien yang didukung dan juga dapat digunakan untuk masuk ke jaringan dengan mudah.", + "DropShadow": "Drop Shadow", + "DrmChannelsNotImported": "Saluran dengan DRM tidak akan diimpor.", + "DownloadsValue": "{0} unduhan", + "Download": "Unduh", + "Down": "Turun", + "DoNotRecord": "Jangan merekam", + "DisplayModeHelp": "Pilih gaya tata letak yang Anda inginkan untuk antarmuka.", + "DisplayMissingEpisodesWithinSeasonsHelp": "Ini juga harus diaktifkan untuk pustaka TV di konfigurasi server.", + "DisplayMissingEpisodesWithinSeasons": "Tampilkan episode yang hilang dalam season", + "DisplayInOtherHomeScreenSections": "Tayangkan di bagian layar beranda seperti media terbaru dan lanjutkan menonton", + "Display": "Tampilan", + "DisplayInMyMedia": "Tampilan di layar beranda", + "Dislike": "Benci", + "Disconnect": "Memutuskan", + "Disc": "CD", + "Disabled": "Matikan", + "DirectPlaying": "Bermain langsung", + "DirectStreaming": "Streaming langsung", + "DirectStreamHelp2": "Streaming langsung menggunakan daya pemrosesan yang sangat sedikit dengan penurunan kualitas video yang minimal.", + "DirectStreamHelp1": "Media kompatibel dengan perangkat terkait resolusi dan jenis media (H.264, AC3, dll), tetapi dalam wadah file yang tidak kompatibel (mkv, avi, wmv, dll). Video akan dikemas ulang dengan cepat sebelum dikirim ke perangkat.", + "DeviceAccessHelp": "Ini hanya berlaku untuk perangkat yang dapat diidentifikasi secara unik dan tidak akan mencegah akses browser. Memfilter akses perangkat pengguna akan mencegah mereka menggunakan perangkat baru hingga disetujui di sini.", + "DetectingDevices": "Mendeteksi perangkat", + "Desktop": "Desktop", + "Descending": "Menurun", + "DeleteUserConfirmation": "Apakah Anda yakin ingin menghapus pengguna ini?", + "DeleteUser": "Hapus pengguna", + "DeleteMedia": "Hapus media", + "DeleteImageConfirmation": "Anda yakin ingin menghapus gambar ini?", + "DeleteImage": "Hapus Gambar", + "DeleteDeviceConfirmation": "Anda yakin ingin menghapus perangkat ini? Ini akan muncul kembali saat pengguna login lagi.", + "DeinterlaceMethodHelp": "Pilih metode deinterlacing yang akan digunakan saat melakukan transcoding konten interlace.", + "DefaultSubtitlesHelp": "Subtitel dimuat berdasarkan bendera default dan paksa dalam metadata yang disematkan. Preferensi bahasa dipertimbangkan ketika beberapa opsi tersedia.", + "CustomDlnaProfilesHelp": "Buat profil khusus untuk menargetkan perangkat baru atau mengganti profil sistem.", + "ColorTransfer": "Transfer warna", + "ColorSpace": "Ruang warna", + "ColorPrimaries": "Warna primer", + "ClientSettings": "Pengaturan Klien", + "CinemaModeConfigurationHelp": "Mode bioskop menghadirkan pengalaman teater langsung ke ruang tamu Anda dengan kemampuan untuk memutar trailer dan pengantar khusus sebelum fitur utama.", + "ChangingMetadataImageSettingsNewContent": "Perubahan pada metadata atau setelan pengunduhan karya seni hanya akan berlaku untuk konten baru yang ditambahkan ke perpustakaan Anda. Untuk menerapkan perubahan pada judul yang ada, Anda perlu menyegarkan metadatanya secara manual.", + "CancelSeries": "Batalkan serial", + "ButtonUninstall": "Copot pemasangan", + "ButtonTogglePlaylist": "Daftar Putar", + "ButtonSubtitles": "Subtitle", + "ButtonSplit": "Membagi", + "ButtonRestart": "Muat ulang", + "ButtonPreviousTrack": "Lagu sebelumnya", + "ButtonNextTrack": "Lagu berikutnya", + "ButtonManualLogin": "Login Manual", + "BurnSubtitlesHelp": "Menentukan apakah server harus membakar subtitle saat melakukan transcoding video. Menghindari ini akan sangat meningkatkan kinerja. Pilih Otomatis untuk membakar format berbasis gambar (VOBSUB, PGS, SUB, IDX,…) dan subtitle ASS atau SSA tertentu.", + "BoxSet": "Set Kotak", + "AskAdminToCreateLibrary": "Minta administrator untuk membuat pustaka.", + "Artist": "Artis", + "AllowFfmpegThrottlingHelp": "Saat transcode atau remux cukup jauh dari posisi pemutaran saat ini, jeda prosesnya sehingga akan mengkonsumsi lebih sedikit sumber daya. Ini paling berguna saat menonton tanpa sering mencari. Matikan ini jika Anda mengalami masalah pemutaran.", + "AllowHWTranscodingHelp": "Izinkan tuner untuk mentranskode aliran dengan cepat. Ini dapat membantu mengurangi transcoding yang dibutuhkan oleh server.", + "AlbumArtist": "Album Artis", + "Album": "Album" } From ffe71f31b7ec58bc1cd9c103ec3a0164179f7294 Mon Sep 17 00:00:00 2001 From: Oatavandi Date: Tue, 18 Aug 2020 12:12:26 +0000 Subject: [PATCH 461/463] Translated using Weblate (Tamil) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/ta/ --- src/strings/ta.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/ta.json b/src/strings/ta.json index d31fb8872e..faeccab647 100644 --- a/src/strings/ta.json +++ b/src/strings/ta.json @@ -1489,5 +1489,6 @@ "LastSeen": "கடைசியாக பார்த்தது {0}", "PersonRole": "{0} என", "ListPaging": "{0} - {2} இன் {1}", - "WriteAccessRequired": "ஜெல்லிஃபினுக்கு இந்த கோப்புறையில் எழுத அணுகல் தேவை. எழுதும் அணுகலை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்." + "WriteAccessRequired": "ஜெல்லிஃபினுக்கு இந்த கோப்புறையில் எழுத அணுகல் தேவை. எழுதும் அணுகலை உறுதிசெய்து மீண்டும் முயற்சிக்கவும்.", + "PlaybackRate": "பின்னணி வீதம்" } From e673a27d912860704f2f759bbcec36961bd6afd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Woli=C5=84ski?= Date: Tue, 18 Aug 2020 20:12:09 +0000 Subject: [PATCH 462/463] Translated using Weblate (Polish) Translation: Jellyfin/Jellyfin Web Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/pl/ --- src/strings/pl.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/strings/pl.json b/src/strings/pl.json index cb23cf40e6..3e896ce232 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -124,7 +124,7 @@ "ColorTransfer": "Transfer kolorów", "CommunityRating": "Ocena społeczności", "Composer": "Kompozytor", - "ConfigureDateAdded": "Skonfiguruj sposób określania dodanej daty na pulpicie nawigacyjnym w ustawieniach biblioteki.", + "ConfigureDateAdded": "Skonfiguruj sposób określania dodanej daty na pulpicie nawigacyjnym w ustawieniach biblioteki", "ConfirmDeleteImage": "Usunąć obraz?", "ConfirmDeleteItem": "Usunięcie tej pozycji usunie ją zarówno z systemu plików jak i z biblioteki mediów. Czy chcesz kontynuować?", "ConfirmDeleteItems": "Usunięcie tej pozycji usunie ją zarówno z systemu plików jak i z biblioteki mediów. Czy chcesz kontynuować?", @@ -477,7 +477,7 @@ "LabelAppName": "Nazwa Aplikacji", "LabelAppNameExample": "Przykład: Sickbeard, Sonarr", "LabelArtists": "Wykonawcy:", - "LabelArtistsHelp": "Oddziel wielu artystów średnikiem \";\"", + "LabelArtistsHelp": "Oddziel wielu artystów średnikiem \";\".", "LabelAudio": "Dźwięk", "LabelAudioLanguagePreference": "Preferowany język ścieżki dźwiękowej:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Odświeżaj automatycznie metadane z Internetu:", @@ -832,7 +832,7 @@ "MessageConfirmRecordingCancellation": "Anulować nagranie?", "MessageConfirmRemoveMediaLocation": "Czy na pewno chcesz usunąć tę lokalizację?", "MessageConfirmRestart": "Czy na pewno chcesz uruchomić Jellyfin ponownie?", - "MessageConfirmRevokeApiKey": "Czy na pewno chcesz unieważnić kluczAPI? Połączenia aplikacji z serwerem zostaną natychmiastowo zakończone.", + "MessageConfirmRevokeApiKey": "Czy na pewno chcesz unieważnić klucz API? Połączenia aplikacji z serwerem zostaną natychmiastowo zakończone.", "MessageConfirmShutdown": "Czy na pewno chcesz zamknąć serwer?", "MessageContactAdminToResetPassword": "W celu wyczyszczenia hasła. skontaktuj się z administratorem systemu.", "MessageCreateAccountAt": "Utwórz konto na {0}", @@ -1383,7 +1383,7 @@ "StopPlayback": "Zatrzymaj odtwarzanie", "ButtonPlayer": "Odtwarzacz", "ButtonCast": "Obsada", - "EnableBlurHashHelp": "Obrazy które wciąż się ładują zostaną zastąpione rozmazanym symbolem", + "EnableBlurHashHelp": "Obrazy które wciąż się ładują zostaną zastąpione rozmazanym symbolem.", "EnableBlurHash": "Włącz rozmazane zamienniki dla obrazów", "UnsupportedPlayback": "Jellyfin nie może odszyfrować zawartości zabezpieczonej przy pomocy DRM, ale spróbuje pomimo tego. Niektóre pliki mogą pojawiać się jako zupełnie czarne z powodu szyfrowania lub innych nie wspieranych funkcji jak np. interaktywne tytuły.", "OnApplicationStartup": "Przy starcie aplikacji", @@ -1475,5 +1475,6 @@ "SubtitleVerticalPositionHelp": "Numer wiersza, w którym pojawia się tekst. Liczby dodatnie wskazują z góry na dół. Liczby ujemne wskazują od dołu do góry.", "LabelSubtitleVerticalPosition": "Pozycja pionowa:", "MessageGetInstalledPluginsError": "Wystąpił błąd podczas pobierania listy aktualnie zainstalowanych wtyczek.", - "MessagePluginInstallError": "Wystąpił błąd podczas instalacji wtyczki." + "MessagePluginInstallError": "Wystąpił błąd podczas instalacji wtyczki.", + "PlaybackRate": "Szybkość odtwarzania" } From 468f8601b933705c6a19ae1d3ae567e0cc77d849 Mon Sep 17 00:00:00 2001 From: nextlooper42 Date: Tue, 18 Aug 2020 21:13:57 +0000 Subject: [PATCH 463/463] 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 7aef8eb515..4df5f1a07d 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1475,5 +1475,6 @@ "MessageGetInstalledPluginsError": "Pri načítaní zoznamu nainštalovaných zásuvných modulov došlo k chybe.", "MessagePluginInstallError": "Pri inštalácií zásuvného modulu došlo k chybe.", "NextTrack": "Ďalšia", - "LabelUnstable": "Nestabilný" + "LabelUnstable": "Nestabilný", + "PlaybackRate": "Rýchlosť prehrávania" }